<?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>234713</bug_id>
          
          <creation_ts>2021-12-27 18:48:36 -0800</creation_ts>
          <short_desc>Content Filtering should be using SharedBuffer instead of copying its data</short_desc>
          <delta_ts>2022-01-06 08:36:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>232424</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>menard</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>toyoshim</cc>
    
    <cc>vjaquez</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>1827010</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-27 18:48:36 -0800</bug_when>
    <thetext>ContentFilter and NetworkExtensionContentFilter takes a const uint8_t*/int and have to copy the content into a separate buffer.

They could instead take a SharedBuffer which would avoid the above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827011</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-27 18:49:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/86947433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827012</commentid>
    <comment_count>2</comment_count>
      <attachid>448019</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-27 18:54:59 -0800</bug_when>
    <thetext>Created attachment 448019
Patch For EWS (combined patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827013</commentid>
    <comment_count>3</comment_count>
      <attachid>448020</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-27 18:58:09 -0800</bug_when>
    <thetext>Created attachment 448020
Patch For Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827014</commentid>
    <comment_count>4</comment_count>
      <attachid>448021</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-27 19:05:53 -0800</bug_when>
    <thetext>Created attachment 448021
Patch For EWS (combined patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827017</commentid>
    <comment_count>5</comment_count>
      <attachid>448024</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-27 19:19:21 -0800</bug_when>
    <thetext>Created attachment 448024
Patch For Review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827018</commentid>
    <comment_count>6</comment_count>
      <attachid>448025</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-27 19:20:31 -0800</bug_when>
    <thetext>Created attachment 448025
Patch For EWS (combined patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827148</commentid>
    <comment_count>7</comment_count>
      <attachid>448062</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-28 19:07:59 -0800</bug_when>
    <thetext>Created attachment 448062
Patch for EWS testing (combined patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827149</commentid>
    <comment_count>8</comment_count>
      <attachid>448063</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-28 19:32:15 -0800</bug_when>
    <thetext>Created attachment 448063
Patch for EWS testing (combined patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828558</commentid>
    <comment_count>9</comment_count>
      <attachid>448024</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-01-06 04:09:00 -0800</bug_when>
    <thetext>Comment on attachment 448024
Patch For Review

LGTM once bots are happy
View in context: https://bugs.webkit.org/attachment.cgi?id=448024&amp;action=review

&gt; Source/WebCore/loader/ContentFilter.cpp:154
&gt; +        forEachContentFilterUntilBlocked([data = Ref { data }](PlatformContentFilter&amp; contentFilter) {

s/PlatformContentFilter/auto/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828579</commentid>
    <comment_count>10</comment_count>
      <attachid>448491</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-01-06 05:45:46 -0800</bug_when>
    <thetext>Created attachment 448491
Patch

Apply comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828625</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-06 08:36:24 -0800</bug_when>
    <thetext>Committed r287687 (245783@main): &lt;https://commits.webkit.org/245783@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448491.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448019</attachid>
            <date>2021-12-27 18:54:59 -0800</date>
            <delta_ts>2021-12-27 19:15:49 -0800</delta_ts>
            <desc>Patch For EWS (combined patch)</desc>
            <filename>bug-234713-20211228135453.patch</filename>
            <type>text/plain</type>
            <size>271205</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAxMzVkOTZlMzc3YmE4
NzE4NWM4MmQ0OWNkOTA0OWZmYTExMTA3Mi4uZjQ1NTk3M2M4ZjljYjZlMjUyZjE3ZjkyOWUxMzQ0
MDdkNjU4ZTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyOCBAQAorMjAyMS0xMi0yNyAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIENvbnRlbnQgRmlsdGVy
aW5nIHNob3VsZCBiZSB1c2luZyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBjb3B5aW5nIGl0cyBk
YXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3
MTMKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODY5NDc0MzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgY29uc3RydWN0IHRo
ZSBOU0RhdGEgdXNlZCBieSBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcgorICAgICAgICBh
bmQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZnJvbSB0aGUgU2hhcmVkQnVmZmVyLgor
CisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4KKworICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50
RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiB0
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
Lmg6CisKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtp
bmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbW9kaWZ5IGFs
bCBkaWRSZWNlaXZlRGF0YSBhbmQgcmVsYXRlZCBtZXRob2RzIHNvIHRoYXQgdGhleSBubyBsb25n
ZXIKKyAgICAgICAgdXNlIHVpbnQ4X3QqL2ludCBhbmQgaW5zdGVhZCB1c2UgU2hhcmVkQnVmZmVy
LgorICAgICAgICBXZSBkbyB0aGUgc2FtZSBmb3IgYW55IGludGVybWVkaWFyaWVzIHVzZWQgYnkg
dGhlIHZhcmlvdXMgZGlkUmVjZWl2ZURhdGEKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorICAg
ICAgICBUaGlzIHdpbGwgZmFjaWxpdGF0ZSBtb3ZpbmcgbmV0d29ya2luZyBvZmYgdGhlIG1haW4g
dGhyZWFkIGluIHRoZSBHUFUKKyAgICAgICAgcHJvY2VzcyBhbmQgYWxsb3dzIHRvIHJlbW92ZSBz
ZXZlcmFsIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgY29waWVzIGF0IHRoZQorICAgICAgICBwcm9j
ZXNzIGJvdW5kYXJpZXMuCisgICAgICAgIFdlIGNhbiBub3cgY29uc2lkZXIgdHJhbnNmZXIgdGhl
IHVuZGVybHlpbmcgU2hhcmVkTWVtb3J5IGNyZWF0ZWQgaW4KKyAgICAgICAgdGhlIG5ldHdvcmsg
cHJvY2VzcyBhbGwgdGhlIHdheSB0byB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgRmx5LWJ5
IGZpeDogY2hhbmdlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdHlwZSB0byBTaGFyZWRCdWZmZXIg
d2hlbiBhcHByb3ByaWF0ZS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhh
dmlvdXIuIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaExvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpC
b2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3Bv
bnNlOjpjb25zdW1lQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6CisgICAgICAgICogZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURh
dGFJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpm
aW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRp
bnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Ojpjb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb21taXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlw
YXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3Jp
dGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVs
ZW1lbnRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lv
bmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6Cisg
ICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjp1cGRhdGVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFk
ZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZU1lZGlhTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJv
bm91c0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNv
dXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToK
KyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
IGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpk
YXRhQ2hhbmdlZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCiAyMDIxLTEyLTIzICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgU2NhbGFibGVJbWFnZURlY29kZXIgc2hvdWxkIGJl
IHVzaW5nIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIERhdGFTZWdtZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNl
MjdlMTRjNjlmZDI0NGFlN2IyNDQ1ZTNlNDk4N2M2ZjcxYmIyODMuLmEwODNlOWI0OTk0NTIzNTIy
MGEwNmU4ODQyNTViYThjMDg4ZjVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBACisyMDIx
LTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2
ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1
c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJj
ZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNl
bmRCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNo
VGFzazo6bG9hZEJvZHlGcm9tUHJlbG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW46
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaDoKKyAg
ICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6CisgICAgICAg
ICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyk6CisgICAg
ICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFS
ZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNs
aWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVh
bURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJs
b2JDaHVuayk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KToKKwogMjAyMS0xMi0yNiAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBXZWJLaXQvQ29jb2FDb2xv
ci5oIHdpdGggV2ViQ29yZS9Db2xvckNvY29hLmgsIG5vdCBjb25mdXNpbmcgYXQgYWxsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvQ2hhbmdlTG9nCmluZGV4IDU3NjgxYjIxYTczNDM5ZTkwYmYyMWJhMjQ0OTU4MjU5N2UwMTk5
ODIuLmJiMWM1YjUzNmM0Zjk5MTVmYmFiZDlhYzMwMzdiYzQ0OGM3NzQ2YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJk
ICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAg
cmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIwMjEtMTItMTQgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgU2hhcmVk
QnVmZmVyIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZWY5NDlkZTYw
Njg5NmNhOTkzZWRmOGYzNGQ5YzFiMzBhNWI2NTRhYi4uZDU5NTdkZGIxZjRhZjg4YTRiNWZkNzEz
MGYxMDcxNDlhYjUwOWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3Jr
aW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
b21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2
aWV3TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAg
ICAoLVtXZWJGcmFtZSBfY29tbWl0RGF0YTpdKToKKwogMjAyMS0xMi0yMiAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggV2ViS2l0IEJ1aWxkIGlzc3Vl
cyB3aGVuIHVzaW5nIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggYzIzMWYyMDdkYTI1Y2Qy
YTE1ODYwZDI4ZGIzY2UxN2U4NTc1NzdkNS4uZTYxM2FhNTA5Zjc0YzBkZTBlNmQzODM1MThlNTI2
ZjczYWE1OGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKQEAgLTMyMCwxMyArMzIwLDEzIEBAIHZvaWQgRmV0Y2hCb2R5Q29u
c3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJp
bmcmIGNvCiAgICAgfQogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFw
cGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zb3VyY2UpIHsK
LSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBz
aXplKSk7CisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2J1ZmZlci5hcHBlbmQoZGF0
YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaApp
bmRleCA4NzFkMmMwODYzMzFhOTgyOTRhMTY2YTRiNDJlMzE4NGUwMzc3NzJiLi5kNDY1MWIyM2Rh
NzFjZjhmNGM4Yzk5NjcxZDIyN2ViNWFjOGQyYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1Ymxp
YzoKIAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUo
dHlwZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBib29sIGhh
c0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CiAgICAgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3Bw
CmluZGV4IGE2MzMxMDhiNTQ3NzgzOTNmYzU0NzUwMDMyYTlhMmU4NmFkZTdmY2MuLjUzNjY4MTU1
YmRlYmMxYWVmMzlmNGQ5OWZiOWRhZGMxZWJlZjdhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yOTgsMTEgKzI5OCwxMCBAQCB2
b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ0ZhaWxlZCgpCiAgICAgZmluaXNoQmxvYkxv
YWRpbmcoKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIEFTU0VSVChkYXRhKTsKICAgICBBU1NF
UlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7Ci0gICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291
cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpKQorICAgIGlm
ICghbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+ZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlC
dWZmZXIoKSkpCiAgICAgICAgIHN0b3AoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDVjYTdlMzk2YzQyMjcwMTkzNTZiMDgwNmU0
ZWVkYmU5NWU5MjhmNGIuLjgxZmQwNmVjZGQ2ZmMzOGM5ZTg1OTg3Y2ViZGZjMTZkZDg2ZjNjOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGZXRjaExvYWRlci5oIgogI2luY2x1ZGUgIkZldGNo
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMCw3ICsxMDEsNyBA
QCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgLy8gQmxvYiBsb2FkaW5nIHJvdXRpbmVzCi0g
ICAgdm9pZCBibG9iQ2h1bmsoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBibG9i
Q2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBibG9iTG9hZGluZ1N1Y2NlZWRl
ZCgpOwogICAgIHZvaWQgYmxvYkxvYWRpbmdGYWlsZWQoKTsKICAgICB2b2lkIGZpbmlzaEJsb2JM
b2FkaW5nKCk7CkBAIC0xMTMsNyArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBGZXRj
aExvYWRlckNsaWVudCBBUEkKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhk
YXRhLCBzaXplKTsgfQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhidWZmZXIpOyB9CiAgICAgICAg
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkU3VjY2VlZCgpIGZpbmFsIHsgb3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDAzZjg5
YjYxY2E1ZjdjNzE3NmI5ZDg4Y2QxMzY2MGU4NmI3YTI1NDguLjRiNDViZmQ4NzUwNDA2ZjZlN2Rh
NzE4Zjk5ODE2OTQ3MWE1ZTg0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hMb2FkZXIuY3BwCkBAIC0xNDgsMTMgKzE0OCwxMyBAQCB2b2lkIEZldGNoTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlcwogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZv
aWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIHZhbHVlLCBpbnQg
c2l6ZSkKK3ZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBib29sKQogewogICAgIGlmICghbV9jb25zdW1lcikgewotICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlRGF0YSh2YWx1ZSwgc2l6ZSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jb25zdW1l
ci0+YXBwZW5kKHZhbHVlLCBzaXplKTsKKyAgICBtX2NvbnN1bWVyLT5hcHBlbmQoYnVmZmVyKTsK
IH0KIAogdm9pZCBGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5k
ZXggNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZC4uNWVlYWVmODJkMWRm
M2VmY2VkMjE0MDAzZGY1MTg4ODcwMzZmOTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQgQVBJLgogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIHVz
ZVN0ckxlbikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ckNsaWVudC5oCmluZGV4IGZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODku
LjEwOWUwOGVjZjdhNDdlN2MwMzdlMzJkY2FhY2FiODZjODFjMThkM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN1
Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwCmluZGV4IDBlN2IwMDVlODlhM2QxNzQwYjFjZjlhZGZmOGI0ZjJmMmZjNDNjOTkuLmRjYTBl
MjM4MmUzMmZjMDM3Mjg4N2ZkNDg1MjE0YTE3MzAxYjFiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzYyLDEyICszNjIsMTIgQEAg
dm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxsYmFjayhtX3Jlc3Bv
bnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6
Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZSB8fCBtX2NvbnN1
bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFDYWxsYmFjaykgewotICAg
ICAgICBTcGFuIGNodW5rIHsgZGF0YSwgc2l6ZSB9OworICAgICAgICBTcGFuIGNodW5rIHsgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9OwogICAgICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJh
Y2soJmNodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM3NSw3ICszNzUsNyBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgIGF1dG8mIHNvdXJjZSA9ICptX3Jlc3BvbnNlLm1f
cmVhZGFibGVTdHJlYW1Tb3VyY2U7CiAKICAgICBpZiAoIXNvdXJjZS5pc1B1bGxpbmcoKSkgewot
ICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChkYXRhLCBzaXplKTsK
KyAgICAgICAgbV9yZXNwb25zZS5ib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoYnVmZmVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgRmV0Y2hSZXNw
b25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IHNpemUpCiAgICAgICAgIHN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBp
ZiAoIXNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpKSB7
CisgICAgaWYgKCFzb3VyY2UuZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSkp
IHsKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDY3LDcgKzQ2
Nyw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0
YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Y29u
c3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+JiYgY2h1bmspCiB7Ci0gICAgYm9keSgpLmNv
bnN1bWVyKCkuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkpOworICAg
IGJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaHVuay0+ZGF0
YSgpLCBjaHVuay0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Y29u
c3VtZUJvZHlBc1N0cmVhbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5oCmluZGV4IDZiMDUwNWQ4OGIxMzJlMjhjYjk1NGFiOWEwZTdlZmU4MTNmNzAyYWYu
LmY5OTI0OWMzOWY5ZDBiMmZjODdhMmY5YzQ2ZDc5MzkyODg4MTRiZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xNDMsNyArMTQzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAgICAgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKIAogICAgICAg
ICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFj
ayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMjdhNmQ3MDMzNGNh
MzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZC4uYTY0MWY4MTA3YjRmZDE3OTExZmRiOTJiYjMw
ZjQ1ZTJlODJiNTJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTc3LDEwICsxNzcsMTAgQEAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIAogLy8gTUFSSzogLSBDYWNoZWRSYXdSZXNvdXJjZUNs
aWVudAogCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBI
VE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggY2UwMDlkNGU1ZWRjMzA5NzQ1
ZTAyN2IwNjMyYmQxZTZlODU4MDNiZS4uMGQzYmRiNzQ5ZDdhMzM2OGIzY2E2OGMyMTczMTYwNTkx
NTQ5ZDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgLy8gQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQgb3ZlcnJpZGVzLgotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOwor
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgLy8gTW9kZWxQbGF5ZXJDbGllbnQg
b3ZlcnJpZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtU2luay5oCmluZGV4IGQ1MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVlYWM4ZmY4
MzhhMzkuLmZlZTk4ODQyMjFiYjQzZThjYzA2MmVhYmNkMGE5OWVjNTRjMDM0NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgK
QEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3Vy
Y2U7CiBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxl
U3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ckxvYWRlci5jcHAKaW5kZXggYjdmNzVlZGEzYjIzM2IxOWIyMGVkNzA0Mjg5NDliYjMzNTg5OGU4
MS4uNzM4NTJkNGMwYWYwMzg0NzVmMTViNjU0OWRjNjg5YmY4NTUxYjIwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKQEAg
LTE2MywxNiArMTY0LDE1IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyCiAgICAgICAgIG1fY2xp
ZW50LT5kaWRTdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRmls
ZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGJvb2wpCiB7Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChkYXRhTGVuZ3RoID4gMCk7
CisgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkpOwogCiAgICAgLy8gQmFpbCBvdXQgaWYgd2UgYWxy
ZWFkeSBlbmNvdW50ZXJlZCBhbiBlcnJvci4KICAgICBpZiAobV9lcnJvckNvZGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGludCBsZW5ndGggPSBkYXRhTGVuZ3RoOworICAgIGludCBsZW5ndGgg
PSBidWZmZXIuc2l6ZSgpOwogICAgIHVuc2lnbmVkIHJlbWFpbmluZ0J1ZmZlclNwYWNlID0gbV90
b3RhbEJ5dGVzIC0gbV9ieXRlc0xvYWRlZDsKICAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8
bG9uZyBsb25nPihyZW1haW5pbmdCdWZmZXJTcGFjZSkpIHsKICAgICAgICAgLy8gSWYgdGhlIGJ1
ZmZlciBoYXMgaGl0IG1heGltdW0gc2l6ZSwgaXQgY2FuJ3QgYmUgZ3Jvd24gYW55IG1vcmUuCkBA
IC0xODEsNyArMTgxLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCkgewotICAgICAgICAgICAg
dW5zaWduZWQgbmV3TGVuZ3RoID0gbV90b3RhbEJ5dGVzICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRhdGFMZW5ndGgpOworICAgICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90b3RhbEJ5
dGVzICsgYnVmZmVyLnNpemUoKTsKICAgICAgICAgICAgIGlmIChuZXdMZW5ndGggPCBtX3RvdGFs
Qnl0ZXMpIHsKICAgICAgICAgICAgICAgICBmYWlsZWQoTm90UmVhZGFibGVFcnJvcik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgRmlsZVJlYWRlckxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
CiAgICAgaWYgKGxlbmd0aCA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBtZW1jcHkoc3Rh
dGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQsIGRhdGEs
IGxlbmd0aCk7CisgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihtX3Jhd0RhdGEtPmRhdGEo
KSkgKyBtX2J5dGVzTG9hZGVkLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpOwogICAgIG1fYnl0ZXNM
b2FkZWQgKz0gbGVuZ3RoOwogCiAgICAgbV9pc1Jhd0RhdGFDb252ZXJ0ZWQgPSBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggNTM5YzIzMDRhODJl
NjNhYWRmZTJjNTY3Yzk4ZDBiOGM2ODdhOGU5Zi4uYjdlNWI0MDU3ZmIyMDZmZjMyMzE1NWNjMGYx
NTAyZmNhMjBkMjY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVh
ZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVy
LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNs
aWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4
IDVjNWJiMmFlYTgzOTkxOGIwNjk3NzU4ODFjZTNhMzY5YTQyOGU1YjkuLjc4MTc3NWE4NDE2NjI2
ZTgyOTBmZWFiODI0ZTdiMmFlZjVjYWIyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC02MTYsMTAgKzYxNiwx
MCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVM
b2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudAogICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJl
Y2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoaWRlbnRpZmllciwgZG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtB
Z2VudCgpKQotICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIs
IGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbmV0d29ya0Fn
ZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmdJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJl
c291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0NGFlZDE0
OTNiY2M2NTEuLjgyYWNjZWQyMGNmZDUxMzFiMjUwMmYwOTlhOWM0ZmEyZmRkNjE2ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKQEAgLTE5MywxMyArMTkzLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRMb2Fk
UmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSYsIERvY3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVz
b3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFt
ZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciYsIFJl
c291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEo
RnJhbWUqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVEYXRhKEZyYW1lKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBzdGF0aWMg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7
CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApA
QCAtNDE0LDcgKzQxNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRMb2Fk
ZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJj
ZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxv
YWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9u
c2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXImLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRh
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3Rh
dGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYpOwpAQCAtMTA4MiwxNyArMTA4MiwxNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoRG9j
dW1lbgogICAgICAgICBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbCgqYWdl
bnRzLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIsIGlkZW50aWZpZXIpOwogfQogICAgIAotaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSog
ZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQoraW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSogZnJhbWUs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgZGlk
UmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50aWZpZXIsIGJ1ZmZlciwgZW5jb2RlZERhdGFM
ZW5ndGgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikK
IHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBkaWRSZWNl
aXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyhnbG9iYWxTY29wZSksIGlkZW50aWZpZXIs
IGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRhSW1wbChp
bnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgYnVmZmVyLCBidWZm
ZXIuc2l6ZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApp
bmRleCAzOWIwMTFjZjA2ZjdmMzg1MzI0M2UwYTc2M2EzYjFkNDU0OTA0MTQ5Li4zMjhlYmU3ZTY0
MTE5NWU1YTQ2ODUwMjc1NTkxMGY3OGM0OGI1OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTkwLDEwICs5MCwxMCBAQCBz
aXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0aCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6YXBwZW5kRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJU
KCFoYXNDb250ZW50KCkpOwotICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0
aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhKTsKIH0KIAogdW5zaWduZWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCkBAIC0y
MjEsNyArMjIxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRhKGNvbnN0
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEmIHIKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCitOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVB
ZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0
YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpAQCAtMjMw
LDE1ICsyMzAsMTUgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCog
TmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2UKICAgICBpZiAoIXNob3VsZEJ1
ZmZlclJlc291cmNlRGF0YSgqcmVzb3VyY2VEYXRhKSkKICAgICAgICAgcmV0dXJuIHJlc291cmNl
RGF0YTsKIAotICAgIGlmIChyZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGFMZW5ndGgg
PiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQorICAgIGlmIChyZXNvdXJjZURh
dGEtPmRhdGFMZW5ndGgoKSArIGRhdGEuc2l6ZSgpID4gbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VD
b250ZW50U2l6ZSkKICAgICAgICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPmV2aWN0
Q29udGVudCgpOwogICAgIGlmIChyZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0ZWQoKSkKICAg
ICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKIAotICAgIGlmIChlbnN1cmVGcmVlU3BhY2UoZGF0
YUxlbmd0aCkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7CisgICAgaWYg
KGVuc3VyZUZyZWVTcGFjZShkYXRhLnNpemUoKSkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50
RXZpY3RlZCgpKSB7CiAgICAgICAgIG1fcmVxdWVzdElkc0RlcXVlLmFwcGVuZChyZXF1ZXN0SWQp
OwotICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSwgZGF0YUxlbmd0aCk7Ci0g
ICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKKyAgICAgICAgcmVzb3VyY2VEYXRh
LT5hcHBlbmREYXRhKGRhdGEpOworICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRhdGEuc2l6ZSgp
OwogICAgIH0KIAogICAgIHJldHVybiByZXNvdXJjZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGRhYWU1ZmU0YTMxZTMxNTkz
NjM3OTA0MjNmNWZiZDMzNzBjNWNkMzkuLmM4Y2VkMTJhNjQwN2ZkY2Q1NzRlY2MyYTc4MTllZGU2
NjM4MDNkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAg
ICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNv
bnN0OwotICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBT
dHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUg
cmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291
cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBt
YXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5
YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZm
ZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmlu
ZGV4IDNjZWI0YjQ3ZjEwNjhhMGFmZWFmMDBmMTc5YzI4MDBjNDc2YmQ2YjEuLjlhNjFlYjQyZDgx
ZTc5M2M5Y2Y0OWJjZDU2ZmQyMzA0ZGY0OWFlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEy
NCwxNSArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNl
RGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURldGVjdG9y
KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgaWYgKCFkYXRhTGVuZ3RoKQorICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PSAtMSkKLSAgICAg
ICAgICAgIGRhdGFMZW5ndGggPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSkpOwotCi0gICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29kZXItPmRlY29k
ZShkYXRhLCBkYXRhTGVuZ3RoKSk7CisgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gdXNlU3Ry
TGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkp
KSA6IGJ1ZmZlci5zaXplKCk7CisgICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBkYXRhTGVuZ3RoKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGUKQEAg
LTU0OSw5ICs1NDcsOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgICAgICAgICAgaWYg
KHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCiAgICAgICAgICAgICAgICAgbV9y
ZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBwcmV2aW91c1Jlc291
cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+YmFzZTY0RW5jb2RlZCgp
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNCdWZmZXJl
ZERhdGEoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNCdWZmZXIgPSBwcmV2aW91
c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNCdWZmZXIt
PmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAg
IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBzZWdtZW50
LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIHByZXZpb3VzUmVzb3Vy
Y2VEYXRhLT5idWZmZXIoKS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0oYXV0byYm
IGJ1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRk
UmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgYnVmZmVyKTsKICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTc0LDI0ICs1NzEsMjggQEAgdm9pZCBJbnNw
ZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmkKICAgICAvLyBJZiB3ZSByZXZhbGlkYXRlZCB0aGUgcmVzb3VyY2UgYW5k
IGdvdCBOb3QgbW9kaWZpZWQsIHNlbmQgY29udGVudCBsZW5ndGggZm9sbG93aW5nIGRpZFJlY2Vp
dmVSZXNwb25zZQogICAgIC8vIGFzIHRoZXJlIHdpbGwgYmUgbm8gY2FsbHMgdG8gZGlkUmVjZWl2
ZURhdGEgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KICAgICBpZiAoaXNOb3RNb2RpZmllZCAmJiBj
YWNoZWRSZXNvdXJjZSAmJiBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSkKLSAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2UtPmVuY29k
ZWRTaXplKCksIDApOworICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1faGlk
ZGVuUmVxdWVzdElkZW50aWZpZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQogICAgICAgICByZXR1
cm47CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0
SWQoaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBpbnQgZGF0YUxlbmd0aCA9IGRhdGEuc2l6
ZSgpOwogCi0gICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFk
ZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGlmIChkYXRh
LmRhdGEoKSkgeworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNv
bnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRh
KHJlcXVlc3RJZCwgZGF0YSk7CiAKICAgICAgICAgLy8gRm9yIGEgc3luY2hyb25vdXMgWEhSLCBp
ZiB3ZSBkaWRuJ3QgYWRkIGRhdGEgdGhlbiB3ZSBjYW4gYXBwbHkgaXQgaGVyZSBhcyBiYXNlNjQg
ZW5jb2RlZCBjb250ZW50LgogICAgICAgICAvLyBPZnRlbiB0aGUgZGF0YSBpcyB0ZXh0IGFuZCB3
ZSB3b3VsZCBoYXZlIGEgZGVjb2RlciwgYnV0IGZvciBub24tdGV4dCB3ZSB3b24ndCBoYXZlIGEg
ZGVjb2Rlci4KICAgICAgICAgLy8gU3luYyBYSFJzIG1heSBub3QgaGF2ZSBhIGNhY2hlZCByZXNv
dXJjZSwgd2hpbGUgbm9uLXN5bmMgWEhScyB1c3VhbGx5IHRyYW5zZmVyIGRhdGEgb3ZlciBvbiBj
b21wbGV0aW9uLgogICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSAmJiByZXNv
dXJjZURhdGEgJiYgIXJlc291cmNlRGF0YS0+aGFzQnVmZmVyZWREYXRhKCkgJiYgIXJlc291cmNl
RGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSkKLSAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0
UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YSwgZGF0
YUxlbmd0aCksIHRydWUpOworICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJj
ZUNvbnRlbnQocmVxdWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpLCB0cnVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkYXRhTGVuZ3RoID0gZW5j
b2RlZERhdGFMZW5ndGg7CisgICAgICAgIGVuY29kZWREYXRhTGVuZ3RoID0gMDsKICAgICB9CiAK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0
YW1wKCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTEyNzEsNyArMTI3Miw3
IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgaWYgKGxvYWRlci0+cmVhY2hlZFRlcm1p
bmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFibGUgdG8gZnVs
ZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfcyk7CiAKLSAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBkYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8gYnVmZmVy
ID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTEyOTYs
OSArMTI5Nyw5IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgfQogICAgIHJlc3BvbnNl
LnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKICAgICByZXNw
b25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCByZXNw
b25zZS5taW1lVHlwZSgpKTsKLSAgICBsb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25z
ZSwgW2xvYWRlciwgYnVmZmVyID0gZGF0YS5yZWxlYXNlTm9uTnVsbCgpXSgpIG11dGFibGUgewor
ICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIg
PSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgewogICAgICAgICBpZiAoYnVmZmVyLT5zaXplKCkp
Ci0gICAgICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBi
dWZmZXItPnNpemUoKSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgICAgIGxv
YWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBidWZmZXItPnNpemUoKSwgRGF0YVBheWxvYWRX
aG9sZVJlc291cmNlKTsKICAgICAgICAgbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5ldHdvcmtM
b2FkTWV0cmljcygpKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggNmJjZDg3ZGRjZDhi
MDQ0MTMwOGQxZDAxZWNhNmIwZTZkYTE0MTNkNC4uY2E2Zjc0ZTFiODY5ODBmNDBiMTU1ZDEzZTE2
YjcxYWRmYjk0MDQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0T2ZUeXBlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
LCBSZXNvdXJjZVJlcXVlc3QmLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OkxvYWRUeXBlKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBT
aGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpZEZhaWxM
b2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUo
RG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
bnRlbnRGaWx0ZXIuY3BwCmluZGV4IDQzMzJkNjkxYmJmODI2YTdjODdlYTgzYTMxN2U5NjExNWEy
MDQ5OTMuLmI4NmY5YmE2Mzc2NWVjNGRmZTg0ZjAyZGE0ZGY3ODIzMDljMTU4ZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTE0NSwxNCArMTQ1LDE0IEBAIGJv
b2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2Nr
ZWQ7CiB9CiAKLWJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQorYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBS
ZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAog
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9HKENvbnRl
bnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICVkIGJ5dGVzIG9mIGRhdGEgZnJv
bSA8JXM+LlxuIiwgbGVuZ3RoLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOwotICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0
YSwgbGVuZ3RoXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKLSAgICAg
ICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhLCBsZW5ndGgpOworICAgICAgICBMT0co
Q29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRh
dGEgZnJvbSA8JXM+LlxuIiwgZGF0YS5zaXplKCksIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxC
bG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRl
bnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhKTsKICAg
ICAgICAgfSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpCkBAIC0y
MzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxs
b3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZm
ZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1
b3VzKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAppbmRleCA4YjZkZWZmZmFiODBmNWRhYzI1ODdlMzcx
YzAxODc5YjlmM2ZkZjc3Li42MGI0ZGExYTliMzM2OGMyZGZlY2ZmNDJiODlmMzU1OGU4MzMxYzMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRpbnVlQWZ0
ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7
CisgICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7
CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNv
bnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRleCAyMTVj
MDRlYzk4OTVlOWYxZTZlMTQ3ZGE4MjA5MzAwOTg1MjM5NjIzLi5mYTdhZDMwMzlhMjA1ZTkwNTcx
MDhmM2M2ZjM5MjQxOWJjNDY0N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIENvbnRl
bnRGaWx0ZXJDbGllbnQgewpAQCAtNDEsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29u
c3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCBS
ZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJz
dGl0dXRlRGF0YSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CmluZGV4IDZiZjNhYzI5N2VjNmIyNjNhMDc4NjQwYmNmM2FkNTc3OWRiMGZlZGIuLjk3ZTNkNjVi
M2U5MmRlMzI3ZjkyZjNiYWQ0Y2M1MWMxNTQ5M2E1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDgzLDggKzQ4Myw4IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmZpbmlzaGVkTG9hZGluZygpCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYW4gZW1wdHkgZG9j
dW1lbnQsIGl0IHdpbGwgbm90IGhhdmUgYWN0dWFsbHkgYmVlbiBjcmVhdGVkIHlldC4gQ29tbWl0
IGR1bW15IGRhdGEgc28gdGhhdAogICAgICAgICAvLyBEb2N1bWVudFdyaXRlcjo6YmVnaW4oKSBn
ZXRzIGNhbGxlZCBhbmQgY3JlYXRlcyB0aGUgRG9jdW1lbnQuCiAgICAgICAgIGlmICghbV9nb3RG
aXJzdEJ5dGUpCi0gICAgICAgICAgICBjb21taXREYXRhKDAsIDApOwotICAgICAgICAKKyAgICAg
ICAgICAgIGNvbW1pdERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisKICAgICAgICAgaWYg
KCFmcmFtZUxvYWRlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmcmFtZUxvYWRl
cigpLT5jbGllbnQoKS5maW5pc2hlZExvYWRpbmcodGhpcyk7CkBAIC0xMTU3LDggKzExNTcsOCBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lB
Y3Rpb24gcG9saWN5KQogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0ZURhdGEu
aXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1dG8gY29u
dGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwogICAgICAgICBpZiAoY29udGVudCAm
JiBjb250ZW50LT5zaXplKCkpIHsKLSAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVkKHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICBjb250ZW50LT5mb3JFYWNo
U2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAgICAg
ICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCkBAIC0xMTcxLDcgKzExNzEsNyBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rp
b24gcG9saWN5KQogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6Y29t
bWl0TG9hZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRp
bmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZh
U2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcg
YSBuZXcgbG9hZCwgc28gcmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE4Niw3ICsxMTg2LDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKQogICAgIGlmIChBcmNoaXZlRmFjdG9yeTo6aXNBcmNoaXZlTUlNRVR5cGUocmVzcG9u
c2UoKS5taW1lVHlwZSgpKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgZnJhbWVMb2Fk
ZXItPmNsaWVudCgpLmNvbW1pdHRlZExvYWQodGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICBmcmFt
ZUxvYWRlci0+Y2xpZW50KCkuY29tbWl0dGVkTG9hZCh0aGlzLCBkYXRhKTsKIAogICAgIGlmIChp
c011bHRpcGFydFJlcGxhY2luZ0xvYWQoKSkKICAgICAgICAgZnJhbWVMb2FkZXItPmNsaWVudCgp
LmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCk7CkBAIC0xMjE1LDcgKzEyMTUsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgc2hvdWxkVXNlQWN0aXZlU2VydmljZVdvcmtlckZyb21QYXJlbnQoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZQogfQogI2VuZGlmCiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmNv
bW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lkIERvY3Vt
ZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBp
ZiAoIW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKQEAg
LTEzMTMsMjQgKzEzMTMsMjQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25z
dCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICNlbmRpZgogCiAgICAgQVNTRVJUKG1f
ZnJhbWUtPmRvY3VtZW50KCktPnBhcnNpbmcoKSk7Ci0gICAgbV93cml0ZXIuYWRkRGF0YShieXRl
cywgbGVuZ3RoKTsKKyAgICBtX3dyaXRlci5hZGREYXRhKGRhdGEpOwogfQogCi12b2lkIERvY3Vt
ZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291
cmNlKTsKLSAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKKyAgICBkYXRhUmVjZWl2ZWQo
YnVmZmVyKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2
ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29u
dGludWVBZnRlckRhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpKQorICAgIGlmIChtX2NvbnRlbnRG
aWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZm
ZXIpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgIEFTU0VSVChkYXRhKTsKLSAgICBB
U1NFUlQobGVuZ3RoKTsKKyAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSk7CisgICAgQVNTRVJUKGJ1
ZmZlci5zaXplKCkpOwogICAgIEFTU0VSVCghbV9yZXNwb25zZS5pc051bGwoKSk7CiAKICAgICAv
LyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBiZSBkaXNw
YXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCkBAIC0xMzQwLDEyICsxMzQwLDEy
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKQogI2VuZGlmCiAKICAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhv
dXRSZXNvdXJjZUxvYWRlcikKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaXNw
YXRjaERpZFJlY2VpdmVEYXRhKHRoaXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3Vy
Y2VMb2FkZXIsIGRhdGEsIGxlbmd0aCwgLTEpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3Rp
ZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEodGhpcywgbV9pZGVudGlmaWVyRm9yTG9hZFdp
dGhvdXRSZXNvdXJjZUxvYWRlciwgYnVmZmVyLCAtMSk7CiAKLSAgICBtX2FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LT5tYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoLCAtMSwgZmFsc2Up
OworICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChi
dWZmZXIsIC0xLCBmYWxzZSk7CiAKICAgICBpZiAoIWlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgp
KQotICAgICAgICBjb21taXRMb2FkKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGNvbW1pdExvYWQo
YnVmZmVyKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0dXBGb3JSZXBsYWNlKCkKQEAg
LTE2MTQsNyArMTYxNCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2
ZSgpCiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwog
CiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobV9wYXJz
ZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAg
Y29tbWl0RGF0YSgqbV9wYXJzZWRBcmNoaXZlRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKIH0KQEAgLTIyNTcsOCArMjI1Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmlu
aXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBG
b3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAg
IGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291
cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKG1haW5SZXNvdXJjZURhdGEoKS0+bWFr
ZUNvbnRpZ3VvdXMoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRp
bmcoKQpAQCAtMjQxMCw5ICsyNDA5LDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5xdWV1ZVNl
Y3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24KIH0KIAog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFS
ZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBzaXpl
KQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgZGF0YVJlY2VpdmVkKGRhdGEsIHNp
emUpOworICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVy
OjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYjQ2
OTgxZDc1MGIyNWMxZmQzMDdmMTZmZGE3NGI3ZWUzMDZhNGMzOS4uMjhlMjhhNjg4YWU2YjU3ZTBm
MGQxNGM0ZTdhMGMyNTU4Y2I2N2U0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNsYXNzIFJl
c291cmNlTG9hZGVyOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNXQ2xp
ZW50Q29ubmVjdGlvbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9h
ZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0
ZXJuOwpAQCAtMzc3LDcgKzM3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0VGltaW5nKCkg
eyBtX2xvYWRUaW1pbmcgPSB7IH07IH0KIAogICAgIC8vIFRoZSBXZWJLaXQgbGF5ZXIgY2FsbHMg
dGhpcyBmdW5jdGlvbiB3aGVuIGl0J3MgcmVhZHkgZm9yIHRoZSBkYXRhIHRvIGFjdHVhbGx5IGJl
IGFkZGVkIHRvIHRoZSBkb2N1bWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0JiBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpIGNvbnN0OwogICAgIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0KiBhcHBsaWNhdGlvbkNhY2hlSG9zdFVubGVzc0JlaW5nRGVzdHJveWVkKCkg
Y29uc3Q7CkBAIC00NzcsNyArNDc4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tbWl0SWZS
ZWFkeSgpOwogICAgIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwotICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCB1aW50OF90KiwgaW50KTsKKyAgICB2b2lk
IGNvbW1pdExvYWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbGVhck1haW5SZXNv
dXJjZUxvYWRlcigpOwogCiAgICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKQEAgLTQ5Myw3ICs0
OTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNo
ZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92
ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7
CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmV2aWV3UmVz
cG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKQEAgLTUwMywxMyArNTA0LDEzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09O
VEVOVF9GSUxURVJJTkcpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhf
dCosIGludCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBXRUJDT1JF
X0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5h
bDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250
ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25z
dCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogI2VuZGlmCiAK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsK
KyAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIGJvb2wg
bWF5YmVMb2FkRW1wdHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBiOWM0MTM1MjU2NzYyNjcyMTkwN2FmMzY2ZGZi
MWRlYzc5NGMyNDc0Li44NjRiNjVhMWQxMTMxZmI2MzcxMjViMTczOTkxZTlkM2UwYTZlNzFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcApAQCAtNDM3LDIwICs0MzcsMjAgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAot
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQo
cmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBkaWRSZWNlaXZlRGF0YSht
X3Jlc291cmNlLT5pZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2Vp
dmVEYXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgYnVmZmVyKTsKIH0KIAotdm9pZCBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwog
CiAgICAgaWYgKG1fZGVsYXlDYWxsYmFja3NGb3JJbnRlZ3JpdHlDaGVjaykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOwor
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGZhbHNlKTsKIH0KIAogdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNo
ZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlVGltaW5nJiByZXNvdXJjZVRpbWlu
ZykKQEAgLTQ5MywyMCArNDkzLDE0IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmCiAKICAgICAg
ICAgaWYgKG9wdGlvbnMoKS5maWx0ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xp
Y3k6OkRpc2FibGUpIHsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2Uo
aWRlbnRpZmllciwgcmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1f
cmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKLSAgICAgICAgICAgICAgICBidWZmZXItPmZv
ckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8q
IGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKCpidWZmZXIsIGZhbHNlKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25z
ZTo6VHlwZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNlLCBtX29w
dGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA/
IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5vIDogUmVz
b3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7Ci0gICAg
ICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkg
ewotICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1
ZmZlciwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02NjcsMTEgKzY2MSw4IEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgfQogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YSkgewotICAgICAgICBkYXRhLT5mb3JF
YWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgZGlkUmVjZWl2ZURh
dGEoaWRlbnRpZmllciwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAg
fSk7Ci0gICAgfQorICAgIGlmIChkYXRhKQorICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlm
aWVyLCAqZGF0YSk7CiAKICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNh
dGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9
IFJlc291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9u
cy5pbml0aWF0b3IsIGxvYWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1l
dHJpY3M6OmVtcHR5TWV0cmljcygpLCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXgg
ZjFmNDFlZTkxZDZjZThhMWM1ODYyMzgxN2IzNThmNzc0NjUxZTBhNC4uYzg2YmE3ZjQ1MzgzYjZj
Mjg2MDAzMmQzYWViZmJhM2UwODYwNzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODYsMTQgKzg2LDE0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAg
dm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1Nl
bnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAg
ICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAg
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgICAgIHZv
aWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29y
a2VyTG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNvbnN0IFJlc291cmNl
VGltaW5nJik7CiAgICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyKTsKICAgICAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vz
c1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFdyaXRlci5jcHAKaW5kZXggYjA0NmVmMGRlMjA0OGVmZDQzMTk3MDI2MjJiOTZhN2RmMmZlYWZh
Ny4uNGZmOTM4MTgwZmRkMjhmYzcxNWQwODg4MTYwOGZjNjI4OTQ5MmU5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBE
b2N1bWVudFdyaXRlcjo6cmVwb3J0RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwog
fQogCi12b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBz
aXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSB0byBBU1NFUlQgb25j
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MjcgaGFzIGJlZW4g
cmVzb2x2ZWQuCiAgICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Tm90U3RhcnRl
ZCk7CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25z
dCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBBU1NFUlQobV9wYXJzZXIpOwotICAgIG1fcGFyc2VyLT5hcHBlbmRCeXRlcygqdGhpcywg
Ynl0ZXMsIGxlbmd0aCk7CisgICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjppbnNlcnREYXRh
U3luY2hyb25vdXNseShjb25zdCBTdHJpbmcmIG1hcmt1cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50V3JpdGVyLmgKaW5kZXggMDcxNzJjOTczOWViNTczNWJjODFmOGRlZjJmYjliMjg1YzI1
NGQwYi4uYzBhMzRhNmI3ZTljZmU5NjQzMDQ1YTk1ZTc5MzIyNTIzNjNiMjY4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudFBhcnNlcjsKIGNsYXNz
IEZyYW1lOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsK
IAogY2xhc3MgRG9jdW1lbnRXcml0ZXIgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBVUkwmLCBib29sIGRpc3BhdGNo
V2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSBu
dWxscHRyKTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBs
ZW5ndGgpOworICAgIHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lk
IGluc2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYpOyAvLyBGb3IgYW4gaW50ZXJu
YWwgdXNlIG9ubHkgdG8gcHJldmVudCB0aGUgcGFyc2VyIGZyb20geWllbGRpbmcuCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBlbmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAppbmRleCA3NThjYmU4MDY1NGU4ODg5N2FjZDllZDQxMTk5MGM4Njg2Y2FmM2JhLi5kMjNj
OTZiNmM1MjgwM2ZlYzJlNDU3YjdlYzdkYmM5ZWIzNzk5NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogewogfQogCi12b2lkIEVt
cHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCB1aW50OF90KiwgaW50KQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRM
b2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjI2OTlj
OWM1MTgzMmE1YWE4Yzg5YWJhYjJmZmM3ZTA5ODViZmMwMC4uMTE2YTE3ZDFmNWM5ZTY0N2UxZjE0
MWExMDA4NmIwNzk4MzkzZjNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlG
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFj
ZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1
bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0
dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAg
IHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgZmluYWw7CiAKICAgICBSZXNv
dXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmRjOTdkYzQ2MmM4
NzUyNmFhMTg4Zjc5NjhkNjBhMGM4M2Q2ODBkOS4uMTFjMGE4ZjY4NjE1MDZlMDk2MWU1MmE4ZmY0
YzcyMGIyNWJlMjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0x
Njg3LDcgKzE2ODcsNyBAQCBib29sIEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVS
TChVUkwmIHVybCwgTm9kZSYgaW5pdGlhdG9yTm9kZSkKICAgICBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllcjsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RG
cm9tRGVsZWdhdGUocmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlmaWVyKCku
c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRl
bnRpZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAtMSwgU3Ry
aW5nKCkpLCAwLCAtMSwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdE
ZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVl
c3QsIFJlc291cmNlUmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKSwgbnVsbHB0
ciwgLTEsIGVycm9yKTsKIAogICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKQEAgLTIwODcsOCAr
MjA4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwogCiAgICAg
ICAgIC8vIFNlbmQgcmVtYWluaW5nIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBtYWluIHJlc291cmNl
LgotICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9j
dW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwKLSAgICAgICAgICAgIG51bGxwdHIsIHN0YXRpY19j
YXN0PGludD4obV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5n
dGgoKSksIDAsIG1haW5SZXNvdWNlRXJyb3IpOworICAgICAgICBub3RpZmllcigpLnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJj
ZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwgbnVs
bHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmV4cGVj
dGVkQ29udGVudExlbmd0aCgpKSwgbWFpblJlc291Y2VFcnJvcik7CiAKICAgICAgICAgVmVjdG9y
PFJlZjxGcmFtZT4+IHRhcmdldEZyYW1lczsKICAgICAgICAgdGFyZ2V0RnJhbWVzLmFwcGVuZCht
X2ZyYW1lKTsKQEAgLTIxMzYsNyArMjEzNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFBy
b3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3Vy
Y2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQg
dGhpbmcuCiAgICAgICAgICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFu
ZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAg
ICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KLSAg
ICAgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1
bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIDAsIHN0YXRp
Y19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBlcnJvcik7
CisgICAgICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1f
ZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNlLCBudWxs
cHRyLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwg
ZXJyb3IpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdoeSBvbmx5IHRoaXMgZnJh
bWUgYW5kIG5vdCBwYXJlbnQgZnJhbWVzPwpAQCAtMzE2Niw3ICszMTY1LDggQEAgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFJlc291cmNlUmUKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24o
b3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5h
dGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGlu
YXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbm90aWZpZXIo
KS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBp
ZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxw
dHIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAtMSwgZXJyb3IpOworCisgICAgbm90aWZpZXIo
KS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBp
ZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0YSwgLTEsIGVycm9yKTsKICAgICByZXR1
cm4gaWRlbnRpZmllcjsKIH0KIApAQCAtMzY0Nyw3ICszNjQ3LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBSZXNvdXIKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNvdXJjZS5yZXNw
b25zZSgpOwogICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6
Ok1lbW9yeUNhY2hlKTsKLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIHJlc3Bv
bnNlLCAwLCByZXNvdXJjZS5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CisgICAgbm90aWZpZXIo
KS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBp
ZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwgbnVsbHB0ciwgcmVzb3VyY2UuZW5jb2Rl
ZFNpemUoKSwgZXJyb3IpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjphcHBseVVzZXJBZ2VudElm
TmVlZGVkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFiYzEyODk4
ZDEyMzY1Mi4uMzUyYTRjNGZiNTA0ZjdjZDRkMmVjNDA2ZTZiYzI5MTFhNTVmZDA5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTcsNyArNyw3IEBACiAg
KiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgog
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIApA
QCAtNTAsNyArNTAsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpZmRlZiBf
X09CSkNfXyAKKyNpZmRlZiBfX09CSkNfXwogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CiB0eXBlZGVmIGlkIFJlbW90ZUFYT2JqZWN0UmVmOwogI2Vsc2UKQEAgLTk4LDcgKzk4LDcg
QEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7
CiBjbGFzcyBXaWRnZXQ7CiAKQEAgLTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKikgPSAwOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhp
c3RvcnkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVj
dExpbmtzKCkgPSAwOwogCkBAIC0yNzIsNyArMjcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIFN0
cmluZyBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIFN0cmlu
ZygpOyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVk
RnJhbWUoQ2FjaGVkRnJhbWUqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0Nv
bW1pdHRlZEZyb21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopID0gMDsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmly
dHVhbCBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21N
b3N0UmVjZW50TmF2aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEFsbG93c0NvbnRlbnRKYXZhU2Ny
aXB0OjpZZXM7IH0KLSAgICAKKwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZU9mQXBw
Qm91bmRCZWhhdmlvcigpIHsgfQpAQCAtMzkwLDcgKzM5MCw3IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoUERGS0lUX1BMVUdJTikKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlUERGUGx1Z2luKGNv
bnN0IFN0cmluZyYsIFN0cmluZ1ZpZXcpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYK
LSAgICAKKwogICAgIHZpcnR1YWwgYm9vbCBpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJyb3dzZXIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDVkMTIwZTI0N2FjMjYyNzExNjFkZTBkYzUy
MzAyNGRjOGRlMzRkNjkuLjFhMTdhNzBmYTU4YzcyMjhmNjM4OTM1OWRkMGQzMzlkMGUwNWNkMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTIzMSwxMyArMjMxLDEzIEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTCiAgICAgICAgIG1fY2xp
ZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQog
Ci12b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBNZWRpYVJlc291
cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2Ug
PT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2
ZWQoKnRoaXMsIGRhdGEsIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2Vp
dmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBt
ZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5k
ZXggZmY2YzI4ODcxMDA4OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NS4uN2I1NTc3MjBlZjA1
MzNmYmFhMjI2NTY1MzhlZmRkOTZmNjE3OWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
YXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9u
ZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggNjA0M2FjOWJlMjY3ZWE0ZmJjNzFl
MTExOGI5MDc5MTU1ZTM5MTUwMy4uNWNhYWRmNjI5YzcwYWUwODZiNzdiZDcyY2QyODY3NTM2Yjhm
YTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDEsMzAgKzE0MSwxNCBAQCB2b2lkIE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcAogICAgIH0pOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsK
LSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2Rl
ZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBk
YXRhUGF5bG9hZFR5cGUpCi17Ci0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAw
LCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwot
fQotCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAg
ICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
Ci0gICAgaWYgKG1fY2xpZW50KSB7Ci0gICAgICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgICAg
IGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgc2VnbWVudC5kYXRhKCksIHNlZ21l
bnQuc2l6ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOwotICAgIH0KKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBi
dWZmZXIpOwogCi0gICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0
YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9h
ZFR5cGUpOworICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29k
ZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCBiNTE3NGVkYzk0Yjk5MjM5MDIwNWYwZmFkNDUy
ZWE1YWMzODc4OTM4Li4xZWM3ZDYxZTNhMTc1YzIyYjU1ODc1OGQzN2VkMGM1NWJlNWYxM2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuaApAQCAtMzYsMTIgKzM2LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciopIHsgfQogICAgIHZpcnR1YWwgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpAQCAtNjIsOCArNjMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGlj
eUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogCkBAIC03NCw4ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQ2Fu
Y2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbChj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLQog
ICAgIHZvaWQgbm90aWZ5RG9uZSgpOwogCiAgICAgV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlckNsaWVudD4gbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE5vdGlmaWVyLmNwcAppbmRleCA2MmJiNTZlMzRlNmY0NmQyNjI4MzZjZmNhNDY1YjRk
YjBlMzA4M2NmLi4xYWMwZTY3YzdmNjhkZWQwZWNiNzhlMTFjMDI0NjliMTA5MWQ1M2I3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2Vy
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKIAogI2lmIFVTRShRVUlDS19MT09LKQogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgpAQCAtNzgs
MTIgKzc5LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvCiAgICAgZGlzcGF0Y2hEaWRSZWNl
aXZlUmVzcG9uc2UobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIo
KSwgciwgbG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZp
ZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBtX2ZyYW1lLnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNyZW1lbnRQ
cm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIHBhZ2Ut
PnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCksIGJ1ZmZl
ci5zaXplKCkpOwogCi0gICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRvY3VtZW50
TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRvY3VtZW50
TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmluaXNoTG9hZChSZXNvdXJj
ZUxvYWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0
cmljcykKQEAgLTE1MywxMyArMTU0LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
c3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2Zy
YW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIsIHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgLy8gTm90
aWZ5aW5nIHRoZSBGcmFtZUxvYWRlckNsaWVudCBtYXkgY2F1c2UgdGhlIGZyYW1lIHRvIGJlIGRl
c3Ryb3llZC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7Ci0gICAgbV9mcmFtZS5s
b2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwg
aWRlbnRpZmllciwgZGF0YUxlbmd0aCk7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5k
aXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgYnVmZmVy
LnNpemUoKSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRh
KCZtX2ZyYW1lLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgmbV9mcmFt
ZSwgaWRlbnRpZmllciwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVyKiByZXNv
dXJjZUxvYWRlcikKQEAgLTE4MCw3ICsxODEsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVy
OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cgog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJhbWUsIGxv
YWRlciwgaWRlbnRpZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVy
OjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogewogICAgIC8vIElmIHRoZSByZXF1ZXN0IGlzIG51bGwsIHdpbGxTZW5kUmVxdWVzdCBj
YW5jZWxsZWQgdGhlIGxvYWQuIFdlIHNob3VsZAogICAgIC8vIG9ubHkgZGlzcGF0Y2ggZGlkRmFp
bExvYWRpbmcgaW4gdGhpcyBjYXNlLgpAQCAtMTkzLDggKzE5NCw4IEBAIHZvaWQgUmVzb3VyY2VM
b2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsCiAgICAgaWYgKCFyZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgZGlzcGF0Y2hE
aWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CiAKLSAgICBp
ZiAoZGF0YUxlbmd0aCA+IDApCi0gICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVy
LCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
aWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKKyAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZl
RGF0YShsb2FkZXIsIGlkZW50aWZpZXIsICpidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKIAog
ICAgIGlmIChlcnJvci5pc051bGwoKSkgewogICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1w
dHlNZXRyaWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
aAppbmRleCA2ZGExNjAzMjVmNDJmZWY1NDBjNmJkNTBiYjE4MmU4NjlkYWRlOWUzLi4yYjI1ZDhh
M2RkNjE5NDBmNWNhZjU0ZGE5Yzc0NjViMGEyOGQzNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBS
ZXNvdXJjZUxvYWROb3RpZmllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVzb3VyY2VM
b2FkTm90aWZpZXIpOwpAQCAtNTUsMTggKzU2LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBDYWNo
ZWRSZXNvdXJjZSopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1l
bnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZXNvdXJjZUxvYWRlciogPSBudWxscHRyKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExvYWRlcios
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVz
b3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
IAotICAgIHZvaWQgc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIq
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBz
ZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgs
IGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIGJvb2wgaXNJbml0aWFsUmVxdWVzdElkZW50
aWZpZXIoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNmRlYmIyNTg4YTNlODJiMjFj
NjFkN2U4ZjM2ZTRmNGJiYmEyNWU2MC4uNjY0N2MyNzA4MTE4MGViY2VjMmI1Y2EyOWZkNjBiNzIz
YWI2NDgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0y
OTksOSArMjk5LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogCiAgICAg
ICAgIGF1dG8gZGF0YVNpemUgPSBkZWNvZGVSZXN1bHQtPmRhdGEuc2l6ZSgpOwogICAgICAgICBS
ZXNvdXJjZVJlc3BvbnNlIGRhdGFSZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRhdGFVUkxS
ZXNwb25zZSh1cmwsIGRlY29kZVJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAgdGhpcy0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGRhdGFSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpLCBkYXRhU2l6ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGVjb2RlUmVzdWx0LT5kYXRhKSldKCkgbXV0YWJsZSB7CisgICAgICAgIHRoaXMtPmRp
ZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRlY29kZVJlc3VsdC0+ZGF0YSkpXSgpIHsKICAgICAgICAgICAgIGlmICghdGhp
cy0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRhU2l6ZSAmJiBtX3JlcXVlc3QuaHR0cE1l
dGhvZCgpICE9ICJIRUFEIikKLSAgICAgICAgICAgICAgICB0aGlzLT5kaWRSZWNlaXZlQnVmZmVy
KFdURk1vdmUoZGF0YSksIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAg
ICAgICAgICAgICAgIHRoaXMtPmRpZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0YVNpemUsIERhdGFQ
YXlsb2FkV2hvbGVSZXNvdXJjZSk7CiAKICAgICAgICAgICAgIGlmICghdGhpcy0+cmVhY2hlZFRl
cm1pbmFsU3RhdGUoKSkgewogICAgICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0
eU1ldHJpY3M7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFN3
aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNlbCgpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIERh
dGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVyOjphZGRC
dWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBEYXRhUGF5bG9hZFR5
cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmluZ1Bv
bGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAgIHJl
dHVybjsKQEAgLTMzNiwxMCArMzM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ20KICAgICBp
ZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKICAgICAgICAg
bV9yZXNvdXJjZURhdGEucmVzZXQoKTsKIAotICAgIGlmIChidWZmZXIpCi0gICAgICAgIG1fcmVz
b3VyY2VEYXRhLmFwcGVuZCgqYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcmVzb3VyY2VE
YXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVuZChidWZm
ZXIpOwogfQogCiBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxvYWRlcjo6
cmVzb3VyY2VEYXRhKCkgY29uc3QKQEAgLTUzOSw3ICs1MzYsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwgQ29tcGxl
dGlvbkhhbgogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVSZXNw
b25zZSh0aGlzLCBtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcg
ZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxv
YWRUeXBlKQogewogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhcmUgbm90IHF1aXRl
IHZhbGlkIGhlcmUsIHNpbmNlIGEgc3ViY2xhc3MKICAgICAvLyBtaWdodCBvdmVycmlkZSBkaWRS
ZWNlaXZlRGF0YSBpbiBhIHdheSB0aGF0IGludmFsaWRhdGVzIHRoZW0uIFRoaXMKQEAgLTU0Nywz
MCArNTQ0LDIyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsCiAgICAgLy8gQVNTRVJUKGNvbiA9
PSBjb25uZWN0aW9uKTsKICAgICAvLyBBU1NFUlQoIW1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpOwog
Ci0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIsIGVuY29k
ZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVm
ZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRh
dGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVu
Z3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERh
dGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAgLy8gVGhp
cyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3RoICpPUiogYSBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyLgotICAgIEFTU0VSVCghYnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3RoKSk7Ci0K
ICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFk
ZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9z
c2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2
LgogICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBh
ZGREYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXlsb2FkVHlw
ZSk7CisgICAgYWRkQnVmZmVyKGJ1ZmZlciwgZGF0YVBheWxvYWRUeXBlKTsKIAogICAgIC8vIEZJ
WE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywgdGhpcyBj
b2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5
J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4g
cHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZp
bGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2FsbGJhY2tQ
b2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+
bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3Ro
LCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZyYW1lTG9h
ZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyLm1ha2VDb250aWd1
b3VzKCksIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTcyOSwxNCArNzE4LDE0IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VS
ZXNwb25zZSYmCiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
KFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgZGlkUmVjZWl2ZURhdGEoYnVmZmVy
LCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAg
ICBkaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIERh
dGFQYXlsb2FkQnl0ZXMpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNvZGVkRGF0
YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4IDkwNzVj
YmMwYTMwNDBlYTE1MGE4NjI1Y2RhMDg5MGIxZWUxMzhjNzIuLjEwOThlNGYyNzg4OWNkYTdiM2E5
Y2ZkNGQ1NDZhZTJmZDlhN2M1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCkBAIC0xMDcsOCArMTA3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGly
ZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNhbGxiYWNrKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2lnbmVk
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjcsOCArMTY3LDYgQEAgcHJv
dGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBtX2NhbmNl
bGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFP
ckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7
Ci0gICAgCiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSByZWZlcnJl
clBvbGljeSkgeyBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGljeTsgfQog
ICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRp
b25zLnJlZmVycmVyUG9saWN5OyB9CiAKQEAgLTE5Miw3ICsxOTAsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogCi0gICAg
dm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZEJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2b2lkIGxv
YWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0yMDIsOCAr
MjAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwg
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhS
ZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJlc291cmNl
SGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5zaWduZWQs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FzQmxvY2tl
ZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2VmYzk0MTJh
NTFiYjFhOS4uOTcyZjJhZjIyNjAzZjQyNGNkODc3NWY1OTEwMTBlMmQ3NjkzOGEwMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MTgsMzIgKzUx
OCwxNSBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VQb2xpY3ko
KQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFN1YnJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewot
ICAgICAgICBpZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKSkK
KyAgICAgICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5tYWtlQ29u
dGlndW91cygpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIGRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxl
bmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkK
LXsKLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9w
cmV2aWV3TG9hZGVyLmdldCgpKSB7Ci0gICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5kaWRSZWNl
aXZlQnVmZmVyKGJ1ZmZlci5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vu
ZGlmCi0KLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVm
ZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgU3Vi
cmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBs
b25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5
cGUpCi17CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCiAgICAgaWYgKG1fcmVzb3VyY2UtPnJl
c3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAgJiYgIW1fcmVzb3VyY2UtPnNob3VsZEln
bm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkpCkBAIC01NTUsMTMgKzUzOCwxMyBAQCB2b2lkIFN1
YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgsCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5nIHRoZSBs
YXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2
MjE2LgogICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
LSAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgs
IGJ1ZmZlci5jb3B5UmVmKCksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwor
ICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFM
ZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICBpZiAoIW1fbG9hZGluZ011bHRpcGFydENv
bnRlbnQpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJlc291cmNl
RGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURh
dGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1
ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8g
YnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRl
RGF0YShidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDgzMmM5ZjBlNzNkMzg0NjRhNzk1ZjQw
Mzg2MGY3OWMzNGU3M2JjN2YuLjNkYmQ1MzM4YWZlNDliNDc4NTdkNTM0MDk3ODg3NTJlYWExYWVk
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBAIC03Myw4
ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxDYW5j
ZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTEsNyBAQCBwcml2
YXRlOgogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9p
ZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwogCiAg
ICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCBjZjJkZTBjNjJkOTVmMzMyNWI0MmI0
NmUyNDAzNzc0NDEwNzQyYTBkLi4zZDE5Mjg2MmYyNzcyOWIyZjM4ZGI1NGJkODM2Nzk5NTI1YzAx
OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0z
OCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9Ci0gICAgdm9pZCBhcHBlbmQoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0K
KyAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgeyBtX2RhdGEuYXBw
ZW5kKGJ1ZmZlcik7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBsb2FkZXIu
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKaW5kZXggODRk
NzliMGM5OWRmMTBkOTkzODBiODQ4MzE3MzcxYmMxZTg1NzNiZi4uY2VmMGM4ZjFmMTdkMGY1NzY1
OWEzNTQxYjU0ZjYzODk5MDY0YjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlckNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3Mg
UmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFRocmVhZGFibGVM
b2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZGFibGVMb2FkZXJD
bGllbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgLypieXRl
c1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQog
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgLyog
dXNlU3RyTGVuICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoVGltaW5nKGNv
bnN0IFJlc291cmNlVGltaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCmluZGV4IDQyYWU2NDkwOWE1ZTBmZTQ0
YzZhNWUwMDYwZDU4Yzk2NGVjNTYwNTEuLmYzNmEyZDQwN2FmODgxNTkwNDI4NjZiODVlOWUwMTg2
MWRhYWM3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50V3JhcHBlci5oCkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7
CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKICAgICB7CiAgICAgICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsK
KyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIHVzZVN0ckxlbik7
CiAgICAgfQogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwCmluZGV4IGRmZjg5NzAxYzkzOWJjNzNjMzcwMzJhZDljNDJhZDIwNjMy
NmFkNmUuLjdjMDM0OTQ1ZWUwM2E3NGY1MzMzOWJiODFmZmEwZTA2YzY5YzcxNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIz
MSwxNCArMjMxLDEzIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyCiAgICAgfSwgbV90YXNrTW9k
ZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lk
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCB1c2VTdHJMZW4pCiB7Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IGJ1ZmZlcihkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtl
ckNsaWVudFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJl
cXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gV1RG
TW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7
CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29ya2VyQ2xp
ZW50V3JhcHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElk
ZW50aWZpZXIsIGJ1ZmZlciA9IFJlZiB7IGRhdGEgfSwgdXNlU3RyTGVuXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dvcmtlckds
b2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKLSAgICAgICAg
cHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIt
PmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgdXNlU3RyTGVuKTsKICAgICAgICAgaWYgKGlzPFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIsIGJ1ZmZlcik7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDcyM2I0NTZlYzhlOWUzMDZm
YzE4Y2M4ZjM2ZGU2ZGNkOGFlMzA0NzAuLjMzOWQ2ZjQ3MzEwYTFlZDI4OTAzNmFkMGE0MDRmMzhh
N2EyNjg2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEFsbCBleGVj
dXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0Jl
U2VudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAg
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxlbmd0aCkg
b3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaFRpbWluZyhj
b25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggNTE5Nzhm
NDEyMzg3NGRjNTY2MGVmZjQ3MDY1OTcwN2Q0ZTVkODVhNy4uZWQ3NTY2NTI2YjJkN2VmYmYxYzUx
NzAyMDk1YTg3OWJhZjU2OTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAg
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3Qq
LCBpbnQsIGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5S
ZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcsIGJvb2wp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMxNzBjZGY3
MjM2NzJhMC4uZDJhZWFlYzNlMTRjNjNiY2JmNjAxZTlhYWYwMjRjMWY5ZWM0NzZkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWF5YmVMb2FkTWFpblJl
c291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAgICAgdm9p
ZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwot
ICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9uY2UpOwor
ICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9uY2UpOwogICAgIHZvaWQgZmlu
aXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAgdm9pZCBmYWlsZWRMb2FkaW5nTWFpblJl
c291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggMmJiM2ZlNzViOTk3N2U4MzMy
MmFlMjU4MGY3MjEyZWU1YmYyMTYxMC4uMjU2ZTg5YjIxMWIzOGIyZDIxZGNkNjY1NzgyNjllNjYw
NzM2NzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDEwIEBAIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYmIHVybCwg
UmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxp
dmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25z
ZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtlQ29udGln
dW91cygpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRoKSk7
CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGxvYWRlci5kZWxpdmVyUmVzcG9u
c2VBbmREYXRhKHJlc3BvbnNlKCksIFJlZlB0ciB7ICZkYXRhKCkgfSk7CisgICAgZWxzZQorICAg
ICAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3YjhiNTA3
NGM3MTI5MjYuLjU0ZmVlZDJjYTY0MTJiNDUyMDk4NzBjNzczNDM2MDlkODUwOWI3NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05OSw5ICs5OSw5IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSA9IEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKG1fcmVzb3VyY2UtPnVybCgpLCByZXNwb25zZSwgbV90
eXBlKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9hcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGljYXRpb25D
YWNoZVJlc291cmNlLT5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJj
ZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlTG9hZGVyLmgKaW5kZXggMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3ZWJlOWIw
NjllMjMyZC4uMGIyOTYyODhmMzFhNDMyNWQ0ODQ5YTQ0MmU4YWU2MDJjMTczMTkyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiAg
ICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lk
IGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNTA0NjVjYzZjMDEz
M2U1YTc3NDQ1Y2Y5NDczMzNmZTIwNjQwODYxZC4uZDc3MWEwNzJiNjEwM2FlYmMzZTkwZDUxZWQ0
ODNhYTE3MmJhN2Y0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6OmNsZWFy
SW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lkIENhY2hl
ZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6ZSgpKTsK
ICAgICBjcmVhdGVJbWFnZSgpOwogCkBAIC01NTgsMTUgKzU1OCwxNSBAQCBFbmNvZGVkRGF0YVN0
YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
dm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVm
ZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRh
KTsKKyAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhLm1ha2VDb250aWd1b3VzKCkpOwogICAg
IENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1h
Z2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9p
ZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEo
ZGF0YSwgbGVuZ3RoKTsKKyAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChidWZmZXIpOworICAgIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6
OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAppbmRleCBlODQzMDg3MGI0OGFmM2RjOTViYmEzY2FkMWE2NGUwNjhhZTE1
NTEzLi5hNWRjNjNmMjNkYmQ0MWEyNzBlZTU2YzMyYTQ0MTc3N2Q2YWRkYjQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBk
YXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJj
ZTo6U3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogCkBAIC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAg
ICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9p
ZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cisg
ICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAg
IHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4
IDcxZTE2MDgyZmZlNjU1ZDExMWYxNjk5MGQxMjMwNTM1YmVhY2JmOTUuLmQzMzYxMTMyMTNmYmVi
ZmY0ZTkxZmY2NWY4M2ZmZTI0ZDNlOGEwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIENhY2hl
ZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFPckljb25PclJhd1Jl
c291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNo
ZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHByZXZpb3Vz
RGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7Ci0gICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUo
KSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCisgICAgaWYgKGRhdGEuc2l6ZSgpIDw9IHByZXZpb3Vz
RGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gZGF0
YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKKyAgICByZXR1cm4gZGF0YS5nZXRT
b21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKQEAgLTcy
LDcgKzcyLDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgICAgIHByZXZpb3VzRGF0YVNpemUgKz0g
aW5jcmVtZW50YWxEYXRhLnNpemUoKTsKIAogICAgICAgICBTZXRGb3JTY29wZTxib29sPiBub3Rp
ZnlTY29wZShtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5LCB0cnVlKTsKLSAgICAgICAgbm90aWZ5
Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEuZGF0YSgpLCBpbmNyZW1lbnRh
bERhdGEuc2l6ZSgpKTsKKyAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNy
ZW1lbnRhbERhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkpOwogICAgIH0KICAgICBzZXRFbmNvZGVk
U2l6ZShtX2RhdGEtPnNpemUoKSk7CiAKQEAgLTg5LDExICs4OSwxMSBAQCB2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0
YSk7Ci0gICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChkYXRhLCBsZW5ndGgpOwotICAg
IENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChidWZmZXIpOworICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVE
YXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQpAQCAtMTEwLDkgKzExMCw5IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QK
ICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgIGlmIChkYXRhICE9IG1fZGF0YS5nZXQo
KSkKICAgICAgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwotICAg
ICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9
IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKCptX2RhdGEpKSB7CiAgICAgICAgICAgICAg
ICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBub3RpZnlD
bGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRh
bERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNl
aXZlZChpbmNyZW1lbnRhbERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwpAQCAtMTMw
LDE1ICsxMzAsMTUgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBD
YWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewot
ICAgIGlmICghbGVuZ3RoKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRh
dGEsIGxlbmd0aCk7CisgICAgICAgIGMtPmRhdGFSZWNlaXZlZCgqdGhpcywgYnVmZmVyKTsKIH0K
IAogc3RhdGljIHZvaWQgaXRlcmF0ZVJlZGlyZWN0cyhDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4mJiBoYW5kbGUsIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50JiBjbGllbnQs
IFZlY3RvcjxzdGQ6OnBhaXI8UmVzb3VyY2VSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlPj4mJiBy
ZWRpcmVjdHNJblJldmVyc2VPcmRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzAsOSArMTcwLDkgQEAgdm9pZCBD
YWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjKQog
ICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgICAgIG1fZGF0YS0+
Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgICAgICBtX2Rh
dGEtPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsaWVudCgqY2xpZW50KSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBzZWdtZW50LmRhdGEoKSwgc2Vn
bWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LT5kYXRhUmVjZWl2
ZWQoKnRoaXMsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggYTc4NjVmOGFkMTc4YWVmYjMy
MjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNC4uMzZlNDdhMWRiYTIzMTI4ZGM1MzA3M2I3MGI1ZjNmODUz
ODA0YWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
YWNoZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIFJlc291cmNlVGltaW5nOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKIGNsYXNzIENhY2hlZFJhd1Jl
c291cmNlIGZpbmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKQEAgLTUyLDcgKzUzLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNs
aWVudCYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAg
IGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CkBAIC02Niw4ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzd2l0
Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlU
cnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FsbG93RW5j
b2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJE
YXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNS
ZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ICAgICB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmgKaW5kZXggMjNlYWI4ZGYyOTU4ZmY4YjQ5ZjM1NDViNTA4M2ZlMjk4
OWVmMTIyMC4uY2Q2NTBhMmYzMTM2Y2U5YjI2MmZiZGZjODI5MjhiZjIxMDc5ZmJjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUmVzb3VyY2VUaW1p
bmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTQ2LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNl
KENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlVGltaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCmluZGV4IDlkZTBhMDRjZDVlYzVmM2ZhZDJmYjE2ZDdiMzIyYzg1OGEzOGE2
YjIuLjdiOWM2MWY5NjYxNzU0NmI2NmJjYzNjNjNlY2EwZTg1N2UyNjJlZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzQxLDcgKzM0
MSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGM5
ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0NzguLjUzNGUwMTJjYzRmYTVkZDJi
ZTFmZDZlZWU1YWE2YWU0ZTVmYWUyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0
dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CmluZGV4IDk2ZDg5ODJlOTM1MDM0NzY5NmZjOTY5ZDU4NWFiNzA3NWRlMDIwZWQuLmNhMDE5MzRk
MzFiYTVkNTA5ZmViZTdkMmY5MTIyNDlkMjcxMjZhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC00Nyw4ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwogCiAgICAgYm9vbCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIGRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBkaWRGaW5pc2hMb2FkaW5n
KCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCA0ODc1NmEzM2I1ODcyYjQ0YjJmMGJhMDg0
MjQxZjg2Y2ZhZWJjYWEwLi5hMjRiOGM1OWQ0NjBhZmY1ZTJmZWY4MzE5MGMyMDg2NTcyMzY1ZDM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjCiAgICAgcmV0dXJu
IGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgTGVnYWN5UHJldmlld0xvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGFwcGVuZGluZyBidWZmZXIg
d2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKICAgICBtX29yaWdpbmFsRGF0YS5hcHBl
bmQoYnVmZmVyKTsKICAgICBtX2NvbnZlcnRlci0+dXBkYXRlTWFpblJlc291cmNlKCk7Ci0gICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTYyLDggKzE2Miw3
IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVE
YXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zCiAgICAgaWYgKCFtX2hhc1Byb2Nlc3NlZFJlc3Bv
bnNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRhdGFDb3B5ID0gZGF0YS5jb3B5KCk7
Ci0gICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShkYXRhQ29weSks
IGRhdGFDb3B5LT5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIHJlc291cmNlTG9hZGVy
LT5kaWRSZWNlaXZlQnVmZmVyKGRhdGEsIGRhdGEuc2l6ZSgpLCBEYXRhUGF5bG9hZEJ5dGVzKTsK
IH0KIAogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkRmluaXNo
Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikKQEAgLTI0MywxMSArMjQyLDYgQEAgTGVnYWN5
UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBjb25zdCBSZXNvdXJjZVIKICAgICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIg
Y3JlYXRlZCB3aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNcIi4iLCBtX2NvbnZlcnRlci0+cHJl
dmlld0ZpbGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWJvb2wgTGVnYWN5UHJldmlld0xv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KQotewotICAgIHJldHVybiBkaWRSZWNlaXZlQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIGxlbmd0aCkuZ2V0KCkpOwotfQotCiBib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKICAgICByZXR1cm4gIW1f
c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJj
ZS5jcHAKaW5kZXggNjAyNjMxYmI3Y2QxMDg2MGIxYTMxMjEwNDNjOTdkOGVmZTQ0NzYxZC4uNjdh
Yzc3ZTJiZjc2MTA0NWM4YzE4ZDVjN2FkZWM3ZjczMzhhYjcxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMjEwLDEzICsyMTEsMTMgQEAgdm9pZCBF
dmVudFNvdXJjZTo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCi12b2lkIEV2ZW50U291cmNlOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBFdmVudFNvdXJj
ZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAg
ICAgQVNTRVJUKG1fc3RhdGUgPT0gT1BFTik7CiAgICAgQVNTRVJUKG1fcmVxdWVzdEluRmxpZ2h0
KTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFtX2lzU3Vz
cGVuZGVkRm9yQmFja0ZvcndhcmRDYWNoZSk7CiAKLSAgICBhcHBlbmQobV9yZWNlaXZlQnVmZmVy
LCBtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpKTsKKyAgICBhcHBlbmQobV9yZWNlaXZl
QnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSk7
CiAgICAgcGFyc2VFdmVudFN0cmVhbSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgK
aW5kZXggZDAxMmQzNzdkMTk3Njc1ZjBmZTExNDVmMTcxOWYxN2ZkZGJmZWEzYi4uZDY2MmFlMjgw
NmY0YjI0ODY3YjAxNjA4ZTA0ZGJiNGY5N2RiYTA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3Vy
Y2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRl
ckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCmluZGV4IDllNzJlNDRhMmVhYzRkOGVmNzMwYjk4
NzFkMGVjNTA4ZWQ5ZmFjNDQuLjQ2MmNmM2I4NzQyMzM4NWJlODNhMDAyZTQzZjc0NDc3OTk4N2Vl
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZp
bHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRl
ci5oCkBAIC0yNiwxNSArMjYsMTcgQEAKICNpZm5kZWYgUGxhdGZvcm1Db250ZW50RmlsdGVyX2gK
ICNkZWZpbmUgUGxhdGZvcm1Db250ZW50RmlsdGVyX2gKIAorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtQ29udGVudEZpbHRlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01NCw3ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRp
bmdEYXRhKCkgPSAwOwogICAgIHZpcnR1YWwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
cGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA3YWZhYWZmMmJk
MTUxNzkzN2ZhOGM3ODc0OWY4ZjZlNzUwNjdlNTZkLi5iODZkNDlkNGFmMzNjNjQ1ODJiNmJlYTQw
NjIyNjE1OTkyZDVhY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6dGFrZURhdGEoKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKICAg
ICBpZiAoaGFzT25lU2VnbWVudCgpICYmIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVp
bnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCi0gICAgICAg
IGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhjaGFuZ2Uoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+Piht
X3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSksIFZlY3Rvcjx1aW50OF90Pigp
KTsKKyAgICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNoYW5nZShzdGQ6OmdldDxWZWN0b3I8
dWludDhfdD4+KGNvbnN0X2Nhc3Q8RGF0YVNlZ21lbnQmPihtX3NlZ21lbnRzWzBdLnNlZ21lbnQu
Z2V0KCkpLm1faW1tdXRhYmxlRGF0YSksIFZlY3Rvcjx1aW50OF90PigpKTsKICAgICBlbHNlCiAg
ICAgICAgIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9z
aXplKTsKIApAQCAtMjUwLDYgKzI1MCwxMyBAQCB2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdAogICAg
ICAgICBhcHBseShTcGFuIHsgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVu
dC0+c2l6ZSgpIH0pOwogfQogCit2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hT
ZWdtZW50QXNTaGFyZWRCdWZmZXIoY29uc3QgRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVy
PiYmKT4mIGFwcGx5KSBjb25zdAoreworICAgIGF1dG8gcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH07CisgICAgZm9yIChhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykKKyAgICAgICAgYXBw
bHkoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2VnbWVudC5zZWdtZW50LmNvcHlSZWYoKSkpOworfQor
CiBib29sIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYgcHJlZml4KSBjb25zdAogewogICAgIGlmIChwcmVmaXguZW1wdHkoKSkKQEAg
LTQxNSw3ICs0MjIsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpCiAgICAgbV9jb250
aWd1b3VzID0gdHJ1ZTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPERhdGFT
ZWdtZW50PiYmIHNlZ21lbnQpCitTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihSZWY8Y29uc3Qg
RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKIHsKICAgICBtX3NpemUgPSBzZWdtZW50LT5zaXplKCk7
CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoeyAwLCBXVEZNb3ZlKHNlZ21lbnQpIH0pOwpAQCAtNjAz
LDcgKzYxMCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyQnVpbGRlcjo6ZW5zdXJlQnVmZmVyKCkKICAg
ICAgICAgbV9idWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKIH0KIAot
U2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRhU2VnbWVu
dD4mJiBzZWdtZW50LCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gc2l6ZSkKK1NoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmll
dyhSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGlu
U2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCiAgICAgOiBtX3NlZ21lbnQoV1RG
TW92ZShzZWdtZW50KSkKICAgICAsIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50KHBvc2l0aW9uV2l0
aGluU2VnbWVudCkKICAgICAsIG1fc2l6ZShzaXplID8gKnNpemUgOiBtX3NlZ21lbnQtPnNpemUo
KSAtIHBvc2l0aW9uV2l0aGluU2VnbWVudCkKQEAgLTYxOSw3ICs2MjYsNyBAQCBTaGFyZWRCdWZm
ZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcmIG90aGVyLCBzaQogCiBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJEYXRhVmlldzo6
Y3JlYXRlU2hhcmVkQnVmZmVyKCkgY29uc3QKIHsKLSAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+
IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IERhdGFTZWdtZW50PiBz
ZWdtZW50ID0gbV9zZWdtZW50OwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShEYXRh
U2VnbWVudDo6UHJvdmlkZXIgewogICAgICAgICBbc2VnbWVudCwgZGF0YSA9IGRhdGEoKV0oKSB7
IHJldHVybiBkYXRhOyB9LAogICAgICAgICBbc2l6ZSA9IHNpemUoKV0oKSB7IHJldHVybiBzaXpl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGMyN2M5MjY5ZmZl
ZjI0OWFiNWU4YWJhMjRkNzYyZmM0MGMxYzIzMDAuLjM0ODRhNmE1M2I4MDQwNjRiZTU3YTI4M2Vm
NDE4YThhNjJkNTg5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBA
IC0xNzgsMTIgKzE3OCwxMyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZv
ckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYpPiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc3RhcnRzV2l0aChjb25zdCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihjb25zdCBGdW5jdGlvbjx2b2lkKFJlZjxT
aGFyZWRCdWZmZXI+JiYpPiYpIGNvbnN0OwogCiAgICAgdXNpbmcgRGF0YVNlZ21lbnQgPSBXZWJD
b3JlOjpEYXRhU2VnbWVudDsgLy8gVG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdoZW4g
dXNpbmcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQKIAogICAgIHN0cnVjdCBE
YXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRpb247Ci0g
ICAgICAgIFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudDsKKyAgICAgICAgY29uc3QgUmVmPGNvbnN0
IERhdGFTZWdtZW50PiBzZWdtZW50OwogICAgIH07CiAgICAgdXNpbmcgRGF0YVNlZ21lbnRWZWN0
b3IgPSBWZWN0b3I8RGF0YVNlZ21lbnRWZWN0b3JFbnRyeSwgMT47CiAgICAgRGF0YVNlZ21lbnRW
ZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50cy5i
ZWdpbigpOyB9CkBAIC0yNTksNyArMjYwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgaWYgY29uc3Rl
eHByICghc2l6ZW9mLi4uKEFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2hhcmVkQnVmZmVyKCkpOwogICAgICAgICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFy
Z3MpID09IDEKLSAgICAgICAgICAgICYmIChzdGQ6OmlzX3NhbWVfdjxBcmdzLCBSZWY8RGF0YVNl
Z21lbnQ+PiAmJi4uLikpCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVm
PGNvbnN0IERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgICAg
ICBlbHNlIGlmIGNvbnN0ZXhwciAoc2l6ZW9mLi4uKEFyZ3MpID09IDEKKyAgICAgICAgICAgICYm
IChzdGQ6OmlzX3NhbWVfdjxzdGQ6OnJlbW92ZV9jb25zdF90PHN0ZDo6cmVtb3ZlX3JlZmVyZW5j
ZV90PEFyZ3M+PiwgRGF0YVNlZ21lbnQ+ICYmLi4uKSkKICAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwpAQCAtMjg2LDggKzI5
MCwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyKCk7CisgICAgU2hhcmVkQnVmZmVyKGNvbnN0IERhdGFTZWdtZW50JiBzZWdtZW50KQorICAg
ICAgICA6IFNoYXJlZEJ1ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHsgc2VnbWVudCB9KSB7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6
TWFwcGVkRmlsZURhdGEmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyKFJlZjxEYXRhU2VnbWVudD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjcmVhdGVGcm9t
UmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCk7CkBAIC0zNTksNyArMzY1LDcgQEAg
aW5saW5lIFZlY3Rvcjx1aW50OF90PiBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpleHRyYWN0RGF0
YSgpCiAKIGNsYXNzIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JF
X0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBw
b3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3Rk
OjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8
Y29uc3QgRGF0YVNlZ21lbnQ+JiYsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6
b3B0aW9uYWw8c2l6ZV90PiBuZXdTaXplID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VY
UE9SVCBTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25zdCBTaGFyZWRCdWZmZXJEYXRhVmlldyYsIHNp
emVfdCBuZXdTaXplKTsKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsg
fQogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnQtPmRh
dGEoKSArIG1fcG9zaXRpb25XaXRoaW5TZWdtZW50OyB9CkBAIC0zNzAsNyArMzc2LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgp
IGNvbnN0OwogI2VuZGlmCiBwcml2YXRlOgotICAgIGNvbnN0IFJlZjxEYXRhU2VnbWVudD4gbV9z
ZWdtZW50OworICAgIGNvbnN0IFJlZjxjb25zdCBEYXRhU2VnbWVudD4gbV9zZWdtZW50OwogICAg
IGNvbnN0IHNpemVfdCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsKICAgICBjb25zdCBzaXplX3Qg
bV9zaXplOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IGNiZTg3NzFhNDVkODYy
Y2I1YWIwNWVjYTM5OTkyN2UwNzgzOGY1NDAuLjEyNTMxOWJjYjM4ZTcxYmE3OTVhNmFmZDJkZDEz
ZmJkMTlhMmQzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaApAQCAtNDksNyArNDksNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRp
bmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxh
Y2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5tbQppbmRleCAyZWYyNzAxZmU2NzhiZjliOTJkYjIxMmJiZWE1YzkxNWEzZmMzYTJmLi5m
ODc3OTdjY2Q1MGI5YWI1ZWE0OGMyNTFlNDJmMDBiNWZiZjRmYWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlci5tbQpAQCAtMTQ1LDEyICsxNDUsMTIgQEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXMKICAgICBzZW1hcGhvcmUud2FpdCgpOwogfQogCi12b2lkIE5ldHdvcmtFeHRlbnNpb25Db250
ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lk
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb3BpZWREYXRhIHsgW05TRGF0YSBk
YXRhV2l0aEJ5dGVzOih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGhdIH07CisgICAgYXV0byBuc0Rh
dGEgPSBkYXRhLmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9y
ZTsKLSAgICBbbV9uZUZpbHRlclNvdXJjZSByZWNlaXZlZERhdGE6Y29waWVkRGF0YS5nZXQoKSBk
ZWNpc2lvbkhhbmRsZXI6W3RoaXMsICZzZW1hcGhvcmVdKE5FRmlsdGVyU291cmNlU3RhdHVzIHN0
YXR1cywgTlNEaWN0aW9uYXJ5ICpkZWNpc2lvbkluZm8pIHsKKyAgICBbbV9uZUZpbHRlclNvdXJj
ZSByZWNlaXZlZERhdGE6bnNEYXRhLmdldCgpIGRlY2lzaW9uSGFuZGxlcjpbdGhpcywgJnNlbWFw
aG9yZV0oTkVGaWx0ZXJTb3VyY2VTdGF0dXMgc3RhdHVzLCBOU0RpY3Rpb25hcnkgKmRlY2lzaW9u
SW5mbykgewogICAgICAgICBoYW5kbGVEZWNpc2lvbihzdGF0dXMsIHJlcGxhY2VtZW50RGF0YUZy
b21EZWNpc2lvbkluZm8oZGVjaXNpb25JbmZvKSk7CiAgICAgICAgIHNlbWFwaG9yZS5zaWduYWwo
KTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDY3OWFlOTMyOTUxN2Ux
ZjM5NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUuLmQ1ZmExMzMwYjE2MmNjY2NlMjJlOTQ3NTg2MTVh
NmUwMTEyMmQwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAtNDMsNyArNDMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBh
ZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRB
ZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
cGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggMWM5NjA0NzE2YjQyNjkzZDVl
NDZjMmUyM2U5NDFkYTAwYzgzZTRkZS4uYTY1MTE1Y2ViMTIyMjM2NzdmMDlhNGEzZGE5OWI0YWM3
MjY4ZGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTk0LDEwICs5NCwxMCBA
QCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiB9CiAK
LXZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6
OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVCghW21fcmVw
bGFjZW1lbnREYXRhIGxlbmd0aF0pOwotICAgIG1fcmVwbGFjZW1lbnREYXRhID0gW21fd2ViRmls
dGVyRXZhbHVhdG9yIGFkZERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilk
YXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXV07CisgICAgbV9yZXBsYWNlbWVudERh
dGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgYWRkRGF0YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXTsKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogICAgIEFTU0VSVChuZWVkc01vcmVEYXRh
KCkgfHwgW21fcmVwbGFjZW1lbnREYXRhIGxlbmd0aF0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuaAppbmRleCA4ODY5MWRjMjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVhYTM1MzM3Li5j
OTU4Zjg0NGRhYzE0Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaApAQCAtNTEsOSArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hl
UmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgotICAgIHZpcnR1YWwg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7IFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29u
dHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJy
b3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5p
c2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
LmNwcAppbmRleCBlYzBhN2FjZjQ3MzI2MWM3NGU3ZWVmZmFkYzljY2MzYzNlNTdmMjI4Li43NzA4
YTU4ZDJiNTgwOGI5NDAwMmQyMDVlOThhMjdiYjJjZTZmMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMzgsNyArMTM4
LDcgQEAgdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci12b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIFdlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3Vy
Y2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9h
ZGVyLmgKaW5kZXggY2RmMTQzZjNjM2NkZTk3MWZkNzlkY2Y3MzI4YmZjZDdiMzI2MDJkYy4uNjI2
N2JlMDBjNTRlZTYxNzAyZmI3N2IyYTVmYjU2N2IyN2ViOWZlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRl
OworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmdWxmaWxs
UmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJl
c291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGY5MjFmM2RhMGU2
OWIzMzk5NzdjOWUzZTQ5NjY3YTI4ZjVlOTVjYmQuLjcyNjQ3MjVjOGU1NjIyZGYzOGI0NWJjZDk5
YWM3ODc1NWI5ZWI4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3Jl
QVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5Rmlu
aXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
IAogICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgogICAgIG1fcGFyZW50
LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
Cit2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKCZyZXNv
dXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291cmNlLnJlc291
cmNlQnVmZmVyKCkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGly
ZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNl
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9h
ZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsg
bG9hZEZpbmlzaGVkKCk7IH0KQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIFBsYXRmb3JtUmVzb3Vy
Y2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQo
KTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1f
YnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZm
ZXIpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIu
Z2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDkzMDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIuLmI3YjA3ZmYx
NDU0ZDU2MWEzMDIxMDhhZTMyMjkxZThmODM0MzdiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAg
ICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNo
ZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZv
aWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lk
IGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRD
b250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFt
aW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktp
dFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpAQCAtMTEwNyw3ICsx
MTA3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAvLyB0aGF0IGZpcnN0IHBhY2th
Z2UgZGVsaXZlcnkgd291bGQgaW5jbHVkZSB0aGUgdGltZSBvZiBzZW5kaW5nIG91dCB0aGUgcmVx
dWVzdCBhbmQgZ2V0dGluZyB0aGUgZGF0YSBiYWNrLiBTaW5jZSB3ZSBjYW4ndCBkaXN0aW5ndWlz
aCB0aGUKICAgICAvLyBzZW5kaW5nIHRpbWUgZnJvbSB0aGUgcmVjZWl2aW5nIHRpbWUsIGl0IGlz
IGJldHRlciB0byBpZ25vcmUgaXQuCiAgICAgaWYgKCFzdGQ6OmlzbmFuKG1lbWJlcnMtPmRvd25s
b2FkU3RhcnRUaW1lKSkgewotICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyAr
PSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMg
Kz0gZGF0YS5zaXplKCk7CiAgICAgICAgIGRvdWJsZSB0aW1lU2luY2VTdGFydCA9IChXYWxsVGlt
ZTo6bm93KCkgLSBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSkuc2Vjb25kcygpOwogICAgICAg
ICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgIlIldTogZG93bmxvYWRlZCAlIiBHX0dVSU5UNjRfRk9S
TUFUICIgYnl0ZXMgaW4gJWYgc2Vjb25kcyA9fiAlMS4wZiBieXRlcy9zZWNvbmQiLCBtX3JlcXVl
c3ROdW1iZXIsIG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzLCB0aW1lU2luY2VTdGFydAog
ICAgICAgICAgICAgLCB0aW1lU2luY2VTdGFydCA/IG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5
dGVzIC8gdGltZVNpbmNlU3RhcnQgOiAwKTsKQEAgLTExMTUsMjAgKzExMTUsMTkgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIFJlZjxGcmEKICAgICAgICAgbWVtYmVycy0+ZG93bmxvYWRTdGFydFRpbWUgPSBX
YWxsVGltZTo6bm93KCk7CiAgICAgfQogCi0gICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0o
YXV0byYgc2VnbWVudCkgewotICAgICAgICBpbnQgbGVuZ3RoID0gc2VnbWVudC5zaXplKCk7Ci0g
ICAgICAgIEdTVF9MT0dfT0JKRUNUKHNyYywgIlIldTogSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwg
bV9yZXF1ZXN0TnVtYmVyLCBsZW5ndGgpOworICAgIGludCBsZW5ndGggPSBkYXRhLnNpemUoKTsK
KyAgICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1f
cmVxdWVzdE51bWJlciwgbGVuZ3RoKTsKIAotICAgICAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24g
Kz0gbGVuZ3RoOwotICAgICAgICBBU1NFUlQoIW1lbWJlcnMtPmhhdmVTaXplIHx8IG1lbWJlcnMt
PnJlYWRQb3NpdGlvbiA8PSBtZW1iZXJzLT5zaXplKTsKKyAgICBtZW1iZXJzLT5yZWFkUG9zaXRp
b24gKz0gbGVuZ3RoOworICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+
cmVhZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOwogCi0gICAgICAgIGdzdF9lbGVtZW50X3Bv
c3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50
KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAotICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoIndl
YmtpdC1uZXR3b3JrLXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdfVFlQRV9VSU5UNjQs
IG1lbWJlcnMtPnJlYWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5z
aXplLCBudWxscHRyKSkpOworICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVO
VF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMp
LAorICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIs
ICJyZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAi
c2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisKKyAgICBj
aGVja1VwZGF0ZUJsb2Nrc2l6ZShsZW5ndGgpOworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0
QnVmZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChkYXRhLmRhdGEoKSwgbGVuZ3RoKSwgbGVu
Z3RoKTsKKyAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZl
cik7CiAKLSAgICAgICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKLSAgICAgICAgR3N0
QnVmZmVyKiBidWZmZXIgPSBnc3RCdWZmZXJOZXdXcmFwcGVkRmFzdChmYXN0TWVtRHVwKHNlZ21l
bnQuZGF0YSgpLCBsZW5ndGgpLCBsZW5ndGgpOwotICAgICAgICBnc3RfYWRhcHRlcl9wdXNoKG1l
bWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgfSk7CiAgICAgc3RvcExvYWRlcklm
TmVlZGVkKHNyYywgbWVtYmVycyk7CiAgICAgbWVtYmVycy0+cmVzcG9uc2VDb25kaXRpb24ubm90
aWZ5T25lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IGJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0
YTQyYmU0ZTJiZDExYWE4NDMuLmRjYWM1OTk3YTYxMzVkMmFiNzU5YTdhZDJlYmIwNDM1MmQ1MTRh
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiwxMSBAQCBSZXNvdXJjZUhhbmRsZUNs
aWVudDo6UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxl
Q2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgYnVmZmVyLmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8m
JiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIsIGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGM0ZjA1NDg1
ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUuLmU0NDJjOTczNGMxMTk4NDkwYTFjNmNh
YzU3NzI1ZmQ1MTk2YjNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTQ0LDEzICs0NCwxNCBAQCBPQkpD
X0NMQVNTIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUHJvdGVj
dGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVT
dG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY1LDkgKzY2LDkgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5z
aWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFs
Qnl0ZXNUb0JlU2VudCovKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERh
dGFMZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgLyplbmNvZGVk
RGF0YUxlbmd0aCovKSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJy
b3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91
c0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YzA0MjEwYzVhNTEzYWMzZjU0NzE0NmQ5Zjg1
YzgyYmQ4ODEzNzc2Li4zMGI0YmIwZmRhZWY3YWUyY2M3NGFjNjA5ZjdiMDA5OTdlNWE2ZGNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50LmNwcApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJl
c291cmNlUgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQordm9p
ZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykK
IHsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRl
ckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4IDY4MzhlOWQ4Y2Y0Mzc5
NmQyZjM5NGJhMWY1NGYwOWQwYjY3ZThhYmQuLmM0Y2I3MmRjN2E2NTVmZDM2OTZhMzMzZmUwNWNk
ZWQ2Mjk3NmFmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKIGNsYXNzIFN5bmNocm9u
b3VzTG9hZGVyTWVzc2FnZVF1ZXVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN5bmNo
cm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTeW5j
aHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZSk7IH0KQEAgLTY2LDcgKzY4LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxl
Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNv
dXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAv
KmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGZjMjcyNTQwODkyYjhlMmNkNzdkZThmNmQ5ZTU0
YThjOGI1OTdmNjEuLjE5ODE0YTM2NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQoV2ViQ29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdU
b0RlbGl2ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUlu
ZGV4ICsgMSk7CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0Rl
bGl2ZXI7Ci0gICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpT
aGFyZWRCdWZmZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZl
cikuY3JlYXRlU2hhcmVkQnVmZmVyKCldOworICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVs
bHB0ciByZWNlaXZlZERhdGE6U2hhcmVkQnVmZmVyRGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNG
cm9tVGhpc1ZpZXdUb0RlbGl2ZXIpLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEo
KV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAg
ICAgICAgICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtM
b2FkTWV0cmljcyB7IH1dOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisg
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3Ry
aW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBk
YXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZl
ci5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFz
a3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aAppbmRleCBmOTA5NmVlMmU5ZjI0MmZmMDRkNzA1YzJhYTEwOTNhNTVlNTczNWRiLi5lYTRhOWJm
Mjk3ODI5ZWJkMDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aApAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5T
VVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBs
b25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25n
KXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+
JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7Cist
ICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhOwogLSAodm9p
ZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJily
ZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBs
ZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxl
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsK
IC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggNWUyZThlOGQ5ZDc2Njcy
YTI0MTRmNzZmNWMwOGYyNTllMDI5ZjUwNC4uM2M4YmUwOGMyOTM0ZTU0ZGEzYjc0OWNhNmRhMzRl
ZGE5NmRjOWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBz
aG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsMTMgKzY1MiwxMyBAQCBib29sIFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlh
UmVzb3VyYwogICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNo
ZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpXVEZNb3ZlKGJ1ZmZl
cildOworICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpidWZmZXIu
Y3JlYXRlTlNEYXRhKCldOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0Ns
aWVudDo6cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC05MzEsMTUgKzkzMSwxNCBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwog
ICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRl
bnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YQogewog
ICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVz
b3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1Nl
bGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAg
IGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7Ci0g
ICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6
ZSgpOworICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IFtk
YXRhIGxlbmd0aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURl
bGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5z
ZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCi0g
ICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9u
Z1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJv
bmdTZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOm5zRGF0YS5nZXQoKV07CisgICAgICAgICAgICBb
ZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCku
c2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgp
IGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0KCldOwogICAgIH1dOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHAKaW5kZXggZjMyM2FmMjY0MDE2YjY2MzkzMTFhYzIzMjQ2ZWM1ZWQ4MGEzOTU0NS4uM2JkMmNj
NzQyODZlYzQ2Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApA
QCAtMjQzLDcgKzI0Myw3IEBAIGJvb2wgQ3VybENhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVkUmVzcG9u
c2UoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlJiBqb2IsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBDdXJs
Q2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI1NSwxMSArMjU1LDExIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwKICAgICAgICAg
aWYgKGl0LT52YWx1ZS0+Z2V0Sm9iKCkgIT0gJmpvYikKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBpZiAoIWl0LT52YWx1ZS0+c2F2ZUNhY2hlZERhdGEoZGF0YSwgc2l6ZSkpCisgICAg
ICAgIGlmICghaXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsKIAogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IHNpemU7CisgICAgICAg
ICAgICBtX2N1cnJlbnRTdG9yYWdlU2l6ZSArPSBkYXRhLnNpemUoKTsKICAgICAgICAgICAgIG1f
TFJVRW50cnlMaXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7CiAgICAgICAgICAgICBtYWtl
Um9vbUZvck5ld0VudHJ5KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCmluZGV4IGM5ZTI5ZDgw
OTcwYzQwNDZlNzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMuLmI2NWI5NjNiNjhlNmE2OGQ5ODE5M2Fh
ZjczZjEwODAzZDk3ZmNkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5k
bGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUhhbmRsZSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7IC8v
IFNhdmUgZGF0YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSYpOwog
ICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IDM0OTQ0
NTkyNTRhYzkzZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUuLmFhZjBjOGQ5NDA3MDU1ZDY4YTA1
NWZiMzUwNzk2N2RlNGMwMDg2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9p
ZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVl
c3QsIEN1cmxSZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJl
Y2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0
JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX2xpc3RlbmVyKQotICAgICAgICBtX2xpc3RlbmVyLT5k
aWRSZWNlaXZlRGF0YU9mTGVuZ3RoKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9saXN0ZW5l
ci0+ZGlkUmVjZWl2ZURhdGFPZkxlbmd0aChidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJs
RG93bmxvYWQ6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgTmV0d29ya0xv
YWRNZXRyaWNzJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmgKaW5kZXggY2RlNDQ0NTc3NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZi
ZmQ5YmI4MS4uYTEyMDc1ODM0OTNmNzgzMzc1NmQzYzQ5ODdjZjVjOTVkZmE5NzljNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
aApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IEN1cmxEb3dubG9hZExpc3RlbmVyIHsKIHB1YmxpYzoKQEAgLTcyLDcgKzczLDcgQEAgcHJpdmF0
ZToKICAgICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9u
ZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERp
ZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVEYXRh
KEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
dXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNl
RXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5jcHAKaW5kZXggMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0ZC4uZDFl
NTg2MjRhYWVlMmVjZTgxMjlkZDM0ZWE5ODY2MjZlNmNkZjA2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcApAQCAtMTE5LDEyICsxMTksMTIgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11
bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAog
fQogCi12b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9z
ZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZl
ci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJv
Y2Vzc0NvbnRlbnQoKSkgeyB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA5YTFhMWJiZDE5
MzhhMTRmNjlmY2NlZTNmMGY4OWI5N2E0YTIxODc0Li41YzA4YmNjNWViM2U0YmJjYzAyOWI0NzY3
ODY4ZjQzZTJmOTVjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Owog
Y2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVs
dGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsK
ICAgICB+Q3VybE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBjODEzODg2YThkNWM1ZmE2
YzEyZDE0MTMzMTkxMDFhZjI1MDJhMmFkLi5kZjc2MzdkZTlkOWZmMmI2YjEwODU1ZDBjNTc3MTI1
NTM0YjJhNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTMzLDcgKzMz
LDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1cmxNdWx0aXBhcnRI
YW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVy
RnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChj
b25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFy
dEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYmFjYjJiNTUwYjI4NDEzMWQxYWMyMGFh
NjYzODg2ZmUyMmZlN2Y5OC4uZDBlZjBlNzExNjJiNTM2M2FkNDI1NDE3ZDg1ZWM3MjM4ZjNmNjJi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRl
ciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1z
aXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQo
KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00MTEsNyArNDExLDcgQEAgc2l6ZV90IEN1cmxSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiAgICAgICAgIHJldHVybiBDVVJMX1dSSVRFRlVOQ19QQVVTRTsKICAgICB9CiAKLSAgICBhdXRv
IHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0g
YnVmZmVyLnNpemUoKTsKICAgICBtX3RvdGFsUmVjZWl2ZWRTaXplICs9IHJlY2VpdmVCeXRlczsK
IAogICAgIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGJ1ZmZlcik7CkBAIC00MjAs
OCArNDIwLDggQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIGlmIChtX211bHRpcGFydEhhbmRs
ZSkKICAgICAgICAgICAgIG1fbXVsdGlwYXJ0SGFuZGxlLT5kaWRSZWNlaXZlRGF0YShidWZmZXIp
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGll
bnQpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNsaWVudC5jdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihyZXF1ZXN0LCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgY2FsbENsaWVudChbYnVm
ZmVyID0gUmVmIHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVxdWVzdENs
aWVudCYgY2xpZW50KSB7CisgICAgICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0
YShyZXF1ZXN0LCBidWZmZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CkBA
IC00NDQsMTYgKzQ0NCwxNiBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJv
bU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVk
T3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWNlaXZlQnl0ZXMg
PSBidWZmZXItPnNpemUoKTsKKyAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci5zaXplKCk7
CiAKICAgICBpZiAocmVjZWl2ZUJ5dGVzKSB7Ci0gICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9
IFdURk1vdmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50
JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlQnVm
ZmVyKHJlcXVlc3QsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZl
ciA9IFJlZiB7IGJ1ZmZlciB9XShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGll
bnQmIGNsaWVudCkgeworICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1
ZXN0LCBidWZmZXIpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IGE2ZmIzMTU3NjZi
YTVjMmYzZWEzMmI5ZWY1MWViMDAzZThjYjg5ZDAuLjkyYjc0Njk3YmMzMTc1Y2UwY2RhZGYxNTFm
YTI1NDNhMDNlMTE5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBD
VVJMKiBzZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShj
aGFyKiwgc2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmlu
ZyYmKTsKLSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRD
YW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RDbGllbnQuaAppbmRleCAzNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2
YWU3Li43MzAzM2YwZWY0ZWI0ZGYyMWFiNzY0NjNjYzM5ODE5YjI4Njc4NDliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RD
bGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxS
ZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7
Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1Rv
QmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZENvbXBs
ZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYs
IENlcnRpZmljYXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHAKaW5kZXggMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkxOTc5YzA4ODg5YThhNi4u
Mzg5N2UwMWM2ZDA3NjZkYWNmM2UxOWIyMzczMzZmNWI1NWNlNTI2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNSBAQCB2b2lkIEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0
JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1
cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JD
bGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY29udGlndW91c0J1ZmZl
ciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5n
bGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFu
ZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgQ3Vy
bENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZl
cik7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBidWZmZXIsIGJ1
ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJs
RGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCBkYWYwYTU5YTRlNTg2ZDcxMTRh
YmI0ZTVlZjljNTRmNmE4YmVmYzcwLi4wMjRiYzRlOWFlMzFkZjI1YThmOWI3MGNiYTI4MWZhY2Vh
YzhjZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtMzgsNiArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJl
c291cmNlSGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUgZmluYWwg
OiBwdWJsaWMgQ3VybFJlcXVlc3RDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01
Myw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1
ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNl
KEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZvaWQgY3VybERpZFJl
Y2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBT
aGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVz
dCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0
aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU3RyZWFtLmNwcAppbmRleCBjMDcwNGYwY2RkNjQ0MjM3M2Y3YjcwYmZlNjE1MzliZjViMzdk
NjI1Li4zNjY1OGY5MWRjOWQ2NzIzMGIyMzllNDk3YzAwMDBhYzYyYWFlOTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBA
IC05LDcgKzksNyBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCiAgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDdXJsU3RyZWFtLmgi
CiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKIAogI2lmIFVTRShDVVJMKQpA
QCAtMTI5LDEwICsxMzAsMTAgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAg
IGlmICghbV9jdXJsSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlY2VpdmVC
dWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4oa1JlY2VpdmVCdWZmZXJTaXplKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gcmVjZWl2ZUJ1ZmZlcihrUmVjZWl2ZUJ1ZmZlclNpemUpOwogICAg
IHNpemVfdCBieXRlc1JlY2VpdmVkID0gMDsKIAotICAgIGF1dG8gZXJyb3JDb2RlID0gbV9jdXJs
SGFuZGxlLT5yZWNlaXZlKHJlY2VpdmVCdWZmZXIuZ2V0KCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwg
Ynl0ZXNSZWNlaXZlZCk7CisgICAgYXV0byBlcnJvckNvZGUgPSBtX2N1cmxIYW5kbGUtPnJlY2Vp
dmUocmVjZWl2ZUJ1ZmZlci5kYXRhKCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZl
ZCk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykgewogICAgICAgICBpZiAoZXJyb3JD
b2RlICE9IENVUkxFX0FHQUlOKQogICAgICAgICAgICAgbm90aWZ5RmFpbHVyZShlcnJvckNvZGUp
OwpAQCAtMTQzLDggKzE0NCw5IEBAIHZvaWQgQ3VybFN0cmVhbTo6dHJ5VG9SZWNlaXZlKCkKICAg
ICBpZiAoIWJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIGRlc3Ryb3lIYW5kbGUoKTsKIAotICAgIG1f
c2NoZWR1bGVyLmNhbGxDbGllbnRPbk1haW5UaHJlYWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0g
bV9zdHJlYW1JRCwgYnVmZmVyID0gV1RGTW92ZShyZWNlaXZlQnVmZmVyKSwgbGVuZ3RoID0gYnl0
ZXNSZWNlaXZlZF0oQ2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICBjbGllbnQuZGlk
UmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKTsKKyAgICByZWNlaXZl
QnVmZmVyLnJlc2l6ZShieXRlc1JlY2VpdmVkKTsKKyAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50
T25NYWluVGhyZWFkKG1fc3RyZWFtSUQsIFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVjZWl2ZUJ1ZmZlcikpXShDbGllbnQmIGNs
aWVudCkgeworICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlcik7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFN0cmVhbS5oCmluZGV4IDRmNTliMjBlOGRiMjc5MDM5OTRiMzMxNTRjZTY0YjA5OTRm
M2EwYmEuLmU4YTMyYzI2NDYxYjQzMDhlYTIyN2M2ZGY4Yzk3MjQzOTkwNWQwYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaApAQCAt
OSw3ICs5LDcgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwogICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEN1cmxTdHJlYW1TY2hlZHVsZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTb2Nr
ZXRTdHJlYW1FcnJvcjsKIAogdXNpbmcgQ3VybFN0cmVhbUlEID0gdWludDE2X3Q7CkBAIC00Niw3
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRP
cGVuKEN1cmxTdHJlYW1JRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEo
Q3VybFN0cmVhbUlELCBzaXplX3QpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBTaGFyZWRC
dWZmZXImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwg
Q1VSTGNvZGUpID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCBi
ODA0ZmRlMDk3M2JiZmIyODMzMWNmN2MzYTFmMjBiMDQzZTc0ZmU4Li4zNjZiMDU5YzAyODA0YjE5
OWM4ODZhOWMyYzY3MjczZjkyNGYyZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAg
LTU5LDkgKzU5LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRm
b3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2VuZFBl
bmRpbmdEYXRhKCk7CiAKKyAgICAvLyBDdXJsU3RyZWFtOjpDbGllbnQKICAgICB2b2lkIGRpZE9w
ZW4oQ3VybFN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKEN1cmxTdHJlYW1J
RCwgc2l6ZV90KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwg
Y29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShD
dXJsU3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFp
bChDdXJsU3RyZWFtSUQsIENVUkxjb2RlKSBmaW5hbDsKIAogICAgIGJvb2wgaXNTdHJlYW1JbnZh
bGlkYXRlZCgpIHsgcmV0dXJuIG1fc3RyZWFtSUQgPT0gaW52YWxpZEN1cmxTdHJlYW1JRDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggNGI5NDkxYzExNTQzZjJi
NjBmMTJkMzZlOWU2YTBjYmFhZTM0YTcyZS4uYThmNTdhNzJkMGVhY2NhNzc1NWJlODRmY2FhMWM5
YmYxMDk1OGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCiAjaW5jbHVk
ZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCkBAIC0x
MDQsMTIgKzEwNSwxMiBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFNlbmREYXRh
KEN1cmxTdHJlYW1JRCwgc2l6ZV90IGxlbmd0aCkKICAgICBzZW5kUGVuZGluZ0RhdGEoKTsKIH0K
IAotdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFt
SUQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLCBs
ZW5ndGgpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmRpZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSBlcnJvckNvZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNi
NWRlYzI1Ny4uMGZlNjVhMjllNjM2MTZkYjQyZjdjOWVhMWQxODUyMjFjMjAwNDBjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZD
b3VudGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDMxNWUwNjUxNTMwZGNk
YjAyODAxNjU0Yjc1N2Q4MTQ3M2MyMGZkMzAuLmFlNzE1NWVjZWYzNWQzZTE4ODhkOTE2NTY0NTdl
MzgxMTU5ZGY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTMwMCw3ICszMDAsNyBAQCAtICh2b2lk
KWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6
KE5TRGF0YSAqKWRhdGEgbAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBw
cm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdv
dWxkIHVzZQogICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6
ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlk
UmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSks
IC0xKTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShtX2hhbmRs
ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKICAgICB9OwogCiAgICAg
W3NlbGYgY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOldURk1vdmUod29yayldOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDhkMDU3YmJiNWYxN2MyMDQ1YmZm
OTA2ZmY1YWRhODVmMTA0MjkzMC4uZjdmMjY2Y2U4ZDgxOTEwNjBjODU3YTJmOGE2YWQ5ZmRlYmQ4
MTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01NDYs
OCArNTQ2LDggQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJh
bWUtPmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRl
cigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1w
dHkgZG9jdW1lbnQKLSAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2Vn
bWVudCkgewotICAgICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRl
cigpLmFkZERhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgZGF0
YSgpLT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7Cisg
ICAgICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0
YShidWZmZXIpOwogICAgICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPndyaXRlcigpLmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwCmluZGV4IDA1OWYzYTM4NmI2Y2Y1ZmE3OWIzYzE4OTcwMTUzMTNmN2Nk
YjRlZjIuLjFkZTI1M2M5MmIxYjgxZTcyYWI3MGY5YmI1NjhkNDFmZGUzNzRlMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xMDAsNyArMTAw
LDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpB
ZnRlclJlc3BvbnNlKTsKIH0KIAotdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25z
dCB1aW50OF90KiwgaW50KQordm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKQogewogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6
OkFmdGVyQWRkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmgKaW5kZXggNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFlNzRmNzZiNzU5My4uYjgz
OTdiMzBkOGQ4NWI3YmZmYjM2MjU0NjZmMDY4ODhjMTgyMTdlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3Zl
cnJpZGU7CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgp
IGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA4MmEy
YThjNGIxOGFjY2U3OThiMjdjMmM4ZDAwOTU4OWZmNzVjYmE4Li40ZThhYjc4MWE0MDYxYWIxOGM1
MDMzNzNiZGEzOGY2YzU1ZDhhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0xMTUsMTIgKzExNSwxMiBAQCB2b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUgogICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogfQogCi12b2lk
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKG1fZXJy
b3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLmFwcGVuZChkYXRhLCBk
YXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV29ya2Vy
Rm9udExvYWRSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmlu
ZGV4IGRhYjczZmM3YjFhOTNlZDRlM2ZlYjMxZDY3MDk4ZDk5YjUxNzZhMzkuLjdjYmFhOGU1NTEw
YzhjNGZjYWYyZWI5MmM2ZjczYjNkMmExMmM2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNXb3JrZXJGb250TG9hZFJlcXVlc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCBiZjVhNDRmZTM0
OGQyZmZjZTkxNmZiMTk0OTE1ZTY3YmZkYTlhZWMxLi5jZDI2ZWNkNmEzN2E3ZWQzOWZmNzFlZGRh
MzVlOGVmYTkwYjM3YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwK
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25z
ZSk7CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuKQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKIHsKICAg
ICBpZiAobV9mYWlsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMiwxMyArMjEyLDExIEBAIHZv
aWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuKQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYtOCIpOwogICAgIH0KIAotICAgIGlmICgh
bGVuKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpKTsKIAotICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRl
Y29kZShkYXRhLCBsZW4pKTsKKyAgICBzaXplX3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXpl
KCk7CisgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCks
IGxlbikpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGVhYWJlMWVhNWQxM2IzM2Y5YzNjYzY2ZGQ0
OTU1N2ViNjllMzdlZmMuLjBiYzNhMDI1YjM2NzllMjU2MzA4NjI0ZWVlYmE4OWRjY2M0NWM4MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtNzks
NyArNzksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25z
dCB7IHJldHVybiBtX2Vycm9yOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4
IGZiYTM2MzIyYjI5YTZkNWI3OTdiMzllZGMzYzNkMTcxMjRiM2I1YmMuLmNlMzcwOTY4OWQ5ZjA5
MjFlMDkwM2EwMzc3ZGIyNjhhNTQ1MGIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJl
Y3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3Jt
RGF0YT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDliMTEyYjlkYjJjZDg0ZDAzMmY1OWRhZmE4ZThl
MzhlMDcwZTUzZjcuLmRjM2FlYThjYWQ5ZDA5NmI0MmJjYTY1YjI2MTIzMmYxMzc0M2QxZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTAzNCw3ICsxMDM0LDcgQEAg
UmVmPFRleHRSZXNvdXJjZURlY29kZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVEZWNvZGVyKCkg
Y29uc3QKICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWlu
IiwgIlVURi04Iik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiB7CiAg
ICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNTIsMTcgKzEwNTIsMTYgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbikKICAgICBpZiAodXNlRGVjb2RlciAmJiAhbV9kZWNvZGVyKQogICAgICAgICBtX2Rl
Y29kZXIgPSBjcmVhdGVEZWNvZGVyKCk7CiAKLSAgICBpZiAoIWxlbikKKyAgICBpZiAoYnVmZmVy
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxlbiA9PSAtMSkKLSAgICAg
ICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKKyAg
ICBzaXplX3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CiAKICAgICBpZiAodXNlRGVj
b2RlcikKLSAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2Rl
KGRhdGEsIGxlbikpOworICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVy
LT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1
ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5k
KGRhdGEsIGxlbik7CisgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChidWZm
ZXIpOwogICAgIH0KIAogICAgIGlmICghbV9lcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAppbmRleCAyZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4NmJhMmQ4MDM3NzVhLi42
YmYxOWY4MmJkMmZmNzY3MDdkYTQ1NzE0NzUwN2U5OTFkMjQ2NWQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaApAQCAtMTYyLDcgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhy
ZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgbm90aWZ5SXNEb25lKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IDYx
N2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYuLjdmNTEyYzZjMTFhOGU3MTA4
Y2YwMDYyYjU4NGQyN2I1ODkwOGQxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2Uu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApAQCAtOTYsMTAgKzk3LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNl
bnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAg
IG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRh
UmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7Cisg
ICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEpOwogfQogCiB2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2U6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IDViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3
MThhMTY3Mzc1ZTcuLjk1MTA2ZjY3MjI3M2I0NWYwYTI0YTQ3YTFhMmJkZDE0MDllMGY0MzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2UuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0
d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29u
dGludWVQb2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAg
ICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2
ZWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2
b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQg
bG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuaAppbmRleCA3MWZkMDIyMjliYmIxYzU3MzI2ZmRmY2ZlMjZjMTFmNzYxYWJjZjcyLi4w
NTRiODkzZTExMTEwZGNmOWE3MDAyNTJmNGY3OTViMDFhNTg3YjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
aApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTU4NjA5
MWVhMDA0MWI2ZjE1ODY5ZDQyYmJkYTcyNDMyOTc2OTBlYy4uYmE4ZDA0OGY2NWRjMzM5ODRmMGNk
NDc2MzVhYjkxMDE4NzliZDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTIwLDcg
KzEyMCw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
UG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
cjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
Cit2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0co
ImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCA1MDVhNGVmZTU3
MWQ0ODllNTBhOTg4YmViODE4NWI3ZmVhYjNkYjEwLi4wY2IzMTVmZDhmZjUzMTk5MTU3ZGU3OGY4
NDUyZDcxYzRmNWUyOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlh
dGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tl
ZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrLmgKaW5kZXggNGI5ZWU1NzRiOTJjN2MzNzE3YTRiYzI4MTlhNmJlM2ExOTA2NTcxNS4uZjQ3
OWUwOTAyYjIxNzkyOTU1ZDM3NjgxNGIyMWM4OWZmNTVkYjU4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5k
ZXggOGMxMDRkODE2MGI3YWFmZDA5OTcxNWRhNmQ0ZTZmN2M0NjM3ZmEwOC4uNjBiNjlhOTM2YmI3
OGRmMjUxMDc0OWM3NTRmZTZhYTIyOTNmZTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI1NCwxMSArMjU0LDEwIEBAIHZvaWQgTmV0d29y
a0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1v
dmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0
d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUg
ZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgotICAgIGF1
dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwotICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVC
dWZmZXIoV1RGTW92ZShidWZmZXIpLCBzaXplKTsKKyAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNl
aXZlQnVmZmVyKGJ1ZmZlciwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6
OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBlNmE3NjExNTk2MmI5NjU5
ZTdiZmU3OGM2ZjRkYzZmNTMxMmIzY2JlLi4wZTRjMWFlNDkyM2MzMzdmNWNmOWIwYTQwOGI1YTg4
MjI5ZjU5NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdv
dGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1
aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxv
Y2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oCmluZGV4IDM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQz
OWUuLjhhMjg1ODI2MTEzZjlkOGVlNjYwZGI2ODhiM2M1MzkzZmY5N2IyZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM2YWNjNjMxNDVmNDA1YjE5NTVkMzM1NDBk
YWE3MDhmOWE2MjkzNDEuLmU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTg2MywyOSArODYzLDI5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29u
dGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1JlY2Vp
dmVkKQotICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0
ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci0+
c2l6ZSgpOworICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFy
dGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXIu
c2l6ZSgpOwogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAogICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5
IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJp
ZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVy
U2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdl
dCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVy
LnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09y
aWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qg
b24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRs
ZS4KLSAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsK
KyAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXIuc2l6ZSgpOwogCiAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLmFwcGVuZChi
dWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAg
ICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0
aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTEyNzMsNyArMTI3Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZm
ZXJpbmdUaW1lckZpcmVkKCkKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0g
MDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlz
U3luY2hyb25vdXMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGNmMTBjZjBlNzFhMWJjNjU1NDBlODdkNmJh
NGMxYjljODU2YzBhMWQuLjgxN2FlZjI2YzgzNmMzNGE3ZDQ0ZWU3Y2M5NWVkZDlhMjk4ZDZhNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxsb3dl
ZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9j
a0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9p
ZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZv
aWQgc2VuZEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKIAogICAgIHZvaWQgY29uc3VtZVNhbmRib3hFeHRlbnNp
b25zKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU2FuZGJveEV4dGVuc2lvbnMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggYmMyYzMzN2U0ZWVlMDFhZjgz
ZTEzNjcyMzE3YTlhOWVhYmM3YzZmOC4uZjBlZmQwNGJiMmUxOGY2ZjNjYmMxNjNmYWYyM2RhMDQ2
NmJlZTU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAg
LTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7
IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVE
YXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmgKaW5kZXggZTc4MDhkOGU2NTU4MmY3OTM4ODgyOGQ1MTc1OGNiMTkzY2Y1
NWZjNy4uYjIyNWM0N2I5NGFmYTBiNDRlZGMyNjcwZGZjNThhZDdhZmM5MTQxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggMTdkNDc5MDdh
M2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYi4uYWFhZTJiZmJkZjgzYTM5YWNlYzA2M2Zl
YjI0NDYxNmRjODQ4ZWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VD
b20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZv
aWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0
VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5k
ZXggODU4MDhlMTIxYjY4Y2E4YjczZTI1MThkMTkzYWIzOTU4MWVhZDFlNy4uOGM2YjBkZWVkNjZj
NTEwMTliZTg5ODRlZDViODdlMGMxZDc5MGY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAK
aW5kZXggMjVkNGUzN2Y5NDU0YmVlMzJmMDRkOGNjOGM0NzFkNWQzZjdlZDgyYi4uOGM4ZGMzNmIx
ZTUzOTM4ZjgxZWI0YWJhYWZmMDE5MGYyYjU0ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRv
d25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJF
cnJvcnMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCkBAIC0xNzMs
NyArMTc0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpzdGFydCgpCiAgICAg
ZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKK3ZvaWQgU2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrLmgKaW5kZXggYWI1OWVhZTUyNjY1MzA2MjEyYTI4ZTkzMjNhMmI4
YjRmZmUwYzc4Zi4uYjg5YWIzZWJkNzYyZjY4MTJhNWU5N2JmZjY5MGJhOTBmMDI1N2ZjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJEb3dubG9hZFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCkBAIC0zNyw2ICszNyw3
IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBT
aGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDcgKzY3LDcg
QEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrKE5ldHdvcmtTZXNzaW9u
JiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgRG93bmxvYWRJRCk7CiAKICAgICAvLyBJUEMgTWVzc2FnZQot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7CiAgICAg
dm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2su
bWVzc2FnZXMuaW4KaW5kZXggMWQzYmZiN2NjMzEwOTc5OWNjODAwMWJiYTcxZDg5YzBmNmYyZDky
Zi4uNTBkMmI0MmE3MWIwZWRhYjc5ZmJjZTlkZGI5ZjE5OTgyZGI1MzU5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJE
b3dubG9hZFRhc2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KQEAg
LTI0LDcgKzI0LDcgQEAKIAogbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckRvd25sb2FkVGFzayBO
b3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Ip
Ci0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVj
ZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2go
KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDRlNzkx
OWIzZGRjMDJhZTE0ZDBlZDk2ODRiOGM2OGJiNmYyOGE0MzQuLjRmNzhiOWRmNTRlNWU2Nzc4Nzg0
MTM1YTI3YTAzZGJjNjI5YmZkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAt
MjI1LDcgKzIyNSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6cHJvY2Vzc1Jlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuCiAgICAgICAgIG1fbG9hZGVy
LnNldFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVy
bjsKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmxvYWRC
b2R5RnJvbVByZWxvYWRlcigpCiAgICAgICAgICAgICBkaWRGaW5pc2hXaXRoTWV0cmljcyhtX3By
ZWxvYWRlci0+bmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSB7IGNodW5r
LT5kYXRhKCksIGNodW5rLT5zaXplKCkgfSwgbGVuZ3RoKTsKKyAgICAgICAgZGlkUmVjZWl2ZURh
dGEoUmVmIHsgY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJj4oKmNo
dW5rKSB9LCBsZW5ndGgpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suaAppbmRleCBjMzQ1ODAyNjdmYjMyNjllNmRjYmRjZWZjMzRkMDY4MmM2YTA4ODZj
Li41MjI1ZTU0NTk5OTUxZDhmODFjNzBhZjgyZWJiYTI2ODllMzUwMDY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIElQ
QyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVm
ZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtOTMsNyArOTQsNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU2hvdWxkU2V0U291
cmNlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgaW50NjRfdCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRG
aW5pc2hXaXRoTWV0cmljcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KaW5k
ZXggMThlNjI5ZjBkMTQ2ZWQyZDQyOWRiMWJhMjg3MDFlODNmYjk2ZTYyZi4uN2RiNTNlOWJkMDM4
MDQ1NDczYTI1YWYzN2Q0N2MxOTU3OTVlMjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KQEAgLTI3LDcgKzI3LDcgQEAgbWVzc2Fn
ZXMgLT4gU2VydmljZVdvcmtlckZldGNoVGFzayBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWls
KFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgRGlkUmVjZWl2ZVJlZGlyZWN0UmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKICAgICBEaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLSAgICBEaWRSZWNlaXZlRGF0YShJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKKyAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRSZWNlaXZlRm9ybURhdGEoSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSBkYXRhKQogICAgIERpZEZpbmlzaCgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA1ZDliZDMzMzM5
MjExY2ExY2Q0NDdiODc5MmY1NDYxZWE4N2VkZGY0Li5lNTY1NGNjMzEzOWI0OWQ2MWE5ODUxM2Nk
MDE2YmVjZjczOWJiY2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHZvaWQgU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNr
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgICAgIG1fYm9keUNhbGxiYWNrKFJlZlB0ciB7ICZidWZmZXIgfSwgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1l
dHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5oCmluZGV4IDY3YWJjNTVjNjBmZjI0ZTM5ZGQwNGVjYzUwMjFiNjA1ZWU4YmViYjEuLjVm
ODhhYzJhYThkZjk2MjhkNGM1OWRkZDA5NGYwY2VlMWQyMWE3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC0zNiw2ICszNiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTQsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNr
JiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAg
ICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9
CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJG
b3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuY3BwCmluZGV4IDdhMjYyMjE5ZGU3OGIyMzVkMTI1YTkyYjZlMjM2ZDMzMjYyZjdh
MjcuLmQ5ZDc0NzUyNTMyZjE4OWViMWJlMmMwM2Q3ZTI5ZTg1OWU4OTZlNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcg
KzE3Nyw3IEBAIFJlc291cmNlRXJyb3IgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnBy
b2Nlc3NSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
dm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAg
ICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAgLTE4Niw4ICsxODYsMTEg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAg
ICB9CiAKLSAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2Ny
aXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc2l6ZSkpOworICAgIGlmICghYnVmZmVyLmlzRW1wdHkoKSkgeworICAgICAgICBidWZm
ZXIuZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgIG1fc2Ny
aXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXpl
KCkpKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5o
CmluZGV4IDQ0ZmMwNjg1ZmEwZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEuLjdlODE4ZjM0
MTNkYTI5Zjg2MWUxMDAzOTkxZThkNTM4OTIzNDZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggNDFkODIzNTAyNDc0N2I2ZmM0YTNhYzU0
OGUxMzM0ZWQ2Y2I1ZWY3YS4uODE0ZWIzMjBkNGU3NDhhMjlhZTA5MTM1YWZjMWRhNWYzNzUxNWVm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTIwLDE1ICsxMjAs
MTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xp
Y3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5
IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3Qg
bWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmICht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1D
YWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVu
ZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXpl
KCkgKyBidWZmZXIuc2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYy
YTQ4YThlY2FlMmE4YS4uOWFkY2E2MDVlNzI4MGJiN2IzNGNlNzQ0ZDg3ODhiYmI0NDg5MjRlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggNDE2NjhhNWIxY2Q3Mzg2OTY3Yjhm
ZDk3M2U5NjczMmVjYTkwN2VkYy4uMDc3MmFmMWE4NmQyMjQxN2JmMTFmMTZiZDZiN2I1ODBmZTU3
YTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5T
TXV0YWJsZVVSTFJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJh
YmxlRG9tYWluOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExT
KGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
TmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
OwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYpOwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9h
ZChEb3dubG9hZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNDc3MWZkZTkyMGQ2Yjk4ZTgz
ZmMyOWRkM2FhZjk3YTBhNmQ5YTg4MC4uNjQ5YjVjYTc4YzY4NzVlY2RlMGQzZDQzNmY5NTkwZGI1
MTc5ZDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC00NDMsMTIgKzQ0MywxMiBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJy
b3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNr
Q29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgV1RGRW1pdFNpZ25wb3N0KG1f
dGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUo
KSk7CisgICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2Vp
dmVkICV6ZCBieXRlcyIsIGRhdGEuc2l6ZSgpKTsKIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29j
b2E6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5j
cHAKaW5kZXggODQ2NjllMjA5ZDc3YmY1MmEzNmFmZTJhN2RhYjI1MmE2OTAwZGNmNy4uMTNmY2M3
YmQ0OGE1NWEwOTM5MTI5MjZiYTQ0ODRjZjVlMzU1MTMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVT
aXRlSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxwYWwvdGV4dC9U
ZXh0RW5jb2RpbmcuaD4KQEAgLTE3MiwxMyArMTczLDEzIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
Q3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJl
c3BvCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Rh
dGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1
cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9
PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1f
Y2xpZW50ICYmICFpc0Rvd25sb2FkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlk
Q29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBuZXR3b3JrTG9hZE1l
dHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya0RhdGFUYXNrQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuaAppbmRleCA0NWJlNWNlMTg0MzI1MjcxZDVjMDgwZGQzNGYxZWU0
YTE2NjQyYTFmLi5lNTU4NjRhOTVmN2JjYmMwODVjNDY2MjhiZmYwNTg1NzM1NzMyODZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0
YVRhc2tDdXJsLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ3VybFJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNjgsNyArNjksNyBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVx
dWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVl
c3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRT
ZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGN1cmxEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYmKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
CmluZGV4IDE3ZjA4YzI4ZWExMjViNTUwOTkzZWVkMjRkNTk2M2I4NTEwYTExNDEuLjU3YjE0NmU1
OGU3YTlkYTcwMjZjOWRlZTUyMDM5NTUxYWRhYjcxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGUxMjY0Y2UyMWJhNTdmMmE0Mjc0OGUzM2Ex
ZGFkODhhMGUyNThiYzIuLmQ3NjdmYzA2YjM2ZjE1NmZmMzFjMzgzZTY0M2Q0MzQ0YzIxN2FhYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0x
NjgsNyArMTY4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0
aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUK
K2F1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC0xODcsMTEgKzE4NywxMSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRQogICAg
IG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIG1fc3lu
Y0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5k
KGJ1ZmZlcik7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJl
Y2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9h
ZGVySUQsIGJ1ZmZlci5nZXQoKSksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVt
ZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dl
YlBhZ2VJRCk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBmNmZmNDZlZWE1ZjI5MGI3
YjdlM2ZlNTkyMWRmOWYxOTRiYWNkMTE3Li5jMzIzMDY5YjFjYzAzMWYwMjViMjJjODU5YTM1NDE4
OGZkZDIzNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5o
CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3Jt
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
KTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRp
b25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBs
ZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCmluZGV4IGI1MTNhMjY4MDhlYWExOGUzN2Y0ZmRm
MDRhMjNkMjk2MGIyNzNiMmMuLjkyMzRiNWM2NTNmOTFlYmE5MTBmYmRmOWJlMWUyMmEwMmMxMWM2
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKQEAgLTcyLDIwICs3MiwxNyBAQCB2
b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgdW5zaWduZQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFTZW50KG1faWQsIGJ5dGVzU2VudCwgdG90
YWxCeXRlc1RvQmVTZW50KSwgMCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5
OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Ojpk
YXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFy
ZWRNZW1vcnk6OmFsbG9jYXRlKGxlbmd0aCk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFy
ZWRNZW1vcnk6OmNvcHlCdWZmZXIoYnVmZmVyKTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzaGFyZWRNZW1vcnlQdHIgPSBzdGF0aWNfY2FzdDxj
aGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpOwotICAgIG1lbWNweShzaGFyZWRNZW1vcnlQdHIs
IGRhdGEsIGxlbmd0aCk7Ci0KICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAg
c2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKICAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFu
ZCBtYXJrIGl0IGFzIG1lZGlhLXJlbGF0ZWQgbWVtb3J5LgogICAgIGhhbmRsZS50YWtlT3duZXJz
aGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyOjpNZWRpYSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQs
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obGVuZ3RoKSB9KSwgMCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXIuc2l6ZSgpIH0pLCAwKTsK
IH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVja0Zh
aWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCmluZGV4IDQ3ZWE4NjY3
MWIxM2QxMzk1YzNkYWQ5YmRhNzlhYmY2MTZjYmExNzkuLjk0OTQ2NDUyMmMyNjNlNmE1ZTgwNzNm
NzRlOWQyNDM0YmFhOTM5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaApAQCAtNDcsNyAr
NDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZp
bmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5h
bDsKICAgICB2b2lkIGxvYWRGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGQ3MWFlNWUwYTlhZjNkOWVl
M2E1MWQ4ZmNmNTBmZTUzNTliMzkwYjcuLjc0OTE5MGQxOWIwZmExY2UwYjUxMWU4NDIwNzI1NjAw
NjkxMTg2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
RXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTIwMCwxNiArMjAxLDE1IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9u
c2UocmVzcG9uc2UsIFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwog
fQogCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIo
V2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1
IGZvciAnJXMnIiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0
aW4xKCkuZGF0YSgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05l
dHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRp
bCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9p
bnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVm
ZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0o
KSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxv
YWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZl
RGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MjE4LDcgKzIxOCw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgICAgIFdFQlJFU09V
UkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcg
ZGF0YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAotICAgIG1f
Y29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgYXV0byBidWZmZXIgPSBkYXRh
LmJ1ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKQpAQCAtMzA2LDcgKzMwNyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAg
ICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2
ZVJlc291cmNlOiIpOwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZy
b20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7CkBA
IC0zMjMsNyArMzI0LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291
cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKIAogICAgIC8vIE9ubHkg
c2VuZCBkYXRhIHRvIHRoZSBkaWRSZWNlaXZlRGF0YSBjYWxsYmFjayBpZiBpdCBleGlzdHMuCiAg
ICAgaWYgKHVuc2lnbmVkIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9j
b3JlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZm
ZXJTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICBtX2NvcmVMb2FkZXIt
PmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRh
UGF5bG9hZFdob2xlUmVzb3VyY2UpOwogCiAgICAgaWYgKCFtX2NvcmVMb2FkZXIpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGEyMmU2MmYyOGI1ZmE0Y2ZjOTFhYTVlNWNlODJjYTI3YWUy
NmFkNTMuLmFjNTQyMmZjMDY3MTBiZDBlMDg3ZTBmNDQwOWVkOTQwMTdjMGNmMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
aApAQCAtMzksNiArMzksNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVm
ZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtODAsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0
YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlk
RmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwog
ICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCAwMmExNGY1OWEz
MDQ3NDRjMmQxODNlYTc5ZTk5ZWJhZWI0Y2ZiYmEyLi5kYWEyNGQyN2M3MWE4M2NmN2MwZjE2OGRh
MjZhNDliNDg3NjkyNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyAr
MjQsNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1
aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVj
ZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDhkMmM1ZjNlMjVjYTFhMjM3OGU1ZTMwMDVk
NzU0OTJiZWFmMGIxZWEuLjJiN2U0ZDJjMjBmZGQxOTk4ODI3MmRhOGJmY2M1YTYxODZjNmQzZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
LmgKQEAgLTY1LDYgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RD
YWNoZTsKIGNsYXNzIEVsZW1lbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xNzYsMTEgKzE3NywxMSBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgU3RyaW5nJiByZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVz
cG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VV
UkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmlu
YWw7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5p
c2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZh
aWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAg
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgZmlu
YWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5h
bDsKICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIGZpbmFs
OwpAQCAtMzYyLDcgKzM2Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlk
RmFpbChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdl
YkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGU1ZmEw
NzEwOWE5MzE4NDUzOWZiMWUyNDcwYTNmOTM4NmQ0MzE1NTguLmZhNmNlNmY2OWZjMDJmNzAxZjg4
NTEzODg0NzVkZWYzZjI0MzE0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTQsNiArOTQsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9TY3JvbGxBbmltYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2hlZWxFdmVudFRlc3RNb25pdG9yLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgpAQCAtMTE5MSw3ICsxMTkyLDcgQEAgdm9p
ZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKE5ldHNjYXBlUGx1Z0luU3QKICAgICB9CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVn
aW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBjb3VudCkKK3ZvaWQgUERG
UGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICBpZiAoIW1fcGRmUGx1Z2luKQogICAgICAgICByZXR1cm47CkBAIC0xMjAwLDcgKzEy
MDEsNyBAQCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbQogICAgIGlmICghcmVxdWVzdCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLCBjb3VudCk7CisgICAgcmVx
dWVzdC0+YWRkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBERlBs
dWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQpAQCAtMTcxOCwxNSAr
MTcxOSwxNSBAQCB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlw
dCA9IHRydWU7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBE
RlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVh
bUlEID09IHBkZkRvY3VtZW50UmVxdWVzdElEKTsKIAogICAgIGlmICghbV9kYXRhKQogICAgICAg
ICBtX2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAgQ0ZE
YXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCBieXRlcywgbGVuZ3RoKTsKLSAgICBtX3N0cmVh
bWVkQnl0ZXMgKz0gbGVuZ3RoOworICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwg
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1
ZmZlci5zaXplKCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5n
KHVpbnQ2NF90IHN0cmVhbUlEKQpAQCAtMTc2MywxNCArMTc2NCwxNCBAQCB2b2lkIFBERlBsdWdp
bjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAg
IENGRGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVu
dExlbmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRh
YmxlKDAsIDApKTsKIAotICAgIGVuc3VyZURhdGFCdWZmZXJMZW5ndGgobV9zdHJlYW1lZEJ5dGVz
ICsgbGVuZ3RoKTsKLSAgICBtZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdl
dCgpKSArIG1fc3RyZWFtZWRCeXRlcywgYnl0ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5
dGVzICs9IGxlbmd0aDsKKyAgICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRl
cyArIGJ1ZmZlci5zaXplKCkpOworICAgIG1lbWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0ciht
X2RhdGEuZ2V0KCkpICsgbV9zdHJlYW1lZEJ5dGVzLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKKyAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gYnVmZmVyLnNpemUoKTsKIAogI2lmIEhBVkUo
SU5DUkVNRU5UQUxfUERGX0FQSVMpCiAgICAgLy8gS2VlcCBvdXIgcmFuZ2VzLWxvb2t1cC10YWJs
ZSBjb21wYWN0IGJ5IGNvbnRpbnVvdXNseSB1cGRhdGluZyBpdHMgZmlyc3QgcmFuZ2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggMWQ4NDQ4MDVmNGMxMGU5
M2ZlZGNhYmRlZWMyMWRkMzVkZGY4ODIwMi4uZTRkNjJmNGJlYTliZmMyZmE4MGVmNGQ2ZTkwYzVj
Y2YwNjc5NGY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgK
QEAgLTU0LDEyICs1NCwxMyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBFbGVtZW50
OwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRQb2ludDsKIGNs
YXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC0xNjAsNyArMTYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEg
c3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVs
bHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAw
OwpAQCAtMTczLDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUg
bWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0
IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxT
dHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA1MzRkYTUyZDQ3ZDYyODUwZTIwNWZmOWU5
OWMzMGIzN2QzYmNiYTEyLi4wMzQ0ZjRiZTIzYTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cApAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJl
YW1Mb2FkZXJDbGllbnQKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYm
KT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAKQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFBsdWdp
blZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgY29uc3QgUgogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2Vp
dmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9k
aWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2Vz
dGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZl
RGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0g
ICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1J
RCwgYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlk
UmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnVmZmVyKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpT
dHJlYW06OmRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VV
UkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUs
IGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdp
blZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxs
IGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKQEAg
LTM4MiwxMSArMzgyLDExIEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5p
dGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFs
U3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEuYXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEu
YXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BsdWdpbi0+
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW4t
Pm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmll
dzo6bWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKQpAQCAtMTE3MSw5ICsxMTcxLDkgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0
aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRha2UoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2Vp
dmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7
CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCktPmZvckVhY2hTZWdtZW50QXNTaGFy
ZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgICAgIG1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YShidWZmZXIpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBpZiAobV9tYW51
YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZjY2MzEyYTgwYWNk
MWUwMzUzMTBkZmFhM2E1ZjNhMTdiNzJhYWU1NS4uMjU2MTVjYjMwZjIyNjQ2MzkyNDQ0ODhmMmJk
N2M0MTIyNzkwNzliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVz
dHJveWVkKCkgY29uc3QgeyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVz
dHJveWVkKCk7IH0KIAogICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFu
dWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAg
IHZvaWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWRE
aWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBlZTQwZmI5NTg1ZTc5ZDg2YjNjZmQyZjU3OWVk
NDZlNjFiOWVjNjNlLi4zMTQ4MmViM2IzNjhkNzhhNjFhN2VjMWQyNGM1OTgxMGJjOTFlZDhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBA
QCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2Us
IG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50
aWZpZXIpOwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKQEAgLTgwLDE0ICs4MCwxNCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgIGlmICht
X3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKICAgICAgICAg
aWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9u
c2VEYXRhKSkKICAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRl
cigpOwotICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0
YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEg
eyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBt
X2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRp
Y19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVj
ZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0s
IG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1E
YXRhKQpAQCAtMTM2LDE1ICsxMzYsMTUgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
QmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBk
YXRhLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlm
aWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRf
dD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpE
aWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXpl
KSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBz
dGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7
CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxv
YkxvYWRpbmcoKQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgICAgICBpZiAobV9k
aWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oY29uc3Qg
U2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKCpi
dWZmZXIuZ2V0KCkpOworICAgICAgICBkaWRSZWNlaXZlRGF0YShidWZmZXIuY29weSgpLT5tYWtl
Q29udGlndW91cygpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlk
RmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4
MmI0YjM4NTYyOTY4YTJiNmM5Yy4uMDk0MDBkZjBjZTcyNWYzOWE4YjExZDkzNWUxNDU0ZTM5OWY1
YTI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtNTAsNyArNTAs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0
aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3Jl
OjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtNjAs
OCArNjAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udmVydEZldGNoVG9Eb3dubG9hZCgpIGZp
bmFsOwogCiAgICAgdm9pZCBjbGVhbnVwKCk7Ci0gICAgCi0gICAgdm9pZCBkaWRSZWNlaXZlQmxv
YkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCbG9iQ2h1bmsoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRG
aW5pc2hCbG9iTG9hZGluZygpOwogCiAgICAgc3RydWN0IEJsb2JMb2FkZXIgZmluYWwgOiBXZWJD
b3JlOjpGZXRjaExvYWRlckNsaWVudCB7CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
ZmluYWwgeyBjbGllbnQtPmRpZFJlY2VpdmVCbG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KKyAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEp
IGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEpOyB9CiAgICAgICAgIHZv
aWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBj
bGllbnQtPmRpZEZhaWwoZXJyb3IpOyB9CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFs
IHsgY2xpZW50LT5kaWRGaW5pc2hCbG9iTG9hZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDE0YTA4M2NhMjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQz
OTkuLmVkNGY1ZGU5ZDVlNTYxOGQ0MzI0NTUwODJmNWRhMTg4YWJmOWJmNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE1MiwxMCArMTE1MiwxMCBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgd2ViUGFn
ZS0+ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQobV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIGlmICghbV9wbHVnaW5WaWV3KQotICAgICAgICBsb2FkZXItPmNvbW1p
dERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEpOwog
CiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGEgc3RhbmQtYWxvbmUgbWVkaWEgZG9jdW1lbnQs
IG5vdyBpcyB0aGUgcmlnaHQgdGltZSB0byBjYW5jZWwgdGhlIFdlYktpdCBsb2FkLgogICAgIC8v
IEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlZCBhY3Jvc3MgYWxsIHBvcnRzLiA8aHR0
cDovL3dlYmtpdC5vcmcvYi80ODc2Mj4uCkBAIC0xMTc3LDcgKzExNzcsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IHVpbnQ4X3QqCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faGFzU2VudFJlc3Bv
bnNlVG9QbHVnaW5WaWV3ID0gdHJ1ZTsKICAgICB9Ci0gICAgbV9wbHVnaW5WaWV3LT5tYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX3BsdWdpblZpZXctPm1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YShkYXRhKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCmluZGV4IGJiNTI5ZDNhZWM0ZTJjNzVmMWE3ZGU5MWIxMGI1NTgyZDQ1MjJi
NDIuLjFkMzBiYzM5MzgzYWZmZjJjYTljMjg3NTNkZDJkN2VjMmIyNjQ5MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFj
ZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJD
b3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZv
aWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0
b3J5KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApp
bmRleCBhMjA1ZTAwMWNhNzE1ODIwOTEzYTgxYWU0YTgzNjUzMGY5YTBmNjQ4Li43MmUzNTU0Yzhl
MGFhNjkwYTZlYzU3ODAxNzZmMTllMGI4ZDcwZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViUHJldmlld0xvYWRlckNs
aWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBTdHIKIAogV2ViUHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQo
KSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2Uo
bV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmgKaW5kZXggMGRjMTY3ZTViN2JjM2IwM2VmMzkzMWVhYjM1NmM3ODI3OTI5NTI5
ZS4uNjQ5YmM4MzE5YzI3ODZmMDFkNjE3YzExMTk5ZGIwYzZjMDc3ZmE3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3
b3JkRW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDk0MmVkYzYyM2E0ZTY1M2Ji
MTg4YWVlMDUwNjQ0YTNmNGEwMzJlODkuLmY4OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMy
YTdiYzY2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC03MDU3LDEyICs3MDU3LDEyIEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0Rp
ZFJlY2VpdmVSZXNwb25zZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kCiAgICAg
aGFuZGxlci0+dGFza0RpZFJlY2VpdmVSZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2Up
OwogfQogCi12b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEpCit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJV
UkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkmIGRhdGEpCiB7CiAgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJM
U2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJU
KGhhbmRsZXIpOwogCi0gICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlm
aWVyLCBkYXRhLnNpemUoKSwgZGF0YS5kYXRhKCkpOworICAgIGhhbmRsZXItPnRhc2tEaWRSZWNl
aXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5idWZmZXIoKSA/ICpkYXRhLmJ1ZmZlcigpIDog
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2No
ZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE5NGI1YjlkN2ZlMzJmMjRhODZkYWFhZDQ0ODQyYjBj
ZGQwYWViMmYuLjQ4ODY2NzA3YzQ2MTNkOWE3Y2QzNTIxNWRmY2E5MjNjNjk3OWJlYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE4NCw2ICsxODQs
NyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwog
Y2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xODk2LDcgKzE4OTcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgdXJsU2NoZW1lVGFza1dpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9u
c2UoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhh
bmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lk
ZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgdXJsU2NoZW1l
VGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyQ29weSYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVS
TFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAg
IHZvaWQgc2V0SXNUYWtpbmdTbmFwc2hvdHNGb3JBcHBsaWNhdGlvblN1c3BlbnNpb24oYm9vbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCBiMjcyMjk0NzFlYWU4NmVlNTk4MTk4M2RkNTdiNWU3YTgyOTFjZDRiLi5i
ZGE1ZjUwYWRkMjNhOTY3NDBlODlkNzMzZDc5YzE4N2YwNTJiZTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU2
NCw3ICs1NjQsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFVSTFNjaGVtZVRhc2tX
aWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZp
ZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0
YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkgLT4gKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBhY3R1YWxSZXF1ZXN0KSBBc3luYwogICAgIFVSTFNjaGVtZVRhc2tEaWRQZXJmb3Jt
UmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVy
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcHJvcG9zZWRSZXF1ZXN0KQogICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVz
cG9uc2UoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQotICAgIFVSTFNjaGVtZVRhc2tEaWRS
ZWNlaXZlRGF0YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZp
ZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFVSTFNjaGVtZVRh
c2tEaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhh
bmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lk
ZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQogICAgIFVSTFNjaGVtZVRhc2tE
aWRDb21wbGV0ZShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAKICAgICBTZXRJc1N1c3BlbmRlZChi
b29sIHN1c3BlbmRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCmluZGV4IDZkOGQwY2YyNzg0
ZWQzMDU2NjI1YzdmNmU4NDZhOTNhNzExY2JhY2QuLjYxNmVkYTA4ZjBiOGZjYWIyZDU3ZmM0NzUz
MjkxMDdiODE1Y2QyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcApAQCAtOTYsMTMgKzk2
LDEzIEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlCiAgICAgdGFzay0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tE
aWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50
aWZpZXIsIHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQordm9pZCBXZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBhdXRvKiB0YXNrID0gbV90YXNrcy5nZXQodGFza0lkZW50aWZpZXIpOwogICAgIGlmICgh
dGFzaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoc2l6ZSwg
ZGF0YSk7CisgICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5LmgKaW5kZXggNThiZWNjMTdiNWQ4NTk4NzQ5ODg0ZDMwMjUxNjg5
Y2NjYzE3NjkzZi4uYWIyMGJkNTczYWE0YWZjMTU4MDU5MGYyNzA0NjYzMDA2ODc3NDBlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC01OSw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGFza0RpZFBlcmZv
cm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lk
IHRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCB0YXNrRGlkUmVj
ZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBzaXplX3QsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEpOworICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAg
ICAgdm9pZCB0YXNrRGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCB0YXNrRGlkU3RvcExv
YWRpbmcoV2ViVVJMU2NoZW1lVGFza1Byb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCmluZGV4
IDM2MDZiYmRjNjUyMTVkZGNhOTI2MTNhODEwN2RhYjFiMTFlY2I2NTYuLjllNzJkODRjOTdkZjZk
Mjk3MTRhODNjNTFhYzE3NzYzZTVmYjY1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApAQCAtMTQw
LDIxICsxNDAsMjEgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25z
dCB1aW50OF90KiBkYXRhKQordm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIWhhc0xv
YWRlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29tcGxldGlv
bkhhbmRsZXIpIHsKICAgICAgICAgV0VCVVJMU0NIRU1FVEFTS1BST1hZX1JFTEVBU0VfTE9HKCJk
aWRSZWNlaXZlRGF0YTogUmVjZWl2ZWQgZGF0YSBkdXJpbmcgcmVzcG9uc2UgcHJvY2Vzc2luZywg
cXVldWluZyBpdC4iKTsKLSAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgZGF0YVZlY3RvciA9IFZlY3RvciB7IGRhdGEsIHNpemUgfV0gewotICAg
ICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YVZlY3Rvci5zaXplKCksIGRhdGFWZWN0b3IuZGF0
YSgpKTsKKyAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgZGF0YSA9IFJlZiB7IGRhdGEgfV0geworICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEo
ZGF0YSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmIHBy
b3RlY3RlZFRoaXMgeyAqdGhpcyB9OwotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEo
ZGF0YSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBt
X2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0
YVBheWxvYWRCeXRlcyk7CiAgICAgcHJvY2Vzc05leHRQZW5kaW5nVGFzaygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNr
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRh
c2tQcm94eS5oCmluZGV4IDc1NTA4Nzk0MTgyMGZlZWZjNWQwMTI3MTU4YzA2NGNlMjU4YTA4MzUu
LmVkOTFmMzhlM2FkZDEzYmUxOWNiMjE3N2VkNDQ4ZmRkMmZhNzk1NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94
eS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTYs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZv
aWQgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9QaW5nSGFuZGxlLmgKaW5kZXggYTI1NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4
OTZkNC4uMzI4OWMyMzYyOWEwZGMzMWZjMGMxOTllZGYxMzI5N2JlZDYxYTE5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
IApAQCAtNzMsNyArNzQsNyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxl
dGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21w
bGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9h
ZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENv
bXBsZXRlKGVycm9yKTsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5NTlkNzQ4YjU2YmUx
MDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlLi44ZGY5OTNmMmQ3NzViNmM5M2QyZThmMDk5MGY3
MmY4NWY2MThlNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTQ4LDEwICs0OCwx
MiBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENhY2hlZEZyYW1lOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwog
Y2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiB9CiAKIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ+IHsKQEAgLTE1MSw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJl
cGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBj
b21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5h
bDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDQzZTYzZjQ1NjM0NWVjZjFjOTI0ZTViNzcy
YTZmNTQxNzNhOTE0MmIuLjg3YTVkNjU3ZjdiNzMzZDA3YzVkYjYwMWY2OTgxZjkwNDk3NzEzOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC05OTIsMTAgKzk5Miw5IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKICNlbmRp
ZgogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
LSAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNO
b0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBb
ZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNlaXZlZERhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBbZGF0
YVNvdXJjZShsb2FkZXIpIF9yZWNlaXZlZERhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV07
CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciogbG9hZGVyKQpAQCAtMjAxMiw3ICsyMDExLDcgQEAgUmVmUHRyPFdl
YkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwog
ICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAg
ICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXkoKTsKICAgICAg
ICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDBlMDViMThkNjk2Mzk4Mjhk
NDMzYzQ2ZDc5MjFjZjcwZGU3ZGY5ZDEuLjJhODc3MGRmODBiYjlmNzBjMTBiYjkxZjk1MjBkMWUx
OWM4NTlkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQpAQCAtOTc3LDcgKzk3Nyw3IEBAIC0gKHZvaWQpX2NvbW1pdERhdGE6KE5TRGF0YSAqKWRhdGEK
ICAgICBhdXRvKiBkb2N1bWVudCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCk7CiAg
ICAgZG9jdW1lbnQtPnNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhfcHJpdmF0ZS0+c2hvdWxkQ3Jl
YXRlUmVuZGVyZXJzKTsKIAotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPmNvbW1pdERhdGEoKGNvbnN0IHVpbnQ4X3QqKVtkYXRhIGJ5dGVzXSwgW2Rh
dGEgbGVuZ3RoXSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+Y29tbWl0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSk7
CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBmYjI1ODNmZTk3
MjY0YzczZWViMjNlYmI0ZDM5OTBiM2I4NGEwN2YzLi4xMjcwZTU3ZGQ5NWIwZDAwMDNiNWU1Njc3
ZDQ3NDJhMTI1NTJkODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC02NDEs
OSArNjQxLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9j
dW1lbnRMb2FkZXIqKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNv
bW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewotICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOworICAgIGxvYWRl
ci0+Y29tbWl0RGF0YShkYXRhKTsKIAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5k
LWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRo
ZSBXZWJLaXQgbG9hZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQg
YWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggMDk1YjI1MzVhNjg3NTQ3YmQ3ODg0NmY5MDc2YWU2YzdkMDE2
Mjk0OC4uNzkyNmZkMzY3MTgwOWU4Mzg0N2E0ODAzMWE4YjkwYzYzOGZhZjdlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkTmFtZSA9IFN0cmluZygpKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY29t
bWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IG92ZXJyaWRlOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmlu
aXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwo=
</data>
<flag name="commit-queue"
          id="473806"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448020</attachid>
            <date>2021-12-27 18:58:09 -0800</date>
            <delta_ts>2021-12-27 19:19:06 -0800</delta_ts>
            <desc>Patch For Review</desc>
            <filename>bug-234713-20211228135806.patch</filename>
            <type>text/plain</type>
            <size>10801</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJmMzIzNGZjYjAwZWQz
MjJlYWEwZWI0YTRkODFkZWUwZDM4OWQ3ZS4uZjQ1NTk3M2M4ZjljYjZlMjUyZjE3ZjkyOWUxMzQ0
MDdkNjU4ZTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEyLTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29udGVudCBGaWx0ZXJp
bmcgc2hvdWxkIGJlIHVzaW5nIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIGNvcHlpbmcgaXRzIGRh
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDcx
MworICAgICAgICByZGFyOi8vcHJvYmxlbS84Njk0NzQzMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBkaXJlY3RseSBjb25zdHJ1Y3QgdGhl
IE5TRGF0YSB1c2VkIGJ5IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyCisgICAgICAgIGFu
ZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlciBmcm9tIHRoZSBTaGFyZWRCdWZmZXIuCisK
KyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyLgorCisgICAgICAgICog
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZv
cm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEpOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXI6OmFkZERhdGEpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIu
aDoKKwogMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAg
ICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2lu
ZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcAppbmRleCBhMDk4MWFkZDc5ODUzMmI5N2JhYTQwNDEyOGJhMzg4OTZkYWY2ODRhLi5i
ODZmOWJhNjM3NjVlYzRkZmU4NGYwMmRhNGRmNzgyMzA5YzE1OGRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xNDUsMTQgKzE0NSwxNCBAQCBib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbgogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQog
Ci1ib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
ckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgUmVmPENvbnRl
bnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVy
aW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlZCBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5c
biIsIGxlbmd0aCwgbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKLSAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2RhdGEsIGxlbmd0
aF0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7Ci0gICAgICAgICAgICBj
b250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgTE9HKENvbnRlbnRG
aWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBkYXRhIGZyb20g
PCVzPi5cbiIsIGRhdGEuc2l6ZSgpLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChb
ZGF0YSA9IFJlZiB7IGRhdGEgfV0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVy
KSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7CiAgICAgICAgIH0p
OwogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmgKaW5kZXggOGI2ZGVmZmZhYjgwZjVkYWMyNTg3ZTM3MWMwMTg3
OWI5ZjNmZGY3Ny4uNjBiNGRhMWE5YjMzNjhjMmRmZWNmZjQyYjg5ZjM1NThlODMzMWMzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgYm9vbCBjb250aW51ZUFmdGVyUmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBjb250aW51
ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOworICAg
IGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpOwogCiAg
ICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25zdCBE
b2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMjUxZDIyNTJiMGIzY2M3
YTlhZTFhYmU4MWEwOTE0MWE3MWY3OWI4OC4uOTdlM2Q2NWIzZTkyZGUzMjdmOTJmM2JhZDRjYzUx
YzE1NDkzYTU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC0xMzI1LDcgKzEzMjUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImCiB2b2lkIERvY3VtZW50
TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1f
Y29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKSkKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0
ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29u
dGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50Rmls
dGVyLmgKaW5kZXggOWU3MmU0NGEyZWFjNGQ4ZWY3MzBiOTg3MWQwZWM1MDhlZDlmYWM0NC4uNDYy
Y2YzYjg3NDIzMzg1YmU4M2EwMDJlNDNmNzQ0Nzc5OTg3ZWU0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKQEAgLTI2LDE1ICsyNiwxNyBA
QAogI2lmbmRlZiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXJfaAogI2RlZmluZSBQbGF0Zm9ybUNvbnRl
bnRGaWx0ZXJfaAogCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgUGxhdGZvcm1Db250ZW50RmlsdGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTU0LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3Jt
Q29udGVudEZpbHRlcigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSA9IDA7CiAgICAgdmly
dHVhbCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qg
PSAwOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5oCmluZGV4IGNiZTg3NzFhNDVkODYyY2I1YWIwNWVjYTM5OTkyN2UwNzgzOGY1NDAuLjEyNTMx
OWJjYjM4ZTcxYmE3OTVhNmFmZDJkZDEzZmJkMTlhMmQzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCAyZWYyNzAxZmU2NzhiZjliOTJk
YjIxMmJiZWE1YzkxNWEzZmMzYTJmLi5mODc3OTdjY2Q1MGI5YWI1ZWE0OGMyNTFlNDJmMDBiNWZi
ZjRmYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMTQ1LDEyICsxNDUsMTIg
QEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXMKICAgICBzZW1hcGhvcmUud2FpdCgpOwogfQogCi12
b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpCit2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjph
ZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjb3BpZWREYXRhIHsgW05TRGF0YSBkYXRhV2l0aEJ5dGVzOih2b2lkKilkYXRhIGxlbmd0aDps
ZW5ndGhdIH07CisgICAgYXV0byBuc0RhdGEgPSBkYXRhLmNyZWF0ZU5TRGF0YSgpOwogCiAgICAg
QmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICBbbV9uZUZpbHRlclNvdXJjZSByZWNlaXZl
ZERhdGE6Y29waWVkRGF0YS5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6W3RoaXMsICZzZW1hcGhvcmVd
KE5FRmlsdGVyU291cmNlU3RhdHVzIHN0YXR1cywgTlNEaWN0aW9uYXJ5ICpkZWNpc2lvbkluZm8p
IHsKKyAgICBbbV9uZUZpbHRlclNvdXJjZSByZWNlaXZlZERhdGE6bnNEYXRhLmdldCgpIGRlY2lz
aW9uSGFuZGxlcjpbdGhpcywgJnNlbWFwaG9yZV0oTkVGaWx0ZXJTb3VyY2VTdGF0dXMgc3RhdHVz
LCBOU0RpY3Rpb25hcnkgKmRlY2lzaW9uSW5mbykgewogICAgICAgICBoYW5kbGVEZWNpc2lvbihz
dGF0dXMsIHJlcGxhY2VtZW50RGF0YUZyb21EZWNpc2lvbkluZm8oZGVjaXNpb25JbmZvKSk7CiAg
ICAgICAgIHNlbWFwaG9yZS5zaWduYWwoKTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
ci5oCmluZGV4IDY3OWFlOTMyOTUxN2UxZjM5NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUuLmQ1ZmEx
MzMwYjE2MmNjY2NlMjJlOTQ3NTg2MTVhNmUwMTEyMmQwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUg
eyB9CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0K
aW5kZXggMWM5NjA0NzE2YjQyNjkzZDVlNDZjMmUyM2U5NDFkYTAwYzgzZTRkZS4uYTY1MTE1Y2Vi
MTIyMjM2NzdmMDlhNGEzZGE5OWI0YWM3MjY4ZGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW0KQEAgLTk0LDEwICs5NCwxMCBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHVw
ZGF0ZUZpbHRlclN0YXRlKCk7CiB9CiAKLXZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIEFTU0VSVCghW21fcmVwbGFjZW1lbnREYXRhIGxlbmd0aF0pOwotICAgIG1fcmVw
bGFjZW1lbnREYXRhID0gW21fd2ViRmlsdGVyRXZhbHVhdG9yIGFkZERhdGE6W05TRGF0YSBkYXRh
V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5P
XV07CisgICAgbV9yZXBsYWNlbWVudERhdGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgYWRkRGF0
YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwog
ICAgIEFTU0VSVChuZWVkc01vcmVEYXRhKCkgfHwgW21fcmVwbGFjZW1lbnREYXRhIGxlbmd0aF0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRl
eCAwNTlmM2EzODZiNmNmNWZhNzliM2MxODk3MDE1MzEzZjdjZGI0ZWYyLi4xZGUyNTNjOTJiMWI4
MWU3MmFiNzBmOWJiNTY4ZDQxZmRlMzc0ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9ja0NvbnRl
bnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiAgICAg
bWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSk7CiB9CiAK
LXZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCosIGludCkKK3Zv
aWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAg
ICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4IDYzNWFjODRi
ZTc5Mzg0N2FhNTcyMTNkMDFmZmMxZTc0Zjc2Yjc1OTMuLmI4Mzk3YjMwZDhkODViN2JmZmIzNjI1
NDY2ZjA2ODg4YzE4MjE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448021</attachid>
            <date>2021-12-27 19:05:53 -0800</date>
            <delta_ts>2021-12-27 19:26:41 -0800</delta_ts>
            <desc>Patch For EWS (combined patch)</desc>
            <filename>bug-234713-20211228140549.patch</filename>
            <type>text/plain</type>
            <size>285975</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3MDk2ZjA2YzcyZmVh
MmZjMWUwMzk0MDIyMzg5MWVlZGJmZGM4MC4uZjQ1NTk3M2M4ZjljYjZlMjUyZjE3ZjkyOWUxMzQ0
MDdkNjU4ZTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4NSBAQAorMjAyMS0xMi0yNyAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIENvbnRlbnQgRmlsdGVy
aW5nIHNob3VsZCBiZSB1c2luZyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBjb3B5aW5nIGl0cyBk
YXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3
MTMKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODY5NDc0MzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgY29uc3RydWN0IHRo
ZSBOU0RhdGEgdXNlZCBieSBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcgorICAgICAgICBh
bmQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZnJvbSB0aGUgU2hhcmVkQnVmZmVyLgor
CisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4KKworICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50
RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiB0
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
Lmg6CisKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtp
bmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbW9kaWZ5IGFs
bCBkaWRSZWNlaXZlRGF0YSBhbmQgcmVsYXRlZCBtZXRob2RzIHNvIHRoYXQgdGhleSBubyBsb25n
ZXIKKyAgICAgICAgdXNlIHVpbnQ4X3QqL2ludCBhbmQgaW5zdGVhZCB1c2UgU2hhcmVkQnVmZmVy
LgorICAgICAgICBXZSBkbyB0aGUgc2FtZSBmb3IgYW55IGludGVybWVkaWFyaWVzIHVzZWQgYnkg
dGhlIHZhcmlvdXMgZGlkUmVjZWl2ZURhdGEKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorICAg
ICAgICBUaGlzIHdpbGwgZmFjaWxpdGF0ZSBtb3ZpbmcgbmV0d29ya2luZyBvZmYgdGhlIG1haW4g
dGhyZWFkIGluIHRoZSBHUFUKKyAgICAgICAgcHJvY2VzcyBhbmQgYWxsb3dzIHRvIHJlbW92ZSBz
ZXZlcmFsIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgY29waWVzIGF0IHRoZQorICAgICAgICBwcm9j
ZXNzIGJvdW5kYXJpZXMuCisgICAgICAgIFdlIGNhbiBub3cgY29uc2lkZXIgdHJhbnNmZXIgdGhl
IHVuZGVybHlpbmcgU2hhcmVkTWVtb3J5IGNyZWF0ZWQgaW4KKyAgICAgICAgdGhlIG5ldHdvcmsg
cHJvY2VzcyBhbGwgdGhlIHdheSB0byB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgRmx5LWJ5
IGZpeDogY2hhbmdlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdHlwZSB0byBTaGFyZWRCdWZmZXIg
d2hlbiBhcHByb3ByaWF0ZS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhh
dmlvdXIuIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaExvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpC
b2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3Bv
bnNlOjpjb25zdW1lQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6CisgICAgICAgICogZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURh
dGFJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpm
aW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRp
bnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Ojpjb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb21taXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlw
YXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3Jp
dGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVs
ZW1lbnRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lv
bmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6Cisg
ICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjp1cGRhdGVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFk
ZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZU1lZGlhTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJv
bm91c0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNv
dXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToK
KyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
IGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpk
YXRhQ2hhbmdlZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisyMDIxLTEyLTIzICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2NhbGFibGVJbWFnZURlY29kZXIgc2hvdWxkIGJl
IHVzaW5nIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIERhdGFTZWdtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDEKKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vODU4NTQyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEYXRhU2VnbWVudCBzaG91bGQgYmUgYSBTaGFyZWRCdWZmZXIncyBpbXBsZW1l
bnRhdGlvbiBkZXRhaWxzIGFuZCBub3QKKyAgICAgICAgYmUgdXNlZCBvdXRzaWRlIFNoYXJlZEJ1
ZmZlcidzIGNvZGUuCisgICAgICAgIEhpc3RvcmljYWxseSwgdXNpbmcgdGhlIGlubmVyIERhdGFT
ZWdtZW50IHdhcyByZXF1aXJlZCBhcyBpdCB3YXMgdGhyZWFkCisgICAgICAgIHNhZmUgd2hpbGUg
U2hhcmVkQnVmZmVyIHdhc24ndDogVGhpcyBpcyBubyBsb25nZXIgdGhlIGNhc2UuCisgICAgICAg
IFNoYXJlZEJ1ZmZlciBhbmQgRGF0YVNlZ21lbnQgYXJlIHNlbWFudGljYWxseSB2ZXJ5IHNpbWls
YXIsIHNvIHRoaXMgaXMKKyAgICAgICAgbW9zdGx5IGEgZmluZC9yZXBsYWNlIGNoYW5nZS4KKyAg
ICAgICAgRmxhdHRlbmluZyB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBzdGlsbCByZXF1
aXJlZCBhcyBtb3N0IGRlY29kZXJzCisgICAgICAgIHJlcXVpcmUgcmVhZGluZyB0aGUgcmF3IGJ5
dGVzLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJhY2tpbmdTdG9yZTo6SW1hZ2VCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpB
VklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1h
Z2VSZWFkZXI6OnJlYWRVaW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6
OnJlYWRVaW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnNldERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5o
OgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKUEVHSW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlBFRzIwMDBJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQTkdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUElt
YWdlRGVjb2Rlcjo6ZGVjb2RlKToKKworMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIG1ha2UgU2hhcmVkQnVmZmVyOjpjb3B5KCkgcmV0dXJu
IGEgY29udGlndW91cyBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDYyMgorICAgICAgICByZGFyOi8vcHJvYmxlbS84NjgyOTUy
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG1ha2Ug
U2hhcmVkQnVmZmVyOjpjb3B5KCkgcmV0dXJuIGEgY29udGlndW91cyBTaGFyZWRCdWZmZXIKKwor
ICAgICAgICBBUEkgdGVzdHMgYWRkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSBj
b25zdCk6CisKIDIwMjEtMTItMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIFRlc3QgYWNjZXNzaWJpbGl0eS9hcmlhLWlu
aGVyaXRzLXByZXNlbnRhdGlvbmFsLmh0bWwgaXMgZmFpbGluZyB3aXRoIEFUU1BJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGNlMjdlMTRjNjlmZDI0NGFlN2IyNDQ1ZTNlNDk4N2M2ZjcxYmIyODMuLmEwODNlOWI0OTk0
NTIzNTIyMGEwNmU4ODQyNTViYThjMDg4ZjVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBA
CisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3JraW5nIGFj
dG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFS
ZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVu
ZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNlbmRCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNr
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6bG9hZEJvZHlGcm9tUHJlbG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6Cisg
ICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyk6
CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjptYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZUJsb2JDaHVuayk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KToKKwogMjAyMS0xMi0yNiAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBXZWJLaXQvQ29j
b2FDb2xvci5oIHdpdGggV2ViQ29yZS9Db2xvckNvY29hLmgsIG5vdCBjb25mdXNpbmcgYXQgYWxs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDU3NjgxYjIxYTczNDM5ZTkwYmYyMWJhMjQ0OTU4MjU5
N2UwMTk5ODIuLmJiMWM1YjUzNmM0Zjk5MTVmYmFiZDlhYzMwMzdiYzQ0OGM3NzQ2YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNl
Q2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAg
ICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIwMjEtMTIt
MTQgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUg
U2hhcmVkQnVmZmVyIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZWY5
NDlkZTYwNjg5NmNhOTkzZWRmOGYzNGQ5YzFiMzBhNWI2NTRhYi4uZDU5NTdkZGIxZjRhZjg4YTRi
NWZkNzEzMGYxMDcxNDlhYjUwOWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBu
ZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVQcmV2aWV3TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZSBfY29tbWl0RGF0YTpdKToKKwogMjAyMS0xMi0yMiAgTWljaGFl
bCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggV2ViS2l0IEJ1aWxk
IGlzc3VlcyB3aGVuIHVzaW5nIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggYzIzMWYyMDdk
YTI1Y2QyYTE1ODYwZDI4ZGIzY2UxN2U4NTc1NzdkNS4uZTYxM2FhNTA5Zjc0YzBkZTBlNmQzODM1
MThlNTI2ZjczYWE1OGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTMyMCwxMyArMzIwLDEzIEBAIHZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25z
dCBTdHJpbmcmIGNvCiAgICAgfQogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zb3Vy
Y2UpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShk
YXRhLCBzaXplKSk7CisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2J1ZmZlci5hcHBl
bmQoZGF0YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaAppbmRleCA4NzFkMmMwODYzMzFhOTgyOTRhMTY2YTRiNDJlMzE4NGUwMzc3NzJiLi5kNDY1
MWIyM2RhNzFjZjhmNGM4Yzk5NjcxZDIyN2ViNWFjOGQyYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBt
X3R5cGUodHlwZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBi
b29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CiAgICAgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgp
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuY3BwCmluZGV4IGE2MzMxMDhiNTQ3NzgzOTNmYzU0NzUwMDMyYTlhMmU4NmFkZTdmY2MuLjUz
NjY4MTU1YmRlYmMxYWVmMzlmNGQ5OWZiOWRhZGMxZWJlZjdhMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yOTgsMTEgKzI5OCwx
MCBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ0ZhaWxlZCgpCiAgICAgZmluaXNo
QmxvYkxvYWRpbmcoKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNo
dW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIEFTU0VSVChkYXRhKTsKICAg
ICBBU1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7Ci0gICAgaWYgKCFtX3JlYWRhYmxlU3Ry
ZWFtU291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpKQor
ICAgIGlmICghbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+ZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSkpCiAgICAgICAgIHN0b3AoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDVjYTdlMzk2YzQyMjcwMTkzNTZi
MDgwNmU0ZWVkYmU5NWU5MjhmNGIuLjgxZmQwNmVjZGQ2ZmMzOGM5ZTg1OTg3Y2ViZGZjMTZkZDg2
ZjNjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGZXRjaExvYWRlci5oIgogI2luY2x1ZGUg
IkZldGNoTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMCw3ICsx
MDEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgLy8gQmxvYiBsb2FkaW5nIHJvdXRp
bmVzCi0gICAgdm9pZCBibG9iQ2h1bmsoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9p
ZCBibG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBibG9iTG9hZGluZ1N1
Y2NlZWRlZCgpOwogICAgIHZvaWQgYmxvYkxvYWRpbmdGYWlsZWQoKTsKICAgICB2b2lkIGZpbmlz
aEJsb2JMb2FkaW5nKCk7CkBAIC0xMTMsNyArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAv
LyBGZXRjaExvYWRlckNsaWVudCBBUEkKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JD
aHVuayhkYXRhLCBzaXplKTsgfQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhidWZmZXIpOyB9CiAg
ICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsgb3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4
IDAzZjg5YjYxY2E1ZjdjNzE3NmI5ZDg4Y2QxMzY2MGU4NmI3YTI1NDguLjRiNDViZmQ4NzUwNDA2
ZjZlN2RhNzE4Zjk5ODE2OTQ3MWE1ZTg0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0xNDgsMTMgKzE0OCwxMyBAQCB2b2lkIEZldGNoTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlcwogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9
CiAKLXZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIHZhbHVl
LCBpbnQgc2l6ZSkKK3ZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBib29sKQogewogICAgIGlmICghbV9jb25zdW1lcikgewotICAgICAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YSh2YWx1ZSwgc2l6ZSk7CisgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9j
b25zdW1lci0+YXBwZW5kKHZhbHVlLCBzaXplKTsKKyAgICBtX2NvbnN1bWVyLT5hcHBlbmQoYnVm
ZmVyKTsKIH0KIAogdm9pZCBGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmgKaW5kZXggNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZC4uNWVlYWVm
ODJkMWRmM2VmY2VkMjE0MDAzZGY1MTg4ODcwMzZmOTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQgQVBJLgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGlu
dCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBi
b29sIHVzZVN0ckxlbikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
TG9hZGVySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlckNsaWVudC5oCmluZGV4IGZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0
NWU3ODkuLjEwOWUwOGVjZjdhNDdlN2MwMzdlMzJkY2FhY2FiODZjODFjMThkM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCmluZGV4IDBlN2IwMDVlODlhM2QxNzQwYjFjZjlhZGZmOGI0ZjJmMmZjNDNjOTku
LmRjYTBlMjM4MmUzMmZjMDM3Mjg4N2ZkNDg1MjE0YTE3MzAxYjFiZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzYyLDEyICszNjIs
MTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxsYmFjayht
X3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hSZXNw
b25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZSB8fCBt
X2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFDYWxsYmFjaykg
ewotICAgICAgICBTcGFuIGNodW5rIHsgZGF0YSwgc2l6ZSB9OworICAgICAgICBTcGFuIGNodW5r
IHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9OwogICAgICAgICBtX2NvbnN1bWVEYXRh
Q2FsbGJhY2soJmNodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM3NSw3ICszNzUs
NyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgIGF1dG8mIHNvdXJjZSA9ICptX3Jlc3Bv
bnNlLm1fcmVhZGFibGVTdHJlYW1Tb3VyY2U7CiAKICAgICBpZiAoIXNvdXJjZS5pc1B1bGxpbmco
KSkgewotICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICAgICAgbV9yZXNwb25zZS5ib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoYnVmZmVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiAgICAgICAgIHN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAoIXNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6
ZSkpKSB7CisgICAgaWYgKCFzb3VyY2UuZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSkpIHsKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDY3
LDcgKzQ2Nyw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRh
JiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAKIHZvaWQgRmV0Y2hSZXNwb25z
ZTo6Y29uc3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+JiYgY2h1bmspCiB7Ci0gICAgYm9k
eSgpLmNvbnN1bWVyKCkuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkp
OworICAgIGJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaHVu
ay0+ZGF0YSgpLCBjaHVuay0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQgRmV0Y2hSZXNwb25z
ZTo6Y29uc3VtZUJvZHlBc1N0cmVhbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCmluZGV4IDZiMDUwNWQ4OGIxMzJlMjhjYjk1NGFiOWEwZTdlZmU4MTNm
NzAyYWYuLmY5OTI0OWMzOWY5ZDBiMmZjODdhMmY5YzQ2ZDc5MzkyODg4MTRiZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xNDMsNyArMTQz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKIAog
ICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3RpZmljYXRpb25D
YWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMjdhNmQ3
MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZC4uYTY0MWY4MTA3YjRmZDE3OTExZmRi
OTJiYjMwZjQ1ZTJlODJiNTJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTc3LDEwICsxNzcs
MTAgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIAogLy8gTUFSSzogLSBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudAogCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQor
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgbV9kYXRhLmFwcGVuZChkYXRh
LCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggY2UwMDlkNGU1ZWRj
MzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZS4uMGQzYmRiNzQ5ZDdhMzM2OGIzY2E2OGMyMTcz
MTYwNTkxNTQ5ZDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0
ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgLy8g
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgb3ZlcnJpZGVzLgotICAgIHZvaWQgZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZp
bmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVk
QnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgLy8gTW9kZWxQbGF5ZXJD
bGllbnQgb3ZlcnJpZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtU2luay5oCmluZGV4IGQ1MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVl
YWM4ZmY4MzhhMzkuLmZlZTk4ODQyMjFiYjQzZThjYzA2MmVhYmNkMGE5OWVjNTRjMDM0NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNp
bmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1T
aW5rLmgKQEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZm
ZXJTb3VyY2U7CiBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZDb3VudGVkPFJl
YWRhYmxlU3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5jcHAKaW5kZXggYjdmNzVlZGEzYjIzM2IxOWIyMGVkNzA0Mjg5NDliYjMz
NTg5OGU4MS4uNzM4NTJkNGMwYWYwMzg0NzVmMTViNjU0OWRjNjg5YmY4NTUxYjIwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIu
aCIKQEAgLTE2MywxNiArMTY0LDE1IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyCiAgICAgICAg
IG1fY2xpZW50LT5kaWRTdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBGaWxlUmVhZGVyTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3Zv
aWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGJvb2wpCiB7Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChkYXRhTGVuZ3Ro
ID4gMCk7CisgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkpOwogCiAgICAgLy8gQmFpbCBvdXQgaWYg
d2UgYWxyZWFkeSBlbmNvdW50ZXJlZCBhbiBlcnJvci4KICAgICBpZiAobV9lcnJvckNvZGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGludCBsZW5ndGggPSBkYXRhTGVuZ3RoOworICAgIGludCBs
ZW5ndGggPSBidWZmZXIuc2l6ZSgpOwogICAgIHVuc2lnbmVkIHJlbWFpbmluZ0J1ZmZlclNwYWNl
ID0gbV90b3RhbEJ5dGVzIC0gbV9ieXRlc0xvYWRlZDsKICAgICBpZiAobGVuZ3RoID4gc3RhdGlj
X2Nhc3Q8bG9uZyBsb25nPihyZW1haW5pbmdCdWZmZXJTcGFjZSkpIHsKICAgICAgICAgLy8gSWYg
dGhlIGJ1ZmZlciBoYXMgaGl0IG1heGltdW0gc2l6ZSwgaXQgY2FuJ3QgYmUgZ3Jvd24gYW55IG1v
cmUuCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCkgewotICAgICAg
ICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90b3RhbEJ5dGVzICsgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGRhdGFMZW5ndGgpOworICAgICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90
b3RhbEJ5dGVzICsgYnVmZmVyLnNpemUoKTsKICAgICAgICAgICAgIGlmIChuZXdMZW5ndGggPCBt
X3RvdGFsQnl0ZXMpIHsKICAgICAgICAgICAgICAgICBmYWlsZWQoTm90UmVhZGFibGVFcnJvcik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgRmlsZVJl
YWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCiAgICAgaWYgKGxlbmd0aCA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBtZW1j
cHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQs
IGRhdGEsIGxlbmd0aCk7CisgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihtX3Jhd0RhdGEt
PmRhdGEoKSkgKyBtX2J5dGVzTG9hZGVkLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpOwogICAgIG1f
Ynl0ZXNMb2FkZWQgKz0gbGVuZ3RoOwogCiAgICAgbV9pc1Jhd0RhdGFDb252ZXJ0ZWQgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggNTM5YzIz
MDRhODJlNjNhYWRmZTJjNTY3Yzk4ZDBiOGM2ODdhOGU5Zi4uYjdlNWI0MDU3ZmIyMDZmZjMyMzE1
NWNjMGYxNTAyZmNhMjBkMjY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CmluZGV4IDVjNWJiMmFlYTgzOTkxOGIwNjk3NzU4ODFjZTNhMzY5YTQyOGU1YjkuLjc4MTc3NWE4
NDE2NjI2ZTgyOTBmZWFiODI0ZTdiMmFlZjVjYWIyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC02MTYsMTAg
KzYxNiwxMCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudAogICAgICAgICBuZXR3b3JrQWdlbnQt
PmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoaWRlbnRpZmllciwgZG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5l
dHdvcmtBZ2VudCgpKQotICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbmV0
d29ya0FnZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExv
YWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2Fk
ZXIqIHJlc291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0
NGFlZDE0OTNiY2M2NTEuLjgyYWNjZWQyMGNmZDUxMzFiMjUwMmYwOTlhOWM0ZmEyZmRkNjE2ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKQEAgLTE5MywxMyArMTkzLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBk
aWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSYsIERvY3VtZW50TG9hZGVyKiwgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZShGcmFtZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZURhdGEoRnJhbWUqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBz
dGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
JiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVy
Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIApAQCAtNDE0LDcgKzQxNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1l
bnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNv
dXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVy
UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXImLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYpOwpAQCAtMTA4MiwxNyArMTA4MiwxNyBAQCBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9u
c2UoRG9jdW1lbgogICAgICAgICBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1w
bCgqYWdlbnRzLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIsIGlkZW50aWZpZXIpOwogfQogICAg
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShG
cmFtZSogZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSog
ZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEZBU1RfUkVUVVJO
X0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMs
IGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAg
ICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50aWZpZXIsIGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBk
aWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyhnbG9iYWxTY29wZSksIGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRh
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgYnVmZmVy
LCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2Fk
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcAppbmRleCAzOWIwMTFjZjA2ZjdmMzg1MzI0M2UwYTc2M2EzYjFkNDU0OTA0MTQ5Li4zMjhl
YmU3ZTY0MTE5NWU1YTQ2ODUwMjc1NTkxMGY3OGM0OGI1OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTkwLDEwICs5MCwx
MCBAQCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0
aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
QVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhKTsKIH0KIAogdW5zaWduZWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgp
CkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRh
KGNvbnN0IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEmIHIKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCitOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291
cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpA
QCAtMjMwLDE1ICsyMzAsMTUgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBj
b25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2UKICAgICBpZiAoIXNo
b3VsZEJ1ZmZlclJlc291cmNlRGF0YSgqcmVzb3VyY2VEYXRhKSkKICAgICAgICAgcmV0dXJuIHJl
c291cmNlRGF0YTsKIAotICAgIGlmIChyZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGFM
ZW5ndGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQorICAgIGlmIChyZXNv
dXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGEuc2l6ZSgpID4gbV9tYXhpbXVtU2luZ2xlUmVz
b3VyY2VDb250ZW50U2l6ZSkKICAgICAgICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEt
PmV2aWN0Q29udGVudCgpOwogICAgIGlmIChyZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0ZWQo
KSkKICAgICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKIAotICAgIGlmIChlbnN1cmVGcmVlU3Bh
Y2UoZGF0YUxlbmd0aCkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7Cisg
ICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhLnNpemUoKSkgJiYgIXJlc291cmNlRGF0YS0+aXND
b250ZW50RXZpY3RlZCgpKSB7CiAgICAgICAgIG1fcmVxdWVzdElkc0RlcXVlLmFwcGVuZChyZXF1
ZXN0SWQpOwotICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSwgZGF0YUxlbmd0
aCk7Ci0gICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKKyAgICAgICAgcmVzb3Vy
Y2VEYXRhLT5hcHBlbmREYXRhKGRhdGEpOworICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRhdGEu
c2l6ZSgpOwogICAgIH0KIAogICAgIHJldHVybiByZXNvdXJjZURhdGE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGRhYWU1ZmU0YTMx
ZTMxNTkzNjM3OTA0MjNmNWZiZDMzNzBjNWNkMzkuLmM4Y2VkMTJhNjQwN2ZkY2Q1NzRlY2MyYTc4
MTllZGU2NjM4MDNkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6
CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0
aCgpIGNvbnN0OwotICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJik7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKIAogICAg
ICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJj
ZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIHNl
dFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBj
b250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNv
bnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgIFJlc291cmNlRGF0YSBjb25z
dCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFy
ZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwCmluZGV4IDNjZWI0YjQ3ZjEwNjhhMGFmZWFmMDBmMTc5YzI4MDBjNDc2YmQ2YjEuLjlhNjFl
YjQyZDgxZTc5M2M5Y2Y0OWJjZDU2ZmQyMzA0ZGY0OWFlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
QEAgLTEyNCwxNSArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURl
dGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZQogICAg
IHsKLSAgICAgICAgaWYgKCFkYXRhTGVuZ3RoKQorICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PSAtMSkK
LSAgICAgICAgICAgIGRhdGFMZW5ndGggPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSkpOwotCi0gICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29kZXIt
PmRlY29kZShkYXRhLCBkYXRhTGVuZ3RoKSk7CisgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0g
dXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5k
YXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CisgICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZCht
X2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBkYXRhTGVuZ3RoKSk7CiAgICAgfQogCiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJp
ZGUKQEAgLTU0OSw5ICs1NDcsOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgICAgICAg
ICAgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCiAgICAgICAgICAgICAg
ICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBwcmV2aW91
c1Jlc291cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+YmFzZTY0RW5j
b2RlZCgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNC
dWZmZXJlZERhdGEoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNCdWZmZXIgPSBw
cmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNC
dWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBz
ZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIHByZXZpb3Vz
UmVzb3VyY2VEYXRhLT5idWZmZXIoKS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0o
YXV0byYmIGJ1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPm1h
eWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgYnVmZmVyKTsKICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTc0LDI0ICs1NzEsMjggQEAgdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmkKICAgICAvLyBJZiB3ZSByZXZhbGlkYXRlZCB0aGUgcmVzb3Vy
Y2UgYW5kIGdvdCBOb3QgbW9kaWZpZWQsIHNlbmQgY29udGVudCBsZW5ndGggZm9sbG93aW5nIGRp
ZFJlY2VpdmVSZXNwb25zZQogICAgIC8vIGFzIHRoZXJlIHdpbGwgYmUgbm8gY2FsbHMgdG8gZGlk
UmVjZWl2ZURhdGEgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KICAgICBpZiAoaXNOb3RNb2RpZmll
ZCAmJiBjYWNoZWRSZXNvdXJjZSAmJiBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSkKLSAg
ICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2Ut
PmVuY29kZWRTaXplKCksIDApOworICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KG1faGlkZGVuUmVxdWVzdElkZW50aWZpZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5Ojpy
ZXF1ZXN0SWQoaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBpbnQgZGF0YUxlbmd0aCA9IGRh
dGEuc2l6ZSgpOwogCi0gICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5t
YXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGlm
IChkYXRhLmRhdGEoKSkgeworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3Vy
Y2VEYXRhKHJlcXVlc3RJZCwgZGF0YSk7CiAKICAgICAgICAgLy8gRm9yIGEgc3luY2hyb25vdXMg
WEhSLCBpZiB3ZSBkaWRuJ3QgYWRkIGRhdGEgdGhlbiB3ZSBjYW4gYXBwbHkgaXQgaGVyZSBhcyBi
YXNlNjQgZW5jb2RlZCBjb250ZW50LgogICAgICAgICAvLyBPZnRlbiB0aGUgZGF0YSBpcyB0ZXh0
IGFuZCB3ZSB3b3VsZCBoYXZlIGEgZGVjb2RlciwgYnV0IGZvciBub24tdGV4dCB3ZSB3b24ndCBo
YXZlIGEgZGVjb2Rlci4KICAgICAgICAgLy8gU3luYyBYSFJzIG1heSBub3QgaGF2ZSBhIGNhY2hl
ZCByZXNvdXJjZSwgd2hpbGUgbm9uLXN5bmMgWEhScyB1c3VhbGx5IHRyYW5zZmVyIGRhdGEgb3Zl
ciBvbiBjb21wbGV0aW9uLgogICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSAm
JiByZXNvdXJjZURhdGEgJiYgIXJlc291cmNlRGF0YS0+aGFzQnVmZmVyZWREYXRhKCkgJiYgIXJl
c291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSkKLSAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0
YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0
YSwgZGF0YUxlbmd0aCksIHRydWUpOworICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRS
ZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpLCB0cnVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkYXRhTGVuZ3Ro
ID0gZW5jb2RlZERhdGFMZW5ndGg7CisgICAgICAgIGVuY29kZWREYXRhTGVuZ3RoID0gMDsKICAg
ICB9CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwg
dGltZXN0YW1wKCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTEyNzEsNyAr
MTI3Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgaWYgKGxvYWRlci0+cmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFibGUg
dG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfcyk7CiAK
LSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAg
LTEyOTYsOSArMTI5Nyw5IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgfQogICAgIHJl
c3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCByZXNwb25zZS5taW1lVHlwZSgpKTsKLSAgICBsb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShy
ZXNwb25zZSwgW2xvYWRlciwgYnVmZmVyID0gZGF0YS5yZWxlYXNlTm9uTnVsbCgpXSgpIG11dGFi
bGUgeworICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBi
dWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgewogICAgICAgICBpZiAoYnVmZmVyLT5z
aXplKCkpCi0gICAgICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZm
ZXIpLCBidWZmZXItPnNpemUoKSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAg
ICAgIGxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBidWZmZXItPnNpemUoKSwgRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKTsKICAgICAgICAgbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5l
dHdvcmtMb2FkTWV0cmljcygpKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggNmJjZDg3
ZGRjZDhiMDQ0MTMwOGQxZDAxZWNhNmIwZTZkYTE0MTNkNC4uY2E2Zjc0ZTFiODY5ODBmNDBiMTU1
ZDEzZTE2YjcxYWRmYjk0MDQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0T2ZUeXBlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRM
b2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OkxvYWRU
eXBlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9h
ZGVyKik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRp
ZEZhaWxMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDQzMzJkNjkxYmJmODI2YTdjODdlYTgzYTMxN2U5
NjExNWEyMDQ5OTMuLmI4NmY5YmE2Mzc2NWVjNGRmZTg0ZjAyZGE0ZGY3ODIzMDljMTU4ZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTE0NSwxNCArMTQ1LDE0
IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6
OkJsb2NrZWQ7CiB9CiAKLWJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNl
aXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQorYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQg
fTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9H
KENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICVkIGJ5dGVzIG9mIGRh
dGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tl
ZChbZGF0YSwgbGVuZ3RoXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsK
LSAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhLCBsZW5ndGgpOworICAgICAg
ICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVz
IG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgZGF0YS5zaXplKCksIG1fbWFpblJlc291cmNlLT51cmwo
KS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVy
VW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIm
IGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRh
KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQp
CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VE
YXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5k
YXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGll
bnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VD
b250aWd1b3VzKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAppbmRleCA4YjZkZWZmZmFiODBmNWRhYzI1
ODdlMzcxYzAxODc5YjlmM2ZkZjc3Li42MGI0ZGExYTliMzM2OGMyZGZlY2ZmNDJiODlmMzU1OGU4
MzMxYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRp
bnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBi
b29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCk7CisgICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJik7CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1
ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVE
YXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRl
eCAyMTVjMDRlYzk4OTVlOWYxZTZlMTQ3ZGE4MjA5MzAwOTg1MjM5NjIzLi5mYTdhZDMwMzlhMjA1
ZTkwNTcxMDhmM2M2ZjM5MjQxOWJjNDY0N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNz
IENvbnRlbnRGaWx0ZXJDbGllbnQgewpAQCAtNDEsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0
ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNv
bnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCmluZGV4IDZiZjNhYzI5N2VjNmIyNjNhMDc4NjQwYmNmM2FkNTc3OWRiMGZlZGIuLjk3
ZTNkNjViM2U5MmRlMzI3ZjkyZjNiYWQ0Y2M1MWMxNTQ5M2E1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDgzLDggKzQ4Myw4IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYW4gZW1w
dHkgZG9jdW1lbnQsIGl0IHdpbGwgbm90IGhhdmUgYWN0dWFsbHkgYmVlbiBjcmVhdGVkIHlldC4g
Q29tbWl0IGR1bW15IGRhdGEgc28gdGhhdAogICAgICAgICAvLyBEb2N1bWVudFdyaXRlcjo6YmVn
aW4oKSBnZXRzIGNhbGxlZCBhbmQgY3JlYXRlcyB0aGUgRG9jdW1lbnQuCiAgICAgICAgIGlmICgh
bV9nb3RGaXJzdEJ5dGUpCi0gICAgICAgICAgICBjb21taXREYXRhKDAsIDApOwotICAgICAgICAK
KyAgICAgICAgICAgIGNvbW1pdERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisKICAgICAg
ICAgaWYgKCFmcmFtZUxvYWRlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmcmFt
ZUxvYWRlcigpLT5jbGllbnQoKS5maW5pc2hlZExvYWRpbmcodGhpcyk7CkBAIC0xMTU3LDggKzEx
NTcsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQ
b2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1
dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwogICAgICAgICBpZiAoY29u
dGVudCAmJiBjb250ZW50LT5zaXplKCkpIHsKLSAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVk
KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICBjb250ZW50LT5m
b3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAg
ICAgICAgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fQogICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCkBAIC0xMTcxLDcgKzExNzEs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xp
Y3lBY3Rpb24gcG9saWN5KQogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0
TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRl
cjo6Y29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gQm90aCB1
bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0
ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3Rh
cnRpbmcgYSBuZXcgbG9hZCwgc28gcmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE4Niw3ICsxMTg2
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKQogICAgIGlmIChBcmNoaXZlRmFjdG9yeTo6aXNBcmNoaXZlTUlNRVR5cGUo
cmVzcG9uc2UoKS5taW1lVHlwZSgpKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgZnJh
bWVMb2FkZXItPmNsaWVudCgpLmNvbW1pdHRlZExvYWQodGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAg
ICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29tbWl0dGVkTG9hZCh0aGlzLCBkYXRhKTsKIAogICAg
IGlmIChpc011bHRpcGFydFJlcGxhY2luZ0xvYWQoKSkKICAgICAgICAgZnJhbWVMb2FkZXItPmNs
aWVudCgpLmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCk7CkBAIC0xMjE1LDcgKzEyMTUsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkVXNlQWN0aXZlU2VydmljZVdvcmtlckZyb21QYXJl
bnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQogfQogI2VuZGlmCiAKLXZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lk
IERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBpZiAoIW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1
ZTsKQEAgLTEzMTMsMjQgKzEzMTMsMjQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICNlbmRpZgogCiAgICAgQVNT
RVJUKG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNpbmcoKSk7Ci0gICAgbV93cml0ZXIuYWRkRGF0
YShieXRlcywgbGVuZ3RoKTsKKyAgICBtX3dyaXRlci5hZGREYXRhKGRhdGEpOwogfQogCi12b2lk
IERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFp
blJlc291cmNlKTsKLSAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKKyAgICBkYXRhUmVj
ZWl2ZWQoYnVmZmVyKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRh
UmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRl
ci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpKQorICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZChidWZmZXIpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgIEFTU0VSVChkYXRhKTsK
LSAgICBBU1NFUlQobGVuZ3RoKTsKKyAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSk7CisgICAgQVNT
RVJUKGJ1ZmZlci5zaXplKCkpOwogICAgIEFTU0VSVCghbV9yZXNwb25zZS5pc051bGwoKSk7CiAK
ICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBi
ZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCkBAIC0xMzQwLDEyICsx
MzQwLDEyIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKQogI2VuZGlmCiAKICAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIo
KS5kaXNwYXRjaERpZFJlY2VpdmVEYXRhKHRoaXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIsIGRhdGEsIGxlbmd0aCwgLTEpOworICAgICAgICBmcmFtZUxvYWRlcigp
LT5ub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEodGhpcywgbV9pZGVudGlmaWVyRm9y
TG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgYnVmZmVyLCAtMSk7CiAKLSAgICBtX2FwcGxpY2F0
aW9uQ2FjaGVIb3N0LT5tYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoLCAtMSwg
ZmFsc2UpOworICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNl
aXZlZChidWZmZXIsIC0xLCBmYWxzZSk7CiAKICAgICBpZiAoIWlzTXVsdGlwYXJ0UmVwbGFjaW5n
TG9hZCgpKQotICAgICAgICBjb21taXRMb2FkKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGNvbW1p
dExvYWQoYnVmZmVyKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0dXBGb3JSZXBsYWNl
KCkKQEAgLTE2MTQsNyArMTYxNCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRl
QXJjaGl2ZSgpCiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBl
KCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEo
bV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7
CisgICAgY29tbWl0RGF0YSgqbV9wYXJzZWRBcmNoaXZlRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7
CiAjZW5kaWYKIH0KQEAgLTIyNTcsOCArMjI1Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1h
eWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+
c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgp
OwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKG1haW5SZXNvdXJjZURhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNv
bkxvYWRpbmcoKQpAQCAtMjQxMCw5ICsyNDA5LDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5x
dWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24K
IH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLXZvaWQgRG9jdW1lbnRMb2FkZXI6
OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBzaXplKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgZGF0YVJlY2VpdmVkKGRh
dGEsIHNpemUpOworICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50
TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5k
ZXggYjQ2OTgxZDc1MGIyNWMxZmQzMDdmMTZmZGE3NGI3ZWUzMDZhNGMzOS4uMjhlMjhhNjg4YWU2
YjU3ZTBmMGQxNGM0ZTdhMGMyNTU4Y2I2N2U0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNs
YXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNXQ2xpZW50Q29ubmVjdGlvbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291
cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwogY2xhc3MgVXNlckNvbnRlbnRV
UkxQYXR0ZXJuOwpAQCAtMzc3LDcgKzM3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0VGlt
aW5nKCkgeyBtX2xvYWRUaW1pbmcgPSB7IH07IH0KIAogICAgIC8vIFRoZSBXZWJLaXQgbGF5ZXIg
Y2FsbHMgdGhpcyBmdW5jdGlvbiB3aGVuIGl0J3MgcmVhZHkgZm9yIHRoZSBkYXRhIHRvIGFjdHVh
bGx5IGJlIGFkZGVkIHRvIHRoZSBkb2N1bWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
bW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0JiBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpIGNvbnN0OwogICAgIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNhdGlvbkNhY2hlSG9zdFVubGVzc0JlaW5nRGVzdHJv
eWVkKCkgY29uc3Q7CkBAIC00NzcsNyArNDc4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29t
bWl0SWZSZWFkeSgpOwogICAgIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwotICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCB1aW50OF90KiwgaW50KTsKKyAg
ICB2b2lkIGNvbW1pdExvYWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbGVhck1h
aW5SZXNvdXJjZUxvYWRlcigpOwogCiAgICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKQEAgLTQ5
Myw3ICs0OTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFpblJlY2VpdmVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJy
aWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmV2
aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKQEAgLTUwMywxMyArNTA0LDEzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3Qg
dWludDhfdCosIGludCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRG
b3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRl
cihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAg
IGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBiOWM0MTM1MjU2NzYyNjcyMTkwN2Fm
MzY2ZGZiMWRlYzc5NGMyNDc0Li44NjRiNjVhMWQxMTMxZmI2MzcxMjViMTczOTkxZTlkM2UwYTZl
NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtNDM3LDIwICs0MzcsMjAgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQK
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsK
IH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQor
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBkaWRSZWNlaXZl
RGF0YShtX3Jlc291cmNlLT5pZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGRp
ZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgYnVmZmVyKTsKIH0KIAotdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9jbGll
bnQpOwogCiAgICAgaWYgKG1fZGVsYXlDYWxsYmFja3NGb3JJbnRlZ3JpdHlDaGVjaykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5n
dGgpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGZhbHNlKTsKIH0KIAog
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9h
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlVGltaW5nJiByZXNvdXJj
ZVRpbWluZykKQEAgLTQ5MywyMCArNDkzLDE0IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmCiAK
ICAgICAgICAgaWYgKG9wdGlvbnMoKS5maWx0ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJp
bmdQb2xpY3k6OkRpc2FibGUpIHsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZl
ciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKLSAgICAgICAgICAgICAgICBidWZm
ZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXpl
KCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKCpidWZmZXIsIGZhbHNlKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VS
ZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNl
LCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5j
bHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5v
IDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7
Ci0gICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKSkgewotICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8m
IHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRh
KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+
cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoKmJ1ZmZlciwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02NjcsMTEgKzY2MSw4
IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgfQogICAgIGRpZFJlY2VpdmVSZXNwb25z
ZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YSkgewotICAgICAgICBkYXRh
LT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgZGlkUmVj
ZWl2ZURhdGEoaWRlbnRpZmllciwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAg
ICAgICAgfSk7Ci0gICAgfQorICAgIGlmIChkYXRhKQorICAgICAgICBkaWRSZWNlaXZlRGF0YShp
ZGVudGlmaWVyLCAqZGF0YSk7CiAKICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5k
ZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRp
bWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1f
b3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3Jr
TG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygpLCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgK
aW5kZXggZjFmNDFlZTkxZDZjZThhMWM1ODYyMzgxN2IzNThmNzc0NjUxZTBhNC4uYzg2YmE3ZjQ1
MzgzYjZjMjg2MDAzMmQzYWViZmJhM2UwODYwNzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODYsMTQgKzg2LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAg
ICAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsK
LSAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5n
Rm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgb3Zl
cnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNvbnN0IFJl
c291cmNlVGltaW5nJik7CiAgICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyKTsKICAgICAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdp
bkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFdyaXRlci5jcHAKaW5kZXggYjA0NmVmMGRlMjA0OGVmZDQzMTk3MDI2MjJiOTZhN2Rm
MmZlYWZhNy4uNGZmOTM4MTgwZmRkMjhmYzcxNWQwODg4MTYwOGZjNjI4OTQ5MmU5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAg
dm9pZCBEb2N1bWVudFdyaXRlcjo6cmVwb3J0RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVp
bGQpOwogfQogCi12b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSB0byBBU1NF
UlQgb25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MjcgaGFz
IGJlZW4gcmVzb2x2ZWQuCiAgICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Tm90
U3RhcnRlZCk7CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBBU1NFUlQobV9wYXJzZXIpOwotICAgIG1fcGFyc2VyLT5hcHBlbmRCeXRlcygq
dGhpcywgYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjppbnNl
cnREYXRhU3luY2hyb25vdXNseShjb25zdCBTdHJpbmcmIG1hcmt1cCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggMDcxNzJjOTczOWViNTczNWJjODFmOGRlZjJmYjli
Mjg1YzI1NGQwYi4uYzBhMzRhNmI3ZTljZmU5NjQzMDQ1YTk1ZTc5MzIyNTIzNjNiMjY4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudFBhcnNlcjsK
IGNsYXNzIEZyYW1lOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVj
b2RlcjsKIAogY2xhc3MgRG9jdW1lbnRXcml0ZXIgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBVUkwmLCBib29sIGRp
c3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1l
bnQgPSBudWxscHRyKTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNp
emVfdCBsZW5ndGgpOworICAgIHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICB2b2lkIGluc2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYpOyAvLyBGb3IgYW4g
aW50ZXJuYWwgdXNlIG9ubHkgdG8gcHJldmVudCB0aGUgcGFyc2VyIGZyb20geWllbGRpbmcuCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAppbmRleCA3NThjYmU4MDY1NGU4ODg5N2FjZDllZDQxMTk5MGM4Njg2Y2FmM2Jh
Li5kMjNjOTZiNmM1MjgwM2ZlYzJlNDU3YjdlYzdkYmM5ZWIzNzk5NWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogewogfQogCi12
b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCB1aW50OF90KiwgaW50KQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21t
aXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
MjI2OTljOWM1MTgzMmE1YWE4Yzg5YWJhYjJmZmM3ZTA5ODViZmMwMC4uMTE2YTE3ZDFmNWM5ZTY0
N2UxZjE0MWExMDA4NmIwNzk4MzkzZjNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9h
ZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQg
Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgZmluYWw7CiAKICAg
ICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmRjOTdk
YzQ2MmM4NzUyNmFhMTg4Zjc5NjhkNjBhMGM4M2Q2ODBkOS4uMTFjMGE4ZjY4NjE1MDZlMDk2MWU1
MmE4ZmY0YzcyMGIyNWJlMjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBib29sIEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxl
bWVudFVSTChVUkwmIHVybCwgTm9kZSYgaW5pdGlhdG9yTm9kZSkKICAgICBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJl
cXVlc3RGcm9tRGVsZWdhdGUocmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlm
aWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQo
KSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAt
MSwgU3RyaW5nKCkpLCAwLCAtMSwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIs
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKSwg
bnVsbHB0ciwgLTEsIGVycm9yKTsKIAogICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKQEAgLTIw
ODcsOCArMjA4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgp
CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwog
CiAgICAgICAgIC8vIFNlbmQgcmVtYWluaW5nIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBtYWluIHJl
c291cmNlLgotICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNv
dXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwKLSAgICAgICAgICAgIG51bGxwdHIsIHN0
YXRpY19jYXN0PGludD4obV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKSksIDAsIG1haW5SZXNvdWNlRXJyb3IpOworICAgICAgICBub3RpZmllcigpLnNl
bmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5S
ZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Uo
KSwgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgp
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgbWFpblJlc291Y2VFcnJvcik7CiAKICAgICAgICAg
VmVjdG9yPFJlZjxGcmFtZT4+IHRhcmdldEZyYW1lczsKICAgICAgICAgdGFyZ2V0RnJhbWVzLmFw
cGVuZChtX2ZyYW1lKTsKQEAgLTIxMzYsNyArMjEzNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNv
bW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEg
cmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUg
cmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0
ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2Uu
CiAgICAgICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmls
ZS4KLSAgICAgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMo
bV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIDAs
IHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBl
cnJvcik7CisgICAgICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNl
LCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpKSwgZXJyb3IpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdoeSBvbmx5IHRo
aXMgZnJhbWUgYW5kIG5vdCBwYXJlbnQgZnJhbWVzPwpAQCAtMzE2Niw3ICszMTY1LDggQEAgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGlu
YXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hE
ZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbm90
aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0YSA/IGRhdGEtPmRhdGEoKSA6
IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAtMSwgZXJyb3IpOworCisgICAgbm90
aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0YSwgLTEsIGVycm9yKTsKICAg
ICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIApAQCAtMzY0Nyw3ICszNjQ3LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBSZXNvdXIKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNvdXJj
ZS5yZXNwb25zZSgpOwogICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpT
b3VyY2U6Ok1lbW9yeUNhY2hlKTsKLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3Qs
IHJlc3BvbnNlLCAwLCByZXNvdXJjZS5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CisgICAgbm90
aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwgbnVsbHB0ciwgcmVzb3VyY2Uu
ZW5jb2RlZFNpemUoKSwgZXJyb3IpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjphcHBseVVzZXJB
Z2VudElmTmVlZGVkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFi
YzEyODk4ZDEyMzY1Mi4uMzUyYTRjNGZiNTA0ZjdjZDRkMmVjNDA2ZTZiYzI5MTFhNTVmZDA5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTcsNyArNyw3
IEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uIApAQCAtNTAsNyArNTAsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNp
ZmRlZiBfX09CSkNfXyAKKyNpZmRlZiBfX09CSkNfXwogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiB0eXBlZGVmIGlkIFJlbW90ZUFYT2JqZWN0UmVmOwogI2Vsc2UKQEAgLTk4LDcg
Kzk4LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0
ZURhdGE7CiBjbGFzcyBXaWRnZXQ7CiAKQEAgLTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9IDA7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKikgPSAwOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUds
b2JhbEhpc3RvcnkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlS
ZWRpcmVjdExpbmtzKCkgPSAwOwogCkBAIC0yNzIsNyArMjcyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIFN0cmluZyBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRv
Q2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRp
b25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopID0gMDsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdmlydHVhbCBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3NDb250ZW50SmF2YVNjcmlw
dEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEFsbG93c0NvbnRlbnRK
YXZhU2NyaXB0OjpZZXM7IH0KLSAgICAKKwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rp
b25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFn
ZU9mQXBwQm91bmRCZWhhdmlvcigpIHsgfQpAQCAtMzkwLDcgKzM5MCw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlUERGUGx1
Z2luKGNvbnN0IFN0cmluZyYsIFN0cmluZ1ZpZXcpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZW5kaWYKLSAgICAKKwogICAgIHZpcnR1YWwgYm9vbCBpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJy
b3dzZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDVkMTIwZTI0N2FjMjYyNzExNjFk
ZTBkYzUyMzAyNGRjOGRlMzRkNjkuLjFhMTdhNzBmYTU4YzcyMjhmNjM4OTM1OWRkMGQzMzlkMGUw
NWNkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTIzMSwxMyArMjMxLDEzIEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTCiAgICAgICAg
IG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogfQogCi12b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBNZWRp
YVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRh
UmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NsaWVudC0+ZGF0
YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmgKaW5kZXggZmY2YzI4ODcxMDA4OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NS4uN2I1NTc3
MjBlZjA1MzNmYmFhMjI2NTY1MzhlZmRkOTZmNjE3OWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2Uo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggNjA0M2FjOWJlMjY3ZWE0
ZmJjNzFlMTExOGI5MDc5MTU1ZTM5MTUwMy4uNWNhYWRmNjI5YzcwYWUwODZiNzdiZDcyY2QyODY3
NTM2YjhmYTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDEsMzAgKzE0MSwxNCBAQCB2b2lkIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcAogICAgIH0pOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKLXsKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxs
cHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwotfQotCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkK
IHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCi0gICAgaWYgKG1fY2xpZW50KSB7Ci0gICAgICAgIGlmIChidWZmZXIpIHsKLSAgICAg
ICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgc2VnbWVudC5kYXRhKCks
IHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOwotICAg
IH0KKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0
aGlzLCBidWZmZXIpOwogCi0gICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRh
UGF5bG9hZFR5cGUpOworICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShidWZmZXIs
IGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCiB2b2lkIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCBiNTE3NGVkYzk0Yjk5MjM5MDIwNWYw
ZmFkNDUyZWE1YWMzODc4OTM4Li4xZWM3ZDYxZTNhMTc1YzIyYjU1ODc1OGQzN2VkMGM1NWJlNWYx
M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaApAQCAtMzYsMTIgKzM2LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90Kiwg
aW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciopIHsgfQogICAgIHZpcnR1YWwgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNjIsOCArNjMsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogCkBAIC03NCw4ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENh
bmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
KTsKLQogICAgIHZvaWQgbm90aWZ5RG9uZSgpOwogCiAgICAgV2Vha1B0cjxOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudD4gbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAppbmRleCA2MmJiNTZlMzRlNmY0NmQyNjI4MzZjZmNh
NDY1YjRkYjBlMzA4M2NmLi4xYWMwZTY3YzdmNjhkZWQwZWNiNzhlMTFjMDI0NjliMTA5MWQ1M2I3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NU
cmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKIAogI2lmIFVTRShRVUlDS19MT09LKQogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgpA
QCAtNzgsMTIgKzc5LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvCiAgICAgZGlzcGF0Y2hE
aWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50
aWZpZXIoKSwgciwgbG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNy
ZW1lbnRQcm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCks
IGJ1ZmZlci5zaXplKCkpOwogCi0gICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhLCBkYXRhTGVuZ3RoLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmluaXNoTG9hZChS
ZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmljcykKQEAgLTE1MywxMyArMTU0LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZp
ZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJl
CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIsIHJlc291cmNlTG9hZGVyKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
K3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
Ly8gTm90aWZ5aW5nIHRoZSBGcmFtZUxvYWRlckNsaWVudCBtYXkgY2F1c2UgdGhlIGZyYW1lIHRv
IGJlIGRlc3Ryb3llZC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7Ci0gICAgbV9m
cmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxv
YWRlciwgaWRlbnRpZmllciwgZGF0YUxlbmd0aCk7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGll
bnQoKS5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwg
YnVmZmVyLnNpemUoKSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgm
bV9mcmFtZSwgaWRlbnRpZmllciwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZv
aWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVy
KiByZXNvdXJjZUxvYWRlcikKQEAgLTE4MCw3ICsxODEsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJl
c291cgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJh
bWUsIGxvYWRlciwgaWRlbnRpZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5k
UmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewogICAgIC8vIElmIHRoZSByZXF1ZXN0IGlzIG51bGwsIHdpbGxTZW5kUmVx
dWVzdCBjYW5jZWxsZWQgdGhlIGxvYWQuIFdlIHNob3VsZAogICAgIC8vIG9ubHkgZGlzcGF0Y2gg
ZGlkRmFpbExvYWRpbmcgaW4gdGhpcyBjYXNlLgpAQCAtMTkzLDggKzE5NCw4IEBAIHZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsCiAgICAgaWYgKCFyZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgZGlz
cGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CiAK
LSAgICBpZiAoZGF0YUxlbmd0aCA+IDApCi0gICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEo
bG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKKyAgICAgICAgZGlzcGF0Y2hEaWRS
ZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZpZXIsICpidWZmZXIsIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIAogICAgIGlmIChlcnJvci5pc051bGwoKSkgewogICAgICAgICBOZXR3b3JrTG9hZE1ldHJp
Y3MgZW1wdHlNZXRyaWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuaAppbmRleCA2ZGExNjAzMjVmNDJmZWY1NDBjNmJkNTBiYjE4MmU4NjlkYWRlOWUzLi4y
YjI1ZDhhM2RkNjE5NDBmNWNhZjU0ZGE5Yzc0NjViMGEyOGQzNDliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBSZXNvdXJjZUxvYWROb3RpZmllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVz
b3VyY2VMb2FkTm90aWZpZXIpOwpAQCAtNTUsMTggKzU2LDE4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBp
bnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZp
ZXJUb0luaXRpYWxSZXF1ZXN0KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRS
ZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2Uo
RG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciogPSBudWxscHRyKTsKLSAgICB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExv
YWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9j
dW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKIAotICAgIHZvaWQgc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRM
b2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAg
dm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+LCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIGJvb2wgaXNJbml0aWFsUmVxdWVz
dElkZW50aWZpZXIoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNmRlYmIyNTg4YTNl
ODJiMjFjNjFkN2U4ZjM2ZTRmNGJiYmEyNWU2MC4uNjY0N2MyNzA4MTE4MGViY2VjMmI1Y2EyOWZk
NjBiNzIzYWI2NDgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQog
CiAgICAgICAgIGF1dG8gZGF0YVNpemUgPSBkZWNvZGVSZXN1bHQtPmRhdGEuc2l6ZSgpOwogICAg
ICAgICBSZXNvdXJjZVJlc3BvbnNlIGRhdGFSZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRh
dGFVUkxSZXNwb25zZSh1cmwsIGRlY29kZVJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAgdGhpcy0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkYXRhU2l6ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGVjb2RlUmVzdWx0LT5kYXRhKSldKCkgbXV0YWJsZSB7CisgICAgICAgIHRo
aXMtPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRlY29kZVJlc3VsdC0+ZGF0YSkpXSgpIHsKICAgICAgICAgICAgIGlm
ICghdGhpcy0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRhU2l6ZSAmJiBtX3JlcXVlc3Qu
aHR0cE1ldGhvZCgpICE9ICJIRUFEIikKLSAgICAgICAgICAgICAgICB0aGlzLT5kaWRSZWNlaXZl
QnVmZmVyKFdURk1vdmUoZGF0YSksIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2Up
OworICAgICAgICAgICAgICAgIHRoaXMtPmRpZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0YVNpemUs
IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CiAKICAgICAgICAgICAgIGlmICghdGhpcy0+cmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSkgewogICAgICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmlj
cyBlbXB0eU1ldHJpY3M7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNl
bCgpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZm
ZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVy
OjphZGRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZl
cmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAg
ICAgIHJldHVybjsKQEAgLTMzNiwxMCArMzM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ20K
ICAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKICAg
ICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKIAotICAgIGlmIChidWZmZXIpCi0gICAgICAg
IG1fcmVzb3VyY2VEYXRhLmFwcGVuZCgqYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcmVz
b3VyY2VEYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVu
ZChidWZmZXIpOwogfQogCiBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxv
YWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKQEAgLTUzOSw3ICs1MzYsNyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwg
Q29tcGxldGlvbkhhbgogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2Vp
dmVSZXNwb25zZSh0aGlzLCBtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
Cit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0
YVBheWxvYWRUeXBlKQogewogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhcmUgbm90
IHF1aXRlIHZhbGlkIGhlcmUsIHNpbmNlIGEgc3ViY2xhc3MKICAgICAvLyBtaWdodCBvdmVycmlk
ZSBkaWRSZWNlaXZlRGF0YSBpbiBhIHdheSB0aGF0IGludmFsaWRhdGVzIHRoZW0uIFRoaXMKQEAg
LTU0NywzMCArNTQ0LDIyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsCiAgICAgLy8gQVNTRVJU
KGNvbiA9PSBjb25uZWN0aW9uKTsKICAgICAvLyBBU1NFUlQoIW1fcmVhY2hlZFRlcm1pbmFsU3Rh
dGUpOwogCi0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIs
IGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIGRpZFJlY2VpdmVCdWZm
ZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWRE
YXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAg
Ly8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3RoICpPUiogYSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyLgotICAgIEFTU0VSVCghYnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3Ro
KSk7Ci0KICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2Ug
dGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRp
bmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAz
MjY2MjE2LgogICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
LSAgICBhZGREYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXls
b2FkVHlwZSk7CisgICAgYWRkQnVmZmVyKGJ1ZmZlciwgZGF0YVBheWxvYWRUeXBlKTsKIAogICAg
IC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywg
dGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAvLyBIb3dldmVyLCB3aXRo
IHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBw
ZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxv
Y2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2Fs
bGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2Fk
ZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
bGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCksIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTcyOSwxNCArNzE4LDE0IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSZXNwb25zZSYmCiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgZGlkUmVjZWl2ZURhdGEo
YnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKLSAgICBkaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4
IDkwNzVjYmMwYTMwNDBlYTE1MGE4NjI1Y2RhMDg5MGIxZWUxMzhjNzIuLjEwOThlNGYyNzg4OWNk
YTdiM2E5Y2ZkNGQ1NDZhZTJmZDlhN2M1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCkBAIC0xMDcsOCArMTA3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5k
bGVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVu
c2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjcsOCArMTY3LDYg
QEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBt
X2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSk7Ci0gICAgCiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSBy
ZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGlj
eTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4g
bV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CiAKQEAgLTE5Miw3ICsxOTAsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
Ci0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZEJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2
b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0y
MDIsOCArMjAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFu
ZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5z
aWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2Fz
QmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2Vm
Yzk0MTJhNTFiYjFhOS4uOTcyZjJhZjIyNjAzZjQyNGNkODc3NWY1OTEwMTBlMmQ3NjkzOGEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MTgs
MzIgKzUxOCwxNSBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VQ
b2xpY3koKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQo
KSkgewotICAgICAgICBpZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVu
Z3RoKSkKKyAgICAgICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5t
YWtlQ29udGlndW91cygpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAot
ICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVk
RGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKLXsKLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVy
ID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7Ci0gICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5k
aWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCi0KLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCi17CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCiAgICAgaWYgKG1fcmVzb3Vy
Y2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAgJiYgIW1fcmVzb3VyY2UtPnNo
b3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkpCkBAIC01NTUsMTMgKzUzOCwxMyBAQCB2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5n
IHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBp
cyAzMjY2MjE2LgogICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKLSAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBs
ZW5ndGgsIGJ1ZmZlci5jb3B5UmVmKCksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOworICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICBpZiAoIW1fbG9hZGluZ011bHRp
cGFydENvbnRlbnQpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+
dXBkYXRlRGF0YShidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDgzMmM5ZjBlNzNkMzg0NjRh
Nzk1ZjQwMzg2MGY3OWMzNGU3M2JjN2YuLjNkYmQ1MzM4YWZlNDliNDc4NTdkNTM0MDk3ODg3NTJl
YWExYWVkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBA
IC03Myw4ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTEsNyBA
QCBwcml2YXRlOgogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0
ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCBjZjJkZTBjNjJkOTVmMzMy
NWI0MmI0NmUyNDAzNzc0NDEwNzQyYTBkLi4zZDE5Mjg2MmYyNzcyOWIyZjM4ZGI1NGJkODM2Nzk5
NTI1YzAxOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
CkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9Ci0gICAgdm9pZCBhcHBlbmQoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0
aCk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgeyBtX2Rh
dGEuYXBwZW5kKGJ1ZmZlcik7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKaW5k
ZXggODRkNzliMGM5OWRmMTBkOTkzODBiODQ4MzE3MzcxYmMxZTg1NzNiZi4uY2VmMGM4ZjFmMTdk
MGY1NzY1OWEzNTQxYjU0ZjYzODk5MDY0YjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgUmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZGFibGVM
b2FkZXJDbGllbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
LypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8p
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJv
b2wgLyogdXNlU3RyTGVuICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoVGlt
aW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCmluZGV4IDQyYWU2NDkwOWE1
ZTBmZTQ0YzZhNWUwMDYwZDU4Yzk2NGVjNTYwNTEuLmYzNmEyZDQwN2FmODgxNTkwNDI4NjZiODVl
OWUwMTg2MWRhYWM3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNw
b25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKICAgICB7CiAgICAgICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVu
Z3RoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIHVzZVN0
ckxlbik7CiAgICAgfQogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGRmZjg5NzAxYzkzOWJjNzNjMzcwMzJhZDljNDJh
ZDIwNjMyNmFkNmUuLjdjMDM0OTQ1ZWUwM2E3NGY1MzMzOWJiODFmZmEwZTA2YzY5YzcxNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAK
QEAgLTIzMSwxNCArMjMxLDEzIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyCiAgICAgfSwgbV90
YXNrTW9kZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
Cit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCB1c2VTdHJMZW4pCiB7Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3Rl
ZFdvcmtlckNsaWVudFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdv
cmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29y
a2VyQ2xpZW50V3JhcHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVx
dWVzdElkZW50aWZpZXIsIGJ1ZmZlciA9IFJlZiB7IGRhdGEgfSwgdXNlU3RyTGVuXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKLSAg
ICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgdXNlU3RyTGVuKTsKICAgICAgICAgaWYgKGlz
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElk
ZW50aWZpZXIsIGJ1ZmZlcik7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDcyM2I0NTZlYzhl
OWUzMDZmYzE4Y2M4ZjM2ZGU2ZGNkOGFlMzA0NzAuLjMzOWQ2ZjQ3MzEwYTFlZDI4OTAzNmFkMGE0
MDRmMzhhN2EyNjg2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEFs
bCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaFRp
bWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXgg
NTE5NzhmNDEyMzg3NGRjNTY2MGVmZjQ3MDY1OTcwN2Q0ZTVkODVhNy4uZWQ3NTY2NTI2YjJkN2Vm
YmYxYzUxNzAyMDk1YTg3OWJhZjU2OTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0xNDksNyArMTQ5
LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWlu
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVp
bnQ4X3QqLCBpbnQsIGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcs
IGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMx
NzBjZGY3MjM2NzJhMC4uZDJhZWFlYzNlMTRjNjNiY2JmNjAxZTlhYWYwMjRjMWY5ZWM0NzZkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWF5YmVMb2Fk
TWFpblJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAg
ICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JN
YWluUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9u
Y2UpOworICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9uY2UpOwogICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAgdm9pZCBmYWlsZWRMb2FkaW5n
TWFpblJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggMmJiM2ZlNzViOTk3
N2U4MzMyMmFlMjU4MGY3MjEyZWU1YmYyMTYxMC4uMjU2ZTg5YjIxMWIzOGIyZDIxZGNkNjY1Nzgy
NjllNjYwNzM2NzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDEwIEBA
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtl
Q29udGlndW91cygpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9w
YXRoKSk7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGxvYWRlci5kZWxpdmVy
UmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIFJlZlB0ciB7ICZkYXRhKCkgfSk7CisgICAgZWxz
ZQorICAgICAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3
YjhiNTA3NGM3MTI5MjYuLjU0ZmVlZDJjYTY0MTJiNDUyMDk4NzBjNzczNDM2MDlkODUwOWI3Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05OSw5ICs5OSw5IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSA9IEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKG1fcmVzb3VyY2UtPnVybCgpLCByZXNwb25z
ZSwgbV90eXBlKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9hcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyLmgKaW5kZXggMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3
ZWJlOWIwNjllMjMyZC4uMGIyOTYyODhmMzFhNDMyNWQ0ODQ5YTQ0MmU4YWU2MDJjMTczMTkyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNTA0NjVj
YzZjMDEzM2U1YTc3NDQ1Y2Y5NDczMzNmZTIwNjQwODYxZC4uZDc3MWEwNzJiNjEwM2FlYmMzZTkw
ZDUxZWQ0ODNhYTE3MmJhN2Y0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCkBAIC00NjgsOSArNDY4LDkgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6
OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICBtX2RhdGEgPSBkYXRhOwogICAgIHNldEVuY29kZWRTaXplKG1fZGF0YS0+c2l6
ZSgpKTsKICAgICBjcmVhdGVJbWFnZSgpOwogCkBAIC01NTgsMTUgKzU1OCwxNSBAQCBFbmNvZGVk
RGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKQogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBE
YXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICB1cGRhdGVCdWZmZXJJbnRlcm5h
bChkYXRhKTsKKyAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhLm1ha2VDb250aWd1b3VzKCkp
OwogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoZGF0YSk7CiB9CiAKLXZvaWQgQ2Fj
aGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7Ci0gICAgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0
ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChidWZmZXIpOwor
ICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ2FjaGVk
SW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlODQzMDg3MGI0OGFmM2RjOTViYmEzY2FkMWE2NGUw
NjhhZTE1NTEzLi5hNWRjNjNmMjNkYmQ0MWEyNzBlZTU2YzMyYTQ0MTc3N2Q2YWRkYjQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI4LDcgKzEyOCw3
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVl
ZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQg
ZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VE
YXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlcnJvcihDYWNoZWRS
ZXNvdXJjZTo6U3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogCkBAIC0xNjksNyArMTY5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0
Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpOwogCi0g
ICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsK
IAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
CmluZGV4IDcxZTE2MDgyZmZlNjU1ZDExMWYxNjk5MGQxMjMwNTM1YmVhY2JmOTUuLmQzMzYxMTMy
MTNmYmViZmY0ZTkxZmY2NWY4M2ZmZTI0ZDNlOGEwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBA
IENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFPckljb25P
clJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3
PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2hhcmVk
QnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERh
dGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHBy
ZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7Ci0gICAgaWYgKCFkYXRhIHx8IGRhdGEt
PnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCisgICAgaWYgKGRhdGEuc2l6ZSgpIDw9IHBy
ZXZpb3VzRGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1
cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKKyAgICByZXR1cm4gZGF0
YS5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCiB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
QEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgICAgIHByZXZpb3VzRGF0YVNp
emUgKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKIAogICAgICAgICBTZXRGb3JTY29wZTxib29s
PiBub3RpZnlTY29wZShtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5LCB0cnVlKTsKLSAgICAgICAg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEuZGF0YSgpLCBpbmNy
ZW1lbnRhbERhdGEuc2l6ZSgpKTsKKyAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChpbmNyZW1lbnRhbERhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkpOwogICAgIH0KICAgICBzZXRF
bmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAKQEAgLTg5LDExICs4OSwxMSBAQCB2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBDYWNoZWRSYXdSZXNv
dXJjZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVm
ZmVyRGF0YSk7Ci0gICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChkYXRhLCBsZW5ndGgp
OwotICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChidWZmZXIpOworICAgIENhY2hlZFJlc291cmNlOjp1
cGRhdGVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExv
YWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBtZXRyaWNzKQpAQCAtMTEwLDkgKzExMCw5IEBAIHZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QKICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgIGlmIChkYXRhICE9IG1fZGF0
YS5nZXQoKSkKICAgICAgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygp
OwotICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVt
ZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFs
RGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKCptX2RhdGEpKSB7CiAgICAgICAg
ICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBu
b3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNy
ZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFX
YXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwpA
QCAtMTMwLDE1ICsxMzAsMTUgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgIH0KIH0KIAot
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25z
dCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewotICAgIGlmICghbGVuZ3RoKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNo
ZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5kYXRhUmVjZWl2ZWQoKnRo
aXMsIGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGMtPmRhdGFSZWNlaXZlZCgqdGhpcywgYnVmZmVy
KTsKIH0KIAogc3RhdGljIHZvaWQgaXRlcmF0ZVJlZGlyZWN0cyhDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4mJiBoYW5kbGUsIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50JiBj
bGllbnQsIFZlY3RvcjxzdGQ6OnBhaXI8UmVzb3VyY2VSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNl
Pj4mJiByZWRpcmVjdHNJblJldmVyc2VPcmRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzAsOSArMTcwLDkgQEAg
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50
JiBjKQogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgICAgIG1f
ZGF0YS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgICAg
ICBtX2RhdGEtPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsaWVudCgqY2xpZW50KSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBzZWdtZW50LmRhdGEo
KSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LT5kYXRh
UmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggYTc4NjVmOGFkMTc4
YWVmYjMyMjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNC4uMzZlNDdhMWRiYTIzMTI4ZGM1MzA3M2I3MGI1
ZjNmODUzODA0YWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIFJlc291cmNlVGltaW5nOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKIGNsYXNzIENhY2hl
ZFJhd1Jlc291cmNlIGZpbmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKQEAgLTUyLDcgKzUz
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNv
dXJjZUNsaWVudCYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
IAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC02Niw4ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Fs
bG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAgc3RkOjpvcHRpb25hbDxTaGFyZWRC
dWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNS
ZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0ZDo6
b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNo
dW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIHZvaWQgbm90aWZ5Q2xpZW50c0Rh
dGFXYXNSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAKICNpZiBVU0UoUVVJQ0tf
TE9PSykKICAgICB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKaW5kZXggMjNlYWI4ZGYyOTU4ZmY4YjQ5ZjM1NDViNTA4
M2ZlMjk4OWVmMTIyMC4uY2Q2NTBhMmYzMTM2Y2U5YjI2MmZiZGZjODI5MjhiZjIxMDc5ZmJjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUmVzb3Vy
Y2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNl
Q2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTQ2LDcg
KzQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJl
c3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgdWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVh
bCB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlVGltaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDlkZTBhMDRjZDVlYzVmM2ZhZDJmYjE2ZDdiMzIyYzg1
OGEzOGE2YjIuLjdiOWM2MWY5NjYxNzU0NmI2NmJjYzNjNjNlY2EwZTg1N2UyNjJlZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzQx
LDcgKzM0MSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291
cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKK3ZvaWQgQ2FjaGVkUmVz
b3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0
YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmlu
ZGV4IGM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0NzguLjUzNGUwMTJjYzRm
YTVkZDJiZTFmZDZlZWU1YWE2YWU0ZTVmYWUyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAg
ICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIo
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpT
dGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xv
YWRlci5oCmluZGV4IDk2ZDg5ODJlOTM1MDM0NzY5NmZjOTY5ZDU4NWFiNzA3NWRlMDIwZWQuLmNh
MDE5MzRkMzFiYTVkNTA5ZmViZTdkMmY5MTIyNDlkMjcxMjZhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC00Nyw4ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwogCiAgICAgYm9vbCBkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBkaWRGaW5pc2hM
b2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCA0ODc1NmEzM2I1ODcyYjQ0YjJm
MGJhMDg0MjQxZjg2Y2ZhZWJjYWEwLi5hMjRiOGM1OWQ0NjBhZmY1ZTJmZWY4MzE5MGMyMDg2NTcy
MzY1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWY8TGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjCiAgICAg
cmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29s
IExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgTGVnYWN5UHJldmll
d0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGFwcGVuZGluZyBi
dWZmZXIgd2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKICAgICBtX29yaWdpbmFsRGF0
YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZlcnRlci0+dXBkYXRlTWFpblJlc291cmNlKCk7
Ci0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyKTsKKyAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTYyLDgg
KzE2Miw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJl
Y2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zCiAgICAgaWYgKCFtX2hhc1Byb2Nlc3Nl
ZFJlc3BvbnNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRhdGFDb3B5ID0gZGF0YS5j
b3B5KCk7Ci0gICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShkYXRh
Q29weSksIGRhdGFDb3B5LT5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIHJlc291cmNl
TG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGRhdGEsIGRhdGEuc2l6ZSgpLCBEYXRhUGF5bG9hZEJ5
dGVzKTsKIH0KIAogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlk
RmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikKQEAgLTI0MywxMSArMjQyLDYgQEAg
TGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYg
bG9hZGVyLCBjb25zdCBSZXNvdXJjZVIKICAgICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdM
b2FkZXIgY3JlYXRlZCB3aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNcIi4iLCBtX2NvbnZlcnRl
ci0+cHJldmlld0ZpbGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWJvb2wgTGVnYWN5UHJl
dmlld0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bGVuZ3RoKQotewotICAgIHJldHVybiBkaWRSZWNlaXZlQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIGxlbmd0aCkuZ2V0KCkpOwotfQotCiBib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKICAgICByZXR1
cm4gIW1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5jcHAKaW5kZXggNjAyNjMxYmI3Y2QxMDg2MGIxYTMxMjEwNDNjOTdkOGVmZTQ0NzYx
ZC4uNjdhYzc3ZTJiZjc2MTA0NWM4YzE4ZDVjN2FkZWM3ZjczMzhhYjcxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMjEwLDEzICsyMTEsMTMgQEAg
dm9pZCBFdmVudFNvdXJjZTo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKICAgICBkaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6
Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCi12b2lkIEV2ZW50U291cmNlOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBFdmVu
dFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wp
CiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gT1BFTik7CiAgICAgQVNTRVJUKG1fcmVxdWVzdElu
RmxpZ2h0KTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFt
X2lzU3VzcGVuZGVkRm9yQmFja0ZvcndhcmRDYWNoZSk7CiAKLSAgICBhcHBlbmQobV9yZWNlaXZl
QnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpKTsKKyAgICBhcHBlbmQobV9y
ZWNlaXZlQnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKSk7CiAgICAgcGFyc2VFdmVudFN0cmVhbSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmgKaW5kZXggZDAxMmQzNzdkMTk3Njc1ZjBmZTExNDVmMTcxOWYxN2ZkZGJmZWEzYi4uZDY2
MmFlMjgwNmY0YjI0ODY3YjAxNjA4ZTA0ZGJiNGY5N2RiYTA2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhyZWFkYWJs
ZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCmluZGV4IDllNzJlNDRhMmVhYzRkOGVm
NzMwYjk4NzFkMGVjNTA4ZWQ5ZmFjNDQuLjQ2MmNmM2I4NzQyMzM4NWJlODNhMDAyZTQzZjc0NDc3
OTk4N2VlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29u
dGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVu
dEZpbHRlci5oCkBAIC0yNiwxNSArMjYsMTcgQEAKICNpZm5kZWYgUGxhdGZvcm1Db250ZW50Rmls
dGVyX2gKICNkZWZpbmUgUGxhdGZvcm1Db250ZW50RmlsdGVyX2gKIAorI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtQ29udGVudEZp
bHRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01NCw3ICs1Niw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIoKSA9IGRlZmF1bHQ7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFkZERhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBh
ZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
ZWRBZGRpbmdEYXRhKCkgPSAwOwogICAgIHZpcnR1YWwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkMzk2
MTU2ODg0YjRiNzllM2U1NWQ1NjkxZDcxOGM4ODc1ZmY5ZmY3Li5iODZkNDlkNGFmMzNjNjQ1ODJi
NmJlYTQwNjIyNjE1OTkyZDVhY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0
YTsKICAgICBpZiAoaGFzT25lU2VnbWVudCgpICYmIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVj
dG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCi0g
ICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhjaGFuZ2Uoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4
X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSksIFZlY3Rvcjx1aW50
OF90PigpKTsKKyAgICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNoYW5nZShzdGQ6OmdldDxW
ZWN0b3I8dWludDhfdD4+KGNvbnN0X2Nhc3Q8RGF0YVNlZ21lbnQmPihtX3NlZ21lbnRzWzBdLnNl
Z21lbnQuZ2V0KCkpLm1faW1tdXRhYmxlRGF0YSksIFZlY3Rvcjx1aW50OF90PigpKTsKICAgICBl
bHNlCiAgICAgICAgIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50
cywgbV9zaXplKTsKIApAQCAtMjMxLDYgKzIzMSw4IEBAIHZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6Y2xlYXIoKQogCiBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiB7CisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAg
ICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID8gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zZWdt
ZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAg
IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcik7CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9u
ZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsK
QEAgLTI0OCw2ICsyNTAsMTMgQEAgdm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNo
U2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QKICAgICAgICAgYXBw
bHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUo
KSB9KTsKIH0KIAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudEFz
U2hhcmVkQnVmZmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik+JiBh
cHBseSkgY29uc3QKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9Owor
ICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCisgICAgICAgIGFwcGx5KFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNlZ21lbnQuc2VnbWVudC5jb3B5UmVmKCkpKTsKK30KKwogYm9vbCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhf
dD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVtcHR5KCkpCkBAIC00MTMsNyAr
NDIyLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKQogICAgIG1fY29udGlndW91cyA9
IHRydWU7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4m
JiBzZWdtZW50KQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdt
ZW50PiYmIHNlZ21lbnQpCiB7CiAgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOwogICAgIG1f
c2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKQEAgLTYwMSw3ICs2MTAs
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcigpCiAgICAgICAgIG1f
YnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiB9CiAKLVNoYXJlZEJ1
ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2Vn
bWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPGNv
bnN0IERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQs
IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2Vn
bWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21l
bnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3Np
dGlvbldpdGhpblNlZ21lbnQpCkBAIC02MTcsNyArNjI2LDcgQEAgU2hhcmVkQnVmZmVyRGF0YVZp
ZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3JiBvdGhl
ciwgc2kKIAogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNo
YXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50
ID0gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxjb25zdCBEYXRhU2VnbWVudD4gc2VnbWVudCA9
IG1fc2VnbWVudDsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6
OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4g
ZGF0YTsgfSwKICAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjMjdjOTI2OWZmZWYyNDlhYjVl
OGFiYTI0ZDc2MmZjNDBjMWMyMzAwLi4zNDg0YTZhNTNiODA0MDY0YmU1N2EyODNlZjQxOGE4YTYy
ZDU4OWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMTc4LDEy
ICsxNzgsMTMgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2Vn
bWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25z
dCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVh
Y2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoY29uc3QgRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVm
ZmVyPiYmKT4mKSBjb25zdDsKIAogICAgIHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0
YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21l
bnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwotICAgICAgICBS
ZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQ7CisgICAgICAgIGNvbnN0IFJlZjxjb25zdCBEYXRhU2Vn
bWVudD4gc2VnbWVudDsKICAgICB9OwogICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVj
dG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpj
b25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsg
fQpAQCAtMjU5LDcgKzI2MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNp
emVvZi4uLihBcmdzKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1
ZmZlcigpKTsKICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAx
Ci0gICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4g
JiYuLi4pKQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxjb25zdCBE
YXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSBp
ZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjpp
c19zYW1lX3Y8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxBcmdz
Pj4sIERhdGFTZWdtZW50PiAmJi4uLikpCiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgYXV0byBidWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKQEAgLTI4Niw4ICsyOTAsMTAgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOwor
ICAgIFNoYXJlZEJ1ZmZlcihjb25zdCBEYXRhU2VnbWVudCYgc2VnbWVudCkKKyAgICAgICAgOiBT
aGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiB7IHNlZ21lbnQgfSkgeyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8
RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZl
cihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IFNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwpAQCAtMzU5LDcgKzM2NSw3IEBAIGlubGluZSBW
ZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBj
bGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25X
aXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9w
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPGNvbnN0IERh
dGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU2hh
cmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3
U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBj
b25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBt
X3Bvc2l0aW9uV2l0aGluU2VnbWVudDsgfQpAQCAtMzcwLDcgKzM3Niw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsK
ICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsK
KyAgICBjb25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBz
aXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAppbmRleCBjYmU4NzcxYTQ1ZDg2MmNiNWFiMDVl
Y2EzOTk5MjdlMDc4MzhmNTQwLi4xMjUzMTliY2IzOGU3MWJhNzk1YTZhZmQyZGQxM2ZiZDE5YTJk
M2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgp
IG92ZXJyaWRlOwogICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERh
dGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5i
bG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0K
aW5kZXggMmVmMjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2ZjM2EyZi4uZjg3Nzk3Y2Nk
NTBiOWFiNWVhNDhjMjUxZTQyZjAwYjVmYmY0ZmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIubW0KQEAgLTE0NSwxMiArMTQ1LDEyIEBAIHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzCiAgICAg
c2VtYXBob3JlLndhaXQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
cjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBOZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7Ci0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29waWVkRGF0YSB7IFtOU0RhdGEgZGF0YVdpdGhC
eXRlczoodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoXSB9OworICAgIGF1dG8gbnNEYXRhID0gZGF0
YS5jcmVhdGVOU0RhdGEoKTsKIAogICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAg
W21fbmVGaWx0ZXJTb3VyY2UgcmVjZWl2ZWREYXRhOmNvcGllZERhdGEuZ2V0KCkgZGVjaXNpb25I
YW5kbGVyOlt0aGlzLCAmc2VtYXBob3JlXShORUZpbHRlclNvdXJjZVN0YXR1cyBzdGF0dXMsIE5T
RGljdGlvbmFyeSAqZGVjaXNpb25JbmZvKSB7CisgICAgW21fbmVGaWx0ZXJTb3VyY2UgcmVjZWl2
ZWREYXRhOm5zRGF0YS5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6W3RoaXMsICZzZW1hcGhvcmVdKE5F
RmlsdGVyU291cmNlU3RhdHVzIHN0YXR1cywgTlNEaWN0aW9uYXJ5ICpkZWNpc2lvbkluZm8pIHsK
ICAgICAgICAgaGFuZGxlRGVjaXNpb24oc3RhdHVzLCByZXBsYWNlbWVudERhdGFGcm9tRGVjaXNp
b25JbmZvKGRlY2lzaW9uSW5mbykpOwogICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAg
fV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFy
ZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAppbmRleCA2NzlhZTkzMjk1MTdlMWYzOTQzYmE1
NzYyYWM4ZjU2ZTg2MGM4YzI1Li5kNWZhMTMzMGIxNjJjY2NjZTIyZTk0NzU4NjE1YTZlMDExMjJk
MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0
YSgpIG92ZXJyaWRlOwogICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVu
dERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xz
Q29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IDFjOTYwNDcxNmI0MjY5M2Q1ZTQ2YzJlMjNl
OTQxZGEwMGM4M2U0ZGUuLmE2NTExNWNlYjEyMjIzNjc3ZjA5YTRhM2RhOTliNGFjNzI2OGRmMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJv
bHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC05NCwxMCArOTQsMTAgQEAgdm9pZCBQ
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXMKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi12b2lkIFBh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgpCit2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoIVttX3JlcGxhY2VtZW50
RGF0YSBsZW5ndGhdKTsKLSAgICBtX3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZpbHRlckV2YWx1
YXRvciBhZGREYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5n
dGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT11dOworICAgIG1fcmVwbGFjZW1lbnREYXRhID0gW21f
d2ViRmlsdGVyRXZhbHVhdG9yIGFkZERhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiAg
ICAgdXBkYXRlRmlsdGVyU3RhdGUoKTsKICAgICBBU1NFUlQobmVlZHNNb3JlRGF0YSgpIHx8IFtt
X3JlcGxhY2VtZW50RGF0YSBsZW5ndGhdKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGRlMzNmMWFmNDEyZGMw
OGIyYjk2MWExOTQ5NDVjOWNjOTBhYTY2MjUuLmE0NzUwNzRhMTA4YTFiNTg3YjNiNmE4Yjk4ODA1
OWRhZGU0N2U1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtMjMzLDYgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiBQYWNrZWRDb2xvcjo6QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAor
ICAgIC8vIG1fcGl4ZWxzIHR5cGUgc2hvdWxkIGJlIGlkZW50aWNhbCB0byB0aGUgb25lIHNldCBp
biBJbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMyX3QqIG1fcGl4ZWxzUHRy
IHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAppbmRleCA4ODY5MWRjMjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVhYTM1MzM3Li5jOTU4
Zjg0NGRhYzE0Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtNTEsOSArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJl
ZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVz
cG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgotICAgIHZpcnR1YWwgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNl
aXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7IFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJv
bENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3Im
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNw
cAppbmRleCBlYzBhN2FjZjQ3MzI2MWM3NGU3ZWVmZmFkYzljY2MzYzNlNTdmMjI4Li43NzA4YTU4
ZDJiNTgwOGI5NDAwMmQyMDVlOThhMjdiYjJjZTZmMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJj
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcg
QEAgdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12
b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIFdlYkNvcmVBVkNGUmVzb3Vy
Y2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpCiB7CiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2Up
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
LmgKaW5kZXggY2RmMTQzZjNjM2NkZTk3MWZkNzlkY2Y3MzI4YmZjZDdiMzI2MDJkYy4uNjI2N2Jl
MDBjNTRlZTYxNzAyZmI3N2IyYTVmYjU2N2IyN2ViOWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lk
IHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmdWxmaWxsUmVx
dWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291
cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGY5MjFmM2RhMGU2OWIz
Mzk5NzdjOWUzZTQ5NjY3YTI4ZjVlOTVjYmQuLjcyNjQ3MjVjOGU1NjIyZGYzOGI0NWJjZDk5YWM3
ODc1NWI5ZWI4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW0KQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJikgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAog
ICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKQEAg
LTEzMCw3ICsxMzAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgogICAgIG1fcGFyZW50Lmxv
YWRGaW5pc2hlZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2
b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKCZyZXNvdXJj
ZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291cmNlLnJlc291cmNl
QnVmZmVyKCkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0
UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
dW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZv
aWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0Nv
bnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZh
aWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikg
ZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9h
ZEZpbmlzaGVkKCk7IH0KQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VN
ZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsK
IH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fYnVm
ZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIp
OwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0
KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmlu
ZGV4IDkzMDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIuLmI3YjA3ZmYxNDU0
ZDU2MWEzMDIxMDhhZTMyMjkxZThmODM0MzdiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRX
ZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNr
KT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxv
YWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0Ns
aWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdl
YlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpAQCAtMTEwNyw3ICsxMTA3
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAvLyB0aGF0IGZpcnN0IHBhY2thZ2Ug
ZGVsaXZlcnkgd291bGQgaW5jbHVkZSB0aGUgdGltZSBvZiBzZW5kaW5nIG91dCB0aGUgcmVxdWVz
dCBhbmQgZ2V0dGluZyB0aGUgZGF0YSBiYWNrLiBTaW5jZSB3ZSBjYW4ndCBkaXN0aW5ndWlzaCB0
aGUKICAgICAvLyBzZW5kaW5nIHRpbWUgZnJvbSB0aGUgcmVjZWl2aW5nIHRpbWUsIGl0IGlzIGJl
dHRlciB0byBpZ25vcmUgaXQuCiAgICAgaWYgKCFzdGQ6OmlzbmFuKG1lbWJlcnMtPmRvd25sb2Fk
U3RhcnRUaW1lKSkgewotICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyArPSBi
dWZmZXItPnNpemUoKTsKKyAgICAgICAgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgKz0g
ZGF0YS5zaXplKCk7CiAgICAgICAgIGRvdWJsZSB0aW1lU2luY2VTdGFydCA9IChXYWxsVGltZTo6
bm93KCkgLSBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSkuc2Vjb25kcygpOwogICAgICAgICBH
U1RfVFJBQ0VfT0JKRUNUKHNyYywgIlIldTogZG93bmxvYWRlZCAlIiBHX0dVSU5UNjRfRk9STUFU
ICIgYnl0ZXMgaW4gJWYgc2Vjb25kcyA9fiAlMS4wZiBieXRlcy9zZWNvbmQiLCBtX3JlcXVlc3RO
dW1iZXIsIG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzLCB0aW1lU2luY2VTdGFydAogICAg
ICAgICAgICAgLCB0aW1lU2luY2VTdGFydCA/IG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVz
IC8gdGltZVNpbmNlU3RhcnQgOiAwKTsKQEAgLTExMTUsMjAgKzExMTUsMTkgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIFJlZjxGcmEKICAgICAgICAgbWVtYmVycy0+ZG93bmxvYWRTdGFydFRpbWUgPSBXYWxs
VGltZTo6bm93KCk7CiAgICAgfQogCi0gICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0
byYgc2VnbWVudCkgewotICAgICAgICBpbnQgbGVuZ3RoID0gc2VnbWVudC5zaXplKCk7Ci0gICAg
ICAgIEdTVF9MT0dfT0JKRUNUKHNyYywgIlIldTogSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbV9y
ZXF1ZXN0TnVtYmVyLCBsZW5ndGgpOworICAgIGludCBsZW5ndGggPSBkYXRhLnNpemUoKTsKKyAg
ICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVx
dWVzdE51bWJlciwgbGVuZ3RoKTsKIAotICAgICAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0g
bGVuZ3RoOwotICAgICAgICBBU1NFUlQoIW1lbWJlcnMtPmhhdmVTaXplIHx8IG1lbWJlcnMtPnJl
YWRQb3NpdGlvbiA8PSBtZW1iZXJzLT5zaXplKTsKKyAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24g
Kz0gbGVuZ3RoOworICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVh
ZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOwogCi0gICAgICAgIGdzdF9lbGVtZW50X3Bvc3Rf
bWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdT
VF9PQkpFQ1RfQ0FTVChzcmMpLAotICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoIndlYmtp
dC1uZXR3b3JrLXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdfVFlQRV9VSU5UNjQsIG1l
bWJlcnMtPnJlYWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5zaXpl
LCBudWxscHRyKSkpOworICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9D
QVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAor
ICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJy
ZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6
ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisKKyAgICBjaGVj
a1VwZGF0ZUJsb2Nrc2l6ZShsZW5ndGgpOworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVm
ZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChkYXRhLmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3Ro
KTsKKyAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7
CiAKLSAgICAgICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKLSAgICAgICAgR3N0QnVm
ZmVyKiBidWZmZXIgPSBnc3RCdWZmZXJOZXdXcmFwcGVkRmFzdChmYXN0TWVtRHVwKHNlZ21lbnQu
ZGF0YSgpLCBsZW5ndGgpLCBsZW5ndGgpOwotICAgICAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJl
cnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgfSk7CiAgICAgc3RvcExvYWRlcklmTmVl
ZGVkKHNyYywgbWVtYmVycyk7CiAgICAgbWVtYmVycy0+cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5
T25lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCA5YzQwNTU3ODI0MWQwYzUx
MjcwMjk1MTVjMjIxMjY1OGY4YzRmNjhhLi5iMjg5NmFlMzBhMWI4Y2MzZGYxMmEwNzQxMmNmNTAy
MjE3ZmM2ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDkgKzc2LDggQEAg
cHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0
YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBjb250aWd1
b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAgaWYgKGNvbnRpZ3VvdXNE
YXRhLT5kYXRhKCkpCi0gICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4o
KS0+c2VnbWVudC5jb3B5UmVmKCk7CisgICAgICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKKwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0
YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0
RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7
CkBAIC0xOTQsNyArMTkzLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+
IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJv
dGVjdGVkOgotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4g
bV9kYXRhOworICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBWZWN0
b3I8U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlIFdURl9H
VUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKICAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIGJv
b2wgbV9wcmVtdWx0aXBseUFscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCmluZGV4
IDI2Zjg4NjQ5NmU1YTVhMTRlMjhhZmIxYWZhOWJmYzMwMTc3ZjUxY2YuLmQ2OGMwYTM1ZmMxZjRh
YjYwMTdiZDM5ZWU0MzkxMDI2ODM1ZmM4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgQVZJRkltYWdlUmVhZGVyOjpBVklGSW1hZ2VSZWFkZXIoUmVm
UHRyPEFWSUZJbWFnZURlY29kZXI+JiYgZGVjb2RlcikKIAogQVZJRkltYWdlUmVhZGVyOjp+QVZJ
RkltYWdlUmVhZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VI
ZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYg
KGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKICAgICAgICAgcmV0dXJuIGFsbERhdGFS
ZWNlaXZlZCA/IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKQEAgLTU4LDcgKzU4LDcg
QEAgYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBB
VklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRh
dGFTZWdtZW50JiBkYXRhKQordm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVf
dCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggNDk2ZjY5ZjgxMmJkNzVi
MGVkYTYzNTdiYWE4NjBjZmNjYjViYTRiMy4uODVhY2IxN2NiY2ZjNTg4NWQ2YWM1NTI1YzdiNWM5
ZWZmYzU4YzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBA
IHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYp
OwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBib29sIGFsbERhdGFSZWNlaXZl
ZCk7Ci0gICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNv
ZGVyRnJhbWUmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpOwor
ICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdl
RGVjb2RlckZyYW1lJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgc2l6ZV90IGltYWdlQ291
bnQoKSBjb25zdDsKICAgICBkb3VibGUgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlUmVhZGVyLmgKaW5kZXggYmQ0MzBlOGE4YmVhMmM4MTZiMmM1MjJiZjViYTc4ODQ2YzM4
ZTBmZi4uYzMxNDEzNDc5ZDQzMjUxYjI3OGVkZDY3YTQ0MTkxNmYwODAyMTlkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVh
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JN
UEltYWdlUmVhZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQk1QSW1hZ2VSZWFkZXIgewog
cHVibGljOgogICAgIC8vIFJlYWQgYSB2YWx1ZSBmcm9tIHxkYXRhW29mZnNldF18LCBjb252ZXJ0
aW5nIGZyb20gbGl0dGxlIHRvIG5hdGl2ZQogICAgIC8vIGVuZGlhbm5lc3MuCi0gICAgc3RhdGlj
IGlubGluZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDE2
X3QgcmVhZFVpbnQxNihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGludCBvZmZzZXQpCiAgICAg
ewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0
YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRV
aW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGlu
dCBvZmZzZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IHJl
c3VsdDsKICAgICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCA0KTsK
QEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIEJNUEltYWdlUmVhZGVyKFNjYWxhYmxlSW1h
Z2VEZWNvZGVyKiBwYXJlbnQsIHNpemVfdCBkZWNvZGVkQW5kSGVhZGVyT2Zmc2V0LCBzaXplX3Qg
aW1nRGF0YU9mZnNldCwgYm9vbCB1c2VzQW5kTWFzayk7CiAKICAgICB2b2lkIHNldEJ1ZmZlcihT
Y2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7IH0K
LSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRh
dGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAKICAgICAvLyBEb2VzIHRoZSBhY3R1YWwg
ZGVjb2RpbmcuIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgZGVjb2Rpbmcgb25seQogICAgIC8vIHBy
b2dyZXNzZXMgYXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGltYWdlIHNpemUuIFJldHVy
bnMKQEAgLTI3Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVy
RnJhbWUqIG1fYnVmZmVyOwogCiAgICAgLy8gVGhlIGZpbGUgdG8gZGVjb2RlLgotICAgIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0
cjxjb25zdCBTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1f
ZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBz
aXplX3QgbV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCAxMDgyZmRm
MGRmZjIzOTFlNTY1MzBhNDFmODdiYTQzOTgyMzI3NTM1Li5kNmJmZmMxMmIxZTFlNDZkNDNkMDQ3
ZWRkYzJhZDk0YjVjODU1M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjM3LDcgKzIz
Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZk
YXRhOyB9CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0
YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQg
YmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lG
UXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZh
dGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFt
ZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBS
ZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgYm9vbCBtX3Bh
cnNlQ29tcGxldGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGY0
MjNjY2M5Y2UxMjdlZjdhZTc2YzkxMjgyNGFiZTg3NzNmYjcyZDEuLjQzNTAzNThmM2JlZWI5ZjI0
NTg2M2NlN2UwMGFlODI3NTBkZTc0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cApAQCAtMzE3LDcgKzMxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9ieXRlc1RvU2tpcCA9IHN0
ZDo6bWF4KG51bUJ5dGVzIC0gYnl0ZXNUb1NraXAsIHN0YXRpY19jYXN0PGxvbmc+KDApKTsKICAg
ICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEsIGJvb2wgb25seVNpemUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5n
U2l6ZU9ubHkgPSBvbmx5U2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFn
ZURlY29kZXIuY3BwCmluZGV4IDIwNDczZjBlZWViYjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0
NDIuLjkzM2EwMTNmMjFjNDdlOWNiNzk5ZWI3MmFiYjdlMzhjZmFiMWE2OGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAw
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBA
QCB2b2lkIEpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOworICAgICAgICBjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGE7CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgfSByZWFkZXIg
PSB7ICptX2RhdGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyNzA5
YjdjNjhiZjUzMGQxOTVkNzY2NmEzZDZhY2U1MDAxM2JiZTM0Li40MDQ5NjNhNDc5YzA1ZmMwYzZk
NWMzMGViN2JlYzc4MTU2OWFiOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAt
MTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsKICAgICB9
CiAKLSAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAgYm9v
bCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25l
ZCBoYWx0QXRGcmFtZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IHNpemVP
bmx5OwogICAgICAgICBQTkdJbWFnZURlY29kZXIqIGRlY29kZXIgPSBzdGF0aWNfY2FzdDxQTkdJ
bWFnZURlY29kZXIqPihwbmdfZ2V0X3Byb2dyZXNzaXZlX3B0cihtX3BuZykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAv
V0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggYjFiZWM1NWU3OGM0MzQ4MDFjMjU0YWNlMGRmNTk5
MzFhMzZiNzRiZC4uNzcyZTgzMjY2ZTIzMGViNmRmZjdkYzFlZjdkYjU1MjM5NjNiZmIwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQ
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBX
RUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGggaW4gdGhlIG1haW4gdGhy
ZWFkICh3aGVuIG5vdCB1c2luZyBhc3luYyBkZWNvZGluZykgb3IgaW4gdGhlIGRlY29kaW5nIHRo
cmVhZC4KICAgICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2Fs
bCB0byBzZXREYXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQog
ICAgIC8vIHRoZSBXZWJQRGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNp
c3RlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KLSAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRh
KTsKKyAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7
CiAgICAgV2ViUERhdGEgaW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3Rl
Y3RlZERhdGEtPnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAg
ICBXZWJQRGVtdXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRl
bXV4ZXJTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IGJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0
YTQyYmU0ZTJiZDExYWE4NDMuLmRjYWM1OTk3YTYxMzVkMmFiNzU5YTdhZDJlYmIwNDM1MmQ1MTRh
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiwxMSBAQCBSZXNvdXJjZUhhbmRsZUNs
aWVudDo6UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxl
Q2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3Vy
Y2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiBoYW5kbGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVy
LT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxl
bmd0aCk7CisgICAgYnVmZmVyLmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8m
JiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIsIGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGM0ZjA1NDg1
ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUuLmU0NDJjOTczNGMxMTk4NDkwYTFjNmNh
YzU3NzI1ZmQ1MTk2YjNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTQ0LDEzICs0NCwxNCBAQCBPQkpD
X0NMQVNTIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUHJvdGVj
dGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwog
Y2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVT
dG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY1LDkgKzY2LDkgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5z
aWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFs
Qnl0ZXNUb0JlU2VudCovKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERh
dGFMZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgLyplbmNvZGVk
RGF0YUxlbmd0aCovKSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJy
b3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91
c0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YzA0MjEwYzVhNTEzYWMzZjU0NzE0NmQ5Zjg1
YzgyYmQ4ODEzNzc2Li4zMGI0YmIwZmRhZWY3YWUyY2M3NGFjNjA5ZjdiMDA5OTdlNWE2ZGNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNo
cm9ub3VzTG9hZGVyQ2xpZW50LmNwcApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3Vz
TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJl
c291cmNlUgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNM
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhf
dCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQordm9p
ZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykK
IHsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRl
ckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4IDY4MzhlOWQ4Y2Y0Mzc5
NmQyZjM5NGJhMWY1NGYwOWQwYjY3ZThhYmQuLmM0Y2I3MmRjN2E2NTVmZDM2OTZhMzMzZmUwNWNk
ZWQ2Mjk3NmFmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
U3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKIGNsYXNzIFN5bmNocm9u
b3VzTG9hZGVyTWVzc2FnZVF1ZXVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN5bmNo
cm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTeW5j
aHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZSk7IH0KQEAgLTY2LDcgKzY4LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxl
Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNv
dXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1
bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAv
KmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5n
ZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGZjMjcyNTQwODkyYjhlMmNkNzdkZThmNmQ5ZTU0
YThjOGI1OTdmNjEuLjE5ODE0YTM2NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNw
b25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJh
bmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVj
ZWl2ZWQoV2ViQ29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdU
b0RlbGl2ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUlu
ZGV4ICsgMSk7CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0Rl
bGl2ZXI7Ci0gICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpT
aGFyZWRCdWZmZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZl
cikuY3JlYXRlU2hhcmVkQnVmZmVyKCldOworICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVs
bHB0ciByZWNlaXZlZERhdGE6U2hhcmVkQnVmZmVyRGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNG
cm9tVGhpc1ZpZXdUb0RlbGl2ZXIpLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEo
KV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAg
ICAgICAgICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtM
b2FkTWV0cmljcyB7IH1dOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisg
ICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3Ry
aW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBk
YXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZl
ci5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFz
a3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aAppbmRleCBmOTA5NmVlMmU5ZjI0MmZmMDRkNzA1YzJhYTEwOTNhNTVlNTczNWRiLi5lYTRhOWJm
Mjk3ODI5ZWJkMDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24u
aApAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5T
VVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBs
b25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25n
KXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+
JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7Cist
ICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhOwogLSAodm9p
ZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJily
ZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBs
ZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxl
IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsK
IC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggNWUyZThlOGQ5ZDc2Njcy
YTI0MTRmNzZmNWMwOGYyNTllMDI5ZjUwNC4uM2M4YmUwOGMyOTM0ZTU0ZGEzYjc0OWNhNmRhMzRl
ZGE5NmRjOWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBz
aG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsMTMgKzY1MiwxMyBAQCBib29sIFdlYkNvcmVOU1VS
TFNlc3Npb25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlh
UmVzb3VyYwogICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNo
ZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRh
c2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpXVEZNb3ZlKGJ1ZmZl
cildOworICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpidWZmZXIu
Y3JlYXRlTlNEYXRhKCldOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0Ns
aWVudDo6cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC05MzEsMTUgKzkzMSwxNCBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwog
ICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRl
bnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291
cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YQogewog
ICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVz
b3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1Nl
bGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAg
IGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7Ci0g
ICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6
ZSgpOworICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IFtk
YXRhIGxlbmd0aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURl
bGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5z
ZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCi0g
ICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9u
Z1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJv
bmdTZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOm5zRGF0YS5nZXQoKV07CisgICAgICAgICAgICBb
ZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCku
c2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgp
IGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0KCldOwogICAgIH1dOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHAKaW5kZXggZjMyM2FmMjY0MDE2YjY2MzkzMTFhYzIzMjQ2ZWM1ZWQ4MGEzOTU0NS4uM2JkMmNj
NzQyODZlYzQ2Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApA
QCAtMjQzLDcgKzI0Myw3IEBAIGJvb2wgQ3VybENhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVkUmVzcG9u
c2UoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNl
SGFuZGxlJiBqb2IsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBDdXJs
Q2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI1NSwxMSArMjU1LDExIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwKICAgICAgICAg
aWYgKGl0LT52YWx1ZS0+Z2V0Sm9iKCkgIT0gJmpvYikKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBpZiAoIWl0LT52YWx1ZS0+c2F2ZUNhY2hlZERhdGEoZGF0YSwgc2l6ZSkpCisgICAg
ICAgIGlmICghaXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsKIAogICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IHNpemU7CisgICAgICAg
ICAgICBtX2N1cnJlbnRTdG9yYWdlU2l6ZSArPSBkYXRhLnNpemUoKTsKICAgICAgICAgICAgIG1f
TFJVRW50cnlMaXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7CiAgICAgICAgICAgICBtYWtl
Um9vbUZvck5ld0VudHJ5KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCmluZGV4IGM5ZTI5ZDgw
OTcwYzQwNDZlNzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMuLmI2NWI5NjNiNjhlNmE2OGQ5ODE5M2Fh
ZjczZjEwODAzZDk3ZmNkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5k
bGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJj
ZUhhbmRsZSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7IC8v
IFNhdmUgZGF0YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSYpOwog
ICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IDM0OTQ0
NTkyNTRhYzkzZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUuLmFhZjBjOGQ5NDA3MDU1ZDY4YTA1
NWZiMzUwNzk2N2RlNGMwMDg2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9p
ZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVl
c3QsIEN1cmxSZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJl
Y2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0
JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVj
ZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX2xpc3RlbmVyKQotICAgICAgICBtX2xpc3RlbmVyLT5k
aWRSZWNlaXZlRGF0YU9mTGVuZ3RoKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9saXN0ZW5l
ci0+ZGlkUmVjZWl2ZURhdGFPZkxlbmd0aChidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJs
RG93bmxvYWQ6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgTmV0d29ya0xv
YWRNZXRyaWNzJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmgKaW5kZXggY2RlNDQ0NTc3NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZi
ZmQ5YmI4MS4uYTEyMDc1ODM0OTNmNzgzMzc1NmQzYzQ5ODdjZjVjOTVkZmE5NzljNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
aApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IEN1cmxEb3dubG9hZExpc3RlbmVyIHsKIHB1YmxpYzoKQEAgLTcyLDcgKzczLDcgQEAgcHJpdmF0
ZToKICAgICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9u
ZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERp
ZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVEYXRh
KEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
dXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNl
RXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRs
ZS5jcHAKaW5kZXggMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0ZC4uZDFl
NTg2MjRhYWVlMmVjZTgxMjlkZDM0ZWE5ODY2MjZlNmNkZjA2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFu
ZGxlLmNwcApAQCAtMTE5LDEyICsxMTksMTIgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11
bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAog
fQogCi12b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9z
ZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZm
ZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZl
ci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJv
Y2Vzc0NvbnRlbnQoKSkgeyB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA5YTFhMWJiZDE5
MzhhMTRmNjlmY2NlZTNmMGY4OWI5N2E0YTIxODc0Li41YzA4YmNjNWViM2U0YmJjYzAyOWI0NzY3
ODY4ZjQzZTJmOTVjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50Owog
Y2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVs
dGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsK
ICAgICB+Q3VybE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBjODEzODg2YThkNWM1ZmE2
YzEyZDE0MTMzMTkxMDFhZjI1MDJhMmFkLi5kZjc2MzdkZTlkOWZmMmI2YjEwODU1ZDBjNTc3MTI1
NTM0YjJhNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTMzLDcgKzMz
LDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1cmxNdWx0aXBhcnRI
YW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVy
RnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChj
b25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFy
dEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYmFjYjJiNTUwYjI4NDEzMWQxYWMyMGFh
NjYzODg2ZmUyMmZlN2Y5OC4uZDBlZjBlNzExNjJiNTM2M2FkNDI1NDE3ZDg1ZWM3MjM4ZjNmNjJi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRl
ciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1z
aXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQo
KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00MTEsNyArNDExLDcgQEAgc2l6ZV90IEN1cmxSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiAgICAgICAgIHJldHVybiBDVVJMX1dSSVRFRlVOQ19QQVVTRTsKICAgICB9CiAKLSAgICBhdXRv
IHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0g
YnVmZmVyLnNpemUoKTsKICAgICBtX3RvdGFsUmVjZWl2ZWRTaXplICs9IHJlY2VpdmVCeXRlczsK
IAogICAgIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGJ1ZmZlcik7CkBAIC00MjAs
OCArNDIwLDggQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIGlmIChtX211bHRpcGFydEhhbmRs
ZSkKICAgICAgICAgICAgIG1fbXVsdGlwYXJ0SGFuZGxlLT5kaWRSZWNlaXZlRGF0YShidWZmZXIp
OwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGll
bnQpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNsaWVudC5jdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihyZXF1ZXN0LCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgY2FsbENsaWVudChbYnVm
ZmVyID0gUmVmIHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVxdWVzdENs
aWVudCYgY2xpZW50KSB7CisgICAgICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0
YShyZXF1ZXN0LCBidWZmZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CkBA
IC00NDQsMTYgKzQ0NCwxNiBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJv
bU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRS
ZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0
aXBhcnQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVk
T3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWNlaXZlQnl0ZXMg
PSBidWZmZXItPnNpemUoKTsKKyAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci5zaXplKCk7
CiAKICAgICBpZiAocmVjZWl2ZUJ5dGVzKSB7Ci0gICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9
IFdURk1vdmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50
JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlQnVm
ZmVyKHJlcXVlc3QsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZl
ciA9IFJlZiB7IGJ1ZmZlciB9XShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGll
bnQmIGNsaWVudCkgeworICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1
ZXN0LCBidWZmZXIpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IGE2ZmIzMTU3NjZi
YTVjMmYzZWEzMmI5ZWY1MWViMDAzZThjYjg5ZDAuLjkyYjc0Njk3YmMzMTc1Y2UwY2RhZGYxNTFm
YTI1NDNhMDNlMTE5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBD
VVJMKiBzZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShj
aGFyKiwgc2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmlu
ZyYmKTsKLSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpOworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGFGcm9tTXVsdGlwYXJ0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRD
YW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3RDbGllbnQuaAppbmRleCAzNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2
YWU3Li43MzAzM2YwZWY0ZWI0ZGYyMWFiNzY0NjNjYzM5ODE5YjI4Njc4NDliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RD
bGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxS
ZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7
Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNp
Z25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1Rv
QmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlk
UmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZENvbXBs
ZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYs
IENlcnRpZmljYXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxl
Z2F0ZS5jcHAKaW5kZXggMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkxOTc5YzA4ODg5YThhNi4u
Mzg5N2UwMWM2ZDA3NjZkYWNmM2UxOWIyMzczMzZmNWI1NWNlNTI2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNSBAQCB2b2lkIEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0
JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1
cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JD
bGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY29udGlndW91c0J1ZmZl
ciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5n
bGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgp
LCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFu
ZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgQ3Vy
bENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZl
cik7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBidWZmZXIsIGJ1
ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJs
RGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCBkYWYwYTU5YTRlNTg2ZDcxMTRh
YmI0ZTVlZjljNTRmNmE4YmVmYzcwLi4wMjRiYzRlOWFlMzFkZjI1YThmOWI3MGNiYTI4MWZhY2Vh
YzhjZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtMzgsNiArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJl
c291cmNlSGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUgZmluYWwg
OiBwdWJsaWMgQ3VybFJlcXVlc3RDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01
Myw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1
ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNl
KEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZvaWQgY3VybERpZFJl
Y2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
ZmluYWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBT
aGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVz
dCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0
aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU3RyZWFtLmNwcAppbmRleCBjMDcwNGYwY2RkNjQ0MjM3M2Y3YjcwYmZlNjE1MzliZjViMzdk
NjI1Li4zNjY1OGY5MWRjOWQ2NzIzMGIyMzllNDk3YzAwMDBhYzYyYWFlOTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBA
IC05LDcgKzksNyBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCiAgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDdXJsU3RyZWFtLmgi
CiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKIAogI2lmIFVTRShDVVJMKQpA
QCAtMTI5LDEwICsxMzAsMTAgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAg
IGlmICghbV9jdXJsSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlY2VpdmVC
dWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4oa1JlY2VpdmVCdWZmZXJTaXplKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gcmVjZWl2ZUJ1ZmZlcihrUmVjZWl2ZUJ1ZmZlclNpemUpOwogICAg
IHNpemVfdCBieXRlc1JlY2VpdmVkID0gMDsKIAotICAgIGF1dG8gZXJyb3JDb2RlID0gbV9jdXJs
SGFuZGxlLT5yZWNlaXZlKHJlY2VpdmVCdWZmZXIuZ2V0KCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwg
Ynl0ZXNSZWNlaXZlZCk7CisgICAgYXV0byBlcnJvckNvZGUgPSBtX2N1cmxIYW5kbGUtPnJlY2Vp
dmUocmVjZWl2ZUJ1ZmZlci5kYXRhKCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZl
ZCk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykgewogICAgICAgICBpZiAoZXJyb3JD
b2RlICE9IENVUkxFX0FHQUlOKQogICAgICAgICAgICAgbm90aWZ5RmFpbHVyZShlcnJvckNvZGUp
OwpAQCAtMTQzLDggKzE0NCw5IEBAIHZvaWQgQ3VybFN0cmVhbTo6dHJ5VG9SZWNlaXZlKCkKICAg
ICBpZiAoIWJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIGRlc3Ryb3lIYW5kbGUoKTsKIAotICAgIG1f
c2NoZWR1bGVyLmNhbGxDbGllbnRPbk1haW5UaHJlYWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0g
bV9zdHJlYW1JRCwgYnVmZmVyID0gV1RGTW92ZShyZWNlaXZlQnVmZmVyKSwgbGVuZ3RoID0gYnl0
ZXNSZWNlaXZlZF0oQ2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICBjbGllbnQuZGlk
UmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKTsKKyAgICByZWNlaXZl
QnVmZmVyLnJlc2l6ZShieXRlc1JlY2VpdmVkKTsKKyAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50
T25NYWluVGhyZWFkKG1fc3RyZWFtSUQsIFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVjZWl2ZUJ1ZmZlcikpXShDbGllbnQmIGNs
aWVudCkgeworICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlcik7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFN0cmVhbS5oCmluZGV4IDRmNTliMjBlOGRiMjc5MDM5OTRiMzMxNTRjZTY0YjA5OTRm
M2EwYmEuLmU4YTMyYzI2NDYxYjQzMDhlYTIyN2M2ZGY4Yzk3MjQzOTkwNWQwYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaApAQCAt
OSw3ICs5LDcgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwogICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEN1cmxTdHJlYW1TY2hlZHVsZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTb2Nr
ZXRTdHJlYW1FcnJvcjsKIAogdXNpbmcgQ3VybFN0cmVhbUlEID0gdWludDE2X3Q7CkBAIC00Niw3
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRP
cGVuKEN1cmxTdHJlYW1JRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEo
Q3VybFN0cmVhbUlELCBzaXplX3QpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBTaGFyZWRC
dWZmZXImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwg
Q1VSTGNvZGUpID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCBi
ODA0ZmRlMDk3M2JiZmIyODMzMWNmN2MzYTFmMjBiMDQzZTc0ZmU4Li4zNjZiMDU5YzAyODA0YjE5
OWM4ODZhOWMyYzY3MjczZjkyNGYyZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAg
LTU5LDkgKzU5LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRm
b3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2VuZFBl
bmRpbmdEYXRhKCk7CiAKKyAgICAvLyBDdXJsU3RyZWFtOjpDbGllbnQKICAgICB2b2lkIGRpZE9w
ZW4oQ3VybFN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKEN1cmxTdHJlYW1J
RCwgc2l6ZV90KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwg
Y29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShD
dXJsU3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFp
bChDdXJsU3RyZWFtSUQsIENVUkxjb2RlKSBmaW5hbDsKIAogICAgIGJvb2wgaXNTdHJlYW1JbnZh
bGlkYXRlZCgpIHsgcmV0dXJuIG1fc3RyZWFtSUQgPT0gaW52YWxpZEN1cmxTdHJlYW1JRDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggNGI5NDkxYzExNTQzZjJi
NjBmMTJkMzZlOWU2YTBjYmFhZTM0YTcyZS4uYThmNTdhNzJkMGVhY2NhNzc1NWJlODRmY2FhMWM5
YmYxMDk1OGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCiAjaW5jbHVk
ZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCkBAIC0x
MDQsMTIgKzEwNSwxMiBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFNlbmREYXRh
KEN1cmxTdHJlYW1JRCwgc2l6ZV90IGxlbmd0aCkKICAgICBzZW5kUGVuZGluZ0RhdGEoKTsKIH0K
IAotdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFt
SUQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewogICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLCBs
ZW5ndGgpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmRpZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSBlcnJvckNvZGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNi
NWRlYzI1Ny4uMGZlNjVhMjllNjM2MTZkYjQyZjdjOWVhMWQxODUyMjFjMjAwNDBjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZD
b3VudGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVn
YXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291
cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDMxNWUwNjUxNTMwZGNk
YjAyODAxNjU0Yjc1N2Q4MTQ3M2MyMGZkMzAuLmFlNzE1NWVjZWYzNWQzZTE4ODhkOTE2NTY0NTdl
MzgxMTU5ZGY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5k
bGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTMwMCw3ICszMDAsNyBAQCAtICh2b2lk
KWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6
KE5TRGF0YSAqKWRhdGEgbAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBw
cm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdv
dWxkIHVzZQogICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6
ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlk
UmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSks
IC0xKTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShtX2hhbmRs
ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKICAgICB9OwogCiAgICAg
W3NlbGYgY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOldURk1vdmUod29yayldOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDhkMDU3YmJiNWYxN2MyMDQ1YmZm
OTA2ZmY1YWRhODVmMTA0MjkzMC4uZjdmMjY2Y2U4ZDgxOTEwNjBjODU3YTJmOGE2YWQ5ZmRlYmQ4
MTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01NDYs
OCArNTQ2LDggQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJh
bWUtPmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRl
cigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1w
dHkgZG9jdW1lbnQKLSAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2Vn
bWVudCkgewotICAgICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRl
cigpLmFkZERhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgZGF0
YSgpLT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7Cisg
ICAgICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0
YShidWZmZXIpOwogICAgICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9h
ZGVyKCktPndyaXRlcigpLmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0Nv
bnRlbnRGaWx0ZXIuY3BwCmluZGV4IDA1OWYzYTM4NmI2Y2Y1ZmE3OWIzYzE4OTcwMTUzMTNmN2Nk
YjRlZjIuLjFkZTI1M2M5MmIxYjgxZTcyYWI3MGY5YmI1NjhkNDFmZGUzNzRlMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xMDAsNyArMTAw
LDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpB
ZnRlclJlc3BvbnNlKTsKIH0KIAotdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25z
dCB1aW50OF90KiwgaW50KQordm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKQogewogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6
OkFmdGVyQWRkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyLmgKaW5kZXggNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFlNzRmNzZiNzU5My4uYjgz
OTdiMzBkOGQ4NWI3YmZmYjM2MjU0NjZmMDY4ODhjMTgyMTdlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3Zl
cnJpZGU7CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgp
IGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA4MmEy
YThjNGIxOGFjY2U3OThiMjdjMmM4ZDAwOTU4OWZmNzVjYmE4Li40ZThhYjc4MWE0MDYxYWIxOGM1
MDMzNzNiZGEzOGY2YzU1ZDhhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0xMTUsMTIgKzExNSwxMiBAQCB2b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUgogICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogfQogCi12b2lk
IFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKG1fZXJy
b3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLmFwcGVuZChkYXRhLCBk
YXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV29ya2Vy
Rm9udExvYWRSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmlu
ZGV4IGRhYjczZmM3YjFhOTNlZDRlM2ZlYjMxZDY3MDk4ZDk5YjUxNzZhMzkuLjdjYmFhOGU1NTEw
YzhjNGZjYWYyZWI5MmM2ZjczYjNkMmExMmM2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNXb3JrZXJGb250TG9hZFJlcXVlc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCBiZjVhNDRmZTM0
OGQyZmZjZTkxNmZiMTk0OTE1ZTY3YmZkYTlhZWMxLi5jZDI2ZWNkNmEzN2E3ZWQzOWZmNzFlZGRh
MzVlOGVmYTkwYjM3YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwK
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25z
ZSk7CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgbGVuKQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKIHsKICAg
ICBpZiAobV9mYWlsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMiwxMyArMjEyLDExIEBAIHZv
aWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuKQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6
Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYtOCIpOwogICAgIH0KIAotICAgIGlmICgh
bGVuKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpKTsKIAotICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRl
Y29kZShkYXRhLCBsZW4pKTsKKyAgICBzaXplX3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXpl
KCk7CisgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCks
IGxlbikpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGVhYWJlMWVhNWQxM2IzM2Y5YzNjYzY2ZGQ0
OTU1N2ViNjllMzdlZmMuLjBiYzNhMDI1YjM2NzllMjU2MzA4NjI0ZWVlYmE4OWRjY2M0NWM4MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtNzks
NyArNzksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25z
dCB7IHJldHVybiBtX2Vycm9yOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4
IGZiYTM2MzIyYjI5YTZkNWI3OTdiMzllZGMzYzNkMTcxMjRiM2I1YmMuLmNlMzcwOTY4OWQ5ZjA5
MjFlMDkwM2EwMzc3ZGIyNjhhNTQ1MGIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJl
Y3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3Jt
RGF0YT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDliMTEyYjlkYjJjZDg0ZDAzMmY1OWRhZmE4ZThl
MzhlMDcwZTUzZjcuLmRjM2FlYThjYWQ5ZDA5NmI0MmJjYTY1YjI2MTIzMmYxMzc0M2QxZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTAzNCw3ICsxMDM0LDcgQEAg
UmVmPFRleHRSZXNvdXJjZURlY29kZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVEZWNvZGVyKCkg
Y29uc3QKICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWlu
IiwgIlVURi04Iik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiB7CiAg
ICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNTIsMTcgKzEwNTIsMTYgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbikKICAgICBpZiAodXNlRGVjb2RlciAmJiAhbV9kZWNvZGVyKQogICAgICAgICBtX2Rl
Y29kZXIgPSBjcmVhdGVEZWNvZGVyKCk7CiAKLSAgICBpZiAoIWxlbikKKyAgICBpZiAoYnVmZmVy
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxlbiA9PSAtMSkKLSAgICAg
ICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKKyAg
ICBzaXplX3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CiAKICAgICBpZiAodXNlRGVj
b2RlcikKLSAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2Rl
KGRhdGEsIGxlbikpOworICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVy
LT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1
ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5k
KGRhdGEsIGxlbik7CisgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChidWZm
ZXIpOwogICAgIH0KIAogICAgIGlmICghbV9lcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAppbmRleCAyZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4NmJhMmQ4MDM3NzVhLi42
YmYxOWY4MmJkMmZmNzY3MDdkYTQ1NzE0NzUwN2U5OTFkMjQ2NWQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaApAQCAtMTYyLDcgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhy
ZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgbm90aWZ5SXNEb25lKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IDYx
N2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYuLjdmNTEyYzZjMTFhOGU3MTA4
Y2YwMDYyYjU4NGQyN2I1ODkwOGQxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2Uu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIApAQCAtOTYsMTAgKzk3LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNl
bnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAg
IG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRh
UmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7Cisg
ICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEpOwogfQogCiB2b2lkIFJl
bW90ZU1lZGlhUmVzb3VyY2U6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IDViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3
MThhMTY3Mzc1ZTcuLjk1MTA2ZjY3MjI3M2I0NWYwYTI0YTQ3YTFhMmJkZDE0MDllMGY0MzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVz
b3VyY2UuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0
d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29u
dGludWVQb2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAg
ICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2
ZWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGF0
YVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgYWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2
b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQg
bG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuaAppbmRleCA3MWZkMDIyMjliYmIxYzU3MzI2ZmRmY2ZlMjZjMTFmNzYxYWJjZjcyLi4w
NTRiODkzZTExMTEwZGNmOWE3MDAyNTJmNGY3OTViMDFhNTg3YjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
aApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTU4NjA5
MWVhMDA0MWI2ZjE1ODY5ZDQyYmJkYTcyNDMyOTc2OTBlYy4uYmE4ZDA0OGY2NWRjMzM5ODRmMGNk
NDc2MzVhYjkxMDE4NzliZDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTIwLDcg
KzEyMCw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
UG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
cjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
Cit2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0co
ImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCA1MDVhNGVmZTU3
MWQ0ODllNTBhOTg4YmViODE4NWI3ZmVhYjNkYjEwLi4wY2IzMTVmZDhmZjUzMTk5MTU3ZGU3OGY4
NDUyZDcxYzRmNWUyOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlh
dGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290
aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tl
ZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrLmgKaW5kZXggNGI5ZWU1NzRiOTJjN2MzNzE3YTRiYzI4MTlhNmJlM2ExOTA2NTcxNS4uZjQ3
OWUwOTAyYjIxNzkyOTU1ZDM3NjgxNGIyMWM4OWZmNTVkYjU4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5k
ZXggOGMxMDRkODE2MGI3YWFmZDA5OTcxNWRhNmQ0ZTZmN2M0NjM3ZmEwOC4uNjBiNjlhOTM2YmI3
OGRmMjUxMDc0OWM3NTRmZTZhYTIyOTNmZTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI1NCwxMSArMjU0LDEwIEBAIHZvaWQgTmV0d29y
a0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1v
dmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0
d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUg
ZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgotICAgIGF1
dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwotICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVC
dWZmZXIoV1RGTW92ZShidWZmZXIpLCBzaXplKTsKKyAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNl
aXZlQnVmZmVyKGJ1ZmZlciwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6
OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBlNmE3NjExNTk2MmI5NjU5
ZTdiZmU3OGM2ZjRkYzZmNTMxMmIzY2JlLi4wZTRjMWFlNDkyM2MzMzdmNWNmOWIwYTQwOGI1YTg4
MjI5ZjU5NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
CkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdv
dGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5l
Z290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1
aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxv
Y2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZENsaWVudC5oCmluZGV4IDM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQz
OWUuLjhhMjg1ODI2MTEzZjlkOGVlNjYwZGI2ODhiM2M1MzkzZmY5N2IyZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM2YWNjNjMxNDVmNDA1YjE5NTVkMzM1NDBk
YWE3MDhmOWE2MjkzNDEuLmU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTg2MywyOSArODYzLDI5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29u
dGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
QnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1JlY2Vp
dmVkKQotICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0
ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci0+
c2l6ZSgpOworICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFy
dGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXIu
c2l6ZSgpOwogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAogICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5
IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJp
ZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVy
U2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdl
dCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVy
LnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09y
aWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qg
b24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRs
ZS4KLSAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsK
KyAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXIuc2l6ZSgpOwogCiAg
ICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLmFwcGVuZChi
dWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAg
ICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0
aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTEyNzMsNyArMTI3Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZm
ZXJpbmdUaW1lckZpcmVkKCkKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0g
MDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlz
U3luY2hyb25vdXMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGNmMTBjZjBlNzFhMWJjNjU1NDBlODdkNmJh
NGMxYjljODU2YzBhMWQuLjgxN2FlZjI2YzgzNmMzNGE3ZDQ0ZWU3Y2M5NWVkZDlhMjk4ZDZhNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxsb3dl
ZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93
ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9j
a0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9p
ZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZv
aWQgc2VuZEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6
ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKIAogICAgIHZvaWQgY29uc3VtZVNhbmRib3hFeHRlbnNp
b25zKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU2FuZGJveEV4dGVuc2lvbnMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggYmMyYzMzN2U0ZWVlMDFhZjgz
ZTEzNjcyMzE3YTlhOWVhYmM3YzZmOC4uZjBlZmQwNGJiMmUxOGY2ZjNjYmMxNjNmYWYyM2RhMDQ2
NmJlZTU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAg
LTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7
IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVE
YXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmgKaW5kZXggZTc4MDhkOGU2NTU4MmY3OTM4ODgyOGQ1MTc1OGNiMTkzY2Y1
NWZjNy4uYjIyNWM0N2I5NGFmYTBiNDRlZGMyNjcwZGZjNThhZDdhZmM5MTQxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25z
ZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVm
PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5k
RGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggMTdkNDc5MDdh
M2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYi4uYWFhZTJiZmJkZjgzYTM5YWNlYzA2M2Zl
YjI0NDYxNmRjODQ4ZWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VD
b20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZv
aWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0
VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5k
ZXggODU4MDhlMTIxYjY4Y2E4YjczZTI1MThkMTkzYWIzOTU4MWVhZDFlNy4uOGM2YjBkZWVkNjZj
NTEwMTliZTg5ODRlZDViODdlMGMxZDc5MGY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAK
aW5kZXggMjVkNGUzN2Y5NDU0YmVlMzJmMDRkOGNjOGM0NzFkNWQzZjdlZDgyYi4uOGM4ZGMzNmIx
ZTUzOTM4ZjgxZWI0YWJhYWZmMDE5MGYyYjU0ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRv
d25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJF
cnJvcnMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCkBAIC0xNzMs
NyArMTc0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpzdGFydCgpCiAgICAg
ZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKK3ZvaWQgU2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
SVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRG93bmxvYWRUYXNrLmgKaW5kZXggYWI1OWVhZTUyNjY1MzA2MjEyYTI4ZTkzMjNhMmI4
YjRmZmUwYzc4Zi4uYjg5YWIzZWJkNzYyZjY4MTJhNWU5N2JmZjY5MGJhOTBmMDI1N2ZjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJEb3dubG9hZFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCkBAIC0zNyw2ICszNyw3
IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBT
aGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDcgKzY3LDcg
QEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrKE5ldHdvcmtTZXNzaW9u
JiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgRG93bmxvYWRJRCk7CiAKICAgICAvLyBJUEMgTWVzc2FnZQot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6
OlNoYXJlZEJ1ZmZlckNvcHkmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7CiAgICAg
dm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2su
bWVzc2FnZXMuaW4KaW5kZXggMWQzYmZiN2NjMzEwOTc5OWNjODAwMWJiYTcxZDg5YzBmNmYyZDky
Zi4uNTBkMmI0MmE3MWIwZWRhYjc5ZmJjZTlkZGI5ZjE5OTgyZGI1MzU5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJE
b3dubG9hZFRhc2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KQEAg
LTI0LDcgKzI0LDcgQEAKIAogbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckRvd25sb2FkVGFzayBO
b3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Ip
Ci0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVj
ZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2go
KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDRlNzkx
OWIzZGRjMDJhZTE0ZDBlZDk2ODRiOGM2OGJiNmYyOGE0MzQuLjRmNzhiOWRmNTRlNWU2Nzc4Nzg0
MTM1YTI3YTAzZGJjNjI5YmZkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAt
MjI1LDcgKzIyNSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6cHJvY2Vzc1Jlc3Bv
bnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuCiAgICAgICAgIG1fbG9hZGVy
LnNldFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVy
bjsKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmxvYWRC
b2R5RnJvbVByZWxvYWRlcigpCiAgICAgICAgICAgICBkaWRGaW5pc2hXaXRoTWV0cmljcyhtX3By
ZWxvYWRlci0+bmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSB7IGNodW5r
LT5kYXRhKCksIGNodW5rLT5zaXplKCkgfSwgbGVuZ3RoKTsKKyAgICAgICAgZGlkUmVjZWl2ZURh
dGEoUmVmIHsgY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJj4oKmNo
dW5rKSB9LCBsZW5ndGgpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suaAppbmRleCBjMzQ1ODAyNjdmYjMyNjllNmRjYmRjZWZjMzRkMDY4MmM2YTA4ODZj
Li41MjI1ZTU0NTk5OTUxZDhmODFjNzBhZjgyZWJiYTI2ODllMzUwMDY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIElQ
QyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVm
ZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtOTMsNyArOTQsNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU2hvdWxkU2V0U291
cmNlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgaW50NjRfdCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRG
aW5pc2hXaXRoTWV0cmljcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KaW5k
ZXggMThlNjI5ZjBkMTQ2ZWQyZDQyOWRiMWJhMjg3MDFlODNmYjk2ZTYyZi4uN2RiNTNlOWJkMDM4
MDQ1NDczYTI1YWYzN2Q0N2MxOTU3OTVlMjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KQEAgLTI3LDcgKzI3LDcgQEAgbWVzc2Fn
ZXMgLT4gU2VydmljZVdvcmtlckZldGNoVGFzayBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWls
KFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgRGlkUmVjZWl2ZVJlZGlyZWN0UmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKICAgICBEaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLSAgICBEaWRSZWNlaXZlRGF0YShJUEM6
OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKKyAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRSZWNlaXZlRm9ybURhdGEoSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSBkYXRhKQogICAgIERpZEZpbmlzaCgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA1ZDliZDMzMzM5
MjExY2ExY2Q0NDdiODc5MmY1NDYxZWE4N2VkZGY0Li5lNTY1NGNjMzEzOWI0OWQ2MWE5ODUxM2Nk
MDE2YmVjZjczOWJiY2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHZvaWQgU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNr
KGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgICAgIG1fYm9keUNhbGxiYWNrKFJlZlB0ciB7ICZidWZmZXIgfSwgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1l
dHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5oCmluZGV4IDY3YWJjNTVjNjBmZjI0ZTM5ZGQwNGVjYzUwMjFiNjA1ZWU4YmViYjEuLjVm
ODhhYzJhYThkZjk2MjhkNGM1OWRkZDA5NGYwY2VlMWQyMWE3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC0zNiw2ICszNiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTQsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNr
JiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAg
ICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9
CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJG
b3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuY3BwCmluZGV4IDdhMjYyMjE5ZGU3OGIyMzVkMTI1YTkyYjZlMjM2ZDMzMjYyZjdh
MjcuLmQ5ZDc0NzUyNTMyZjE4OWViMWJlMmMwM2Q3ZTI5ZTg1OWU4OTZlNzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcg
KzE3Nyw3IEBAIFJlc291cmNlRXJyb3IgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnBy
b2Nlc3NSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
dm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAg
ICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAgLTE4Niw4ICsxODYsMTEg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRS
ZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAg
ICB9CiAKLSAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2Ny
aXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSwgc2l6ZSkpOworICAgIGlmICghYnVmZmVyLmlzRW1wdHkoKSkgeworICAgICAgICBidWZm
ZXIuZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgIG1fc2Ny
aXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXpl
KCkpKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5o
CmluZGV4IDQ0ZmMwNjg1ZmEwZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEuLjdlODE4ZjM0
MTNkYTI5Zjg2MWUxMDAzOTkxZThkNTM4OTIzNDZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRp
cmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFp
bExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggNDFkODIzNTAyNDc0N2I2ZmM0YTNhYzU0
OGUxMzM0ZWQ2Y2I1ZWY3YS4uODE0ZWIzMjBkNGU3NDhhMjlhZTA5MTM1YWZjMWRhNWYzNzUxNWVm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTIwLDE1ICsxMjAs
MTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xp
Y3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5
IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3Qg
bWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmICht
X2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1D
YWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVu
ZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXpl
KCkgKyBidWZmZXIuc2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYy
YTQ4YThlY2FlMmE4YS4uOWFkY2E2MDVlNzI4MGJiN2IzNGNlNzQ0ZDg3ODhiYmI0NDg5MjRlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggNDE2NjhhNWIxY2Q3Mzg2OTY3Yjhm
ZDk3M2U5NjczMmVjYTkwN2VkYy4uMDc3MmFmMWE4NmQyMjQxN2JmMTFmMTZiZDZiN2I1ODBmZTU3
YTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5T
TXV0YWJsZVVSTFJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJh
YmxlRG9tYWluOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExT
KGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
TmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
OwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyJiYpOwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9h
ZChEb3dubG9hZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNDc3MWZkZTkyMGQ2Yjk4ZTgz
ZmMyOWRkM2FhZjk3YTBhNmQ5YTg4MC4uNjQ5YjVjYTc4YzY4NzVlY2RlMGQzZDQzNmY5NTkwZGI1
MTc5ZDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC00NDMsMTIgKzQ0MywxMiBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJy
b3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNr
Q29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgV1RGRW1pdFNpZ25wb3N0KG1f
dGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUo
KSk7CisgICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2Vp
dmVkICV6ZCBieXRlcyIsIGRhdGEuc2l6ZSgpKTsKIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29j
b2E6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5j
cHAKaW5kZXggODQ2NjllMjA5ZDc3YmY1MmEzNmFmZTJhN2RhYjI1MmE2OTAwZGNmNy4uMTNmY2M3
YmQ0OGE1NWEwOTM5MTI5MjZiYTQ0ODRjZjVlMzU1MTMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVT
aXRlSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxwYWwvdGV4dC9U
ZXh0RW5jb2RpbmcuaD4KQEAgLTE3MiwxMyArMTczLDEzIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
Q3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJl
c3BvCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Rh
dGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1
cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9
PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1f
Y2xpZW50ICYmICFpc0Rvd25sb2FkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlk
Q29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBuZXR3b3JrTG9hZE1l
dHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0
d29ya0RhdGFUYXNrQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05l
dHdvcmtEYXRhVGFza0N1cmwuaAppbmRleCA0NWJlNWNlMTg0MzI1MjcxZDVjMDgwZGQzNGYxZWU0
YTE2NjQyYTFmLi5lNTU4NjRhOTVmN2JjYmMwODVjNDY2MjhiZmYwNTg1NzM1NzMyODZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNr
Q3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0
YVRhc2tDdXJsLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgQ3VybFJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNjgsNyArNjksNyBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVx
dWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVl
c3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRT
ZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGN1cmxEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYmKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVm
ZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
CmluZGV4IDE3ZjA4YzI4ZWExMjViNTUwOTkzZWVkMjRkNTk2M2I4NTEwYTExNDEuLjU3YjE0NmU1
OGU3YTlkYTcwMjZjOWRlZTUyMDM5NTUxYWRhYjcxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGUxMjY0Y2UyMWJhNTdmMmE0Mjc0OGUzM2Ex
ZGFkODhhMGUyNThiYzIuLmQ3NjdmYzA2YjM2ZjE1NmZmMzFjMzgzZTY0M2Q0MzQ0YzIxN2FhYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0x
NjgsNyArMTY4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0
aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUK
K2F1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCkBAIC0xODcsMTEgKzE4NywxMSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRQogICAg
IG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIG1fc3lu
Y0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5k
KGJ1ZmZlcik7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJl
Y2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9h
ZGVySUQsIGJ1ZmZlci5nZXQoKSksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVt
ZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dl
YlBhZ2VJRCk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBmNmZmNDZlZWE1ZjI5MGI3
YjdlM2ZlNTkyMWRmOWYxOTRiYWNkMTE3Li5jMzIzMDY5YjFjYzAzMWYwMjViMjJjODU5YTM1NDE4
OGZkZDIzNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5o
CkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3Jt
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
KTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRp
b25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShj
b25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBs
ZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCmluZGV4IGI1MTNhMjY4MDhlYWExOGUzN2Y0ZmRm
MDRhMjNkMjk2MGIyNzNiMmMuLjkyMzRiNWM2NTNmOTFlYmE5MTBmYmRmOWJlMWUyMmEwMmMxMWM2
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKQEAgLTcyLDIwICs3MiwxNyBAQCB2
b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgdW5zaWduZQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFTZW50KG1faWQsIGJ5dGVzU2VudCwgdG90
YWxCeXRlc1RvQmVTZW50KSwgMCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5
OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5Ojpk
YXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFy
ZWRNZW1vcnk6OmFsbG9jYXRlKGxlbmd0aCk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFy
ZWRNZW1vcnk6OmNvcHlCdWZmZXIoYnVmZmVyKTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzaGFyZWRNZW1vcnlQdHIgPSBzdGF0aWNfY2FzdDxj
aGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpOwotICAgIG1lbWNweShzaGFyZWRNZW1vcnlQdHIs
IGRhdGEsIGxlbmd0aCk7Ci0KICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAg
c2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KTsKICAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFu
ZCBtYXJrIGl0IGFzIG1lZGlhLXJlbGF0ZWQgbWVtb3J5LgogICAgIGhhbmRsZS50YWtlT3duZXJz
aGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyOjpNZWRpYSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQs
IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obGVuZ3RoKSB9KSwgMCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXIuc2l6ZSgpIH0pLCAwKTsK
IH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVja0Zh
aWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCmluZGV4IDQ3ZWE4NjY3
MWIxM2QxMzk1YzNkYWQ5YmRhNzlhYmY2MTZjYmExNzkuLjk0OTQ2NDUyMmMyNjNlNmE1ZTgwNzNm
NzRlOWQyNDM0YmFhOTM5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaApAQCAtNDcsNyAr
NDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9u
c2UoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZp
bmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdl
YkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5h
bDsKICAgICB2b2lkIGxvYWRGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGQ3MWFlNWUwYTlhZjNkOWVl
M2E1MWQ4ZmNmNTBmZTUzNTliMzkwYjcuLjc0OTE5MGQxOWIwZmExY2UwYjUxMWU4NDIwNzI1NjAw
NjkxMTg2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJD
b3B5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
RXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTIwMCwxNiArMjAxLDE1IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9u
c2UocmVzcG9uc2UsIFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwog
fQogCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIo
V2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1
IGZvciAnJXMnIiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0
aW4xKCkuZGF0YSgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05l
dHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRp
bCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9p
bnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRh
LmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVm
ZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0o
KSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxv
YWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewog
ICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZl
RGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MjE4LDcgKzIxOCw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgICAgIFdFQlJFU09V
UkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcg
ZGF0YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAotICAgIG1f
Y29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgYXV0byBidWZmZXIgPSBkYXRh
LmJ1ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKQpAQCAtMzA2LDcgKzMwNyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAg
ICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2
ZVJlc291cmNlOiIpOwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZl
ciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZy
b20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7CkBA
IC0zMjMsNyArMzI0LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291
cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKIAogICAgIC8vIE9ubHkg
c2VuZCBkYXRhIHRvIHRoZSBkaWRSZWNlaXZlRGF0YSBjYWxsYmFjayBpZiBpdCBleGlzdHMuCiAg
ICAgaWYgKHVuc2lnbmVkIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9j
b3JlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZm
ZXJTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICBtX2NvcmVMb2FkZXIt
PmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRh
UGF5bG9hZFdob2xlUmVzb3VyY2UpOwogCiAgICAgaWYgKCFtX2NvcmVMb2FkZXIpCiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGEyMmU2MmYyOGI1ZmE0Y2ZjOTFhYTVlNWNlODJjYTI3YWUy
NmFkNTMuLmFjNTQyMmZjMDY3MTBiZDBlMDg3ZTBmNDQwOWVkOTQwMTdjMGNmMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
aApAQCAtMzksNiArMzksNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVm
ZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtODAsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0
YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlk
RmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwog
ICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Jik7CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCAwMmExNGY1OWEz
MDQ3NDRjMmQxODNlYTc5ZTk5ZWJhZWI0Y2ZiYmEyLi5kYWEyNGQyN2M3MWE4M2NmN2MwZjE2OGRh
MjZhNDliNDg3NjkyNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyAr
MjQsNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1
aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVj
ZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFM
ZW5ndGgpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDhkMmM1ZjNlMjVjYTFhMjM3OGU1ZTMwMDVk
NzU0OTJiZWFmMGIxZWEuLjJiN2U0ZDJjMjBmZGQxOTk4ODI3MmRhOGJmY2M1YTYxODZjNmQzZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
LmgKQEAgLTY1LDYgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RD
YWNoZTsKIGNsYXNzIEVsZW1lbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xNzYsMTEgKzE3NywxMSBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgU3RyaW5nJiByZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVz
cG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1E
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VV
UkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmlu
YWw7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5p
c2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZh
aWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lk
IG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1
aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAg
IHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgZmlu
YWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5h
bDsKICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIGZpbmFs
OwpAQCAtMzYyLDcgKzM2Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RS
ZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlk
RmFpbChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdl
YkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGU1ZmEw
NzEwOWE5MzE4NDUzOWZiMWUyNDcwYTNmOTM4NmQ0MzE1NTguLmZhNmNlNmY2OWZjMDJmNzAxZjg4
NTEzODg0NzVkZWYzZjI0MzE0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTQsNiArOTQsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9TY3JvbGxBbmltYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRC
dWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2hlZWxFdmVudFRlc3RNb25pdG9yLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgpAQCAtMTE5MSw3ICsxMTkyLDcgQEAgdm9p
ZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKE5ldHNjYXBlUGx1Z0luU3QKICAgICB9CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVn
aW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBjb3VudCkKK3ZvaWQgUERG
UGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkK
IHsKICAgICBpZiAoIW1fcGRmUGx1Z2luKQogICAgICAgICByZXR1cm47CkBAIC0xMjAwLDcgKzEy
MDEsNyBAQCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbQogICAgIGlmICghcmVxdWVzdCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLCBjb3VudCk7CisgICAgcmVx
dWVzdC0+YWRkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBERlBs
dWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQpAQCAtMTcxOCwxNSAr
MTcxOSwxNSBAQCB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2
NF90IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlw
dCA9IHRydWU7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBE
RlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVh
bUlEID09IHBkZkRvY3VtZW50UmVxdWVzdElEKTsKIAogICAgIGlmICghbV9kYXRhKQogICAgICAg
ICBtX2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAgQ0ZE
YXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCBieXRlcywgbGVuZ3RoKTsKLSAgICBtX3N0cmVh
bWVkQnl0ZXMgKz0gbGVuZ3RoOworICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwg
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1
ZmZlci5zaXplKCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5n
KHVpbnQ2NF90IHN0cmVhbUlEKQpAQCAtMTc2MywxNCArMTc2NCwxNCBAQCB2b2lkIFBERlBsdWdp
bjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAg
IENGRGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVu
dExlbmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAg
ICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRh
YmxlKDAsIDApKTsKIAotICAgIGVuc3VyZURhdGFCdWZmZXJMZW5ndGgobV9zdHJlYW1lZEJ5dGVz
ICsgbGVuZ3RoKTsKLSAgICBtZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdl
dCgpKSArIG1fc3RyZWFtZWRCeXRlcywgYnl0ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5
dGVzICs9IGxlbmd0aDsKKyAgICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRl
cyArIGJ1ZmZlci5zaXplKCkpOworICAgIG1lbWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0ciht
X2RhdGEuZ2V0KCkpICsgbV9zdHJlYW1lZEJ5dGVzLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKKyAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gYnVmZmVyLnNpemUoKTsKIAogI2lmIEhBVkUo
SU5DUkVNRU5UQUxfUERGX0FQSVMpCiAgICAgLy8gS2VlcCBvdXIgcmFuZ2VzLWxvb2t1cC10YWJs
ZSBjb21wYWN0IGJ5IGNvbnRpbnVvdXNseSB1cGRhdGluZyBpdHMgZmlyc3QgcmFuZ2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggMWQ4NDQ4MDVmNGMxMGU5
M2ZlZGNhYmRlZWMyMWRkMzVkZGY4ODIwMi4uZTRkNjJmNGJlYTliZmMyZmE4MGVmNGQ2ZTkwYzVj
Y2YwNjc5NGY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgK
QEAgLTU0LDEyICs1NCwxMyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBFbGVtZW50
OwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRQb2ludDsKIGNs
YXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC0xNjAsNyArMTYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEg
c3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0
aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBz
dHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVs
bHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAw
OwpAQCAtMTczLDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUg
bWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0
IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxT
dHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA1MzRkYTUyZDQ3ZDYyODUwZTIwNWZmOWU5
OWMzMGIzN2QzYmNiYTEyLi4wMzQ0ZjRiZTIzYTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cApAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJl
YW1Mb2FkZXJDbGllbnQKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYm
KT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAKQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFBsdWdp
blZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgY29uc3QgUgogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2Vp
dmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9k
aWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2Vz
dGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZl
RGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0g
ICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1J
RCwgYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlk
UmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnVmZmVyKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpT
dHJlYW06OmRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51
YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VV
UkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUs
IGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdp
blZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50
IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxs
IGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKQEAg
LTM4MiwxMSArMzgyLDExIEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5p
dGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFs
U3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBtX21hbnVhbFN0cmVh
bURhdGEuYXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEu
YXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BsdWdpbi0+
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW4t
Pm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmll
dzo6bWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKQpAQCAtMTE3MSw5ICsxMTcxLDkgQEAgdm9p
ZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0
aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGF1dG8gYnVm
ZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRha2UoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2Vp
dmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7
CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCktPmZvckVhY2hTZWdtZW50QXNTaGFy
ZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgICAgIG1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YShidWZmZXIpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBpZiAobV9tYW51
YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZjY2MzEyYTgwYWNk
MWUwMzUzMTBkZmFhM2E1ZjNhMTdiNzJhYWU1NS4uMjU2MTVjYjMwZjIyNjQ2MzkyNDQ0ODhmMmJk
N2M0MTIyNzkwNzliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVz
dHJveWVkKCkgY29uc3QgeyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVz
dHJveWVkKCk7IH0KIAogICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFu
dWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAg
IHZvaWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWRE
aWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBlZTQwZmI5NTg1ZTc5ZDg2YjNjZmQyZjU3OWVk
NDZlNjFiOWVjNjNlLi4zMTQ4MmViM2IzNjhkNzhhNjFhN2VjMWQyNGM1OTgxMGJjOTFlZDhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBA
QCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2Us
IG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50
aWZpZXIpOwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKQEAgLTgwLDE0ICs4MCwxNCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgIGlmICht
X3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKICAgICAgICAg
aWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9u
c2VEYXRhKSkKICAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRl
cigpOwotICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0
YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZl
ckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEg
eyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBt
X2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRp
Y19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVj
ZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0s
IG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1E
YXRhKQpAQCAtMTM2LDE1ICsxMzYsMTUgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
QmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBk
YXRhLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlm
aWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRf
dD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpE
aWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXpl
KSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBz
dGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7
CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxv
YkxvYWRpbmcoKQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgICAgICBpZiAobV9k
aWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oY29uc3Qg
U2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKCpi
dWZmZXIuZ2V0KCkpOworICAgICAgICBkaWRSZWNlaXZlRGF0YShidWZmZXIuY29weSgpLT5tYWtl
Q29udGlndW91cygpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlk
RmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4
MmI0YjM4NTYyOTY4YTJiNmM5Yy4uMDk0MDBkZjBjZTcyNWYzOWE4YjExZDkzNWUxNDU0ZTM5OWY1
YTI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtNTAsNyArNTAs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0
aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3Jl
OjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtNjAs
OCArNjAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udmVydEZldGNoVG9Eb3dubG9hZCgpIGZp
bmFsOwogCiAgICAgdm9pZCBjbGVhbnVwKCk7Ci0gICAgCi0gICAgdm9pZCBkaWRSZWNlaXZlQmxv
YkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVCbG9iQ2h1bmsoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRG
aW5pc2hCbG9iTG9hZGluZygpOwogCiAgICAgc3RydWN0IEJsb2JMb2FkZXIgZmluYWwgOiBXZWJD
b3JlOjpGZXRjaExvYWRlckNsaWVudCB7CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
ZmluYWwgeyBjbGllbnQtPmRpZFJlY2VpdmVCbG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KKyAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEp
IGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEpOyB9CiAgICAgICAgIHZv
aWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBj
bGllbnQtPmRpZEZhaWwoZXJyb3IpOyB9CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFs
IHsgY2xpZW50LT5kaWRGaW5pc2hCbG9iTG9hZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDE0YTA4M2NhMjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQz
OTkuLmVkNGY1ZGU5ZDVlNTYxOGQ0MzI0NTUwODJmNWRhMTg4YWJmOWJmNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE1MiwxMCArMTE1MiwxMCBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgd2ViUGFn
ZS0+ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQobV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIGlmICghbV9wbHVnaW5WaWV3KQotICAgICAgICBsb2FkZXItPmNvbW1p
dERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEpOwog
CiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGEgc3RhbmQtYWxvbmUgbWVkaWEgZG9jdW1lbnQs
IG5vdyBpcyB0aGUgcmlnaHQgdGltZSB0byBjYW5jZWwgdGhlIFdlYktpdCBsb2FkLgogICAgIC8v
IEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlZCBhY3Jvc3MgYWxsIHBvcnRzLiA8aHR0
cDovL3dlYmtpdC5vcmcvYi80ODc2Mj4uCkBAIC0xMTc3LDcgKzExNzcsNyBAQCB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNv
bnN0IHVpbnQ4X3QqCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faGFzU2VudFJlc3Bv
bnNlVG9QbHVnaW5WaWV3ID0gdHJ1ZTsKICAgICB9Ci0gICAgbV9wbHVnaW5WaWV3LT5tYW51YWxM
b2FkRGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX3BsdWdpblZpZXctPm1hbnVh
bExvYWREaWRSZWNlaXZlRGF0YShkYXRhKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCmluZGV4IGJiNTI5ZDNhZWM0ZTJjNzVmMWE3ZGU5MWIxMGI1NTgyZDQ1MjJi
NDIuLjFkMzBiYzM5MzgzYWZmZjJjYTljMjg3NTNkZDJkN2VjMmIyNjQ5MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFj
ZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJD
b3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZv
aWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0
b3J5KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApp
bmRleCBhMjA1ZTAwMWNhNzE1ODIwOTEzYTgxYWU0YTgzNjUzMGY5YTBmNjQ4Li43MmUzNTU0Yzhl
MGFhNjkwYTZlYzU3ODAxNzZmMTllMGI4ZDcwZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViUHJldmlld0xvYWRlckNs
aWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25z
dCBTdHIKIAogV2ViUHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQo
KSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2Uo
bV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmgKaW5kZXggMGRjMTY3ZTViN2JjM2IwM2VmMzkzMWVhYjM1NmM3ODI3OTI5NTI5
ZS4uNjQ5YmM4MzE5YzI3ODZmMDFkNjE3YzExMTk5ZGIwYzZjMDc3ZmE3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3
b3JkRW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDk0MmVkYzYyM2E0ZTY1M2Ji
MTg4YWVlMDUwNjQ0YTNmNGEwMzJlODkuLmY4OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMy
YTdiYzY2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC03MDU3LDEyICs3MDU3LDEyIEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0Rp
ZFJlY2VpdmVSZXNwb25zZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kCiAgICAg
aGFuZGxlci0+dGFza0RpZFJlY2VpdmVSZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2Up
OwogfQogCi12b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEpCit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJV
UkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkmIGRhdGEpCiB7CiAgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJM
U2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJU
KGhhbmRsZXIpOwogCi0gICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlm
aWVyLCBkYXRhLnNpemUoKSwgZGF0YS5kYXRhKCkpOworICAgIGhhbmRsZXItPnRhc2tEaWRSZWNl
aXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5idWZmZXIoKSA/ICpkYXRhLmJ1ZmZlcigpIDog
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2No
ZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE5NGI1YjlkN2ZlMzJmMjRhODZkYWFhZDQ0ODQyYjBj
ZGQwYWViMmYuLjQ4ODY2NzA3YzQ2MTNkOWE3Y2QzNTIxNWRmY2E5MjNjNjk3OWJlYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE4NCw2ICsxODQs
NyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwog
Y2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xODk2LDcgKzE4OTcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgdXJsU2NoZW1lVGFza1dpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJVUkxT
Y2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9u
c2UoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
SWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhh
bmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lk
ZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgdXJsU2NoZW1l
VGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hh
cmVkQnVmZmVyQ29weSYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVS
TFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAg
IHZvaWQgc2V0SXNUYWtpbmdTbmFwc2hvdHNGb3JBcHBsaWNhdGlvblN1c3BlbnNpb24oYm9vbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCBiMjcyMjk0NzFlYWU4NmVlNTk4MTk4M2RkNTdiNWU3YTgyOTFjZDRiLi5i
ZGE1ZjUwYWRkMjNhOTY3NDBlODlkNzMzZDc5YzE4N2YwNTJiZTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU2
NCw3ICs1NjQsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFVSTFNjaGVtZVRhc2tX
aWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZp
ZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0
YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkgLT4gKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBhY3R1YWxSZXF1ZXN0KSBBc3luYwogICAgIFVSTFNjaGVtZVRhc2tEaWRQZXJmb3Jt
UmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVy
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcHJvcG9zZWRSZXF1ZXN0KQogICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVz
cG9uc2UoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQotICAgIFVSTFNjaGVtZVRhc2tEaWRS
ZWNlaXZlRGF0YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZp
ZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFVSTFNjaGVtZVRh
c2tEaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhh
bmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lk
ZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQogICAgIFVSTFNjaGVtZVRhc2tE
aWRDb21wbGV0ZShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAKICAgICBTZXRJc1N1c3BlbmRlZChi
b29sIHN1c3BlbmRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCmluZGV4IDZkOGQwY2YyNzg0
ZWQzMDU2NjI1YzdmNmU4NDZhOTNhNzExY2JhY2QuLjYxNmVkYTA4ZjBiOGZjYWIyZDU3ZmM0NzUz
MjkxMDdiODE1Y2QyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcApAQCAtOTYsMTMgKzk2
LDEzIEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZVJlc3Bv
bnNlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlCiAgICAgdGFzay0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tE
aWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50
aWZpZXIsIHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQordm9pZCBXZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBhdXRvKiB0YXNrID0gbV90YXNrcy5nZXQodGFza0lkZW50aWZpZXIpOwogICAgIGlmICgh
dGFzaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoc2l6ZSwg
ZGF0YSk7CisgICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5LmgKaW5kZXggNThiZWNjMTdiNWQ4NTk4NzQ5ODg0ZDMwMjUxNjg5
Y2NjYzE3NjkzZi4uYWIyMGJkNTczYWE0YWZjMTU4MDU5MGYyNzA0NjYzMDA2ODc3NDBlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC01OSw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGFza0RpZFBlcmZv
cm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lk
IHRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCB0YXNrRGlkUmVj
ZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBzaXplX3QsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEpOworICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAg
ICAgdm9pZCB0YXNrRGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCB0YXNrRGlkU3RvcExv
YWRpbmcoV2ViVVJMU2NoZW1lVGFza1Byb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCmluZGV4
IDM2MDZiYmRjNjUyMTVkZGNhOTI2MTNhODEwN2RhYjFiMTFlY2I2NTYuLjllNzJkODRjOTdkZjZk
Mjk3MTRhODNjNTFhYzE3NzYzZTVmYjY1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApAQCAtMTQw
LDIxICsxNDAsMjEgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICB9KTsKIH0KIAotdm9p
ZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25z
dCB1aW50OF90KiBkYXRhKQordm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIWhhc0xv
YWRlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29tcGxldGlv
bkhhbmRsZXIpIHsKICAgICAgICAgV0VCVVJMU0NIRU1FVEFTS1BST1hZX1JFTEVBU0VfTE9HKCJk
aWRSZWNlaXZlRGF0YTogUmVjZWl2ZWQgZGF0YSBkdXJpbmcgcmVzcG9uc2UgcHJvY2Vzc2luZywg
cXVldWluZyBpdC4iKTsKLSAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgZGF0YVZlY3RvciA9IFZlY3RvciB7IGRhdGEsIHNpemUgfV0gewotICAg
ICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YVZlY3Rvci5zaXplKCksIGRhdGFWZWN0b3IuZGF0
YSgpKTsKKyAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgZGF0YSA9IFJlZiB7IGRhdGEgfV0geworICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEo
ZGF0YSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmIHBy
b3RlY3RlZFRoaXMgeyAqdGhpcyB9OwotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEo
ZGF0YSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBt
X2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0
YVBheWxvYWRCeXRlcyk7CiAgICAgcHJvY2Vzc05leHRQZW5kaW5nVGFzaygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNr
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRh
c2tQcm94eS5oCmluZGV4IDc1NTA4Nzk0MTgyMGZlZWZjNWQwMTI3MTU4YzA2NGNlMjU4YTA4MzUu
LmVkOTFmMzhlM2FkZDEzYmUxOWNiMjE3N2VkNDQ4ZmRkMmZhNzk1NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94
eS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Citj
bGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTYs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZv
aWQgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9QaW5nSGFuZGxlLmgKaW5kZXggYTI1NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4
OTZkNC4uMzI4OWMyMzYyOWEwZGMzMWZjMGMxOTllZGYxMzI5N2JlZDYxYTE5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
IApAQCAtNzMsNyArNzQsNyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxl
dGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21w
bGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9h
ZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENv
bXBsZXRlKGVycm9yKTsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5NTlkNzQ4YjU2YmUx
MDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlLi44ZGY5OTNmMmQ3NzViNmM5M2QyZThmMDk5MGY3
MmY4NWY2MThlNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTQ4LDEwICs0OCwx
MiBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENhY2hlZEZyYW1lOworY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwog
Y2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiB9CiAKIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ+IHsKQEAgLTE1MSw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJl
cGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVs
dGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBj
b21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5h
bDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDQzZTYzZjQ1NjM0NWVjZjFjOTI0ZTViNzcy
YTZmNTQxNzNhOTE0MmIuLjg3YTVkNjU3ZjdiNzMzZDA3YzVkYjYwMWY2OTgxZjkwNDk3NzEzOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC05OTIsMTAgKzk5Miw5IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKICNlbmRp
ZgogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
LSAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNO
b0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBb
ZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNlaXZlZERhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBbZGF0
YVNvdXJjZShsb2FkZXIpIF9yZWNlaXZlZERhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV07
CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciogbG9hZGVyKQpAQCAtMjAxMiw3ICsyMDExLDcgQEAgUmVmUHRyPFdl
YkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
cmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwog
ICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAg
ICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXkoKTsKICAgICAg
ICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDBlMDViMThkNjk2Mzk4Mjhk
NDMzYzQ2ZDc5MjFjZjcwZGU3ZGY5ZDEuLjJhODc3MGRmODBiYjlmNzBjMTBiYjkxZjk1MjBkMWUx
OWM4NTlkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQpAQCAtOTc3LDcgKzk3Nyw3IEBAIC0gKHZvaWQpX2NvbW1pdERhdGE6KE5TRGF0YSAqKWRhdGEK
ICAgICBhdXRvKiBkb2N1bWVudCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCk7CiAg
ICAgZG9jdW1lbnQtPnNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhfcHJpdmF0ZS0+c2hvdWxkQ3Jl
YXRlUmVuZGVyZXJzKTsKIAotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPmNvbW1pdERhdGEoKGNvbnN0IHVpbnQ4X3QqKVtkYXRhIGJ5dGVzXSwgW2Rh
dGEgbGVuZ3RoXSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+Y29tbWl0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSk7
CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBmYjI1ODNmZTk3
MjY0YzczZWViMjNlYmI0ZDM5OTBiM2I4NGEwN2YzLi4xMjcwZTU3ZGQ5NWIwZDAwMDNiNWU1Njc3
ZDQ3NDJhMTI1NTJkODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC02NDEs
OSArNjQxLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9j
dW1lbnRMb2FkZXIqKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNv
bW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewotICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOworICAgIGxvYWRl
ci0+Y29tbWl0RGF0YShkYXRhKTsKIAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5k
LWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRo
ZSBXZWJLaXQgbG9hZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQg
YWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggMDk1YjI1MzVhNjg3NTQ3YmQ3ODg0NmY5MDc2YWU2YzdkMDE2
Mjk0OC4uNzkyNmZkMzY3MTgwOWU4Mzg0N2E0ODAzMWE4YjkwYzYzOGZhZjdlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkTmFtZSA9IFN0cmluZygpKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY29t
bWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IG92ZXJyaWRlOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmlu
aXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJlMGU2
MjA0NmE2NDc2YTFmMjUyZGU5OWU0ZjQ3MTAwN2JkYjk0YTUuLmNlMmQ5MGUyODViODY1YmU0MmUz
NDQzYmE0YWIzYThiZjNjZjRiZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2
ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIG1ha2UgU2hhcmVkQnVmZmVyOjpjb3B5
KCkgcmV0dXJuIGEgY29udGlndW91cyBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDYyMgorICAgICAgICByZGFyOi8vcHJvYmxl
bS84NjgyOTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTI2ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVthMTF5XSBTdG9w
IHNldHRpbmcgbWFuYWdlcy1kZXNjZW5kYW50cyBvbiB3ZWIgcHJvY2VzcyByb290IG9iamVjdCB3
aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwCmluZGV4IGYxMmI5ZjA4MzYwNTU4OTRjZDY1YTgyM2Q1ZmY2ZTM0Yjk4YWQ1
OTguLjA2NjlkMDdjNjRmOWRmNTQ5YzNlNTEwMmVkNjdiNjljYzI5NTQyZjkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0z
MDMsNiArMzAzLDE1IEBAIFRFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkK
ICAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVk
QnVmZmVyVGVzdCwgY29weUlzQ29udGlndW91cykKK3sKKyAgICBFWFBFQ1RfVFJVRShTaGFyZWRC
dWZmZXI6OmNyZWF0ZSgpLT5jb3B5KCktPmlzQ29udGlndW91cygpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCktPmNvcHkoKS0+aXNDb250aWd1b3Vz
KCkpOworICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBs
ZSB0ZXN0LiI7CisgICAgRVhQRUNUX1RSVUUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4
dCwgc3RybGVuKHNpbXBsZVRleHQpKS0+Y29weSgpLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJs
ZW4oc2ltcGxlVGV4dCkpLT5jb3B5KCktPmlzQ29udGlndW91cygpKTsKK30KKwogI2lmIEVOQUJM
RShNSFRNTCkKIC8vIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHVuaXQtdGVzdHMgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHNpemVf
dCBOID4K
</data>
<flag name="commit-queue"
          id="473811"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448024</attachid>
            <date>2021-12-27 19:19:21 -0800</date>
            <delta_ts>2022-01-06 05:45:38 -0800</delta_ts>
            <desc>Patch For Review</desc>
            <filename>bug-234713-20211228141919.patch</filename>
            <type>text/plain</type>
            <size>10801</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJmMzIzNGZjYjAwZWQz
MjJlYWEwZWI0YTRkODFkZWUwZDM4OWQ3ZS4uZjQ1NTk3M2M4ZjljYjZlMjUyZjE3ZjkyOWUxMzQ0
MDdkNjU4ZTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEyLTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29udGVudCBGaWx0ZXJp
bmcgc2hvdWxkIGJlIHVzaW5nIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIGNvcHlpbmcgaXRzIGRh
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDcx
MworICAgICAgICByZGFyOi8vcHJvYmxlbS84Njk0NzQzMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBkaXJlY3RseSBjb25zdHJ1Y3QgdGhl
IE5TRGF0YSB1c2VkIGJ5IFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyCisgICAgICAgIGFu
ZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlciBmcm9tIHRoZSBTaGFyZWRCdWZmZXIuCisK
KyAgICAgICAgTm8gY2hhbmdlIGluIG9ic2VydmFibGUgYmVoYXZpb3VyLgorCisgICAgICAgICog
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRl
cjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRG
aWx0ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZv
cm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTmV0
d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEpOgorICAgICAgICAqIHRl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRl
bnRGaWx0ZXI6OmFkZERhdGEpOgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIu
aDoKKwogMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAg
ICAgICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2lu
ZyBhY3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50Rmls
dGVyLmNwcAppbmRleCBhMDk4MWFkZDc5ODUzMmI5N2JhYTQwNDEyOGJhMzg4OTZkYWY2ODRhLi5i
ODZmOWJhNjM3NjVlYzRkZmU4NGYwMmRhNGRmNzgyMzA5YzE1OGRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xNDUsMTQgKzE0NSwxNCBAQCBib29sIENvbnRl
bnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbgogICAgIHJldHVybiBtX3N0YXRlICE9IFN0YXRlOjpCbG9ja2VkOwogfQog
Ci1ib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWlu
dDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK2Jvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRl
ckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgUmVmPENvbnRl
bnRGaWx0ZXJDbGllbnQ+IHByb3RlY3RlZENsaWVudCB7IG1fY2xpZW50IH07CiAKICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6RmlsdGVyaW5nKSB7Ci0gICAgICAgIExPRyhDb250ZW50RmlsdGVy
aW5nLCAiQ29udGVudEZpbHRlciByZWNlaXZlZCAlZCBieXRlcyBvZiBkYXRhIGZyb20gPCVzPi5c
biIsIGxlbmd0aCwgbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgp
KTsKLSAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2RhdGEsIGxlbmd0
aF0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVyKSB7Ci0gICAgICAgICAgICBj
b250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgTE9HKENvbnRlbnRG
aWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICV6dSBieXRlcyBvZiBkYXRhIGZyb20g
PCVzPi5cbiIsIGRhdGEuc2l6ZSgpLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOworICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChb
ZGF0YSA9IFJlZiB7IGRhdGEgfV0oUGxhdGZvcm1Db250ZW50RmlsdGVyJiBjb250ZW50RmlsdGVy
KSB7CisgICAgICAgICAgICBjb250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7CiAgICAgICAgIH0p
OwogCiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmgKaW5kZXggOGI2ZGVmZmZhYjgwZjVkYWMyNTg3ZTM3MWMwMTg3
OWI5ZjNmZGY3Ny4uNjBiNGRhMWE5YjMzNjhjMmRmZWNmZjQyYjg5ZjM1NThlODMzMWMzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgY29udGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgYm9vbCBjb250aW51ZUFmdGVyUmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBjb250aW51
ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOworICAg
IGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICBib29sIGNvbnRpbnVlQWZ0ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpOwogCiAg
ICAgc3RhdGljIGJvb2wgY29udGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25zdCBE
b2N1bWVudExvYWRlciYgYWN0aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggMjUxZDIyNTJiMGIzY2M3
YTlhZTFhYmU4MWEwOTE0MWE3MWY3OWI4OC4uOTdlM2Q2NWIzZTkyZGUzMjdmOTJmM2JhZDRjYzUx
YzE1NDkzYTU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC0xMzI1LDcgKzEzMjUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImCiB2b2lkIERvY3VtZW50
TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1f
Y29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIuZGF0YSgpLCBi
dWZmZXIuc2l6ZSgpKSkKKyAgICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0
ZXItPmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29u
dGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50Rmls
dGVyLmgKaW5kZXggOWU3MmU0NGEyZWFjNGQ4ZWY3MzBiOTg3MWQwZWM1MDhlZDlmYWM0NC4uNDYy
Y2YzYjg3NDIzMzg1YmU4M2EwMDJlNDNmNzQ0Nzc5OTg3ZWU0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKQEAgLTI2LDE1ICsyNiwxNyBA
QAogI2lmbmRlZiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXJfaAogI2RlZmluZSBQbGF0Zm9ybUNvbnRl
bnRGaWx0ZXJfaAogCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKK2NsYXNzIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgUGxhdGZvcm1Db250ZW50RmlsdGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTU0LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3Jt
Q29udGVudEZpbHRlcigpID0gZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSA9IDA7CiAgICAgdmly
dHVhbCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qg
PSAwOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5oCmluZGV4IGNiZTg3NzFhNDVkODYyY2I1YWIwNWVjYTM5OTkyN2UwNzgzOGY1NDAuLjEyNTMx
OWJjYjM4ZTcxYmE3OTVhNmFmZDJkZDEzZmJkMTlhMmQzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9O
ZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQppbmRleCAyZWYyNzAxZmU2NzhiZjliOTJk
YjIxMmJiZWE1YzkxNWEzZmMzYTJmLi5mODc3OTdjY2Q1MGI5YWI1ZWE0OGMyNTFlNDJmMDBiNWZi
ZjRmYWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3Jr
RXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5tbQpAQCAtMTQ1LDEyICsxNDUsMTIg
QEAgdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXMKICAgICBzZW1hcGhvcmUud2FpdCgpOwogfQogCi12
b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpCit2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjph
ZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBSZXRhaW5QdHI8TlNEYXRh
PiBjb3BpZWREYXRhIHsgW05TRGF0YSBkYXRhV2l0aEJ5dGVzOih2b2lkKilkYXRhIGxlbmd0aDps
ZW5ndGhdIH07CisgICAgYXV0byBuc0RhdGEgPSBkYXRhLmNyZWF0ZU5TRGF0YSgpOwogCiAgICAg
QmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICBbbV9uZUZpbHRlclNvdXJjZSByZWNlaXZl
ZERhdGE6Y29waWVkRGF0YS5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6W3RoaXMsICZzZW1hcGhvcmVd
KE5FRmlsdGVyU291cmNlU3RhdHVzIHN0YXR1cywgTlNEaWN0aW9uYXJ5ICpkZWNpc2lvbkluZm8p
IHsKKyAgICBbbV9uZUZpbHRlclNvdXJjZSByZWNlaXZlZERhdGE6bnNEYXRhLmdldCgpIGRlY2lz
aW9uSGFuZGxlcjpbdGhpcywgJnNlbWFwaG9yZV0oTkVGaWx0ZXJTb3VyY2VTdGF0dXMgc3RhdHVz
LCBOU0RpY3Rpb25hcnkgKmRlY2lzaW9uSW5mbykgewogICAgICAgICBoYW5kbGVEZWNpc2lvbihz
dGF0dXMsIHJlcGxhY2VtZW50RGF0YUZyb21EZWNpc2lvbkluZm8oZGVjaXNpb25JbmZvKSk7CiAg
ICAgICAgIHNlbWFwaG9yZS5zaWduYWwoKTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
ci5oCmluZGV4IDY3OWFlOTMyOTUxN2UxZjM5NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUuLmQ1ZmEx
MzMwYjE2MmNjY2NlMjJlOTQ3NTg2MTVhNmUwMTEyMmQwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXIuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUg
eyB9CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0K
aW5kZXggMWM5NjA0NzE2YjQyNjkzZDVlNDZjMmUyM2U5NDFkYTAwYzgzZTRkZS4uYTY1MTE1Y2Vi
MTIyMjM2NzdmMDlhNGEzZGE5OWI0YWM3MjY4ZGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXIubW0KQEAgLTk0LDEwICs5NCwxMCBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50Rmls
dGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHVw
ZGF0ZUZpbHRlclN0YXRlKCk7CiB9CiAKLXZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0
ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUGFyZW50
YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIEFTU0VSVCghW21fcmVwbGFjZW1lbnREYXRhIGxlbmd0aF0pOwotICAgIG1fcmVw
bGFjZW1lbnREYXRhID0gW21fd2ViRmlsdGVyRXZhbHVhdG9yIGFkZERhdGE6W05TRGF0YSBkYXRh
V2l0aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5P
XV07CisgICAgbV9yZXBsYWNlbWVudERhdGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgYWRkRGF0
YTpkYXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwog
ICAgIEFTU0VSVChuZWVkc01vcmVEYXRhKCkgfHwgW21fcmVwbGFjZW1lbnREYXRhIGxlbmd0aF0p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRl
eCAwNTlmM2EzODZiNmNmNWZhNzliM2MxODk3MDE1MzEzZjdjZGI0ZWYyLi4xZGUyNTNjOTJiMWI4
MWU3MmFiNzBmOWJiNTY4ZDQxZmRlMzc0ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9ja0NvbnRl
bnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiAgICAg
bWF5YmVEZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSk7CiB9CiAK
LXZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCosIGludCkKK3Zv
aWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAg
ICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4IDYzNWFjODRi
ZTc5Mzg0N2FhNTcyMTNkMDFmZmMxZTc0Zjc2Yjc1OTMuLmI4Mzk3YjMwZDhkODViN2JmZmIzNjI1
NDY2ZjA2ODg4YzE4MjE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
IG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlk
ZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNp
ZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448025</attachid>
            <date>2021-12-27 19:20:31 -0800</date>
            <delta_ts>2021-12-28 19:08:08 -0800</delta_ts>
            <desc>Patch For EWS (combined patch)</desc>
            <filename>bug-234713-20211228142008.patch</filename>
            <type>text/plain</type>
            <size>285933</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3MDk2ZjA2YzcyZmVh
MmZjMWUwMzk0MDIyMzg5MWVlZGJmZGM4MC4uZjQ1NTk3M2M4ZjljYjZlMjUyZjE3ZjkyOWUxMzQ0
MDdkNjU4ZTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4NSBAQAorMjAyMS0xMi0yNyAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIENvbnRlbnQgRmlsdGVy
aW5nIHNob3VsZCBiZSB1c2luZyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBjb3B5aW5nIGl0cyBk
YXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3
MTMKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODY5NDc0MzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgY29uc3RydWN0IHRo
ZSBOU0RhdGEgdXNlZCBieSBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcgorICAgICAgICBh
bmQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZnJvbSB0aGUgU2hhcmVkQnVmZmVyLgor
CisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4KKworICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50
RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiB0
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
Lmg6CisKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtp
bmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbW9kaWZ5IGFs
bCBkaWRSZWNlaXZlRGF0YSBhbmQgcmVsYXRlZCBtZXRob2RzIHNvIHRoYXQgdGhleSBubyBsb25n
ZXIKKyAgICAgICAgdXNlIHVpbnQ4X3QqL2ludCBhbmQgaW5zdGVhZCB1c2UgU2hhcmVkQnVmZmVy
LgorICAgICAgICBXZSBkbyB0aGUgc2FtZSBmb3IgYW55IGludGVybWVkaWFyaWVzIHVzZWQgYnkg
dGhlIHZhcmlvdXMgZGlkUmVjZWl2ZURhdGEKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorICAg
ICAgICBUaGlzIHdpbGwgZmFjaWxpdGF0ZSBtb3ZpbmcgbmV0d29ya2luZyBvZmYgdGhlIG1haW4g
dGhyZWFkIGluIHRoZSBHUFUKKyAgICAgICAgcHJvY2VzcyBhbmQgYWxsb3dzIHRvIHJlbW92ZSBz
ZXZlcmFsIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgY29waWVzIGF0IHRoZQorICAgICAgICBwcm9j
ZXNzIGJvdW5kYXJpZXMuCisgICAgICAgIFdlIGNhbiBub3cgY29uc2lkZXIgdHJhbnNmZXIgdGhl
IHVuZGVybHlpbmcgU2hhcmVkTWVtb3J5IGNyZWF0ZWQgaW4KKyAgICAgICAgdGhlIG5ldHdvcmsg
cHJvY2VzcyBhbGwgdGhlIHdheSB0byB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgRmx5LWJ5
IGZpeDogY2hhbmdlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdHlwZSB0byBTaGFyZWRCdWZmZXIg
d2hlbiBhcHByb3ByaWF0ZS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhh
dmlvdXIuIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaExvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpC
b2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3Bv
bnNlOjpjb25zdW1lQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6CisgICAgICAgICogZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURh
dGFJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpm
aW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRp
bnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Ojpjb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb21taXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlw
YXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3Jp
dGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVs
ZW1lbnRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lv
bmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6Cisg
ICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjp1cGRhdGVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFk
ZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVz
b3VyY2VMb2FkZXIubW06CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZU1lZGlhTG9h
ZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9TeW5jaHJv
bm91c0xvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTeW5jaHJvbm91c0xvYWRl
ckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3lu
Y2hyb25vdXNMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW06CisgICAgICAgIChXZWJDb3JlOjpSYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yOjpnaXZlUmVzcG9uc2VUb1Rhc2tJZkJ5dGVzSW5SYW5nZVJlY2VpdmVkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRh
dGFSZWNlaXZlZCk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNv
dXJjZTpyZWNlaXZlZERhdGE6XSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5UHJldmll
d0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbToK
KyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRl
IGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpk
YXRhQ2hhbmdlZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaDoKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisyMDIxLTEyLTIzICBKZWFuLVl2ZXMgQXZlbmFyZCAg
PGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2NhbGFibGVJbWFnZURlY29kZXIgc2hvdWxkIGJl
IHVzaW5nIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIERhdGFTZWdtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NDEKKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vODU4NTQyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBEYXRhU2VnbWVudCBzaG91bGQgYmUgYSBTaGFyZWRCdWZmZXIncyBpbXBsZW1l
bnRhdGlvbiBkZXRhaWxzIGFuZCBub3QKKyAgICAgICAgYmUgdXNlZCBvdXRzaWRlIFNoYXJlZEJ1
ZmZlcidzIGNvZGUuCisgICAgICAgIEhpc3RvcmljYWxseSwgdXNpbmcgdGhlIGlubmVyIERhdGFT
ZWdtZW50IHdhcyByZXF1aXJlZCBhcyBpdCB3YXMgdGhyZWFkCisgICAgICAgIHNhZmUgd2hpbGUg
U2hhcmVkQnVmZmVyIHdhc24ndDogVGhpcyBpcyBubyBsb25nZXIgdGhlIGNhc2UuCisgICAgICAg
IFNoYXJlZEJ1ZmZlciBhbmQgRGF0YVNlZ21lbnQgYXJlIHNlbWFudGljYWxseSB2ZXJ5IHNpbWls
YXIsIHNvIHRoaXMgaXMKKyAgICAgICAgbW9zdGx5IGEgZmluZC9yZXBsYWNlIGNoYW5nZS4KKyAg
ICAgICAgRmxhdHRlbmluZyB0aGUgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyBzdGlsbCByZXF1
aXJlZCBhcyBtb3N0IGRlY29kZXJzCisgICAgICAgIHJlcXVpcmUgcmVhZGluZyB0aGUgcmF3IGJ5
dGVzLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJhY2tpbmdTdG9yZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJhY2tpbmdTdG9yZTo6SW1hZ2VCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QVZJRkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpB
VklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1h
Z2VSZWFkZXI6OnJlYWRVaW50MTYpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6
OnJlYWRVaW50MzIpOgorICAgICAgICAoV2ViQ29yZTo6Qk1QSW1hZ2VSZWFkZXI6OnNldERhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5o
OgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKUEVHSW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlBFRzIwMDBJbWFnZURlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQTkdJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUElt
YWdlRGVjb2Rlcjo6ZGVjb2RlKToKKworMjAyMS0xMi0yMiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIG1ha2UgU2hhcmVkQnVmZmVyOjpjb3B5KCkgcmV0dXJu
IGEgY29udGlndW91cyBTaGFyZWRCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNDYyMgorICAgICAgICByZGFyOi8vcHJvYmxlbS84NjgyOTUy
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG1ha2Ug
U2hhcmVkQnVmZmVyOjpjb3B5KCkgcmV0dXJuIGEgY29udGlndW91cyBTaGFyZWRCdWZmZXIKKwor
ICAgICAgICBBUEkgdGVzdHMgYWRkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSBj
b25zdCk6CisKIDIwMjEtMTItMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIFRlc3QgYWNjZXNzaWJpbGl0eS9hcmlhLWlu
aGVyaXRzLXByZXNlbnRhdGlvbmFsLmh0bWwgaXMgZmFpbGluZyB3aXRoIEFUU1BJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGNlMjdlMTRjNjlmZDI0NGFlN2IyNDQ1ZTNlNDk4N2M2ZjcxYmIyODMuLmEwODNlOWI0OTk0
NTIzNTIyMGEwNmU4ODQyNTViYThjMDg4ZjVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBA
CisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAg
ICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3JraW5nIGFj
dG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFS
ZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVu
ZGluZ0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVm
bGlnaHRDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNlbmRCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZm
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNr
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6bG9hZEJvZHlGcm9tUHJlbG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHku
aDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6U2hhcmVkQnVmZmVyQ29weSk6Cisg
ICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyk6
CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRl
ci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46
OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjptYW51
YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJlZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVj
ZWl2ZUJsb2JDaHVuayk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KToKKwogMjAyMS0xMi0yNiAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBXZWJLaXQvQ29j
b2FDb2xvci5oIHdpdGggV2ViQ29yZS9Db2xvckNvY29hLmgsIG5vdCBjb25mdXNpbmcgYXQgYWxs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDU3NjgxYjIxYTczNDM5ZTkwYmYyMWJhMjQ0OTU4MjU5
N2UwMTk5ODIuLmJiMWM1YjUzNmM0Zjk5MTVmYmFiZDlhYzMwMzdiYzQ0OGM3NzQ2YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBB
dmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNl
Q2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtpbmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAg
ICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmg6CisKIDIwMjEtMTIt
MTQgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUg
U2hhcmVkQnVmZmVyIGNsYXNzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggZWY5
NDlkZTYwNjg5NmNhOTkzZWRmOGYzNGQ5YzFiMzBhNWI2NTRhYi4uZDU5NTdkZGIxZjRhZjg4YTRi
NWZkNzEzMGYxMDcxNDlhYjUwOWEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBu
ZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84NDc0NDY4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVh
dGVQcmV2aWV3TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgor
ICAgICAgICAoLVtXZWJGcmFtZSBfY29tbWl0RGF0YTpdKToKKwogMjAyMS0xMi0yMiAgTWljaGFl
bCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggV2ViS2l0IEJ1aWxk
IGlzc3VlcyB3aGVuIHVzaW5nIHN5c3RlbSBjb250ZW50IHBhdGgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggYzIzMWYyMDdk
YTI1Y2QyYTE1ODYwZDI4ZGIzY2UxN2U4NTc1NzdkNS4uZTYxM2FhNTA5Zjc0YzBkZTBlNmQzODM1
MThlNTI2ZjczYWE1OGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTMyMCwxMyArMzIwLDEzIEBAIHZvaWQgRmV0Y2hC
b2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25z
dCBTdHJpbmcmIGNvCiAgICAgfQogfQogCi12b2lkIEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgc2l6ZSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3Vt
ZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAobV9zb3Vy
Y2UpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShk
YXRhLCBzaXplKSk7CisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVB
cnJheUJ1ZmZlcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2J1ZmZlci5hcHBl
bmQoZGF0YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQg
RmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3Vt
ZXIuaAppbmRleCA4NzFkMmMwODYzMzFhOTgyOTRhMTY2YTRiNDJlMzE4NGUwMzc3NzJiLi5kNDY1
MWIyM2RhNzFjZjhmNGM4Yzk5NjcxZDIyN2ViNWFjOGQyYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBt
X3R5cGUodHlwZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBi
b29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CiAgICAgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgp
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNo
Qm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuY3BwCmluZGV4IGE2MzMxMDhiNTQ3NzgzOTNmYzU0NzUwMDMyYTlhMmU4NmFkZTdmY2MuLjUz
NjY4MTU1YmRlYmMxYWVmMzlmNGQ5OWZiOWRhZGMxZWJlZjdhMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yOTgsMTEgKzI5OCwx
MCBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ0ZhaWxlZCgpCiAgICAgZmluaXNo
QmxvYkxvYWRpbmcoKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNo
dW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIEFTU0VSVChkYXRhKTsKICAg
ICBBU1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJjZSk7Ci0gICAgaWYgKCFtX3JlYWRhYmxlU3Ry
ZWFtU291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpKQor
ICAgIGlmICghbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+ZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRl
QXJyYXlCdWZmZXIoKSkpCiAgICAgICAgIHN0b3AoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDVjYTdlMzk2YzQyMjcwMTkzNTZi
MDgwNmU0ZWVkYmU5NWU5MjhmNGIuLjgxZmQwNmVjZGQ2ZmMzOGM5ZTg1OTg3Y2ViZGZjMTZkZDg2
ZjNjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGZXRjaExvYWRlci5oIgogI2luY2x1ZGUg
IkZldGNoTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEwMCw3ICsx
MDEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgLy8gQmxvYiBsb2FkaW5nIHJvdXRp
bmVzCi0gICAgdm9pZCBibG9iQ2h1bmsoY29uc3QgdWludDhfdCosIHNpemVfdCk7CisgICAgdm9p
ZCBibG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBibG9iTG9hZGluZ1N1
Y2NlZWRlZCgpOwogICAgIHZvaWQgYmxvYkxvYWRpbmdGYWlsZWQoKTsKICAgICB2b2lkIGZpbmlz
aEJsb2JMb2FkaW5nKCk7CkBAIC0xMTMsNyArMTE0LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAv
LyBGZXRjaExvYWRlckNsaWVudCBBUEkKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JD
aHVuayhkYXRhLCBzaXplKTsgfQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhidWZmZXIpOyB9CiAg
ICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsgb3duZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4
IDAzZjg5YjYxY2E1ZjdjNzE3NmI5ZDg4Y2QxMzY2MGU4NmI3YTI1NDguLjRiNDViZmQ4NzUwNDA2
ZjZlN2RhNzE4Zjk5ODE2OTQ3MWE1ZTg0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0xNDgsMTMgKzE0OCwxMyBAQCB2b2lkIEZldGNoTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlcwogICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9
CiAKLXZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIHZhbHVl
LCBpbnQgc2l6ZSkKK3ZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBib29sKQogewogICAgIGlmICghbV9jb25zdW1lcikgewotICAgICAg
ICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YSh2YWx1ZSwgc2l6ZSk7CisgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9j
b25zdW1lci0+YXBwZW5kKHZhbHVlLCBzaXplKTsKKyAgICBtX2NvbnN1bWVyLT5hcHBlbmQoYnVm
ZmVyKTsKIH0KIAogdm9pZCBGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmgKaW5kZXggNDYxMmQwZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZC4uNWVlYWVm
ODJkMWRmM2VmY2VkMjE0MDAzZGY1MTg4ODcwMzZmOTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQgQVBJLgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGlu
dCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBi
b29sIHVzZVN0ckxlbikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
TG9hZGVySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aExvYWRlckNsaWVudC5oCmluZGV4IGZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0
NWU3ODkuLjEwOWUwOGVjZjdhNDdlN2MwMzdlMzJkY2FhY2FiODZjODFjMThkM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuY3BwCmluZGV4IDBlN2IwMDVlODlhM2QxNzQwYjFjZjlhZGZmOGI0ZjJmMmZjNDNjOTku
LmRjYTBlMjM4MmUzMmZjMDM3Mjg4N2ZkNDg1MjE0YTE3MzAxYjFiZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzYyLDEyICszNjIs
MTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxsYmFjayht
X3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hSZXNw
b25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UubV9yZWFkYWJsZVN0cmVhbVNvdXJjZSB8fCBt
X2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAgaWYgKG1fY29uc3VtZURhdGFDYWxsYmFjaykg
ewotICAgICAgICBTcGFuIGNodW5rIHsgZGF0YSwgc2l6ZSB9OworICAgICAgICBTcGFuIGNodW5r
IHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9OwogICAgICAgICBtX2NvbnN1bWVEYXRh
Q2FsbGJhY2soJmNodW5rKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM3NSw3ICszNzUs
NyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgIGF1dG8mIHNvdXJjZSA9ICptX3Jlc3Bv
bnNlLm1fcmVhZGFibGVTdHJlYW1Tb3VyY2U7CiAKICAgICBpZiAoIXNvdXJjZS5pc1B1bGxpbmco
KSkgewotICAgICAgICBtX3Jlc3BvbnNlLmJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChkYXRhLCBz
aXplKTsKKyAgICAgICAgbV9yZXNwb25zZS5ib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoYnVmZmVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgRmV0
Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgc2l6ZV90IHNpemUpCiAgICAgICAgIHN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAoIXNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6
ZSkpKSB7CisgICAgaWYgKCFzb3VyY2UuZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSkpIHsKICAgICAgICAgc3RvcCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDY3
LDcgKzQ2Nyw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRh
JiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRoUGFkZGluCiAKIHZvaWQgRmV0Y2hSZXNwb25z
ZTo6Y29uc3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4QXJyYXk+JiYgY2h1bmspCiB7Ci0gICAgYm9k
eSgpLmNvbnN1bWVyKCkuYXBwZW5kKGNodW5rLT5kYXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkp
OworICAgIGJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaHVu
ay0+ZGF0YSgpLCBjaHVuay0+Ynl0ZUxlbmd0aCgpKSk7CiB9CiAKIHZvaWQgRmV0Y2hSZXNwb25z
ZTo6Y29uc3VtZUJvZHlBc1N0cmVhbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXNwb25zZS5oCmluZGV4IDZiMDUwNWQ4OGIxMzJlMjhjYjk1NGFiOWEwZTdlZmU4MTNm
NzAyYWYuLmY5OTI0OWMzOWY5ZDBiMmZjODdhMmY5YzQ2ZDc5MzkyODg4MTRiZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCkBAIC0xNDMsNyArMTQz
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWw7CiAgICAgICAg
IHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKIAog
ICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3BvbnNlOwogICAgICAgICBOb3RpZmljYXRpb25D
YWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggMjdhNmQ3
MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1MmU3ZC4uYTY0MWY4MTA3YjRmZDE3OTExZmRi
OTJiYjMwZjQ1ZTJlODJiNTJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMTc3LDEwICsxNzcs
MTAgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMKIAogLy8gTUFSSzogLSBDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudAogCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQor
dm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgbV9kYXRhLmFwcGVuZChkYXRh
LCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggY2UwMDlkNGU1ZWRj
MzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZS4uMGQzYmRiNzQ5ZDdhMzM2OGIzY2E2OGMyMTcz
MTYwNTkxNTQ5ZDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0
ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
bmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgLy8g
Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgb3ZlcnJpZGVzLgotICAgIHZvaWQgZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZp
bmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVk
QnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCiAgICAgLy8gTW9kZWxQbGF5ZXJD
bGllbnQgb3ZlcnJpZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtU2luay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtU2luay5oCmluZGV4IGQ1MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVl
YWM4ZmY4MzhhMzkuLmZlZTk4ODQyMjFiYjQzZThjYzA2MmVhYmNkMGE5OWVjNTRjMDM0NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNp
bmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1T
aW5rLmgKQEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZm
ZXJTb3VyY2U7CiBjbGFzcyBSZWFkYWJsZVN0cmVhbTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFtU2luayA6IHB1YmxpYyBSZWZDb3VudGVkPFJl
YWRhYmxlU3RyZWFtU2luaz4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5jcHAKaW5kZXggYjdmNzVlZGEzYjIzM2IxOWIyMGVkNzA0Mjg5NDliYjMz
NTg5OGU4MS4uNzM4NTJkNGMwYWYwMzg0NzVmMTViNjU0OWRjNjg5YmY4NTUxYjIwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNw
b25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIu
aCIKQEAgLTE2MywxNiArMTY0LDE1IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyCiAgICAgICAg
IG1fY2xpZW50LT5kaWRTdGFydExvYWRpbmcoKTsKIH0KIAotdm9pZCBGaWxlUmVhZGVyTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3Zv
aWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGJvb2wpCiB7Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChkYXRhTGVuZ3Ro
ID4gMCk7CisgICAgQVNTRVJUKGJ1ZmZlci5zaXplKCkpOwogCiAgICAgLy8gQmFpbCBvdXQgaWYg
d2UgYWxyZWFkeSBlbmNvdW50ZXJlZCBhbiBlcnJvci4KICAgICBpZiAobV9lcnJvckNvZGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGludCBsZW5ndGggPSBkYXRhTGVuZ3RoOworICAgIGludCBs
ZW5ndGggPSBidWZmZXIuc2l6ZSgpOwogICAgIHVuc2lnbmVkIHJlbWFpbmluZ0J1ZmZlclNwYWNl
ID0gbV90b3RhbEJ5dGVzIC0gbV9ieXRlc0xvYWRlZDsKICAgICBpZiAobGVuZ3RoID4gc3RhdGlj
X2Nhc3Q8bG9uZyBsb25nPihyZW1haW5pbmdCdWZmZXJTcGFjZSkpIHsKICAgICAgICAgLy8gSWYg
dGhlIGJ1ZmZlciBoYXMgaGl0IG1heGltdW0gc2l6ZSwgaXQgY2FuJ3QgYmUgZ3Jvd24gYW55IG1v
cmUuCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobV92YXJpYWJsZUxlbmd0aCkgewotICAgICAg
ICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90b3RhbEJ5dGVzICsgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGRhdGFMZW5ndGgpOworICAgICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90
b3RhbEJ5dGVzICsgYnVmZmVyLnNpemUoKTsKICAgICAgICAgICAgIGlmIChuZXdMZW5ndGggPCBt
X3RvdGFsQnl0ZXMpIHsKICAgICAgICAgICAgICAgICBmYWlsZWQoTm90UmVhZGFibGVFcnJvcik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgRmlsZVJl
YWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgpCiAgICAgaWYgKGxlbmd0aCA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBtZW1j
cHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQs
IGRhdGEsIGxlbmd0aCk7CisgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihtX3Jhd0RhdGEt
PmRhdGEoKSkgKyBtX2J5dGVzTG9hZGVkLCBidWZmZXIuZGF0YSgpLCBsZW5ndGgpOwogICAgIG1f
Ynl0ZXNMb2FkZWQgKz0gbGVuZ3RoOwogCiAgICAgbV9pc1Jhd0RhdGFDb252ZXJ0ZWQgPSBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKaW5kZXggNTM5YzIz
MDRhODJlNjNhYWRmZTJjNTY3Yzk4ZDBiOGM2ODdhOGU5Zi4uYjdlNWI0MDU3ZmIyMDZmZjMyMzE1
NWNjMGYxNTAyZmNhMjBkMjY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
TG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CmluZGV4IDVjNWJiMmFlYTgzOTkxOGIwNjk3NzU4ODFjZTNhMzY5YTQyOGU1YjkuLjc4MTc3NWE4
NDE2NjI2ZTgyOTBmZWFiODI0ZTdiMmFlZjVjYWIyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC02MTYsMTAg
KzYxNiwxMCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1bWVudAogICAgICAgICBuZXR3b3JrQWdlbnQt
PmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9uc2UoaWRlbnRpZmllciwgZG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5l
dHdvcmtBZ2VudCgpKQotICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbmV0
d29ya0FnZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExv
YWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2Fk
ZXIqIHJlc291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGQyOTU3ODEwZDgzODJjOTM1MWQ1YTkzZjE0
NGFlZDE0OTNiY2M2NTEuLjgyYWNjZWQyMGNmZDUxMzFiMjUwMmYwOTlhOWM0ZmEyZmRkNjE2ZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKQEAgLTE5MywxMyArMTkzLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBk
aWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoUGFnZSYsIERvY3VtZW50TG9hZGVyKiwgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZShGcmFtZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ciYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllcik7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZURhdGEoRnJhbWUqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBz
dGF0aWMgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
JiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVy
Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZyhXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKIApAQCAtNDE0LDcgKzQxNCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1l
bnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNv
dXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVy
UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXImLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50
IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYpOwpAQCAtMTA4MiwxNyArMTA4MiwxNyBAQCBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVzcG9u
c2UoRG9jdW1lbgogICAgICAgICBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1w
bCgqYWdlbnRzLCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXIsIGlkZW50aWZpZXIpOwogfQogICAg
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShG
cmFtZSogZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQoraW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShGcmFtZSog
ZnJhbWUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEZBU1RfUkVUVVJO
X0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMs
IGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAg
ICAgZGlkUmVjZWl2ZURhdGFJbXBsKCphZ2VudHMsIGlkZW50aWZpZXIsIGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBnbG9iYWxTY29wZSwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlcikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBk
aWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyhnbG9iYWxTY29wZSksIGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRh
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKGdsb2JhbFNjb3BlKSwgaWRlbnRpZmllciwgYnVmZmVy
LCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2Fk
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcAppbmRleCAzOWIwMTFjZjA2ZjdmMzg1MzI0M2UwYTc2M2EzYjFkNDU0OTA0MTQ5Li4zMjhl
YmU3ZTY0MTE5NWU1YTQ2ODUwMjc1NTkxMGY3OGM0OGI1OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTkwLDEwICs5MCwx
MCBAQCBzaXplX3QgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGF0YUxlbmd0
aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGF0YUJ1ZmZlci5zaXplKCk7CiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCkKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJl
c291cmNlRGF0YTo6YXBwZW5kRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAg
QVNTRVJUKCFoYXNDb250ZW50KCkpOwotICAgIG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgbV9kYXRhQnVmZmVyLmFwcGVuZChkYXRhKTsKIH0KIAogdW5zaWduZWQg
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgp
CkBAIC0yMjEsNyArMjIxLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRh
KGNvbnN0IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEmIHIKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLU5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJl
cXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCitOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
bWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IHJlc291
cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3VyY2VEYXRhKQpA
QCAtMjMwLDE1ICsyMzAsMTUgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBj
b25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3VyY2UKICAgICBpZiAoIXNo
b3VsZEJ1ZmZlclJlc291cmNlRGF0YSgqcmVzb3VyY2VEYXRhKSkKICAgICAgICAgcmV0dXJuIHJl
c291cmNlRGF0YTsKIAotICAgIGlmIChyZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGFM
ZW5ndGggPiBtX21heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQorICAgIGlmIChyZXNv
dXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGEuc2l6ZSgpID4gbV9tYXhpbXVtU2luZ2xlUmVz
b3VyY2VDb250ZW50U2l6ZSkKICAgICAgICAgbV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEt
PmV2aWN0Q29udGVudCgpOwogICAgIGlmIChyZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0ZWQo
KSkKICAgICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKIAotICAgIGlmIChlbnN1cmVGcmVlU3Bh
Y2UoZGF0YUxlbmd0aCkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7Cisg
ICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRhLnNpemUoKSkgJiYgIXJlc291cmNlRGF0YS0+aXND
b250ZW50RXZpY3RlZCgpKSB7CiAgICAgICAgIG1fcmVxdWVzdElkc0RlcXVlLmFwcGVuZChyZXF1
ZXN0SWQpOwotICAgICAgICByZXNvdXJjZURhdGEtPmFwcGVuZERhdGEoZGF0YSwgZGF0YUxlbmd0
aCk7Ci0gICAgICAgIG1fY29udGVudFNpemUgKz0gZGF0YUxlbmd0aDsKKyAgICAgICAgcmVzb3Vy
Y2VEYXRhLT5hcHBlbmREYXRhKGRhdGEpOworICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRhdGEu
c2l6ZSgpOwogICAgIH0KIAogICAgIHJldHVybiByZXNvdXJjZURhdGE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IGRhYWU1ZmU0YTMx
ZTMxNTkzNjM3OTA0MjNmNWZiZDMzNzBjNWNkMzkuLmM4Y2VkMTJhNjQwN2ZkY2Q1NzRlY2MyYTc4
MTllZGU2NjM4MDNkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6
CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0
aCgpIGNvbnN0OwotICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpOworICAgICAgICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJik7CiAgICAgICAgIHVuc2lnbmVkIGRlY29kZURhdGFUb0NvbnRlbnQoKTsKIAogICAg
ICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJj
ZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIHNl
dFJlc291cmNlQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBj
b250ZW50LCBib29sIGJhc2U2NEVuY29kZWQgPSBmYWxzZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNv
bnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgIFJlc291cmNlRGF0YSBjb25z
dCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFy
ZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwCmluZGV4IDNjZWI0YjQ3ZjEwNjhhMGFmZWFmMDBmMTc5YzI4MDBjNDc2YmQ2YjEuLjlhNjFl
YjQyZDgxZTc5M2M5Y2Y0OWJjZDU2ZmQyMzA0ZGY0OWFlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
QEAgLTEyNCwxNSArMTI0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURl
dGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZQogICAg
IHsKLSAgICAgICAgaWYgKCFkYXRhTGVuZ3RoKQorICAgICAgICBpZiAoYnVmZmVyLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoZGF0YUxlbmd0aCA9PSAtMSkK
LSAgICAgICAgICAgIGRhdGFMZW5ndGggPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSkpOwotCi0gICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29kZXIt
PmRlY29kZShkYXRhLCBkYXRhTGVuZ3RoKSk7CisgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoID0g
dXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5k
YXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CisgICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZCht
X2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBkYXRhTGVuZ3RoKSk7CiAgICAgfQogCiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJp
ZGUKQEAgLTU0OSw5ICs1NDcsOCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgICAgICAg
ICAgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCiAgICAgICAgICAgICAg
ICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBwcmV2aW91
c1Jlc291cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+YmFzZTY0RW5j
b2RlZCgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNC
dWZmZXJlZERhdGEoKSkgewotICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNCdWZmZXIgPSBw
cmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNC
dWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBz
ZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIHByZXZpb3Vz
UmVzb3VyY2VEYXRhLT5idWZmZXIoKS0+Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihbJl0o
YXV0byYmIGJ1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPm1h
eWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgYnVmZmVyKTsKICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTc0LDI0ICs1NzEsMjggQEAgdm9p
ZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmkKICAgICAvLyBJZiB3ZSByZXZhbGlkYXRlZCB0aGUgcmVzb3Vy
Y2UgYW5kIGdvdCBOb3QgbW9kaWZpZWQsIHNlbmQgY29udGVudCBsZW5ndGggZm9sbG93aW5nIGRp
ZFJlY2VpdmVSZXNwb25zZQogICAgIC8vIGFzIHRoZXJlIHdpbGwgYmUgbm8gY2FsbHMgdG8gZGlk
UmVjZWl2ZURhdGEgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KICAgICBpZiAoaXNOb3RNb2RpZmll
ZCAmJiBjYWNoZWRSZXNvdXJjZSAmJiBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSkKLSAg
ICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgbnVsbHB0ciwgY2FjaGVkUmVzb3VyY2Ut
PmVuY29kZWRTaXplKCksIDApOworICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBT
aGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFM
ZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50
OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYg
KG1faGlkZGVuUmVxdWVzdElkZW50aWZpZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5Ojpy
ZXF1ZXN0SWQoaWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBpbnQgZGF0YUxlbmd0aCA9IGRh
dGEuc2l6ZSgpOwogCi0gICAgaWYgKGRhdGEpIHsKLSAgICAgICAgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5t
YXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGlm
IChkYXRhLmRhdGEoKSkgeworICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3Vy
Y2VEYXRhKHJlcXVlc3RJZCwgZGF0YSk7CiAKICAgICAgICAgLy8gRm9yIGEgc3luY2hyb25vdXMg
WEhSLCBpZiB3ZSBkaWRuJ3QgYWRkIGRhdGEgdGhlbiB3ZSBjYW4gYXBwbHkgaXQgaGVyZSBhcyBi
YXNlNjQgZW5jb2RlZCBjb250ZW50LgogICAgICAgICAvLyBPZnRlbiB0aGUgZGF0YSBpcyB0ZXh0
IGFuZCB3ZSB3b3VsZCBoYXZlIGEgZGVjb2RlciwgYnV0IGZvciBub24tdGV4dCB3ZSB3b24ndCBo
YXZlIGEgZGVjb2Rlci4KICAgICAgICAgLy8gU3luYyBYSFJzIG1heSBub3QgaGF2ZSBhIGNhY2hl
ZCByZXNvdXJjZSwgd2hpbGUgbm9uLXN5bmMgWEhScyB1c3VhbGx5IHRyYW5zZmVyIGRhdGEgb3Zl
ciBvbiBjb21wbGV0aW9uLgogICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSAm
JiByZXNvdXJjZURhdGEgJiYgIXJlc291cmNlRGF0YS0+aGFzQnVmZmVyZWREYXRhKCkgJiYgIXJl
c291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2UoKSkKLSAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0
YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0
YSwgZGF0YUxlbmd0aCksIHRydWUpOworICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRS
ZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpLCB0cnVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkYXRhTGVuZ3Ro
ID0gZW5jb2RlZERhdGFMZW5ndGg7CisgICAgICAgIGVuY29kZWREYXRhTGVuZ3RoID0gMDsKICAg
ICB9CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwg
dGltZXN0YW1wKCksIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTEyNzEsNyAr
MTI3Miw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgaWYgKGxvYWRlci0+cmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmFibGUg
dG8gZnVsZmlsbCByZXF1ZXN0LCBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCJfcyk7CiAK
LSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YTsKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBkYXRhOwogICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CiAgICAgICAgIGF1dG8g
YnVmZmVyID0gYmFzZTY0RGVjb2RlKGNvbnRlbnQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKQEAg
LTEyOTYsOSArMTI5Nyw5IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6aW50ZXJjZXB0UmVxdWVzdFdpdGhSZXNwb25zCiAgICAgfQogICAgIHJl
c3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGTW92ZShleHBsaWNpdEhlYWRlcnMpKTsKICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCByZXNwb25zZS5taW1lVHlwZSgpKTsKLSAgICBsb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShy
ZXNwb25zZSwgW2xvYWRlciwgYnVmZmVyID0gZGF0YS5yZWxlYXNlTm9uTnVsbCgpXSgpIG11dGFi
bGUgeworICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBi
dWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgewogICAgICAgICBpZiAoYnVmZmVyLT5z
aXplKCkpCi0gICAgICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZm
ZXIpLCBidWZmZXItPnNpemUoKSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAg
ICAgIGxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBidWZmZXItPnNpemUoKSwgRGF0YVBh
eWxvYWRXaG9sZVJlc291cmNlKTsKICAgICAgICAgbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKE5l
dHdvcmtMb2FkTWV0cmljcygpKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggNmJjZDg3
ZGRjZDhiMDQ0MTMwOGQxZDAxZWNhNmIwZTZkYTE0MTNkNC4uY2E2Zjc0ZTFiODY5ODBmNDBiMTU1
ZDEzZTE2YjcxYWRmYjk0MDQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0T2ZUeXBlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRM
b2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OkxvYWRU
eXBlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9h
ZGVyKik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRp
ZEZhaWxMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUoRG9jdW1lbnRMb2FkZXIqLCBDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDQzMzJkNjkxYmJmODI2YTdjODdlYTgzYTMxN2U5
NjExNWEyMDQ5OTMuLmI4NmY5YmE2Mzc2NWVjNGRmZTg0ZjAyZGE0ZGY3ODIzMDljMTU4ZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTE0NSwxNCArMTQ1LDE0
IEBAIGJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6
OkJsb2NrZWQ7CiB9CiAKLWJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNl
aXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQorYm9vbCBDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBSZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQg
fTsKIAogICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9H
KENvbnRlbnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICVkIGJ5dGVzIG9mIGRh
dGEgZnJvbSA8JXM+LlxuIiwgbGVuZ3RoLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOwotICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tl
ZChbZGF0YSwgbGVuZ3RoXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsK
LSAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhLCBsZW5ndGgpOworICAgICAg
ICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVz
IG9mIGRhdGEgZnJvbSA8JXM+LlxuIiwgZGF0YS5zaXplKCksIG1fbWFpblJlc291cmNlLT51cmwo
KS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVy
VW50aWxCbG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIm
IGNvbnRlbnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRh
KTsKICAgICAgICAgfSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQp
CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VE
YXRhKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6QWxsb3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9
PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3Vy
Y2VCdWZmZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5k
YXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRp
Z3VvdXMoKS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGll
bnQuZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VD
b250aWd1b3VzKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAppbmRleCA4YjZkZWZmZmFiODBmNWRhYzI1
ODdlMzcxYzAxODc5YjlmM2ZkZjc3Li42MGI0ZGExYTliMzM2OGMyZGZlY2ZmNDJiODlmMzU1OGU4
MzMxYzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYw
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRp
bnVlQWZ0ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBi
b29sIGNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxl
bmd0aCk7CisgICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlJik7CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1
ZXN0KGNvbnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVE
YXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRl
eCAyMTVjMDRlYzk4OTVlOWYxZTZlMTQ3ZGE4MjA5MzAwOTg1MjM5NjIzLi5mYTdhZDMwMzlhMjA1
ZTkwNTcxMDhmM2M2ZjM5MjQxOWJjNDY0N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b250ZW50RmlsdGVyQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZUVy
cm9yOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNz
IENvbnRlbnRGaWx0ZXJDbGllbnQgewpAQCAtNDEsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0
ZXIoY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNv
bnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3Zpc2lv
bmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJM
LCBTdWJzdGl0dXRlRGF0YSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwCmluZGV4IDZiZjNhYzI5N2VjNmIyNjNhMDc4NjQwYmNmM2FkNTc3OWRiMGZlZGIuLjk3
ZTNkNjViM2U5MmRlMzI3ZjkyZjNiYWQ0Y2M1MWMxNTQ5M2E1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDgzLDggKzQ4Myw4IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZygpCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYW4gZW1w
dHkgZG9jdW1lbnQsIGl0IHdpbGwgbm90IGhhdmUgYWN0dWFsbHkgYmVlbiBjcmVhdGVkIHlldC4g
Q29tbWl0IGR1bW15IGRhdGEgc28gdGhhdAogICAgICAgICAvLyBEb2N1bWVudFdyaXRlcjo6YmVn
aW4oKSBnZXRzIGNhbGxlZCBhbmQgY3JlYXRlcyB0aGUgRG9jdW1lbnQuCiAgICAgICAgIGlmICgh
bV9nb3RGaXJzdEJ5dGUpCi0gICAgICAgICAgICBjb21taXREYXRhKDAsIDApOwotICAgICAgICAK
KyAgICAgICAgICAgIGNvbW1pdERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisKICAgICAg
ICAgaWYgKCFmcmFtZUxvYWRlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmcmFt
ZUxvYWRlcigpLT5jbGllbnQoKS5maW5pc2hlZExvYWRpbmcodGhpcyk7CkBAIC0xMTU3LDggKzEx
NTcsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQ
b2xpY3lBY3Rpb24gcG9saWN5KQogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1
dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwogICAgICAgICBpZiAoY29u
dGVudCAmJiBjb250ZW50LT5zaXplKCkpIHsKLSAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVk
KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICBjb250ZW50LT5m
b3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAg
ICAgICAgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fQogICAgICAgICBpZiAoaXNMb2FkaW5nTWFpblJlc291cmNlKCkpCkBAIC0xMTcxLDcgKzExNzEs
NyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xp
Y3lBY3Rpb24gcG9saWN5KQogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0
TG9hZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRl
cjo6Y29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gQm90aCB1
bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0
ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3Rh
cnRpbmcgYSBuZXcgbG9hZCwgc28gcmV0YWluIHRlbXBvcmFyaWx5LgpAQCAtMTE4Niw3ICsxMTg2
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgbGVuZ3RoKQogICAgIGlmIChBcmNoaXZlRmFjdG9yeTo6aXNBcmNoaXZlTUlNRVR5cGUo
cmVzcG9uc2UoKS5taW1lVHlwZSgpKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgZnJh
bWVMb2FkZXItPmNsaWVudCgpLmNvbW1pdHRlZExvYWQodGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAg
ICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29tbWl0dGVkTG9hZCh0aGlzLCBkYXRhKTsKIAogICAg
IGlmIChpc011bHRpcGFydFJlcGxhY2luZ0xvYWQoKSkKICAgICAgICAgZnJhbWVMb2FkZXItPmNs
aWVudCgpLmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCk7CkBAIC0xMjE1LDcgKzEyMTUsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkVXNlQWN0aXZlU2VydmljZVdvcmtlckZyb21QYXJl
bnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZQogfQogI2VuZGlmCiAKLXZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmNvbW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCit2b2lk
IERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBpZiAoIW1fZ290Rmlyc3RCeXRlKSB7CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1
ZTsKQEAgLTEzMTMsMjQgKzEzMTMsMjQgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICNlbmRpZgogCiAgICAgQVNT
RVJUKG1fZnJhbWUtPmRvY3VtZW50KCktPnBhcnNpbmcoKSk7Ci0gICAgbV93cml0ZXIuYWRkRGF0
YShieXRlcywgbGVuZ3RoKTsKKyAgICBtX3dyaXRlci5hZGREYXRhKGRhdGEpOwogfQogCi12b2lk
IERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFp
blJlc291cmNlKTsKLSAgICBkYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKKyAgICBkYXRhUmVj
ZWl2ZWQoYnVmZmVyKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRh
UmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAjaWYgRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRl
ci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChkYXRhLCBsZW5ndGgpKQorICAgIGlmIChtX2Nv
bnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29udGludWVBZnRlckRhdGFSZWNlaXZl
ZChidWZmZXIpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgIEFTU0VSVChkYXRhKTsK
LSAgICBBU1NFUlQobGVuZ3RoKTsKKyAgICBBU1NFUlQoYnVmZmVyLmRhdGEoKSk7CisgICAgQVNT
RVJUKGJ1ZmZlci5zaXplKCkpOwogICAgIEFTU0VSVCghbV9yZXNwb25zZS5pc051bGwoKSk7CiAK
ICAgICAvLyBUaGVyZSBpcyBhIGJ1ZyBpbiBDRk5ldHdvcmsgd2hlcmUgY2FsbGJhY2tzIGNhbiBi
ZSBkaXNwYXRjaGVkIGV2ZW4gd2hlbiBsb2FkcyBhcmUgZGVmZXJyZWQuCkBAIC0xMzQwLDEyICsx
MzQwLDEyIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKQogI2VuZGlmCiAKICAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9h
ZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIo
KS5kaXNwYXRjaERpZFJlY2VpdmVEYXRhKHRoaXMsIG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0
UmVzb3VyY2VMb2FkZXIsIGRhdGEsIGxlbmd0aCwgLTEpOworICAgICAgICBmcmFtZUxvYWRlcigp
LT5ub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEodGhpcywgbV9pZGVudGlmaWVyRm9y
TG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgYnVmZmVyLCAtMSk7CiAKLSAgICBtX2FwcGxpY2F0
aW9uQ2FjaGVIb3N0LT5tYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoLCAtMSwg
ZmFsc2UpOworICAgIG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNl
aXZlZChidWZmZXIsIC0xLCBmYWxzZSk7CiAKICAgICBpZiAoIWlzTXVsdGlwYXJ0UmVwbGFjaW5n
TG9hZCgpKQotICAgICAgICBjb21taXRMb2FkKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGNvbW1p
dExvYWQoYnVmZmVyKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0dXBGb3JSZXBsYWNl
KCkKQEAgLTE2MTQsNyArMTYxNCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRl
QXJjaGl2ZSgpCiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBl
KCkpOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEo
bV9wYXJzZWRBcmNoaXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7
CisgICAgY29tbWl0RGF0YSgqbV9wYXJzZWRBcmNoaXZlRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7
CiAjZW5kaWYKIH0KQEAgLTIyNTcsOCArMjI1Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1h
eWJlRmluaXNoTG9hZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+
c2V0dXBGb3JSZXBsYWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgp
OwotICAgIGNvbW1pdExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCks
IHJlc291cmNlRGF0YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKG1haW5SZXNvdXJjZURhdGEo
KS0+bWFrZUNvbnRpZ3VvdXMoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNv
bkxvYWRpbmcoKQpAQCAtMjQxMCw5ICsyNDA5LDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5x
dWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24K
IH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKLXZvaWQgRG9jdW1lbnRMb2FkZXI6
OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBzaXplKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRG
aWx0ZXIoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgZGF0YVJlY2VpdmVkKGRh
dGEsIHNpemUpOworICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50
TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5k
ZXggYjQ2OTgxZDc1MGIyNWMxZmQzMDdmMTZmZGE3NGI3ZWUzMDZhNGMzOS4uMjhlMjhhNjg4YWU2
YjU3ZTBmMGQxNGM0ZTdhMGMyNTU4Y2I2N2U0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKQEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNs
YXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IFNXQ2xpZW50Q29ubmVjdGlvbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291
cmNlTG9hZGVyOwogY2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwogY2xhc3MgVXNlckNvbnRlbnRV
UkxQYXR0ZXJuOwpAQCAtMzc3LDcgKzM3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0VGlt
aW5nKCkgeyBtX2xvYWRUaW1pbmcgPSB7IH07IH0KIAogICAgIC8vIFRoZSBXZWJLaXQgbGF5ZXIg
Y2FsbHMgdGhpcyBmdW5jdGlvbiB3aGVuIGl0J3MgcmVhZHkgZm9yIHRoZSBkYXRhIHRvIGFjdHVh
bGx5IGJlIGFkZGVkIHRvIHRoZSBkb2N1bWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNv
bW1pdERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgY29tbWl0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0JiBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpIGNvbnN0OwogICAgIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0KiBhcHBsaWNhdGlvbkNhY2hlSG9zdFVubGVzc0JlaW5nRGVzdHJv
eWVkKCkgY29uc3Q7CkBAIC00NzcsNyArNDc4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29t
bWl0SWZSZWFkeSgpOwogICAgIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwotICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCB1aW50OF90KiwgaW50KTsKKyAg
ICB2b2lkIGNvbW1pdExvYWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbGVhck1h
aW5SZXNvdXJjZUxvYWRlcigpOwogCiAgICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKQEAgLTQ5
Myw3ICs0OTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFpblJlY2VpdmVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJy
aWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3Zl
cnJpZGU7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmV2
aWV3UmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKQEAgLTUwMywxMyArNTA0LDEzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3Qg
dWludDhfdCosIGludCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2
ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBX
RUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0
KSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRG
b3JDb250ZW50RmlsdGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRl
cihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAg
IGJvb2wgbWF5YmVMb2FkRW1wdHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBiOWM0MTM1MjU2NzYyNjcyMTkwN2Fm
MzY2ZGZiMWRlYzc5NGMyNDc0Li44NjRiNjVhMWQxMTMxZmI2MzcxMjViMTczOTkxZTlkM2UwYTZl
NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtNDM3LDIwICs0MzcsMjAgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQK
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsK
IH0KIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQor
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBkaWRSZWNlaXZl
RGF0YShtX3Jlc291cmNlLT5pZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGRp
ZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgYnVmZmVyKTsKIH0KIAotdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9jbGll
bnQpOwogCiAgICAgaWYgKG1fZGVsYXlDYWxsYmFja3NGb3JJbnRlZ3JpdHlDaGVjaykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5n
dGgpOworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGZhbHNlKTsKIH0KIAog
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9h
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlVGltaW5nJiByZXNvdXJj
ZVRpbWluZykKQEAgLTQ5MywyMCArNDkzLDE0IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmCiAK
ICAgICAgICAgaWYgKG9wdGlvbnMoKS5maWx0ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJp
bmdQb2xpY3k6OkRpc2FibGUpIHsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVz
cG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZl
ciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKLSAgICAgICAgICAgICAgICBidWZm
ZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXpl
KCkpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKCpidWZmZXIsIGZhbHNlKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VS
ZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNl
LCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5j
bHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5v
IDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7
Ci0gICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKSkgewotICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8m
IHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRh
KHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+
cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoKmJ1ZmZlciwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02NjcsMTEgKzY2MSw4
IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgfQogICAgIGRpZFJlY2VpdmVSZXNwb25z
ZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YSkgewotICAgICAgICBkYXRh
LT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgZGlkUmVj
ZWl2ZURhdGEoaWRlbnRpZmllciwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAg
ICAgICAgfSk7Ci0gICAgfQorICAgIGlmIChkYXRhKQorICAgICAgICBkaWRSZWNlaXZlRGF0YShp
ZGVudGlmaWVyLCAqZGF0YSk7CiAKICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5k
ZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRp
bWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1f
b3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3Jr
TG9hZE1ldHJpY3M6OmVtcHR5TWV0cmljcygpLCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgK
aW5kZXggZjFmNDFlZTkxZDZjZThhMWM1ODYyMzgxN2IzNThmNzc0NjUxZTBhNC4uYzg2YmE3ZjQ1
MzgzYjZjMjg2MDAzMmQzYWViZmJhM2UwODYwNzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODYsMTQgKzg2LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAg
ICAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsK
LSAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5n
Rm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgb3Zl
cnJpZGU7CiAgICAgICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNvbnN0IFJl
c291cmNlVGltaW5nJik7CiAgICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyKTsKICAgICAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdp
bkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFdyaXRlci5jcHAKaW5kZXggYjA0NmVmMGRlMjA0OGVmZDQzMTk3MDI2MjJiOTZhN2Rm
MmZlYWZhNy4uNGZmOTM4MTgwZmRkMjhmYzcxNWQwODg4MTYwOGZjNjI4OTQ5MmU5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAg
dm9pZCBEb2N1bWVudFdyaXRlcjo6cmVwb3J0RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5yZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVp
bGQpOwogfQogCi12b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5
dGVzLCBzaXplX3QgbGVuZ3RoKQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSB0byBBU1NF
UlQgb25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MjcgaGFz
IGJlZW4gcmVzb2x2ZWQuCiAgICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Tm90
U3RhcnRlZCk7CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0
YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBBU1NFUlQobV9wYXJzZXIpOwotICAgIG1fcGFyc2VyLT5hcHBlbmRCeXRlcygq
dGhpcywgYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjppbnNl
cnREYXRhU3luY2hyb25vdXNseShjb25zdCBTdHJpbmcmIG1hcmt1cCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmgKaW5kZXggMDcxNzJjOTczOWViNTczNWJjODFmOGRlZjJmYjli
Mjg1YzI1NGQwYi4uYzBhMzRhNmI3ZTljZmU5NjQzMDQ1YTk1ZTc5MzIyNTIzNjNiMjY4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudFBhcnNlcjsK
IGNsYXNzIEZyYW1lOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVj
b2RlcjsKIAogY2xhc3MgRG9jdW1lbnRXcml0ZXIgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBVUkwmLCBib29sIGRp
c3BhdGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1l
bnQgPSBudWxscHRyKTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNp
emVfdCBsZW5ndGgpOworICAgIHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICB2b2lkIGluc2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYpOyAvLyBGb3IgYW4g
aW50ZXJuYWwgdXNlIG9ubHkgdG8gcHJldmVudCB0aGUgcGFyc2VyIGZyb20geWllbGRpbmcuCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmNwcAppbmRleCA3NThjYmU4MDY1NGU4ODg5N2FjZDllZDQxMTk5MGM4Njg2Y2FmM2Jh
Li5kMjNjOTZiNmM1MjgwM2ZlYzJlNDU3YjdlYzdkYmM5ZWIzNzk5NWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgRW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogewogfQogCi12
b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIq
LCBjb25zdCB1aW50OF90KiwgaW50KQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21t
aXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
MjI2OTljOWM1MTgzMmE1YWE4Yzg5YWJhYjJmZmM3ZTA5ODViZmMwMC4uMTE2YTE3ZDFmNWM5ZTY0
N2UxZjE0MWExMDA4NmIwNzk4MzkzZjNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9h
ZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQg
Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgZmluYWw7CiAKICAg
ICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNv
bnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmRjOTdk
YzQ2MmM4NzUyNmFhMTg4Zjc5NjhkNjBhMGM4M2Q2ODBkOS4uMTFjMGE4ZjY4NjE1MDZlMDk2MWU1
MmE4ZmY0YzcyMGIyNWJlMjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CkBAIC0xNjg3LDcgKzE2ODcsNyBAQCBib29sIEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxl
bWVudFVSTChVUkwmIHVybCwgTm9kZSYgaW5pdGlhdG9yTm9kZSkKICAgICBSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJl
cXVlc3RGcm9tRGVsZWdhdGUocmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlm
aWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQo
KSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAt
MSwgU3RyaW5nKCkpLCAwLCAtMSwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1h
aW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIs
IHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKSwg
bnVsbHB0ciwgLTEsIGVycm9yKTsKIAogICAgIHVybCA9IHJlcXVlc3QudXJsKCk7CiAKQEAgLTIw
ODcsOCArMjA4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgp
CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwog
CiAgICAgICAgIC8vIFNlbmQgcmVtYWluaW5nIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBtYWluIHJl
c291cmNlLgotICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2Vz
KG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNv
dXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwKLSAgICAgICAgICAgIG51bGxwdHIsIHN0
YXRpY19jYXN0PGludD4obV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKSksIDAsIG1haW5SZXNvdWNlRXJyb3IpOworICAgICAgICBub3RpZmllcigpLnNl
bmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5S
ZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2Uo
KSwgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgp
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgbWFpblJlc291Y2VFcnJvcik7CiAKICAgICAgICAg
VmVjdG9yPFJlZjxGcmFtZT4+IHRhcmdldEZyYW1lczsKICAgICAgICAgdGFyZ2V0RnJhbWVzLmFw
cGVuZChtX2ZyYW1lKTsKQEAgLTIxMzYsNyArMjEzNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNv
bW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEg
cmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUg
cmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAvLyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0
ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2Uu
CiAgICAgICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmls
ZS4KLSAgICAgICAgICAgIG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMo
bV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIDAs
IHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBl
cnJvcik7CisgICAgICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3Nh
Z2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNl
LCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpKSwgZXJyb3IpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IFdoeSBvbmx5IHRo
aXMgZnJhbWUgYW5kIG5vdCBwYXJlbnQgZnJhbWVzPwpAQCAtMzE2Niw3ICszMTY1LDggQEAgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGlu
YXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikgPyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hE
ZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVzIDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNo
RGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5vKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbm90
aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0YSA/IGRhdGEtPmRhdGEoKSA6
IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwLCAtMSwgZXJyb3IpOworCisgICAgbm90
aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgZGF0YSwgLTEsIGVycm9yKTsKICAg
ICByZXR1cm4gaWRlbnRpZmllcjsKIH0KIApAQCAtMzY0Nyw3ICszNjQ3LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6bG9hZGVkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBSZXNvdXIKIAogICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSByZXNvdXJj
ZS5yZXNwb25zZSgpOwogICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpT
b3VyY2U6Ok1lbW9yeUNhY2hlKTsKLSAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3Qs
IHJlc3BvbnNlLCAwLCByZXNvdXJjZS5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CisgICAgbm90
aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdl
dCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1ZXN0LCByZXNwb25zZSwgbnVsbHB0ciwgcmVzb3VyY2Uu
ZW5jb2RlZFNpemUoKSwgZXJyb3IpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjphcHBseVVzZXJB
Z2VudElmTmVlZGVkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZWU5ZjNkMGM5ODRkNDU1Y2JiOTFiNDYwYzFi
YzEyODk4ZDEyMzY1Mi4uMzUyYTRjNGZiNTA0ZjdjZDRkMmVjNDA2ZTZiYzI5MTFhNTVmZDA5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTcsNyArNyw3
IEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uIApAQCAtNTAsNyArNTAsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNp
ZmRlZiBfX09CSkNfXyAKKyNpZmRlZiBfX09CSkNfXwogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CiB0eXBlZGVmIGlkIFJlbW90ZUFYT2JqZWN0UmVmOwogI2Vsc2UKQEAgLTk4LDcg
Kzk4LDcgQEAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0
ZURhdGE7CiBjbGFzcyBXaWRnZXQ7CiAKQEAgLTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9IDA7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5n
KERvY3VtZW50TG9hZGVyKikgPSAwOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUds
b2JhbEhpc3RvcnkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlS
ZWRpcmVjdExpbmtzKCkgPSAwOwogCkBAIC0yNzIsNyArMjcyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIFN0cmluZyBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRv
Q2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRp
b25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopID0gMDsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQpAQCAtMzgxLDcgKzM4MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdmlydHVhbCBBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3NDb250ZW50SmF2YVNjcmlw
dEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEFsbG93c0NvbnRlbnRK
YXZhU2NyaXB0OjpZZXM7IH0KLSAgICAKKwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rp
b25zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UGFn
ZU9mQXBwQm91bmRCZWhhdmlvcigpIHsgfQpAQCAtMzkwLDcgKzM5MCw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoUERGS0lUX1BMVUdJTikKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlUERGUGx1
Z2luKGNvbnN0IFN0cmluZyYsIFN0cmluZ1ZpZXcpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAj
ZW5kaWYKLSAgICAKKwogICAgIHZpcnR1YWwgYm9vbCBpc1BhcmVudFByb2Nlc3NBRnVsbFdlYkJy
b3dzZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDVkMTIwZTI0N2FjMjYyNzExNjFk
ZTBkYzUyMzAyNGRjOGRlMzRkNjkuLjFhMTdhNzBmYTU4YzcyMjhmNjM4OTM1OWRkMGQzMzlkMGUw
NWNkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTIzMSwxMyArMjMxLDEzIEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTCiAgICAgICAg
IG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQp
OwogfQogCi12b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBNZWRp
YVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVz
b3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRh
UmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGRhdGFMZW5ndGgpOworICAgICAgICBtX2NsaWVudC0+ZGF0
YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwogfQogCiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmgKaW5kZXggZmY2YzI4ODcxMDA4OGY0YjA1NGNlNDc2M2Q1ZGEwZGRjOTJjMjA2NS4uN2I1NTc3
MjBlZjA1MzNmYmFhMjI2NTY1MzhlZmRkOTZmNjE3OWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2Uo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWdu
ZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggNjA0M2FjOWJlMjY3ZWE0
ZmJjNzFlMTExOGI5MDc5MTU1ZTM5MTUwMy4uNWNhYWRmNjI5YzcwYWUwODZiNzdiZDcyY2QyODY3
NTM2YjhmYTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDEsMzAgKzE0MSwxNCBAQCB2b2lkIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcAogICAgIH0pOwogfQogCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxv
bmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlw
ZSkKLXsKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxs
cHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOwotfQotCi12b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcg
bG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkK
IHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCi0gICAgaWYgKG1fY2xpZW50KSB7Ci0gICAgICAgIGlmIChidWZmZXIpIHsKLSAgICAg
ICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgc2VnbWVudC5kYXRhKCks
IHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOwotICAg
IH0KKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0
aGlzLCBidWZmZXIpOwogCi0gICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRh
UGF5bG9hZFR5cGUpOworICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShidWZmZXIs
IGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCiB2b2lkIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAppbmRleCBiNTE3NGVkYzk0Yjk5MjM5MDIwNWYw
ZmFkNDUyZWE1YWMzODc4OTM4Li4xZWM3ZDYxZTNhMTc1YzIyYjU1ODc1OGQzN2VkMGM1NWJlNWYx
M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaApAQCAtMzYsMTIgKzM2LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudD4gewogcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCB1aW50OF90Kiwg
aW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciopIHsgfQogICAgIHZpcnR1YWwgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNjIsOCArNjMsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogCkBAIC03NCw4ICs3NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3
aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENh
bmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
KTsKLQogICAgIHZvaWQgbm90aWZ5RG9uZSgpOwogCiAgICAgV2Vha1B0cjxOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlckNsaWVudD4gbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAppbmRleCA2MmJiNTZlMzRlNmY0NmQyNjI4MzZjZmNh
NDY1YjRkYjBlMzA4M2NmLi4xYWMwZTY3YzdmNjhkZWQwZWNiNzhlMTFjMDI0NjliMTA5MWQ1M2I3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NU
cmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKIAogI2lmIFVTRShRVUlDS19MT09LKQogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgpA
QCAtNzgsMTIgKzc5LDEyIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvCiAgICAgZGlzcGF0Y2hE
aWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLT5kb2N1bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50
aWZpZXIoKSwgciwgbG9hZGVyKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2Fk
Tm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNy
ZW1lbnRQcm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSwgZGF0YUxlbmd0aCk7CisgICAgICAg
IHBhZ2UtPnByb2dyZXNzKCkuaW5jcmVtZW50UHJvZ3Jlc3MobG9hZGVyLT5pZGVudGlmaWVyKCks
IGJ1ZmZlci5zaXplKCkpOwogCi0gICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBkYXRhLCBkYXRhTGVuZ3RoLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShsb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCBidWZmZXIsIGVuY29kZWREYXRh
TGVuZ3RoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmluaXNoTG9hZChS
ZXNvdXJjZUxvYWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtM
b2FkTWV0cmljcykKQEAgLTE1MywxMyArMTU0LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZp
ZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJl
CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZShtX2ZyYW1lLCBpZGVudGlmaWVyLCBsb2FkZXIsIHIsIHJlc291cmNlTG9hZGVyKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
K3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
Ly8gTm90aWZ5aW5nIHRoZSBGcmFtZUxvYWRlckNsaWVudCBtYXkgY2F1c2UgdGhlIGZyYW1lIHRv
IGJlIGRlc3Ryb3llZC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7Ci0gICAgbV9m
cmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxv
YWRlciwgaWRlbnRpZmllciwgZGF0YUxlbmd0aCk7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGll
bnQoKS5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwg
YnVmZmVyLnNpemUoKSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgm
bV9mcmFtZSwgaWRlbnRpZmllciwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZv
aWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVy
KiByZXNvdXJjZUxvYWRlcikKQEAgLTE4MCw3ICsxODEsNyBAQCB2b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJl
c291cgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcoJm1fZnJh
bWUsIGxvYWRlciwgaWRlbnRpZmllciwgZXJyb3IpOwogfQogCi12b2lkIFJlc291cmNlTG9hZE5v
dGlmaWVyOjpzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9h
ZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5k
UmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPGNvbnN0IFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewogICAgIC8vIElmIHRoZSByZXF1ZXN0IGlzIG51bGwsIHdpbGxTZW5kUmVx
dWVzdCBjYW5jZWxsZWQgdGhlIGxvYWQuIFdlIHNob3VsZAogICAgIC8vIG9ubHkgZGlzcGF0Y2gg
ZGlkRmFpbExvYWRpbmcgaW4gdGhpcyBjYXNlLgpAQCAtMTkzLDggKzE5NCw4IEBAIHZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsCiAgICAgaWYgKCFyZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgZGlz
cGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CiAK
LSAgICBpZiAoZGF0YUxlbmd0aCA+IDApCi0gICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEo
bG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgaWYgKGJ1ZmZlciAmJiBidWZmZXItPnNpemUoKSkKKyAgICAgICAgZGlzcGF0Y2hEaWRS
ZWNlaXZlRGF0YShsb2FkZXIsIGlkZW50aWZpZXIsICpidWZmZXIsIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIAogICAgIGlmIChlcnJvci5pc051bGwoKSkgewogICAgICAgICBOZXR3b3JrTG9hZE1ldHJp
Y3MgZW1wdHlNZXRyaWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuaAppbmRleCA2ZGExNjAzMjVmNDJmZWY1NDBjNmJkNTBiYjE4MmU4NjlkYWRlOWUzLi4y
YjI1ZDhhM2RkNjE5NDBmNWNhZjU0ZGE5Yzc0NjViMGEyOGQzNDliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFz
cyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBj
bGFzcyBSZXNvdXJjZUxvYWROb3RpZmllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVz
b3VyY2VMb2FkTm90aWZpZXIpOwpAQCAtNTUsMTggKzU2LDE4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBp
bnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VM
b2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZp
ZXJUb0luaXRpYWxSZXF1ZXN0KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRS
ZXF1ZXN0KERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2Uo
RG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBSZXNvdXJjZUxvYWRlciogPSBudWxscHRyKTsKLSAgICB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhEb2N1bWVudExv
YWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9j
dW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKIAotICAgIHZvaWQgc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRM
b2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAg
dm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciosIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+LCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIGJvb2wgaXNJbml0aWFsUmVxdWVz
dElkZW50aWZpZXIoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNmRlYmIyNTg4YTNl
ODJiMjFjNjFkN2U4ZjM2ZTRmNGJiYmEyNWU2MC4uNjY0N2MyNzA4MTE4MGViY2VjMmI1Y2EyOWZk
NjBiNzIzYWI2NDgzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0yOTksOSArMjk5LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQog
CiAgICAgICAgIGF1dG8gZGF0YVNpemUgPSBkZWNvZGVSZXN1bHQtPmRhdGEuc2l6ZSgpOwogICAg
ICAgICBSZXNvdXJjZVJlc3BvbnNlIGRhdGFSZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2U6OmRh
dGFVUkxSZXNwb25zZSh1cmwsIGRlY29kZVJlc3VsdC52YWx1ZSgpKTsKLSAgICAgICAgdGhpcy0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBkYXRhU2l6ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUoZGVjb2RlUmVzdWx0LT5kYXRhKSldKCkgbXV0YWJsZSB7CisgICAgICAgIHRo
aXMtPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEgPSBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShXVEZNb3ZlKGRlY29kZVJlc3VsdC0+ZGF0YSkpXSgpIHsKICAgICAgICAgICAgIGlm
ICghdGhpcy0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRhU2l6ZSAmJiBtX3JlcXVlc3Qu
aHR0cE1ldGhvZCgpICE9ICJIRUFEIikKLSAgICAgICAgICAgICAgICB0aGlzLT5kaWRSZWNlaXZl
QnVmZmVyKFdURk1vdmUoZGF0YSksIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2Up
OworICAgICAgICAgICAgICAgIHRoaXMtPmRpZFJlY2VpdmVCdWZmZXIoZGF0YSwgZGF0YVNpemUs
IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CiAKICAgICAgICAgICAgIGlmICghdGhpcy0+cmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSkgewogICAgICAgICAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmlj
cyBlbXB0eU1ldHJpY3M7CkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
d2lsbFN3aXRjaFRvU3Vic3RpdHV0ZVJlc291cmNlKCkKICAgICAgICAgbV9oYW5kbGUtPmNhbmNl
bCgpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjphZGREYXRhT3JCdWZmZXIoY29uc3QgdWlu
dDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZm
ZXIsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVy
OjphZGRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZl
cmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAg
ICAgIHJldHVybjsKQEAgLTMzNiwxMCArMzM2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRk
RGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ20K
ICAgICBpZiAoZGF0YVBheWxvYWRUeXBlID09IERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSkKICAg
ICAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKIAotICAgIGlmIChidWZmZXIpCi0gICAgICAg
IG1fcmVzb3VyY2VEYXRhLmFwcGVuZCgqYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIG1fcmVz
b3VyY2VEYXRhLmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fcmVzb3VyY2VEYXRhLmFwcGVu
ZChidWZmZXIpOwogfQogCiBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBSZXNvdXJjZUxv
YWRlcjo6cmVzb3VyY2VEYXRhKCkgY29uc3QKQEAgLTUzOSw3ICs1MzYsNyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgciwg
Q29tcGxldGlvbkhhbgogICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2Vp
dmVSZXNwb25zZSh0aGlzLCBtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25n
IGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUp
Cit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0
YVBheWxvYWRUeXBlKQogewogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXNzZXJ0aW9ucyBhcmUgbm90
IHF1aXRlIHZhbGlkIGhlcmUsIHNpbmNlIGEgc3ViY2xhc3MKICAgICAvLyBtaWdodCBvdmVycmlk
ZSBkaWRSZWNlaXZlRGF0YSBpbiBhIHdheSB0aGF0IGludmFsaWRhdGVzIHRoZW0uIFRoaXMKQEAg
LTU0NywzMCArNTQ0LDIyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsCiAgICAgLy8gQVNTRVJU
KGNvbiA9PSBjb25uZWN0aW9uKTsKICAgICAvLyBBU1NFUlQoIW1fcmVhY2hlZFRlcm1pbmFsU3Rh
dGUpOwogCi0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIG51bGxwdHIs
IGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIGRpZFJlY2VpdmVCdWZm
ZXIoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlIGRhdGFQYXlsb2FkVHlwZSkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgZGlk
UmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWRE
YXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAg
Ly8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgZ2V0IGRhdGErbGVuZ3RoICpPUiogYSBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyLgotICAgIEFTU0VSVCghYnVmZmVyIHx8ICghZGF0YSAmJiAhbGVuZ3Ro
KSk7Ci0KICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2Ug
dGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRp
bmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAz
MjY2MjE2LgogICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
LSAgICBhZGREYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXls
b2FkVHlwZSk7CisgICAgYWRkQnVmZmVyKGJ1ZmZlciwgZGF0YVBheWxvYWRUeXBlKTsKIAogICAg
IC8vIEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywg
dGhpcyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAvLyBIb3dldmVyLCB3aXRo
IHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhpcyB3b24ndCBoYXBw
ZW4gaW4gcHJhY3RpY2UuCiAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxv
Y2FsIGZpbGUuCiAgICAgaWYgKG1fb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9PSBTZW5kQ2Fs
bGJhY2tQb2xpY3k6OlNlbmRDYWxsYmFja3MgJiYgbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2Fk
ZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDog
bGVuZ3RoLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRhTGVuZ3RoKSk7CisgICAgICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVmZmVyLm1ha2VD
b250aWd1b3VzKCksIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsKIH0KIAog
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKQEAgLTcyOSwxNCArNzE4LDE0IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVz
b3VyY2VSZXNwb25zZSYmCiAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgZGlkUmVjZWl2ZURhdGEo
YnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkK
IHsKLSAgICBkaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4
IDkwNzVjYmMwYTMwNDBlYTE1MGE4NjI1Y2RhMDg5MGIxZWUxMzhjNzIuLjEwOThlNGYyNzg4OWNk
YTdiM2E5Y2ZkNGQ1NDZhZTJmZDlhN2M1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCkBAIC0xMDcsOCArMTA3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5k
bGVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVu
c2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjcsOCArMTY3LDYg
QEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBt
X2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSk7Ci0gICAgCiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSBy
ZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGlj
eTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4g
bV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CiAKQEAgLTE5Miw3ICsxOTAsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
Ci0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZEJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2
b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0y
MDIsOCArMjAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFu
ZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5z
aWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2Fz
QmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2Vm
Yzk0MTJhNTFiYjFhOS4uOTcyZjJhZjIyNjAzZjQyNGNkODc3NWY1OTEwMTBlMmQ3NjkzOGEwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MTgs
MzIgKzUxOCwxNSBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VQ
b2xpY3koKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQo
KSkgewotICAgICAgICBpZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVu
Z3RoKSkKKyAgICAgICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5t
YWtlQ29udGlndW91cygpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAot
ICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVk
RGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKLXsKLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVy
ID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7Ci0gICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5k
aWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCi0KLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCi17CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwogCiAgICAgaWYgKG1fcmVzb3Vy
Y2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAgJiYgIW1fcmVzb3VyY2UtPnNo
b3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkpCkBAIC01NTUsMTMgKzUzOCwxMyBAQCB2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5n
IHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBp
cyAzMjY2MjE2LgogICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKLSAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBs
ZW5ndGgsIGJ1ZmZlci5jb3B5UmVmKCksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5
cGUpOworICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2Rl
ZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICBpZiAoIW1fbG9hZGluZ011bHRp
cGFydENvbnRlbnQpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlRGF0YSA9IHRoaXMtPnJl
c291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlQnVmZmVyKCpyZXNv
dXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Jlc291cmNlLT51cGRhdGVE
YXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVm
ZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAgICAgICAgbV9yZXNvdXJjZS0+
dXBkYXRlRGF0YShidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDgzMmM5ZjBlNzNkMzg0NjRh
Nzk1ZjQwMzg2MGY3OWMzNGU3M2JjN2YuLjNkYmQ1MzM4YWZlNDliNDc4NTdkNTM0MDk3ODg3NTJl
YWExYWVkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCkBA
IC03Myw4ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwg
dW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHdp
bGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwpAQCAtOTIsNyArOTEsNyBA
QCBwcml2YXRlOgogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZXNwb25zZUNyb3Nz
T3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhwZWN0
ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsKIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5
cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUp
OwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRleCBjZjJkZTBjNjJkOTVmMzMy
NWI0MmI0NmUyNDAzNzc0NDEwNzQyYTBkLi4zZDE5Mjg2MmYyNzcyOWIyZjM4ZGI1NGJkODM2Nzk5
NTI1YzAxOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJl
c291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5o
CkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9Ci0gICAgdm9pZCBhcHBlbmQoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0
aCk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikgeyBtX2Rh
dGEuYXBwZW5kKGJ1ZmZlcik7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBtX2RhdGEuZW1wdHkoKTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikgeyBs
b2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBtX2RhdGEuY29weSgpKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKaW5k
ZXggODRkNzliMGM5OWRmMTBkOTkzODBiODQ4MzE3MzcxYmMxZTg1NzNiZi4uY2VmMGM4ZjFmMTdk
MGY1NzY1OWEzNTQxYjU0ZjYzODk5MDY0YjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
Y2xhc3MgUmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRocmVhZGFibGVM
b2FkZXJDbGllbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ0LDcgKzQ1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
LypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90YWxCeXRlc1RvQmVTZW50Ki8p
IHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCAvKmRhdGFMZW5ndGgqLykgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJv
b2wgLyogdXNlU3RyTGVuICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoVGlt
aW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCmluZGV4IDQyYWU2NDkwOWE1
ZTBmZTQ0YzZhNWUwMDYwZDU4Yzk2NGVjNTYwNTEuLmYzNmEyZDQwN2FmODgxNTkwNDI4NjZiODVl
OWUwMTg2MWRhYWM3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNw
b25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKICAgICB7CiAgICAgICAgIGlmIChtX2Ns
aWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVu
Z3RoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIHVzZVN0
ckxlbik7CiAgICAgfQogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGRmZjg5NzAxYzkzOWJjNzNjMzcwMzJhZDljNDJh
ZDIwNjMyNmFkNmUuLjdjMDM0OTQ1ZWUwM2E3NGY1MzMzOWJiODFmZmEwZTA2YzY5YzcxNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAK
QEAgLTIzMSwxNCArMjMxLDEzIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRo
cmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyCiAgICAgfSwgbV90
YXNrTW9kZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgp
Cit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCB1c2VTdHJMZW4pCiB7Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoW3Byb3RlY3Rl
ZFdvcmtlckNsaWVudFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdv
cmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVy
ID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0
YWJsZSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29y
a2VyQ2xpZW50V3JhcHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVx
dWVzdElkZW50aWZpZXIsIGJ1ZmZlciA9IFJlZiB7IGRhdGEgfSwgdXNlU3RyTGVuXSAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlQoY29udGV4dC5pc1dv
cmtlckdsb2JhbFNjb3BlKCkgfHwgY29udGV4dC5pc1dvcmtsZXRHbG9iYWxTY29wZSgpKTsKLSAg
ICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdy
YXBwZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgdXNlU3RyTGVuKTsKICAgICAgICAgaWYgKGlz
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNp
emUoKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhKGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElk
ZW50aWZpZXIsIGJ1ZmZlcik7CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDcyM2I0NTZlYzhl
OWUzMDZmYzE4Y2M4ZjM2ZGU2ZGNkOGFlMzA0NzAuLjMzOWQ2ZjQ3MzEwYTFlZDI4OTAzNmFkMGE0
MDRmMzhhN2EyNjg2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIEFs
bCBleGVjdXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaFRp
bWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXgg
NTE5NzhmNDEyMzg3NGRjNTY2MGVmZjQ3MDY1OTcwN2Q0ZTVkODVhNy4uZWQ3NTY2NTI2YjJkN2Vm
YmYxYzUxNzAyMDk1YTg3OWJhZjU2OTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC0xNDksNyArMTQ5
LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWlu
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVp
bnQ4X3QqLCBpbnQsIGxvbmcgbG9uZywgYm9vbCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcs
IGJvb2wpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKaW5kZXggYjk2MzU2ZTc4NTYxMzg5NTZhZTRjMDU5ODMx
NzBjZGY3MjM2NzJhMC4uZDJhZWFlYzNlMTRjNjNiY2JmNjAxZTlhYWYwMjRjMWY5ZWM0NzZkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWF5YmVMb2Fk
TWFpblJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAg
ICAgdm9pZCBtYXliZUxvYWRNYWluUmVzb3VyY2VGb3JSZWRpcmVjdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBTdWJzdGl0dXRlRGF0YSYpOwogICAgIGJvb2wgbWF5YmVMb2FkRmFsbGJhY2tGb3JN
YWluUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwotICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9u
Y2UpOworICAgIHZvaWQgbWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgYm9vbCBhbGxBdE9uY2UpOwogICAgIHZv
aWQgZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CiAgICAgdm9pZCBmYWlsZWRMb2FkaW5n
TWFpblJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggMmJiM2ZlNzViOTk3
N2U4MzMyMmFlMjU4MGY3MjEyZWU1YmYyMTYxMC4uMjU2ZTg5YjIxMWIzOGIyZDIxZGNkNjY1Nzgy
NjllNjYwNzM2NzMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTUxLDcgKzUxLDEwIEBA
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCYm
IHVybCwgUmVzb3VyY2VSZXNwb25zZSYmCiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNl
OjpkZWxpdmVyKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgbG9hZGVyLmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgbV9wYXRoLmlzRW1wdHkoKSA/IGRhdGEoKS5tYWtl
Q29udGlndW91cygpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9w
YXRoKSk7CisgICAgaWYgKG1fcGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGxvYWRlci5kZWxpdmVy
UmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIFJlZlB0ciB7ICZkYXRhKCkgfSk7CisgICAgZWxz
ZQorICAgICAgICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShtX3BhdGgpKTsKIH0KIAogdm9pZCBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmFkZFR5cGUodW5zaWduZWQgdHlwZSkgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDdiMmZiNmM5YzI1M2Q5NDM3ZjQwN2U4Yzk3
YjhiNTA3NGM3MTI5MjYuLjU0ZmVlZDJjYTY0MTJiNDUyMDk4NzBjNzczNDM2MDlkODUwOWI3Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05OSw5ICs5OSw5IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiByZXNvdXJjZSwKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSA9IEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKG1fcmVzb3VyY2UtPnVybCgpLCByZXNwb25z
ZSwgbV90eXBlKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6OmRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9hcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIG1fYXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2VMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBS
ZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlTG9hZGVyLmgKaW5kZXggMDJkN2FkOTdhMjhkNDdjM2ZhYjVlM2JhYjA3
ZWJlOWIwNjllMjMyZC4uMGIyOTYyODhmMzFhNDMyNWQ0ODQ5YTQ0MmU4YWU2MDJjMTczMTkyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRl
OgogCiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAg
ICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
IGZpbmFsOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggNTA0NjVj
YzZjMDEzM2U1YTc3NDQ1Y2Y5NDczMzNmZTIwNjQwODYxZC4uYTJkYWZjOWQ4N2MyNjdhMmY5NWU0
ODU1ZmRiMDg0ZGEyOWQzZjI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgaW5saW5lIHZvaWQgQ2FjaGVkSW1hZ2U6
OmNsZWFySW1hZ2UoKQogICAgIG1fdXBkYXRlSW1hZ2VEYXRhQ291bnQgPSAwOwogfQogCi12b2lk
IENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CkBAIC01NTgsMTUgKzU1
OCwxNSBAQCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKQogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJp
bmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICB1cGRh
dGVCdWZmZXJJbnRlcm5hbChkYXRhKTsKKyAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChkYXRhLm1h
a2VDb250aWd1b3VzKCkpOwogICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVCdWZmZXIoZGF0YSk7
CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09
IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgdXBkYXRlQnVmZmVy
SW50ZXJuYWwoU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgbGVuZ3RoKSk7Ci0gICAgQ2FjaGVk
UmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICB1cGRhdGVCdWZmZXJJbnRl
cm5hbChidWZmZXIpOworICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGJ1ZmZlcik7CiB9
CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBlODQzMDg3MGI0OGFmM2Rj
OTViYmEzY2FkMWE2NGUwNjhhZTE1NTEzLi5hNWRjNjNmMjNkYmQ0MWEyNzBlZTU2YzMyYTQ0MTc3
N2Q2YWRkYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApA
QCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29u
dmVydGVkRGF0YUlmTmVlZGVkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNv
bnN0OwogICAgIHZvaWQgZGlkVXBkYXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0
dXMgdXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBlcnJvcihDYWNoZWRSZXNvdXJjZTo6U3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogCkBAIC0xNjks
NyArMTY5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2Um
LCBjb25zdCBJbnRSZWN0Kik7CiAgICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25z
dCBJbWFnZSYpOwogCi0gICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBT
aGFyZWRCdWZmZXImKTsKIAogICAgIHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRz
KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCmluZGV4IDcxZTE2MDgyZmZlNjU1ZDExMWYxNjk5MGQxMjMwNTM1YmVh
Y2JmOTUuLmQzMzYxMTMyMTNmYmViZmY0ZTkxZmY2NWY4M2ZmZTI0ZDNlOGEwYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAt
NDgsMTIgKzQ4LDEyIEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFp
bk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CiB7
CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7Ci0gICAgaWYg
KCFkYXRhIHx8IGRhdGEtPnNpemUoKSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCisgICAgaWYgKGRh
dGEuc2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsK
KyAgICByZXR1cm4gZGF0YS5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCiB2
b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgICAg
IHByZXZpb3VzRGF0YVNpemUgKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKIAogICAgICAgICBT
ZXRGb3JTY29wZTxib29sPiBub3RpZnlTY29wZShtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5LCB0
cnVlKTsKLSAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERh
dGEuZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpKTsKKyAgICAgICAgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkpOwog
ICAgIH0KICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAKQEAgLTg5LDExICs4
OSwxMSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3Vy
Y2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpOwotICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxl
bmd0aCk7CisgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChidWZmZXIpOworICAgIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVz
b3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpAQCAtMTEwLDkgKzExMCw5IEBAIHZv
aWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogZGF0YSwgY29uc3QKICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgIGlm
IChkYXRhICE9IG1fZGF0YS5nZXQoKSkKICAgICAgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5t
YWtlQ29udGlndW91cygpOwotICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0g
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgIGlmIChh
dXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKCptX2Rh
dGEpKSB7CiAgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAg
ICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0
YS0+ZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmNyZWF0ZVNoYXJlZEJ1
ZmZlcigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2Rh
dGEgPSBudWxscHRyOwpAQCAtMTMwLDE1ICsxMzAsMTUgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dAogICAgIH0KIH0KIAotdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFX
YXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENh
Y2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGlmICghbGVuZ3RoKQorICAgIGlmIChidWZmZXIuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBDYWNoZWRSZXNvdXJjZUNs
aWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwogICAgIHdo
aWxlIChDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5k
YXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGMtPmRhdGFSZWNlaXZl
ZCgqdGhpcywgYnVmZmVyKTsKIH0KIAogc3RhdGljIHZvaWQgaXRlcmF0ZVJlZGlyZWN0cyhDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4mJiBoYW5kbGUsIENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50JiBjbGllbnQsIFZlY3RvcjxzdGQ6OnBhaXI8UmVzb3VyY2VSZXF1ZXN0LCBS
ZXNvdXJjZVJlc3BvbnNlPj4mJiByZWRpcmVjdHNJblJldmVyc2VPcmRlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0x
NzAsOSArMTcwLDkgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hl
ZFJlc291cmNlQ2xpZW50JiBjKQogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKG1fZGF0YSkgewotICAg
ICAgICAgICAgICAgIG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsK
KyAgICAgICAgICAgICAgICBtX2RhdGEtPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZd
KGF1dG8mJiBidWZmZXIpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsaWVudCgqY2xp
ZW50KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlz
LCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5k
ZXggYTc4NjVmOGFkMTc4YWVmYjMyMjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNC4uMzZlNDdhMWRiYTIz
MTI4ZGM1MzA3M2I3MGI1ZjNmODUzODA0YWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIFJlc291cmNl
VGltaW5nOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7
CiAKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlIGZpbmFsIDogcHVibGljIENhY2hlZFJlc291cmNl
IHsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENs
aWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQnVmZmVy
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lk
IHVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJv
cnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC02Niw4ICs2Nyw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgb3Zl
cnJpZGU7CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAgc3RkOjpv
cHRpb25hbDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQgbm90aWZ5
Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpOworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUlu
Y3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIHZvaWQg
bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKaW5kZXggMjNlYWI4ZGYyOTU4
ZmY4YjQ5ZjM1NDViNTA4M2ZlMjk4OWVmMTIyMC4uY2Q2NTBhMmYzMTM2Y2U5YjI2MmZiZGZjODI5
MjhiZjIxMDc5ZmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAgY2xhc3MgQ2FjaGVk
UmVzb3VyY2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1
YmxpYzoKQEAgLTQ2LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAq
LykgeyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDlkZTBhMDRjZDVlYzVmM2Zh
ZDJmYjE2ZDdiMzIyYzg1OGEzOGE2YjIuLjdiOWM2MWY5NjYxNzU0NmI2NmJjYzNjNjNlY2EwZTg1
N2UyNjJlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQogCi12
b2lkIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkK
K3ZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkRvTm90QnVmZmVyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCmluZGV4IGM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0
NzguLjUzNGUwMTJjYzRmYTVkZDJiZTFmZDZlZWU1YWE2YWU0ZTVmYWUyMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTMsNyArMTEzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4g
U3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRS
ZXNvdXJjZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENh
Y2hlZFJlc291cmNlOjpTdGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlci5oCmluZGV4IDk2ZDg5ODJlOTM1MDM0NzY5NmZjOTY5ZDU4NWFi
NzA3NWRlMDIwZWQuLmNhMDE5MzRkMzFiYTVkNTA5ZmViZTdkMmY5MTIyNDlkMjcxMjZhYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBA
IC00Nyw4ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwogCiAg
ICAgYm9vbCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KTsKLSAgICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpOworICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAg
Ym9vbCBkaWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCA0ODc1
NmEzM2I1ODcyYjQ0YjJmMGJhMDg0MjQxZjg2Y2ZhZWJjYWEwLi5hMjRiOGM1OWQ0NjBhZmY1ZTJm
ZWY4MzE5MGMyMDg2NTcyMzY1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWY8TGVn
YWN5UHJldmlld0xvYWRlckNsaWVudD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJjZUxvYWRlciYg
bG9hZGVyLCBjCiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wgTGVnYWN5UHJl
dmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJ
bnRvQ29udmVydGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MSw3ICs3MSw3IEBAIGJv
b2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9h
ZGVyIGFwcGVuZGluZyBidWZmZXIgd2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKICAg
ICBtX29yaWdpbmFsRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZlcnRlci0+dXBkYXRl
TWFpblJlc291cmNlKCk7Ci0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyKTsK
KyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMTYyLDggKzE2Miw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmll
d0NvbnZlcnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zCiAgICAgaWYg
KCFtX2hhc1Byb2Nlc3NlZFJlc3BvbnNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRh
dGFDb3B5ID0gZGF0YS5jb3B5KCk7Ci0gICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZm
ZXIoV1RGTW92ZShkYXRhQ29weSksIGRhdGFDb3B5LT5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMp
OworICAgIHJlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGRhdGEsIGRhdGEuc2l6ZSgp
LCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2
aWV3Q29udmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikKQEAgLTI0
MywxMSArMjQyLDYgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVIKICAgICBMT0coTmV0d29yaywg
IkxlZ2FjeVByZXZpZXdMb2FkZXIgY3JlYXRlZCB3aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNc
Ii4iLCBtX2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAK
LWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBkaWRSZWNlaXZlQnVmZmVyKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkuZ2V0KCkpOwotfQotCiBib29sIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JikKIHsKICAgICByZXR1cm4gIW1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggNjAyNjMxYmI3Y2QxMDg2MGIxYTMxMjEw
NDNjOTdkOGVmZTQ0NzYxZC4uNjdhYzc3ZTJiZjc2MTA0NWM4YzE4ZDVjN2FkZWM3ZjczMzhhYjcx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNp
bmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRocmVh
ZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMjEw
LDEzICsyMTEsMTMgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCi12b2lk
IEV2ZW50U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
Z3RoKQordm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGJvb2wpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gT1BFTik7CiAgICAgQVNT
RVJUKG1fcmVxdWVzdEluRmxpZ2h0KTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKCFtX2lzU3VzcGVuZGVkRm9yQmFja0ZvcndhcmRDYWNoZSk7CiAKLSAgICBh
cHBlbmQobV9yZWNlaXZlQnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpKTsK
KyAgICBhcHBlbmQobV9yZWNlaXZlQnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKSk7CiAgICAgcGFyc2VFdmVudFN0cmVhbSgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50U291cmNlLmgKaW5kZXggZDAxMmQzNzdkMTk3Njc1ZjBmZTExNDVmMTcxOWYx
N2ZkZGJmZWEzYi4uZDY2MmFlMjgwNmY0YjI0ODY3YjAxNjA4ZTA0ZGJiNGY5N2RiYTA2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAg
ICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCmluZGV4IDll
NzJlNDRhMmVhYzRkOGVmNzMwYjk4NzFkMGVjNTA4ZWQ5ZmFjNDQuLjQ2MmNmM2I4NzQyMzM4NWJl
ODNhMDAyZTQzZjc0NDc3OTk4N2VlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtQ29udGVudEZpbHRlci5oCkBAIC0yNiwxNSArMjYsMTcgQEAKICNpZm5kZWYgUGxh
dGZvcm1Db250ZW50RmlsdGVyX2gKICNkZWZpbmUgUGxhdGZvcm1Db250ZW50RmlsdGVyX2gKIAor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNz
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBs
YXRmb3JtQ29udGVudEZpbHRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01
NCw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIo
KSA9IGRlZmF1bHQ7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgPSAwOwogICAgIHZpcnR1YWwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcAppbmRleCBkMzk2MTU2ODg0YjRiNzllM2U1NWQ1NjkxZDcxOGM4ODc1ZmY5ZmY3Li5iODZk
NDlkNGFmMzNjNjQ1ODJiNmJlYTQwNjIyNjE1OTkyZDVhY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCBWZWN0b3I8dWludDhf
dD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKQogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGNvbWJpbmVkRGF0YTsKICAgICBpZiAoaGFzT25lU2VnbWVudCgpICYmIHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1t
dXRhYmxlRGF0YSkpCi0gICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhjaGFuZ2Uoc3RkOjpn
ZXQ8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0
YSksIFZlY3Rvcjx1aW50OF90PigpKTsKKyAgICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNo
YW5nZShzdGQ6OmdldDxWZWN0b3I8dWludDhfdD4+KGNvbnN0X2Nhc3Q8RGF0YVNlZ21lbnQmPiht
X3NlZ21lbnRzWzBdLnNlZ21lbnQuZ2V0KCkpLm1faW1tdXRhYmxlRGF0YSksIFZlY3Rvcjx1aW50
OF90PigpKTsKICAgICBlbHNlCiAgICAgICAgIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50
c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKIApAQCAtMjMxLDYgKzIzMSw4IEBAIHZvaWQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y2xlYXIoKQogCiBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiB7CisgICAgaWYgKG1fY29u
dGlndW91cykKKyAgICAgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpID8gU2hhcmVkQnVmZmVy
OjpjcmVhdGUobV9zZWdtZW50c1swXS5zZWdtZW50LmNvcHlSZWYoKSkgOiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpOwogICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0
UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcik7CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1f
c2l6ZTsKICAgICBjbG9uZS0+bV9zZWdtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2Vn
bWVudHMuc2l6ZSgpKTsKQEAgLTI0OCw2ICsyNTAsMTMgQEAgdm9pZCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29u
c3QKICAgICAgICAgYXBwbHkoU3BhbiB7IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50
LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0KIAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpm
b3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJik+JiBhcHBseSkgY29uc3QKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBS
ZWYgeyAqdGhpcyB9OworICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCisgICAg
ICAgIGFwcGx5KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNlZ21lbnQuc2VnbWVudC5jb3B5UmVmKCkp
KTsKK30KKwogYm9vbCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNw
YW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVtcHR5
KCkpCkBAIC00MTMsNyArNDIyLDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKQogICAg
IG1fY29udGlndW91cyA9IHRydWU7CiB9CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJl
ZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50KQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVm
PGNvbnN0IERhdGFTZWdtZW50PiYmIHNlZ21lbnQpCiB7CiAgICAgbV9zaXplID0gc2VnbWVudC0+
c2l6ZSgpOwogICAgIG1fc2VnbWVudHMuYXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsK
QEAgLTYwMSw3ICs2MTAsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZl
cigpCiAgICAgICAgIG1fYnVmZmVyID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0
YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+IHNpemUpCitTaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVy
RGF0YVZpZXcoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlv
bldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdt
ZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3Np
dGlvbldpdGhpblNlZ21lbnQpCiAgICAgLCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50
LT5zaXplKCkgLSBwb3NpdGlvbldpdGhpblNlZ21lbnQpCkBAIC02MTcsNyArNjI2LDcgQEAgU2hh
cmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3JiBvdGhlciwgc2kKIAogUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0
YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPERhdGFT
ZWdtZW50PiBzZWdtZW50ID0gbV9zZWdtZW50OworICAgIGNvbnN0IFJlZjxjb25zdCBEYXRhU2Vn
bWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVyIHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRh
KCldKCkgeyByZXR1cm4gZGF0YTsgfSwKICAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1
cm4gc2l6ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjMjdj
OTI2OWZmZWYyNDlhYjVlOGFiYTI0ZDc2MmZjNDBjMWMyMzAwLi4zNDg0YTZhNTNiODA0MDY0YmU1
N2EyODNlZjQxOGE4YTYyZDU4OWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaApAQCAtMTc4LDEyICsxNzgsMTMgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3Qg
dWludDhfdD4mKT4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgo
Y29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoY29uc3QgRnVuY3Rpb248dm9p
ZChSZWY8U2hhcmVkQnVmZmVyPiYmKT4mKSBjb25zdDsKIAogICAgIHVzaW5nIERhdGFTZWdtZW50
ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0
eSB3aGVuIHVzaW5nIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBz
dHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0
aW9uOwotICAgICAgICBSZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQ7CisgICAgICAgIGNvbnN0IFJl
Zjxjb25zdCBEYXRhU2VnbWVudD4gc2VnbWVudDsKICAgICB9OwogICAgIHVzaW5nIERhdGFTZWdt
ZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFT
ZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vn
bWVudHMuYmVnaW4oKTsgfQpAQCAtMjU5LDcgKzI2MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IGNvbnN0ZXhwciAoIXNpemVvZi4uLihBcmdzKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsKICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVv
Zi4uLihBcmdzKSA9PSAxCi0gICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVm
PERhdGFTZWdtZW50Pj4gJiYuLi4pKQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFy
Z3MsIFJlZjxjb25zdCBEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsK
KyAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAg
ICAgICAmJiAoc3RkOjppc19zYW1lX3Y8c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9y
ZWZlcmVuY2VfdDxBcmdzPj4sIERhdGFTZWdtZW50PiAmJi4uLikpCiAgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4u
KSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXV0byBidWZmZXIgPSBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKQEAgLTI4
Niw4ICsyOTAsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFNo
YXJlZEJ1ZmZlcigpOworICAgIFNoYXJlZEJ1ZmZlcihjb25zdCBEYXRhU2VnbWVudCYgc2VnbWVu
dCkKKyAgICAgICAgOiBTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiB7IHNlZ21l
bnQgfSkgeyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVT
eXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+JiYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3Jl
YXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpOwpAQCAtMzU5LDcgKzM2
NSw3IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0
cmFjdERhdGEoKQogCiBjbGFzcyBTaGFyZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6
ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50
LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZp
ZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KICAgICBjb25zdCB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zZWdt
ZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudDsgfQpAQCAtMzcwLDcgKzM3Niw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVO
U0RhdGEoKSBjb25zdDsKICNlbmRpZgogcHJpdmF0ZToKLSAgICBjb25zdCBSZWY8RGF0YVNlZ21l
bnQ+IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IG1fc2VnbWVu
dDsKICAgICBjb25zdCBzaXplX3QgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qg
c2l6ZV90IG1fc2l6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAppbmRleCBjYmU4Nzcx
YTQ1ZDg2MmNiNWFiMDVlY2EzOTk5MjdlMDc4MzhmNTQwLi4xMjUzMTliY2IzOGU3MWJhNzk1YTZh
ZmQyZGQxM2ZiZDE5YTJkM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKQEAgLTQ5LDcg
KzQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBh
ZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlz
aGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50Rmls
dGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIubW0KaW5kZXggMmVmMjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2Zj
M2EyZi4uZjg3Nzk3Y2NkNTBiOWFiNWVhNDhjMjUxZTQyZjAwYjVmYmY0ZmFhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRG
aWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAgLTE0NSwxMiArMTQ1LDEyIEBAIHZvaWQgTmV0d29ya0V4
dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzCiAgICAgc2VtYXBob3JlLndhaXQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3Ro
KQordm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgUmV0YWluUHRyPE5TRGF0YT4gY29waWVkRGF0YSB7IFtO
U0RhdGEgZGF0YVdpdGhCeXRlczoodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoXSB9OworICAgIGF1
dG8gbnNEYXRhID0gZGF0YS5jcmVhdGVOU0RhdGEoKTsKIAogICAgIEJpbmFyeVNlbWFwaG9yZSBz
ZW1hcGhvcmU7Ci0gICAgW21fbmVGaWx0ZXJTb3VyY2UgcmVjZWl2ZWREYXRhOmNvcGllZERhdGEu
Z2V0KCkgZGVjaXNpb25IYW5kbGVyOlt0aGlzLCAmc2VtYXBob3JlXShORUZpbHRlclNvdXJjZVN0
YXR1cyBzdGF0dXMsIE5TRGljdGlvbmFyeSAqZGVjaXNpb25JbmZvKSB7CisgICAgW21fbmVGaWx0
ZXJTb3VyY2UgcmVjZWl2ZWREYXRhOm5zRGF0YS5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6W3RoaXMs
ICZzZW1hcGhvcmVdKE5FRmlsdGVyU291cmNlU3RhdHVzIHN0YXR1cywgTlNEaWN0aW9uYXJ5ICpk
ZWNpc2lvbkluZm8pIHsKICAgICAgICAgaGFuZGxlRGVjaXNpb24oc3RhdHVzLCByZXBsYWNlbWVu
dERhdGFGcm9tRGVjaXNpb25JbmZvKGRlY2lzaW9uSW5mbykpOwogICAgICAgICBzZW1hcGhvcmUu
c2lnbmFsKCk7CiAgICAgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAppbmRleCA2NzlhZTkz
Mjk1MTdlMWYzOTQzYmE1NzYyYWM4ZjU2ZTg2MGM4YzI1Li5kNWZhMTMzMGIxNjJjY2NjZTIyZTk0
NzU4NjE1YTZlMDExMjJkMDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVz
cG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAg
IHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGZp
bmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Q
YXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCmluZGV4IDFjOTYwNDcxNmI0
MjY5M2Q1ZTQ2YzJlMjNlOTQxZGEwMGM4M2U0ZGUuLmE2NTExNWNlYjEyMjIzNjc3ZjA5YTRhM2Rh
OTliNGFjNzI2OGRmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC05NCwxMCAr
OTQsMTAgQEAgdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXMKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgp
OwogfQogCi12b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyOjphZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQo
IVttX3JlcGxhY2VtZW50RGF0YSBsZW5ndGhdKTsKLSAgICBtX3JlcGxhY2VtZW50RGF0YSA9IFtt
X3dlYkZpbHRlckV2YWx1YXRvciBhZGREYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToo
dm9pZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT11dOworICAgIG1fcmVwbGFj
ZW1lbnREYXRhID0gW21fd2ViRmlsdGVyRXZhbHVhdG9yIGFkZERhdGE6ZGF0YS5jcmVhdGVOU0Rh
dGEoKS5nZXQoKV07CiAgICAgdXBkYXRlRmlsdGVyU3RhdGUoKTsKICAgICBBU1NFUlQobmVlZHNN
b3JlRGF0YSgpIHx8IFttX3JlcGxhY2VtZW50RGF0YSBsZW5ndGhdKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4
IGRlMzNmMWFmNDEyZGMwOGIyYjk2MWExOTQ5NDVjOWNjOTBhYTY2MjUuLmE0NzUwNzRhMTA4YTFi
NTg3YjNiNmE4Yjk4ODA1OWRhZGU0N2U1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtMjMzLDYgKzIzMyw3IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBQYWNrZWRDb2xvcjo6QVJHQiB7IHJlc3VsdCB9LnZh
bHVlOwogICAgIH0KIAorICAgIC8vIG1fcGl4ZWxzIHR5cGUgc2hvdWxkIGJlIGlkZW50aWNhbCB0
byB0aGUgb25lIHNldCBpbiBJbWFnZUJhY2tpbmdTdG9yZUNhaXJvLmNwcAogICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMy
X3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0ciB9OwogICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCA4ODY5MWRjMjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQy
NDVhYTM1MzM3Li5jOTU4Zjg0NGRhYzE0Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaApAQCAtNTEsOSArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29s
IHNob3VsZENhY2hlUmVzcG9uc2UoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25n
IGxvbmcpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9u
Y2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgot
ICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0
Zm9ybSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxh
dGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOyB9CisgICAgdmlydHVh
bCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSB7IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmNwcAppbmRleCBlYzBhN2FjZjQ3MzI2MWM3NGU3ZWVmZmFkYzljY2MzYzNl
NTdmMjI4Li43NzA4YTU4ZDJiNTgwOGI5NDAwMmQyMDVlOThhMjdiYjJjZTZmMzI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2Vi
Q29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xMzgsNyArMTM4LDcgQEAgdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpyZXNwb25z
ZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIFdl
YkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVz
b3VyY2UocmVzb3VyY2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZD
RlJlc291cmNlTG9hZGVyLmgKaW5kZXggY2RmMTQzZjNjM2NkZTk3MWZkNzlkY2Y3MzI4YmZjZDdi
MzI2MDJkYy4uNjI2N2JlMDBjNTRlZTYxNzAyZmI3N2IyYTVmYjU2N2IyN2ViOWZlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dl
YkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsK
LSAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBp
bnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4
IGY5MjFmM2RhMGU2OWIzMzk5NzdjOWUzZTQ5NjY3YTI4ZjVlOTVjYmQuLjcyNjQ3MjVjOGU1NjIy
ZGYzOGI0NWJjZDk5YWM3ODc1NWI5ZWI4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRl
ci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0
ZToKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZv
aWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKIAogICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVk
UmVzb3VyY2UmKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFM
b2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgog
ICAgIG1fcGFyZW50LmxvYWRGaW5pc2hlZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVk
aWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVp
bnQ4X3QqLCBpbnQpCit2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAg
QVNTRVJUKCZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJl
c291cmNlLnJlc291cmNlQnVmZmVyKCkpCkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRD
YWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZp
bmFsIHsgfQotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAg
ICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQog
ICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9h
ZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVkKCk7IH0KQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6bG9hZEZpbmlzaGVkKCkKICAgICBtX3BhcmVudC5s
b2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewotICAgIG1fYnVmZmVyLmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fYnVmZmVy
LmFwcGVuZChidWZmZXIpOwogICAgIG1fcGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZl
cigqbV9idWZmZXIuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCmluZGV4IDkzMDE5MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2
ZjIuLmI3YjA3ZmYxNDU0ZDU2MWEzMDIxMDhhZTMyMjkxZThmODM0MzdiZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3Vy
Y2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRo
b2RzLgogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250
aW51ZVBvbGljeUNoZWNrKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5
Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9u
c2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFu
ZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJl
c291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBDYWNoZWRSZXNv
dXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpA
QCAtMTEwNyw3ICsxMTA3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAvLyB0aGF0
IGZpcnN0IHBhY2thZ2UgZGVsaXZlcnkgd291bGQgaW5jbHVkZSB0aGUgdGltZSBvZiBzZW5kaW5n
IG91dCB0aGUgcmVxdWVzdCBhbmQgZ2V0dGluZyB0aGUgZGF0YSBiYWNrLiBTaW5jZSB3ZSBjYW4n
dCBkaXN0aW5ndWlzaCB0aGUKICAgICAvLyBzZW5kaW5nIHRpbWUgZnJvbSB0aGUgcmVjZWl2aW5n
IHRpbWUsIGl0IGlzIGJldHRlciB0byBpZ25vcmUgaXQuCiAgICAgaWYgKCFzdGQ6OmlzbmFuKG1l
bWJlcnMtPmRvd25sb2FkU3RhcnRUaW1lKSkgewotICAgICAgICBtZW1iZXJzLT50b3RhbERvd25s
b2FkZWRCeXRlcyArPSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgbWVtYmVycy0+dG90YWxEb3du
bG9hZGVkQnl0ZXMgKz0gZGF0YS5zaXplKCk7CiAgICAgICAgIGRvdWJsZSB0aW1lU2luY2VTdGFy
dCA9IChXYWxsVGltZTo6bm93KCkgLSBtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSkuc2Vjb25k
cygpOwogICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNyYywgIlIldTogZG93bmxvYWRlZCAlIiBH
X0dVSU5UNjRfRk9STUFUICIgYnl0ZXMgaW4gJWYgc2Vjb25kcyA9fiAlMS4wZiBieXRlcy9zZWNv
bmQiLCBtX3JlcXVlc3ROdW1iZXIsIG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzLCB0aW1l
U2luY2VTdGFydAogICAgICAgICAgICAgLCB0aW1lU2luY2VTdGFydCA/IG1lbWJlcnMtPnRvdGFs
RG93bmxvYWRlZEJ5dGVzIC8gdGltZVNpbmNlU3RhcnQgOiAwKTsKQEAgLTExMTUsMjAgKzExMTUs
MTkgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAgICAgbWVtYmVycy0+ZG93bmxvYWRT
dGFydFRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAgICAgfQogCi0gICAgYnVmZmVyLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICBpbnQgbGVuZ3RoID0gc2VnbWVu
dC5zaXplKCk7Ci0gICAgICAgIEdTVF9MT0dfT0JKRUNUKHNyYywgIlIldTogSGF2ZSAlZCBieXRl
cyBvZiBkYXRhIiwgbV9yZXF1ZXN0TnVtYmVyLCBsZW5ndGgpOworICAgIGludCBsZW5ndGggPSBk
YXRhLnNpemUoKTsKKyAgICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMg
b2YgZGF0YSIsIG1fcmVxdWVzdE51bWJlciwgbGVuZ3RoKTsKIAotICAgICAgICBtZW1iZXJzLT5y
ZWFkUG9zaXRpb24gKz0gbGVuZ3RoOwotICAgICAgICBBU1NFUlQoIW1lbWJlcnMtPmhhdmVTaXpl
IHx8IG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA8PSBtZW1iZXJzLT5zaXplKTsKKyAgICBtZW1iZXJz
LT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOworICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUg
fHwgbWVtYmVycy0+cmVhZFBvc2l0aW9uIDw9IG1lbWJlcnMtPnNpemUpOwogCi0gICAgICAgIGdz
dF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdl
X25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAotICAgICAgICAgICAgZ3N0X3N0cnVj
dHVyZV9uZXcoIndlYmtpdC1uZXR3b3JrLXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdf
VFlQRV9VSU5UNjQsIG1lbWJlcnMtPnJlYWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0
LCBtZW1iZXJzLT5zaXplLCBudWxscHRyKSkpOworICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2Fn
ZShHU1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpF
Q1RfQ0FTVChzcmMpLAorICAgICAgICBnc3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmst
c3RhdGlzdGljcyIsICJyZWFkLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVh
ZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIp
KSk7CisKKyAgICBjaGVja1VwZGF0ZUJsb2Nrc2l6ZShsZW5ndGgpOworICAgIEdzdEJ1ZmZlciog
YnVmZmVyID0gZ3N0QnVmZmVyTmV3V3JhcHBlZEZhc3QoZmFzdE1lbUR1cChkYXRhLmRhdGEoKSwg
bGVuZ3RoKSwgbGVuZ3RoKTsKKyAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIu
Z2V0KCksIGJ1ZmZlcik7CiAKLSAgICAgICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsK
LSAgICAgICAgR3N0QnVmZmVyKiBidWZmZXIgPSBnc3RCdWZmZXJOZXdXcmFwcGVkRmFzdChmYXN0
TWVtRHVwKHNlZ21lbnQuZGF0YSgpLCBsZW5ndGgpLCBsZW5ndGgpOwotICAgICAgICBnc3RfYWRh
cHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgfSk7CiAgICAg
c3RvcExvYWRlcklmTmVlZGVkKHNyYywgbWVtYmVycyk7CiAgICAgbWVtYmVycy0+cmVzcG9uc2VD
b25kaXRpb24ubm90aWZ5T25lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCA5
YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVjMjIxMjY1OGY4YzRmNjhhLi5iMjg5NmFlMzBhMWI4Y2Mz
ZGYxMmEwNzQxMmNmNTAyMjE3ZmM2ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAg
LTc2LDkgKzc2LDggQEAgcHVibGljOgogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAg
aWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCkpCi0gICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1
b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVudC5jb3B5UmVmKCk7CisgICAgICAgIG1fZGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKKwogICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNv
ZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFs
bERhdGFSZWNlaXZlZCk7CkBAIC0xOTQsNyArMTkzLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51
bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKICAgICBWZWN0b3I8U2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSwgMT4gbV9mcmFtZUJ1
ZmZlckNhY2hlIFdURl9HVUFSREVEX0JZX0xPQ0sobV9sb2NrKTsKICAgICBtdXRhYmxlIExvY2sg
bV9sb2NrOwogICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VS
ZWFkZXIuY3BwCmluZGV4IDI2Zjg4NjQ5NmU1YTVhMTRlMjhhZmIxYWZhOWJmYzMwMTc3ZjUxY2Yu
LmQ2OGMwYTM1ZmMxZjRhYjYwMTdiZDM5ZWU0MzkxMDI2ODM1ZmM4MmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FW
SUZJbWFnZVJlYWRlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgQVZJRkltYWdlUmVhZGVyOjpBVklG
SW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYgZGVjb2RlcikKIAogQVZJRklt
YWdlUmVhZGVyOjp+QVZJRkltYWdlUmVhZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIEFWSUZJbWFn
ZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6
OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNvZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQo
KSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKICAgICAgICAg
cmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBmYWxzZTsK
QEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUlu
ZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKQordm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRl
Y29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBi
dWZmZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5m
YWlsZWQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXgg
NDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdiYWE4NjBjZmNjYjViYTRiMy4uODVhY2IxN2NiY2ZjNTg4
NWQ2YWM1NTI1YzdiNWM5ZWZmYzU4YzY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBA
IC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJ
bWFnZURlY29kZXI+JiYpOwogICAgIH5BVklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFy
c2VIZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgsIFNj
YWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudCYpOworICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4
LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAg
c2l6ZV90IGltYWdlQ291bnQoKSBjb25zdDsKICAgICBkb3VibGUgcmVwZXRpdGlvbkNvdW50KCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKaW5kZXggYmQ0MzBlOGE4YmVhMmM4MTZiMmM1
MjJiZjViYTc4ODQ2YzM4ZTBmZi4uYzMxNDEzNDc5ZDQzMjUxYjI3OGVkZDY3YTQ0MTkxNmYwODAy
MTlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQk1Q
SW1hZ2VSZWFkZXIgewogcHVibGljOgogICAgIC8vIFJlYWQgYSB2YWx1ZSBmcm9tIHxkYXRhW29m
ZnNldF18LCBjb252ZXJ0aW5nIGZyb20gbGl0dGxlIHRvIG5hdGl2ZQogICAgIC8vIGVuZGlhbm5l
c3MuCi0gICAgc3RhdGljIGlubGluZSB1aW50MTZfdCByZWFkVWludDE2KGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRp
YyBpbmxpbmUgdWludDE2X3QgcmVhZFVpbnQxNihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGlu
dCBvZmZzZXQpCiAgICAgewogICAgICAgICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNw
eSgmcmVzdWx0LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5l
IHVpbnQzMl90IHJlYWRVaW50MzIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnQmIGRhdGEsIGludCBvZmZzZXQpCisgICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFk
VWludDMyKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAg
ICAgIHVpbnQzMl90IHJlc3VsdDsKICAgICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEo
KVtvZmZzZXRdLCA0KTsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIEJNUEltYWdlUmVh
ZGVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVyKiBwYXJlbnQsIHNpemVfdCBkZWNvZGVkQW5kSGVhZGVy
T2Zmc2V0LCBzaXplX3QgaW1nRGF0YU9mZnNldCwgYm9vbCB1c2VzQW5kTWFzayk7CiAKICAgICB2
b2lkIHNldEJ1ZmZlcihTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBidWZmZXIpIHsgbV9idWZm
ZXIgPSBidWZmZXI7IH0KLSAgICB2b2lkIHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAKICAgICAvLyBE
b2VzIHRoZSBhY3R1YWwgZGVjb2RpbmcuIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgZGVjb2Rpbmcg
b25seQogICAgIC8vIHByb2dyZXNzZXMgYXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGlt
YWdlIHNpemUuIFJldHVybnMKQEAgLTI3Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIFNjYWxh
YmxlSW1hZ2VEZWNvZGVyRnJhbWUqIG1fYnVmZmVyOwogCiAgICAgLy8gVGhlIGZpbGUgdG8gZGVj
b2RlLgotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9k
YXRhOworICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogICAgIC8vIEFu
IGluZGV4IGludG8gfG1fZGF0YXwgcmVwcmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkg
ZGVjb2RlZC4KICAgICBzaXplX3QgbV9kZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
aAppbmRleCAxMDgyZmRmMGRmZjIzOTFlNTY1MzBhNDFmODdiYTQzOTgyMzI3NTM1Li5kNmJmZmMx
MmIxZTFlNDZkNDNkMDQ3ZWRkYzJhZDk0YjVjODU1M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIu
aApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBz
ZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRh
KSB7IG1fZGF0YSA9ICZkYXRhOyB9CisgICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0
QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRklt
YWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYg
KzMxNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNv
bnRleHQ+ID4gbV9mcmFtZXM7CiAgICAgc2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAK
LSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+
IG1fZGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2RhdGE7
CiAgICAgYm9vbCBtX3BhcnNlQ29tcGxldGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwCmluZGV4IGY0MjNjY2M5Y2UxMjdlZjdhZTc2YzkxMjgyNGFiZTg3NzNmYjcyZDEuLjQz
NTAzNThmM2JlZWI5ZjI0NTg2M2NlN2UwMGFlODI3NTBkZTc0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVH
SW1hZ2VEZWNvZGVyLmNwcApAQCAtMzE3LDcgKzMxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9i
eXRlc1RvU2tpcCA9IHN0ZDo6bWF4KG51bUJ5dGVzIC0gYnl0ZXNUb1NraXAsIHN0YXRpY19jYXN0
PGxvbmc+KDApKTsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRl
Y29kZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgb25seVNpemUpCiAgICAgewogICAg
ICAgICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBvbmx5U2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIw
MDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwCmluZGV4IDIwNDczZjBlZWViYjU2YzcxMzE0ZjY1
NTZiZGEwOTAzMzQ5MDc0NDIuLjkzM2EwMTNmMjFjNDdlOWNiNzk5ZWI3MmFiYjdlMzhjZmFiMWE2
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAg
LTM4MCw3ICszODAsNyBAQCB2b2lkIEpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBv
bmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRl
ciB7Ci0gICAgICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOwor
ICAgICAgICBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGE7CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7
CiAgICAgfSByZWFkZXIgPSB7ICptX2RhdGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVy
LmNwcAppbmRleCAyNzA5YjdjNjhiZjUzMGQxOTVkNzY2NmEzZDZhY2U1MDAxM2JiZTM0Li40MDQ5
NjNhNDc5YzA1ZmMwYzZkNWMzMGViN2JlYzc4MTU2OWFiOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZWFkT2Zm
c2V0ID0gMDsKICAgICB9CiAKLSAgICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0
RnJhbWUpCisgICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIHNp
emVPbmx5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdT
aXplT25seSA9IHNpemVPbmx5OwogICAgICAgICBQTkdJbWFnZURlY29kZXIqIGRlY29kZXIgPSBz
dGF0aWNfY2FzdDxQTkdJbWFnZURlY29kZXIqPihwbmdfZ2V0X3Byb2dyZXNzaXZlX3B0cihtX3Bu
ZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggYjFiZWM1NWU3OGM0MzQ4
MDFjMjU0YWNlMGRmNTk5MzFhMzZiNzRiZC4uNzcyZTgzMjY2ZTIzMGViNmRmZjdkYzFlZjdkYjU1
MjM5NjNiZmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0xMzIsNyAr
MTMyLDcgQEAgdm9pZCBXRUJQSW1hZ2VEZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGgg
aW4gdGhlIG1haW4gdGhyZWFkICh3aGVuIG5vdCB1c2luZyBhc3luYyBkZWNvZGluZykgb3IgaW4g
dGhlIGRlY29kaW5nIHRocmVhZC4KICAgICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGlu
ZyB0aHJlYWQsIGEgY2FsbCB0byBzZXREYXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNo
YW5nZSB0aGUgZGF0YQogICAgIC8vIHRoZSBXZWJQRGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBp
dCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0
YS4KLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3Rl
Y3RlZERhdGEobV9kYXRhKTsKKyAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBwcm90ZWN0
ZWREYXRhKG1fZGF0YSk7CiAgICAgV2ViUERhdGEgaW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRh
LT5kYXRhKCksIHByb3RlY3RlZERhdGEtPnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRl
bXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVtdXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwo
JmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IGJhOGZkNGZm
NGYxZTQxYzlhZDRmYTc0YTQyYmU0ZTJiZDExYWE4NDMuLmRjYWM1OTk3YTYxMzVkMmFiNzU5YTdh
ZDJlYmIwNDM1MmQ1MTRhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiwxMSBAQCBS
ZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAK
IFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7
CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRh
KGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
LCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgYnVmZmVyLmZvckVhY2hTZWdtZW50QXNTaGFyZWRC
dWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxl
LCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5o
CmluZGV4IGM0ZjA1NDg1ZjI4NzBiMTE2ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUuLmU0NDJjOTcz
NGMxMTk4NDkwYTFjNmNhYzU3NzI1ZmQ1MTk2YjNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTQ0LDEz
ICs0NCwxNCBAQCBPQkpDX0NMQVNTIE5TQ2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7
CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNz
OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9saWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY1
LDkgKzY2LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291
cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxv
bmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0JlU2VudCovKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
aW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKLSAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXIm
LCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOworCiAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNv
dXJjZUhhbmRsZSopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0YzA0MjEwYzVhNTEz
YWMzZjU0NzE0NmQ5Zjg1YzgyYmQ4ODEzNzc2Li4zMGI0YmIwZmRhZWY3YWUyY2M3NGFjNjA5Zjdi
MDA5OTdlNWE2ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmNwcApAQCAtNzEsOSArNzEsOSBAQCB2
b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNv
dXJjZUhhbmRsZSosIFJlc291cmNlUgogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgLyplbmNvZGVkRGF0
YUxlbmd0aCovKQordm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IC8qZW5jb2Rl
ZERhdGFMZW5ndGgqLykKIHsKLSAgICBtX2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAg
bV9kYXRhLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBT
eW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4
IDY4MzhlOWQ4Y2Y0Mzc5NmQyZjM5NGJhMWY1NGYwOWQwYjY3ZThhYmQuLmM0Y2I3MmRjN2E2NTVm
ZDM2OTZhMzMzZmUwNWNkZWQ2Mjk3NmFmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKQEAgLTM0LDYg
KzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CisK
IGNsYXNzIFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFN5bmNocm9ub3VzTG9hZGVyTWVzc2FnZVF1ZXVlPiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTeW5jaHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZSk7IH0KQEAgLTY2
LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3Vy
Y2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NB
TExCQUNLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9yLm1tCmluZGV4IGZjMjcyNTQwODkyYjhl
MmNkNzdkZThmNmQ5ZTU0YThjOGI1OTdmNjEuLjE5ODE0YTM2NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2
MTFjMjA5NDdlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmFuZ2VSZXNwb25zZUdlbmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1JhbmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzMiw3ICsx
MzIsNyBAQCB2b2lkIFJhbmdlUmVzcG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lm
Qnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2ViQ29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0
ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFu
Z2UuZW5kIC0gYnl0ZUluZGV4ICsgMSk7CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNG
cm9tVGhpc1ZpZXdUb0RlbGl2ZXI7Ci0gICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRy
IHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZmZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21U
aGlzVmlld1RvRGVsaXZlcikuY3JlYXRlU2hhcmVkQnVmZmVyKCldOworICAgICAgICAgICAgW3Rh
c2sgcmVzb3VyY2U6bnVsbHB0ciByZWNlaXZlZERhdGE6U2hhcmVkQnVmZmVyRGF0YVZpZXcoYnVm
ZmVyVmlldywgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIpLmNyZWF0ZVNoYXJlZEJ1ZmZlcigp
LT5jcmVhdGVOU0RhdGEoKV07CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSBy
YW5nZS5lbmQpIHsKICAgICAgICAgICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBt
ZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmljcyB7IH1dOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpIGZpbmFsCisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjQ2LDcg
KzI0Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9t
YXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBkYXRhLT5idWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAg
ICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdp
dmVSZXNwb25zZVRvVGFza3NXaXRoRmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNV
UkxTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaAppbmRleCBmOTA5NmVlMmU5ZjI0MmZmMDRkNzA1YzJhYTEwOTNhNTVl
NTczNWRiLi5lYTRhOWJmMjk3ODI5ZWJkMDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaApAQCAtMTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRl
cmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6
KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5
dGVzOih1bnNpZ25lZCBsb25nIGxvbmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5z
aWduZWQgbG9uZyBsb25nKXRvdGFsQnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51
bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRS
ZXNwb25zZTooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxl
dGlvbkhhbmRsZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGlu
dWVQb2xpY3lDaGVjayk+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihu
dWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENh
Y2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwot
LSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
KilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKWRhdGE7CistICh2b2lkKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4m
JilkYXRhOwogLSAodm9pZClyZXNvdXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJilyZXNwb25zZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVz
b3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ug
YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJillcnJvcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXgg
NWUyZThlOGQ5ZDc2NjcyYTI0MTRmNzZmNWMwOGYyNTllMDI5ZjUwNC4uM2M4YmUwOGMyOTM0ZTU0
ZGEzYjc0OWNhNmRhMzRlZGE5NmRjOWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAt
NjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBs
b25nKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9h
ZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CkBAIC02NTIsMTMgKzY1MiwxMyBAQCBi
b29sIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25z
ZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwogICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNv
dXJjZSBzaG91bGRDYWNoZVJlc3BvbnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNV
UkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHJlc291cmNlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lk
IFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0
YTpXVEZNb3ZlKGJ1ZmZlcildOworICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2Vp
dmVkRGF0YTpidWZmZXIuY3JlYXRlTlNEYXRhKCldOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFza0NsaWVudDo6cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05MzEsMTUgKzkzMSwxNCBAQCAtIChCT09MKXJl
c291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9u
c2U6KGNvbnN0IFJlcwogICAgIHJldHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkNvbnRlbnRSYW5nZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNl
OihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxh
dGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6KFJldGFpblB0cjxOU0Rh
dGE+JiYpZGF0YQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCBy
ZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVy
YXRpb246W3N0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRh
dGEpXSB7Ci0gICAgICAgIGF1dG8gbnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3Jl
YXRlTlNEYXRhKCk7Ci0gICAgICAgIHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2
ZWQgKz0gZGF0YS0+c2l6ZSgpOworICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRl
c1JlY2VpdmVkICs9IFtkYXRhIGxlbmd0aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFE
ZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ry
b25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVj
ZWl2ZURhdGE6KV0pCi0gICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJM
U2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOm5zRGF0YS5nZXQoKV07
CisgICAgICAgICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0
cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilz
dHJvbmdTZWxmLmdldCgpIGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0KCldOwogICAgIH1dOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHAKaW5kZXggZjMyM2FmMjY0MDE2YjY2MzkzMTFhYzIzMjQ2ZWM1ZWQ4
MGEzOTU0NS4uM2JkMmNjNzQyODZlYzQ2Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIGJvb2wgQ3VybENhY2hlTWFuYWdlcjo6
Z2V0Q2FjaGVkUmVzcG9uc2UoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmIHJl
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlJiBqb2IsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQordm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSYgam9iLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQp
CiAgICAgICAgIHJldHVybjsKQEAgLTI1NSwxMSArMjU1LDExIEBAIHZvaWQgQ3VybENhY2hlTWFu
YWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCog
ZGF0YSwKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+Z2V0Sm9iKCkgIT0gJmpvYikKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIWl0LT52YWx1ZS0+c2F2ZUNhY2hlZERhdGEoZGF0
YSwgc2l6ZSkpCisgICAgICAgIGlmICghaXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpKQogICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJs
KTsKIAogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9
IHNpemU7CisgICAgICAgICAgICBtX2N1cnJlbnRTdG9yYWdlU2l6ZSArPSBkYXRhLnNpemUoKTsK
ICAgICAgICAgICAgIG1fTFJVRW50cnlMaXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7CiAg
ICAgICAgICAgICBtYWtlUm9vbUZvck5ld0VudHJ5KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5o
CmluZGV4IGM5ZTI5ZDgwOTcwYzQwNDZlNzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMuLmI2NWI5NjNi
NjhlNmE2OGQ5ODE5M2FhZjczZjEwODAzZDk3ZmNkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJp
bmcmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUmLCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOyAvLyBTYXZl
IGRhdGEKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgU2hh
cmVkQnVmZmVyJik7IC8vIFNhdmUgZGF0YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUhhbmRsZSYpOwogICAgIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
Y3BwCmluZGV4IDM0OTQ0NTkyNTRhYzkzZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUuLmFhZjBj
OGQ5NDA3MDU1ZDY4YTA1NWZiMzUwNzk2N2RlNGMwMDg2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMs
NyArMTAzLDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3du
bG9hZDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVE
YXRhKEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ3VybERvd25s
b2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2xpc3RlbmVyKQotICAgICAg
ICBtX2xpc3RlbmVyLT5kaWRSZWNlaXZlRGF0YU9mTGVuZ3RoKGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgbV9saXN0ZW5lci0+ZGlkUmVjZWl2ZURhdGFPZkxlbmd0aChidWZmZXIuc2l6ZSgpKTsK
IH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYgcmVx
dWVzdCwgTmV0d29ya0xvYWRNZXRyaWNzJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmgKaW5kZXggY2RlNDQ0NTc3NWY3NDQyMzMw
NTMwYjY1YjEzNTdiYTZiZmQ5YmI4MS4uYTEyMDc1ODM0OTNmNzgzMzc1NmQzYzQ5ODdjZjVjOTVk
ZmE5NzljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiAKIGNsYXNzIEN1cmxEb3dubG9hZExpc3RlbmVyIHsKIHB1YmxpYzoKQEAgLTcyLDcg
KzczLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0
JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQog
ICAgIHZvaWQgY3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25z
ZSYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0
JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3Vy
bERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1l
dHJpY3MmJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVx
dWVzdCYsIFJlc291cmNlRXJyb3ImJiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZS5jcHAKaW5kZXggMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2Qy
ZjI5NmUzYTM0ZC4uZDFlNTg2MjRhYWVlMmVjZTgxMjlkZDM0ZWE5ODY2MjZlNmNkZjA2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBh
cnRIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApAQCAtMTE5LDEyICsxMTksMTIgQEAgQ3VybE11bHRpcGFy
dEhhbmRsZTo6Q3VybE11bHRpcGFydEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBj
bGllbnQsIGNvbnMKIAogfQogCi12b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRp
cGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUg
aGFuZGxlciBpcyBjbG9zZWQgZG93biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVm
ZmVyLmFwcGVuZChidWZmZXIubWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKKyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAK
ICAgICB3aGlsZSAocHJvY2Vzc0NvbnRlbnQoKSkgeyB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaApp
bmRleCA5YTFhMWJiZDE5MzhhMTRmNjlmY2NlZTNmMGY4OWI5N2E0YTIxODc0Li41YzA4YmNjNWVi
M2U0YmJjYzAyOWI0NzY3ODY4ZjQzZTJmOTVjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0
SGFuZGxlQ2xpZW50OwogY2xhc3MgQ3VybFJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRs
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICBDdXJsTXVsdGlwYXJ0SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBj
b25zdCBTdHJpbmcmKTsKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBs
ZXRlKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBj
ODEzODg2YThkNWM1ZmE2YzEyZDE0MTMzMTkxMDFhZjI1MDJhMmFkLi5kZjc2MzdkZTlkOWZmMmI2
YjEwODU1ZDBjNTc3MTI1NTM0YjJhNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50
LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNz
IEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
RnJvbU11bHRpcGFydChjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAKIHByb3RlY3RlZDoKICAg
ICB+Q3VybE11bHRpcGFydEhhbmRsZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYmFjYjJiNTUw
YjI4NDEzMWQxYWMyMGFhNjYzODg2ZmUyMmZlN2Y5OC4uZDBlZjBlNzExNjJiNTM2M2FkNDI1NDE3
ZDg1ZWM3MjM4ZjNmNjJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1
cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVk
IHdpdGggZGF0YSBhZnRlciBhbGwgaGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFk
ZXJDYWxsYmFjawogCi1zaXplX3QgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxl
dGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC00MTEsNyArNDExLDcgQEAg
c2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybiBDVVJMX1dSSVRFRlVOQ19QQVVTRTsKICAg
ICB9CiAKLSAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8g
cmVjZWl2ZUJ5dGVzID0gYnVmZmVyLnNpemUoKTsKICAgICBtX3RvdGFsUmVjZWl2ZWRTaXplICs9
IHJlY2VpdmVCeXRlczsKIAogICAgIHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGJ1
ZmZlcik7CkBAIC00MjAsOCArNDIwLDggQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZl
RGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIGlmICht
X211bHRpcGFydEhhbmRsZSkKICAgICAgICAgICAgIG1fbXVsdGlwYXJ0SGFuZGxlLT5kaWRSZWNl
aXZlRGF0YShidWZmZXIpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxDbGllbnQo
W2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1
ZXN0Q2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGNsaWVudC5jdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihyZXF1ZXN0LCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAg
Y2FsbENsaWVudChbYnVmZmVyID0gUmVmIHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0
LCBDdXJsUmVxdWVzdENsaWVudCYgY2xpZW50KSB7CisgICAgICAgICAgICAgICAgY2xpZW50LmN1
cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZmZXIpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC00NDQsMTYgKzQ0NCwxNiBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVycykK
ICAgICBpbnZva2VEaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7CiB9
CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNl
aXZlRGF0YUZyb21NdWx0aXBhcnQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
aWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byByZWNlaXZlQnl0ZXMgPSBidWZmZXItPnNpemUoKTsKKyAgICBhdXRvIHJlY2VpdmVCeXRlcyA9
IGJ1ZmZlci5zaXplKCk7CiAKICAgICBpZiAocmVjZWl2ZUJ5dGVzKSB7Ci0gICAgICAgIGNhbGxD
bGllbnQoW2J1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1
cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICAgICAgY2xpZW50LmN1
cmxEaWRSZWNlaXZlQnVmZmVyKHJlcXVlc3QsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGNh
bGxDbGllbnQoW2J1ZmZlciA9IFJlZiB7IGJ1ZmZlciB9XShDdXJsUmVxdWVzdCYgcmVxdWVzdCwg
Q3VybFJlcXVlc3RDbGllbnQmIGNsaWVudCkgeworICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRS
ZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZmZXIpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmlu
ZGV4IGE2ZmIzMTU3NjZiYTVjMmYzZWEzMmI5ZWY1MWViMDAzZThjYjg5ZDAuLjkyYjc0Njk3YmMz
MTc1Y2UwY2RhZGYxNTFmYTI1NDNhMDNlMTE5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0xMjIsOSArMTIyLDkgQEAg
cHJpdmF0ZToKICAgICBDVVJMKiBzZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90
IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNl
aXZlSGVhZGVyKFN0cmluZyYmKTsKLSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZy
b21NdWx0aXBhcnQoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxp
emVUcmFuc2ZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAppbmRleCAzNDc5ODMyZjU3NmQ0MTI4YWZhNTFj
ODE0MjRjY2ZkNzQxZGY2YWU3Li43MzAzM2YwZWY0ZWI0ZGYyMWFiNzY0NjNjYzM5ODE5YjI4Njc4
NDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3RDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3RDbGllbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVz
dDsKIGNsYXNzIEN1cmxSZXNwb25zZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNz
IFJlc291cmNlRXJyb3I7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hh
cmVkQnVmZmVyOwogCiBjbGFzcyBDdXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3
ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3Vy
bFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxv
bmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNl
aXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0
YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY3VybERpZENvbXBsZXRlKEN1cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBS
ZXNvdXJjZUVycm9yJiYsIENlcnRpZmljYXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkx
OTc5YzA4ODg5YThhNi4uMzg5N2UwMWM2ZDA3NjZkYWNmM2UxOWIyMzczMzZmNWI1NWNlNTI2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTYgKzE0Miwx
NSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3Bv
bnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBp
ZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICBDdXJsQ2Fj
aGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91
c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2Vp
dmVCdWZmZXIoJm1faGFuZGxlLCBXVEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNp
emUoKSk7CisgICAgQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEo
bV9oYW5kbGUsIGJ1ZmZlcik7CisgICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFu
ZGxlLCBidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJp
Y3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCBkYWYw
YTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjljNTRmNmE4YmVmYzcwLi4wMjRiYzRlOWFlMzFkZjI1YThm
OWI3MGNiYTI4MWZhY2VhYzhjZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
aApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhh
bmRsZTsKIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUgZmluYWwgOiBwdWJsaWMgQ3VybFJlcXVlc3RDbGllbnQgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC01Myw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VybERpZFNl
bmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlk
UmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZpbmFsOwotICAg
IHZvaWQgY3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJl
cXVlc3QmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21w
bGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lk
IGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0
aWZpY2F0ZUluZm8mJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcAppbmRleCBjMDcwNGYwY2RkNjQ0MjM3M2Y3Yjcw
YmZlNjE1MzliZjViMzdkNjI1Li4zNjY1OGY5MWRjOWQ2NzIzMGIyMzllNDk3YzAwMDBhYzYyYWFl
OTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTdHJlYW0uY3BwCkBAIC05LDcgKzksNyBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCiAgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKICAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJDdXJsU3RyZWFtLmgiCiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKIAog
I2lmIFVTRShDVVJMKQpAQCAtMTI5LDEwICsxMzAsMTAgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlU
b1JlY2VpdmUoKQogICAgIGlmICghbV9jdXJsSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIHJlY2VpdmVCdWZmZXIgPSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4oa1JlY2VpdmVC
dWZmZXJTaXplKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVjZWl2ZUJ1ZmZlcihrUmVjZWl2ZUJ1
ZmZlclNpemUpOwogICAgIHNpemVfdCBieXRlc1JlY2VpdmVkID0gMDsKIAotICAgIGF1dG8gZXJy
b3JDb2RlID0gbV9jdXJsSGFuZGxlLT5yZWNlaXZlKHJlY2VpdmVCdWZmZXIuZ2V0KCksIGtSZWNl
aXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZlZCk7CisgICAgYXV0byBlcnJvckNvZGUgPSBtX2N1
cmxIYW5kbGUtPnJlY2VpdmUocmVjZWl2ZUJ1ZmZlci5kYXRhKCksIGtSZWNlaXZlQnVmZmVyU2l6
ZSwgYnl0ZXNSZWNlaXZlZCk7CiAgICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykgewogICAg
ICAgICBpZiAoZXJyb3JDb2RlICE9IENVUkxFX0FHQUlOKQogICAgICAgICAgICAgbm90aWZ5RmFp
bHVyZShlcnJvckNvZGUpOwpAQCAtMTQzLDggKzE0NCw5IEBAIHZvaWQgQ3VybFN0cmVhbTo6dHJ5
VG9SZWNlaXZlKCkKICAgICBpZiAoIWJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIGRlc3Ryb3lIYW5k
bGUoKTsKIAotICAgIG1fc2NoZWR1bGVyLmNhbGxDbGllbnRPbk1haW5UaHJlYWQobV9zdHJlYW1J
RCwgW3N0cmVhbUlEID0gbV9zdHJlYW1JRCwgYnVmZmVyID0gV1RGTW92ZShyZWNlaXZlQnVmZmVy
KSwgbGVuZ3RoID0gYnl0ZXNSZWNlaXZlZF0oQ2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAg
ICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQoKSwgbGVuZ3Ro
KTsKKyAgICByZWNlaXZlQnVmZmVyLnJlc2l6ZShieXRlc1JlY2VpdmVkKTsKKyAgICBtX3NjaGVk
dWxlci5jYWxsQ2xpZW50T25NYWluVGhyZWFkKG1fc3RyZWFtSUQsIFtzdHJlYW1JRCA9IG1fc3Ry
ZWFtSUQsIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVjZWl2ZUJ1ZmZl
cikpXShDbGllbnQmIGNsaWVudCkgeworICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3Ry
ZWFtSUQsIGJ1ZmZlcik7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5oCmluZGV4IDRmNTliMjBlOGRiMjc5MDM5OTRi
MzMxNTRjZTY0YjA5OTRmM2EwYmEuLmU4YTMyYzI2NDYxYjQzMDhlYTIyN2M2ZGY4Yzk3MjQzOTkw
NWQwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTdHJlYW0uaApAQCAtOSw3ICs5LDcgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwogICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCiAgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxTdHJlYW1TY2hlZHVsZXI7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBTb2NrZXRTdHJlYW1FcnJvcjsKIAogdXNpbmcgQ3VybFN0cmVhbUlEID0gdWlu
dDE2X3Q7CkBAIC00Niw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRPcGVuKEN1cmxTdHJlYW1JRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkU2VuZERhdGEoQ3VybFN0cmVhbUlELCBzaXplX3QpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVf
dCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlE
LCBjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUpID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGwuaAppbmRleCBiODA0ZmRlMDk3M2JiZmIyODMzMWNmN2MzYTFmMjBiMDQzZTc0ZmU4Li4z
NjZiMDU5YzAyODA0YjE5OWM4ODZhOWMyYzY3MjczZjkyNGYyZWE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsLmgKQEAgLTU5LDkgKzU5LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25h
bDxzaXplX3Q+IHBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwog
ICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRhKCk7CiAKKyAgICAvLyBDdXJsU3RyZWFtOjpDbGllbnQK
ICAgICB2b2lkIGRpZE9wZW4oQ3VybFN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmRE
YXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmFpbChDdXJsU3RyZWFtSUQsIENVUkxjb2RlKSBmaW5hbDsKIAogICAgIGJv
b2wgaXNTdHJlYW1JbnZhbGlkYXRlZCgpIHsgcmV0dXJuIG1fc3RyZWFtSUQgPT0gaW52YWxpZEN1
cmxTdHJlYW1JRDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXgg
NGI5NDkxYzExNTQzZjJiNjBmMTJkMzZlOWU2YTBjYmFhZTM0YTcyZS4uYThmNTdhNzJkMGVhY2Nh
Nzc1NWJlODRmY2FhMWM5YmYxMDk1OGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bEN1cmwuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1
bGVyLmgiCiAjaW5jbHVkZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRl
ICJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyLmgiCkBAIC0xMDQsMTIgKzEwNSwxMiBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90IGxlbmd0aCkKICAgICBzZW5kUGVu
ZGluZ0RhdGEoKTsKIH0KIAotdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZl
RGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRh
KCp0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJl
YW1EYXRhKCp0aGlzLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZUltcGw6OmRpZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSBlcnJvckNv
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMWY0YTE5MzEzMzEyYzVkZDZh
NDhhZDUzMzlkZmQyYzNiNWRlYzI1Ny4uMGZlNjVhMjllNjM2MTZkYjQyZjdjOWVhMWQxODUyMjFj
MjAwNDBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dCA6IHB1YmxpYyBSZWZDb3VudGVkPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0Owot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bh
c3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVy
YXRpb25RdWV1ZURlbGVnYXRlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4
IDMxNWUwNjUxNTMwZGNkYjAyODAxNjU0Yjc1N2Q4MTQ3M2MyMGZkMzAuLmFlNzE1NWVjZWYzNWQz
ZTE4ODhkOTE2NTY0NTdlMzgxMTU5ZGY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTMwMCw3ICsz
MDAsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24g
ZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEgbAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8vIC0xIG1l
YW5zIHdlIGRvIG5vdCBwcm92aWRlIGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5z
cGVjdG9yIHNvIGl0IHdvdWxkIHVzZQogICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJz
IG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1faGFuZGxl
LT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YS5nZXQoKSksIC0xKTsKKyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNl
aXZlRGF0YShtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsK
ICAgICB9OwogCiAgICAgW3NlbGYgY2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOldURk1vdmUod29y
ayldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDhkMDU3
YmJiNWYxN2MyMDQ1YmZmOTA2ZmY1YWRhODVmMTA0MjkzMC4uZjdmMjY2Y2U4ZDgxOTEwNjBjODU3
YTJmOGE2YWQ5ZmRlYmQ4MTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCkBAIC01NDYsOCArNTQ2LDggQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRh
dGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVu
IGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAg
IGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8v
IGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVu
dChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50
TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgp
KTsKKyAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRv
JiYgYnVmZmVyKSB7CisgICAgICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+
d3JpdGVyKCkuYWRkRGF0YShidWZmZXIpOwogICAgICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDA1OWYzYTM4NmI2Y2Y1ZmE3OWIz
YzE4OTcwMTUzMTNmN2NkYjRlZjIuLjFkZTI1M2M5MmIxYjgxZTcyYWI3MGY5YmI1NjhkNDFmZGUz
NzRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKICAgICBtYXliZURldGVybWluZVN0YXR1cyhE
ZWNpc2lvblBvaW50OjpBZnRlclJlc3BvbnNlKTsKIH0KIAotdm9pZCBNb2NrQ29udGVudEZpbHRl
cjo6YWRkRGF0YShjb25zdCB1aW50OF90KiwgaW50KQordm9pZCBNb2NrQ29udGVudEZpbHRlcjo6
YWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVz
KERlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDb250ZW50RmlsdGVyLmgKaW5kZXggNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFl
NzRmNzZiNzU5My4uYjgzOTdiMzBkOGQ4NWI3YmZmYjM2MjU0NjZmMDY4ODhjMTgyMTdlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJl
Y2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBh
ZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRB
ZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
cGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0
LmNwcAppbmRleCA4MmEyYThjNGIxOGFjY2U3OThiMjdjMmM4ZDAwOTU4OWZmNzVjYmE4Li40ZThh
Yjc4MWE0MDYxYWIxOGM1MDMzNzNiZGEzOGY2YzU1ZDhhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuY3BwCkBAIC0xMTUsMTIgKzExNSwx
MiBAQCB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUgogICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0
cnVlOwogfQogCi12b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtlckZvbnRMb2FkUmVx
dWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7
CiAgICAgaWYgKG1fZXJyb3JPY2N1cnJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRh
LmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9
CiAKIHZvaWQgV29ya2VyRm9udExvYWRSZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNl
TG9hZGVySWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyRm9udExvYWRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRM
b2FkUmVxdWVzdC5oCmluZGV4IGRhYjczZmM3YjFhOTNlZDRlM2ZlYjMxZDY3MDk4ZDk5YjUxNzZh
MzkuLjdjYmFhOGU1NTEwYzhjNGZjYWYyZWI5MmM2ZjczYjNkMmExMmM2MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3QuaApAQCAtNjMsNyArNjMs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNXb3JrZXJGb250TG9hZFJlcXVlc3QoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJv
b2wpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApp
bmRleCBiZjVhNDRmZTM0OGQyZmZjZTkxNmZiMTk0OTE1ZTY3YmZkYTlhZWMxLi5jZDI2ZWNkNmEz
N2E3ZWQzOWZmNzFlZGRhMzVlOGVmYTkwYjM3YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwKICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVu
dGlmaWVyLCByZXNwb25zZSk7CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQordm9pZCBXb3JrZXJTY3JpcHRM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVz
ZVN0ckxlbikKIHsKICAgICBpZiAobV9mYWlsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMiwx
MyArMjEyLDExIEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYtOCIpOwogICAg
IH0KIAotICAgIGlmICghbGVuKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKIAotICAgIG1fc2NyaXB0LmFwcGVu
ZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKKyAgICBzaXplX3QgbGVuID0gdXNlU3Ry
TGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkp
KSA6IGJ1ZmZlci5zaXplKCk7CisgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2Rl
KGJ1ZmZlci5kYXRhKCksIGxlbikpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IGVhYWJlMWVhNWQx
M2IzM2Y5YzNjYzY2ZGQ0OTU1N2ViNjllMzdlZmMuLjBiYzNhMDI1YjM2NzllMjU2MzA4NjI0ZWVl
YmE4OWRjY2M0NWM4MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
U2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CiAKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0
Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5oCmluZGV4IGZiYTM2MzIyYjI5YTZkNWI3OTdiMzllZGMzYzNkMTcxMjRiM2I1YmMu
LmNlMzcwOTY4OWQ5ZjA5MjFlMDkwM2EwMzc3ZGIyNjhhNTQ1MGIyYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJGZXRjaC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5k
RmluaXNoKFJlZjxGb3JtRGF0YT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDliMTEyYjlkYjJjZDg0
ZDAzMmY1OWRhZmE4ZThlMzhlMDcwZTUzZjcuLmRjM2FlYThjYWQ5ZDA5NmI0MmJjYTY1YjI2MTIz
MmYxMzc0M2QxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTAz
NCw3ICsxMDM0LDcgQEAgUmVmPFRleHRSZXNvdXJjZURlY29kZXI+IFhNTEh0dHBSZXF1ZXN0Ojpj
cmVhdGVEZWNvZGVyKCkgY29uc3QKICAgICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1
c2VTdHJMZW4pCiB7CiAgICAgaWYgKG1fZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNTIs
MTcgKzEwNTIsMTYgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbikKICAgICBpZiAodXNlRGVjb2RlciAmJiAhbV9kZWNvZGVy
KQogICAgICAgICBtX2RlY29kZXIgPSBjcmVhdGVEZWNvZGVyKCk7CiAKLSAgICBpZiAoIWxlbikK
KyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxl
biA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEpKTsKKyAgICBzaXplX3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CiAK
ICAgICBpZiAodXNlRGVjb2RlcikKLSAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1f
ZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxlbikpOworICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5h
cHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLmRhdGEoKSwgbGVuKSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5hcnkgZGF0YS4KLSAgICAgICAgbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxlbik7CisgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWls
ZGVyLmFwcGVuZChidWZmZXIpOwogICAgIH0KIAogICAgIGlmICghbV9lcnJvcikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAyZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4
NmJhMmQ4MDM3NzVhLi42YmYxOWY4MmJkMmZmNzY3MDdkYTQ1NzE0NzUwN2U5OTFkMjQ2NWQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMTYyLDcgKzE2Miw3IEBAIHByaXZh
dGU6CiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkU2VuZERhdGEo
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
LCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SXNEb25lKGJvb2wpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2UuY3BwCmluZGV4IDYxN2Y0NzY4OTU2NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYuLjdm
NTEyYzZjMTFhOGU3MTA4Y2YwMDYyYjU4NGQyN2I1ODkwOGQxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtOTYsMTAgKzk3LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFS
ZXNvdXJjZTo6ZGF0YVNlbnQodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVz
VG9CZVNlCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3Rh
bEJ5dGVzVG9CZVNlbnQpOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNl
aXZlZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRp
YVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEp
OwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxl
ZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5oCmluZGV4IDViN2E3ZTJhNzQyNDQz
MmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1ZTcuLjk1MTA2ZjY3MjI3M2I0NWYwYTI0YTQ3YTFhMmJk
ZDE0MDllMGY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2UuaApAQCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
Nyw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RS
ZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRhdGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAg
dm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwog
ICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKICAgICB2b2lkIGxvYWRGYWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9QZW5kaW5nRG93bmxvYWQuaAppbmRleCA3MWZkMDIyMjliYmIxYzU3MzI2ZmRmY2ZlMjZj
MTFmNzYxYWJjZjcyLi4wNTRiODkzZTExMTEwZGNmOWE3MDAyNTJmNGY3OTViMDFhNTg3YjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGUgeyB9OworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRl
IHsgfTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5j
cHAKaW5kZXggOTU4NjA5MWVhMDA0MWI2ZjE1ODY5ZDQyYmJkYTcyNDMyOTc2OTBlYy4uYmE4ZDA0
OGY2NWRjMzM5ODRmMGNkNDc2MzVhYjkxMDE4NzliZDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpCit2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikKIHsKICAgICBDT1JTX0NIRUNL
RVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaApp
bmRleCA1MDVhNGVmZTU3MWQ0ODllNTBhOTg4YmViODE4NWI3ZmVhYjNkYjEwLi4wY2IzMTVmZDhm
ZjUzMTk5MTU3ZGU3OGY4NDUyZDcxYzRmNWUyOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAg
LTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
TG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFs
Qnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAg
IHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmgKaW5kZXggNGI5ZWU1NzRiOTJjN2MzNzE3YTRiYzI4MTlhNmJl
M2ExOTA2NTcxNS4uZjQ3OWUwOTAyYjIxNzkyOTU1ZDM3NjgxNGIyMWM4OWZmNTVkYjU4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC00
Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1j
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgd2FzQmxvY2tlZCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAKaW5kZXggOGMxMDRkODE2MGI3YWFmZDA5OTcxNWRhNmQ0ZTZmN2M0NjM3ZmEw
OC4uNjBiNjlhOTM2YmI3OGRmMjUxMDc0OWM3NTRmZTZhYTIyOTNmZTAyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI1NCwxMSArMjU0LDEw
IEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2
ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSB0aGUgZW5jb2RlZCBkYXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEg
bGVuZ3RoLgotICAgIGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwotICAgIG1fY2xpZW50Lmdl
dCgpLmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShidWZmZXIpLCBzaXplKTsKKyAgICBtX2NsaWVu
dC5nZXQoKS5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZv
aWQgTmV0d29ya0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0
cmljcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBl
NmE3NjExNTk2MmI5NjU5ZTdiZmU3OGM2ZjRkYzZmNTMxMmIzY2JlLi4wZTRjMWFlNDkyM2MzMzdm
NWNmOWIwYTQwOGI1YTg4MjI5ZjU5NjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5oCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0
aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRv
dGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwog
ICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCmluZGV4IDM0OGNmZmI5ZThlMjVlZTgzYmJiMzlh
MDJjZDNjZjZkMjg1NGQzOWUuLjhhMjg1ODI2MTEzZjlkOGVlNjYwZGI2ODhiM2M1MzkzZmY5N2Iy
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xp
ZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM2YWNjNjMxNDVm
NDA1YjE5NTVkMzM1NDBkYWE3MDhmOWE2MjkzNDEuLmU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJl
MTQyN2ZjZTk2ZGRlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg2MywyOSArODYzLDI5IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJ
bk5ld0Jyb3dzaW5nQ29udGV4CiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICgh
bV9udW1CeXRlc1JlY2VpdmVkKQotICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAgbV9udW1CeXRlc1JlY2Vp
dmVkICs9IGJ1ZmZlci0+c2l6ZSgpOworICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJl
Y2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoPSVkKSIsIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fbnVtQnl0ZXNSZWNl
aXZlZCArPSBidWZmZXIuc2l6ZSgpOwogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8v
IFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1p
dCBzaXplIG9mIGVudHJpZXMgaW4gdGhlIGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4
aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1fY2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBp
ZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhp
bXVtQ2FjaGVCdWZmZXJTaXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5h
cHBlbmQoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUu
c2l6ZSgpICsgYnVmZmVyLnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAg
ICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAg
ICBpZiAoaXNDcm9zc09yaWdpblByZWZldGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBG
SVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZb3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhl
IHJlc291cmNlIGhhbmRsZS4KLSAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBi
dWZmZXItPnNpemUoKTsKKyAgICB1bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGggPj0gMCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZm
ZXIuc2l6ZSgpOwogCiAgICAgaWYgKG1fYnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVy
ZWREYXRhLmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBl
bmQoYnVmZmVyKTsKICAgICAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBl
bmNvZGVkRGF0YUxlbmd0aDsKICAgICAgICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTEyNzMsNyArMTI3Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1lckZpcmVkKCkKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29k
ZWREYXRhTGVuZ3RoID0gMDsKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRC
dWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFM
ZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBBU1NFUlQoIWlzU3luY2hyb25vdXMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGNmMTBjZjBlNzFh
MWJjNjU1NDBlODdkNmJhNGMxYjljODU2YzBhMWQuLjgxN2FlZjI2YzgzNmMzNGE3ZDQ0ZWU3Y2M5
NWVkZDlhMjk4ZDZhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAg
ICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTMs
NyArMTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVl
ZGVkKCk7CiAgICAgdm9pZCBidWZmZXJpbmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVm
ZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFM
ZW5ndGgpOworICAgIHZvaWQgc2VuZEJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKIAogICAgIHZvaWQgY29uc3Vt
ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlU2FuZGJveEV4dGVuc2lv
bnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggYmMy
YzMzN2U0ZWVlMDFhZjgzZTEzNjcyMzE3YTlhOWVhYmM3YzZmOC4uZjBlZmQwNGJiMmUxOGY2ZjNj
YmMxNjNmYWYyM2RhMDQ2NmJlZTU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAog
ICAgIGRpZEZpbmlzaCh7IH0sIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVj
ZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpk
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIFBJTkdfUkVMRUFTRV9M
T0coImRpZFJlY2VpdmVEYXRhIik7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKaW5kZXggZTc4MDhkOGU2NTU4MmY3OTM4ODgy
OGQ1MTc1OGNiMTkzY2Y1NWZjNy4uYjIyNWM0N2I5NGFmYTBiNDRlZGMyNjcwZGZjNThhZDdhZmM5
MTQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyAr
NTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFs
bGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2Fj
eVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90
YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAK
aW5kZXggMTdkNDc5MDdhM2Y2ZWU1MmJlNjUwMWQxZGFiMGNhNjA3NTFkNmIwYi4uYWFhZTJiZmJk
ZjgzYTM5YWNlYzA2M2ZlYjI0NDYxNmRjODQ4ZWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQ
cmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgUmVzcG9uc2VDb20KICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Okln
bm9yZSk7CiB9CiAKLXZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQor
dm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNv
bm5lY3RUYXNrLmgKaW5kZXggODU4MDhlMTIxYjY4Y2E4YjczZTI1MThkMTkzYWIzOTU4MWVhZDFl
Ny4uOGM2YjBkZWVkNjZjNTEwMTliZTg5ODRlZDViODdlMGMxZDc5MGY4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAg
dm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmlu
YWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2Fk
TWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRv
d25sb2FkVGFzay5jcHAKaW5kZXggMjVkNGUzN2Y5NDU0YmVlMzJmMDRkOGNjOGM0NzFkNWQzZjdl
ZDgyYi4uOGM4ZGMzNmIxZTUzOTM4ZjgxZWI0YWJhYWZmMDE5MGYyYjU0ZWRiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIK
ICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgiCkBAIC0xNzMsNyArMTc0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNr
OjpzdGFydCgpCiAgICAgZG93bmxvYWRQdHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGlu
Z0Rvd25sb2FkTG9jYXRpb24pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJEb3dubG9hZFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKaW5kZXggYWI1OWVhZTUyNjY1MzA2
MjEyYTI4ZTkzMjNhMmI4YjRmZmUwYzc4Zi4uYjg5YWIzZWJkNzYyZjY4MTJhNWU5N2JmZjY5MGJh
OTBmMDI1N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5o
CkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZl
cmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNr
KE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgRG93bmxvYWRJRCk7CiAKICAgICAv
LyBJUEMgTWVzc2FnZQotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KaW5kZXggMWQzYmZiN2NjMzEwOTc5OWNjODAwMWJi
YTcxZDg5YzBmNmYyZDkyZi4uNTBkMmI0MmE3MWIwZWRhYjc5ZmJjZTlkZGI5ZjE5OTgyZGI1MzU5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2su
bWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIAogbWVzc2FnZXMgLT4gU2VydmljZVdvcmtl
ckRvd25sb2FkVGFzayBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2
ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkK
ICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwCmluZGV4IDRlNzkxOWIzZGRjMDJhZTE0ZDBlZDk2ODRiOGM2OGJiNmYyOGE0MzQuLjRmNzhi
OWRmNTRlNWU2Nzc4Nzg0MTM1YTI3YTAzZGJjNjI5YmZkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJOZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxv
YWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25N
ZXNzYWdlcy5oIgpAQCAtMjI1LDcgKzIyNSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6cHJvY2Vzc1Jlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuCiAg
ICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAotdm9p
ZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9pc0RvbmUp
CiAgICAgICAgIHJldHVybjsKQEAgLTQwMSw3ICs0MDEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OmxvYWRCb2R5RnJvbVByZWxvYWRlcigpCiAgICAgICAgICAgICBkaWRGaW5pc2hX
aXRoTWV0cmljcyhtX3ByZWxvYWRlci0+bmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJl
ZmVyZW5jZSB7IGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkgfSwgbGVuZ3RoKTsKKyAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoUmVmIHsgY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJj4oKmNodW5rKSB9LCBsZW5ndGgpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBjMzQ1ODAyNjdmYjMyNjllNmRjYmRjZWZj
MzRkMDY4MmM2YTA4ODZjLi41MjI1ZTU0NTk5OTUxZDhmODFjNzBhZjgyZWJiYTI2ODllMzUwMDY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNs
YXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtOTMsNyArOTQsNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xh
c3MgU2hvdWxkU2V0U291cmNlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURh
dGEoY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7
CiAgICAgdm9pZCBkaWRGaW5pc2hXaXRoTWV0cmljcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
bWVzc2FnZXMuaW4KaW5kZXggMThlNjI5ZjBkMTQ2ZWQyZDQyOWRiMWJhMjg3MDFlODNmYjk2ZTYy
Zi4uN2RiNTNlOWJkMDM4MDQ1NDczYTI1YWYzN2Q0N2MxOTU3OTVlMjMyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KQEAgLTI3LDcg
KzI3LDcgQEAgbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckZldGNoVGFzayBOb3RSZWZDb3VudGVk
IHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgRGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkK
ICAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLSAgICBEaWRS
ZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKKyAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRSZWNlaXZlRm9ybURh
dGEoSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIERpZEZpbmlzaCgpCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcApp
bmRleCA1ZDliZDMzMzM5MjExY2ExY2Q0NDdiODc5MmY1NDYxZWE4N2VkZGY0Li5lNTY1NGNjMzEz
OWI0OWQ2MWE5ODUxM2NkMDE2YmVjZjczOWJiY2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTE3NSwxMCArMTc1LDEw
IEBAIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZv
aWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAg
IG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgICAgIG1fYm9keUNhbGxiYWNrKFJlZlB0ciB7ICZidWZmZXIgfSwg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
TmF2aWdhdGlvblByZWxvYWRlci5oCmluZGV4IDY3YWJjNTVjNjBmZjI0ZTM5ZGQwNGVjYzUwMjFi
NjA1ZWU4YmViYjEuLjVmODhhYzJhYThkZjk2MjhkNGM1OWRkZDA5NGYwY2VlMWQyMWE3ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5o
CkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtM
b2FkTWV0cmljczsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25z
ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShS
ZXNwb25zZUNhbGxiYWNrJiYpOwotICAgIHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpPjsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0
cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCk+OwogICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYp
OwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJl
dHVybiBtX2Vycm9yOyB9CkBAIC03MSw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxl
bmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDdhMjYyMjE5ZGU3OGIyMzVkMTI1YTky
YjZlMjM2ZDMzMjYyZjdhMjcuLmQ5ZDc0NzUyNTMyZjE4OWViMWJlMmMwM2Q3ZTI5ZTg1OWU4OTZl
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIFJlc291cmNlRXJyb3IgU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvCiAgICAgcmV0
dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9k
ZWNvZGVyKSB7CiAgICAgICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAg
LTE4Niw4ICsxODYsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgICAgIG1f
ZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9z
LCAiVVRGLTgiKTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkp
Ci0gICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgc2l6ZSkpOworICAgIGlmICghYnVmZmVyLmlzRW1wdHkoKSkg
eworICAgICAgICBidWZmZXIuZm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAg
ICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShzZWdtZW50LmRhdGEo
KSwgc2VnbWVudC5zaXplKCkpKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5oCmluZGV4IDQ0ZmMwNjg1ZmEwZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMw
ZmRiZWEuLjdlODE4ZjM0MTNkYTI5Zjg2MWUxMDAzOTkxZThkNTM4OTIzNDZlZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3ICs2
NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggNDFkODIzNTAy
NDc0N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2Y2I1ZWY3YS4uODE0ZWIzMjBkNGU3NDhhMjlhZTA5MTM1
YWZjMWRhNWYzNzUxNWVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApA
QCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2Fk
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNo
ZUVudHJ5KTsKIAogICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8v
IFByZXZlbnQgbWVtb3J5IGdyb3d0aCBpbiBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAg
ICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7
Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6
ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0
YUZvckNhY2hlLmFwcGVuZChidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXIuc2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNp
emUpCisgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmgKaW5kZXggMWI4NDNkYjdlYzI3
MGRiOWRhYjllOGEyNWYyYTQ4YThlY2FlMmE4YS4uOWFkY2E2MDVlNzI4MGJiN2IzNGNlNzQ0ZDg3
ODhiYmI0NDg5MjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3
ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggNDE2Njhh
NWIxY2Q3Mzg2OTY3YjhmZDk3M2U5NjczMmVjYTkwN2VkYy4uMDc3MmFmMWE4NmQyMjQxN2JmMTFm
MTZiZDZiN2I1ODBmZTU3YTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtMzgsNiArMzgsNyBA
QCBPQkpDX0NMQVNTIE5TTXV0YWJsZVVSTFJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmVn
b3RpYXRlTW9kZXJuVExTKGNvbnN0IFVSTCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpOwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0
ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9hZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNDc3
MWZkZTkyMGQ2Yjk4ZTgzZmMyOWRkM2FhZjk3YTBhNmQ5YTg4MC4uNjQ5YjVjYTc4YzY4NzVlY2Rl
MGQzZDQzNmY5NTkwZGI1MTc5ZDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC00NDMsMTIg
KzQ0MywxMiBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlk
Q29tcGxldGVXaXRoRXJyb3IoZXJyb3IsIG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQg
TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRS
ZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgV1RG
RW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRl
cyIsIGRhdGEtPnNpemUoKSk7CisgICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRh
dGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEuc2l6ZSgpKTsKIAogICAgIGlmICht
X2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkp
OworICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgTmV0
d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRM
UywgV2ViS2l0OjpSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29y
a0RhdGFUYXNrQ3VybC5jcHAKaW5kZXggODQ2NjllMjA5ZDc3YmY1MmEzNmFmZTJhN2RhYjI1MmE2
OTAwZGNmNy4uMTNmY2M3YmQ0OGE1NWEwOTM5MTI5MjZiYTQ0ODRjZjVlMzU1MTMyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0
YVRhc2tDdXJsLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Zy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaD4KICNpbmNs
dWRlIDxwYWwvdGV4dC9UZXh0RW5jb2RpbmcuaD4KQEAgLTE3MiwxMyArMTczLDEzIEBAIHZvaWQg
TmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYg
cmVxdWVzdCwgQ3VybFJlc3BvCiAgICAgaW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAK
LXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVl
c3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtE
YXRhVGFza0N1cmw6OmN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAg
ICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNv
bXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFpc0Rvd25sb2FkKCkpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRh
c2tDdXJsOjpjdXJsRGlkQ29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3Mm
JiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAppbmRleCA0NWJlNWNlMTg0MzI1Mjcx
ZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFmLi5lNTU4NjRhOTVmN2JjYmMwODVjNDY2MjhiZmYwNTg1
NzM1NzMyODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwv
TmV0d29ya0RhdGFUYXNrQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ3VybFJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjgsNyArNjksNyBAQCBwcml2YXRlOgogICAgIFJlZjxX
ZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3JlYXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMgPSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAg
ICB2b2lkIGN1cmxEaWRTZW5kRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxv
bmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9u
c2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpD
dXJsUmVxdWVzdCYsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERp
ZENvbXBsZXRlKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzJiYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6
Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYmKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hh
cmVkQnVmZmVyQ29weS5oCmluZGV4IDE3ZjA4YzI4ZWExMjViNTUwOTkzZWVkMjRkNTk2M2I4NTEw
YTExNDEuLjU3YjE0NmU1OGU3YTlkYTcwMjZjOWRlZTUyMDM5NTUxYWRhYjcxZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IGUxMjY0Y2UyMWJh
NTdmMmE0Mjc0OGUzM2ExZGFkODhhMGUyNThiYzIuLmQ3NjdmYzA2YjM2ZjE1NmZmMzFjMzgzZTY0
M2Q0MzQ0YzIxN2FhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAg
ICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNr
OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+
IEV4Y2VwdGlvblR5cGUKK2F1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xODcsMTEgKzE4NywxMSBAQCBhdXRvIFdlYlVSTFNj
aGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikgLT4gRQogICAgIG1fZGF0YVNlbnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7
Ci0gICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1f
c3luY0RhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpO
b25lOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJM
U2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigp
LCBtX3Jlc291cmNlTG9hZGVySUQsIGJ1ZmZlci5nZXQoKSksIG1fd2ViUGFnZUlEKTsKKyAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZl
RGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklE
LCBidWZmZXIpLCBtX3dlYlBhZ2VJRCk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBm
NmZmNDZlZWE1ZjI5MGI3YjdlM2ZlNTkyMWRmOWYxOTRiYWNkMTE3Li5jMzIzMDY5YjFjYzAzMWYw
MjViMjJjODU5YTM1NDE4OGZkZDIzNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25U
eXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgRXhjZXB0aW9uVHlwZSBk
aWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICBFeGNlcHRp
b25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAg
IHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuY3BwCmluZGV4IGI1MTNhMjY4
MDhlYWExOGUzN2Y0ZmRmMDRhMjNkMjk2MGIyNzNiMmMuLjkyMzRiNWM2NTNmOTFlYmE5MTBmYmRm
OWJlMWUyMmEwMmMxMWM2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKQEAgLTcy
LDIwICs3MiwxNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVNlbnQoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZQogICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFTZW50KG1faWQs
IGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KSwgMCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVk
aWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUmVtb3RlTWVkaWFS
ZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNl
JiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBzaGFy
ZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGxlbmd0aCk7CisgICAgYXV0byBzaGFy
ZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNvcHlCdWZmZXIoYnVmZmVyKTsKICAgICBpZiAoIXNo
YXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzaGFyZWRNZW1vcnlQdHIg
PSBzdGF0aWNfY2FzdDxjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpOwotICAgIG1lbWNweShz
aGFyZWRNZW1vcnlQdHIsIGRhdGEsIGxlbmd0aCk7Ci0KICAgICBTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBoYW5kbGU7CiAgICAgc2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRN
ZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBz
aGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0IGFzIG1lZGlhLXJlbGF0ZWQgbWVtb3J5LgogICAgIGhh
bmRsZS50YWtlT3duZXJzaGlwT2ZNZW1vcnkoTWVtb3J5TGVkZ2VyOjpNZWRpYSk7Ci0gICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0
YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUp
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obGVuZ3RoKSB9KSwgMCk7CisgICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVk
KG1faWQsIFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXIu
c2l6ZSgpIH0pLCAwKTsKIH0KIAogdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmFjY2Vz
c0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5o
CmluZGV4IDQ3ZWE4NjY3MWIxM2QxMzk1YzNkYWQ5YmRhNzlhYmY2MTZjYmExNzkuLjk0OTQ2NDUy
MmMyNjNlNmE1ZTgwNzNmNzRlOWQyNDM0YmFhOTM5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJv
eHkuaApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZl
ZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICBib29sIHNo
b3VsZENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGF0YVNlbnQoV2Vi
Q29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25l
ZCBsb25nIGxvbmcpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGxvYWRGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAg
IHZvaWQgbG9hZEZpbmlzaGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGQ3
MWFlNWUwYTlhZjNkOWVlM2E1MWQ4ZmNmNTBmZTUzNTliMzkwYjcuLjc0OTE5MGQxOWIwZmExY2Uw
YjUxMWU4NDIwNzI1NjAwNjkxMTg2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTIwMCwx
NiArMjAxLDE1IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgbV9jb3JlTG9hZGVyLT5k
aWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0
aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpCit2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAg
TE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFt
X2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90
IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBp
ZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxv
YWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAgICBtX2ludGVyY2Vw
dENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNv
ZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVy
LmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3Ro
XSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAg
ICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBl
bmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92
ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAg
ICAgICAgIFdFQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogU3Rh
cnRlZCByZWNlaXZpbmcgZGF0YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNp
emUoKTsKIAotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgYXV0
byBidWZmZXIgPSBkYXRhLmJ1ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZm
ZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtMzA2LDcgKzMwNyw3IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCku
c3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNF
X0xPRygiZGlkUmVjZWl2ZVJlc291cmNlOiIpOwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBj
cmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3Jr
IHByb2Nlc3MuIik7CkBAIC0zMjMsNyArMzI0LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQK
IAogICAgIC8vIE9ubHkgc2VuZCBkYXRhIHRvIHRoZSBkaWRSZWNlaXZlRGF0YSBjYWxsYmFjayBp
ZiBpdCBleGlzdHMuCiAgICAgaWYgKHVuc2lnbmVkIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUo
KSkKLSAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAg
ICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBi
dWZmZXJTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogCiAgICAgaWYgKCFtX2NvcmVM
b2FkZXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IGEyMmU2MmYyOGI1ZmE0Y2ZjOTFh
YTVlNWNlODJjYTI3YWUyNmFkNTMuLmFjNTQyMmZjMDY3MTBiZDBlMDg3ZTBmNDQwOWVkOTQwMTdj
MGNmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuaApAQCAtMzksNiArMzksNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtODAsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAg
dm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNU
b0JlU2VudCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwg
aW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgp
OwogICAgIHZvaWQgZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpp
bmRleCAwMmExNGY1OWEzMDQ3NDRjMmQxODNlYTc5ZTk5ZWJhZWI0Y2ZiYmEyLi5kYWEyNGQyN2M3
MWE4M2NmN2MwZjE2OGRhMjZhNDliNDg3NjkyNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdl
cy5pbgpAQCAtMjQsNyArMjQsNyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0
X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCiAgICAgRGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBD
OjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0
X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3b3JrTG9hZE1ldHJpY3MpCiAgICAgRGlkRmFpbFJlc291
cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZEZhaWxTZXJ2aWNl
V29ya2VyTG9hZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDhkMmM1ZjNlMjVj
YTFhMjM3OGU1ZTMwMDVkNzU0OTJiZWFmMGIxZWEuLjJiN2U0ZDJjMjBmZGQxOTk4ODI3MmRhOGJm
Y2M1YTYxODZjNmQzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLmgKQEAgLTY1LDYgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEVsZW1lbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xNzYsMTEgKzE3
NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90
IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFt
V2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkws
IGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9CiAg
ICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1v
ZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJz
LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHN0cmVh
bURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9p
ZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBmaW5hbDsKICAgICB2
b2lkIHN0cmVhbURpZEZhaWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBm
aW5hbDsKICAgICB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwm
IHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmll
ZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhl
YWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQg
bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5n
dGgpIGZpbmFsOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5p
c2hMb2FkaW5nKCkgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2Fz
Q2FuY2VsbGVkKSBmaW5hbDsKICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91
c2VFdmVudCYpIGZpbmFsOwpAQCAtMzYyLDcgKzM2Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShX
ZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IGZpbmFsOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAg
ICAgICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCmluZGV4IGU1ZmEwNzEwOWE5MzE4NDUzOWZiMWUyNDcwYTNmOTM4NmQ0MzE1NTguLmZhNmNl
NmY2OWZjMDJmNzAxZjg4NTEzODg0NzVkZWYzZjI0MzE0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTQsNiArOTQsNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxBbmltYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
Y3JvbGxiYXJUaGVtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8
V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2hlZWxFdmVudFRlc3RNb25p
dG9yLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgpAQCAtMTE5MSw3
ICsxMTkyLDcgQEAgdm9pZCBQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3QKICAgICB9CiB9CiAKLXZvaWQgUERG
UGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBj
b3VudCkKK3ZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJl
Y2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIW1fcGRmUGx1Z2luKQogICAgICAgICByZXR1cm47
CkBAIC0xMjAwLDcgKzEyMDEsNyBAQCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9h
ZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbQogICAgIGlmICgh
cmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLCBj
b3VudCk7CisgICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
fQogCiB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRGYWls
KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KQpAQCAtMTcxOCwxNSArMTcxOSwxNSBAQCB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdAogICAgICAg
ICBtX2lzUG9zdFNjcmlwdCA9IHRydWU7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRS
ZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBs
ZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3Ry
ZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQo
c3RyZWFtSUQsIHN0cmVhbUlEID09IHBkZkRvY3VtZW50UmVxdWVzdElEKTsKIAogICAgIGlmICgh
bV9kYXRhKQogICAgICAgICBtX2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwg
MCkpOwogCi0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCBieXRlcywgbGVuZ3Ro
KTsKLSAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gbGVuZ3RoOworICAgIENGRGF0YUFwcGVuZEJ5dGVz
KG1fZGF0YS5nZXQoKSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9zdHJl
YW1lZEJ5dGVzICs9IGJ1ZmZlci5zaXplKCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1E
aWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKQpAQCAtMTc2MywxNCArMTc2NCwxNCBA
QCB2b2lkIFBERlBsdWdpbjo6ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRM
ZW5ndGgpCiAgICAgICAgIENGRGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0
TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQg
UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihD
RkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAotICAgIGVuc3VyZURhdGFCdWZmZXJMZW5ndGgo
bV9zdHJlYW1lZEJ5dGVzICsgbGVuZ3RoKTsKLSAgICBtZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5
dGVQdHIobV9kYXRhLmdldCgpKSArIG1fc3RyZWFtZWRCeXRlcywgYnl0ZXMsIGxlbmd0aCk7Ci0g
ICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKKyAgICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3Ro
KG1fc3RyZWFtZWRCeXRlcyArIGJ1ZmZlci5zaXplKCkpOworICAgIG1lbWNweShDRkRhdGFHZXRN
dXRhYmxlQnl0ZVB0cihtX2RhdGEuZ2V0KCkpICsgbV9zdHJlYW1lZEJ5dGVzLCBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gYnVmZmVyLnNpemUo
KTsKIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCiAgICAgLy8gS2VlcCBvdXIgcmFu
Z2VzLWxvb2t1cC10YWJsZSBjb21wYWN0IGJ5IGNvbnRpbnVvdXNseSB1cGRhdGluZyBpdHMgZmly
c3QgcmFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXgg
MWQ4NDQ4MDVmNGMxMGU5M2ZlZGNhYmRlZWMyMWRkMzVkZGY4ODIwMi4uZTRkNjJmNGJlYTliZmMy
ZmE4MGVmNGQ2ZTkwYzVjY2YwNjc5NGY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmgKQEAgLTU0LDEyICs1NCwxMyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07
CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKK2Ns
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFz
cyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2Nyb2xs
YmFyOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xNjAsNyArMTYxLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlm
aWVkVGltZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUg
cGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2b2lk
IHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBi
eXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAw
OwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQg
bG9hZGluZy4KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRf
dCBzdHJlYW1JRCkgPSAwOwpAQCAtMTczLDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmll
ZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBs
dWctaW4gdGhhdCB0aGUgbWFudWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1
YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywg
aW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAKICAgICAvLyBUZWxscyB0
aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1
YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA1MzRkYTUyZDQ3
ZDYyODUwZTIwNWZmOWU5OWMzMGIzN2QzYmNiYTEyLi4wMzQ0ZjRiZTIzYTQzNzY3MTk3Nzg5OTk3
ZDc2MzdhMjAzMWI3ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0
c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAKQEAgLTIzNSw5ICsyMzUs
OSBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUgogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4t
PnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25zZVVSTCwgc3RyZWFt
TGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywg
cmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6U3Ry
ZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVp
bnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJl
Y2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpCiB7Ci0gICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2
ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tX3Bs
dWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnVmZmVyKTsKIH0KIAogdm9p
ZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3Bv
bnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwog
fQogCi12b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIFRoZSBwbHVn
LWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYg
KCFtX3BsdWdpbikKQEAgLTM4MiwxMSArMzgyLDExIEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFs
TG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAg
ICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFt
U3RhdGUgPT0gTWFudWFsU3RyZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAg
ICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBtX21h
bnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoYnl0ZXMsIGxlbmd0aCk7
CisgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiB9CiAK
IHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKQpAQCAtMTE3MSw5
ICsxMTcxLDkgQEAgdm9pZCBQbHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogCiAg
ICAgLy8gRGVsaXZlciB0aGUgZGF0YS4KICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyID0gbV9tYW51YWxTdHJlYW1EYXRhLnRha2UoKTsKLSAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgbWFu
dWFsTG9hZERpZFJlY2VpdmVEYXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNl
Z21lbnQtPnNpemUoKSk7CisgICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCktPmZvckVh
Y2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgICAg
IG1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShidWZmZXIpOworICAgICAgICB9KTsKICAgICB9CiAK
ICAgICBpZiAobV9tYW51YWxTdHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNo
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5k
ZXggZjY2MzEyYTgwYWNkMWUwMzUzMTBkZmFhM2E1ZjNhMTdiNzJhYWU1NS4uMjU2MTVjYjMwZjIy
NjQ2MzkyNDQ0ODhmMmJkN2M0MTIyNzkwNzliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0JlaW5nRGVzdHJveWVkKCkgY29uc3QgeyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1
Z2luLT5pc0JlaW5nRGVzdHJveWVkKCk7IH0KIAogICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2Vp
dmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBt
YW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgp
OworICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYpOwogICAgIHZvaWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2
b2lkIG1hbnVhbExvYWREaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBlZTQwZmI5NTg1ZTc5
ZDg2YjNjZmQyZjU3OWVkNDZlNjFiOWVjNjNlLi4zMTQ4MmViM2IzNjhkNzhhNjFhN2VjMWQyNGM1
OTgxMGJjOTFlZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApA
QCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3Bv
bnNlIHsgcmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Ug
fSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24p
CiAgICAgICAgIHJldHVybjsKQEAgLTgwLDE0ICs4MCwxNCBAQCB2b2lkIFdlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPgogICAgIGlmIChtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpIHsKICAgICAgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkKICAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hh
cmVkQnVmZmVyQnVpbGRlcigpOwotICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVy
PihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIHN0ZDo6
Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoYnVmZmVyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6
RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZl
ci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEg
eyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCks
IHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmll
cik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1
ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZv
cm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAtMTM2LDE1ICsxMzYsMTUgQEAgdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZv
cm1EYXRhPiYKICAgICB9KTsKIH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXpl
KQordm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNo
dW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9u
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJl
Y2VpdmVEYXRhIHsgeyBkYXRhLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0s
IG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciwgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwog
ICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURh
dGEgeyBidWZmZXIgLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2Zl
dGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQog
ICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9
LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7Ci0gICAgICAgIGRp
ZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOworICAgICAgICBkaWRSZWNlaXZlRGF0YShidWZm
ZXIuY29weSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQog
ICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZv
cm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggZTk4N2Ux
OWFjOGI3Mzg4NzFhYWQ4MmI0YjM4NTYyOTY4YTJiNmM5Yy4uMDk0MDBkZjBjZTcyNWYzOWE4YjEx
ZDkzNWUxNDU0ZTM5OWY1YTI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
aApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmlu
aXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgp
IGZpbmFsOwpAQCAtNjAsOCArNjAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udmVydEZldGNo
VG9Eb3dubG9hZCgpIGZpbmFsOwogCiAgICAgdm9pZCBjbGVhbnVwKCk7Ci0gICAgCi0gICAgdm9p
ZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CisKKyAg
ICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7
CiAgICAgdm9pZCBkaWRGaW5pc2hCbG9iTG9hZGluZygpOwogCiAgICAgc3RydWN0IEJsb2JMb2Fk
ZXIgZmluYWwgOiBXZWJDb3JlOjpGZXRjaExvYWRlckNsaWVudCB7CkBAIC02OSw3ICs2OSw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJCiAgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBm
aW5hbCB7IH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2VpdmVCbG9iQ2h1bmsoZGF0YSwg
c2l6ZSk7IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImIGRhdGEpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEp
OyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBl
cnJvcikgZmluYWwgeyBjbGllbnQtPmRpZEZhaWwoZXJyb3IpOyB9CiAgICAgICAgIHZvaWQgZGlk
U3VjY2VlZCgpIGZpbmFsIHsgY2xpZW50LT5kaWRGaW5pc2hCbG9iTG9hZGluZygpOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDE0YTA4M2NhMjA3YTkwNjNjZjgwYjFl
N2U5NjcwYTQ4N2NmNGQzOTkuLmVkNGY1ZGU5ZDVlNTYxOGQ0MzI0NTUwODJmNWRhMTg4YWJmOWJm
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE1MiwxMCArMTE1Miwx
MCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVu
dCgpCiAgICAgd2ViUGFnZS0+ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQobV9mcmFtZSk7CiB9
CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmICghbV9wbHVnaW5WaWV3KQotICAgICAg
ICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgbG9hZGVyLT5jb21t
aXREYXRhKGRhdGEpOwogCiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGEgc3RhbmQtYWxvbmUg
bWVkaWEgZG9jdW1lbnQsIG5vdyBpcyB0aGUgcmlnaHQgdGltZSB0byBjYW5jZWwgdGhlIFdlYktp
dCBsb2FkLgogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlZCBhY3Jvc3Mg
YWxsIHBvcnRzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi80ODc2Mj4uCkBAIC0xMTc3LDcgKzExNzcs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3ID0gdHJ1ZTsKICAgICB9Ci0gICAgbV9wbHVn
aW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX3Bs
dWdpblZpZXctPm1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShkYXRhKTsKIH0KIAogdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGJiNTI5ZDNhZWM0ZTJjNzVmMWE3ZGU5
MWIxMGI1NTgyZDQ1MjJiNDIuLjFkMzBiYzM5MzgzYWZmZjJjYTljMjg3NTNkZDJkN2VjMmIyNjQ5
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29t
bWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQp
IGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRM
b2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmNwcAppbmRleCBhMjA1ZTAwMWNhNzE1ODIwOTEzYTgxYWU0YTgzNjUzMGY5YTBm
NjQ4Li43MmUzNTU0YzhlMGFhNjkwYTZlYzU3ODAxNzZmMTllMGI4ZDcwZDI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2Vi
UHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHIKIAogV2ViUHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZp
ZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
Cit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYlBhZ2UobV9wYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGRjMTY3ZTViN2JjM2IwM2VmMzkzMWVh
YjM1NmM3ODI3OTI5NTI5ZS4uNjQ5YmM4MzE5YzI3ODZmMDFkNjE3YzExMTk5ZGIwYzZjMDc3ZmE3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDk0
MmVkYzYyM2E0ZTY1M2JiMTg4YWVlMDUwNjQ0YTNmNGEwMzJlODkuLmY4OWZmNzJhMGQzMWJlYzEx
ZWY4MDI5N2VmYmE5MmMyYTdiYzY2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03MDU3LDEyICs3MDU3LDEyIEBAIHZvaWQgV2ViUGFnZTo6
dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRp
ZmllciBoYW5kCiAgICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVSZXNwb25zZSh0YXNrSWRlbnRp
ZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNl
aXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRS
ZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25z
dCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEpCiB7CiAgICAgYXV0byogaGFuZGxlciA9IG1f
aWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmll
cik7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwogCi0gICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVE
YXRhKHRhc2tJZGVudGlmaWVyLCBkYXRhLnNpemUoKSwgZGF0YS5kYXRhKCkpOworICAgIGhhbmRs
ZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5idWZmZXIoKSA/ICpk
YXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKS5nZXQoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE5NGI1YjlkN2ZlMzJmMjRh
ODZkYWFhZDQ0ODQyYjBjZGQwYWViMmYuLjQ4ODY2NzA3YzQ2MTNkOWE3Y2QzNTIxNWRmY2E5MjNj
Njk3OWJlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTE4NCw2ICsxODQsNyBAQCBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBj
bGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZm
ZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xODk2LDcgKzE4OTcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgdXJsU2NoZW1lVGFza1dpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2Vi
VVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRp
ZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJik+JiYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRp
cmVjdGlvbihXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tE
aWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRh
KFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAg
IHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIs
IGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0Rp
ZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKIAogICAgIHZvaWQgc2V0SXNUYWtpbmdTbmFwc2hvdHNGb3JBcHBsaWNhdGlvblN1
c3BlbnNpb24oYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBiMjcyMjk0NzFlYWU4NmVlNTk4MTk4M2RkNTdi
NWU3YTgyOTFjZDRiLi5iZGE1ZjUwYWRkMjNhOTY3NDBlODlkNzMzZDc5YzE4N2YwNTJiZTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTU2NCw3ICs1NjQsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAg
IFVSTFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1l
SGFuZGxlcklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkgLT4gKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBhY3R1YWxSZXF1ZXN0KSBBc3luYwogICAgIFVSTFNjaGVt
ZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRl
bnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcHJvcG9zZWRSZXF1ZXN0KQogICAgIFVSTFNjaGVtZVRh
c2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmll
ciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRh
c2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQotICAgIFVS
TFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQor
ICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQogICAg
IFVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAKICAgICBT
ZXRJc1N1c3BlbmRlZChib29sIHN1c3BlbmRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCmlu
ZGV4IDZkOGQwY2YyNzg0ZWQzMDU2NjI1YzdmNmU4NDZhOTNhNzExY2JhY2QuLjYxNmVkYTA4ZjBi
OGZjYWIyZDU3ZmM0NzUzMjkxMDdiODE1Y2QyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNw
cApAQCAtOTYsMTMgKzk2LDEzIEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNr
RGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlCiAgICAgdGFzay0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5k
bGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgdGFza0lkZW50aWZpZXIsIHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQor
dm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICBhdXRvKiB0YXNrID0gbV90YXNrcy5nZXQodGFza0lkZW50aWZp
ZXIpOwogICAgIGlmICghdGFzaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgdGFzay0+ZGlkUmVj
ZWl2ZURhdGEoc2l6ZSwgZGF0YSk7CisgICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9
CiAKIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkQ29tcGxldGUoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKaW5kZXggNThiZWNjMTdiNWQ4NTk4
NzQ5ODg0ZDMwMjUxNjg5Y2NjYzE3NjkzZi4uYWIyMGJkNTczYWE0YWZjMTU4MDU5MGYyNzA0NjYz
MDA2ODc3NDBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VS
ZXNwb25zZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OSw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgdGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmKTsKICAgICB2b2lkIHRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
dm9pZCB0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpOworICAgIHZvaWQgdGFza0RpZFJlY2VpdmVE
YXRhKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJik7CiAgICAgdm9pZCB0YXNrRGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9p
ZCB0YXNrRGlkU3RvcExvYWRpbmcoV2ViVVJMU2NoZW1lVGFza1Byb3h5Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNr
UHJveHkuY3BwCmluZGV4IDM2MDZiYmRjNjUyMTVkZGNhOTI2MTNhODEwN2RhYjFiMTFlY2I2NTYu
LjllNzJkODRjOTdkZjZkMjk3MTRhODNjNTFhYzE3NzYzZTVmYjY1M2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1By
b3h5LmNwcApAQCAtMTQwLDIxICsxNDAsMjEgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAg
ICB9KTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNp
emVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQordm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJv
eHk6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBpZiAoIWhhc0xvYWRlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0
aW5nRm9yQ29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgV0VCVVJMU0NIRU1FVEFTS1BST1hZ
X1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogUmVjZWl2ZWQgZGF0YSBkdXJpbmcgcmVzcG9u
c2UgcHJvY2Vzc2luZywgcXVldWluZyBpdC4iKTsKLSAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YVZlY3RvciA9IFZlY3RvciB7IGRhdGEs
IHNpemUgfV0gewotICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YVZlY3Rvci5zaXplKCks
IGRhdGFWZWN0b3IuZGF0YSgpKTsKKyAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YSA9IFJlZiB7IGRhdGEgfV0geworICAgICAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwotICAgIG1fY29yZUxvYWRlci0+
ZGlkUmVjZWl2ZURhdGEoZGF0YSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9h
ZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIDAsIERhdGFQ
YXlsb2FkVHlwZTo6RGF0YVBheWxvYWRCeXRlcyk7CiAgICAgcHJvY2Vzc05leHRQZW5kaW5nVGFz
aygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVUYXNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCmluZGV4IDc1NTA4Nzk0MTgyMGZlZWZjNWQwMTI3MTU4
YzA2NGNlMjU4YTA4MzUuLmVkOTFmMzhlM2FkZDEzYmUxOWNiMjE3N2VkNDQ4ZmRkMmZhNzk1NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZVRhc2tQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZVRhc2tQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291
cmNlUmVzcG9uc2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFBlcmZvcm1SZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
Jik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoc2l6ZV90LCBjb25zdCB1aW50OF90
KiBkYXRhKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpOwogICAgIHZvaWQgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKaW5kZXggYTI1NTYwYTEwYzI4ODJlMWFiZDE3
ODQ1Njk0ODZlYTEzZWQ4OTZkNC4uMzI4OWMyMzYyOWEwZGMzMWZjMGMxOTllZGYxMzI5N2JlZDYx
YTE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5n
SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFu
ZGxlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxl
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KIApAQCAtNzMsNyArNzQsNyBAQCBwcml2YXRlOgogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2Up
OwogICAgIH0KLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7
IHBpbmdMb2FkQ29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBpbnQpIGZpbmFs
IHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmlu
YWwgeyBwaW5nTG9hZENvbXBsZXRlKGVycm9yKTsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3No
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCA5NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlLi44ZGY5OTNmMmQ3NzVi
NmM5M2QyZThmMDk5MGY3MmY4NWY2MThlNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
QEAgLTQ4LDEwICs0OCwxMiBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENhY2hlZEZyYW1lOworY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgUHJv
dGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50
IDogcHVibGljIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+IHsKQEAgLTE1MSw3ICsxNTMsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWwgeyB9CiAgICAgdm9p
ZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0
ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmlu
YWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2Jh
bEhpc3RvcnkoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExp
bmtzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDQzZTYzZjQ1NjM0
NWVjZjFjOTI0ZTViNzcyYTZmNTQxNzNhOTE0MmIuLjg3YTVkNjU3ZjdiNzMzZDA3YzVkYjYwMWY2
OTgxZjkwNDk3NzEzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC05OTIsMTAg
Kzk5Miw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRD
b250ZW50KCkKICNlbmRpZgogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0
ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2Fk
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKLSAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRv
bmU6Tk9dKTsKLSAgICBbZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNlaXZlZERhdGE6bnNEYXRhLmdl
dCgpXTsKKyAgICBbZGF0YVNvdXJjZShsb2FkZXIpIF9yZWNlaXZlZERhdGE6ZGF0YS5jcmVhdGVO
U0RhdGEoKS5nZXQoKV07CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVk
TG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyKQpAQCAtMjAxMiw3ICsyMDEx
LDcgQEAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2aWV3TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5n
PiBtX2ZpbGVQYXRoOwogICAgICAgICBSZXRhaW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVIYW5k
bGU7CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAg
ICAgICAgewogICAgICAgICAgICAgYXV0byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRh
QXJyYXkoKTsKICAgICAgICAgICAgIGZvciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDBl
MDViMThkNjk2Mzk4MjhkNDMzYzQ2ZDc5MjFjZjcwZGU3ZGY5ZDEuLjJhODc3MGRmODBiYjlmNzBj
MTBiYjkxZjk1MjBkMWUxOWM4NTlkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQpAQCAtOTc3LDcgKzk3Nyw3IEBAIC0gKHZvaWQpX2NvbW1pdERhdGE6
KE5TRGF0YSAqKWRhdGEKICAgICBhdXRvKiBkb2N1bWVudCA9IF9wcml2YXRlLT5jb3JlRnJhbWUt
PmRvY3VtZW50KCk7CiAgICAgZG9jdW1lbnQtPnNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhfcHJp
dmF0ZS0+c2hvdWxkQ3JlYXRlUmVuZGVyZXJzKTsKIAotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUt
PmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmNvbW1pdERhdGEoKGNvbnN0IHVpbnQ4X3QqKVtk
YXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApp
bmRleCBmYjI1ODNmZTk3MjY0YzczZWViMjNlYmI0ZDM5OTBiM2I4NGEwN2YzLi4xMjcwZTU3ZGQ5
NWIwZDAwMDNiNWU1Njc3ZDQ3NDJhMTI1NTJkODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCkBAIC02NDEsOSArNjQxLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlk
Q2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5n
dGgpOworICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhKTsKIAogICAgIC8vIElmIHRoZSBkb2N1
bWVudCBpcyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRp
bWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9hZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNo
b3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3
NjI+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMDk1YjI1MzVhNjg3NTQ3YmQ3ODg0
NmY5MDc2YWU2YzdkMDE2Mjk0OC4uNzkyNmZkMzY3MTgwOWU4Mzg0N2E0ODAzMWE4YjkwYzYzOGZh
ZjdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IFN0cmluZygpKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0
IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGJlMGU2MjA0NmE2NDc2YTFmMjUyZGU5OWU0ZjQ3MTAwN2JkYjk0YTUuLmNlMmQ5
MGUyODViODY1YmU0MmUzNDQzYmE0YWIzYThiZjNjZjRiZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMi0y
MiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIG1ha2UgU2hh
cmVkQnVmZmVyOjpjb3B5KCkgcmV0dXJuIGEgY29udGlndW91cyBTaGFyZWRCdWZmZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDYyMgorICAgICAg
ICByZGFyOi8vcHJvYmxlbS84NjgyOTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIxLTEyLTI2
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXVthMTF5XSBTdG9wIHNldHRpbmcgbWFuYWdlcy1kZXNjZW5kYW50cyBvbiB3ZWIgcHJvY2Vz
cyByb290IG9iamVjdCB3aXRoIEFUU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGYxMmI5ZjA4MzYwNTU4OTRjZDY1YTgy
M2Q1ZmY2ZTM0Yjk4YWQ1OTguLjA2NjlkMDdjNjRmOWRmNTQ5YzNlNTEwMmVkNjdiNjljYzI5NTQy
ZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRC
dWZmZXIuY3BwCkBAIC0zMDMsNiArMzAzLDE1IEBAIFRFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyVGVzdCwgcmVhZCkKICAgICBjaGVjayhidWlsZGVyLnRha2UoKSk7CiB9CiAKK1RFU1RfRihG
cmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weUlzQ29udGlndW91cykKK3sKKyAgICBFWFBF
Q1RfVFJVRShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLT5jb3B5KCktPmlzQ29udGlndW91cygpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCktPmNvcHko
KS0+aXNDb250aWd1b3VzKCkpOworICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAi
VGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7CisgICAgRVhQRUNUX1RSVUUoU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKS0+Y29weSgpLT5pc0NvbnRpZ3Vv
dXMoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShz
aW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpLT5jb3B5KCktPmlzQ29udGlndW91cygpKTsK
K30KKwogI2lmIEVOQUJMRShNSFRNTCkKIC8vIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIHVuaXQt
dGVzdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdGVtcGxhdGU8IHR5
cGVuYW1lIFQsIHNpemVfdCBOID4K
</data>
<flag name="commit-queue"
          id="473819"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448062</attachid>
            <date>2021-12-28 19:07:59 -0800</date>
            <delta_ts>2021-12-28 19:32:24 -0800</delta_ts>
            <desc>Patch for EWS testing (combined patch)</desc>
            <filename>bug-234713-20211229140756.patch</filename>
            <type>text/plain</type>
            <size>298267</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3MDk2ZjA2YzcyZmVh
MmZjMWUwMzk0MDIyMzg5MWVlZGJmZGM4MC4uOTMxOGRhMTcxNTUwZmNkYzg5MzYyNWQxMDczNjJm
MzdlZjc2NmE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzNCBAQAorMjAyMS0xMi0yNyAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIENvbnRlbnQgRmlsdGVy
aW5nIHNob3VsZCBiZSB1c2luZyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBjb3B5aW5nIGl0cyBk
YXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3
MTMKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODY5NDc0MzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgY29uc3RydWN0IHRo
ZSBOU0RhdGEgdXNlZCBieSBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcgorICAgICAgICBh
bmQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZnJvbSB0aGUgU2hhcmVkQnVmZmVyLgor
CisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4KKworICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50
RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiB0
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
Lmg6CisKKzIwMjEtMTItMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtp
bmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbW9kaWZ5IGFs
bCBkaWRSZWNlaXZlRGF0YSBhbmQgcmVsYXRlZCBtZXRob2RzIHNvIHRoYXQgdGhleSBubyBsb25n
ZXIKKyAgICAgICAgdXNlIHVpbnQ4X3QqL2ludCBhbmQgaW5zdGVhZCB1c2UgU2hhcmVkQnVmZmVy
LgorICAgICAgICBXZSBkbyB0aGUgc2FtZSBmb3IgYW55IGludGVybWVkaWFyaWVzIHVzZWQgYnkg
dGhlIHZhcmlvdXMgZGlkUmVjZWl2ZURhdGEKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorICAg
ICAgICBUaGlzIHdpbGwgZmFjaWxpdGF0ZSBtb3ZpbmcgbmV0d29ya2luZyBvZmYgdGhlIG1haW4g
dGhyZWFkIGluIHRoZSBHUFUKKyAgICAgICAgcHJvY2VzcyBhbmQgYWxsb3dzIHRvIHJlbW92ZSBz
ZXZlcmFsIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgY29waWVzIGF0IHRoZQorICAgICAgICBwcm9j
ZXNzIGJvdW5kYXJpZXMuCisgICAgICAgIFdlIGNhbiBub3cgY29uc2lkZXIgdHJhbnNmZXIgdGhl
IHVuZGVybHlpbmcgU2hhcmVkTWVtb3J5IGNyZWF0ZWQgaW4KKyAgICAgICAgdGhlIG5ldHdvcmsg
cHJvY2VzcyBhbGwgdGhlIHdheSB0byB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgRmx5LWJ5
IGZpeDogY2hhbmdlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdHlwZSB0byBTaGFyZWRCdWZmZXIg
d2hlbiBhcHByb3ByaWF0ZS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhh
dmlvdXIuIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaExvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpC
b2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3Bv
bnNlOjpjb25zdW1lQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6CisgICAgICAgICogZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURh
dGFJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpm
aW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRp
bnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Ojpjb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb21taXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlw
YXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3Jp
dGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVs
ZW1lbnRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lv
bmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6Cisg
ICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjp1cGRhdGVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFk
ZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOiBVcGRhdGUgZHVlIHRvIERh
dGFTZWdtZW50VmVjdG9yRW50cnk6OnNlZ21lbnQgYmVpbmcgY29uc3QKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIg
Y29uc3QpOiBBZGQgY29udmVuaWVuY2UgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0
YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oOiBNYWtlIERhdGFTZWdtZW50VmVjdG9yRW50cnk6OnNlZ21lbnQg
Y29uc3QuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2
ZWREYXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxTdHJlYW06OnRyeVRvUmVjZWl2ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
aDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisyMDIxLTEyLTI4ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmVkQnVmZmVyOjp0YWtl
RGF0YSgpIGlzIHN0aWxsIGRhbmdlcm91cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NzI0CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2OTU3MjMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxh
ciB0byBidWcgMjI4MTYxOyBob3dldmVyIHdlIG9ubHkgdGFrZSB0aGUgY29udGVudCBvZiB0aGUg
RGF0YVNlZ21lbnQKKyAgICAgICAgaWYgaXRzIHJlZmNvdW50IGlzIDEuCisgICAgICAgIERhdGFT
ZWdtZW50cyBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBTaGFyZWRCdWZmZXIgYW5kIHNv
IHdlIGNhbid0CisgICAgICAgIGFzc3VtZSB0aGF0IHdoZW4gdGhlIFNoYXJlZEJ1ZmZlciByZWZj
b3VudCBpcyAxIHRoYXQgaXQgaXMgc2FmZSB0byB1c2UKKyAgICAgICAgdGhlIERhdGFTZWdtZW50
LgorICAgICAgICBUaGlzIHVzZSBvZiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhIHdpbGwgbmVl
ZCB0byBiZSByZXZpc2l0ZWQgd2hlbgorICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHVzZWQgYWNy
b3NzIGRpZmZlcmVudCB0aHJlYWRzIGFzIHRoZSBvcGVyYXRpb24gaXNuJ3QKKyAgICAgICAgdGhy
ZWFkLXNhZmUuCisKKyAgICAgICAgQVBJIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OnRha2VEYXRhKToKKworMjAyMS0xMi0yMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyIHNob3VsZCBiZSB1c2lu
ZyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBEYXRhU2VnbWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQxCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzg1ODU0MjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGEgU2hhcmVkQnVmZmVyJ3MgaW1wbGVtZW50YXRp
b24gZGV0YWlscyBhbmQgbm90CisgICAgICAgIGJlIHVzZWQgb3V0c2lkZSBTaGFyZWRCdWZmZXIn
cyBjb2RlLgorICAgICAgICBIaXN0b3JpY2FsbHksIHVzaW5nIHRoZSBpbm5lciBEYXRhU2VnbWVu
dCB3YXMgcmVxdWlyZWQgYXMgaXQgd2FzIHRocmVhZAorICAgICAgICBzYWZlIHdoaWxlIFNoYXJl
ZEJ1ZmZlciB3YXNuJ3Q6IFRoaXMgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLgorICAgICAgICBTaGFy
ZWRCdWZmZXIgYW5kIERhdGFTZWdtZW50IGFyZSBzZW1hbnRpY2FsbHkgdmVyeSBzaW1pbGFyLCBz
byB0aGlzIGlzCisgICAgICAgIG1vc3RseSBhIGZpbmQvcmVwbGFjZSBjaGFuZ2UuCisgICAgICAg
IEZsYXR0ZW5pbmcgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaXMgc3RpbGwgcmVxdWlyZWQg
YXMgbW9zdCBkZWNvZGVycworICAgICAgICByZXF1aXJlIHJlYWRpbmcgdGhlIHJhdyBieXRlcy4K
KworICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCYWNraW5nU3RvcmU6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
YWNraW5nU3RvcmU6OkltYWdlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVZJRklt
YWdlUmVhZGVyOjpkZWNvZGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVh
ZGVyOjpyZWFkVWludDE2KToKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpyZWFk
VWludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpzZXREYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAg
ICAgICAgKEdJRkltYWdlUmVhZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlBFR0ltYWdlUmVhZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5H
SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURl
Y29kZXI6OmRlY29kZSk6CisKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBtYWtlIFNoYXJlZEJ1ZmZlcjo6Y29weSgpIHJldHVybiBhIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzQ2MjIKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODY4Mjk1MjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBtYWtlIFNoYXJl
ZEJ1ZmZlcjo6Y29weSgpIHJldHVybiBhIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyCisKKyAgICAg
ICAgQVBJIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3Qp
OgorCiAyMDIxLTEyLTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXVthMTF5XSBUZXN0IGFjY2Vzc2liaWxpdHkvYXJpYS1pbmhlcml0
cy1wcmVzZW50YXRpb25hbC5odG1sIGlzIGZhaWxpbmcgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBj
ZTI3ZTE0YzY5ZmQyNDRhZTdiMjQ0NWUzZTQ5ODdjNmY3MWJiMjgzLi4xYWE5NDE2NDk1NWFkMTA3
YzE2YzMzYzFjZmY2NmRjOGEzNzM4NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAy
MS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhh
dmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMg
dXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3Vy
Y2U6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
cjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
ZW5kQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZyb21QcmVsb2Fk
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZv
cm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
Rm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3Vy
Y2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
U3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1h
bnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJl
ZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmg6CisKIDIwMjEtMTItMjYgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgV2ViS2l0L0NvY29hQ29sb3IuaCB3
aXRoIFdlYkNvcmUvQ29sb3JDb2NvYS5oLCBub3QgY29uZnVzaW5nIGF0IGFsbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwppbmRleCA1NzY4MWIyMWE3MzQzOWU5MGJmMjFiYTI0NDk1ODI1OTdlMDE5OTgyLi5l
NjgzYmZkNTJiODVlOGU1MDM1Mjc3MDdjYTRkY2I3OTI1YmI2NjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQg
cmVsYXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6
Ly84NDc0NDY4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOgorCiAyMDIxLTEyLTE0ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZl
ciBjbGFzc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGVmOTQ5ZGU2MDY4OTZj
YTk5M2VkZjhmMzRkOWMxYjMwYTViNjU0YWIuLjhlMWYxMzZlNWRhZGZmYzEwNGRkYWIyNDQ1YzVh
ZGZkM2I5NjdmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAyMS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBh
Y3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0
dGVkTG9hZCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xv
YWRlckNsaWVudCk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1b
V2ViRnJhbWUgX2NvbW1pdERhdGE6XSk6CisKIDIwMjEtMTItMjIgIE1pY2hhZWwgU2Fib2ZmICA8
bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IFdlYktpdCBCdWlsZCBpc3N1ZXMgd2hl
biB1c2luZyBzeXN0ZW0gY29udGVudCBwYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggMGI3OGY1Y2UxMGE5MmM1Zjg5N2FiODE2OTAxZTk1OTFiODY5MWMzOC4uNDYwMDlkYzg1YTM1
M2MzZWQyZjhmOTM2MTkwZjdkMDQzODhkY2UyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVs
YXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84
NDc0NDY4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMjEtMTItMjEgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGEgVUkg
ZGVsZWdhdGUgbWV0aG9kIHRvIGRlY2lkZSBob3cgdG8gaGFuZGxlIGRldGVjdGVkIG1vZGFsIGNv
bnRhaW5lcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKaW5kZXggYzIzMWYyMDdkYTI1Y2QyYTE1ODYwZDI4ZGIzY2UxN2U4NTc1Nzdk
NS4uMTdmMjkzMTkxNDM1MGRmZWY0OTA5NTRjMmI5YTk5NjQwYjg2Y2MxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTMy
MCwxMyArMzIwLDE0IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgfQogfQogCi12b2lk
IEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
c2l6ZSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKKyAgICBXVEZMb2dBbHdheXMoIiVzIEZldGNoQm9keUNvbnN1bWVyOjphcHBl
bmQ6IHNpemU6JWQiLCBfX2Z1bmNfXywgaW50KGJ1ZmZlci5zaXplKCkpKTsKICAgICBpZiAobV9z
b3VyY2UpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0
ZShkYXRhLCBzaXplKSk7CisgICAgICAgIG1fc291cmNlLT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVh
dGVBcnJheUJ1ZmZlcigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2J1ZmZlci5h
cHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9idWZmZXIuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuaAppbmRleCA4NzFkMmMwODYzMzFhOTgyOTRhMTY2YTRiNDJlMzE4NGUwMzc3NzJiLi5k
NDY1MWIyM2RhNzFjZjhmNGM4Yzk5NjcxZDIyN2ViNWFjOGQyYTdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC00Nyw3ICs0Nyw3
IEBAIHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IEZldGNoQm9keUNvbnN1bWVyKFR5cGUgdHlwZSkg
OiBtX3R5cGUodHlwZSkgeyB9CiAKLSAgICB2b2lkIGFwcGVuZChjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAKICAg
ICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAhIW1fYnVmZmVyOyB9CiAgICAgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdl
dCgpLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwCmluZGV4IGE2MzMxMDhiNTQ3NzgzOTNmYzU0NzUwMDMyYTlhMmU4NmFkZTdmY2Mu
LmVkZWQzODM3ZjgzZDc1ZjU5MDY2NzFhMTc0M2FiOWZlYTI5MDYyNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC0yOTgsMTEgKzI5
OCwxMSBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9iTG9hZGluZ0ZhaWxlZCgpCiAgICAgZmlu
aXNoQmxvYkxvYWRpbmcoKTsKIH0KIAotdm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBGZXRjaEJvZHlPd25lcjo6Ymxv
YkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIEFTU0VSVChkYXRhKTsK
KyAgICBXVEZMb2dBbHdheXMoIiVzIGJsb2JDaHVuazogc2l6ZTolZCIsIF9fZnVuY19fLCBpbnQo
YnVmZmVyLnNpemUoKSkpOwogICAgIEFTU0VSVChtX3JlYWRhYmxlU3RyZWFtU291cmNlKTsKLSAg
ICBpZiAoIW1fcmVhZGFibGVTdHJlYW1Tb3VyY2UtPmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZShkYXRhLCBzaXplKSkpCisgICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1
ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKSkKICAgICAgICAgc3RvcCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKaW5kZXgg
NWNhN2UzOTZjNDIyNzAxOTM1NmIwODA2ZTRlZWRiZTk1ZTkyOGY0Yi4uODFmZDA2ZWNkZDZmYzM4
YzllODU5ODdjZWJkZmMxNmRkODZmM2M5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZldGNo
TG9hZGVyLmgiCiAjaW5jbHVkZSAiRmV0Y2hMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMTAwLDcgKzEwMSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICAv
LyBCbG9iIGxvYWRpbmcgcm91dGluZXMKLSAgICB2b2lkIGJsb2JDaHVuayhjb25zdCB1aW50OF90
Kiwgc2l6ZV90KTsKKyAgICB2b2lkIGJsb2JDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImKTsKICAg
ICB2b2lkIGJsb2JMb2FkaW5nU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBibG9iTG9hZGluZ0ZhaWxl
ZCgpOwogICAgIHZvaWQgZmluaXNoQmxvYkxvYWRpbmcoKTsKQEAgLTExMyw3ICsxMTQsNyBAQCBw
cml2YXRlOgogCiAgICAgICAgIC8vIEZldGNoTG9hZGVyQ2xpZW50IEFQSQogICAgICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0gICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUp
IGZpbmFsIHsgb3duZXIuYmxvYkNodW5rKGRhdGEsIHNpemUpOyB9CisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpIGZpbmFsIHsgb3duZXIuYmxv
YkNodW5rKGJ1ZmZlcik7IH0KICAgICAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRTdWNjZWVkKCkgZmluYWwgeyBvd25lci5ibG9i
TG9hZGluZ1N1Y2NlZWRlZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHAKaW5kZXggMDNmODliNjFjYTVmN2M3MTc2YjlkODhjZDEzNjYwZTg2Yjdh
MjU0OC4uZDM4ZDhkZmZhNmU5NjUzNThiY2IyODVjYjhjN2Q5ZGEzMWI0ZTdhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAKQEAgLTE0OCwxMyArMTQ4
LDE0IEBAIHZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJl
c3BvbnNlKHJlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogdmFsdWUsIGludCBzaXplKQordm9pZCBGZXRjaExvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CisgICAgV1RGTG9n
QWx3YXlzKCIlcyBkaWRSZWNlaXZlRGF0YTogc2l6ZTolZCIsIF9fZnVuY19fLCBpbnQoYnVmZmVy
LnNpemUoKSkpOwogICAgIGlmICghbV9jb25zdW1lcikgewotICAgICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlRGF0YSh2YWx1ZSwgc2l6ZSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
KGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jb25zdW1lci0+YXBwZW5k
KHZhbHVlLCBzaXplKTsKKyAgICBtX2NvbnN1bWVyLT5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9p
ZCBGZXRjaExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggNDYxMmQw
ZTBlM2E3ZWZlMzA2MDM5NmIwZDc1YTJmYTNiYzRlZGRhZC4uNWVlYWVmODJkMWRmM2VmY2VkMjE0
MDAzZGY1MTg4ODcwMzZmOTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hMb2FkZXIuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQgQVBJLgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAg
dm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIHVzZVN0ckxlbikg
ZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmll
cikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5o
CmluZGV4IGZlZDNlNWVhZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODkuLjEwOWUwOGVj
ZjdhNDdlN2MwMzdlMzJkY2FhY2FiODZjODFjMThkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3Qg
dWludDhfdCosIHNpemVfdCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4
IDBlN2IwMDVlODlhM2QxNzQwYjFjZjlhZGZmOGI0ZjJmMmZjNDNjOTkuLjExZTc0MDFhNjA3MGNl
ZGQwZTRkNWVjODFiN2ZmOGU2ZjE3NjA3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApAQCAtMzYyLDEyICszNjIsMTMgQEAgdm9pZCBGZXRj
aFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzb3UKICAgICAgICAgcmVzcG9uc2VDYWxsYmFjayhtX3Jlc3BvbnNlKTsKIH0K
IAotdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgV1RG
TG9nQWx3YXlzKCIlcyBkaWRSZWNlaXZlRGF0YTogc2l6ZTolZCIsIF9fZnVuY19fLCBpbnQoYnVm
ZmVyLnNpemUoKSkpOwogICAgIEFTU0VSVChtX3Jlc3BvbnNlLm1fcmVhZGFibGVTdHJlYW1Tb3Vy
Y2UgfHwgbV9jb25zdW1lRGF0YUNhbGxiYWNrKTsKIAogICAgIGlmIChtX2NvbnN1bWVEYXRhQ2Fs
bGJhY2spIHsKLSAgICAgICAgU3BhbiBjaHVuayB7IGRhdGEsIHNpemUgfTsKKyAgICAgICAgU3Bh
biBjaHVuayB7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfTsKICAgICAgICAgbV9jb25z
dW1lRGF0YUNhbGxiYWNrKCZjaHVuayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNzUs
NyArMzc2LDcgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICBhdXRvJiBzb3VyY2UgPSAq
bV9yZXNwb25zZS5tX3JlYWRhYmxlU3RyZWFtU291cmNlOwogCiAgICAgaWYgKCFzb3VyY2UuaXNQ
dWxsaW5nKCkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5ib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQo
ZGF0YSwgc2l6ZSk7CisgICAgICAgIG1fcmVzcG9uc2UuYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5k
KGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM4Myw3ICszODQsNyBAQCB2
b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICBzdG9wKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgaWYgKCFzb3VyY2UuZW5xdWV1ZShBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRh
dGEsIHNpemUpKSkgeworICAgIGlmICghc291cmNlLmVucXVldWUoYnVmZmVyLnRyeUNyZWF0ZUFy
cmF5QnVmZmVyKCkpKSB7CiAgICAgICAgIHN0b3AoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTQ2Nyw3ICs0NjgsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OnNldEJvZHlEYXRhKFJlc3Bv
bnNlRGF0YSYmIGRhdGEsIHVpbnQ2NF90IGJvZHlTaXplV2l0aFBhZGRpbgogCiB2b2lkIEZldGNo
UmVzcG9uc2U6OmNvbnN1bWVDaHVuayhSZWY8SlNDOjpVaW50OEFycmF5PiYmIGNodW5rKQogewot
ICAgIGJvZHkoKS5jb25zdW1lcigpLmFwcGVuZChjaHVuay0+ZGF0YSgpLCBjaHVuay0+Ynl0ZUxl
bmd0aCgpKTsKKyAgICBib2R5KCkuY29uc3VtZXIoKS5hcHBlbmQoU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY2h1bmstPmRhdGEoKSwgY2h1bmstPmJ5dGVMZW5ndGgoKSkpOwogfQogCiB2b2lkIEZldGNo
UmVzcG9uc2U6OmNvbnN1bWVCb2R5QXNTdHJlYW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCA2YjA1MDVkODhiMTMyZTI4Y2I5NTRhYjlhMGU3
ZWZlODEzZjcwMmFmLi5mOTkyNDljMzlmOWQwYjJmYzg3YTJmOWM0NmQ3OTM5Mjg4ODE0YmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtMTQz
LDcgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsOwog
ICAgICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7
Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHNpemVfdCkgZmlu
YWw7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmlu
YWw7CiAKICAgICAgICAgRmV0Y2hSZXNwb25zZSYgbV9yZXNwb25zZTsKICAgICAgICAgTm90aWZp
Y2F0aW9uQ2FsbGJhY2sgbV9yZXNwb25zZUNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCmluZGV4
IDI3YTZkNzAzMzRjYTMyMDZhOTRlOTE5OTQzMzYzN2M0YTMwNTJlN2QuLjMzYWRkNGI0ZTlmZmU1
YzAyNmE5OThiNTA3MzZkNzc1Yzk1ODE0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKQEAgLTE3Nywx
MCArMTc3LDExIEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzCiAKIC8vIE1BUks6IC0gQ2FjaGVk
UmF3UmVzb3VyY2VDbGllbnQKIAotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgV1RGTG9nQWx3
YXlzKCIlcyBkYXRhUmVjZWl2ZWQ6IHNpemU6JWQiLCBfX2Z1bmNfXywgaW50KGJ1ZmZlci5zaXpl
KCkpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJj
ZSk7Ci0gICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBw
ZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmgKaW5kZXggY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZS4u
MGQzYmRiNzQ5ZDdhMzM2OGIzY2E2OGMyMTczMTYwNTkxNTQ5ZDFjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5o
CkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIGZpbmFsOwogCiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgb3ZlcnJp
ZGVzLgotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogCiAgICAgLy8gTW9kZWxQbGF5ZXJDbGllbnQgb3ZlcnJpZGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCmluZGV4IGQ1
MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVlYWM4ZmY4MzhhMzkuLmZlZTk4ODQyMjFiYjQzZThj
YzA2MmVhYmNkMGE5OWVjNTRjMDM0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKQEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3VyY2U7CiBjbGFzcyBSZWFkYWJsZVN0cmVh
bTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFt
U2luayA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFtU2luaz4gewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggYjdmNzVl
ZGEzYjIzM2IxOWIyMGVkNzA0Mjg5NDliYjMzNTg5OGU4MS4uYzkxYmIyZjZkZjMyMThlNDU4ODVk
MmJlZWE1MDcyNWQ3OTMzNmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0
UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTE2MywxNiArMTY0LDE1IEBAIHZvaWQg
RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyCiAgICAgICAgIG1fY2xpZW50LT5kaWRTdGFydExvYWRpbmcoKTsK
IH0KIAotdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7Ci0gICAgQVNTRVJUKGRh
dGEpOwotICAgIEFTU0VSVChkYXRhTGVuZ3RoID4gMCk7Ci0KKyAgICBBU1NFUlQoYnVmZmVyLnNp
emUoKSk7CisgICAgV1RGTG9nQWx3YXlzKCIlcyBkaWRSZWNlaXZlRGF0YTogJWQgYnl0ZXMiLCBf
X2Z1bmNfXywgaW50KGJ1ZmZlci5zaXplKCkpKTsKICAgICAvLyBCYWlsIG91dCBpZiB3ZSBhbHJl
YWR5IGVuY291bnRlcmVkIGFuIGVycm9yLgogICAgIGlmIChtX2Vycm9yQ29kZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaW50IGxlbmd0aCA9IGRhdGFMZW5ndGg7CisgICAgaW50IGxlbmd0aCA9
IGJ1ZmZlci5zaXplKCk7CiAgICAgdW5zaWduZWQgcmVtYWluaW5nQnVmZmVyU3BhY2UgPSBtX3Rv
dGFsQnl0ZXMgLSBtX2J5dGVzTG9hZGVkOwogICAgIGlmIChsZW5ndGggPiBzdGF0aWNfY2FzdDxs
b25nIGxvbmc+KHJlbWFpbmluZ0J1ZmZlclNwYWNlKSkgewogICAgICAgICAvLyBJZiB0aGUgYnVm
ZmVyIGhhcyBoaXQgbWF4aW11bSBzaXplLCBpdCBjYW4ndCBiZSBncm93biBhbnkgbW9yZS4KQEAg
LTE4MSw3ICsxODEsNyBAQCB2b2lkIEZpbGVSZWFkZXJMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIGlmIChtX3ZhcmlhYmxlTGVuZ3RoKSB7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0ZXMgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGF0YUxlbmd0aCk7CisgICAgICAgICAgICB1bnNpZ25lZCBuZXdMZW5ndGggPSBtX3RvdGFsQnl0
ZXMgKyBidWZmZXIuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKG5ld0xlbmd0aCA8IG1fdG90YWxC
eXRlcykgewogICAgICAgICAgICAgICAgIGZhaWxlZChOb3RSZWFkYWJsZUVycm9yKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkK
ICAgICBpZiAobGVuZ3RoIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIG1lbWNweShzdGF0
aWNfY2FzdDxjaGFyKj4obV9yYXdEYXRhLT5kYXRhKCkpICsgbV9ieXRlc0xvYWRlZCwgZGF0YSwg
bGVuZ3RoKTsKKyAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0YS0+ZGF0YSgp
KSArIG1fYnl0ZXNMb2FkZWQsIGJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7CiAgICAgbV9ieXRlc0xv
YWRlZCArPSBsZW5ndGg7CiAKICAgICBtX2lzUmF3RGF0YUNvbnZlcnRlZCA9IGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuaAppbmRleCA1MzljMjMwNGE4MmU2
M2FhZGZlMmM1NjdjOThkMGI4YzY4N2E4ZTlmLi5iN2U1YjQwNTdmYjIwNmZmMzIzMTU1Y2MwZjE1
MDJmY2EyMGQyNjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
aApAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXgg
NWM1YmIyYWVhODM5OTE4YjA2OTc3NTg4MWNlM2EzNjlhNDI4ZTViOS4uNmZlYmZmZDkyZDQ1NzZi
MmRiNzQ1YWJiMmQ3YTM3ZmUwOGE3OWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTYxNiwxMCArNjE2LDEy
IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxv
YWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50CiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVj
ZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShpZGVudGlmaWVyLCBkb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKKyAgICBXVEZM
b2dBbHdheXMoIiVzIGRpZFJlY2VpdmVEYXRhOiBzaXplOiVkIGVuY29kZWREYXRhTGVuZ3RoOiVk
IiwgX19mdW5jX18sIGludChidWZmZXIuc2l6ZSgpKSwgZW5jb2RlZERhdGFMZW5ndGgpOworCiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5l
dHdvcmtBZ2VudCgpKQotICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50
aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbmV0
d29ya0FnZW50LT5kaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCAmYnVmZmVyLCBidWZmZXIuc2l6
ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJp
Y3MsIFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBkMjk1NzgxMGQ4
MzgyYzkzNTFkNWE5M2YxNDRhZWQxNDkzYmNjNjUxLi44MmFjY2VkMjBjZmQ1MTMxYjI1MDJmMDk5
YTljNGZhMmZkZDYxNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0xOTMsMTMgKzE5MywxMyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKFBhZ2UmLCBEb2N1
bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2
ZVJlc291cmNlUmVzcG9uc2UoRnJhbWUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVyKik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXImLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpOwotICAgIHN0YXRp
YyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3Ro
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShGcmFtZSosIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIq
LCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJl
c291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBE
b2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogCiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEo
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZUVycm9yJik7CiAKQEAgLTQxNCw3ICs0MTQsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIERvY3VtZW50TG9hZGVyKiwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
VGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKTsKLSAgICBzdGF0
aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgc3RhdGljIHZvaWQgZGlk
RmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNv
dXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlcios
IGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUlN5bmNo
cm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsKQEAgLTEwODIsMTcgKzEwODIsMTcg
QEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFk
YWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW4KICAgICAgICAgZGlkUmVjZWl2ZVRocmVhZGFibGVM
b2FkZXJSZXNwb25zZUltcGwoKmFnZW50cywgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLCBpZGVu
dGlmaWVyKTsKIH0KICAgICAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byog
YWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhmcmFtZSkpCi0gICAgICAgIGRpZFJlY2VpdmVE
YXRhSW1wbCgqYWdlbnRzLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqYWdlbnRzLCBpZGVudGlmaWVy
LCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYgZ2xvYmFsU2NvcGUsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUm
IGdsb2JhbFNjb3BlLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KHZvaWQoKSk7Ci0gICAgZGlkUmVjZWl2ZURhdGFJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMoZ2xv
YmFsU2NvcGUpLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBkYXRhTGVuZ3RoKTsKKyAg
ICBkaWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyhnbG9iYWxTY29wZSksIGlk
ZW50aWZpZXIsIGJ1ZmZlciwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2Fk
ZXIqIHJlc291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggMzliMDExY2YwNmY3ZjM4NTMyNDNlMGE3NjNhM2Ix
ZDQ1NDkwNDE0OS4uYjM0MWM0M2EwNDJkMWIwNGQ5ZmU0MWJlZGI0MWE4YjkyMDIxZWIzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
CkBAIC05MCwxMCArOTAsMTEgQEAgc2l6ZV90IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgp
OwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiBkYXRhKQogewogICAgIEFTU0VSVCghaGFzQ29udGVudCgpKTsKLSAgICBtX2RhdGFCdWZmZXIu
YXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIFdURkxvZ0Fsd2F5cygiJXMgZGlkUmVjZWl2
ZURhdGE6IHNpemU6JWQiLCBfX2Z1bmNfXywgaW50KGRhdGEuc2l6ZSgpKSk7CisgICAgbV9kYXRh
QnVmZmVyLmFwcGVuZChkYXRhKTsKIH0KIAogdW5zaWduZWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6ZGVjb2RlRGF0YVRvQ29udGVudCgpCkBAIC0yMjEsOCArMjIyLDkgQEAg
c3RhdGljIGJvb2wgc2hvdWxkQnVmZmVyUmVzb3VyY2VEYXRhKGNvbnN0IE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGEmIHIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpt
YXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhf
dCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpCitOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEo
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKKyAg
ICBXVEZMb2dBbHdheXMoIiVzIG1heWJlQWRkUmVzb3VyY2VEYXRhOiBzaXplOiVkIiwgX19mdW5j
X18sIGludChkYXRhLnNpemUoKSkpOwogICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0g
cmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiAgICAgaWYgKCFyZXNvdXJjZURh
dGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjMwLDE1ICsyMzIsMTUgQEAgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6
Om1heWJlQWRkUmVzb3VyY2UKICAgICBpZiAoIXNob3VsZEJ1ZmZlclJlc291cmNlRGF0YSgqcmVz
b3VyY2VEYXRhKSkKICAgICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKIAotICAgIGlmIChyZXNv
dXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRhdGFMZW5ndGggPiBtX21heGltdW1TaW5nbGVSZXNv
dXJjZUNvbnRlbnRTaXplKQorICAgIGlmIChyZXNvdXJjZURhdGEtPmRhdGFMZW5ndGgoKSArIGRh
dGEuc2l6ZSgpID4gbV9tYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSkKICAgICAgICAg
bV9jb250ZW50U2l6ZSAtPSByZXNvdXJjZURhdGEtPmV2aWN0Q29udGVudCgpOwogICAgIGlmIChy
ZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0ZWQoKSkKICAgICAgICAgcmV0dXJuIHJlc291cmNl
RGF0YTsKIAotICAgIGlmIChlbnN1cmVGcmVlU3BhY2UoZGF0YUxlbmd0aCkgJiYgIXJlc291cmNl
RGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7CisgICAgaWYgKGVuc3VyZUZyZWVTcGFjZShkYXRh
LnNpemUoKSkgJiYgIXJlc291cmNlRGF0YS0+aXNDb250ZW50RXZpY3RlZCgpKSB7CiAgICAgICAg
IG1fcmVxdWVzdElkc0RlcXVlLmFwcGVuZChyZXF1ZXN0SWQpOwotICAgICAgICByZXNvdXJjZURh
dGEtPmFwcGVuZERhdGEoZGF0YSwgZGF0YUxlbmd0aCk7Ci0gICAgICAgIG1fY29udGVudFNpemUg
Kz0gZGF0YUxlbmd0aDsKKyAgICAgICAgcmVzb3VyY2VEYXRhLT5hcHBlbmREYXRhKGRhdGEpOwor
ICAgICAgICBtX2NvbnRlbnRTaXplICs9IGRhdGEuc2l6ZSgpOwogICAgIH0KIAogICAgIHJldHVy
biByZXNvdXJjZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5oCmluZGV4IGRhYWU1ZmU0YTMxZTMxNTkzNjM3OTA0MjNmNWZiZDMzNzBjNWNk
MzkuLmM4Y2VkMTJhNjQwN2ZkY2Q1NzRlY2MyYTc4MTllZGU2NjM4MDNkYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0xMDgsNyAr
MTA4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNv
bnN0OwogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwotICAgICAgICB2b2lkIGFw
cGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgpOworICAgICAg
ICB2b2lkIGFwcGVuZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgICAgIHVuc2lnbmVk
IGRlY29kZURhdGFUb0NvbnRlbnQoKTsKIAogICAgICAgICBTdHJpbmcgbV9yZXF1ZXN0SWQ7CkBA
IC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VUeXBlKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSk7CiAg
ICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291cmNlQ29udGVudChjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQg
PSBmYWxzZSk7Ci0gICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBtYXliZUFkZFJlc291cmNlRGF0YShj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGRhdGFM
ZW5ndGgpOworICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRSZXNvdXJjZURhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWF5
YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lk
IGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNvdXJj
ZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDNjZWI0YjQ3ZjEwNjhhMGFm
ZWFmMDBmMTc5YzI4MDBjNDc2YmQ2YjEuLjZjNjFhMmJjNzcxMTMyOTM0YTNmNjNjNGY5ZGI0MDY1
YTM1ZjJlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTEyNCwxNSArMTI0LDE0IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0
L3BsYWluIl9zLCB0ZXh0RW5jb2RpbmcsIHVzZURldGVjdG9yKTsKICAgICB9CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVy
cmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGJvb2wgdXNlU3RyTGVuKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgaWYgKCFkYXRhTGVuZ3Ro
KQorICAgIFdURkxvZ0Fsd2F5cygiJXMgZGlkUmVjZWl2ZURhdGE6ICVkIGJ5dGVzIHVzZVN0ckxl
bjolZCIsIF9fZnVuY19fLCBpbnQoYnVmZmVyLnNpemUoKSksIHVzZVN0ckxlbik7CisgICAgICAg
IGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlm
IChkYXRhTGVuZ3RoID09IC0xKQotICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHN0cmxlbihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7Ci0KLSAgICAgICAgbV9yZXNwb25zZVRl
eHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGRhdGFMZW5ndGgpKTsKKyAgICAgICAg
c2l6ZV90IGRhdGFMZW5ndGggPSB1c2VTdHJMZW4gPyBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oYnVmZmVyLmRhdGEoKSkpIDogYnVmZmVyLnNpemUoKTsKKyAgICAgICAgbV9y
ZXNwb25zZVRleHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGRhdGFM
ZW5ndGgpKTsKICAgICB9CiAKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyKSBvdmVycmlkZQpAQCAtNTQ5LDkgKzU0OCw5IEBAIHZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
IGlkZW50aWZpCiAgICAgICAgICAgICBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEtPmhhc0NvbnRl
bnQoKSkKICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVu
dChyZXF1ZXN0SWQsIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5jb250ZW50KCksIHByZXZpb3VzUmVz
b3VyY2VEYXRhLT5iYXNlNjRFbmNvZGVkKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAocHJldmlv
dXNSZXNvdXJjZURhdGEtPmhhc0J1ZmZlcmVkRGF0YSgpKSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBwcmV2aW91c0J1ZmZlciA9IHByZXZpb3VzUmVzb3VyY2VEYXRhLT5idWZmZXIoKTsKLSAgICAg
ICAgICAgICAgICBwcmV2aW91c0J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291
cmNlRGF0YShyZXF1ZXN0SWQsIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgcHJldmlvdXNSZXNvdXJjZURhdGEtPmJ1ZmZlcigpLT5mb3JFYWNoU2VnbWVu
dEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAg
IFdURkxvZ0Fsd2F5cygiJXMgZGlkUmVjZWl2ZVJlc3BvbnNlOiAlZCBieXRlcyIsIF9fZnVuY19f
LCBpbnQoYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNE
YXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGJ1ZmZlcik7CiAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTU3MywyOCArNTcyLDMx
IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpCiAKICAgICAvLyBJZiB3ZSByZXZhbGlkYXRlZCB0
aGUgcmVzb3VyY2UgYW5kIGdvdCBOb3QgbW9kaWZpZWQsIHNlbmQgY29udGVudCBsZW5ndGggZm9s
bG93aW5nIGRpZFJlY2VpdmVSZXNwb25zZQogICAgIC8vIGFzIHRoZXJlIHdpbGwgYmUgbm8gY2Fs
bHMgdG8gZGlkUmVjZWl2ZURhdGEgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KLSAgICBpZiAoaXNO
b3RNb2RpZmllZCAmJiBjYWNoZWRSZXNvdXJjZSAmJiBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNp
emUoKSkKKyAgICBpZiAoaXNOb3RNb2RpZmllZCAmJiBjYWNoZWRSZXNvdXJjZSAmJiBjYWNoZWRS
ZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIiVzIGRpZFJl
Y2VpdmVSZXNwb25zZSBzZW5kaW5nIG51bGw6ICVkIGJ5dGVzIiwgX19mdW5jX18sIGludChjYWNo
ZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSkpOwogICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVu
dGlmaWVyLCBudWxscHRyLCBjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCk7CisgICAg
fQogfQogCi12b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIEluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFNoYXJlZEJ1ZmZlciogZGF0YSwgaW50IGV4cGVjdGVkRGF0YUxlbmd0aCwgaW50IGVu
Y29kZWREYXRhTGVuZ3RoKQogeworICAgIFdURkxvZ0Fsd2F5cygiJXMgZGlkUmVjZWl2ZURhdGE6
IHNpemU6JWQgZW5jb2RlZERhdGFMZW5ndGg6JWQiLCBfX2Z1bmNfXywgaW50KGRhdGEuc2l6ZSgp
KSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIGlmIChtX2hpZGRlblJlcXVlc3RJZGVudGlmaWVy
cy5jb250YWlucyhpZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHJl
cXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIudG9VSW50
NjQoKSk7CiAKICAgICBpZiAoZGF0YSkgewotICAgICAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPm1heWJl
QWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgICAgIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1f
cmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCAqZGF0YSk7CiAK
ICAgICAgICAgLy8gRm9yIGEgc3luY2hyb25vdXMgWEhSLCBpZiB3ZSBkaWRuJ3QgYWRkIGRhdGEg
dGhlbiB3ZSBjYW4gYXBwbHkgaXQgaGVyZSBhcyBiYXNlNjQgZW5jb2RlZCBjb250ZW50LgogICAg
ICAgICAvLyBPZnRlbiB0aGUgZGF0YSBpcyB0ZXh0IGFuZCB3ZSB3b3VsZCBoYXZlIGEgZGVjb2Rl
ciwgYnV0IGZvciBub24tdGV4dCB3ZSB3b24ndCBoYXZlIGEgZGVjb2Rlci4KICAgICAgICAgLy8g
U3luYyBYSFJzIG1heSBub3QgaGF2ZSBhIGNhY2hlZCByZXNvdXJjZSwgd2hpbGUgbm9uLXN5bmMg
WEhScyB1c3VhbGx5IHRyYW5zZmVyIGRhdGEgb3ZlciBvbiBjb21wbGV0aW9uLgogICAgICAgICBp
ZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSAmJiByZXNvdXJjZURhdGEgJiYgIXJlc291cmNl
RGF0YS0+aGFzQnVmZmVyZWREYXRhKCkgJiYgIXJlc291cmNlRGF0YS0+Y2FjaGVkUmVzb3VyY2Uo
KSkKLSAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVl
c3RJZCwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YSwgZGF0YUxlbmd0aCksIHRydWUpOworICAg
ICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBi
YXNlNjRFbmNvZGVUb1N0cmluZyhkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSksIHRydWUpOwog
ICAgIH0KIAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kYXRhUmVjZWl2ZWQocmVxdWVzdElk
LCB0aW1lc3RhbXAoKSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5kYXRhUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZXhw
ZWN0ZWREYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqKQpAQCAtMTI3MSw3ICsxMjcz
LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50
OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVy
bWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJsZSB0byBm
dWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9zKTsKIAotICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAgYXV0byBidWZm
ZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVyKQpAQCAtMTI5
Niw5ICsxMjk4LDkgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0
d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICB9CiAgICAgcmVzcG9u
c2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykpOwogICAgIHJl
c3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIHJl
c3BvbnNlLm1pbWVUeXBlKCkpOwotICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlLCBbbG9hZGVyLCBidWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkgbXV0YWJsZSB7
CisgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2FkZXIsIGJ1ZmZl
ciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0oKSB7CiAgICAgICAgIGlmIChidWZmZXItPnNpemUo
KSkKLSAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciks
IGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICAgICAg
bG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9h
ZFdob2xlUmVzb3VyY2UpOwogICAgICAgICBsb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29y
a0xvYWRNZXRyaWNzKCkpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA2YmNkODdkZGNk
OGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRhMTQxM2Q0Li43MmY0MjNmZjYxMjc3ZWVmNGJkMzU2MzI4
YzQ2ZDNiZDkxMzFmZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBE
b2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3RPZlR5cGUoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRl
ciosIFJlc291cmNlUmVxdWVzdCYsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6TG9hZFR5cGUp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIq
KTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IFNoYXJlZEJ1ZmZlciosIGludCBleHBlY3RlZERhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxv
YWRlciopOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZExv
YWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggNDMzMmQ2OTFi
YmY4MjZhN2M4N2VhODNhMzE3ZTk2MTE1YTIwNDk5My4uNmMzNDVhMzE0NzExYzFkNjAxODQzNWU1
Y2JhZDRjODMxN2U3ZDJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRl
bnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNw
cApAQCAtMTQ1LDE0ICsxNDUsMTUgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVy
UmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb24KICAgICByZXR1
cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAotYm9vbCBDb250ZW50RmlsdGVyOjpj
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
Citib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hh
cmVkQnVmZmVyJiBkYXRhKQogeworICAgIFdURkxvZ0Fsd2F5cygiJXMgY29udGludWVBZnRlckRh
dGFSZWNlaXZlZDogc2l6ZTolZCIsIF9fZnVuY19fLCBpbnQoZGF0YS5zaXplKCkpKTsKICAgICBS
ZWY8Q29udGVudEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAog
ICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9HKENvbnRl
bnRGaWx0ZXJpbmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICVkIGJ5dGVzIG9mIGRhdGEgZnJv
bSA8JXM+LlxuIiwgbGVuZ3RoLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOwotICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0
YSwgbGVuZ3RoXShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKLSAgICAg
ICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhLCBsZW5ndGgpOworICAgICAgICBMT0co
Q29udGVudEZpbHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRh
dGEgZnJvbSA8JXM+LlxuIiwgZGF0YS5zaXplKCksIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxC
bG9ja2VkKFtkYXRhID0gUmVmIHsgZGF0YSB9XShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRl
bnRGaWx0ZXIpIHsKKyAgICAgICAgICAgIGNvbnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhKTsKICAg
ICAgICAgfSk7CiAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFsbG93ZWQpCkBAIC0y
MzMsNyArMjM0LDcgQEAgdm9pZCBDb250ZW50RmlsdGVyOjpkZWxpdmVyUmVzb3VyY2VEYXRhKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSkKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWxs
b3dlZCk7CiAgICAgQVNTRVJUKHJlc291cmNlLmRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKICAgICBpZiAoYXV0byogcmVzb3VyY2VCdWZm
ZXIgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICBtX2NsaWVudC5kYXRhUmVj
ZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KS0+ZGF0YSgpLCByZXNvdXJjZUJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9jbGllbnQuZGF0
YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIocmVzb3VyY2VCdWZmZXItPm1ha2VDb250aWd1
b3VzKCkpOwogfQogCiBzdGF0aWMgY29uc3QgVVJMJiBibG9ja2VkUGFnZVVSTCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAppbmRleCA4YjZkZWZmZmFiODBmNWRhYzI1ODdlMzcx
YzAxODc5YjlmM2ZkZjc3Li42MGI0ZGExYTliMzM2OGMyZGZlY2ZmNDJiODlmMzU1OGU4MzMxYzMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogCiAgICAgYm9vbCBjb250aW51ZUFmdGVyV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICBib29sIGNvbnRpbnVlQWZ0
ZXJSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICBib29sIGNv
bnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCk7
CisgICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogICAgIGJvb2wgY29udGludWVBZnRlck5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJik7
CiAKICAgICBzdGF0aWMgYm9vbCBjb250aW51ZUFmdGVyU3Vic3RpdHV0ZURhdGFSZXF1ZXN0KGNv
bnN0IERvY3VtZW50TG9hZGVyJiBhY3RpdmVMb2FkZXIsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaAppbmRleCAyMTVj
MDRlYzk4OTVlOWYxZTZlMTQ3ZGE4MjA5MzAwOTg1MjM5NjIzLi5mYTdhZDMwMzlhMjA1ZTkwNTcx
MDhmM2M2ZjM5MjQxOWJjNDY0N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyQ2xpZW50LmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwor
Y2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiAKIGNsYXNzIENvbnRl
bnRGaWx0ZXJDbGllbnQgewpAQCAtNDEsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHJlZigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBjb25zdCA9IDA7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29u
c3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCBS
ZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3Zpc2lvbmFsTG9h
ZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMLCBTdWJz
dGl0dXRlRGF0YSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
CmluZGV4IDZiZjNhYzI5N2VjNmIyNjNhMDc4NjQwYmNmM2FkNTc3OWRiMGZlZGIuLmE2NjY3ZmM4
M2M2MDYxZjIwNjUxMjc4NTc0OGIyZTg5NjBkZmY2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNDgzLDggKzQ4Myw4IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmZpbmlzaGVkTG9hZGluZygpCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYW4gZW1wdHkgZG9j
dW1lbnQsIGl0IHdpbGwgbm90IGhhdmUgYWN0dWFsbHkgYmVlbiBjcmVhdGVkIHlldC4gQ29tbWl0
IGR1bW15IGRhdGEgc28gdGhhdAogICAgICAgICAvLyBEb2N1bWVudFdyaXRlcjo6YmVnaW4oKSBn
ZXRzIGNhbGxlZCBhbmQgY3JlYXRlcyB0aGUgRG9jdW1lbnQuCiAgICAgICAgIGlmICghbV9nb3RG
aXJzdEJ5dGUpCi0gICAgICAgICAgICBjb21taXREYXRhKDAsIDApOwotICAgICAgICAKKyAgICAg
ICAgICAgIGNvbW1pdERhdGEoU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSk7CisKICAgICAgICAgaWYg
KCFmcmFtZUxvYWRlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmcmFtZUxvYWRl
cigpLT5jbGllbnQoKS5maW5pc2hlZExvYWRpbmcodGhpcyk7CkBAIC0xMTU3LDggKzExNTcsOSBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lB
Y3Rpb24gcG9saWN5KQogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0ZURhdGEu
aXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1dG8gY29u
dGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwogICAgICAgICBpZiAoY29udGVudCAm
JiBjb250ZW50LT5zaXplKCkpIHsKLSAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hTZWdtZW50
KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVkKHNlZ21l
bnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICBjb250ZW50LT5mb3JFYWNo
U2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCIlcyBjb250aW51ZUFmdGVyQ29udGVudFBvbGljeTogc2l6ZTolZCIs
IF9fZnVuY19fLCBpbnQoYnVmZmVyLT5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBkYXRhUmVj
ZWl2ZWQoYnVmZmVyKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChp
c0xvYWRpbmdNYWluUmVzb3VyY2UoKSkKQEAgLTExNzEsOCArMTE3Miw5IEBAIHZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kp
CiAgICAgfQogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIiVzIGNvbW1pdExv
YWQ6IHNpemU6JWQiLCBfX2Z1bmNfXywgaW50KGRhdGEuc2l6ZSgpKSk7CiAgICAgLy8gQm90aCB1
bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0
ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3Rh
cnRpbmcgYSBuZXcgbG9hZCwgc28gcmV0YWluIHRlbXBvcmFyaWx5LgogICAgIFJlZlB0cjxGcmFt
ZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZS5nZXQoKSk7CkBAIC0xMTg2LDcgKzExODgsNyBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgpCiAgICAgaWYgKEFyY2hpdmVGYWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShyZXNwb25z
ZSgpLm1pbWVUeXBlKCkpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKLSAgICBmcmFtZUxvYWRl
ci0+Y2xpZW50KCkuY29tbWl0dGVkTG9hZCh0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIGZyYW1l
TG9hZGVyLT5jbGllbnQoKS5jb21taXR0ZWRMb2FkKHRoaXMsIGRhdGEpOwogCiAgICAgaWYgKGlz
TXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpKQogICAgICAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCku
ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKTsKQEAgLTEyMTUsOCArMTIxNyw5IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBzaG91bGRVc2VBY3RpdmVTZXJ2aWNlV29ya2VyRnJvbVBhcmVudChjb25z
dCBEb2N1bWVudCYgZG9jdW1lCiB9CiAjZW5kaWYKIAotdm9pZCBEb2N1bWVudExvYWRlcjo6Y29t
bWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRG9jdW1l
bnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogeworICAgIFdU
RkxvZ0Fsd2F5cygiJXMgY29tbWl0RGF0YTogZGF0YTolcCBzaXplOiVkIiwgX19mdW5jX18sIGRh
dGEuZGF0YSgpLCBpbnQoZGF0YS5zaXplKCkpKTsKICAgICBpZiAoIW1fZ290Rmlyc3RCeXRlKSB7
CiAgICAgICAgIG1fZ290Rmlyc3RCeXRlID0gdHJ1ZTsKICAgICAgICAgYm9vbCBoYXNCZWd1biA9
IG1fd3JpdGVyLmJlZ2luKGRvY3VtZW50VVJMKCksIGZhbHNlKTsKQEAgLTEzMTMsMjQgKzEzMTYs
MjYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRl
cywgc2l6ZV90IGxlbmd0aCkKICNlbmRpZgogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50
KCktPnBhcnNpbmcoKSk7Ci0gICAgbV93cml0ZXIuYWRkRGF0YShieXRlcywgbGVuZ3RoKTsKKyAg
ICBtX3dyaXRlci5hZGREYXRhKGRhdGEpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IG1fbWFpblJlc291cmNlKTsKLSAgICBkYXRh
UmVjZWl2ZWQoZGF0YSwgbGVuZ3RoKTsKKyAgICBXVEZMb2dBbHdheXMoIiVzIGRpZFJlY2VpdmVE
YXRhOiBzaXplOiVkIiwgX19mdW5jX18sIGludChidWZmZXIuc2l6ZSgpKSk7CisgICAgZGF0YVJl
Y2VpdmVkKGJ1ZmZlcik7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0
YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogeworICAgIFdURkxvZ0Fsd2F5
cygiJXMgZGlkUmVjZWl2ZURhdGE6IHNpemU6JWQiLCBfX2Z1bmNfXywgaW50KGJ1ZmZlci5zaXpl
KCkpKTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgaWYgKG1fY29udGVudEZp
bHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGRhdGEs
IGxlbmd0aCkpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5j
b250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKICNlbmRp
ZgogCi0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChsZW5ndGgpOworICAgIEFTU0VSVChi
dWZmZXIuZGF0YSgpKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7CiAgICAgQVNTRVJUKCFt
X3Jlc3BvbnNlLmlzTnVsbCgpKTsKIAogICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENGTmV0d29y
ayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRzIGFyZSBk
ZWZlcnJlZC4KQEAgLTEzNDAsMTIgKzEzNDUsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGF0
YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiAjZW5kaWYKIAogICAg
IGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKQotICAgICAgICBm
cmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEodGhpcywgbV9p
ZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZGF0YSwgbGVuZ3RoLCAtMSk7
CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hEaWRSZWNlaXZlRGF0
YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCAmYnVmZmVy
LCBidWZmZXIuc2l6ZSgpLCAtMSk7CiAKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYWlu
UmVzb3VyY2VEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoLCAtMSwgZmFsc2UpOworICAgIG1fYXBw
bGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChidWZmZXIsIC0xLCBm
YWxzZSk7CiAKICAgICBpZiAoIWlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpKQotICAgICAgICBj
b21taXRMb2FkKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGNvbW1pdExvYWQoYnVmZmVyKTsKIH0K
IAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0dXBGb3JSZXBsYWNlKCkKQEAgLTE2MTQsNyArMTYx
OSw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAgICAgbV93
cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAgQVNTRVJU
KG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNoaXZlRGF0
YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0RGF0YSgq
bV9wYXJzZWRBcmNoaXZlRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KQEAgLTIy
NTcsOCArMjI2Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9hZGluZ011
bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBsYWNlKCk7
CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1pdExvYWQo
cmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0YS0+c2l6
ZSgpKTsKKyAgICBjb21taXRMb2FkKG1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRpZ3VvdXMo
KSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpAQCAtMjQx
MCw5ICsyNDE0LDEwIEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmVucXVldWVTZWN1cml0eVBvbGlj
eVZpb2xhdGlvbkV2ZW50KFNlY3VyaXR5UG9saWN5VmlvbGF0aW9uCiB9CiAKICNpZiBFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkcpCi12b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWRUaHJv
dWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgc2l6ZSkKK3ZvaWQgRG9j
dW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsKKyAgICBX
VEZMb2dBbHdheXMoIiVzIGRpZFJlY2VpdmVEYXRhOiBzaXplOiVkIiwgX19mdW5jX18sIGludChi
dWZmZXIuc2l6ZSgpKSk7CisgICAgZGF0YVJlY2VpdmVkKGJ1ZmZlcik7CiB9CiAKIHZvaWQgRG9j
dW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50RmlsdGVyKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAppbmRleCBiNDY5ODFkNzUwYjI1YzFmZDMwN2YxNmZkYTc0YjdlZTMwNmE0YzM5Li4yOGUyOGE2
ODhhZTZiNTdlMGYwZDE0YzRlN2EwYzI1NThjYjY3ZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaApAQCAtODYsNiArODYsNyBAQCBjbGFzcyBQcmV2aWV3Q29udmVydGVy
OwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwog
Y2xhc3MgU1dDbGllbnRDb25uZWN0aW9uOworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3Vi
cmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdWJzdGl0dXRlUmVzb3VyY2U7CiBjbGFzcyBVc2VyQ29u
dGVudFVSTFBhdHRlcm47CkBAIC0zNzcsNyArMzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
ZXRUaW1pbmcoKSB7IG1fbG9hZFRpbWluZyA9IHsgfTsgfQogCiAgICAgLy8gVGhlIFdlYktpdCBs
YXllciBjYWxscyB0aGlzIGZ1bmN0aW9uIHdoZW4gaXQncyByZWFkeSBmb3IgdGhlIGRhdGEgdG8g
YWN0dWFsbHkgYmUgYWRkZWQgdG8gdGhlIGRvY3VtZW50LgotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29tbWl0RGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogCiAg
ICAgQXBwbGljYXRpb25DYWNoZUhvc3QmIGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiAg
ICAgQXBwbGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0aW9uQ2FjaGVIb3N0VW5sZXNzQmVpbmdE
ZXN0cm95ZWQoKSBjb25zdDsKQEAgLTQ3Nyw3ICs0NzgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBjb21taXRJZlJlYWR5KCk7CiAgICAgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihjb25zdCBS
ZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3QqLCBpbnQp
OworICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGNs
ZWFyTWFpblJlc291cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIHNldHVwRm9yUmVwbGFjZSgpOwpA
QCAtNDkzLDcgKzQ5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYWluUmVjZWl2ZWRFcnJvcihj
b25zdCBSZXNvdXJjZUVycm9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWRpcmVjdFJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikg
b3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQo
Q2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBvdmVycmlkZTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpIG92ZXJyaWRlOwpAQCAtNTAzLDEzICs1MDQsMTMgQEAgcHJpdmF0ZToKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICAvLyBDb250ZW50RmlsdGVyQ2xpZW50Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihj
b25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRhdGFS
ZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwog
ICAgIFdFQkNPUkVfRVhQT1JUIFJlc291cmNlRXJyb3IgY29udGVudEZpbHRlckRpZEJsb2NrKENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9ja1JlcXVlc3REZW5pZWRT
Y3JpcHQpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsTWFpblJlc291cmNl
TG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50
RmlsdGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgZmluYWw7
CiAjZW5kaWYKIAotICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwog
CiAgICAgYm9vbCBtYXliZUxvYWRFbXB0eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGI5YzQxMzUyNTY3NjI2NzIx
OTA3YWYzNjZkZmIxZGVjNzk0YzI0NzQuLjQzNDAyNGVlMGE5MGZmODUxNDNlYTU2YjA2NjA3NDhl
NDY3MjkxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCkBAIC00MzcsMjAgKzQzNywyMSBAQCB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBp
ZGVudAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9u
c2UpOwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiByZXNvdXJjZSwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgV1RG
TG9nQWx3YXlzKCIlcyBkYXRhUmVjZWl2ZWQ6IHNpemU6JWQiLCBfX2Z1bmNfXywgaW50KGJ1ZmZl
ci5zaXplKCkpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9y
ZXNvdXJjZSk7Ci0gICAgZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+aWRlbnRpZmllcigpLCBk
YXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5pZGVudGlm
aWVyKCksIGJ1ZmZlcik7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKIAogICAgIGlmIChtX2RlbGF5Q2FsbGJhY2tz
Rm9ySW50ZWdyaXR5Q2hlY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoYnVmZmVyLCBmYWxzZSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpm
aW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25z
dCBSZXNvdXJjZVRpbWluZyYgcmVzb3VyY2VUaW1pbmcpCkBAIC00OTMsMjAgKzQ5NCwxNCBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZgogCiAgICAgICAgIGlmIChvcHRpb25zKCkuZmlsdGVyaW5n
UG9saWN5ID09IFJlc3BvbnNlRmlsdGVyaW5nUG9saWN5OjpEaXNhYmxlKSB7CiAgICAgICAgICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKLSAg
ICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigp
KSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2Vn
bWVudCkgewotICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoc2Vn
bWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNv
dXJjZUJ1ZmZlcigpKQorICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgq
YnVmZmVyLCBmYWxzZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQocmVz
cG9uc2UudHlwZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlR5cGU6OkRlZmF1bHQpOwogCiAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIFJlc291cmNl
UmVzcG9uc2U6OmZpbHRlcihyZXNwb25zZSwgbV9vcHRpb25zLmNyZWRlbnRpYWxzID09IEZldGNo
T3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUgPyBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3Jt
RXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpObyA6IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBv
c2VBbGxIZWFkZXJzQ2hlY2s6OlllcykpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9
IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKLSAgICAgICAgICAgICAgICBidWZmZXIt
PmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkp
OwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1
dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKCpidWZmZXIsIGZhbHNlKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtNjY3LDExICs2NjIsOCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAg
IH0KICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogCi0gICAg
aWYgKGRhdGEpIHsKLSAgICAgICAgZGF0YS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21l
bnQpIHsKLSAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIHNlZ21lbnQuZGF0
YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICBpZiAoZGF0YSkK
KyAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgKmRhdGEpOwogCiAgICAgY29uc3Qg
YXV0byogdGltaW5nID0gcmVzcG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVs
bCgpOwogICAgIGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbVN5bmNo
cm9ub3VzTG9hZChyZXF1ZXN0VVJMLCBtX29wdGlvbnMuaW5pdGlhdG9yLCBsb2FkVGltaW5nLCB0
aW1pbmcgPyAqdGltaW5nIDogTmV0d29ya0xvYWRNZXRyaWNzOjplbXB0eU1ldHJpY3MoKSwgcmVz
cG9uc2UsIHNlY3VyaXR5T3JpZ2luKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IGYxZjQxZWU5MWQ2Y2U4YTFjNTg2MjM4MTdi
MzU4Zjc3NDY1MWUwYTQuLmM4NmJhN2Y0NTM4M2I2YzI4NjAwMzJkM2FlYmZiYTNlMDg2MDc2OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKQEAgLTg2LDE0ICs4NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgICAgIHZvaWQgZGF0YVNlbnQoQ2FjaGVkUmVzb3Vy
Y2UmLCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRl
OworICAgICAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAg
ICAgICAgdm9pZCBmaW5pc2hlZFRpbWluZ0ZvcldvcmtlckxvYWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBSZXNvdXJjZVRpbWluZyYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGlt
aW5nRm9yV29ya2VyTG9hZChjb25zdCBSZXNvdXJjZVRpbWluZyYpOwogICAgICAgICB2b2lkIG5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CiAKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRh
LCBpbnQgZGF0YUxlbmd0aCk7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcik7CiAgICAgICAgIHZvaWQgZGlk
RmFpbChSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAg
ICAgICAgdm9pZCBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCmluZGV4IGIwNDZlZjBk
ZTIwNDhlZmQ0MzE5NzAyNjIyYjk2YTdkZjJmZWFmYTcuLjQyN2UyYjQ4NTQ2ZjA2ZDQwNDZkOGVk
NTI3Y2NmZmU3MzBmNzA0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFdyaXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVy
LmNwcApAQCAtMjY0LDggKzI2NCw5IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OnJlcG9ydERhdGFS
ZWNlaXZlZCgpCiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVzb2x2ZVN0eWxlKERvY3VtZW50
OjpSZXNvbHZlU3R5bGVUeXBlOjpSZWJ1aWxkKTsKIH0KIAotdm9pZCBEb2N1bWVudFdyaXRlcjo6
YWRkRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRG9jdW1l
bnRXcml0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogeworICAgIFdURkxv
Z0Fsd2F5cygiJXMgYWRkRGF0YTogc2l6ZTolZCIsIF9fZnVuY19fLCBpbnQoZGF0YS5zaXplKCkp
KTsKICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoZXNlIHRvIEFTU0VSVCBvbmNlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQyNyBoYXMgYmVlbiByZXNvbHZlZC4KICAg
ICBSRUxFQVNFX0FTU0VSVChtX3N0YXRlICE9IFN0YXRlOjpOb3RTdGFydGVkKTsKICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6RmluaXNoZWQpIHsKQEAgLTI3Myw3ICsyNzQsNyBAQCB2b2lkIERv
Y3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3QgbGVuZ3Ro
KQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChtX3BhcnNlcik7Ci0gICAgbV9w
YXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBieXRlcywgbGVuZ3RoKTsKKyAgICBtX3BhcnNlci0+
YXBwZW5kQnl0ZXMoKnRoaXMsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKIHZvaWQg
RG9jdW1lbnRXcml0ZXI6Omluc2VydERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYgbWFy
a3VwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaAppbmRleCAwNzE3MmM5NzM5
ZWI1NzM1YmM4MWY4ZGVmMmZiOWIyODVjMjU0ZDBiLi5jMGEzNGE2YjdlOWNmZTk2NDMwNDVhOTVl
NzkzMjI1MjM2M2IyNjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuaApA
QCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIERvY3VtZW50UGFyc2VyOwogY2xhc3MgRnJhbWU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCiBjbGFzcyBEb2N1bWVudFdyaXRlciB7CkBAIC00
Nyw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYmVnaW4oKTsKICAgICBib29sIGJlZ2lu
KGNvbnN0IFVSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dPYmplY3RBdmFpbGFibGUgPSB0cnVlLCBE
b2N1bWVudCogb3duZXJEb2N1bWVudCA9IG51bGxwdHIpOwotICAgIHZvaWQgYWRkRGF0YShjb25z
dCB1aW50OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgaW5zZXJ0RGF0YVN5bmNocm9ub3VzbHkoY29uc3Qg
U3RyaW5nJik7IC8vIEZvciBhbiBpbnRlcm5hbCB1c2Ugb25seSB0byBwcmV2ZW50IHRoZSBwYXJz
ZXIgZnJvbSB5aWVsZGluZy4KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCmluZGV4IDc1OGNiZTgwNjU0ZTg4ODk3YWNk
OWVkNDExOTkwYzg2ODZjYWYzYmEuLmQyM2M5NmI2YzUyODAzZmVjMmU0NTdiN2VjN2RiYzllYjM3
OTk1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCkBAIC04NzAsNyAr
ODcwLDcgQEAgdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0
Q29udGVudCgpCiB7CiB9CiAKLXZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVk
TG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBTaGFy
ZWRCdWZmZXImKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCAyMjY5OWM5YzUxODMyYTVhYThjODlhYmFiMmZmYzdlMDk4NWJm
YzAwLi4xMTZhMTdkMWY1YzllNjQ3ZTFmMTQxYTEwMDg2YjA3OTgzOTNmM2VhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTExOSw3ICsx
MTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0g
ICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGlu
dCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqKSBmaW5hbDsKIAogICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAppbmRleCBmZGM5N2RjNDYyYzg3NTI2YWExODhmNzk2OGQ2MGEwYzgzZDY4MGQ5Li5i
YjUyOTFhNjdmZmZlN2ExMTZmOGMyY2ZiZjRmYWI5NGY4ODQ4MjUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE2ODcsNyArMTY4Nyw3IEBAIGJvb2wgRnJhbWVMb2Fk
ZXI6OndpbGxMb2FkTWVkaWFFbGVtZW50VVJMKFVSTCYgdXJsLCBOb2RlJiBpbml0aWF0b3JOb2Rl
KQogICAgIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIFJlc291cmNl
RXJyb3IgZXJyb3I7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShyZXF1ZXN0LCBpZGVudGlmaWVy
LCBlcnJvcik7Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyht
X2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBSZXNvdXJjZVJlc3Bv
bnNlKHVybCwgU3RyaW5nKCksIC0xLCBTdHJpbmcoKSksIDAsIC0xLCAtMSwgZXJyb3IpOworICAg
IG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRl
ci5nZXQoKSwgaWRlbnRpZmllciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmlu
ZygpLCAtMSwgU3RyaW5nKCkpLCBudWxscHRyLCAtMSwgLTEsIGVycm9yKTsKIAogICAgIHVybCA9
IHJlcXVlc3QudXJsKCk7CiAKQEAgLTIwODcsOCArMjA4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hE
aWRSZWNlaXZlVGl0bGUodGl0bGUpOwogCiAgICAgICAgIC8vIFNlbmQgcmVtYWluaW5nIG5vdGlm
aWNhdGlvbnMgZm9yIHRoZSBtYWluIHJlc291cmNlLgotICAgICAgICBub3RpZmllcigpLnNlbmRS
ZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNv
dXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwK
LSAgICAgICAgICAgIG51bGxwdHIsIHN0YXRpY19jYXN0PGludD4obV9kb2N1bWVudExvYWRlci0+
cmVzcG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSksIDAsIG1haW5SZXNvdWNlRXJyb3Ip
OworICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9j
dW1lbnRMb2FkZXIuZ2V0KCksIG1haW5SZXNvdXJjZUlkZW50aWZpZXIsIG1haW5SZXNvdXJjZVJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSwgbnVsbHB0ciwgc3RhdGljX2Nhc3Q8aW50PihtX2Rv
Y3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgbWFp
blJlc291Y2VFcnJvcik7CiAKICAgICAgICAgVmVjdG9yPFJlZjxGcmFtZT4+IHRhcmdldEZyYW1l
czsKICAgICAgICAgdGFyZ2V0RnJhbWVzLmFwcGVuZChtX2ZyYW1lKTsKQEAgLTIxMzYsNyArMjEz
NSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAg
ICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3JlIHRoYW4gMkIgYnl0
ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgICAgICAgICAvLyBI
b3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywgdGhp
cyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCiAgICAgICAgICAgICAvLyBDb3VsZCBiZSBhbiBp
c3N1ZSB3aXRoIGEgZ2lhbnQgbG9jYWwgZmlsZS4KLSAgICAgICAgICAgIG5vdGlmaWVyKCkuc2Vu
ZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRp
ZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIDAsIHN0YXRpY19jYXN0PGludD4ocmVzcG9uc2UuZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKCkpLCAwLCBlcnJvcik7CisgICAgICAgICAgICBub3RpZmllcigp
LnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlk
ZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNlLCBudWxscHRyLCBzdGF0aWNfY2FzdDxpbnQ+KHJl
c3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgZXJyb3IpOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gRklYTUU6IFdoeSBvbmx5IHRoaXMgZnJhbWUgYW5kIG5vdCBwYXJlbnQgZnJh
bWVzPwpAQCAtMzE2Niw3ICszMTY1LDggQEAgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIEZyYW1l
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmUKICAgICAg
ICAgICAgICAgICAoaXNTY3JpcHRMaWtlRGVzdGluYXRpb24ob3B0aW9ucy5kZXN0aW5hdGlvbikg
PyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6RmV0Y2hEZXN0aW5hdGlvbklzU2NyaXB0TGlrZTo6WWVz
IDogUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVzdGluYXRpb25Jc1NjcmlwdExpa2U6Ok5v
KSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdh
dGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBy
ZXNwb25zZSwgZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHIsIGRhdGEgPyBkYXRhLT5zaXpl
KCkgOiAwLCAtMSwgZXJyb3IpOworCisgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdh
dGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCBy
ZXNwb25zZSwgZGF0YS5nZXQoKSwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAsIC0xLCBlcnJvcik7
CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKQEAgLTM2NDcsNyArMzY0Nyw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgUmVzb3VyCiAKICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlID0gcmVz
b3VyY2UucmVzcG9uc2UoKTsKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25z
ZTo6U291cmNlOjpNZW1vcnlDYWNoZSk7Ci0gICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVs
ZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCBuZXdSZXF1
ZXN0LCByZXNwb25zZSwgMCwgcmVzb3VyY2UuZW5jb2RlZFNpemUoKSwgMCwgZXJyb3IpOworICAg
IG5vdGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRl
ci5nZXQoKSwgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsIG51bGxwdHIsIHJlc291
cmNlLmVuY29kZWRTaXplKCksIDAsIGVycm9yKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6YXBw
bHlVc2VyQWdlbnRJZk5lZWRlZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGVlOWYzZDBjOTg0ZDQ1NWNiYjkx
YjQ2MGMxYmMxMjg5OGQxMjM2NTIuLjM1MmE0YzRmYjUwNGY3Y2Q0ZDJlYzQwNmU2YmMyOTExYTU1
ZmQwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC03
LDcgKzcsNyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLiAKQEAgLTUwLDcgKzUwLDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCi0jaWZkZWYgX19PQkpDX18gCisjaWZkZWYgX19PQkpDX18KICNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgogdHlwZWRlZiBpZCBSZW1vdGVBWE9iamVjdFJlZjsKICNlbHNlCkBA
IC05OCw3ICs5OCw3IEBAIGNsYXNzIFJlc291cmNlSGFuZGxlOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwotY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1
YnN0aXR1dGVEYXRhOwogY2xhc3MgV2lkZ2V0OwogCkBAIC0yMTQsOSArMjE0LDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgPSAwOwogCi0gICAg
dmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50OF90
KiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVk
TG9hZGluZyhEb2N1bWVudExvYWRlciopID0gMDsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxI
aXN0b3J5UmVkaXJlY3RMaW5rcygpID0gMDsKIApAQCAtMjcyLDcgKzI3Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QgPSAwOwogCiAg
ICAgdmlydHVhbCBTdHJpbmcgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdCB7
IHJldHVybiBTdHJpbmcoKTsgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9y
bURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0
cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSA9IDA7CiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTM4MSw3ICszODEsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIHZpcnR1YWwgQWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEph
dmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBBbGxvd3ND
b250ZW50SmF2YVNjcmlwdDo6WWVzOyB9Ci0gICAgCisKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RP
TUFJTlMpCiAgICAgdmlydHVhbCBib29sIHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQ
cm90ZWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIG5v
dGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKSB7IH0KQEAgLTM5MCw3ICszOTAsNyBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVz
ZVBERlBsdWdpbihjb25zdCBTdHJpbmcmLCBTdHJpbmdWaWV3KSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogI2VuZGlmCi0gICAgCisKICAgICB2aXJ0dWFsIGJvb2wgaXNQYXJlbnRQcm9jZXNzQUZ1
bGxXZWJCcm93c2VyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCA1ZDEyMGUyNDdhYzI2
MjcxMTYxZGUwZGM1MjMwMjRkYzhkZTM0ZDY5Li5mYTY2ZWJjMWU3MmMxMmJhMGVkOTc0YmZjNzVj
N2FkMjg0YzAzODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0yMzEsMTMgKzIzMSwxNCBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFT
ZW50KENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzUwog
ICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1Rv
QmVTZW50KTsKIH0KIAotdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3Zv
aWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgV1RGTG9nQWx3YXlzKCIlcyBkYXRh
UmVjZWl2ZWQ6IHNpemU6JWQiLCBfX2Z1bmNfXywgaW50KGJ1ZmZlci5zaXplKCkpKTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICAgICBS
ZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9jbGll
bnQpCi0gICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEsIGRhdGFMZW5n
dGgpOworICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBidWZmZXIpOwogfQog
CiB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggZmY2YzI4ODcxMDA4OGY0YjA1NGNl
NDc2M2Q1ZGEwZGRjOTJjMjA2NS4uN2I1NTc3MjBlZjA1MzNmYmFhMjI2NTY1MzhlZmRkOTZmNjE3
OWZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCkBA
IC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAg
ICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYs
IHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92
ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hh
cmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5jcHAKaW5kZXggNjA0M2FjOWJlMjY3ZWE0ZmJjNzFlMTExOGI5MDc5MTU1ZTM5MTUwMy4uNWNh
YWRmNjI5YzcwYWUwODZiNzdiZDcyY2QyODY3NTM2YjhmYTk3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC0xNDEs
MzAgKzE0MSwxNCBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIH0pOwogfQogCi12b2lk
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2Fk
VHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVC
dWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5j
b2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0gICAg
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihudWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29k
ZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwotfQotCi12b2lkIE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBl
KQordm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgaWYgKG1fY2xpZW50KSB7Ci0g
ICAgICAgIGlmIChidWZmZXIpIHsKLSAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQo
WyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZURhdGEodGhpcywgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0
YSh0aGlzLCBkYXRhLCBsZW5ndGgpOwotICAgIH0KKyAgICBpZiAobV9jbGllbnQpCisgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIpOwogCi0gICAgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9h
ZFR5cGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApp
bmRleCBiNTE3NGVkYzk0Yjk5MjM5MDIwNWYwZmFkNDUyZWE1YWMzODc4OTM4Li4xZWM3ZDYxZTNh
MTc1YzIyYjU1ODc1OGQzN2VkMGM1NWJlNWYxM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtMzYsMTIgKzM2LDEzIEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ckNsaWVudD4gewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNv
dXJjZVJlcXVlc3QmJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVm
ZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciopIHsgfQogICAgIHZpcnR1
YWwgYm9vbCB3YW50c0FsbFN0cmVhbXMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNjIs
OCArNjMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5kbGVyKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCkBAIC03NCw4ICs3
NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCos
IGludCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKLQogICAgIHZvaWQgbm90aWZ5RG9uZSgpOwog
CiAgICAgV2Vha1B0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudD4gbV9jbGllbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAppbmRl
eCA2MmJiNTZlMzRlNmY0NmQyNjI4MzZjZmNhNDY1YjRkYjBlMzA4M2NmLi41ZDE0ZDBiODgzZGEy
NzJkNjU3YTc0ZWFlNWMxMTRlNmRjZWUwNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogI2lmIFVTRShRVUlDS19MT09L
KQogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgpAQCAtNzgsMTIgKzc5LDEzIEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlciogbG9hZGVy
LCBjb25zdCBSZXNvCiAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLT5kb2N1
bWVudExvYWRlcigpLCBsb2FkZXItPmlkZW50aWZpZXIoKSwgciwgbG9hZGVyKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqIGxv
YWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291
cmNlTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgpCiB7CisgICAgV1RGTG9nQWx3YXlzKCIlcyBkaWRSZWNlaXZlRGF0YTogc2l6
ZTolZCBlbmNvZGVkRGF0YUxlbmd0aDolZCIsIF9fZnVuY19fLCBpbnQoYnVmZmVyLnNpemUoKSks
IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgp
KQotICAgICAgICBwYWdlLT5wcm9ncmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRl
bnRpZmllcigpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNyZW1l
bnRQcm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSwgYnVmZmVyLnNpemUoKSk7CiAKLSAgICBk
aXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5p
ZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBk
aXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5p
ZGVudGlmaWVyKCksICZidWZmZXIsIGJ1ZmZlci5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmluaXNoTG9hZChSZXNvdXJjZUxv
YWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmlj
cykKQEAgLTE1MywxMyArMTU1LDE0IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlCiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1l
LCBpZGVudGlmaWVyLCBsb2FkZXIsIHIsIHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciog
bG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBpbnQgZXhwZWN0ZWREYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CisgICAgV1RGTG9nQWx3YXlzKCIlcyBkaXNwYXRjaERpZFJlY2VpdmVEYXRhOiBz
aXplOiVkIGVuY29kZWREYXRhTGVuZ3RoOiVkIiwgX19mdW5jX18sIGludChidWZmZXIuc2l6ZSgp
KSwgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIC8vIE5vdGlmeWluZyB0aGUgRnJhbWVMb2FkZXJD
bGllbnQgbWF5IGNhdXNlIHRoZSBmcmFtZSB0byBiZSBkZXN0cm95ZWQuCiAgICAgUmVmPEZyYW1l
PiBwcm90ZWN0KG1fZnJhbWUpOwotICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0
Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChsb2FkZXIsIGlkZW50aWZpZXIsIGRhdGFMZW5ndGgp
OworICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVu
dExlbmd0aChsb2FkZXIsIGlkZW50aWZpZXIsIGV4cGVjdGVkRGF0YUxlbmd0aCk7CiAKLSAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlm
aWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSgmbV9mcmFtZSwgaWRlbnRpZmllciwgYnVm
ZmVyID8gKmJ1ZmZlciA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVuY29kZWREYXRhTGVuZ3Ro
KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRGaW5pc2hMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVz
b3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpAQCAtMTgwLDggKzE4Myw5IEBAIHZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgUmVzb3VyCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9h
ZGluZygmbV9mcmFtZSwgbG9hZGVyLCBpZGVudGlmaWVyLCBlcnJvcik7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRh
TGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgUmVzb3VyY2VMb2FkTm90
aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgaW50IGV4cGVjdGVkRGF0YUxlbmd0aCwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKKyAgICBXVEZMb2dBbHdh
eXMoIiVzIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzOiBzaXplOiVkIGVuY29kZWREYXRh
TGVuZ3RoOiVkIiwgX19mdW5jX18sIGludChidWZmZXIgPyBidWZmZXItPnNpemUoKSA6IDApLCBl
bmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgLy8gSWYgdGhlIHJlcXVlc3QgaXMgbnVsbCwgd2lsbFNl
bmRSZXF1ZXN0IGNhbmNlbGxlZCB0aGUgbG9hZC4gV2Ugc2hvdWxkCiAgICAgLy8gb25seSBkaXNw
YXRjaCBkaWRGYWlsTG9hZGluZyBpbiB0aGlzIGNhc2UuCiAgICAgaWYgKHJlcXVlc3QuaXNOdWxs
KCkpIHsKQEAgLTE5Myw4ICsxOTcsOCBAQCB2b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5k
UmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlciogbG9hZGVyLAogICAgIGlm
ICghcmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNl
KGxvYWRlciwgaWRlbnRpZmllciwgcmVzcG9uc2UpOwogCi0gICAgaWYgKGRhdGFMZW5ndGggPiAw
KQotICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlciwgaWRlbnRpZmllciwgZGF0
YSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGlmIChleHBlY3RlZERhdGFM
ZW5ndGggPiAwKQorICAgICAgICBkaXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlciwgaWRlbnRp
ZmllciwgYnVmZmVyLCBleHBlY3RlZERhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKIAog
ICAgIGlmIChlcnJvci5pc051bGwoKSkgewogICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1w
dHlNZXRyaWNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
aAppbmRleCA2ZGExNjAzMjVmNDJmZWY1NDBjNmJkNTBiYjE4MmU4NjlkYWRlOWUzLi5jNGY1YjJl
YmRkODEwOGU3OGIyODI1YjlkNmQ3MTI4ZDc0ZDU3NGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBSZXNv
dXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBS
ZXNvdXJjZUxvYWROb3RpZmllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVzb3VyY2VM
b2FkTm90aWZpZXIpOwpAQCAtNTUsMTggKzU2LDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQgZGF0
YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlc291cmNlTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVu
Z3RoKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZEZhaWxUb0xvYWQoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0lu
aXRpYWxSZXF1ZXN0KFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBDYWNo
ZWRSZXNvdXJjZSopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1l
bnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBSZXNvdXJjZUxvYWRlciogPSBudWxscHRyKTsKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciosIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyKiwgaW50IGV4cGVjdGVkRGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNo
TG9hZGluZyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiwgUmVzb3VyY2VMb2FkZXIqKTsKICAgICB2b2lkIGRpc3BhdGNo
RGlkRmFpbExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIHZvaWQgc2VuZFJlbWFpbmluZ0RlbGVnYXRl
TWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNv
dXJjZUVycm9yJik7CisgICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1
bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciosIGludCBl
eHBlY3RlZERhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VF
cnJvciYpOwogCiAgICAgYm9vbCBpc0luaXRpYWxSZXF1ZXN0SWRlbnRpZmllcihSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcAppbmRleCA2ZGViYjI1ODhhM2U4MmIyMWM2MWQ3ZThmMzZlNGY0YmJi
YTI1ZTYwLi45OTQwZWFjNzQ3YzQwMmUzODdjNDk0YzhjYTgzODAwZjY5NGY5ZGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI5OSw5ICsyOTksOSBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAKICAgICAgICAgYXV0byBkYXRhU2l6
ZSA9IGRlY29kZVJlc3VsdC0+ZGF0YS5zaXplKCk7CiAgICAgICAgIFJlc291cmNlUmVzcG9uc2Ug
ZGF0YVJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZTo6ZGF0YVVSTFJlc3BvbnNlKHVybCwgZGVj
b2RlUmVzdWx0LnZhbHVlKCkpOwotICAgICAgICB0aGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0
YVJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGRhdGFTaXplLCBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkZWNvZGVSZXN1
bHQtPmRhdGEpKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgdGhpcy0+ZGlkUmVjZWl2ZVJlc3BvbnNl
KGRhdGFSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBkYXRhU2l6ZSwgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoZGVjb2Rl
UmVzdWx0LT5kYXRhKSldKCkgewogICAgICAgICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWlu
YWxTdGF0ZSgpICYmIGRhdGFTaXplICYmIG1fcmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkhFQUQi
KQotICAgICAgICAgICAgICAgIHRoaXMtPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShkYXRhKSwg
ZGF0YVNpemUsIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgdGhp
cy0+ZGlkUmVjZWl2ZUJ1ZmZlcihkYXRhLCBkYXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291
cmNlKTsKIAogICAgICAgICAgICAgaWYgKCF0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7
CiAgICAgICAgICAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIGVtcHR5TWV0cmljczsKQEAgLTMy
OCwxOCArMzI4LDE2IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1
dGVSZXNvdXJjZSgpCiAgICAgICAgIG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWRlcjo6YWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIiVzIGFkZEJ1ZmZlcjogc2l6ZTolZCIsIF9fZnVu
Y19fLCBpbnQoYnVmZmVyLnNpemUoKSkpOwogICAgIGlmIChtX29wdGlvbnMuZGF0YUJ1ZmZlcmlu
Z1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZlckRhdGEpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChkYXRhUGF5bG9hZFR5cGUgPT0gRGF0YVBheWxvYWRXaG9sZVJl
c291cmNlKQogICAgICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogCi0gICAgaWYgKGJ1ZmZl
cikKLSAgICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKCpidWZmZXIpOwotICAgIGVsc2UKLSAg
ICAgICAgbV9yZXNvdXJjZURhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9yZXNvdXJj
ZURhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IFJlc291cmNlTG9hZGVyOjpyZXNvdXJjZURhdGEoKSBjb25zdApAQCAtNTM5LDM4ICs1MzcsMzIg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHIsIENvbXBsZXRpb25IYW4KICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZp
ZXIoKS5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgbV9yZXNwb25zZSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0
YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKKyAgICBXVEZMb2dBbHdheXMoIiVzIGRpZFJl
Y2VpdmVEYXRhOiBzaXplOiVkIiwgX19mdW5jX18sIGludChidWZmZXIuc2l6ZSgpKSk7CiAgICAg
Ly8gVGhlIGZvbGxvd2luZyBhc3NlcnRpb25zIGFyZSBub3QgcXVpdGUgdmFsaWQgaGVyZSwgc2lu
Y2UgYSBzdWJjbGFzcwogICAgIC8vIG1pZ2h0IG92ZXJyaWRlIGRpZFJlY2VpdmVEYXRhIGluIGEg
d2F5IHRoYXQgaW52YWxpZGF0ZXMgdGhlbS4gVGhpcwogICAgIC8vIGhhcHBlbnMgd2l0aCB0aGUg
c3RlcHMgbGlzdGVkIGluIDMyNjYyMTYKICAgICAvLyBBU1NFUlQoY29uID09IGNvbm5lY3Rpb24p
OwogICAgIC8vIEFTU0VSVCghbV9yZWFjaGVkVGVybWluYWxTdGF0ZSk7CiAKLSAgICBkaWRSZWNl
aXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgbnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgs
IGRhdGFQYXlsb2FkVHlwZSk7CisgICAgZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIsIGVuY29kZWRE
YXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9u
ZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBl
KQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBh
eWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXls
b2FkVHlwZSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsKLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91
bGQgb25seSBnZXQgZGF0YStsZW5ndGggKk9SKiBhIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIuCi0g
ICAgQVNTRVJUKCFidWZmZXIgfHwgKCFkYXRhICYmICFsZW5ndGgpKTsKLQorICAgIFdURkxvZ0Fs
d2F5cygiJXMgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcjogc2l6ZTolZCIsIF9fZnVuY19fLCBpbnQo
YnVmZmVyLnNpemUoKSkpOwogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1l
dGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRo
aW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlz
IGlzIFJhZGFyIDMyNjYyMTYuCiAgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKIAotICAgIGFkZERhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1ZmZlci5nZXQo
KSwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBhZGRCdWZmZXIoYnVmZmVyLCBkYXRhUGF5bG9hZFR5
cGUpOwogCiAgICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJlc291cmNlIHdpdGggbW9yZSB0aGFu
IDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0IHRoaW5nLgogICAgIC8vIEhv
d2V2ZXIsIHdpdGggdG9kYXkncyBjb21wdXRlcnMgYW5kIG5ldHdvcmtpbmcgc3BlZWRzLCB0aGlz
IHdvbid0IGhhcHBlbiBpbiBwcmFjdGljZS4KICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRo
IGEgZ2lhbnQgbG9jYWwgZmlsZS4KICAgICBpZiAobV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tz
ID09IFNlbmRDYWxsYmFja1BvbGljeTo6U2VuZENhbGxiYWNrcyAmJiBtX2ZyYW1lKQotICAgICAg
ICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVy
LT5zaXplKCkgOiBsZW5ndGgsIHN0YXRpY19jYXN0PGludD4oZW5jb2RlZERhdGFMZW5ndGgpKTsK
KyAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRSZWNlaXZlRGF0YSh0aGlzLCBi
dWZmZXIubWFrZUNvbnRpZ3VvdXMoKSwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpAQCAtNzI5LDE0ICs3MjEsMTYg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VI
YW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9u
c2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlRGF0YShkYXRh
LCBsZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBXVEZM
b2dBbHdheXMoIiVzIGRpZFJlY2VpdmVEYXRhOiBzaXplOiVkIiwgX19mdW5jX18sIGludChidWZm
ZXIuc2l6ZSgpKSk7CisgICAgZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBkaWRSZWNlaXZlQnVmZmVy
KFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwor
ICAgIFdURkxvZ0Fsd2F5cygiJXMgZGlkUmVjZWl2ZUJ1ZmZlcjogc2l6ZTolZCIsIF9fZnVuY19f
LCBpbnQoYnVmZmVyLnNpemUoKSkpOworICAgIGRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyLCBlbmNv
ZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCmluZGV4
IDkwNzVjYmMwYTMwNDBlYTE1MGE4NjI1Y2RhMDg5MGIxZWUxMzhjNzIuLjEwOThlNGYyNzg4OWNk
YTdiM2E5Y2ZkNGQ1NDZhZTJmZDlhN2M1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5oCkBAIC0xMDcsOCArMTA3LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQg
bG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2Vu
dCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIHBvbGljeUNvbXBsZXRpb25IYW5k
bGVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVu
c2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCkBAIC0xNjcsOCArMTY3LDYg
QEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB3YXNDYW5jZWxsZWQoKSBjb25zdCB7IHJldHVybiBt
X2NhbmNlbGxhdGlvblN0YXR1cyA+PSBDYW5jZWxsZWQ7IH0KIAotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgdW5zaWduZWQsIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSk7Ci0gICAgCiAgICAgdm9pZCBzZXRSZWZlcnJlclBvbGljeShSZWZlcnJlclBvbGljeSBy
ZWZlcnJlclBvbGljeSkgeyBtX29wdGlvbnMucmVmZXJyZXJQb2xpY3kgPSByZWZlcnJlclBvbGlj
eTsgfQogICAgIFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4g
bV9vcHRpb25zLnJlZmVycmVyUG9saWN5OyB9CiAKQEAgLTE5Miw3ICsxOTAsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwog
Ci0gICAgdm9pZCBhZGREYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKiwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGFkZEJ1ZmZl
cihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgRGF0YVBheWxvYWRUeXBlKTsKICAgICB2
b2lkIGxvYWREYXRhVVJMKCk7CiAgICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCkBAIC0y
MDIsOCArMjAwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFu
ZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFJl
c291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiwgdW5z
aWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2Fz
QmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMzdkMGJiODIxYWJkODZhOWI1NjA2ZTEyN2Vm
Yzk0MTJhNTFiYjFhOS4uOGMzMTU2ODllZTFmNmM0Mzg3Y2FlNjFhNmZkYzliMTdhYmJjY2NhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MTgs
MzIgKzUxOCwxNiBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VQ
b2xpY3koKQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFN1YnJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQ
YXlsb2FkVHlwZSkKK3ZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFM
ZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7CiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgaWYgKGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQo
KSkgewotICAgICAgICBpZiAocHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVu
Z3RoKSkKKyAgICAgICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci5t
YWtlQ29udGlndW91cygpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAot
ICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVk
RGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2Fk
VHlwZSkKLXsKLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoYXV0byBwcmV2aWV3TG9hZGVy
ID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKSB7Ci0gICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5k
aWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5nZXQoKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCi0KLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1v
dmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5
bG9hZFR5cGUpCi17CisgICAgV1RGTG9nQWx3YXlzKCIlcyBkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
OiBzaXplOiVkIGVuY29kZWREYXRhTGVuZ3RoOiVkIiwgX19mdW5jX18sIGludChidWZmZXIuc2l6
ZSgpKSwgaW50KGVuY29kZWREYXRhTGVuZ3RoKSk7CiAgICAgQVNTRVJUKG1fcmVzb3VyY2UpOwog
CiAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA+PSA0MDAg
JiYgIW1fcmVzb3VyY2UtPnNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkpCkBAIC01
NTUsMTMgKzUzOSwxMyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsCiAgICAgLy8gYW55dGhpbmcg
aW5jbHVkaW5nIHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25l
IGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2LgogICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1ZmZlci5jb3B5UmVmKCksIGVuY29kZWREYXRhTGVu
Z3RoLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVm
ZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CiAKICAgICBp
ZiAoIW1fbG9hZGluZ011bHRpcGFydENvbnRlbnQpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlRGF0YSA9IHRoaXMtPnJlc291cmNlRGF0YSgpKQogICAgICAgICAgICAgbV9yZXNvdXJjZS0+
dXBkYXRlQnVmZmVyKCpyZXNvdXJjZURhdGEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X3Jlc291cmNlLT51cGRhdGVEYXRhKGJ1ZmZlciA/IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOworICAgICAg
ICAgICAgbV9yZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4
IDgzMmM5ZjBlNzNkMzg0NjRhNzk1ZjQwMzg2MGY3OWMzNGU3M2JjN2YuLjNkYmQ1MzM4YWZlNDli
NDc4NTdkNTM0MDk3ODg3NTJlYWExYWVkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCkBAIC03Myw4ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9u
ZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xpY3lDb21wbGV0aW9uSGFuZGxl
cikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiwgdW5z
aWduZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZTsKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwpAQCAtOTIsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4g
Y2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7CiAgICAgRXhwZWN0ZWQ8dm9pZCwgU3RyaW5nPiBjaGVja1JlZGlyZWN0aW9uQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcHJldmlvdXNSZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KTsK
IAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiwgaW50LCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgdm9pZCBub3RpZnlEb25lKExvYWRDb21wbGV0aW9u
VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVz
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaAppbmRl
eCBjZjJkZTBjNjJkOTVmMzMyNWI0MmI0NmUyNDAzNzc0NDEwNzQyYTBkLi4zZDE5Mjg2MmYyNzcy
OWIyZjM4ZGI1NGJkODM2Nzk5NTI1YzAxOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2Vf
Y2FzdDxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihSZWYgeyAqbV9kYXRhLmdldCgpIH0pOyB9Ci0g
ICAgdm9pZCBhcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgeyBtX2RhdGEu
YXBwZW5kKGRhdGEsIGxlbmd0aCk7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikgeyBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7IH0KICAgICB2b2lkIGNsZWFyKCkg
eyBtX2RhdGEuZW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VM
b2FkZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNl
LCBtX2RhdGEuY29weSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgKaW5kZXggODRkNzliMGM5OWRmMTBkOTkzODBiODQ4MzE3MzcxYmMxZTg1
NzNiZi4uY2VmMGM4ZjFmMTdkMGY1NzY1OWEzNTQxYjU0ZjYzODk5MDY0YjFjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oCkBAIC0zNyw2ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZm
ZXI7CiAKIGNsYXNzIFRocmVhZGFibGVMb2FkZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFRocmVhZGFibGVMb2FkZXJDbGllbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
QEAgLTQ0LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1
bnNpZ25lZCBsb25nIGxvbmcgLypieXRlc1NlbnQqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qdG90
YWxCeXRlc1RvQmVTZW50Ki8pIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCAv
KmRhdGFMZW5ndGgqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IFNoYXJlZEJ1ZmZlciYsIGJvb2wgLyogdXNlU3RyTGVuICovKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoVGltaW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5o
CmluZGV4IDQyYWU2NDkwOWE1ZTBmZTQ0YzZhNWUwMDYwZDU4Yzk2NGVjNTYwNTEuLmYzNmEyZDQw
N2FmODgxNTkwNDI4NjZiODVlOWUwMTg2MWRhYWM3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlci5oCkBAIC02NiwxMCAr
NjYsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25z
ZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKICAgICB7
CiAgICAgICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShidWZmZXIsIHVzZVN0ckxlbik7CiAgICAgfQogCiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGRmZjg5NzAxYzkz
OWJjNzNjMzcwMzJhZDljNDJhZDIwNjMyNmFkNmUuLjdiNDNmZGIxMWU5ZmIzYzk5N2NlNWVlMTc1
NTljMTZiZDcxMTJkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAKQEAgLTIzMSwxNCArMjMxLDE0IEBAIHZvaWQgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
TG9hZGVyCiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CiAKLXZvaWQgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCB1
c2VTdHJMZW4pCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcihkYXRhLCBkYXRhTGVuZ3Ro
KTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBSZWYgeyAqbV93b3JrZXJD
bGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJSZXF1ZXN0
SWRlbnRpZmllciwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgV1RGTG9nQWx3YXlzKCIlcyBkaWRSZWNlaXZl
RGF0YTogc2l6ZTolZCBzdHJMZW46JWQiLCBfX2Z1bmNfXywgaW50KGRhdGEuc2l6ZSgpKSwgdXNl
U3RyTGVuKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUoW3Byb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXIgPSBSZWYgeyAqbV93
b3JrZXJDbGllbnRXcmFwcGVyIH0sIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyID0gbV93b3JrZXJS
ZXF1ZXN0SWRlbnRpZmllciwgYnVmZmVyID0gUmVmIHsgZGF0YSB9LCB1c2VTdHJMZW5dIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0Lmlz
V29ya2VyR2xvYmFsU2NvcGUoKSB8fCBjb250ZXh0LmlzV29ya2xldEdsb2JhbFNjb3BlKCkpOwot
ICAgICAgICBwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgcHJvdGVjdGVkV29ya2VyQ2xpZW50
V3JhcHBlci0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyLCB1c2VTdHJMZW4pOwogICAgICAgICBpZiAo
aXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCksIHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZURhdGEoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCB3b3JrZXJSZXF1ZXN0
SWRlbnRpZmllciwgYnVmZmVyKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggNzIzYjQ1NmVj
OGU5ZTMwNmZjMThjYzhmMzZkZTZkY2Q4YWUzMDQ3MC4uMzM5ZDZmNDczMTBhMWVkMjg5MDM2YWQw
YTQwNGYzOGE3YTI2ODYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8g
QWxsIGV4ZWN1dGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICAgICAgdm9pZCBkaWRTZW5kRGF0
YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxC
eXRlc1RvQmVTZW50KSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCBkYXRh
TGVuZ3RoKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5n
KFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNo
VGltaW5nKGNvbnN0IFJlc291cmNlVGltaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRl
eCA1MTk3OGY0MTIzODc0ZGM1NjYwZWZmNDcwNjU5NzA3ZDRlNWQ4NWE3Li5lZDc1NjY1MjZiMmQ3
ZWZiZjFjNTE3MDIwOTVhODc5YmFmNTY5NDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTE0OSw3ICsx
NDksNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYXliZUxvYWRGYWxsYmFja0Zvck1h
aW5FcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29uc3Qg
dWludDhfdCosIGludCwgbG9uZyBsb25nLCBib29sKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6bWFpblJlc291cmNlRGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9u
ZywgYm9vbCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCBiOTYzNTZlNzg1NjEzODk1NmFlNGMwNTk4
MzE3MGNkZjcyMzY3MmEwLi5kMmFlYWVjM2UxNGM2M2JjYmY2MDFlOWFhZjAyNGMxZjllYzQ3NmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXliZUxv
YWRNYWluUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3Vic3RpdHV0ZURhdGEmKTsK
ICAgICB2b2lkIG1heWJlTG9hZE1haW5SZXNvdXJjZUZvclJlZGlyZWN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFN1YnN0aXR1dGVEYXRhJik7CiAgICAgYm9vbCBtYXliZUxvYWRGYWxsYmFja0Zv
ck1haW5SZXNwb25zZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJik7Ci0gICAgdm9pZCBtYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0
T25jZSk7CisgICAgdm9pZCBtYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVm
ZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBib29sIGFsbEF0T25jZSk7CiAgICAg
dm9pZCBmaW5pc2hlZExvYWRpbmdNYWluUmVzb3VyY2UoKTsKICAgICB2b2lkIGZhaWxlZExvYWRp
bmdNYWluUmVzb3VyY2UoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCAyYmIzZmU3NWI5
OTc3ZTgzMzIyYWUyNTgwZjcyMTJlZTViZjIxNjEwLi4yNTZlODliMjExYjM4YjJkMjFkY2Q2NjU3
ODI2OWU2NjA3MzY3MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtNTEsNyArNTEsMTAg
QEAgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJM
JiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2U6OmRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsKLSAgICBsb2FkZXIuZGVsaXZl
clJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBtX3BhdGguaXNFbXB0eSgpID8gZGF0YSgpLm1h
a2VDb250aWd1b3VzKCkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZSht
X3BhdGgpKTsKKyAgICBpZiAobV9wYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgbG9hZGVyLmRlbGl2
ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UoKSwgUmVmUHRyIHsgJmRhdGEoKSB9KTsKKyAgICBl
bHNlCisgICAgICAgIGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKG1fcGF0aCkpOwogfQogCiB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6YWRkVHlwZSh1bnNpZ25lZCB0eXBlKSAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggN2IyZmI2YzljMjUzZDk0MzdmNDA3ZThj
OTdiOGI1MDc0YzcxMjkyNi4uOTRjYzRkZmVmZmJmZmJhYjgxOWZjODY3ZWY0ZjQ1MDBhZDc1ZGNh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk5LDkgKzk5LDEwIEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSA9
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKG1fcmVzb3VyY2UtPnVybCgpLCByZXNw
b25zZSwgbV90eXBlKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9h
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UtPmFwcGVuZChkYXRhLCBsZW5ndGgpOworICAgIFdURkxv
Z0Fsd2F5cygiJXMgZGlkUmVjZWl2ZURhdGE6IHNpemU6JWQiLCBfX2Z1bmNfXywgaW50KGJ1ZmZl
ci5zaXplKCkpKTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGJ1ZmZl
cik7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZWRpcmVjdFJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCmluZGV4IDAy
ZDdhZDk3YTI4ZDQ3YzNmYWI1ZTNiYWIwN2ViZTliMDY5ZTIzMmQuLjBiMjk2Mjg4ZjMxYTQzMjVk
NDg0OWE0NDJlOGFlNjAyYzE3MzE5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmgK
QEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Ci0gICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQgZGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3Vy
Y2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5h
bDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwCmluZGV4IDUwNDY1Y2M2YzAxMzNlNWE3NzQ0NWNmOTQ3MzMzZmUyMDY0MDg2
MWQuLjc4Y2JmODVkNTg4Y2Q4YjIwZWUzYmYzMzE0NTVmYzg5ZmMwNGYzYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDcgKzQ2OCw3IEBA
IGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdl
RGF0YUNvdW50ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJu
YWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6
OnVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBt
X2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRh
LT5zaXplKCkpOwpAQCAtNTU1LDE4ICs1NTUsMjAgQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVk
SW1hZ2U6OnVwZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CisgICAgV1RGTG9nQWx3YXlz
KCIlcyBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyOiBzaXplOiVkIiwgX19mdW5jX18sIGludChi
dWZmZXIuc2l6ZSgpKSk7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRh
QnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICB1cGRhdGVCdWZmZXJJbnRlcm5hbChk
YXRhKTsKLSAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRhdGEpOworICAgIHVwZGF0
ZUJ1ZmZlckludGVybmFsKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKTsKKyAgICBDYWNoZWRSZXNv
dXJjZTo6dXBkYXRlQnVmZmVyKGJ1ZmZlcik7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0
ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBDYWNoZWRJ
bWFnZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJU
KGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpEb05vdEJ1ZmZl
ckRhdGEpOwotICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIGxlbmd0aCkpOwotICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0
aCk7CisgICAgV1RGTG9nQWx3YXlzKCIlcyBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YTogc2l6ZTol
ZCIsIF9fZnVuY19fLCBpbnQoZGF0YS5zaXplKCkpKTsKKyAgICB1cGRhdGVCdWZmZXJJbnRlcm5h
bChkYXRhKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShkYXRhKTsKIH0KIAogdm9p
ZCBDYWNoZWRJbWFnZTo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IGU4NDMwODcwYjQ4YWYzZGM5NWJiYTNj
YWQxYTY0ZTA2OGFlMTU1MTMuLmE1ZGM2M2YyM2RiZDQxYTI3MGVlNTZjMzJhNDQxNzc3ZDZhZGRi
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC0xMjgs
NyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBjb252ZXJ0ZWRE
YXRhSWZOZWVkZWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3Q7CiAg
ICAgdm9pZCBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAgICBFbmNvZGVkRGF0YVN0YXR1cyB1cGRh
dGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgdXBkYXRlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGVycm9y
KENhY2hlZFJlc291cmNlOjpTdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNl
aXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAKQEAgLTE2OSw3ICsxNjks
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hhbmdlZEluUmVjdChjb25zdCBJbWFnZSYsIGNvbnN0
IEludFJlY3QqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdl
Jik7CiAKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVy
cmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAKaW5kZXggNzFlMTYwODJmZmU2NTVkMTExZjE2OTkwZDEyMzA1MzViZWFjYmY5NS4u
MTI4M2QxMzQxZWQzNzE1OTU2MDI1NWY3NDA2YTZlMWIyMTk4ZDhhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC00OCwxMiAr
NDgsMTIgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRp
YU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25h
bDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3Jl
bWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICBz
aXplX3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKLSAgICBpZiAoIWRhdGEg
fHwgZGF0YS0+c2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKKyAgICBpZiAoIWRhdGEuZGF0
YSgpIHx8IGRhdGEuc2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gZGF0YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRh
TGVuZ3RoKTsKKyAgICByZXR1cm4gZGF0YS5nZXRTb21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgp
OwogfQogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBDYWNoZWRSYXdS
ZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEp
CiAgICAgICAgIHByZXZpb3VzRGF0YVNpemUgKz0gaW5jcmVtZW50YWxEYXRhLnNpemUoKTsKIAog
ICAgICAgICBTZXRGb3JTY29wZTxib29sPiBub3RpZnlTY29wZShtX2luSW5jcmVtZW50YWxEYXRh
Tm90aWZ5LCB0cnVlKTsKLSAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNy
ZW1lbnRhbERhdGEuZGF0YSgpLCBpbmNyZW1lbnRhbERhdGEuc2l6ZSgpKTsKKyAgICAgICAgbm90
aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEuY3JlYXRlU2hhcmVkQnVm
ZmVyKCkpOwogICAgIH0KICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAKQEAg
LTg5LDExICs4OSwxMiBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVu
Z3RoKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7Ci0gICAgbm90aWZ5Q2xpZW50c0RhdGFX
YXNSZWNlaXZlZChkYXRhLCBsZW5ndGgpOwotICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRh
KGRhdGEsIGxlbmd0aCk7CisgICAgV1RGTG9nQWx3YXlzKCIlcyBkaWRSZWNlaXZlRGF0YTogc2l6
ZTolZCIsIF9fZnVuY19fLCBpbnQoYnVmZmVyLnNpemUoKSkpOworICAgIG5vdGlmeUNsaWVudHNE
YXRhV2FzUmVjZWl2ZWQoYnVmZmVyKTsKKyAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlRGF0YShi
dWZmZXIpOwogfQogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bWV0cmljcykKQEAgLTExMCw5ICsxMTEsOSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5p
c2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0CiAgICAg
ICAgIGlmIChkYXRhKSB7CiAgICAgICAgICAgICBpZiAoZGF0YSAhPSBtX2RhdGEuZ2V0KCkpCiAg
ICAgICAgICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAg
ICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNo
dW5rKGRhdGEpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxj
dWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuaygqbV9kYXRhKSkgewogICAgICAgICAgICAgICAgIHNl
dEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEtPmRhdGEoKSwgaW5jcmVtZW50YWxEYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQo
aW5jcmVtZW50YWxEYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKQEAgLTEzMCwxNSAr
MTMxLDE2IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBp
ZiAoIWxlbmd0aCkKKyAgICBXVEZMb2dBbHdheXMoIiVzIGRpZFJlY2VpdmVEYXRhOiBzaXplOiVk
IiwgX19mdW5jX18sIGludChidWZmZXIuc2l6ZSgpKSk7CisgICAgaWYgKGJ1ZmZlci5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50
V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUg
KENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCi0gICAgICAgIGMtPmRhdGFS
ZWNlaXZlZCgqdGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKCp0
aGlzLCBidWZmZXIpOwogfQogCiBzdGF0aWMgdm9pZCBpdGVyYXRlUmVkaXJlY3RzKENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiYmIGhhbmRsZSwgQ2FjaGVkUmF3UmVzb3Vy
Y2VDbGllbnQmIGNsaWVudCwgVmVjdG9yPHN0ZDo6cGFpcjxSZXNvdXJjZVJlcXVlc3QsIFJlc291
cmNlUmVzcG9uc2U+PiYmIHJlZGlyZWN0c0luUmV2ZXJzZU9yZGVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTE3MCw5
ICsxNzIsMTEgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJl
c291cmNlQ2xpZW50JiBjKQogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAg
ICAgICAgICAgIG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsaWVudCgqY2xpZW50KSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBzZWdtZW50LmRhdGEoKSwgc2Vn
bWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnRBc1No
YXJlZEJ1ZmZlcihbJl0oYXV0byYmIGJ1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICBpZiAo
aGFzQ2xpZW50KCpjbGllbnQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIiVzIGRpZEFkZENsaWVudDogc2l6ZTolZCIsIF9fZnVuY19fLCBpbnQoYnVmZmVyLT5zaXpl
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlz
LCBidWZmZXIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggYTc4
NjVmOGFkMTc4YWVmYjMyMjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNC4uMzZlNDdhMWRiYTIzMTI4ZGM1
MzA3M2I3MGI1ZjNmODUzODA0YWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIFJlc291cmNlVGltaW5n
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKIGNs
YXNzIENhY2hlZFJhd1Jlc291cmNlIGZpbmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKQEAg
LTUyLDcgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hMb2FkaW5n
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKIAogICAgIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC02Niw4ICs2Nyw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2FsbG93RW5jb2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAgc3RkOjpvcHRpb25h
bDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQgbm90aWZ5Q2xpZW50
c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVu
dGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIHZvaWQgbm90aWZ5
Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50LmgKaW5kZXggMjNlYWI4ZGYyOTU4ZmY4YjQ5
ZjM1NDViNTA4M2ZlMjk4OWVmMTIyMC4uY2Q2NTBhMmYzMTM2Y2U5YjI2MmZiZGZjODI5MjhiZjIx
MDc5ZmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3Vy
Y2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgUmVzb3VyY2VUaW1pbmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENhY2hlZFJh
d1Jlc291cmNlQ2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoK
QEAgLTQ2LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgdWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hl
ZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDlkZTBhMDRjZDVlYzVmM2ZhZDJmYjE2
ZDdiMzIyYzg1OGEzOGE2YjIuLjdiOWM2MWY5NjYxNzU0NmI2NmJjYzNjNjNlY2EwZTg1N2UyNjJl
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNw
cApAQCAtMzQxLDcgKzM0MSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1Bv
bGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENh
Y2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBB
U1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90
QnVmZmVyRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCmluZGV4IGM5ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0NzguLjUz
NGUwMTJjYzRmYTVkZDJiZTFmZDZlZWU1YWE2YWU0ZTVmYWUyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5n
KCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJj
ZURlY29kZXIoKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0
dWFsIHZvaWQgZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJl
c291cmNlOjpTdGF0dXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5
UHJldmlld0xvYWRlci5oCmluZGV4IDk2ZDg5ODJlOTM1MDM0NzY5NmZjOTY5ZDU4NWFiNzA3NWRl
MDIwZWQuLmNhMDE5MzRkMzFiYTVkNTA5ZmViZTdkMmY5MTIyNDlkMjcxMjZhYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC00Nyw4
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwogCiAgICAgYm9v
bCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAg
ICBib29sIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwor
ICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBk
aWRGaW5pc2hMb2FkaW5nKCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCA0ODc1NmEzM2I1
ODcyYjQ0YjJmMGJhMDg0MjQxZjg2Y2ZhZWJjYWEwLi5hMjRiOGM1OWQ0NjBhZmY1ZTJmZWY4MzE5
MGMyMDg2NTcyMzY1ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyLm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWY8TGVnYWN5UHJl
dmlld0xvYWRlckNsaWVudD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBjCiAgICAgcmV0dXJuIGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wgTGVnYWN5UHJldmlld0xv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29u
dmVydGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgTGVn
YWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGFw
cGVuZGluZyBidWZmZXIgd2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKICAgICBtX29y
aWdpbmFsRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICBtX2NvbnZlcnRlci0+dXBkYXRlTWFpblJl
c291cmNlKCk7Ci0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyKTsKKyAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMTYyLDggKzE2Miw3IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZl
cnRlckRpZFJlY2VpdmVEYXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zCiAgICAgaWYgKCFtX2hh
c1Byb2Nlc3NlZFJlc3BvbnNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRhdGFDb3B5
ID0gZGF0YS5jb3B5KCk7Ci0gICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RG
TW92ZShkYXRhQ29weSksIGRhdGFDb3B5LT5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOworICAg
IHJlc291cmNlTG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGRhdGEsIGRhdGEuc2l6ZSgpLCBEYXRh
UGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29u
dmVydGVyRGlkRmluaXNoQ29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikKQEAgLTI0MywxMSAr
MjQyLDYgQEAgTGVnYWN5UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJj
ZUxvYWRlciYgbG9hZGVyLCBjb25zdCBSZXNvdXJjZVIKICAgICBMT0coTmV0d29yaywgIkxlZ2Fj
eVByZXZpZXdMb2FkZXIgY3JlYXRlZCB3aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNcIi4iLCBt
X2NvbnZlcnRlci0+cHJldmlld0ZpbGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWJvb2wg
TGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKQotewotICAgIHJldHVybiBkaWRSZWNlaXZlQnVmZmVyKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkuZ2V0KCkpOwotfQotCiBib29sIExlZ2FjeVByZXZp
ZXdMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsK
ICAgICByZXR1cm4gIW1fc2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggNjAyNjMxYmI3Y2QxMDg2MGIxYTMxMjEwNDNjOTdk
OGVmZTQ0NzYxZC4uMjU3ZDY2NWNiNWMwY2MzNmQzOTZhMDc1OGJhNjVhNzNmN2JkODZlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVM
b2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMjEwLDEzICsy
MTEsMTQgQEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKICAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpD
YW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCi12b2lkIEV2ZW50
U291cmNlOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQor
dm9pZCBFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIGJvb2wpCiB7CisgICAgV1RGTG9nQWx3YXlzKCIlcyBkaWRSZWNlaXZlRGF0YTogc2l6ZTol
ZCIsIF9fZnVuY19fLCBpbnQoYnVmZmVyLnNpemUoKSkpOwogICAgIEFTU0VSVChtX3N0YXRlID09
IE9QRU4pOwogICAgIEFTU0VSVChtX3JlcXVlc3RJbkZsaWdodCk7CiAgICAgUkVMRUFTRV9BU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9pc1N1c3BlbmRlZEZvckJhY2tGb3J3YXJk
Q2FjaGUpOwogCi0gICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZmZlciwgbV9kZWNvZGVyLT5kZWNvZGUo
ZGF0YSwgbGVuZ3RoKSk7CisgICAgYXBwZW5kKG1fcmVjZWl2ZUJ1ZmZlciwgbV9kZWNvZGVyLT5k
ZWNvZGUoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSkpOwogICAgIHBhcnNlRXZlbnRTdHJl
YW0oKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCmluZGV4IGQwMTJkMzc3ZDE5NzY3
NWYwZmUxMTQ1ZjE3MTlmMTdmZGRiZmVhM2IuLmQ2NjJhZTI4MDZmNGIyNDg2N2IwMTYwOGUwNGRi
YjRmOTdkYmEwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgKQEAgLTg0LDcgKzg0LDcg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFRocmVhZGFibGVMb2FkZXJDbGllbnQKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3Qq
LCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVy
JiwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1D
b250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRG
aWx0ZXIuaAppbmRleCA5ZTcyZTQ0YTJlYWM0ZDhlZjczMGI5ODcxZDBlYzUwOGVkOWZhYzQ0Li40
NjJjZjNiODc0MjMzODViZTgzYTAwMmU0M2Y3NDQ3Nzk5ODdlZTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaApAQCAtMjYsMTUgKzI2LDE3
IEBACiAjaWZuZGVmIFBsYXRmb3JtQ29udGVudEZpbHRlcl9oCiAjZGVmaW5lIFBsYXRmb3JtQ29u
dGVudEZpbHRlcl9oCiAKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVm
ZmVyOwogCiBjbGFzcyBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNTQsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGxhdGZv
cm1Db250ZW50RmlsdGVyKCkgPSBkZWZhdWx0OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpID0gMDsKICAgICB2
aXJ0dWFsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25z
dCA9IDA7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZDM5NjE1Njg4NGI0Yjc5ZTNlNTVkNTY5MWQ3MThj
ODg3NWZmOWZmNy4uZDA5ZjEwNTJhMGYzMWVlOTcwNjExMDEzYjM5MzVmYjUzMDk1NTA5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0xMzcsOCArMTM3LDgg
QEAgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OnRha2VEYXRhKCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7Ci0g
ICAgaWYgKGhhc09uZVNlZ21lbnQoKSAmJiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1
aW50OF90Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQotICAgICAg
ICBjb21iaW5lZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKHN0ZDo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4o
bV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpLCBWZWN0b3I8dWludDhfdD4o
KSk7CisgICAgaWYgKGhhc09uZVNlZ21lbnQoKSAmJiBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFZl
Y3Rvcjx1aW50OF90Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpICYm
IG1fc2VnbWVudHNbMF0uc2VnbWVudC0+aGFzT25lUmVmKCkpCisgICAgICAgIGNvbWJpbmVkRGF0
YSA9IHN0ZDo6ZXhjaGFuZ2Uoc3RkOjpnZXQ8VmVjdG9yPHVpbnQ4X3Q+Pihjb25zdF9jYXN0PERh
dGFTZWdtZW50Jj4obV9zZWdtZW50c1swXS5zZWdtZW50LmdldCgpKS5tX2ltbXV0YWJsZURhdGEp
LCBWZWN0b3I8dWludDhfdD4oKSk7CiAgICAgZWxzZQogICAgICAgICBjb21iaW5lZERhdGEgPSBj
b21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7CiAKQEAgLTIzMSw2ICsyMzEs
OCBAQCB2b2lkIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNsZWFyKCkKIAogUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHkoKSBjb25zdAogewor
ICAgIGlmIChtX2NvbnRpZ3VvdXMpCisgICAgICAgIHJldHVybiBtX3NlZ21lbnRzLnNpemUoKSA/
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG1fc2VnbWVudHNbMF0uc2VnbWVudC5jb3B5UmVmKCkpIDog
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
Y2xvbmUgPSBhZG9wdFJlZigqbmV3IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIpOwogICAgIGNsb25l
LT5tX3NpemUgPSBtX3NpemU7CiAgICAgY2xvbmUtPm1fc2VnbWVudHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShtX3NlZ21lbnRzLnNpemUoKSk7CkBAIC0yNDgsNiArMjUwLDEzIEBAIHZvaWQgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChj
b25zdCBTcGFuPGNvbnN0CiAgICAgICAgIGFwcGx5KFNwYW4geyBzZWdtZW50LnNlZ21lbnQtPmRh
dGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7CiB9CiAKK3ZvaWQgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6Zm9yRWFjaFNlZ21lbnRBc1NoYXJlZEJ1ZmZlcihjb25zdCBGdW5jdGlvbjx2
b2lkKFJlZjxTaGFyZWRCdWZmZXI+JiYpPiYgYXBwbHkpIGNvbnN0Cit7CisgICAgYXV0byBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfTsKKyAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3Nl
Z21lbnRzKQorICAgICAgICBhcHBseShTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZWdtZW50LnNlZ21l
bnQuY29weVJlZigpKSk7Cit9CisKIGJvb2wgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6c3RhcnRz
V2l0aChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+JiBwcmVmaXgpIGNvbnN0CiB7CiAgICAgaWYg
KHByZWZpeC5lbXB0eSgpKQpAQCAtNDEzLDcgKzQyMiw3IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVk
QnVmZmVyKCkKICAgICBtX2NvbnRpZ3VvdXMgPSB0cnVlOwogfQogCi1TaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCkKK1NoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiBzZWdtZW50KQogewogICAgIG1fc2l6
ZSA9IHNlZ21lbnQtPnNpemUoKTsKICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7IDAsIFdURk1vdmUo
c2VnbWVudCkgfSk7CkBAIC02MDEsNyArNjEwLDcgQEAgdm9pZCBTaGFyZWRCdWZmZXJCdWlsZGVy
OjplbnN1cmVCdWZmZXIoKQogICAgICAgICBtX2J1ZmZlciA9IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI6OmNyZWF0ZSgpOwogfQogCi1TaGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0
YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNl
Z21lbnQsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBzaXplKQorU2hhcmVkQnVmZmVyRGF0YVZpZXc6
OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiBzZWdtZW50LCBz
aXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gc2l6ZSkK
ICAgICA6IG1fc2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKQogICAgICwgbV9wb3NpdGlvbldpdGhp
blNlZ21lbnQocG9zaXRpb25XaXRoaW5TZWdtZW50KQogICAgICwgbV9zaXplKHNpemUgPyAqc2l6
ZSA6IG1fc2VnbWVudC0+c2l6ZSgpIC0gcG9zaXRpb25XaXRoaW5TZWdtZW50KQpAQCAtNjE3LDcg
KzYyNiw3IEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhjb25z
dCBTaGFyZWRCdWZmZXJEYXRhVmlldyYgb3RoZXIsIHNpCiAKIFJlZjxTaGFyZWRCdWZmZXI+IFNo
YXJlZEJ1ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIoKSBjb25zdAogewotICAgIGNv
bnN0IFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVudDsKKyAgICBjb25zdCBSZWY8
Y29uc3QgRGF0YVNlZ21lbnQ+IHNlZ21lbnQgPSBtX3NlZ21lbnQ7CiAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKERhdGFTZWdtZW50OjpQcm92aWRlciB7CiAgICAgICAgIFtzZWdtZW50
LCBkYXRhID0gZGF0YSgpXSgpIHsgcmV0dXJuIGRhdGE7IH0sCiAgICAgICAgIFtzaXplID0gc2l6
ZSgpXSgpIHsgcmV0dXJuIHNpemU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKaW5kZXggYzI3YzkyNjlmZmVmMjQ5YWI1ZThhYmEyNGQ3NjJmYzQwYzFjMjMwMC4uMzQ4NGE2
YTUzYjgwNDA2NGJlNTdhMjgzZWY0MThhOGE2MmQ1ODlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKQEAgLTE3OCwxMiArMTc4LDEzIEBAIHB1YmxpYzoKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25z
dCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+JikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZpeCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKGNvbnN0
IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik+JikgY29uc3Q7CiAKICAgICB1c2lu
ZyBEYXRhU2VnbWVudCA9IFdlYkNvcmU6OkRhdGFTZWdtZW50OyAvLyBUbyBrZWVwIGJhY2t3YXJk
IGNvbXBhdGliaWxpdHkgd2hlbiB1c2luZyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudAogCiAgICAgc3RydWN0IERhdGFTZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXpl
X3QgYmVnaW5Qb3NpdGlvbjsKLSAgICAgICAgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50OworICAg
ICAgICBjb25zdCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IHNlZ21lbnQ7CiAgICAgfTsKICAgICB1
c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAx
PjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KQEAgLTI1OSw3ICsyNjAsMTAgQEAgcHVibGlj
OgogICAgICAgICBpZiBjb25zdGV4cHIgKCFzaXplb2YuLi4oQXJncykpCiAgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoKSk7CiAgICAgICAgIGVsc2UgaWYgY29u
c3RleHByIChzaXplb2YuLi4oQXJncykgPT0gMQotICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2Ft
ZV92PEFyZ3MsIFJlZjxEYXRhU2VnbWVudD4+ICYmLi4uKSkKKyAgICAgICAgICAgICYmIChzdGQ6
OmlzX3NhbWVfdjxBcmdzLCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+PiAmJi4uLikpCisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKSk7CisgICAgICAgIGVsc2UgaWYgY29uc3RleHByIChzaXplb2YuLi4oQXJncykg
PT0gMQorICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PHN0ZDo6cmVtb3ZlX2NvbnN0X3Q8
c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8QXJncz4+LCBEYXRhU2VnbWVudD4gJiYuLi4pKQogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkQnVmZmVyKHN0ZDo6Zm9yd2FyZDxB
cmdzPihhcmdzKS4uLikpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gYnVmZmVy
ID0gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CkBAIC0yODYsOCArMjkwLDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCBTaGFyZWRCdWZmZXIoKTsKKyAgICBTaGFyZWRCdWZmZXIoY29uc3QgRGF0YVNl
Z21lbnQmIHNlZ21lbnQpCisgICAgICAgIDogU2hhcmVkQnVmZmVyKFJlZjxjb25zdCBEYXRhU2Vn
bWVudD4geyBzZWdtZW50IH0pIHsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPERhdGFTZWdtZW50PiYmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTaGFyZWRCdWZmZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKTsK
QEAgLTM1OSw3ICszNjUsNyBAQCBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI6OmV4dHJhY3REYXRhKCkKIAogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXcgewog
cHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KFJlZjxEYXRh
U2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxz
aXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxvcHQpOworICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KFJlZjxjb25zdCBEYXRhU2VnbWVudD4mJiwgc2l6ZV90IHBvc2l0aW9u
V2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5ld1NpemUgPSBzdGQ6Om51bGxv
cHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJl
ZEJ1ZmZlckRhdGFWaWV3Jiwgc2l6ZV90IG5ld1NpemUpOwogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2VnbWVudC0+ZGF0YSgpICsgbV9wb3NpdGlvbldpdGhpblNlZ21lbnQ7IH0KQEAg
LTM3MCw3ICszNzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPE5T
RGF0YT4gY3JlYXRlTlNEYXRhKCkgY29uc3Q7CiAjZW5kaWYKIHByaXZhdGU6Ci0gICAgY29uc3Qg
UmVmPERhdGFTZWdtZW50PiBtX3NlZ21lbnQ7CisgICAgY29uc3QgUmVmPGNvbnN0IERhdGFTZWdt
ZW50PiBtX3NlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fcG9zaXRpb25XaXRoaW5TZWdtZW50
OwogICAgIGNvbnN0IHNpemVfdCBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgK
aW5kZXggY2JlODc3MWE0NWQ4NjJjYjVhYjA1ZWNhMzk5OTI3ZTA3ODM4ZjU0MC4uMTI1MzE5YmNi
MzhlNzFiYTc5NWE2YWZkMmRkMTNmYmQxOWEyZDNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRl
ci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
OwotICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKICAgICBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdv
cmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCmluZGV4IDJlZjI3MDFmZTY3OGJmOWI5MmRiMjEy
YmJlYTVjOTE1YTNmYzNhMmYuLmY4Nzc5N2NjZDUwYjlhYjVlYTQ4YzI1MWU0MmYwMGI1ZmJmNGZh
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtFeHRl
bnNpb25Db250ZW50RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tCkBAIC0xNDUsMTIgKzE0NSwxMiBAQCB2
b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHNlbWFwaG9yZS53YWl0KCk7CiB9CiAKLXZvaWQg
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkKK3ZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIFJldGFpblB0cjxOU0RhdGE+IGNv
cGllZERhdGEgeyBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0
aF0gfTsKKyAgICBhdXRvIG5zRGF0YSA9IGRhdGEuY3JlYXRlTlNEYXRhKCk7CiAKICAgICBCaW5h
cnlTZW1hcGhvcmUgc2VtYXBob3JlOwotICAgIFttX25lRmlsdGVyU291cmNlIHJlY2VpdmVkRGF0
YTpjb3BpZWREYXRhLmdldCgpIGRlY2lzaW9uSGFuZGxlcjpbdGhpcywgJnNlbWFwaG9yZV0oTkVG
aWx0ZXJTb3VyY2VTdGF0dXMgc3RhdHVzLCBOU0RpY3Rpb25hcnkgKmRlY2lzaW9uSW5mbykgewor
ICAgIFttX25lRmlsdGVyU291cmNlIHJlY2VpdmVkRGF0YTpuc0RhdGEuZ2V0KCkgZGVjaXNpb25I
YW5kbGVyOlt0aGlzLCAmc2VtYXBob3JlXShORUZpbHRlclNvdXJjZVN0YXR1cyBzdGF0dXMsIE5T
RGljdGlvbmFyeSAqZGVjaXNpb25JbmZvKSB7CiAgICAgICAgIGhhbmRsZURlY2lzaW9uKHN0YXR1
cywgcmVwbGFjZW1lbnREYXRhRnJvbURlY2lzaW9uSW5mbyhkZWNpc2lvbkluZm8pKTsKICAgICAg
ICAgc2VtYXBob3JlLnNpZ25hbCgpOwogICAgIH1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgK
aW5kZXggNjc5YWU5MzI5NTE3ZTFmMzk0M2JhNTc2MmFjOGY1NmU4NjBjOGMyNS4uZDVmYTEzMzBi
MTYyY2NjY2UyMmU5NDc1ODYxNWE2ZTAxMTIyZDA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRl
ci5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IH0K
ICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwotICAgIHZvaWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSBvdmVycmlkZTsKICAgICBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQppbmRl
eCAxYzk2MDQ3MTZiNDI2OTNkNWU0NmMyZTIzZTk0MWRhMDBjODNlNGRlLi5hNjUxMTVjZWIxMjIy
MzY3N2YwOWE0YTNkYTk5YjRhYzcyNjhkZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5t
bQpAQCAtOTQsMTAgKzk0LDEwIEBAIHZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6
OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzCiAgICAgdXBkYXRl
RmlsdGVyU3RhdGUoKTsKIH0KIAotdm9pZCBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6
YWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBQYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7
CiAgICAgQVNTRVJUKCFbbV9yZXBsYWNlbWVudERhdGEgbGVuZ3RoXSk7Ci0gICAgbV9yZXBsYWNl
bWVudERhdGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgYWRkRGF0YTpbTlNEYXRhIGRhdGFXaXRo
Qnl0ZXNOb0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dXTsK
KyAgICBtX3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZpbHRlckV2YWx1YXRvciBhZGREYXRhOmRh
dGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldOwogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7CiAgICAg
QVNTRVJUKG5lZWRzTW9yZURhdGEoKSB8fCBbbV9yZXBsYWNlbWVudERhdGEgbGVuZ3RoXSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5n
U3RvcmUuaAppbmRleCBkZTMzZjFhZjQxMmRjMDhiMmI5NjFhMTk0OTQ1YzljYzkwYWE2NjI1Li5h
NDc1MDc0YTEwOGExYjU4N2IzYjZhOGI5ODgwNTlkYWRlNDdlNTRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKQEAgLTIz
Myw2ICsyMzMsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gUGFja2VkQ29sb3I6OkFSR0Ig
eyByZXN1bHQgfS52YWx1ZTsKICAgICB9CiAKKyAgICAvLyBtX3BpeGVscyB0eXBlIHNob3VsZCBi
ZSBpZGVudGljYWwgdG8gdGhlIG9uZSBzZXQgaW4gSW1hZ2VCYWNraW5nU3RvcmVDYWlyby5jcHAK
ICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fcGl4ZWxz
OwogICAgIHVpbnQzMl90KiBtX3BpeGVsc1B0ciB7IG51bGxwdHIgfTsKICAgICBJbnRTaXplIG1f
c2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKaW5kZXggODg2OTFkYzI1NmQ2ZGQ2YzQ1
ZjQ2ZTAxNTQ5Njc0MjQ1YWEzNTMzNy4uYzk1OGY4NDRkYWMxNDM5NGUyNGRlZmVhYmE3NTRmOWQ4
YTgxMjk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKQEAgLTUxLDkgKzUxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2
b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywg
dW5zaWduZWQgbG9uZyBsb25nKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSB7IFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGQg
YmUgcmVtb3ZlZCBvbmNlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHVzZXMgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlci4KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYgcGxhdGZvcm0sIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgZGF0
YVJlY2VpdmVkKHBsYXRmb3JtLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBsZW5ndGgpKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgU2hhcmVkQnVmZmVyJikgeyBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZWMwYTdhY2Y0NzMyNjFjNzRlN2Vl
ZmZhZGM5Y2NjM2MzZTU3ZjIyOC4uNzcwOGE1OGQyYjU4MDhiOTQwMDJkMjA1ZTk4YTI3YmIyY2U2
ZjMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgV2ViQ29yZUFWQ0ZSZXNvdXJjZUxv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVy
OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCB1aW50OF90Kiwg
aW50KQordm9pZCBXZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImKQogewogICAgIGZ1bGZpbGxS
ZXF1ZXN0V2l0aFJlc291cmNlKHJlc291cmNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGNkZjE0M2YzYzNjZGU5NzFmZDc5
ZGNmNzMyOGJmY2Q3YjMyNjAyZGMuLjYyNjdiZTAwYzU0ZWU2MTcwMmZiNzdiMmE1ZmI1NjdiMjdl
YjlmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VM
b2FkZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCB1aW50OF90KiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5
RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3Vy
Y2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbQppbmRleCBmOTIxZjNkYTBlNjliMzM5OTc3YzllM2U0OTY2N2EyOGY1ZTk1Y2JkLi43
MjY0NzI1YzhlNTYyMmRmMzhiNDViY2Q5OWFjNzg3NTViOWViODg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZG
UmVzb3VyY2VMb2FkZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC02MSw3ICs2
MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogICAgIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwotICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAg
dm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKICAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJl
c291cmNlKENhY2hlZFJlc291cmNlJik7CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZU1lZGlhTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IE4KICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9pZCBDYWNo
ZWRSZXNvdXJjZU1lZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCB1aW50OF90KiwgaW50KQordm9pZCBDYWNoZWRSZXNvdXJjZU1lZGlhTG9hZGVy
OjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZm
ZXImKQogewogICAgIEFTU0VSVCgmcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAgICAgaWYgKGF1
dG8qIGRhdGEgPSByZXNvdXJjZS5yZXNvdXJjZUJ1ZmZlcigpKQpAQCAtMTU2LDcgKzE1Niw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWwgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQogICAg
IGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGRhdGFT
ZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQg
bG9uZyBsb25nKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxl
ZChlcnJvcik7IH0KICAgICB2b2lkIGxvYWRGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsIHsgbG9hZEZhaWxlZChlcnJvcik7IH0K
ICAgICB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbCB7IGxvYWRGaW5pc2hlZCgpOyB9CkBAIC0yMTEsOSArMjEx
LDkgQEAgdm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmxvYWRGaW5pc2hlZCgpCiAg
ICAgbV9wYXJlbnQubG9hZEZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1SZXNvdXJjZU1l
ZGlhTG9hZGVyOjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFM
b2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKLSAgICBtX2J1ZmZlci5hcHBlbmQoV1RGTW92ZShidWZmZXIpKTsK
KyAgICBtX2J1ZmZlci5hcHBlbmQoYnVmZmVyKTsKICAgICBtX3BhcmVudC5uZXdEYXRhU3RvcmVk
SW5TaGFyZWRCdWZmZXIoKm1fYnVmZmVyLmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA5MzAxOTA5OTQ1YjRhMjNkNjY3ODJmMzUw
YjU2ZTQ0NzlmODAyNmYyLi5iN2IwN2ZmMTQ1NGQ1NjFhMzAyMTA4YWUzMjI5MWU4ZjgzNDM3YmQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNzEs
NyArNzEsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50
IHZpcnR1YWwgbWV0aG9kcy4KICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGFjY2Vzc0Nv
bnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGaW5pc2hl
ZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVy
cmlkZTsKQEAgLTEwOTMsNyArMTA5Myw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6WWVzKTsKIH0KIAot
dm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3Zv
aWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1f
c3JjLmdldCgpKTsKQEAgLTExMDcsNyArMTEwNyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJl
YW1pbmdDbGllbnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJh
CiAgICAgLy8gdGhhdCBmaXJzdCBwYWNrYWdlIGRlbGl2ZXJ5IHdvdWxkIGluY2x1ZGUgdGhlIHRp
bWUgb2Ygc2VuZGluZyBvdXQgdGhlIHJlcXVlc3QgYW5kIGdldHRpbmcgdGhlIGRhdGEgYmFjay4g
U2luY2Ugd2UgY2FuJ3QgZGlzdGluZ3Vpc2ggdGhlCiAgICAgLy8gc2VuZGluZyB0aW1lIGZyb20g
dGhlIHJlY2VpdmluZyB0aW1lLCBpdCBpcyBiZXR0ZXIgdG8gaWdub3JlIGl0LgogICAgIGlmICgh
c3RkOjppc25hbihtZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSkpIHsKLSAgICAgICAgbWVtYmVy
cy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgKz0gYnVmZmVyLT5zaXplKCk7CisgICAgICAgIG1lbWJl
cnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzICs9IGRhdGEuc2l6ZSgpOwogICAgICAgICBkb3VibGUg
dGltZVNpbmNlU3RhcnQgPSAoV2FsbFRpbWU6Om5vdygpIC0gbWVtYmVycy0+ZG93bmxvYWRTdGFy
dFRpbWUpLnNlY29uZHMoKTsKICAgICAgICAgR1NUX1RSQUNFX09CSkVDVChzcmMsICJSJXU6IGRv
d25sb2FkZWQgJSIgR19HVUlOVDY0X0ZPUk1BVCAiIGJ5dGVzIGluICVmIHNlY29uZHMgPX4gJTEu
MGYgYnl0ZXMvc2Vjb25kIiwgbV9yZXF1ZXN0TnVtYmVyLCBtZW1iZXJzLT50b3RhbERvd25sb2Fk
ZWRCeXRlcywgdGltZVNpbmNlU3RhcnQKICAgICAgICAgICAgICwgdGltZVNpbmNlU3RhcnQgPyBt
ZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyAvIHRpbWVTaW5jZVN0YXJ0IDogMCk7CkBAIC0x
MTE1LDIwICsxMTE1LDE5IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhCiAgICAgICAgIG1lbWJl
cnMtPmRvd25sb2FkU3RhcnRUaW1lID0gV2FsbFRpbWU6Om5vdygpOwogICAgIH0KIAotICAgIGJ1
ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKLSAgICAgICAgaW50IGxl
bmd0aCA9IHNlZ21lbnQuc2l6ZSgpOwotICAgICAgICBHU1RfTE9HX09CSkVDVChzcmMsICJSJXU6
IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJlciwgbGVuZ3RoKTsKKyAgICBp
bnQgbGVuZ3RoID0gZGF0YS5zaXplKCk7CisgICAgR1NUX0xPR19PQkpFQ1Qoc3JjLCAiUiV1OiBI
YXZlICVkIGJ5dGVzIG9mIGRhdGEiLCBtX3JlcXVlc3ROdW1iZXIsIGxlbmd0aCk7CiAKLSAgICAg
ICAgbWVtYmVycy0+cmVhZFBvc2l0aW9uICs9IGxlbmd0aDsKLSAgICAgICAgQVNTRVJUKCFtZW1i
ZXJzLT5oYXZlU2l6ZSB8fCBtZW1iZXJzLT5yZWFkUG9zaXRpb24gPD0gbWVtYmVycy0+c2l6ZSk7
CisgICAgbWVtYmVycy0+cmVhZFBvc2l0aW9uICs9IGxlbmd0aDsKKyAgICBBU1NFUlQoIW1lbWJl
cnMtPmhhdmVTaXplIHx8IG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA8PSBtZW1iZXJzLT5zaXplKTsK
IAotICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UoR1NUX0VMRU1FTlRfQ0FTVChzcmMp
LCBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudChHU1RfT0JKRUNUX0NBU1Qoc3JjKSwKLSAgICAgICAg
ICAgIGdzdF9zdHJ1Y3R1cmVfbmV3KCJ3ZWJraXQtbmV0d29yay1zdGF0aXN0aWNzIiwgInJlYWQt
cG9zaXRpb24iLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5yZWFkUG9zaXRpb24sICJzaXplIiwg
R19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+c2l6ZSwgbnVsbHB0cikpKTsKKyAgICBnc3RfZWxlbWVu
dF9wb3N0X21lc3NhZ2UoR1NUX0VMRU1FTlRfQ0FTVChzcmMpLCBnc3RfbWVzc2FnZV9uZXdfZWxl
bWVudChHU1RfT0JKRUNUX0NBU1Qoc3JjKSwKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoIndl
YmtpdC1uZXR3b3JrLXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdfVFlQRV9VSU5UNjQs
IG1lbWJlcnMtPnJlYWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5z
aXplLCBudWxscHRyKSkpOworCisgICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKKyAg
ICBHc3RCdWZmZXIqIGJ1ZmZlciA9IGdzdEJ1ZmZlck5ld1dyYXBwZWRGYXN0KGZhc3RNZW1EdXAo
ZGF0YS5kYXRhKCksIGxlbmd0aCksIGxlbmd0aCk7CisgICAgZ3N0X2FkYXB0ZXJfcHVzaChtZW1i
ZXJzLT5hZGFwdGVyLmdldCgpLCBidWZmZXIpOwogCi0gICAgICAgIGNoZWNrVXBkYXRlQmxvY2tz
aXplKGxlbmd0aCk7Ci0gICAgICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVyTmV3V3Jh
cHBlZEZhc3QoZmFzdE1lbUR1cChzZWdtZW50LmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3RoKTsKLSAg
ICAgICAgZ3N0X2FkYXB0ZXJfcHVzaChtZW1iZXJzLT5hZGFwdGVyLmdldCgpLCBidWZmZXIpOwot
ICAgIH0pOwogICAgIHN0b3BMb2FkZXJJZk5lZWRlZChzcmMsIG1lbWJlcnMpOwogICAgIG1lbWJl
cnMtPnJlc3BvbnNlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmgKaW5kZXggOWM0MDU1NzgyNDFkMGM1MTI3MDI5NTE1YzIyMTI2NThmOGM0ZjY4YS4uYjI4
OTZhZTMwYTFiOGNjM2RmMTJhMDc0MTJjZjUwMjIxN2ZjNjgzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oCkBAIC03Niw5ICs3Niw4IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fZW5jb2Rl
ZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3Vz
KCk7Ci0gICAgICAgIGlmIChjb250aWd1b3VzRGF0YS0+ZGF0YSgpKQotICAgICAgICAgICAgbV9k
YXRhID0gY29udGlndW91c0RhdGEtPmJlZ2luKCktPnNlZ21lbnQuY29weVJlZigpOworICAgICAg
ICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisKICAgICAgICAgaWYgKG1fZW5jb2Rl
ZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKICAgICAg
ICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSB0cnVlOwogICAgICAgICAgICAgdHJ5
RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOwpAQCAtMTk0LDcgKzE5Myw3IEBAIHB1YmxpYzoK
ICAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgU2hh
cmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgVmVjdG9yPFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUs
IDE+IG1fZnJhbWVCdWZmZXJDYWNoZSBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fbG9jayk7CiAgICAg
bXV0YWJsZSBMb2NrIG1fbG9jazsKICAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRklt
YWdlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2
aWYvQVZJRkltYWdlUmVhZGVyLmNwcAppbmRleCAyNmY4ODY0OTZlNWE1YTE0ZTI4YWZiMWFmYTli
ZmMzMDE3N2Y1MWNmLi5kNjhjMGEzNWZjMWY0YWI2MDE3YmQzOWVlNDM5MTAyNjgzNWZjODJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FW
SUZJbWFnZVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIEFWSUZJbWFn
ZVJlYWRlcjo6QVZJRkltYWdlUmVhZGVyKFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmIGRlY29k
ZXIpCiAKIEFWSUZJbWFnZVJlYWRlcjo6fkFWSUZJbWFnZVJlYWRlcigpID0gZGVmYXVsdDsKIAot
Ym9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK2Jvb2wgQVZJ
RkltYWdlUmVhZGVyOjpwYXJzZUhlYWRlcihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKQogewogICAgIGlmIChhdmlmRGVjb2RlclNldElPTWVtb3J5KG1fYXZp
ZkRlY29kZXIuZ2V0KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkgIT0gQVZJRl9SRVNVTFRf
T0spCiAgICAgICAgIHJldHVybiBhbGxEYXRhUmVjZWl2ZWQgPyBtX2RlY29kZXItPnNldEZhaWxl
ZCgpIDogZmFsc2U7CkBAIC01OCw3ICs1OCw3IEBAIGJvb2wgQVZJRkltYWdlUmVhZGVyOjpwYXJz
ZUhlYWRlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQVZJRkltYWdlUmVhZGVyOjpkZWNvZGVGcmFtZShz
aXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYgYnVmZmVyLCBjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSkKK3ZvaWQgQVZJRklt
YWdlUmVhZGVyOjpkZWNvZGVGcmFtZShzaXplX3QgZnJhbWVJbmRleCwgU2NhbGFibGVJbWFnZURl
Y29kZXJGcmFtZSYgYnVmZmVyLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgaWYg
KG1fZGVjb2Rlci0+ZmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJl
YWRlci5oCmluZGV4IDQ5NmY2OWY4MTJiZDc1YjBlZGE2MzU3YmFhODYwY2ZjY2I1YmE0YjMuLjg1
YWNiMTdjYmNmYzU4ODVkNmFjNTUyNWM3YjVjOWVmZmM1OGM2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1h
Z2VSZWFkZXIuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgQVZJRkltYWdlUmVhZGVy
KFJlZlB0cjxBVklGSW1hZ2VEZWNvZGVyPiYmKTsKICAgICB+QVZJRkltYWdlUmVhZGVyKCk7CiAK
LSAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50JiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6
ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmKTsKKyAgICBib29sIHBhcnNlSGVhZGVyKGNvbnN0IFNo
YXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIGRlY29kZUZyYW1l
KHNpemVfdCBpbmRleCwgU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSYsIGNvbnN0IFNoYXJlZEJ1
ZmZlciYpOwogICAgIHNpemVfdCBpbWFnZUNvdW50KCkgY29uc3Q7CiAgICAgZG91YmxlIHJlcGV0
aXRpb25Db3VudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCmluZGV4IGJkNDMwZThh
OGJlYTJjODE2YjJjNTIyYmY1YmE3ODg0NmMzOGUwZmYuLmMzMTQxMzQ3OWQ0MzI1MWIyNzhlZGQ2
N2E0NDE5MTZmMDgwMjE5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5oCkBAIC00Miw3ICs0Miw3
IEBAIGNsYXNzIEJNUEltYWdlUmVhZGVyIHsKIHB1YmxpYzoKICAgICAvLyBSZWFkIGEgdmFsdWUg
ZnJvbSB8ZGF0YVtvZmZzZXRdfCwgY29udmVydGluZyBmcm9tIGxpdHRsZSB0byBuYXRpdmUKICAg
ICAvLyBlbmRpYW5uZXNzLgotICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVpbnQxNihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0YSwgaW50IG9mZnNl
dCkKKyAgICBzdGF0aWMgaW5saW5lIHVpbnQxNl90IHJlYWRVaW50MTYoY29uc3QgU2hhcmVkQnVm
ZmVyJiBkYXRhLCBpbnQgb2Zmc2V0KQogICAgIHsKICAgICAgICAgdWludDE2X3QgcmVzdWx0Owog
ICAgICAgICBtZW1jcHkoJnJlc3VsdCwgJmRhdGEuZGF0YSgpW29mZnNldF0sIDIpOwpAQCAtNTIs
NyArNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAg
c3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUg
dWludDMyX3QgcmVhZFVpbnQzMihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGludCBvZmZzZXQp
CiAgICAgewogICAgICAgICB1aW50MzJfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0
LCAmZGF0YS5kYXRhKClbb2Zmc2V0XSwgNCk7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAg
ICBCTVBJbWFnZVJlYWRlcihTY2FsYWJsZUltYWdlRGVjb2RlciogcGFyZW50LCBzaXplX3QgZGVj
b2RlZEFuZEhlYWRlck9mZnNldCwgc2l6ZV90IGltZ0RhdGFPZmZzZXQsIGJvb2wgdXNlc0FuZE1h
c2spOwogCiAgICAgdm9pZCBzZXRCdWZmZXIoU2NhbGFibGVJbWFnZURlY29kZXJGcmFtZSogYnVm
ZmVyKSB7IG1fYnVmZmVyID0gYnVmZmVyOyB9Ci0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9CisgICAg
dm9pZCBzZXREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsg
fQogCiAgICAgLy8gRG9lcyB0aGUgYWN0dWFsIGRlY29kaW5nLiBJZiB8b25seVNpemV8IGlzIHRy
dWUsIGRlY29kaW5nIG9ubHkKICAgICAvLyBwcm9ncmVzc2VzIGFzIGZhciBhcyBuZWNlc3Nhcnkg
dG8gZ2V0IHRoZSBpbWFnZSBzaXplLiBSZXR1cm5zCkBAIC0yNzIsNyArMjcyLDcgQEAgcHJpdmF0
ZToKICAgICBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lKiBtX2J1ZmZlcjsKIAogICAgIC8vIFRo
ZSBmaWxlIHRvIGRlY29kZS4KLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0
YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBtX2RhdGE7
CiAKICAgICAvLyBBbiBpbmRleCBpbnRvIHxtX2RhdGF8IHJlcHJlc2VudGluZyBob3cgbXVjaCB3
ZSd2ZSBhbHJlYWR5IGRlY29kZWQuCiAgICAgc2l6ZV90IG1fZGVjb2RlZE9mZnNldDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlUmVhZGVyLmgKaW5kZXggMTA4MmZkZjBkZmYyMzkxZTU2NTMwYTQxZjg3YmE0Mzk4MjMy
NzUzNS4uZDZiZmZjMTJiMWUxZTQ2ZDQzZDA0N2VkZGMyYWQ5NGI1Yzg1NTNmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVh
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlUmVhZGVyLmgKQEAgLTIzNyw3ICsyMzcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudCYgZGF0YSkgeyBtX2RhdGEgPSAmZGF0YTsgfQorICAgIHZvaWQgc2V0RGF0YShjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpIHsgbV9kYXRhID0gJmRhdGE7IH0KICAgICAv
LyBGSVhNRTogaGFsdEF0RnJhbWUgc2hvdWxkIGJlIHNpemVfdC4KICAgICBib29sIGRlY29kZShX
ZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OkdJRlF1ZXJ5LCB1bnNpZ25lZCBoYWx0QXRGcmFtZSk7
CiAKQEAgLTMxNiw2ICszMTYsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8R0lGRnJhbWVDb250ZXh0PiA+IG1fZnJhbWVzOwogICAgIHNpemVfdCBtX2N1cnJlbnREZWNv
ZGluZ0ZyYW1lOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50PiBtX2RhdGE7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbV9kYXRhOwogICAgIGJvb2wgbV9wYXJzZUNvbXBsZXRlZDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmNDIzY2NjOWNlMTI3ZWY3YWU3NmM5MTI4MjRhYmU4
NzczZmI3MmQxLi40MzUwMzU4ZjNiZWViOWYyNDU4NjNjZTdlMDBhZTgyNzUwZGU3NGNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTMxNyw3ICszMTcsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYnl0ZXNUb1NraXAgPSBzdGQ6Om1heChudW1CeXRlcyAtIGJ5dGVzVG9Ta2lw
LCBzdGF0aWNfY2FzdDxsb25nPigwKSk7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgb25seVNpemUp
CisgICAgYm9vbCBkZWNvZGUoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIG9ubHlTaXpl
KQogICAgIHsKICAgICAgICAgbV9kZWNvZGluZ1NpemVPbmx5ID0gb25seVNpemU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQ
RUcyMDAwSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyMDQ3M2YwZWVl
YmI1NmM3MTMxNGY2NTU2YmRhMDkwMzM0OTA3NDQyLi45MzNhMDEzZjIxYzQ3ZTljYjc5OWViNzJh
YmI3ZTM4Y2ZhYjFhNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnMjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURl
Y29kZXIuY3BwCkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBKUEVHMjAwMEltYWdlRGVjb2Rlcjo6
ZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgIH0KIAogICAg
IHN0cnVjdCBSZWFkZXIgewotICAgICAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2Vn
bWVudCYgZGF0YTsKKyAgICAgICAgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhOwogICAgICAgICBz
aXplX3Qgb2Zmc2V0OwogICAgIH0gcmVhZGVyID0geyAqbV9kYXRhLCAwIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMjcwOWI3YzY4YmY1MzBkMTk1ZDc2NjZhM2Q2YWNlNTAw
MTNiYmUzNC4uNDA0OTYzYTQ3OWMwNWZjMGM2ZDVjMzBlYjdiZWM3ODE1NjlhYjlkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fcmVhZE9mZnNldCA9IDA7CiAgICAgfQogCi0gICAgYm9vbCBkZWNvZGUoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgc2l6ZU9ubHksIHVu
c2lnbmVkIGhhbHRBdEZyYW1lKQorICAgIGJvb2wgZGVjb2RlKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCiAgICAgewogICAgICAg
ICBtX2RlY29kaW5nU2l6ZU9ubHkgPSBzaXplT25seTsKICAgICAgICAgUE5HSW1hZ2VEZWNvZGVy
KiBkZWNvZGVyID0gc3RhdGljX2Nhc3Q8UE5HSW1hZ2VEZWNvZGVyKj4ocG5nX2dldF9wcm9ncmVz
c2l2ZV9wdHIobV9wbmcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCmluZGV4IGIx
YmVjNTVlNzhjNDM0ODAxYzI1NGFjZTBkZjU5OTMxYTM2Yjc0YmQuLjc3MmU4MzI2NmUyMzBlYjZk
ZmY3ZGMxZWY3ZGI1NTIzOTYzYmZiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgV0VCUEltYWdlRGVjb2Rlcjo6ZGVjb2RlKHNpemVf
dCBmcmFtZUluZGV4LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAvLyBUaGlzIGNhbiBiZSBl
eGVjdXRlZCBib3RoIGluIHRoZSBtYWluIHRocmVhZCAod2hlbiBub3QgdXNpbmcgYXN5bmMgZGVj
b2RpbmcpIG9yIGluIHRoZSBkZWNvZGluZyB0aHJlYWQuCiAgICAgLy8gV2hlbiBleGVjdXRlZCBp
biB0aGUgZGVjb2RpbmcgdGhyZWFkLCBhIGNhbGwgdG8gc2V0RGF0YSgpIGZyb20gdGhlIG1haW4g
dGhyZWFkIG1heSBjaGFuZ2UgdGhlIGRhdGEKICAgICAvLyB0aGUgV2ViUERlbXV4ZXIgaXMgdXNp
bmcsIGxlYXZpbmcgaXQgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHBy
b3RlY3QgdGhlIGRhdGEuCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFT
ZWdtZW50PiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CisgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1
ZmZlcj4gcHJvdGVjdGVkRGF0YShtX2RhdGEpOwogICAgIFdlYlBEYXRhIGlucHV0RGF0YSA9IHsg
cHJvdGVjdGVkRGF0YS0+ZGF0YSgpLCBwcm90ZWN0ZWREYXRhLT5zaXplKCkgfTsKICAgICBXZWJQ
RGVtdXhTdGF0ZSBkZW11eGVyU3RhdGU7CiAgICAgV2ViUERlbXV4ZXIqIGRlbXV4ZXIgPSBXZWJQ
RGVtdXhQYXJ0aWFsKCZpbnB1dERhdGEsICZkZW11eGVyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApp
bmRleCBiYThmZDRmZjRmMWU0MWM5YWQ0ZmE3NGE0MmJlNGUyYmQxMWFhODQzLi5kY2FjNTk5N2E2
MTM1ZDJhYjc1OWE3YWQyZWJiMDQzNTJkNTE0YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmNwcApAQCAtMzYs
OSArMzYsMTEgQEAgUmVzb3VyY2VIYW5kbGVDbGllbnQ6OlJlc291cmNlSGFuZGxlQ2xpZW50KCkg
PSBkZWZhdWx0OwogCiBSZXNvdXJjZUhhbmRsZUNsaWVudDo6flJlc291cmNlSGFuZGxlQ2xpZW50
KCkgPSBkZWZhdWx0OwogCi12b2lkIFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVm
ZmVyKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUhhbmRsZUNsaWVu
dDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBk
aWRSZWNlaXZlRGF0YShoYW5kbGUsIGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIGJ1ZmZlci5mb3JFYWNoU2Vn
bWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKGhhbmRsZSwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgfSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGVDbGllbnQuaAppbmRleCBjNGYwNTQ4NWYyODcwYjExNmRhN2M3NjBkM2MwZmNlOTZlYzJi
NGE1Li5lNDQyYzk3MzRjMTE5ODQ5MGExYzZjYWM1NzcyNWZkNTE5NmIzYmI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVu
dC5oCkBAIC00NCwxMyArNDQsMTQgQEAgT0JKQ19DTEFTUyBOU0NhY2hlZFVSTFJlc3BvbnNlOwog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFz
cyBDcmVkZW50aWFsOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIE5ldHdv
cmtMb2FkTWV0cmljczsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJlc291cmNlSGFu
ZGxlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3Mg
U2hhcmVkQnVmZmVyOwogCiBlbnVtIENhY2hlU3RvcmFnZVBvbGljeSB7CiAgICAgU3RvcmFnZUFs
bG93ZWQsCkBAIC02NSw5ICs2Niw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRT
ZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmJ5dGVzU2VudCov
LCB1bnNpZ25lZCBsb25nIGxvbmcgLyp0b3RhbEJ5dGVzVG9CZVNlbnQqLykgeyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90
KiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIHsgfQotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7Ci0gICAg
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
U2hhcmVkQnVmZmVyJiwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgeyB9CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdh
c0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKaW5kZXgg
NGMwNDIxMGM1YTUxM2FjM2Y1NDcxNDZkOWY4NWM4MmJkODgxMzc3Ni4uOWE2YzMxNmViMDZiNGZk
M2M5NjM0ZTBiNWY5MzRlODkxMTIzYWI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5jcHAKQEAgLTcx
LDkgKzcxLDEwIEBAIHZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZUFzeW5jKFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKIH0KIAotdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGlu
dCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pCit2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
LCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQogewotICAgIG1fZGF0YS5hcHBlbmQoZGF0YSwg
bGVuZ3RoKTsKKyAgICBXVEZMb2dBbHdheXMoIiVzIGRpZFJlY2VpdmVEYXRhOiBzaXplOiVkIiwg
X19mdW5jX18sIGludChidWZmZXIuc2l6ZSgpKSk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVu
dDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4IDY4MzhlOWQ4Y2Y0Mzc5NmQyZjM5
NGJhMWY1NGYwOWQwYjY3ZThhYmQuLmM0Y2I3MmRjN2E2NTVmZDM2OTZhMzMzZmUwNWNkZWQ2Mjk3
NmFmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hy
b25vdXNMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKIGNsYXNzIFN5bmNocm9ub3VzTG9h
ZGVyTWVzc2FnZVF1ZXVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN5bmNocm9ub3Vz
TG9hZGVyTWVzc2FnZVF1ZXVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTeW5jaHJvbm91
c0xvYWRlck1lc3NhZ2VRdWV1ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTeW5j
aHJvbm91c0xvYWRlck1lc3NhZ2VRdWV1ZSk7IH0KQEAgLTY2LDcgKzY4LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJl
c3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25l
ZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29k
ZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJh
dG9yLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tCmluZGV4IGZjMjcyNTQwODkyYjhlMmNkNzdkZThmNmQ5ZTU0YThjOGI1
OTdmNjEuLjE5ODE0YTM2NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdl
bmVyYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jh
bmdlUmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJhbmdlUmVz
cG9uc2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQo
V2ViQ29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2
ZXIgPSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUluZGV4ICsg
MSk7CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXI7
Ci0gICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpTaGFyZWRC
dWZmZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcikuY3Jl
YXRlU2hhcmVkQnVmZmVyKCldOworICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciBy
ZWNlaXZlZERhdGE6U2hhcmVkQnVmZmVyRGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhp
c1ZpZXdUb0RlbGl2ZXIpLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKV07CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAgICAgICAg
ICAgIFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0
cmljcyB7IH1dOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsK
ICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5i
dWZmZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBl
bmQoYnVmZmVyKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRo
RmluaXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRl
eCBmOTA5NmVlMmU5ZjI0MmZmMDRkNzA1YzJhYTEwOTNhNTVlNTczNWRiLi5lYTRhOWJmMjk3ODI5
ZWJkMDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAt
MTU4LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vz
c2lvbiA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxv
bmcpYnl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFs
Qnl0ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29t
cGxldGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVs
bGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERh
dGE6KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CistICh2b2lk
KXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291
cmNlIHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhOwogLSAodm9pZClyZXNv
dXJjZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSBy
ZWNlaXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25z
ZSByZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25I
YW5kbGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KT4mJiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkV2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZv
aWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVz
b3VyY2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
ZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1dlYkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggNWUyZThlOGQ5ZDc2NjcyYTI0MTRm
NzZmNWMwOGYyNTllMDI5ZjUwNC4uM2M4YmUwOGMyOTM0ZTU0ZGEzYjc0OWNhNmRhMzRlZGE5NmRj
OWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9X
ZWJDb3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRD
YWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBh
Y2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2Fk
RmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
Jikgb3ZlcnJpZGU7CkBAIC02NTIsMTMgKzY1MiwxMyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3Vy
YwogICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3Bv
bnNlOnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGll
bnQ6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBt
X3Rhc2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFtt
X3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpXVEZNb3ZlKGJ1ZmZlcildOwor
ICAgIFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpidWZmZXIuY3JlYXRl
TlNEYXRhKCldOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6
cmVkaXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC05MzEsMTUgKzkzMSwxNCBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAgIHJl
dHVybiByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5n
ZSkuaXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UqKXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKily
ZXNvdXJjZSByZWNlaXZlZERhdGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YQogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2Up
OwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBS
ZXRhaW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8g
bnNEYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAg
IHN0cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOwor
ICAgICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IFtkYXRhIGxl
bmd0aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRl
ID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9u
LmRlbGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCi0gICAgICAg
ICAgICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYu
Z2V0KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxm
LmdldCgpIGRpZFJlY2VpdmVEYXRhOm5zRGF0YS5nZXQoKV07CisgICAgICAgICAgICBbZGF0YURl
bGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lv
biBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJl
Y2VpdmVEYXRhOmRhdGEuZ2V0KCldOwogICAgIH1dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5k
ZXggZjMyM2FmMjY0MDE2YjY2MzkzMTFhYzIzMjQ2ZWM1ZWQ4MGEzOTU0NS4uM2JkMmNjNzQyODZl
YzQ2Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMjQz
LDcgKzI0Myw3IEBAIGJvb2wgQ3VybENhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVkUmVzcG9uc2UoY29u
c3QgU3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxl
JiBqb2IsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBDdXJsQ2FjaGVN
YW5hZ2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAg
LTI1NSwxMSArMjU1LDExIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwKICAgICAgICAgaWYgKGl0
LT52YWx1ZS0+Z2V0Sm9iKCkgIT0gJmpvYikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAoIWl0LT52YWx1ZS0+c2F2ZUNhY2hlZERhdGEoZGF0YSwgc2l6ZSkpCisgICAgICAgIGlm
ICghaXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKQog
ICAgICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsKIAogICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IHNpemU7CisgICAgICAgICAgICBt
X2N1cnJlbnRTdG9yYWdlU2l6ZSArPSBkYXRhLnNpemUoKTsKICAgICAgICAgICAgIG1fTFJVRW50
cnlMaXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7CiAgICAgICAgICAgICBtYWtlUm9vbUZv
ck5ld0VudHJ5KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCmluZGV4IGM5ZTI5ZDgwOTcwYzQw
NDZlNzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMuLmI2NWI5NjNiNjhlNmE2OGQ5ODE5M2FhZjczZjEw
ODAzZDk3ZmNkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNw
b25zZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmLCBS
ZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSYsIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7IC8vIFNhdmUg
ZGF0YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSYpOwogICAgIHZv
aWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IDM0OTQ0NTkyNTRh
YzkzZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUuLmFhZjBjOGQ5NDA3MDU1ZDY4YTA1NWZiMzUw
Nzk2N2RlNGMwMDg2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJs
RG93bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1
cmxSZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVC
dWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChtX2xpc3RlbmVyKQotICAgICAgICBtX2xpc3RlbmVyLT5kaWRSZWNl
aXZlRGF0YU9mTGVuZ3RoKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9saXN0ZW5lci0+ZGlk
UmVjZWl2ZURhdGFPZkxlbmd0aChidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsRG93bmxv
YWQ6OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgTmV0d29ya0xvYWRNZXRy
aWNzJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmgKaW5kZXggY2RlNDQ0NTc3NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZiZmQ5YmI4
MS4uYTEyMDc1ODM0OTNmNzgzMzc1NmQzYzQ5ODdjZjVjOTVkZmE5NzljNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApAQCAt
MzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0Owog
Y2xhc3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxE
b3dubG9hZExpc3RlbmVyIHsKIHB1YmxpYzoKQEAgLTcyLDcgKzczLDcgQEAgcHJpdmF0ZToKICAg
ICBSZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwog
ICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25n
LCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJlY2Vp
dmVSZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1cmxS
ZXF1ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlk
Q29tcGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3Im
JiwgQ2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAK
aW5kZXggMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0ZC4uZDFlNTg2MjRh
YWVlMmVjZTgxMjlkZDM0ZWE5ODY2MjZlNmNkZjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNw
cApAQCAtMTE5LDEyICsxMTksMTIgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11bHRpcGFy
dEhhbmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAogfQogCi12
b2lkIEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0g
U3RhdGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93
biBzbyBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFr
ZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBl
bmQoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0Nv
bnRlbnQoKSkgeyB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA5YTFhMWJiZDE5MzhhMTRm
NjlmY2NlZTNmMGY4OWI5N2E0YTIxODc0Li41YzA4YmNjNWViM2U0YmJjYzAyOWI0NzY3ODY4ZjQz
ZTJmOTVjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xhc3Mg
Q3VybFJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlwYXJ0
SGFuZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+
Q3VybE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRp
cGFydEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBjODEzODg2YThkNWM1ZmE2YzEyZDE0
MTMzMTkxMDFhZjI1MDJhMmFkLi5kZjc2MzdkZTlkOWZmMmI2YjEwODU1ZDBjNTc3MTI1NTM0YjJh
NmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE11bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAg
Y2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVD
bGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11
bHRpcGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChjb25zdCBT
aGFyZWRCdWZmZXImKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRs
ZUNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYmFjYjJiNTUwYjI4NDEzMWQxYWMyMGFhNjYzODg2
ZmUyMmZlN2Y5OC4uZDBlZjBlNzExNjJiNTM2M2FkNDI1NDE3ZDg1ZWM3MjM4ZjNmNjJiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZl
SGVhZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwg
aGVhZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3Qg
Q3VybFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC00MTEsNyArNDExLDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0Ojpk
aWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAg
ICAgIHJldHVybiBDVVJMX1dSSVRFRlVOQ19QQVVTRTsKICAgICB9CiAKLSAgICBhdXRvIHJlY2Vp
dmVCeXRlcyA9IGJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0gYnVmZmVy
LnNpemUoKTsKICAgICBtX3RvdGFsUmVjZWl2ZWRTaXplICs9IHJlY2VpdmVCeXRlczsKIAogICAg
IHdyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGJ1ZmZlcik7CkBAIC00MjAsOCArNDIw
LDggQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIGlmIChtX211bHRpcGFydEhhbmRsZSkKICAg
ICAgICAgICAgIG1fbXVsdGlwYXJ0SGFuZGxlLT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwogICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1vdmUoYnVm
ZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIGNsaWVudC5jdXJsRGlkUmVjZWl2ZUJ1ZmZlcihyZXF1
ZXN0LCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0g
UmVmIHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVxdWVzdENsaWVudCYg
Y2xpZW50KSB7CisgICAgICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1
ZXN0LCBidWZmZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00NDQs
MTYgKzQ0NCwxNiBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRp
cGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6
OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5j
ZWxsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWNlaXZlQnl0ZXMgPSBidWZm
ZXItPnNpemUoKTsKKyAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci5zaXplKCk7CiAKICAg
ICBpZiAocmVjZWl2ZUJ5dGVzKSB7Ci0gICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1v
dmUoYnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGll
bnQpIG11dGFibGUgewotICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlQnVmZmVyKHJl
cXVlc3QsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFJl
ZiB7IGJ1ZmZlciB9XShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQmIGNs
aWVudCkgeworICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0LCBi
dWZmZXIpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IGE2ZmIzMTU3NjZiYTVjMmYz
ZWEzMmI5ZWY1MWViMDAzZThjYjg5ZDAuLjkyYjc0Njk3YmMzMTc1Y2UwY2RhZGYxNTFmYTI1NDNh
MDNlMTE5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5oCkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBz
ZXR1cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwg
c2l6ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsK
LSAgICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
OworICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFG
cm9tTXVsdGlwYXJ0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
Q29tcGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxU
cmFuc2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RD
bGllbnQuaAppbmRleCAzNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3Li43
MzAzM2YwZWY0ZWI0ZGYyMWFiNzY0NjNjYzM5ODE5YjI4Njc4NDliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQu
aApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNwb25z
ZTsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFz
cyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBD
dXJsUmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVl
c3QmLCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2
ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZENvbXBsZXRlKEN1
cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Y3VybERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRp
ZmljYXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKaW5kZXggMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkxOTc5YzA4ODg5YThhNi4uMzg5N2Uw
MWM2ZDA3NjZkYWNmM2UxOWIyMzczMzZmNWI1NWNlNTI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNSBAQCB2b2lkIEN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1
ZXN0LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpj
dXJsRGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRS
ZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRs
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1
ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24o
KS5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBX
VEZNb3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgQ3VybENhY2hl
TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlcik7Cisg
ICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBidWZmZXIsIGJ1ZmZlci5z
aXplKCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29t
cGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCBkYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVl
ZjljNTRmNmE4YmVmYzcwLi4wMjRiYzRlOWFlMzFkZjI1YThmOWI3MGNiYTI4MWZhY2VhYzhjZjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtMzgsNiArMzgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNl
SGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDsKK2NsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAogY2xhc3MgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUgZmluYWwgOiBwdWJs
aWMgQ3VybFJlcXVlc3RDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1
NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0Jiwg
dW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0
ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxS
ZXF1ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVC
dWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CisgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRC
dWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5l
dHdvcmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9y
KEN1cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3Ry
ZWFtLmNwcAppbmRleCBjMDcwNGYwY2RkNjQ0MjM3M2Y3YjcwYmZlNjE1MzliZjViMzdkNjI1Li4z
NjY1OGY5MWRjOWQ2NzIzMGIyMzllNDk3YzAwMDBhYzYyYWFlOTgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBAIC05LDcg
KzksNyBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDdXJsU3RyZWFtLmgiCiAKICNp
bmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKIAogI2lmIFVTRShDVVJMKQpAQCAtMTI5
LDEwICsxMzAsMTAgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAgIGlmICgh
bV9jdXJsSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlY2VpdmVCdWZmZXIg
PSBtYWtlVW5pcXVlQXJyYXk8dWludDhfdD4oa1JlY2VpdmVCdWZmZXJTaXplKTsKKyAgICBWZWN0
b3I8dWludDhfdD4gcmVjZWl2ZUJ1ZmZlcihrUmVjZWl2ZUJ1ZmZlclNpemUpOwogICAgIHNpemVf
dCBieXRlc1JlY2VpdmVkID0gMDsKIAotICAgIGF1dG8gZXJyb3JDb2RlID0gbV9jdXJsSGFuZGxl
LT5yZWNlaXZlKHJlY2VpdmVCdWZmZXIuZ2V0KCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNS
ZWNlaXZlZCk7CisgICAgYXV0byBlcnJvckNvZGUgPSBtX2N1cmxIYW5kbGUtPnJlY2VpdmUocmVj
ZWl2ZUJ1ZmZlci5kYXRhKCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZlZCk7CiAg
ICAgaWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykgewogICAgICAgICBpZiAoZXJyb3JDb2RlICE9
IENVUkxFX0FHQUlOKQogICAgICAgICAgICAgbm90aWZ5RmFpbHVyZShlcnJvckNvZGUpOwpAQCAt
MTQzLDggKzE0NCw5IEBAIHZvaWQgQ3VybFN0cmVhbTo6dHJ5VG9SZWNlaXZlKCkKICAgICBpZiAo
IWJ5dGVzUmVjZWl2ZWQpCiAgICAgICAgIGRlc3Ryb3lIYW5kbGUoKTsKIAotICAgIG1fc2NoZWR1
bGVyLmNhbGxDbGllbnRPbk1haW5UaHJlYWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0gbV9zdHJl
YW1JRCwgYnVmZmVyID0gV1RGTW92ZShyZWNlaXZlQnVmZmVyKSwgbGVuZ3RoID0gYnl0ZXNSZWNl
aXZlZF0oQ2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICBjbGllbnQuZGlkUmVjZWl2
ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKTsKKyAgICByZWNlaXZlQnVmZmVy
LnJlc2l6ZShieXRlc1JlY2VpdmVkKTsKKyAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50T25NYWlu
VGhyZWFkKG1fc3RyZWFtSUQsIFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVjZWl2ZUJ1ZmZlcikpXShDbGllbnQmIGNsaWVudCkg
eworICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlcik7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFN0cmVhbS5oCmluZGV4IDRmNTliMjBlOGRiMjc5MDM5OTRiMzMxNTRjZTY0YjA5OTRmM2EwYmEu
LmU4YTMyYzI2NDYxYjQzMDhlYTIyN2M2ZGY4Yzk3MjQzOTkwNWQwYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaApAQCAtOSw3ICs5
LDcgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwogICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1
cmxTdHJlYW1TY2hlZHVsZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTb2NrZXRTdHJl
YW1FcnJvcjsKIAogdXNpbmcgQ3VybFN0cmVhbUlEID0gdWludDE2X3Q7CkBAIC00Niw3ICs0Nyw3
IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKEN1
cmxTdHJlYW1JRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0
cmVhbUlELCBzaXplX3QpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KEN1cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXIm
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VSTGNv
ZGUpID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCBiODA0ZmRl
MDk3M2JiZmIyODMzMWNmN2MzYTFmMjBiMDQzZTc0ZmU4Li4zNjZiMDU5YzAyODA0YjE5OWM4ODZh
OWMyYzY3MjczZjkyNGYyZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTU5LDkg
KzU5LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2Vu
ZEludGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2VuZFBlbmRpbmdE
YXRhKCk7CiAKKyAgICAvLyBDdXJsU3RyZWFtOjpDbGllbnQKICAgICB2b2lkIGRpZE9wZW4oQ3Vy
bFN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6
ZV90KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3Qg
dWludDhfdCosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3Ry
ZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChDdXJs
U3RyZWFtSUQsIENVUkxjb2RlKSBmaW5hbDsKIAogICAgIGJvb2wgaXNTdHJlYW1JbnZhbGlkYXRl
ZCgpIHsgcmV0dXJuIG1fc3RyZWFtSUQgPT0gaW52YWxpZEN1cmxTdHJlYW1JRDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggNGI5NDkxYzExNTQzZjJiNjBmMTJk
MzZlOWU2YTBjYmFhZTM0YTcyZS4uYThmNTdhNzJkMGVhY2NhNzc1NWJlODRmY2FhMWM5YmYxMDk1
OGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiRGVw
cmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVD
bGllbnQuaCIKICNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCkBAIC0xMDQsMTIg
KzEwNSwxMiBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFNlbmREYXRhKEN1cmxT
dHJlYW1JRCwgc2l6ZV90IGxlbmd0aCkKICAgICBzZW5kUGVuZGluZ0RhdGEoKTsKIH0KIAotdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNvY2tldFN0cmVhbUhhbmRs
ZUltcGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiBk
YXRhKQogewogICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLCBsZW5ndGgp
OworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRp
ZEZhaWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSBlcnJvckNvZGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50LmgKaW5kZXggMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRlYzI1
Ny4uMGZlNjVhMjllNjM2MTZkYjQyZjdjOWVhMWQxODUyMjFjMjAwNDBjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVk
PExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFu
ZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDMxNWUwNjUxNTMwZGNkYjAyODAx
NjU0Yjc1N2Q4MTQ3M2MyMGZkMzAuLmFlNzE1NWVjZWYzNWQzZTE4ODhkOTE2NTY0NTdlMzgxMTU5
ZGY0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09w
ZXJhdGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTMwMCw3ICszMDAsNyBAQCAtICh2b2lkKWNvbm5l
Y3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0
YSAqKWRhdGEgbAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRl
IGFueSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVz
ZQogICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBz
aG93IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2
ZUJ1ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsK
KyAgICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKICAgICB9OwogCiAgICAgW3NlbGYg
Y2FsbEZ1bmN0aW9uT25NYWluVGhyZWFkOldURk1vdmUod29yayldOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDhkMDU3YmJiNWYxN2MyMDQ1YmZmOTA2ZmY1
YWRhODVmMTA0MjkzMC4uZjdmMjY2Y2U4ZDgxOTEwNjBjODU3YTJmOGE2YWQ5ZmRlYmQ4MTgyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01NDYsOCArNTQ2
LDggQEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkp
OyAvLyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmlu
aXQoKS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNl
dE1JTUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVu
dExvYWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9j
dW1lbnQKLSAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkg
ewotICAgICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFk
ZERhdGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgZGF0YSgpLT5m
b3JFYWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAg
ICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShidWZm
ZXIpOwogICAgICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkt
PndyaXRlcigpLmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXIuY3BwCmluZGV4IDA1OWYzYTM4NmI2Y2Y1ZmE3OWIzYzE4OTcwMTUzMTNmN2NkYjRlZjIu
LjFkZTI1M2M5MmIxYjgxZTcyYWI3MGY5YmI1NjhkNDFmZGUzNzRlMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAg
dm9pZCBNb2NrQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlclJl
c3BvbnNlKTsKIH0KIAotdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCB1aW50
OF90KiwgaW50KQordm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImKQogewogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVy
QWRkRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250
ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgK
aW5kZXggNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFlNzRmNzZiNzU5My4uYjgzOTdiMzBk
OGQ4NWI3YmZmYjM2MjU0NjZmMDY4ODhjMTgyMTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7
CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0
IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA4MmEyYThjNGIx
OGFjY2U3OThiMjdjMmM4ZDAwOTU4OWZmNzVjYmE4Li5hYWNmYzYyYzk0YTlhZmQ4MTY2MmFhYjNi
OTU5ZmQ0ZDE5YmU5ODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckZvbnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJG
b250TG9hZFJlcXVlc3QuY3BwCkBAIC0xMTUsMTIgKzExNSwxMyBAQCB2b2lkIFdvcmtlckZvbnRM
b2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgUgogICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogfQogCi12b2lkIFdvcmtl
ckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgpCit2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CisgICAgV1RGTG9nQWx3YXlzKCIl
cyBkaWRSZWNlaXZlRGF0YTogc2l6ZTolZCIsIF9fZnVuY19fLCBpbnQoYnVmZmVyLnNpemUoKSkp
OwogICAgIGlmIChtX2Vycm9yT2NjdXJyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGF0
YS5hcHBlbmQoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIpOwog
fQogCiB2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckZvbnRMb2FkUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuaAppbmRleCBkYWI3M2ZjN2IxYTkzZWQ0ZTNmZWIzMWQ2NzA5OGQ5OWI1MTc2
YTM5Li43Y2JhYThlNTUxMGM4YzRmY2FmMmViOTJjNmY3M2IzZDJhMTJjNjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmgKQEAgLTYzLDcgKzYz
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzV29ya2VyRm9udExvYWRSZXF1ZXN0KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBi
b29sKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAK
aW5kZXggYmY1YTQ0ZmUzNDhkMmZmY2U5MTZmYjE5NDkxNWU2N2JmZGE5YWVjMS4uMGY5NTllMzNk
OWFiNzk4M2Q1MjI0YjNiNDQxMjQyNzRmMjMzZDU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMjAwLDggKzIwMCw5IEBAIHZvaWQgV29y
a2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsCiAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRl
bnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikKK3ZvaWQgV29ya2VyU2NyaXB0
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1
c2VTdHJMZW4pCiB7CisgICAgV1RGTG9nQWx3YXlzKCIlcyBkaWRSZWNlaXZlRGF0YTogc2l6ZTol
ZCBzdHJMZW46JWQiLCBfX2Z1bmNfXywgaW50KGJ1ZmZlci5zaXplKCkpLCB1c2VTdHJMZW4pOwog
ICAgIGlmIChtX2ZhaWxlZCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTIsMTMgKzIxMywxMSBA
QCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbikKICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAgICB9CiAKLSAgICBp
ZiAoIWxlbikKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAgIGxlbiA9IHN0cmxlbihyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CiAKLSAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVy
LT5kZWNvZGUoZGF0YSwgbGVuKSk7CisgICAgc2l6ZV90IGxlbiA9IHVzZVN0ckxlbiA/IHN0cmxl
bihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSkgOiBidWZmZXIu
c2l6ZSgpOworICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0
YSgpLCBsZW4pKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCBlYWFiZTFlYTVkMTNiMzNmOWMzY2M2
NmRkNDk1NTdlYjY5ZTM3ZWZjLi4wYmMzYTAyNWIzNjc5ZTI1NjMwODYyNGVlZWJhODlkY2NjNDVj
ODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAg
LTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKCkg
Y29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImLCBib29sIHVzZVN0ckxlbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApp
bmRleCBmYmEzNjMyMmIyOWE2ZDViNzk3YjM5ZWRjM2MzZDE3MTI0YjNiNWJjLi5jZTM3MDk2ODlk
OWYwOTIxZTA5MDNhMDM3N2RiMjY4YTU0NTBiMmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaApA
QCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
ZGlyZWN0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8
Rm9ybURhdGE+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA5YjExMmI5ZGIyY2Q4NGQwMzJmNTlkYWZh
OGU4ZTM4ZTA3MGU1M2Y3Li5iYTBmZjg5MDg5NmJmMGZlMDg2YTg1NmFiYzZlNzJmMzliN2JiMzg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTEwMzQsOCArMTAzNCw5
IEBAIFJlZjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlRGVjb2Rl
cigpIGNvbnN0CiAgICAgcmV0dXJuIFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9w
bGFpbiIsICJVVEYtOCIpOwogfQogCi12b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuKQordm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wgdXNlU3RyTGVuKQog
eworICAgIFdURkxvZ0Fsd2F5cygiJXMgZGlkUmVjZWl2ZURhdGE6IHNpemU6JWQgdXNlU3RyTGVu
OiVkIiwgX19mdW5jX18sIGludChidWZmZXIuc2l6ZSgpKSwgdXNlU3RyTGVuKTsKICAgICBpZiAo
bV9lcnJvcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDUyLDE3ICsxMDUzLDE2IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBs
ZW4pCiAgICAgaWYgKHVzZURlY29kZXIgJiYgIW1fZGVjb2RlcikKICAgICAgICAgbV9kZWNvZGVy
ID0gY3JlYXRlRGVjb2RlcigpOwogCi0gICAgaWYgKCFsZW4pCisgICAgaWYgKGJ1ZmZlci5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsZW4gPT0gLTEpCi0gICAgICAgIGxl
biA9IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSk7CisgICAgc2l6
ZV90IGxlbiA9IHVzZVN0ckxlbiA/IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihidWZmZXIuZGF0YSgpKSkgOiBidWZmZXIuc2l6ZSgpOwogCiAgICAgaWYgKHVzZURlY29kZXIp
Ci0gICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRh
LCBsZW4pKTsKKyAgICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVj
b2RlKGJ1ZmZlci5kYXRhKCksIGxlbikpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCdWZmZXIg
YmluYXJ5IGRhdGEuCi0gICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChkYXRh
LCBsZW4pOworICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5hcHBlbmQoYnVmZmVyKTsK
ICAgICB9CiAKICAgICBpZiAoIW1fZXJyb3IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmgKaW5kZXggMmQxM2JlYzM5NDY0NDhiOWI0ZjkyNWQzMmJkODZiYTJkODAzNzc1YS4uNmJmMTlm
ODJiZDJmZjc2NzA3ZGE0NTcxNDc1MDdlOTkxZDI0NjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmgKQEAgLTE2Miw3ICsxNjIsNyBAQCBwcml2YXRlOgogICAgIC8vIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBi
eXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAg
ICB2b2lkIG5vdGlmeUlzRG9uZShib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAppbmRleCA2MTdmNDc2
ODk1NjQyZGVjMjMyNTRiNTQwZWU4MTkxMWFjNGEyZGY2Li43ZjUxMmM2YzExYThlNzEwOGNmMDA2
MmI1ODRkMjdiNTg5MDhkMThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUmVz
b3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
QEAgLTk2LDEwICs5NywxMCBAQCB2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KHVp
bnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTZQogICAgICAgICBtX2Ns
aWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0K
IAotdm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2Vp
dmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAg
ICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIFdURk1vdmUoZGF0YSkpOworICAgICAg
ICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhKTsKIH0KIAogdm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlOjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUmVzb3VyY2UuaAppbmRleCA1YjdhN2UyYTc0MjQ0MzJkODZjYjI4YTFiZTcxNzE4YTE2
NzM3NWU3Li45NTEwNmY2NzIyNzNiNDVmMGEyNGE0N2ExYTJiZGQxNDA5ZTBmNDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
LmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtM
b2FkTWV0cmljczsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRC
dWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTcsNyArNTgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlNob3VsZENvbnRpbnVl
UG9saWN5Q2hlY2spPiYmKTsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9p
ZCBkYXRhU2VudCh1aW50NjRfdCwgdWludDY0X3QpOwotICAgIHZvaWQgZGF0YVJlY2VpdmVkKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRhdGFSZWNl
aXZlZChjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBs
b2FkRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRG
aW5pc2hlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2Fk
LmgKaW5kZXggNzFmZDAyMjI5YmJiMWM1NzMyNmZkZmNmZTI2YzExZjc2MWFiY2Y3Mi4uMDU0Yjg5
M2UxMTExMGRjZjlhNzAwMjUyZjRmNzk1YjAxYTU4N2I5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgKQEAg
LTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNlckZvckNy
ZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JD
cmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
aW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZSB7IH07CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRl
IHsgfTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCmluZGV4IDk1ODYwOTFlYTAw
NDFiNmYxNTg2OWQ0MmJiZGE3MjQzMjk3NjkwZWMuLmJhOGQwNDhmNjVkYzMzOTg0ZjBjZDQ3NjM1
YWI5MTAxODc5YmQzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKQEAgLTEyMCw3ICsxMjAs
NyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGlj
eUFjdGlvbjo6VXNlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKQordm9p
ZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQ09SU19DSEVDS0VSX1JFTEVBU0VfTE9HKCJkaWRS
ZWNlaXZlRGF0YSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggNTA1YTRlZmU1NzFkNDg5
ZTUwYTk4OGJlYjgxODViN2ZlYWIzZGIxMC4uMGNiMzE1ZmQ4ZmY1MzE5OTE1N2RlNzhmODQ1MmQ3
MWM0ZjVlMjk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC0zNyw2ICszNyw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgU2VjdXJpdHlPcmln
aW47CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNzEs
NyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
UmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVD
aGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExl
Z2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVk
TGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZp
bmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7
CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5o
CmluZGV4IDRiOWVlNTc0YjkyYzdjMzcxN2E0YmMyODE5YTZiZTNhMTkwNjU3MTUuLmY0NzllMDkw
MmIyMTc5Mjk1NWQzNzY4MTRiMjFjODlmZjU1ZGI1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIFJlc291
cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9TZW5kKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IDhj
MTA0ZDgxNjBiN2FhZmQwOTk3MTVkYTZkNGU2ZjdjNDYzN2ZhMDguLjYwYjY5YTkzNmJiNzhkZjI1
MTA3NDljNzU0ZmU2YWEyMjkzZmUwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwCkBAIC0yNTQsMTEgKzI1NCwxMCBAQCB2b2lkIE5ldHdvcmtMb2Fk
Ojpub3RpZnlEaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBO
ZWdvdGlhdAogICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJl
c3BvbnNlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtM
b2FkOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
Cit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgdGhlIGVuY29k
ZWQgZGF0YSBsZW5ndGgsIG5vdCB0aGUgZGVjb2RlZCBkYXRhIGxlbmd0aC4KLSAgICBhdXRvIHNp
emUgPSBidWZmZXItPnNpemUoKTsKLSAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlQnVmZmVy
KFdURk1vdmUoYnVmZmVyKSwgc2l6ZSk7CisgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZUJ1
ZmZlcihidWZmZXIsIGJ1ZmZlci5zaXplKCkpOwogfQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKaW5kZXggZTZhNzYxMTU5NjJiOTY1OWU3YmZl
NzhjNmY0ZGM2ZjUzMTJiM2NiZS4uMGU0YzFhZTQ5MjNjMzM3ZjVjZjliMGE0MDhiNWE4ODIyOWY1
OTY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaApAQCAt
ODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRl
ZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlh
dGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0
X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBmaW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQo
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0xvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
bGllbnQuaAppbmRleCAzNDhjZmZiOWU4ZTI1ZWU4M2JiYjM5YTAyY2QzY2Y2ZDI4NTRkMzllLi44
YTI4NTgyNjExM2Y5ZDhlZTY2MGRiNjg4YjNjNTM5M2ZmOTdiMmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVudC5oCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBs
b25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSgpIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAzNmFjYzYzMTQ1ZjQwNWIxOTU1ZDMzNTQwZGFhNzA4
ZjlhNjI5MzQxLi5lNmZkMmFjNzBlYzdlMGU3NTkwYWRlMjcyZTE0MjdmY2U5NmRkZTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC04NjMsMjkgKzg2MywyOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2VuZERpZFJlY2VpdmVSZXNwb25zZVBvdGVudGlhbGx5SW5OZXdCcm93c2luZ0NvbnRleAog
ICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkK
LSAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJl
Y2VpdmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5j
b2RlZERhdGFMZW5ndGgpOwotICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXItPnNpemUo
KTsKKyAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCBy
ZWNlaXZpbmcgZGF0YSAocmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aD0lZCkiLCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKTsKKyAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLnNpemUo
KTsKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKICAgICBpZiAo
bV9idWZmZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93
dGggaW4gY2FzZSBvZiBzdHJlYW1pbmcgZGF0YSBhbmQgbGltaXQgc2l6ZSBvZiBlbnRyaWVzIGlu
IHRoZSBjYWNoZS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNoZUJ1ZmZlclNpemUg
PSBtX2NhY2hlLT5jYXBhY2l0eSgpIC8gODsKLSAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9y
Q2FjaGUuc2l6ZSgpICsgYnVmZmVyLT5zaXplKCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkK
LSAgICAgICAgICAgIG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlci5nZXQoKSk7
CisgICAgICAgIGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci5zaXpl
KCkgPD0gbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSkKKyAgICAgICAgICAgIG1fYnVmZmVyZWREYXRh
Rm9yQ2FjaGUuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYnVm
ZmVyZWREYXRhRm9yQ2FjaGUucmVzZXQoKTsKICAgICB9CiAgICAgaWYgKGlzQ3Jvc3NPcmlnaW5Q
cmVmZXRjaCgpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IEF0IGxlYXN0IG9uIE9T
IFggWW9zZW1pdGUgd2UgYWx3YXlzIGdldCAtMSBmcm9tIHRoZSByZXNvdXJjZSBoYW5kbGUuCi0g
ICAgdW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3Ro
ID49IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLT5zaXplKCk7CisgICAg
dW5zaWduZWQgZW5jb2RlZERhdGFMZW5ndGggPSByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoID49
IDAgPyByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoIDogYnVmZmVyLnNpemUoKTsKIAogICAgIGlm
IChtX2J1ZmZlcmVkRGF0YSkgewotICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVy
LmdldCgpKTsKKyAgICAgICAgbV9idWZmZXJlZERhdGEuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAg
IG1fYnVmZmVyZWREYXRhRW5jb2RlZERhdGFMZW5ndGggKz0gZW5jb2RlZERhdGFMZW5ndGg7CiAg
ICAgICAgIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm47CkBA
IC0xMjczLDcgKzEyNzMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YnVmZmVyaW5n
VGltZXJGaXJlZCgpCiAgICAgbV9idWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCA9IDA7CiB9
CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQnVmZmVyKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlciwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
YnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUKCFpc1N5bmNo
cm9ub3VzKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBjZjEwY2YwZTcxYTFiYzY1NTQwZTg3ZDZiYTRjMWI5
Yzg1NmMwYTFkLi44MTdhZWYyNmM4MzZjMzRhN2Q0NGVlN2NjOTVlZGQ5YTI5OGQ2YTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fz
a1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBbGxvd2VkVG9B
c2tVc2VyRm9yQ3JlZGVudGlhbHM7IH0KICAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJl
c3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVm
ZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgZGlkQmxvY2tBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgpIGZpbmFsOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHN0YXJ0QnVmZmVyaW5nVGltZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgYnVm
ZmVyaW5nVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2VuZEJ1ZmZlcihXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIHNl
bmRCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIHNpemVfdCBl
bmNvZGVkRGF0YUxlbmd0aCk7CiAKICAgICB2b2lkIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygp
OwogICAgIHZvaWQgaW52YWxpZGF0ZVNhbmRib3hFeHRlbnNpb25zKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IGJjMmMzMzdlNGVlZTAxYWY4M2UxMzY3
MjMxN2E5YTllYWJjN2M2ZjguLmYwZWZkMDRiYjJlMThmNmYzY2JjMTYzZmFmMjNkYTA0NjZiZWU1
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0xNzIs
NyArMTcyLDcgQEAgdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgTmVnb3RpYXRlZExlZ2FjeVQKICAgICBkaWRGaW5pc2goeyB9LCBy
ZXNwb25zZSk7CiB9CiAKLXZvaWQgUGluZ0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
U2hhcmVkQnVmZmVyJikKIHsKICAgICBQSU5HX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YSIp
OwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5oCmluZGV4IGU3ODA4ZDhlNjU1ODJmNzkzODg4MjhkNTE3NThjYjE5M2NmNTVmYzcu
LmIyMjVjNDdiOTRhZmEwYjQ0ZWRjMjY3MGRmYzU4YWQ3YWZjOTE0MWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkU2VuZERhdGEo
dWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2Vu
ZCkgZmluYWw7CiAgICAgdm9pZCB3YXNCbG9ja2VkKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCmluZGV4IDE3ZDQ3OTA3YTNmNmVl
NTJiZTY1MDFkMWRhYjBjYTYwNzUxZDZiMGIuLmFhYWUyYmZiZGY4M2EzOWFjZWMwNjNmZWIyNDQ2
MTZkYzg0OGVkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJl
Y29ubmVjdFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29u
bmVjdFRhc2suY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUHJlY29ubmVjdFRhc2s6OmRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOwogfQogCi12b2lkIFBy
ZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUHJlY29ubmVjdFRhc2s6
OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBv
cnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCmluZGV4IDg1
ODA4ZTEyMWI2OGNhOGI3M2UyNTE4ZDE5M2FiMzk1ODFlYWQxZTcuLjhjNmIwZGVlZDY2YzUxMDE5
YmU4OTg0ZWQ1Yjg3ZTBjMWQ3OTBmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcg
bG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZv
aWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCmluZGV4
IDI1ZDRlMzdmOTQ1NGJlZTMyZjA0ZDhjYzhjNDcxZDVkM2Y3ZWQ4MmIuLmU5ZjQzNDQyYjIyNjlj
OWE4YWEzODExZjVlNTcxNDVkYjgwYWMwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckRvd25sb2FkVGFzay5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEb3dubG9h
ZE1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3MuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiV2ViRXJyb3Jz
LmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgpAQCAtMTczLDggKzE3
NCw5IEBAIHZvaWQgU2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6c3RhcnQoKQogICAgIGRvd25s
b2FkUHRyLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsK
IH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2
b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKKyAg
ICBXVEZMb2dBbHdheXMoIiVzIGRpZFJlY2VpdmVEYXRhOiBzaXplOiVkIiwgX19mdW5jX18sIGlu
dChkYXRhLnNpemUoKSkpOwogICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIAogICAgIGlm
IChtX2Rvd25sb2FkRmlsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLmgKaW5kZXggYWI1OWVh
ZTUyNjY1MzA2MjEyYTI4ZTkzMjNhMmI4YjRmZmUwYzc4Zi4uYjg5YWIzZWJkNzYyZjY4MTJhNWU5
N2JmZjY5MGJhOTBmMDI1N2ZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25s
b2FkVGFzay5oCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRm9y
bURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNo
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgRG93bmxvYWRJRCk7
CiAKICAgICAvLyBJUEMgTWVzc2FnZQotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmLCBpbnQ2NF90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZh
aWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KaW5kZXggMWQzYmZiN2NjMzEwOTc5
OWNjODAwMWJiYTcxZDg5YzBmNmYyZDkyZi4uNTBkMmI0MmE3MWIwZWRhYjc5ZmJjZTlkZGI5ZjE5
OTgyZGI1MzU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3du
bG9hZFRhc2subWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIAogbWVzc2FnZXMgLT4gU2Vy
dmljZVdvcmtlckRvd25sb2FkVGFzayBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWlsKFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRC
dWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAg
RGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2Rl
ZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suY3BwCmluZGV4IDRlNzkxOWIzZGRjMDJhZTE0ZDBlZDk2ODRiOGM2OGJiNmYyOGE0
MzQuLmQ0NWYxZjFkOTNlMDU4MTg4ZGIxYWRlZjZmNjgyN2VlNjYzZGI4NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNv
cHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJS
ZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAtMjI1LDggKzIyNSw5IEBAIHZvaWQgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6cHJvY2Vzc1Jlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
Ym9vbCBuCiAgICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsK
IH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVk
QnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKKyAgICBXVEZM
b2dBbHdheXMoIiVzIGRpZFJlY2VpdmVEYXRhOiBzaXplOiVkIiwgX19mdW5jX18sIGludChkYXRh
LnNpemUoKSkpOwogICAgIGlmIChtX2lzRG9uZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MDEs
NyArNDAyLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZyb21QcmVs
b2FkZXIoKQogICAgICAgICAgICAgZGlkRmluaXNoV2l0aE1ldHJpY3MobV9wcmVsb2FkZXItPm5l
dHdvcmtMb2FkTWV0cmljcygpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZlcmVuY2UgeyBjaHVuay0+ZGF0YSgpLCBj
aHVuay0+c2l6ZSgpIH0sIGxlbmd0aCk7CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKFJlZiB7IGNv
bnN0X2Nhc3Q8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciY+KCpjaHVuaykgfSwgbGVu
Z3RoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgK
aW5kZXggYzM0NTgwMjY3ZmIzMjY5ZTZkY2JkY2VmYzM0ZDA2ODJjNmEwODg2Yy4uNTIyNWU1NDU5
OTk1MWQ4ZjgxYzcwYWY4MmViYmEyNjg5ZTM1MDA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5oCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBJUEMgewogY2xhc3Mg
Q29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiBjbGFzcyBGb3JtRGF0YVJlZmVyZW5jZTsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlckNvcHk7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkzLDcg
Kzk0LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFNob3VsZFNldFNvdXJjZSA6IGJvb2wg
eyBObywgWWVzIH07CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmluaXNoV2l0aE1l
dHJpY3MoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCmluZGV4IDE4ZTYyOWYw
ZDE0NmVkMmQ0MjlkYjFiYTI4NzAxZTgzZmI5NmU2MmYuLjdkYjUzZTliZDAzODA0NTQ3M2EyNWFm
MzdkNDdjMTk1Nzk1ZTIzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLm1lc3NhZ2VzLmluCkBAIC0yNyw3ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2sgTm90UmVmQ291bnRlZCB7CiAgICAgRGlkRmFpbChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZm
ZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlk
UmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1EYXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2Ug
ZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKaW5kZXggNWQ5YmQzMzMzOTIxMWNhMWNkNDQ3
Yjg3OTJmNTQ2MWVhODdlZGRmNC4uZTU2NTRjYzMxMzliNDlkNjFhOTg1MTNjZDAxNmJlY2Y3Mzli
YmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25Q
cmVsb2FkZXIuY3BwCkBAIC0xNzUsMTAgKzE3NSwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
cwogICAgICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3Jr
ZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAg
ICAgaWYgKG1fYm9keUNhbGxiYWNrKQotICAgICAgICBtX2JvZHlDYWxsYmFjayhidWZmZXItPm1h
a2VDb250aWd1b3VzKCksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICBtX2Jv
ZHlDYWxsYmFjayhSZWZQdHIgeyAmYnVmZmVyIH0sIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
OwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaAppbmRl
eCA2N2FiYzU1YzYwZmYyNGUzOWRkMDRlY2M1MDIxYjYwNWVlOGJlYmIxLi41Zjg4YWMyYWE4ZGY5
NjI4ZDRjNTlkZGQwOTRmMGNlZTFkMjFhN2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApAQCAtMzYsNiArMzYsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOZXR3b3JrTG9hZE1ldHJpY3M7CitjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU0LDcgKzU1LDcg
QEAgcHVibGljOgogCiAgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
KT47CiAgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmKTsKLSAgICB1
c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47CisgICAgdXNpbmcgQm9k
eUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKICAgICB2
b2lkIHdhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQpAQCAtNzEsNyAr
NzIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZp
bmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAg
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cAppbmRleCA3YTI2MjIxOWRlNzhiMjM1ZDEyNWE5MmI2ZTIzNmQzMzI2MmY3YTI3Li5kOWQ3NDc1
MjUzMmYxODllYjFiZTJjMDNkN2UyOWU4NTllODk2ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBS
ZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpwcm9jZXNzUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwbwogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNv
ZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1f
cmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCkBAIC0xODYsOCArMTg2LDExIEBAIHZvaWQgU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+CiAgICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNv
ZGVyOjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCJfcywgIlVURi04Iik7CiAgICAgfQogCi0gICAg
aWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQotICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
bV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHNpemUp
KTsKKyAgICBpZiAoIWJ1ZmZlci5pc0VtcHR5KCkpIHsKKyAgICAgICAgYnVmZmVyLmZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQo
bV9kZWNvZGVyLT5kZWNvZGUoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKSk7CisgICAg
ICAgIH0pOworICAgIH0KIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAppbmRleCA0NGZj
MDY4NWZhMGZlZGM4NzQyMTkxNmU5MTNhNjc0YjFjMGZkYmVhLi43ZTgxOGYzNDEzZGEyOWY4NjFl
MTAwMzk5MWU4ZDUzODkyMzQ2ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuaApAQCAtNjQsNyArNjQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUJ1
ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwCmluZGV4IDQxZDgyMzUwMjQ3NDdiNmZjNGEzYWM1NDhlMTMzNGVkNmNi
NWVmN2EuLjgxNGViMzIwZDRlNzQ4YTI5YWUwOTEzNWFmYzFkYTVmMzc1MTVlZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTEyMCwxNSArMTIwLDE1IEBAIHZvaWQg
U3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uc2UsIFJlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpV
c2UpOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQordm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0
YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeSk7CiAKICAgICBpZiAobV9idWZm
ZXJlZERhdGFGb3JDYWNoZSkgewogICAgICAgICAvLyBQcmV2ZW50IG1lbW9yeSBncm93dGggaW4g
Y2FzZSBvZiBzdHJlYW1pbmcgZGF0YS4KICAgICAgICAgY29uc3Qgc2l6ZV90IG1heGltdW1DYWNo
ZUJ1ZmZlclNpemUgPSAxMCAqIDEwMjQgKiAxMDI0OwotICAgICAgICBpZiAobV9idWZmZXJlZERh
dGFGb3JDYWNoZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJT
aXplKQotICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdl
dCgpKTsKKyAgICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVy
LnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV9idWZmZXJlZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oCmluZGV4IDFiODQzZGI3ZWMyNzBkYjlkYWI5ZThhMjVmMmE0OGE4ZWNhZTJh
OGEuLjlhZGNhNjA1ZTcyODBiYjdiMzRjZTc0NGQ4Nzg4YmJiNDQ4OTI0ZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuaApAQCAtNjEsNyArNjEsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9y
dGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IDQxNjY4YTViMWNkNzM4Njk2N2I4ZmQ5NzNlOTY3MzJl
Y2E5MDdlZGMuLjA3NzJhZjFhODZkMjI0MTdiZjExZjE2YmQ2YjdiNTgwZmU1N2E3YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNr
Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmgKQEAgLTM4LDYgKzM4LDcgQEAgT0JKQ19DTEFTUyBOU011dGFibGVVUkxS
ZXF1ZXN0OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Miw3ICs2
Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBVUkwm
KTsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKTsKIAogICAgIHZv
aWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYm
KTsKICAgICB2b2lkIHRyYW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoRG93bmxvYWQm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IDQ3NzFmZGU5MjBkNmI5OGU4M2ZjMjlkZDNhYWY5
N2EwYTZkOWE4ODAuLjY0OWI1Y2E3OGM2ODc1ZWNkZTBkM2Q0MzZmOTU5MGRiNTE3OWQwYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtNDQzLDEyICs0NDMsMTIgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXIKICAgICAgICAgbV9jbGllbnQtPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBu
ZXR3b3JrTG9hZE1ldHJpY3MpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhKQor
dm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIFdURkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCks
ICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQgYnl0ZXMiLCBkYXRhLT5zaXplKCkpOworICAgIFdU
RkVtaXRTaWducG9zdChtX3Rhc2suZ2V0KCksICJEYXRhVGFzayIsICJyZWNlaXZlZCAlemQgYnl0
ZXMiLCBkYXRhLnNpemUoKSk7CiAKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlRGF0YShXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJl
Y2VpdmVEYXRhKGRhdGEpOwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBOZWdvdGlh
dGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFdlYktpdDo6UmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCmluZGV4IDg0
NjY5ZTIwOWQ3N2JmNTJhMzZhZmUyYTdkYWIyNTJhNjkwMGRjZjcuLjEzZmNjN2JkNDhhNTVhMDkz
OTEyOTI2YmE0NDg0Y2Y1ZTM1NTEzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TYW1lU2l0ZUluZm8uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hv
dWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N5
bmNocm9ub3VzTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8cGFsL3RleHQvVGV4dEVuY29kaW5n
Lmg+CkBAIC0xNzIsMTMgKzE3MywxMyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxE
aWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXNwbwogICAgIGlu
dm9rZURpZFJlY2VpdmVSZXNwb25zZSgpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6
OmN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2
ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBS
ZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkNh
bmNlbGluZyB8fCBzdGF0ZSgpID09IFN0YXRlOjpDb21wbGV0ZWQgfHwgKCFtX2NsaWVudCAmJiAh
aXNEb3dubG9hZCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKFdURk1vdmUoYnVmZmVyKSk7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGJ1
ZmZlcik7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3VybERpZENvbXBsZXRlKEN1
cmxSZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYgbmV0d29ya0xvYWRNZXRyaWNzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRh
c2tDdXJsLmgKaW5kZXggNDViZTVjZTE4NDMyNTI3MWQ1YzA4MGRkMzRmMWVlNGExNjY0MmExZi4u
ZTU1ODY0YTk1ZjdiY2JjMDg1YzQ2NjI4YmZmMDU4NTczNTczMjg2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5o
CkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEN1cmxSZXF1
ZXN0OworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY4
LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBSZWY8V2ViQ29yZTo6Q3VybFJlcXVlc3Q+IGNyZWF0
ZUN1cmxSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZXF1ZXN0U3RhdHVzID0g
UmVxdWVzdFN0YXR1czo6TmV3UmVxdWVzdCk7CiAgICAgdm9pZCBjdXJsRGlkU2VuZERhdGEoV2Vi
Q29yZTo6Q3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9u
Zykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OkN1
cmxSZXF1ZXN0JiwgV2ViQ29yZTo6Q3VybFJlc3BvbnNlJiYpIG92ZXJyaWRlOwotICAgIHZvaWQg
Y3VybERpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBSZWY8V2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJsRGlkUmVj
ZWl2ZURhdGEoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShXZWJDb3JlOjpDdXJsUmVx
dWVzdCYsIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYmKSBvdmVycmlkZTsKICAgICB2b2lk
IGN1cmxEaWRGYWlsV2l0aEVycm9yKFdlYkNvcmU6OkN1cmxSZXF1ZXN0JiwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYmLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mJikgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAppbmRleCAxN2Yw
OGMyOGVhMTI1YjU1MDk5M2VlZDI0ZDU5NjNiODUxMGExMTQxLi41N2IxNDZlNThlN2E5ZGE3MDI2
YzlkZWU1MjAzOTU1MWFkYWI3MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVy
Lmg+CiAKIG5hbWVzcGFjZSBJUEMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5k
ZXggOWNkZWQ5NjkzNTE1Y2JkYjkyNWY1OTU0YTE2ZjRiYWYwNjdhMzE2Mi4uNmMxOWJjOWJhYjY0
MTAzMzMwMDczYjQxYzVhZTFkOGVkMDFjM2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFk
ZXIuY3BwCkBAIC0xODUsOSArMTg1LDkgQEAgdm9pZCBNZWRpYUZvcm1hdFJlYWRlcjo6ZGlkUGFy
c2VUcmFja3MoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb24KICAgICBB
U1NFUlQoIWlzTWFpblJ1bkxvb3AoKSk7CiAKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wYXJzZVRy
YWNrc0xvY2sgfTsKLSAgICBBU1NFUlQoIW1fcGFyc2VUcmFja3NTdGF0dXMpOwotICAgIEFTU0VS
VChtX2R1cmF0aW9uLmlzSW52YWxpZCgpKTsKLSAgICBBU1NFUlQobV90cmFja1JlYWRlcnMuaXNF
bXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fcGFyc2VUcmFja3NTdGF0dXMgfHwgKG1faW5pdCAmJiBl
cnJvckNvZGUpKTsKKyAgICBBU1NFUlQobV9kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCAobV9pbml0
ICYmIGVycm9yQ29kZSkpOworICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5pc0VtcHR5KCkgfHwg
KG1faW5pdCAmJiBlcnJvckNvZGUpKTsKIAogICAgIEFMV0FZU19MT0dfSUZfUE9TU0lCTEUoTE9H
SURFTlRJRklFUik7CiAgICAgaWYgKGVycm9yQ29kZSkKQEAgLTIyMSw2ICsyMjEsNyBAQCB2b2lk
IE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpJbml0aWFsaXphdGlvbgogICAgIH0KIAogICAgIG1fcGFyc2VUcmFja3NDb25kaXRpb24u
bm90aWZ5QWxsKCk7CisgICAgbV9pbml0ID0gdHJ1ZTsKIH0KIAogdm9pZCBNZWRpYUZvcm1hdFJl
YWRlcjo6ZGlkUHJvdmlkZU1lZGlhRGF0YShSZWY8TWVkaWFTYW1wbGU+JiYgbWVkaWFTYW1wbGUs
IHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRl
ci5oCmluZGV4IDM3ZTRhZDQyNzZiMTJhZDUxNDNkYzIyOGNkZTk0NzYzODdlNWM4ODguLjY1MDkz
ZTllNDZiNDBiNWEzOTc2ZmRlZjI5ZTYxM2M2NDUxZjMxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5oCkBAIC04Nyw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZjxNZWRp
YVRyYWNrUmVhZGVyPj4gbV90cmFja1JlYWRlcnMgV1RGX0dVQVJERURfQllfTE9DSyhtX3BhcnNl
VHJhY2tzTG9jayk7CiAgICAgUmVmUHRyPGNvbnN0IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29u
c3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOworICAgIGJvb2wgbV9pbml0IHsgZmFsc2UgfTsKIH07
CiAKIGNvbnN0ZXhwciBNZWRpYUZvcm1hdFJlYWRlcjo6V3JhcHBlckNsYXNzIE1lZGlhRm9ybWF0
UmVhZGVyOjp3cmFwcGVyQ2xhc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcAppbmRleCBlMTI2NGNlMjFiYTU3ZjJhNDI3NDhlMzNhMWRhZDg4YTBlMjU4
YmMyLi5kNzY3ZmMwNmIzNmYxNTZmZjMxYzM4M2U2NDNkNDM0NGMyMTdhYWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMTY4LDcgKzE2OCw3
IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5v
bmU7CiB9CiAKLWF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCithdXRvIFdlYlVS
TFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSAt
PiBFeGNlcHRpb25UeXBlCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAt
MTg3LDExICsxODcsMTEgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEUKICAgICBtX2RhdGFTZW50
ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewotICAgICAgICBtX3N5bmNEYXRhLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICBtX3N5bmNEYXRhLmFwcGVuZChidWZmZXIpOwog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSht
X3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZm
ZXIuZ2V0KCkpLCBtX3dlYlBhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5p
ZGVudGlmaWVyKCksIG1fcmVzb3VyY2VMb2FkZXJJRCwgYnVmZmVyKSwgbV93ZWJQYWdlSUQpOwog
ICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggZjZmZjQ2ZWVhNWYyOTBiN2I3ZTNmZTU5MjFk
ZjlmMTk0YmFjZDExNy4uYzMyMzA2OWIxY2MwMzFmMDI1YjIyYzg1OWEzNTQxODhmZGQyMzcyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtODMsNyAr
ODMsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uVHlwZSB3aWxsUGVyZm9ybVJlZGlyZWN0aW9u
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
ICBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgRXhj
ZXB0aW9uVHlwZSBkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIEV4
Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgRXhjZXB0aW9uVHlwZSBkaWRDb21wbGV0ZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAKICAgICB2b2lkIHN0b3AoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFS
ZXNvdXJjZVByb3h5LmNwcAppbmRleCBiNTEzYTI2ODA4ZWFhMThlMzdmNGZkZjA0YTIzZDI5NjBi
MjczYjJjLi45MjM0YjVjNjUzZjkxZWJhOTEwZmJkZjliZTFlMjJhMDJjMTFjNjc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVNZWRpYVJlc291cmNlUHJveHkuY3BwCkBAIC03MiwyMCArNzIsMTcgQEAgdm9pZCBSZW1vdGVN
ZWRpYVJlc291cmNlUHJveHk6OmRhdGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIHVuc2lnbmUKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlh
UmVzb3VyY2VNYW5hZ2VyOjpEYXRhU2VudChtX2lkLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0Jl
U2VudCksIDApOwogfQogCi12b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2Vp
dmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBsZW5ndGgpCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVJlY2VpdmVk
KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewotICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojph
bGxvY2F0ZShsZW5ndGgpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojpj
b3B5QnVmZmVyKGJ1ZmZlcik7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gc2hhcmVkTWVtb3J5UHRyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHNoYXJl
ZE1lbW9yeS0+ZGF0YSgpKTsKLSAgICBtZW1jcHkoc2hhcmVkTWVtb3J5UHRyLCBkYXRhLCBsZW5n
dGgpOwotCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIHNoYXJlZE1lbW9y
eS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25s
eSk7CiAgICAgLy8gVGFrZSBvd25lcnNoaXAgb2Ygc2hhcmVkIG1lbW9yeSBhbmQgbWFyayBpdCBh
cyBtZWRpYS1yZWxhdGVkIG1lbW9yeS4KICAgICBoYW5kbGUudGFrZU93bmVyc2hpcE9mTWVtb3J5
KE1lbW9yeUxlZGdlcjo6TWVkaWEpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UmVtb3RlTWVkaWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBTaGFyZWRNZW1v
cnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGxl
bmd0aCkgfSksIDApOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFSZWNlaXZlZChtX2lkLCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgYnVmZmVyLnNpemUoKSB9KSwgMCk7CiB9CiAKIHZvaWQg
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjphY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaAppbmRleCA0N2VhODY2NzFiMTNkMTM5NWMz
ZGFkOWJkYTc5YWJmNjE2Y2JhMTc5Li45NDk0NjQ1MjJjMjYzZTZhNWU4MDczZjc0ZTlkMjQzNGJh
YTkzOTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJl
c291cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJikgZmluYWw7CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKICAgICB2b2lkIGRhdGFTZW50KFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBmaW5hbDsKLSAgICB2
b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChXZWJDb3JlOjpQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBmaW5hbDsK
ICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9p
ZCBsb2FkRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGxvYWRGaW5pc2hlZChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJp
Y3MmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBkNzFhZTVlMGE5YWYzZDllZTNhNTFkOGZjZjUw
ZmU1MzU5YjM5MGI3Li5jZDI4MTc0NTgyY2FiYTU1MTYzYTFmMzMyY2RjYzdjM2QwYzkyM2M5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNv
dXJjZUxvYWRlck1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgog
I2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC0yMDAsMTYgKzIwMSwxNiBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGJvbwogICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNl
LCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2
NF90IGVuY29kZWREYXRhTGVuZ3RoKQogeworICAgIFdURkxvZ0Fsd2F5cygiJXMgZGlkUmVjZWl2
ZURhdGE6IHNpemU6JWQgZW5jb2RlZERhdGFMZW5ndGg6JWQiLCBfX2Z1bmNfXywgaW50KGRhdGEu
c2l6ZSgpKSwgaW50KGVuY29kZWREYXRhTGVuZ3RoKSk7CiAgICAgTE9HKE5ldHdvcmssICIoV2Vi
UHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZv
ciAnJXMnIiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdv
cmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3
ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRl
cmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigp
KSkpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIo
bV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsg
KnRoaXMgfSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBt
dXRhYmxlIHsKKyAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRl
ci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1
ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0
YSh7IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7
CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVk
RGF0YUxlbmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjE4
LDcgKzIxOSw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgICAgIFdFQlJFU09VUkNF
TE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0
YSIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAotICAgIG1fY29y
ZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVk
RGF0YUxlbmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1
ZmZlcigpID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7
CisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
RmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRN
ZXRyaWNzKQpAQCAtMzA2LDcgKzMwOCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAg
TE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJl
c291cmNlOiIpOwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20g
U2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7CkBAIC0z
MjMsNyArMzI1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNl
KGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKIAogICAgIC8vIE9ubHkgc2Vu
ZCBkYXRhIHRvIHRoZSBkaWRSZWNlaXZlRGF0YSBjYWxsYmFjayBpZiBpdCBleGlzdHMuCiAgICAg
aWYgKHVuc2lnbmVkIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9jb3Jl
TG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJT
aXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICBtX2NvcmVMb2FkZXItPmRp
ZFJlY2VpdmVEYXRhKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5
bG9hZFdob2xlUmVzb3VyY2UpOwogCiAgICAgaWYgKCFtX2NvcmVMb2FkZXIpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oCmluZGV4IGEyMmU2MmYyOGI1ZmE0Y2ZjOTFhYTVlNWNlODJjYTI3YWUyNmFk
NTMuLmFjNTQyMmZjMDY3MTBiZDBlMDg3ZTBmNDQwOWVkOTQwMTdjMGNmMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApA
QCAtMzksNiArMzksNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJl
bmNlOworY2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtODAsNyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1
aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJv
b2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZl
ckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmlu
aXNoUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAg
IHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CiAgICAgdm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCAwMmExNGY1OWEzMDQ3
NDRjMmQxODNlYTc5ZTk5ZWJhZWI0Y2ZiYmEyLi5kYWEyNGQyN2M3MWE4M2NmN2MwZjE2OGRhMjZh
NDliNDg3NjkyNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQs
NyBAQCBtZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAg
V2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
ZGlyZWN0UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2
ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpCiAgICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyBuZXR3b3JrTG9hZE1ldHJpY3MpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yKQogICAgIERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oCmluZGV4IDhkMmM1ZjNlMjVjYTFhMjM3OGU1ZTMwMDVkNzU0
OTJiZWFmMGIxZWEuLjJiN2U0ZDJjMjBmZGQxOTk4ODI3MmRhOGJmY2M1YTYxODZjNmQzZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgK
QEAgLTY1LDYgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNo
ZTsKIGNsYXNzIEVsZW1lbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xNzYsMTEgKzE3NywxMSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qg
U3RyaW5nJiByZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9u
c2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1EaWRS
ZWNlaXZlUmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkws
IHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7
CisgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hM
b2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwo
dWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1h
bnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50
MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZv
aWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7
CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsK
ICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIGZpbmFsOwpA
QCAtMzYyLDcgKzM2Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNw
b25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmFp
bChXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNv
cmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGU1ZmEwNzEw
OWE5MzE4NDUzOWZiMWUyNDcwYTNmOTM4NmQ0MzE1NTguLmZhNmNlNmY2OWZjMDJmNzAxZjg4NTEz
ODg0NzVkZWYzZjI0MzE0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtOTQsNiArOTQsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9TY3JvbGxBbmltYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2hlZWxFdmVudFRlc3RNb25pdG9yLmg+CiAjaW1wb3J0IDxw
YWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgpAQCAtMTE5MSw3ICsxMTkyLDcgQEAgdm9pZCBQ
REZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KE5ldHNjYXBlUGx1Z0luU3QKICAgICB9CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5T
dHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBjb3VudCkKK3ZvaWQgUERGUGx1
Z2luOjpQREZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsK
ICAgICBpZiAoIW1fcGRmUGx1Z2luKQogICAgICAgICByZXR1cm47CkBAIC0xMjAwLDcgKzEyMDEs
NyBAQCB2b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLCBjb3VudCk7CisgICAgcmVxdWVz
dC0+YWRkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBERlBsdWdp
bjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQpAQCAtMTcxOCwxNSArMTcx
OSwxNSBAQCB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBVUkwmLCB1aW50MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlwdCA9
IHRydWU7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRf
dCBzdHJlYW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBs
dWdpbjo6c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVhbUlE
ID09IHBkZkRvY3VtZW50UmVxdWVzdElEKTsKIAogICAgIGlmICghbV9kYXRhKQogICAgICAgICBt
X2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAgQ0ZEYXRh
QXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCBieXRlcywgbGVuZ3RoKTsKLSAgICBtX3N0cmVhbWVk
Qnl0ZXMgKz0gbGVuZ3RoOworICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZl
ci5zaXplKCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVp
bnQ2NF90IHN0cmVhbUlEKQpAQCAtMTc2MywxNCArMTc2NCwxNCBAQCB2b2lkIFBERlBsdWdpbjo6
ZW5zdXJlRGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAgIENG
RGF0YUluY3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExl
bmd0aCk7CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBp
ZiAoIW1fZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxl
KDAsIDApKTsKIAotICAgIGVuc3VyZURhdGFCdWZmZXJMZW5ndGgobV9zdHJlYW1lZEJ5dGVzICsg
bGVuZ3RoKTsKLSAgICBtZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgp
KSArIG1fc3RyZWFtZWRCeXRlcywgYnl0ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVz
ICs9IGxlbmd0aDsKKyAgICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyAr
IGJ1ZmZlci5zaXplKCkpOworICAgIG1lbWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2Rh
dGEuZ2V0KCkpICsgbV9zdHJlYW1lZEJ5dGVzLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKKyAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gYnVmZmVyLnNpemUoKTsKIAogI2lmIEhBVkUoSU5D
UkVNRU5UQUxfUERGX0FQSVMpCiAgICAgLy8gS2VlcCBvdXIgcmFuZ2VzLWxvb2t1cC10YWJsZSBj
b21wYWN0IGJ5IGNvbnRpbnVvdXNseSB1cGRhdGluZyBpdHMgZmlyc3QgcmFuZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggMWQ4NDQ4MDVmNGMxMGU5M2Zl
ZGNhYmRlZWMyMWRkMzVkZGY4ODIwMi4uZTRkNjJmNGJlYTliZmMyZmE4MGVmNGQ2ZTkwYzVjY2Yw
Njc5NGY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAg
LTU0LDEyICs1NCwxMyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0xNjAsNyArMTYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3Ry
ZWFtIGRpZCByZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVE
YXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVsbHMg
dGhlIHBsdWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAwOwpA
QCAtMTczLDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlTmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFu
dWFsIHN0cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJl
YW1EaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEg
c3RyZWFtIGhhcyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJl
YW1EaWRGaW5pc2hMb2FkaW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA1MzRkYTUyZDQ3ZDYyODUwZTIwNWZmOWU5OWMz
MGIzN2QzYmNiYTEyLi4wMzQ0ZjRiZTIzYTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApA
QCAtMTI3LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1M
b2FkZXJDbGllbnQKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4
X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKikgb3ZlcnJpZGU7CiAKQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFBsdWdpblZp
ZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
KiwgY29uc3QgUgogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZp
ZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVk
RmlsZW5hbWUoKSk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0
YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQordm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAg
bV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwg
Ynl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVj
ZWl2ZURhdGEobV9zdHJlYW1JRCwgYnVmZmVyKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJl
YW06OmRpZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxM
b2FkRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkws
IHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhl
YWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZp
ZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxl
bmd0aCkKK3ZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhl
cmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKQEAgLTM4
MiwxMSArMzgyLDExIEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRh
KGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlh
bGl6ZWQpIHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3Ry
ZWFtU3RhdGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURh
dGEuYXBwZW5kKGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBw
ZW5kKGJ1ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BsdWdpbi0+bWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW4tPm1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6
bWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKQpAQCAtMTE3MSw5ICsxMTcxLDkgQEAgdm9pZCBQ
bHVnaW5WaWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUg
ZGF0YS4KICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVy
ID0gbV9tYW51YWxTdHJlYW1EYXRhLnRha2UoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBl
bGVtZW50IDogYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVE
YXRhKGVsZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7Cisg
ICAgICAgIG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRC
dWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNl
aXZlRGF0YShidWZmZXIpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxT
dHJlYW1TdGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZjY2MzEyYTgwYWNkMWUw
MzUzMTBkZmFhM2E1ZjNhMTdiNzJhYWU1NS4uMjU2MTVjYjMwZjIyNjQ2MzkyNDQ0ODhmMmJkN2M0
MTIyNzkwNzliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJv
eWVkKCkgY29uc3QgeyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJv
eWVkKCk7IH0KIAogICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFs
TG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZv
aWQgbWFudWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRG
YWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCBlZTQwZmI5NTg1ZTc5ZDg2YjNjZmQyZjU3OWVkNDZl
NjFiOWVjNjNlLi44OWRlMTBiMDQ4OTQxZTA3ZmMzNWFkY2VhNTk2MWVhYzlkMWRjYjRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2
b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1f
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZp
ZXIpOwogfQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsK
QEAgLTgwLDE0ICs4MCwxNCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgIGlmIChtX3dh
aXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKICAgICAgICAgaWYg
KCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VE
YXRhKSkKICAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigp
OwotICAgICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSku
YXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1
aWxkZXI+KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBi
dWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2Zl
dGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19j
YXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICBl
bHNlCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0
X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2
ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1f
ZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRh
KQpAQCAtMTM2LDE1ICsxMzYsMTYgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxv
YkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogeworICAgIFdURkxvZ0Fsd2F5cygiJXMgZGlkUmVjZWl2ZUJsb2JDaHVu
azogc2l6ZTolZCIsIF9fZnVuY19fLCBpbnQoYnVmZmVyLnNpemUoKSkpOwogICAgIGlmICghbV9j
b25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc0Rvd25sb2FkKQotICAg
ICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBkYXRhLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+
KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1
ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLnNpemUoKSkgfSwgbV9mZXRjaElkZW50
aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBz
dGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
UmVjZWl2ZURhdGEgeyBidWZmZXIgLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXIuc2l6ZSgp
KSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQpAQCAtMjI4LDcgKzIyOSw3IEBAIHZv
aWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6Y29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKQogICAgICAgICBpZiAobV9kaWRGaW5pc2gpCiAgICAgICAgICAgICBkaWRGaW5pc2go
KTsKICAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVmZmVyQnVpbGRlciYgYnVmZmVyKSB7Ci0g
ICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0KCkpOworICAgICAgICBkaWRSZWNlaXZl
RGF0YShidWZmZXIuY29weSgpLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgaWYgKG1fZGlk
RmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7CiAgICAgfSwgW3RoaXNdKFJlZjxGb3Jt
RGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5k
ZXggZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4MmI0YjM4NTYyOTY4YTJiNmM5Yy4uMDk0MDBkZjBjZTcy
NWYzOWE4YjExZDkzNWUxNDU0ZTM5OWY1YTI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1E
YXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0YT4mJikgZmluYWw7CiAgICAgdm9pZCBk
aWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2b2lkIGRp
ZEZpbmlzaCgpIGZpbmFsOwpAQCAtNjAsOCArNjAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29u
dmVydEZldGNoVG9Eb3dubG9hZCgpIGZpbmFsOwogCiAgICAgdm9pZCBjbGVhbnVwKCk7Ci0gICAg
Ci0gICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJik7CiAgICAgdm9pZCBkaWRGaW5pc2hCbG9iTG9hZGluZygpOwogCiAgICAgc3RydWN0
IEJsb2JMb2FkZXIgZmluYWwgOiBXZWJDb3JlOjpGZXRjaExvYWRlckNsaWVudCB7CkBAIC02OSw3
ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgLy8gRmV0Y2hMb2FkZXJDbGllbnQgQVBJCiAg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKSBmaW5hbCB7IH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBjbGllbnQtPmRpZFJlY2VpdmVCbG9iQ2h1
bmsoZGF0YSwgc2l6ZSk7IH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpIGZpbmFsIHsgY2xpZW50LT5kaWRSZWNlaXZlQmxvYkNo
dW5rKGRhdGEpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcnJvcikgZmluYWwgeyBjbGllbnQtPmRpZEZhaWwoZXJyb3IpOyB9CiAgICAgICAg
IHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsgY2xpZW50LT5kaWRGaW5pc2hCbG9iTG9hZGluZygp
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDE0YTA4M2NhMjA3YTkw
NjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQzOTkuLjM4YTVkMWY2MDg1ZDk3YmZjMzExMDAwMjI0YzUw
MzQ5MDQwZjYxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTE1Miwx
MCArMTE1MiwxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlw
YXJ0Q29udGVudCgpCiAgICAgd2ViUGFnZS0+ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQobV9m
cmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogeworICAgIFdURkxvZ0Fsd2F5cygiJXMg
Y29tbWl0dGVkTG9hZDogc2l6ZTolZCIsIF9fZnVuY19fLCBpbnQoZGF0YS5zaXplKCkpKTsKICAg
ICBpZiAoIW1fcGx1Z2luVmlldykKLSAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEsIGxl
bmd0aCk7CisgICAgICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhKTsKIAogICAgIC8vIElmIHRo
ZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJp
Z2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9hZC4KICAgICAvLyBGSVhNRTogVGhpcyBj
b2RlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6Ly93ZWJraXQub3Jn
L2IvNDg3NjI+LgpAQCAtMTE3Nyw3ICsxMTc4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90Kgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luVmll
dyA9IHRydWU7CiAgICAgfQotICAgIG1fcGx1Z2luVmlldy0+bWFudWFsTG9hZERpZFJlY2VpdmVE
YXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVjZWl2
ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9h
ZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCBiYjUyOWQzYWVjNGUyYzc1ZjFhN2RlOTFiMTBiNTU4MmQ0NTIyYjQyLi4xZDMwYmMzOTM4
M2FmZmYyY2E5YzI4NzUzZGQyZDdlYzJiMjY0OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaApAQCAtMTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUmVwbGFjZU11
bHRpcGFydENvbnRlbnQoKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250
ZW50KCkgZmluYWw7CiAKLSAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqLCBjb25zdCB1aW50OF90KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGNvbW1pdHRlZExv
YWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciopIGZpbmFsOwogICAgIAogICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggYTIwNWUwMDFj
YTcxNTgyMDkxM2E4MWFlNGE4MzY1MzBmOWEwZjY0OC4uNzJlMzU1NGM4ZTBhYTY5MGE2ZWM1Nzgw
MTc2ZjE5ZTBiOGQ3MGQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGll
bnQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZp
ZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyCiAKIFdlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6On5XZWJQcmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0Owog
Ci12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRv
IHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fcGFnZUlEKTsKICAg
ICBpZiAoIXdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmlu
ZGV4IDBkYzE2N2U1YjdiYzNiMDNlZjM5MzFlYWIzNTZjNzgyNzkyOTUyOWUuLjY0OWJjODMxOWMy
Nzg2ZjAxZDYxN2MxMTE5OWRiMGM2YzA3N2ZhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0
cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbCgpIG92ZXJyaWRlOwogICAgIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5NDJlZGM2MjNhNGU2NTNiYjE4OGFlZTA1MDY0NGEz
ZjRhMDMyZTg5Li44Nzg3YWNhYTk2ZDJiMTQ4M2I4MmU4OTFhNmQzNmZlMjA4MDkyZmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzA1Nywx
MiArNzA1NywxMyBAQCB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9u
c2UoV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZAogICAgIGhhbmRsZXItPnRhc2tE
aWRSZWNlaXZlUmVzcG9uc2UodGFza0lkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxlcklk
ZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRp
ZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQordm9p
ZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViVVJMU2NoZW1lSGFuZGxl
cklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRl
bnRpZmllciB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRh
KQogeworICAgIFdURkxvZ0Fsd2F5cygiJXMgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhOiBz
aXplOiVkIiwgX19mdW5jX18sIGludChkYXRhLnNpemUoKSkpOwogICAgIGF1dG8qIGhhbmRsZXIg
PSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50
aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKIAotICAgIGhhbmRsZXItPnRhc2tEaWRSZWNl
aXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCksIGRhdGEuZGF0YSgpKTsKKyAgICBo
YW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuYnVmZmVyKCkg
PyAqZGF0YS5idWZmZXIoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCkuZ2V0KCkpOwogfQogCiB2
b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5kbGVy
SWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhOTRiNWI5ZDdmZTMy
ZjI0YTg2ZGFhYWQ0NDg0MmIwY2RkMGFlYjJmLi40ODg2NjcwN2M0NjEzZDlhN2NkMzUyMTVkZmNh
OTIzYzY5NzliZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC0xODQsNiArMTg0LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBDb25uZWN0aW9u
OwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOworY2xhc3MgU2hhcmVk
QnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTg5Niw3ICsxODk3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVybFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGlyZWN0aW9u
KFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRQZXJmb3Jt
UmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCB1cmxTY2hlbWVU
YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZl
RGF0YShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsK
KyAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5kbGVy
SWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlm
aWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKTsKICAgICB2b2lkIHVybFNjaGVtZVRh
c2tEaWRDb21wbGV0ZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CiAKICAgICB2b2lkIHNldElzVGFraW5nU25hcHNob3RzRm9yQXBwbGljYXRp
b25TdXNwZW5zaW9uKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjI3MjI5NDcxZWFlODZlZTU5ODE5ODNk
ZDU3YjVlN2E4MjkxY2Q0Yi4uYmRhNWY1MGFkZDIzYTk2NzQwZTg5ZDczM2Q3OWMxODdmMDUyYmUx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC01NjQsNyArNTY0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
ICAgICBVUkxTY2hlbWVUYXNrV2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJLaXQ6OldlYlVSTFNj
aGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBwcm9wb3NlZFJlcXVlc3QpIC0+
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgYWN0dWFsUmVxdWVzdCkgQXN5bmMKICAgICBVUkxT
Y2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxl
cklkZW50aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRl
bnRpZmllciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkKICAgICBVUkxTY2hl
bWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50
aWZpZXIgaGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmll
ciB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKLSAg
ICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVy
SWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0
YSkKKyAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkK
ICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVy
SWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogCiAg
ICAgU2V0SXNTdXNwZW5kZWQoYm9vbCBzdXNwZW5kZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNw
cAppbmRleCA2ZDhkMGNmMjc4NGVkMzA1NjYyNWM3ZjZlODQ2YTkzYTcxMWNiYWNkLi42NGYwMDQ3
MWNjMzIzMDM0MGEwZmMwNWE0ZWNiODgzYTFjZDVkYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eS5jcHAKQEAgLTk2LDEzICs5NiwxNCBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6
dGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZQogICAgIHRh
c2stPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0
YSkKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWRCdWZmZXImIGRhdGEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCIlcyB0YXNrRGlkUmVjZWl2ZURh
dGE6IHNpemU6JWQiLCBfX2Z1bmNfXywgaW50KGRhdGEuc2l6ZSgpKSk7CiAgICAgYXV0byogdGFz
ayA9IG1fdGFza3MuZ2V0KHRhc2tJZGVudGlmaWVyKTsKICAgICBpZiAoIXRhc2spCiAgICAgICAg
IHJldHVybjsKIAotICAgIHRhc2stPmRpZFJlY2VpdmVEYXRhKHNpemUsIGRhdGEpOworICAgIHRh
c2stPmRpZFJlY2VpdmVEYXRhKGRhdGEpOwogfQogCiB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eTo6dGFza0RpZENvbXBsZXRlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0
YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eS5oCmluZGV4IDU4YmVjYzE3YjVkODU5ODc0OTg4NGQzMDI1MTY4OWNjY2MxNzY5M2YuLmFi
MjBiZDU3M2FhNGFmYzE1ODA1OTBmMjcwNDY2MzAwNjg3NzQwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eS5oCkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTks
NyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCB0YXNrRGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRh
KTsKKyAgICB2b2lkIHRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgdGFza0Rp
ZENvbXBsZXRlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgdGFza0RpZFN0b3BMb2FkaW5nKFdlYlVSTFNj
aGVtZVRhc2tQcm94eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAppbmRleCAzNjA2YmJkYzY1MjE1
ZGRjYTkyNjEzYTgxMDdkYWIxYjExZWNiNjU2Li44MTVlZTBhNmNhMWNhN2E5YzMzMTdlMGM4ZDNj
ZjdkNDY0YWQyNTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKQEAgLTE0MCwyMSArMTQwLDIyIEBA
IHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1l
VGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0
YSkKK3ZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7CisgICAgV1RGTG9nQWx3YXlzKCIlcyBkaWRSZWNl
aXZlRGF0YTogc2l6ZTolZCIsIF9fZnVuY19fLCBpbnQoZGF0YS5zaXplKCkpKTsKICAgICBpZiAo
IWhhc0xvYWRlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29t
cGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgV0VCVVJMU0NIRU1FVEFTS1BST1hZX1JFTEVBU0Vf
TE9HKCJkaWRSZWNlaXZlRGF0YTogUmVjZWl2ZWQgZGF0YSBkdXJpbmcgcmVzcG9uc2UgcHJvY2Vz
c2luZywgcXVldWluZyBpdC4iKTsKLSAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YVZlY3RvciA9IFZlY3RvciB7IGRhdGEsIHNpemUgfV0g
ewotICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YVZlY3Rvci5zaXplKCksIGRhdGFWZWN0
b3IuZGF0YSgpKTsKKyAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgZGF0YSA9IFJlZiB7IGRhdGEgfV0geworICAgICAgICAgICAgZGlkUmVjZWl2
ZURhdGEoZGF0YSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
UmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2
ZURhdGEoZGF0YSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsK
KyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIDAsIERhdGFQYXlsb2FkVHlw
ZTo6RGF0YVBheWxvYWRCeXRlcyk7CiAgICAgcHJvY2Vzc05leHRQZW5kaW5nVGFzaygpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVUYXNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNj
aGVtZVRhc2tQcm94eS5oCmluZGV4IDc1NTA4Nzk0MTgyMGZlZWZjNWQwMTI3MTU4YzA2NGNlMjU4
YTA4MzUuLmVkOTFmMzhlM2FkZDEzYmUxOWNiMjE3N2VkNDQ4ZmRkMmZhNzk1NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRh
c2tQcm94eS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJl
c291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUs
NyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
OwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwog
ICAgIHZvaWQgZGlkQ29tcGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9QaW5nSGFuZGxlLmgKaW5kZXggYTI1NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZl
YTEzZWQ4OTZkNC4uMzI4OWMyMzYyOWEwZGMzMWZjMGMxOTllZGYxMzI5N2JlZDYxYTE5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KIApAQCAtNzMsNyArNzQsNyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgICAgICBwaW5nTG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0K
LSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2Fk
Q29tcGxldGUoKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBpbnQpIGZpbmFsIHsgcGluZ0xv
YWRDb21wbGV0ZSgpOyB9CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBw
aW5nTG9hZENvbXBsZXRlKCk7IH0KICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5n
TG9hZENvbXBsZXRlKGVycm9yKTsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5NTlkNzQ4
YjU2YmUxMDc2YmQ5Nzc5OTIyY2QzNTZkMjFhNjgxNzRlLi44ZGY5OTNmMmQ3NzViNmM5M2QyZThm
MDk5MGY3MmY4NWY2MThlNThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTQ4LDEw
ICs0OCwxMiBAQCBjbGFzcyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENhY2hlZEZyYW1lOworY2xhc3MgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiB9CiAKIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGlj
IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViRnJh
bWVMb2FkZXJDbGllbnQ+IHsKQEAgLTE1MSw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRSZXBs
YWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAg
dm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3Rvcnko
KSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDQzZTYzZjQ1NjM0NWVjZjFjOTI0
ZTViNzcyYTZmNTQxNzNhOTE0MmIuLjE5MDc4ZGQ5ZDRkMjRhZjMzOGRmNjlkMjFmYzk1NDMzM2Uw
MjYwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC05OTIsMTAgKzk5MiwxMCBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgp
CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
bGVuZ3RoKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRh
dGEpCiB7Ci0gICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJ5dGVzTm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7
Ci0gICAgW2RhdGFTb3VyY2UobG9hZGVyKSBfcmVjZWl2ZWREYXRhOm5zRGF0YS5nZXQoKV07Cisg
ICAgV1RGTG9nQWx3YXlzKCIlcyBjb21taXR0ZWRMb2FkOiBzaXplOiVkIiwgX19mdW5jX18sIGlu
dChkYXRhLnNpemUoKSkpOworICAgIFtkYXRhU291cmNlKGxvYWRlcikgX3JlY2VpdmVkRGF0YTpk
YXRhLmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIpCkBAIC0y
MDEyLDcgKzIwMTIsNyBAQCBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVByZXZpZXdMbwogICAgICAgICBSZXRhaW5Q
dHI8TlNTdHJpbmc+IG1fZmlsZVBhdGg7CiAgICAgICAgIFJldGFpblB0cjxOU0ZpbGVIYW5kbGU+
IG1fZmlsZUhhbmRsZTsKIAotICAgICAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBvdmVycmlkZQorICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBv
dmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGRhdGFBcnJheSA9IGJ1ZmZlci5j
cmVhdGVOU0RhdGFBcnJheSgpOwogICAgICAgICAgICAgZm9yIChOU0RhdGEgKmRhdGEgaW4gZGF0
YUFycmF5LmdldCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KaW5kZXggMGUwNWIxOGQ2OTYzOTgyOGQ0MzNjNDZkNzkyMWNmNzBkZTdkZjlkMS4uMmE4Nzcw
ZGY4MGJiOWY3MGMxMGJiOTFmOTUyMGQxZTE5Yzg1OWQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC05NzcsNyArOTc3LDcgQEAgLSAodm9pZClf
Y29tbWl0RGF0YTooTlNEYXRhICopZGF0YQogICAgIGF1dG8qIGRvY3VtZW50ID0gX3ByaXZhdGUt
PmNvcmVGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBkb2N1bWVudC0+c2V0U2hvdWxkQ3JlYXRlUmVu
ZGVyZXJzKF9wcml2YXRlLT5zaG91bGRDcmVhdGVSZW5kZXJlcnMpOwogCi0gICAgX3ByaXZhdGUt
PmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+Y29tbWl0RGF0YSgoY29uc3Qg
dWludDhfdCopW2RhdGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKTsKKyAgICBfcHJpdmF0ZS0+Y29y
ZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5jb21taXREYXRhKFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCmluZGV4IGZiMjU4M2ZlOTcyNjRjNzNlZWIyM2ViYjRkMzk5MGIzYjg0YTA3ZjMu
LjNjN2VjMmM1MDdhZjRjZTg0MTIwZDlmZmNjNWViOTkxYTRlN2Y5NDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKQEAgLTY0MSw5ICs2NDEsMTAgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIGxvYWRlci0+Y29tbWl0RGF0
YShkYXRhLCBsZW5ndGgpOworICAgIFdURkxvZ0Fsd2F5cygiJXMgY29tbWl0dGVkTG9hZDogc2l6
ZTolZCIsIF9fZnVuY19fLCBpbnQoYnVmZmVyLnNpemUoKSkpOworICAgIGxvYWRlci0+Y29tbWl0
RGF0YShkYXRhKTsKIAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1l
ZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQg
bG9hZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFs
bCBwb3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggMDk1YjI1MzVhNjg3NTQ3YmQ3ODg0NmY5MDc2YWU2YzdkMDE2Mjk0OC4uNzky
NmZkMzY3MTgwOWU4Mzg0N2E0ODAzMWE4YjkwYzYzOGZhZjdlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydERv
d25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkTmFtZSA9IFN0cmluZygpKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRl
OworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdpbGxD
aGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJlMGU2MjA0NmE2NDc2
YTFmMjUyZGU5OWU0ZjQ3MTAwN2JkYjk0YTUuLjhhNTk2OTI4OGJhZGI2Y2ExNjY0OTYwN2VlMzk0
N2E5ODUxOGI5YzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKSBpcyBzdGls
bCBkYW5nZXJvdXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDcyNAorICAgICAgICByZGFyOi8vcHJvYmxlbS84Njk1NzIzMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorCisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgbWFrZSBTaGFyZWRCdWZmZXI6OmNvcHkoKSByZXR1cm4gYSBjb250aWd1b3VzIFNo
YXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM0NjIyCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2ODI5NTI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Rf
Rik6CisKIDIwMjEtMTItMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIFN0b3Agc2V0dGluZyBtYW5hZ2VzLWRlc2NlbmRh
bnRzIG9uIHdlYiBwcm9jZXNzIHJvb3Qgb2JqZWN0IHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZjEyYjlm
MDgzNjA1NTg5NGNkNjVhODIzZDVmZjZlMzRiOThhZDU5OC4uMDFiNmNlNDYxY2NkMzY2NjQ2NTM3
YTQ2Nzg2MDI5OGRmNTU4MDRlOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgdm9p
ZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgs
IGNvbnN0IGNoYXIqCiB7CiAgICAgLy8gZXhwZWN0ZWQgaXMgbnVsbCB0ZXJtaW5hdGVkLCBidWZm
ZXIgaXMgbm90LgogICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4oZXhwZWN0ZWQpOwotICAgIEVY
UEVDVF9FUShsZW5ndGgsIGJ1ZmZlckxlbmd0aCk7CisgICAgQVNTRVJUX0VRKGxlbmd0aCwgYnVm
ZmVyTGVuZ3RoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAg
ICAgICBFWFBFQ1RfRVEoYnVmZmVyW2ldLCBleHBlY3RlZFtpXSk7CiB9CkBAIC0zMDMsNiArMzAz
LDI3IEBAIFRFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBjaGVj
ayhidWlsZGVyLnRha2UoKSk7CiB9CiAKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCwgY29weUlzQ29udGlndW91cykKK3sKKyAgICBFWFBFQ1RfVFJVRShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLT5jb3B5KCktPmlzQ29udGlndW91cygpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCktPmNvcHkoKS0+aXNDb250aWd1b3VzKCkpOworICAg
IGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7
CisgICAgRVhQRUNUX1RSVUUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKS0+Y29weSgpLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxl
VGV4dCkpLT5jb3B5KCktPmlzQ29udGlndW91cygpKTsKK30KKworVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCBleHRyYWN0RGF0YSkKK3sKKyAgICBjb25zdCBjaGFyKiBjb25zdCBz
aW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOworICAgIGF1dG8gb3JpZ2luYWwg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwor
ICAgIGF1dG8gY29weSA9IG9yaWdpbmFsLT5jb3B5KCk7CisgICAgYXV0byB2ZWN0b3IgPSBjb3B5
LT5leHRyYWN0RGF0YSgpOworICAgIEVYUEVDVF9UUlVFKGNvcHktPmlzRW1wdHkoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKG9yaWdpbmFsLT5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKG9yaWdp
bmFsLT5oYXNPbmVTZWdtZW50KCkpOworICAgIEVYUEVDVF9HVChvcmlnaW5hbC0+YmVnaW4oKS0+
c2VnbWVudC0+c2l6ZSgpLCAwdSk7Cit9CisKICNpZiBFTkFCTEUoTUhUTUwpCiAvLyBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlciB1bml0LXRlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+Cg==
</data>
<flag name="commit-queue"
          id="473856"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448063</attachid>
            <date>2021-12-28 19:32:15 -0800</date>
            <delta_ts>2022-01-06 05:42:47 -0800</delta_ts>
            <desc>Patch for EWS testing (combined patch)</desc>
            <filename>bug-234713-20211229143206.patch</filename>
            <type>text/plain</type>
            <size>292966</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NDU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3MDk2ZjA2YzcyZmVh
MmZjMWUwMzk0MDIyMzg5MWVlZGJmZGM4MC4uOTMxOGRhMTcxNTUwZmNkYzg5MzYyNWQxMDczNjJm
MzdlZjc2NmE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzNCBAQAorMjAyMS0xMi0yNyAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIENvbnRlbnQgRmlsdGVy
aW5nIHNob3VsZCBiZSB1c2luZyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBjb3B5aW5nIGl0cyBk
YXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ3
MTMKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODY5NDc0MzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjYW4gZGlyZWN0bHkgY29uc3RydWN0IHRo
ZSBOU0RhdGEgdXNlZCBieSBQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcgorICAgICAgICBh
bmQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIgZnJvbSB0aGUgU2hhcmVkQnVmZmVyLgor
CisgICAgICAgIE5vIGNoYW5nZSBpbiBvYnNlcnZhYmxlIGJlaGF2aW91ci4KKworICAgICAgICAq
IGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0
ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9Db250ZW50
RmlsdGVyLmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2Ev
TmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6YWRkRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiB0
ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250
ZW50RmlsdGVyOjphZGREYXRhKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
Lmg6CisKKzIwMjEtMTItMjggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBIYXZlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IGFuZCByZWxhdGVkIG5ldHdvcmtp
bmcgYWN0b3JzIHVzZSBTaGFyZWRCdWZmZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MjQKKyAgICAgICAgcmRhcjovLzg0NzQ0Njg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbW9kaWZ5IGFs
bCBkaWRSZWNlaXZlRGF0YSBhbmQgcmVsYXRlZCBtZXRob2RzIHNvIHRoYXQgdGhleSBubyBsb25n
ZXIKKyAgICAgICAgdXNlIHVpbnQ4X3QqL2ludCBhbmQgaW5zdGVhZCB1c2UgU2hhcmVkQnVmZmVy
LgorICAgICAgICBXZSBkbyB0aGUgc2FtZSBmb3IgYW55IGludGVybWVkaWFyaWVzIHVzZWQgYnkg
dGhlIHZhcmlvdXMgZGlkUmVjZWl2ZURhdGEKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorICAg
ICAgICBUaGlzIHdpbGwgZmFjaWxpdGF0ZSBtb3ZpbmcgbmV0d29ya2luZyBvZmYgdGhlIG1haW4g
dGhyZWFkIGluIHRoZSBHUFUKKyAgICAgICAgcHJvY2VzcyBhbmQgYWxsb3dzIHRvIHJlbW92ZSBz
ZXZlcmFsIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgY29waWVzIGF0IHRoZQorICAgICAgICBwcm9j
ZXNzIGJvdW5kYXJpZXMuCisgICAgICAgIFdlIGNhbiBub3cgY29uc2lkZXIgdHJhbnNmZXIgdGhl
IHVuZGVybHlpbmcgU2hhcmVkTWVtb3J5IGNyZWF0ZWQgaW4KKyAgICAgICAgdGhlIG5ldHdvcmsg
cHJvY2VzcyBhbGwgdGhlIHdheSB0byB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgRmx5LWJ5
IGZpeDogY2hhbmdlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgdHlwZSB0byBTaGFyZWRCdWZmZXIg
d2hlbiBhcHByb3ByaWF0ZS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhh
dmlvdXIuIENvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6YXBwZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKToKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaExvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaExvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3BvbnNlOjpC
b2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaFJlc3Bv
bnNlOjpjb25zdW1lQ2h1bmspOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25z
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmg6CisgICAgICAgICogZmls
ZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2Fk
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURh
dGFJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6YXBwZW5k
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6bWF5YmVBZGRS
ZXNvdXJjZURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5o
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNl
cHRSZXF1ZXN0V2l0aFJlc3BvbnNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEpOgor
ICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50Lmg6CisgICAgICAgICogbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpm
aW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRp
bnVlQWZ0ZXJDb250ZW50UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Ojpjb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb21taXRE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlw
YXJ0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2Vp
dmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFdyaXRlcjo6YWRkRGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3Jp
dGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6d2lsbExvYWRNZWRpYUVs
ZW1lbnRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lv
bmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZGVkUmVzb3Vy
Y2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE5vdGlmaWVyOjpzZW5kUmVt
YWluaW5nRGVsZWdhdGVNZXNzYWdlcyk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmg6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBsb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmFwcGVuZCk6Cisg
ICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAg
ICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oOgorICAgICAgICAq
IGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpkZWxpdmVyKToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6ZGF0YVJlY2VpdmVk
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjp1cGRhdGVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRh
dGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRh
V2FzUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFk
ZENsaWVudCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZUNsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVByZXZpZXdMb2FkZXI6OnByZXZpZXdDb252ZXJ0ZXJEaWRSZWNlaXZl
RGF0YSk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFNvdXJjZTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBhZ2UvRXZlbnRTb3Vy
Y2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOiBVcGRhdGUgZHVlIHRvIERh
dGFTZWdtZW50VmVjdG9yRW50cnk6OnNlZ21lbnQgYmVpbmcgY29uc3QKKyAgICAgICAgKFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIg
Y29uc3QpOiBBZGQgY29udmVuaWVuY2UgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyRGF0
YVZpZXc6OlNoYXJlZEJ1ZmZlckRhdGFWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlckRhdGFWaWV3OjpjcmVhdGVTaGFyZWRCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oOiBNYWtlIERhdGFTZWdtZW50VmVjdG9yRW50cnk6OnNlZ21lbnQg
Y29uc3QuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQ6OmRhdGFSZWNlaXZlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlcjo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZUNsaWVudDo6ZGlkUmVj
ZWl2ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3luY2hyb25vdXNMb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3Bv
bnNlR2VuZXJhdG9yLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VSZXNwb25zZUdlbmVyYXRv
cjo6Z2l2ZVJlc3BvbnNlVG9UYXNrSWZCeXRlc0luUmFuZ2VSZWNlaXZlZCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xpZW50OjpkYXRhUmVjZWl2ZWQp
OgorICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6cmVjZWl2
ZWREYXRhOl0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsTXVsdGlwYXJ0SGFuZGxlOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZUNsaWVudC5oOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJl
cXVlc3Q6OmRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0Q2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxTdHJlYW06OnRyeVRvUmVjZWl2ZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxTdHJlYW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25R
dWV1ZURlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGE6bGVuZ3RoUmVjZWl2ZWQ6XSk6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9h
ZFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRm9udExvYWRSZXF1ZXN0Ojpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJGb250TG9hZFJlcXVlc3Qu
aDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorCisyMDIxLTEyLTI4ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmVkQnVmZmVyOjp0YWtl
RGF0YSgpIGlzIHN0aWxsIGRhbmdlcm91cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NzI0CisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2OTU3MjMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2ltaWxh
ciB0byBidWcgMjI4MTYxOyBob3dldmVyIHdlIG9ubHkgdGFrZSB0aGUgY29udGVudCBvZiB0aGUg
RGF0YVNlZ21lbnQKKyAgICAgICAgaWYgaXRzIHJlZmNvdW50IGlzIDEuCisgICAgICAgIERhdGFT
ZWdtZW50cyBjYW4gYmUgc2hhcmVkIGFjcm9zcyBtdWx0aXBsZSBTaGFyZWRCdWZmZXIgYW5kIHNv
IHdlIGNhbid0CisgICAgICAgIGFzc3VtZSB0aGF0IHdoZW4gdGhlIFNoYXJlZEJ1ZmZlciByZWZj
b3VudCBpcyAxIHRoYXQgaXQgaXMgc2FmZSB0byB1c2UKKyAgICAgICAgdGhlIERhdGFTZWdtZW50
LgorICAgICAgICBUaGlzIHVzZSBvZiBTaGFyZWRCdWZmZXI6OmV4dHJhY3REYXRhIHdpbGwgbmVl
ZCB0byBiZSByZXZpc2l0ZWQgd2hlbgorICAgICAgICBTaGFyZWRCdWZmZXIgYXJlIHVzZWQgYWNy
b3NzIGRpZmZlcmVudCB0aHJlYWRzIGFzIHRoZSBvcGVyYXRpb24gaXNuJ3QKKyAgICAgICAgdGhy
ZWFkLXNhZmUuCisKKyAgICAgICAgQVBJIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI6OnRha2VEYXRhKToKKworMjAyMS0xMi0yMyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyIHNob3VsZCBiZSB1c2lu
ZyBTaGFyZWRCdWZmZXIgaW5zdGVhZCBvZiBEYXRhU2VnbWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDQxCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzg1ODU0MjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGEgU2hhcmVkQnVmZmVyJ3MgaW1wbGVtZW50YXRp
b24gZGV0YWlscyBhbmQgbm90CisgICAgICAgIGJlIHVzZWQgb3V0c2lkZSBTaGFyZWRCdWZmZXIn
cyBjb2RlLgorICAgICAgICBIaXN0b3JpY2FsbHksIHVzaW5nIHRoZSBpbm5lciBEYXRhU2VnbWVu
dCB3YXMgcmVxdWlyZWQgYXMgaXQgd2FzIHRocmVhZAorICAgICAgICBzYWZlIHdoaWxlIFNoYXJl
ZEJ1ZmZlciB3YXNuJ3Q6IFRoaXMgaXMgbm8gbG9uZ2VyIHRoZSBjYXNlLgorICAgICAgICBTaGFy
ZWRCdWZmZXIgYW5kIERhdGFTZWdtZW50IGFyZSBzZW1hbnRpY2FsbHkgdmVyeSBzaW1pbGFyLCBz
byB0aGlzIGlzCisgICAgICAgIG1vc3RseSBhIGZpbmQvcmVwbGFjZSBjaGFuZ2UuCisgICAgICAg
IEZsYXR0ZW5pbmcgdGhlIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIgaXMgc3RpbGwgcmVxdWlyZWQg
YXMgbW9zdCBkZWNvZGVycworICAgICAgICByZXF1aXJlIHJlYWRpbmcgdGhlIHJhdyBieXRlcy4K
KworICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCYWNraW5nU3RvcmU6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
YWNraW5nU3RvcmU6OkltYWdlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVZJRklt
YWdlUmVhZGVyOjpkZWNvZGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVh
ZGVyOjpyZWFkVWludDE2KToKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpyZWFk
VWludDMyKToKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlUmVhZGVyOjpzZXREYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAg
ICAgICAgKEdJRkltYWdlUmVhZGVyOjpzZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlBFR0ltYWdlUmVhZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpQRUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5H
SW1hZ2VSZWFkZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldFQlBJbWFnZURl
Y29kZXI6OmRlY29kZSk6CisKKzIwMjEtMTItMjIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFw
cGxlLmNvbT4KKworICAgICAgICBtYWtlIFNoYXJlZEJ1ZmZlcjo6Y29weSgpIHJldHVybiBhIGNv
bnRpZ3VvdXMgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzQ2MjIKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vODY4Mjk1MjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBtYWtlIFNoYXJl
ZEJ1ZmZlcjo6Y29weSgpIHJldHVybiBhIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVyCisKKyAgICAg
ICAgQVBJIHRlc3RzIGFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNvcHkgY29uc3Qp
OgorCiAyMDIxLTEyLTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbR1RLXVthMTF5XSBUZXN0IGFjY2Vzc2liaWxpdHkvYXJpYS1pbmhlcml0
cy1wcmVzZW50YXRpb25hbC5odG1sIGlzIGZhaWxpbmcgd2l0aCBBVFNQSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBj
ZTI3ZTE0YzY5ZmQyNDRhZTdiMjQ0NWUzZTQ5ODdjNmY3MWJiMjgzLi4xYWE5NDE2NDk1NWFkMTA3
YzE2YzMzYzFjZmY2NmRjOGEzNzM4NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAy
MS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIEhh
dmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBhY3RvcnMg
dXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVzb3Vy
Y2U6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
cjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
ZW5kQnVmZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpkaWRSZWNlaXZlQnVmZmVyKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVE
YXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJEb3dubG9hZFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZyb21QcmVsb2Fk
ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2Vp
dmVCdWZmZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OlNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRpYUZv
cm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
Rm9ybWF0UmVhZGVyOjpkaWRQYXJzZVRyYWNrcyk6CisgICAgICAgICogU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6
ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVj
ZWl2ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZU1lZGlhUmVzb3Vy
Y2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3Vy
Y2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEp
OgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
U3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6Om1h
bnVhbExvYWREaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnJl
ZGVsaXZlck1hbnVhbFN0cmVhbSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5Lmg6CisKIDIwMjEtMTItMjYgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgV2ViS2l0L0NvY29hQ29sb3IuaCB3
aXRoIFdlYkNvcmUvQ29sb3JDb2NvYS5oLCBub3QgY29uZnVzaW5nIGF0IGFsbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZwppbmRleCA1NzY4MWIyMWE3MzQzOWU5MGJmMjFiYTI0NDk1ODI1OTdlMDE5OTgyLi5l
NjgzYmZkNTJiODVlOGU1MDM1Mjc3MDdjYTRkY2I3OTI1YmI2NjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5
YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQg
cmVsYXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6
Ly84NDc0NDY4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvUGluZ0hhbmRsZS5oOgorCiAyMDIxLTEyLTE0ICBKZWFuLVl2
ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFNoYXJlZEJ1ZmZl
ciBjbGFzc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGVmOTQ5ZGU2MDY4OTZj
YTk5M2VkZjhmMzRkOWMxYjMwYTViNjU0YWIuLjhlMWYxMzZlNWRhZGZmYzEwNGRkYWIyNDQ1YzVh
ZGZkM2I5NjdmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAyMS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAg
ICAgIEhhdmUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgYW5kIHJlbGF0ZWQgbmV0d29ya2luZyBh
Y3RvcnMgdXNlIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMjQyNAorICAgICAgICByZGFyOi8vODQ3NDQ2ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0
dGVkTG9hZCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUHJldmlld0xv
YWRlckNsaWVudCk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1b
V2ViRnJhbWUgX2NvbW1pdERhdGE6XSk6CisKIDIwMjEtMTItMjIgIE1pY2hhZWwgU2Fib2ZmICA8
bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IFdlYktpdCBCdWlsZCBpc3N1ZXMgd2hl
biB1c2luZyBzeXN0ZW0gY29udGVudCBwYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggMGI3OGY1Y2UxMGE5MmM1Zjg5N2FiODE2OTAxZTk1OTFiODY5MWMzOC4uNDYwMDlkYzg1YTM1
M2MzZWQyZjhmOTM2MTkwZjdkMDQzODhkY2UyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBh
cHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVs
YXRlZCBuZXR3b3JraW5nIGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyNDI0CisgICAgICAgIHJkYXI6Ly84
NDc0NDY4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMjEtMTItMjEgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGEgVUkg
ZGVsZWdhdGUgbWV0aG9kIHRvIGRlY2lkZSBob3cgdG8gaGFuZGxlIGRldGVjdGVkIG1vZGFsIGNv
bnRhaW5lcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5jcHAKaW5kZXggYzIzMWYyMDdkYTI1Y2QyYTE1ODYwZDI4ZGIzY2UxN2U4NTc1Nzdk
NS4uZTYxM2FhNTA5Zjc0YzBkZTBlNmQzODM1MThlNTI2ZjczYWE1OGVlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTMy
MCwxMyArMzIwLDEzIEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgfQogfQogCi12b2lk
IEZldGNoQm9keUNvbnN1bWVyOjphcHBlbmQoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
c2l6ZSkKK3ZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OmFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICAgICBpZiAobV9zb3VyY2UpIHsKLSAgICAgICAgbV9zb3VyY2UtPmVucXVl
dWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBzaXplKSk7CisgICAgICAgIG1fc291cmNl
LT5lbnF1ZXVlKGJ1ZmZlci50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBtX2J1ZmZlci5hcHBlbmQoZGF0YSwgc2l6ZSk7CisgICAgbV9idWZmZXIu
YXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnNldERhdGEoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCA4NzFkMmMwODYzMzFhOTgyOTRh
MTY2YTRiNDJlMzE4NGUwMzc3NzJiLi5kNDY1MWIyM2RhNzFjZjhmNGM4Yzk5NjcxZDIyN2ViNWFj
OGQyYTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlD
b25zdW1lci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IEZldGNo
Qm9keUNvbnN1bWVyKFR5cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9CiAKLSAgICB2b2lkIGFw
cGVuZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCk7CisgICAgdm9pZCBhcHBlbmQoY29u
c3QgU2hhcmVkQnVmZmVyJik7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiAh
IW1fYnVmZmVyOyB9CiAgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCmluZGV4IGE2MzMxMDhiNTQ3NzgzOTNm
YzU0NzUwMDMyYTlhMmU4NmFkZTdmY2MuLjUzNjY4MTU1YmRlYmMxYWVmMzlmNGQ5OWZiOWRhZGMx
ZWJlZjdhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwCkBAIC0yOTgsMTEgKzI5OCwxMCBAQCB2b2lkIEZldGNoQm9keU93bmVyOjpibG9i
TG9hZGluZ0ZhaWxlZCgpCiAgICAgZmluaXNoQmxvYkxvYWRpbmcoKTsKIH0KIAotdm9pZCBGZXRj
aEJvZHlPd25lcjo6YmxvYkNodW5rKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQor
dm9pZCBGZXRjaEJvZHlPd25lcjo6YmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewotICAgIEFTU0VSVChkYXRhKTsKICAgICBBU1NFUlQobV9yZWFkYWJsZVN0cmVhbVNvdXJj
ZSk7Ci0gICAgaWYgKCFtX3JlYWRhYmxlU3RyZWFtU291cmNlLT5lbnF1ZXVlKEFycmF5QnVmZmVy
Ojp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpKQorICAgIGlmICghbV9yZWFkYWJsZVN0cmVhbVNvdXJj
ZS0+ZW5xdWV1ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSkpCiAgICAgICAgIHN0b3Ao
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5o
CmluZGV4IDVjYTdlMzk2YzQyMjcwMTkzNTZiMDgwNmU0ZWVkYmU5NWU5MjhmNGIuLjgxZmQwNmVj
ZGQ2ZmMzOGM5ZTg1OTg3Y2ViZGZjMTZkZDg2ZjNjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRl
ICJGZXRjaExvYWRlci5oIgogI2luY2x1ZGUgIkZldGNoTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTEwMCw3ICsxMDEsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgLy8gQmxvYiBsb2FkaW5nIHJvdXRpbmVzCi0gICAgdm9pZCBibG9iQ2h1bmsoY29uc3Qg
dWludDhfdCosIHNpemVfdCk7CisgICAgdm9pZCBibG9iQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVy
Jik7CiAgICAgdm9pZCBibG9iTG9hZGluZ1N1Y2NlZWRlZCgpOwogICAgIHZvaWQgYmxvYkxvYWRp
bmdGYWlsZWQoKTsKICAgICB2b2lkIGZpbmlzaEJsb2JMb2FkaW5nKCk7CkBAIC0xMTMsNyArMTE0
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAvLyBGZXRjaExvYWRlckNsaWVudCBBUEkKICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFs
OwotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKSBmaW5hbCB7IG93bmVyLmJsb2JDaHVuayhkYXRhLCBzaXplKTsgfQorICAgICAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKSBmaW5hbCB7IG93
bmVyLmJsb2JDaHVuayhidWZmZXIpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsgb3du
ZXIuYmxvYkxvYWRpbmdTdWNjZWVkZWQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCmluZGV4IDAzZjg5YjYxY2E1ZjdjNzE3NmI5ZDg4Y2QxMzY2
MGU4NmI3YTI1NDguLjRiNDViZmQ4NzUwNDA2ZjZlN2RhNzE4Zjk5ODE2OTQ3MWE1ZTg0NWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuY3BwCkBAIC0xNDgs
MTMgKzE0OCwxMyBAQCB2b2lkIEZldGNoTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcwogICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiB9CiAKLXZvaWQgRmV0Y2hMb2FkZXI6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IHVpbnQ4X3QqIHZhbHVlLCBpbnQgc2l6ZSkKK3ZvaWQgRmV0Y2hMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sKQogewogICAg
IGlmICghbV9jb25zdW1lcikgewotICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YSh2YWx1
ZSwgc2l6ZSk7CisgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9jb25zdW1lci0+YXBwZW5kKHZhbHVlLCBzaXplKTsK
KyAgICBtX2NvbnN1bWVyLT5hcHBlbmQoYnVmZmVyKTsKIH0KIAogdm9pZCBGZXRjaExvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmgKaW5kZXggNDYxMmQwZTBlM2E3ZWZlMzA2MDM5
NmIwZDc1YTJmYTNiYzRlZGRhZC4uNWVlYWVmODJkMWRmM2VmY2VkMjE0MDAzZGY1MTg4ODcwMzZm
OTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hMb2FkZXIuaApAQCAt
NTgsNyArNTgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFRocmVhZGFibGVMb2FkZXJD
bGllbnQgQVBJLgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sIHVzZVN0ckxlbikgZmluYWw7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikgZmluYWw7CiAgICAg
dm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlckNsaWVudC5oCmluZGV4IGZlZDNlNWVh
ZTcxYTU3Yzk1MmFhMTcxYWRjY2JkZDliZDA0NWU3ODkuLjEwOWUwOGVjZjdhNDdlN2MwMzdlMzJk
Y2FhY2FiODZjODFjMThkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoTG9hZGVyQ2xpZW50LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHNpemVf
dCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZFN1Y2NlZWQoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IDBlN2IwMDVlODlhM2Qx
NzQwYjFjZjlhZGZmOGI0ZjJmMmZjNDNjOTkuLmRjYTBlMjM4MmUzMmZjMDM3Mjg4N2ZkNDg1MjE0
YTE3MzAxYjFiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJl
c3BvbnNlLmNwcApAQCAtMzYyLDEyICszNjIsMTIgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpCb2R5
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3UK
ICAgICAgICAgcmVzcG9uc2VDYWxsYmFjayhtX3Jlc3BvbnNlKTsKIH0KIAotdm9pZCBGZXRjaFJl
c3BvbnNlOjpCb2R5TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2Uu
bV9yZWFkYWJsZVN0cmVhbVNvdXJjZSB8fCBtX2NvbnN1bWVEYXRhQ2FsbGJhY2spOwogCiAgICAg
aWYgKG1fY29uc3VtZURhdGFDYWxsYmFjaykgewotICAgICAgICBTcGFuIGNodW5rIHsgZGF0YSwg
c2l6ZSB9OworICAgICAgICBTcGFuIGNodW5rIHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSB9OwogICAgICAgICBtX2NvbnN1bWVEYXRhQ2FsbGJhY2soJmNodW5rKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIEZldGNoUmVzcG9uc2U6OkJvZHlM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQog
ICAgIGF1dG8mIHNvdXJjZSA9ICptX3Jlc3BvbnNlLm1fcmVhZGFibGVTdHJlYW1Tb3VyY2U7CiAK
ICAgICBpZiAoIXNvdXJjZS5pc1B1bGxpbmcoKSkgewotICAgICAgICBtX3Jlc3BvbnNlLmJvZHko
KS5jb25zdW1lcigpLmFwcGVuZChkYXRhLCBzaXplKTsKKyAgICAgICAgbV9yZXNwb25zZS5ib2R5
KCkuY29uc3VtZXIoKS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgRmV0Y2hSZXNwb25zZTo6Qm9keUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgIHN0b3Ao
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoIXNvdXJjZS5lbnF1ZXVlKEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUoZGF0YSwgc2l6ZSkpKSB7CisgICAgaWYgKCFzb3VyY2UuZW5xdWV1
ZShidWZmZXIudHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSkpIHsKICAgICAgICAgc3RvcCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgRmV0Y2hSZXNwb25z
ZTo6c2V0Qm9keURhdGEoUmVzcG9uc2VEYXRhJiYgZGF0YSwgdWludDY0X3QgYm9keVNpemVXaXRo
UGFkZGluCiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUNodW5rKFJlZjxKU0M6OlVpbnQ4
QXJyYXk+JiYgY2h1bmspCiB7Ci0gICAgYm9keSgpLmNvbnN1bWVyKCkuYXBwZW5kKGNodW5rLT5k
YXRhKCksIGNodW5rLT5ieXRlTGVuZ3RoKCkpOworICAgIGJvZHkoKS5jb25zdW1lcigpLmFwcGVu
ZChTaGFyZWRCdWZmZXI6OmNyZWF0ZShjaHVuay0+ZGF0YSgpLCBjaHVuay0+Ynl0ZUxlbmd0aCgp
KSk7CiB9CiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlBc1N0cmVhbSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oCmluZGV4IDZiMDUwNWQ4
OGIxMzJlMjhjYjk1NGFiOWEwZTdlZmU4MTNmNzAyYWYuLmY5OTI0OWMzOWY5ZDBiMmZjODdhMmY5
YzQ2ZDc5MzkyODg4MTRiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hSZXNwb25zZS5oCkBAIC0xNDMsNyArMTQzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBk
aWRTdWNjZWVkKCkgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90Kiwgc2l6ZV90KSBmaW5hbDsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKIAogICAgICAgICBGZXRjaFJlc3BvbnNlJiBtX3Jlc3Bv
bnNlOwogICAgICAgICBOb3RpZmljYXRpb25DYWxsYmFjayBtX3Jlc3BvbnNlQ2FsbGJhY2s7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVs
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5jcHAKaW5kZXggMjdhNmQ3MDMzNGNhMzIwNmE5NGU5MTk5NDMzNjM3YzRhMzA1
MmU3ZC4uYTY0MWY4MTA3YjRmZDE3OTExZmRiOTJiYjMwZjQ1ZTJlODJiNTJmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmNwcApAQCAtMTc3LDEwICsxNzcsMTAgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHMK
IAogLy8gTUFSSzogLSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudAogCi12b2lkIEhUTUxNb2RlbEVs
ZW1lbnQ6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9yZXNvdXJj
ZSk7Ci0gICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBtX2RhdGEuYXBw
ZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmgKaW5kZXggY2UwMDlkNGU1ZWRjMzA5NzQ1ZTAyN2IwNjMyYmQxZTZlODU4MDNiZS4u
MGQzYmRiNzQ5ZDdhMzM2OGIzY2E2OGMyMTczMTYwNTkxNTQ5ZDFjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5o
CkBAIC0xMTYsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIGZpbmFsOwogCiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgb3ZlcnJp
ZGVzLgotICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZp
bmFsOwogCiAgICAgLy8gTW9kZWxQbGF5ZXJDbGllbnQgb3ZlcnJpZGVzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU2luay5oCmluZGV4IGQ1
MTczZmJmOGI0MDM0MWM1Y2Y4ZDhhNGY1NWVlYWM4ZmY4MzhhMzkuLmZlZTk4ODQyMjFiYjQzZThj
YzA2MmVhYmNkMGE5OWVjNTRjMDM0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKQEAgLTM1LDcgKzM1LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3VyY2U7CiBjbGFzcyBSZWFkYWJsZVN0cmVh
bTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlYWRhYmxlU3RyZWFt
U2luayA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxlU3RyZWFtU2luaz4gewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggYjdmNzVl
ZGEzYjIzM2IxOWIyMGVkNzA0Mjg5NDliYjMzNTg5OGU4MS4uNzM4NTJkNGMwYWYwMzg0NzVmMTVi
NjU0OWRjNjg5YmY4NTUxYjIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXJMb2FkZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0
UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKQEAgLTE2MywxNiArMTY0LDE1IEBAIHZvaWQg
RmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyCiAgICAgICAgIG1fY2xpZW50LT5kaWRTdGFydExvYWRpbmcoKTsK
IH0KIAotdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkKK3ZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7Ci0gICAgQVNTRVJUKGRh
dGEpOwotICAgIEFTU0VSVChkYXRhTGVuZ3RoID4gMCk7CisgICAgQVNTRVJUKGJ1ZmZlci5zaXpl
KCkpOwogCiAgICAgLy8gQmFpbCBvdXQgaWYgd2UgYWxyZWFkeSBlbmNvdW50ZXJlZCBhbiBlcnJv
ci4KICAgICBpZiAobV9lcnJvckNvZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBsZW5n
dGggPSBkYXRhTGVuZ3RoOworICAgIGludCBsZW5ndGggPSBidWZmZXIuc2l6ZSgpOwogICAgIHVu
c2lnbmVkIHJlbWFpbmluZ0J1ZmZlclNwYWNlID0gbV90b3RhbEJ5dGVzIC0gbV9ieXRlc0xvYWRl
ZDsKICAgICBpZiAobGVuZ3RoID4gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihyZW1haW5pbmdCdWZm
ZXJTcGFjZSkpIHsKICAgICAgICAgLy8gSWYgdGhlIGJ1ZmZlciBoYXMgaGl0IG1heGltdW0gc2l6
ZSwgaXQgY2FuJ3QgYmUgZ3Jvd24gYW55IG1vcmUuCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBG
aWxlUmVhZGVyTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAo
bV92YXJpYWJsZUxlbmd0aCkgewotICAgICAgICAgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90
b3RhbEJ5dGVzICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRhdGFMZW5ndGgpOworICAgICAgICAg
ICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gbV90b3RhbEJ5dGVzICsgYnVmZmVyLnNpemUoKTsKICAg
ICAgICAgICAgIGlmIChuZXdMZW5ndGggPCBtX3RvdGFsQnl0ZXMpIHsKICAgICAgICAgICAgICAg
ICBmYWlsZWQoTm90UmVhZGFibGVFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjA2LDcgKzIwNiw3IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCiAgICAgaWYgKGxlbmd0aCA8PSAwKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KG1fcmF3RGF0
YS0+ZGF0YSgpKSArIG1fYnl0ZXNMb2FkZWQsIGRhdGEsIGxlbmd0aCk7CisgICAgbWVtY3B5KHN0
YXRpY19jYXN0PGNoYXIqPihtX3Jhd0RhdGEtPmRhdGEoKSkgKyBtX2J5dGVzTG9hZGVkLCBidWZm
ZXIuZGF0YSgpLCBsZW5ndGgpOwogICAgIG1fYnl0ZXNMb2FkZWQgKz0gbGVuZ3RoOwogCiAgICAg
bV9pc1Jhd0RhdGFDb252ZXJ0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmgKaW5kZXggNTM5YzIzMDRhODJlNjNhYWRmZTJjNTY3Yzk4ZDBiOGM2ODdh
OGU5Zi4uYjdlNWI0MDU3ZmIyMDZmZjMyMzE1NWNjMGYxNTAyZmNhMjBkMjY3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVi
bGljOgogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRlckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIGlu
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
LCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDVjNWJiMmFlYTgzOTkxOGIwNjk3NzU4
ODFjZTNhMzY5YTQyOGU1YjkuLjNjOTc4ZTNmNDQyMWNmMzVhMjA2MWRmY2UwZDFlMGFhZTUxMTM0
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCkBAIC02MTYsMTAgKzYxNiwxMCBAQCB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZUltcGwoSW5zdHJ1
bWVudAogICAgICAgICBuZXR3b3JrQWdlbnQtPmRpZFJlY2VpdmVUaHJlYWRhYmxlTG9hZGVyUmVz
cG9uc2UoaWRlbnRpZmllciwgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVk
RGF0YUxlbmd0aCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0
YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZE5ldHdvcmtBZ2VudCgpKQotICAgICAgICBuZXR3b3Jr
QWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29k
ZWREYXRhTGVuZ3RoKTsKKyAgICAgICAgbmV0d29ya0FnZW50LT5kaWRSZWNlaXZlRGF0YShpZGVu
dGlmaWVyLCAmYnVmZmVyLCBidWZmZXIuc2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZXNvdXJjZUxvYWRlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MsIFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxv
YWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaAppbmRleCBkMjk1NzgxMGQ4MzgyYzkzNTFkNWE5M2YxNDRhZWQxNDkzYmNjNjUx
Li44MmFjY2VkMjBjZmQ1MTMxYjI1MDJmMDk5YTljNGZhMmZkZDYxNmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0x
OTMsMTMgKzE5MywxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkTG9hZFJlc291cmNl
RnJvbU1lbW9yeUNhY2hlKFBhZ2UmLCBEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7
CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoRnJhbWUmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVRocmVh
ZGFibGVMb2FkZXJSZXNwb25zZShEb2N1bWVudFRocmVhZGFibGVMb2FkZXImLCBSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKEZyYW1lKiwg
UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
RGF0YShGcmFtZSosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVy
JiwgaW50IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYsIFJlc291cmNlTG9hZGVyKik7CiAgICAgc3RhdGljIHZv
aWQgZGlkRmFpbExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgc3RhdGljIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
UmVzb3VyY2VSZXNwb25zZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVEYXRhKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCk7CisgICAg
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHN0YXRp
YyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmLCBSZXNv
dXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHN0
YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiwgUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKQEAgLTQxNCw3
ICs0MTQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50TG9hZGVyKiwgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3VyY2VMb2FkZXIqKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyJiwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBSZXNvdXJjZUxvYWRlciopOwogICAgIHN0YXRpYyB2b2lk
IGRpZEZhaWxMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICBz
dGF0aWMgdm9pZCB3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmKTsKQEAgLTEwODIsMTcgKzEwODIsMTcgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlVGhyZWFkYWJsZUxvYWRlclJlc3BvbnNlKERvY3VtZW4KICAg
ICAgICAgZGlkUmVjZWl2ZVRocmVhZGFibGVMb2FkZXJSZXNwb25zZUltcGwoKmFnZW50cywgZG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLCBpZGVudGlmaWVyKTsKIH0KICAgICAKLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoRnJhbWUqIGZyYW1lLCBSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIs
IGludCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVO
RFModm9pZCgpKTsKICAgICBpZiAoYXV0byogYWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50cyhm
cmFtZSkpCi0gICAgICAgIGRpZFJlY2VpdmVEYXRhSW1wbCgqYWdlbnRzLCBpZGVudGlmaWVyLCBk
YXRhLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIGRpZFJlY2VpdmVE
YXRhSW1wbCgqYWdlbnRzLCBpZGVudGlmaWVyLCBidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoKTsK
IH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0
YShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgZ2xvYmFsU2NvcGUsIFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0
aCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEo
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlLCBSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAg
RkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgZGlkUmVjZWl2ZURhdGFJ
bXBsKGluc3RydW1lbnRpbmdBZ2VudHMoZ2xvYmFsU2NvcGUpLCBpZGVudGlmaWVyLCBkYXRhLCBk
YXRhTGVuZ3RoLCBkYXRhTGVuZ3RoKTsKKyAgICBkaWRSZWNlaXZlRGF0YUltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50cyhnbG9iYWxTY29wZSksIGlkZW50aWZpZXIsIGJ1ZmZlciwgYnVmZmVyLnNpemUo
KSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNo
TG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggMzli
MDExY2YwNmY3ZjM4NTMyNDNlMGE3NjNhM2IxZDQ1NDkwNDE0OS4uMzI4ZWJlN2U2NDExOTVlNWE0
Njg1MDI3NTU5MTBmNzhjNDhiNThkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgc2l6ZV90IE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRhdGFMZW5ndGgoKSBjb25zdAogICAg
IHJldHVybiBtX2RhdGFCdWZmZXIuc2l6ZSgpOwogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OmFwcGVuZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IGRhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmFw
cGVuZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVCghaGFzQ29u
dGVudCgpKTsKLSAgICBtX2RhdGFCdWZmZXIuYXBwZW5kKGRhdGEsIGRhdGFMZW5ndGgpOworICAg
IG1fZGF0YUJ1ZmZlci5hcHBlbmQoZGF0YSk7CiB9CiAKIHVuc2lnbmVkIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OmRlY29kZURhdGFUb0NvbnRlbnQoKQpAQCAtMjIxLDcgKzIy
MSw3IEBAIHN0YXRpYyBib29sIHNob3VsZEJ1ZmZlclJlc291cmNlRGF0YShjb25zdCBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhJiByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1O
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6bWF5YmVBZGRSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQorTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6Om1heWJlQWRkUmVzb3Vy
Y2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJjZURhdGFGb3JSZXF1
ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKQEAgLTIzMCwxNSArMjMw
LDE1IEBAIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjptYXliZUFkZFJlc291cmNlCiAgICAgaWYgKCFzaG91bGRCdWZmZXJSZXNv
dXJjZURhdGEoKnJlc291cmNlRGF0YSkpCiAgICAgICAgIHJldHVybiByZXNvdXJjZURhdGE7CiAK
LSAgICBpZiAocmVzb3VyY2VEYXRhLT5kYXRhTGVuZ3RoKCkgKyBkYXRhTGVuZ3RoID4gbV9tYXhp
bXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSkKKyAgICBpZiAocmVzb3VyY2VEYXRhLT5kYXRh
TGVuZ3RoKCkgKyBkYXRhLnNpemUoKSA+IG1fbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNp
emUpCiAgICAgICAgIG1fY29udGVudFNpemUgLT0gcmVzb3VyY2VEYXRhLT5ldmljdENvbnRlbnQo
KTsKICAgICBpZiAocmVzb3VyY2VEYXRhLT5pc0NvbnRlbnRFdmljdGVkKCkpCiAgICAgICAgIHJl
dHVybiByZXNvdXJjZURhdGE7CiAKLSAgICBpZiAoZW5zdXJlRnJlZVNwYWNlKGRhdGFMZW5ndGgp
ICYmICFyZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0ZWQoKSkgeworICAgIGlmIChlbnN1cmVG
cmVlU3BhY2UoZGF0YS5zaXplKCkpICYmICFyZXNvdXJjZURhdGEtPmlzQ29udGVudEV2aWN0ZWQo
KSkgewogICAgICAgICBtX3JlcXVlc3RJZHNEZXF1ZS5hcHBlbmQocmVxdWVzdElkKTsKLSAgICAg
ICAgcmVzb3VyY2VEYXRhLT5hcHBlbmREYXRhKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICBt
X2NvbnRlbnRTaXplICs9IGRhdGFMZW5ndGg7CisgICAgICAgIHJlc291cmNlRGF0YS0+YXBwZW5k
RGF0YShkYXRhKTsKKyAgICAgICAgbV9jb250ZW50U2l6ZSArPSBkYXRhLnNpemUoKTsKICAgICB9
CiAKICAgICByZXR1cm4gcmVzb3VyY2VEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCBkYWFlNWZlNGEzMWUzMTU5MzYzNzkwNDIz
ZjVmYmQzMzcwYzVjZDM5Li5jOGNlZDEyYTY0MDdmZGNkNTc0ZWNjMmE3ODE5ZWRlNjYzODAzZGFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBib29s
IGhhc0RhdGEoKSBjb25zdDsKICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKLSAg
ICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKTsKKyAgICAgICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAg
ICAgICB1bnNpZ25lZCBkZWNvZGVEYXRhVG9Db250ZW50KCk7CiAKICAgICAgICAgU3RyaW5nIG1f
cmVxdWVzdElkOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291
cmNlVHlwZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNv
dXJjZVR5cGUpOwogICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIHJlc291cmNl
VHlwZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUNvbnRl
bnQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBi
YXNlNjRFbmNvZGVkID0gZmFsc2UpOwotICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRS
ZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKTsKKyAgICBSZXNvdXJjZURhdGEgY29uc3QqIG1heWJlQWRkUmVz
b3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTaGFyZWRCdWZmZXImKTsK
ICAgICB2b2lkIG1heWJlRGVjb2RlRGF0YVRvQ29udGVudChjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCk7CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
Q2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCAzY2Vi
NGI0N2YxMDY4YTBhZmVhZjAwZjE3OWMyODAwYzQ3NmJkNmIxLi43NWY2NmZiMjk5ZDU2MGEzY2M3
MmI5ODFiNjRiMDEzZTgyMGJiNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC0xMjQsMTUgKzEy
NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6
OmNyZWF0ZSgidGV4dC9wbGFpbiJfcywgdGV4dEVuY29kaW5nLCB1c2VEZXRlY3Rvcik7CiAgICAg
fQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0
YUxlbmd0aCkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlm
ICghZGF0YUxlbmd0aCkKKyAgICAgICAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgaWYgKGRhdGFMZW5ndGggPT0gLTEpCi0gICAgICAgICAgICBk
YXRhTGVuZ3RoID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsK
LQotICAgICAgICBtX3Jlc3BvbnNlVGV4dC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwg
ZGF0YUxlbmd0aCkpOworICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IHVzZVN0ckxlbiA/IHN0
cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIuZGF0YSgpKSkgOiBidWZm
ZXIuc2l6ZSgpOworICAgICAgICBtX3Jlc3BvbnNlVGV4dC5hcHBlbmQobV9kZWNvZGVyLT5kZWNv
ZGUoYnVmZmVyLmRhdGEoKSwgZGF0YUxlbmd0aCkpOwogICAgIH0KIAogICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIG92ZXJyaWRlCkBAIC01NDksOSAr
NTQ3LDggQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmkKICAgICAgICAgICAgIGlmIChwcmV2aW91
c1Jlc291cmNlRGF0YS0+aGFzQ29udGVudCgpKQogICAgICAgICAgICAgICAgIG1fcmVzb3VyY2Vz
RGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgcHJldmlvdXNSZXNvdXJjZURhdGEt
PmNvbnRlbnQoKSwgcHJldmlvdXNSZXNvdXJjZURhdGEtPmJhc2U2NEVuY29kZWQoKSk7CiAgICAg
ICAgICAgICBlbHNlIGlmIChwcmV2aW91c1Jlc291cmNlRGF0YS0+aGFzQnVmZmVyZWREYXRhKCkp
IHsKLSAgICAgICAgICAgICAgICBhdXRvIHByZXZpb3VzQnVmZmVyID0gcHJldmlvdXNSZXNvdXJj
ZURhdGEtPmJ1ZmZlcigpOwotICAgICAgICAgICAgICAgIHByZXZpb3VzQnVmZmVyLT5mb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgICAgICBtX3Jlc291
cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgc2VnbWVudC5kYXRhKCks
IHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBwcmV2aW91c1Jlc291cmNlRGF0YS0+
YnVmZmVyKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNl
RGF0YShyZXF1ZXN0SWQsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKQEAgLTU3Nyw3ICs1NzQsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaQogICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCBudWxscHRyLCBjYWNoZWRS
ZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSwgMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0
aCkKK3ZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhLCBpbnQg
ZXhwZWN0ZWREYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKG1f
aGlkZGVuUmVxdWVzdElkZW50aWZpZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKQogICAgICAgICBy
ZXR1cm47CkBAIC01ODUsMTYgKzU4MiwxNiBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAg
U3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiAKICAgICBpZiAoZGF0YSkgewotICAgICAgICBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0Rh
dGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgZGF0YSwgZGF0YUxlbmd0aCk7Cisg
ICAgICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNl
RGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCAq
ZGF0YSk7CiAKICAgICAgICAgLy8gRm9yIGEgc3luY2hyb25vdXMgWEhSLCBpZiB3ZSBkaWRuJ3Qg
YWRkIGRhdGEgdGhlbiB3ZSBjYW4gYXBwbHkgaXQgaGVyZSBhcyBiYXNlNjQgZW5jb2RlZCBjb250
ZW50LgogICAgICAgICAvLyBPZnRlbiB0aGUgZGF0YSBpcyB0ZXh0IGFuZCB3ZSB3b3VsZCBoYXZl
IGEgZGVjb2RlciwgYnV0IGZvciBub24tdGV4dCB3ZSB3b24ndCBoYXZlIGEgZGVjb2Rlci4KICAg
ICAgICAgLy8gU3luYyBYSFJzIG1heSBub3QgaGF2ZSBhIGNhY2hlZCByZXNvdXJjZSwgd2hpbGUg
bm9uLXN5bmMgWEhScyB1c3VhbGx5IHRyYW5zZmVyIGRhdGEgb3ZlciBvbiBjb21wbGV0aW9uLgog
ICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSAmJiByZXNvdXJjZURhdGEgJiYg
IXJlc291cmNlRGF0YS0+aGFzQnVmZmVyZWREYXRhKCkgJiYgIXJlc291cmNlRGF0YS0+Y2FjaGVk
UmVzb3VyY2UoKSkKLSAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250
ZW50KHJlcXVlc3RJZCwgYmFzZTY0RW5jb2RlVG9TdHJpbmcoZGF0YSwgZGF0YUxlbmd0aCksIHRy
dWUpOworICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVx
dWVzdElkLCBiYXNlNjRFbmNvZGVUb1N0cmluZyhkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSks
IHRydWUpOwogICAgIH0KIAotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kYXRhUmVjZWl2ZWQo
cmVxdWVzdElkLCB0aW1lc3RhbXAoKSwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwor
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kYXRhUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3Rh
bXAoKSwgZXhwZWN0ZWREYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcywgUmVzb3VyY2VMb2FkZXIqKQpAQCAtMTI3
MSw3ICsxMjY4LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0
d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICBpZiAobG9hZGVyLT5y
ZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVu
YWJsZSB0byBmdWxmaWxsIHJlcXVlc3QsIGl0IGhhcyBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIl9z
KTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGE7CiAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKICAgICAgICAg
YXV0byBidWZmZXIgPSBiYXNlNjREZWNvZGUoY29udGVudCk7CiAgICAgICAgIGlmICghYnVmZmVy
KQpAQCAtMTI5Niw5ICsxMjkzLDkgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5z
cGVjdG9yTmV0d29ya0FnZW50OjppbnRlcmNlcHRSZXF1ZXN0V2l0aFJlc3BvbnMKICAgICB9CiAg
ICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGV4cGxpY2l0SGVhZGVycykp
OwogICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVu
dFR5cGUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOwotICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHJlc3BvbnNlLCBbbG9hZGVyLCBidWZmZXIgPSBkYXRhLnJlbGVhc2VOb25OdWxsKCldKCkg
bXV0YWJsZSB7CisgICAgbG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UsIFtsb2Fk
ZXIsIGJ1ZmZlciA9IGRhdGEucmVsZWFzZU5vbk51bGwoKV0oKSB7CiAgICAgICAgIGlmIChidWZm
ZXItPnNpemUoKSkKLSAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3Zl
KGJ1ZmZlciksIGJ1ZmZlci0+c2l6ZSgpLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAg
ICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGJ1ZmZlci0+c2l6ZSgpLCBE
YXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogICAgICAgICBsb2FkZXItPmRpZEZpbmlzaExvYWRp
bmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA2
YmNkODdkZGNkOGIwNDQxMzA4ZDFkMDFlY2E2YjBlNmRhMTQxM2Q0Li43MmY0MjNmZjYxMjc3ZWVm
NGJkMzU2MzI4YzQ2ZDNiZDkxMzFmZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTEwMSw3ICsxMDEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VMb2FkZXJJZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3RPZlR5cGUoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1
bWVudExvYWRlciosIFJlc291cmNlUmVxdWVzdCYsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
TG9hZFR5cGUpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRl
bnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVzb3Vy
Y2VMb2FkZXIqKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0
YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciosIGludCBleHBlY3RlZERhdGFMZW5ndGgsIGludCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVy
SWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmLCBS
ZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICB2
b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciosIENhY2hl
ZFJlc291cmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXgg
NDMzMmQ2OTFiYmY4MjZhN2M4N2VhODNhMzE3ZTk2MTE1YTIwNDk5My4uYjg2ZjliYTYzNzY1ZWM0
ZGZlODRmMDJkYTRkZjc4MjMwOWMxNThkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50
RmlsdGVyLmNwcApAQCAtMTQ1LDE0ICsxNDUsMTQgQEAgYm9vbCBDb250ZW50RmlsdGVyOjpjb250
aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb24K
ICAgICByZXR1cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6QmxvY2tlZDsKIH0KIAotYm9vbCBDb250ZW50
RmlsdGVyOjpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpCitib29sIENvbnRlbnRGaWx0ZXI6OmNvbnRpbnVlQWZ0ZXJEYXRhUmVjZWl2ZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIFJlZjxDb250ZW50RmlsdGVyQ2xpZW50
PiBwcm90ZWN0ZWRDbGllbnQgeyBtX2NsaWVudCB9OwogCiAgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkZpbHRlcmluZykgewotICAgICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNvbnRlbnRG
aWx0ZXIgcmVjZWl2ZWQgJWQgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBsZW5ndGgsIG1f
bWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIGZv
ckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtkYXRhLCBsZW5ndGhdKFBsYXRmb3JtQ29u
dGVudEZpbHRlciYgY29udGVudEZpbHRlcikgewotICAgICAgICAgICAgY29udGVudEZpbHRlci5h
ZGREYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIExPRyhDb250ZW50RmlsdGVyaW5nLCAiQ29u
dGVudEZpbHRlciByZWNlaXZlZCAlenUgYnl0ZXMgb2YgZGF0YSBmcm9tIDwlcz4uXG4iLCBkYXRh
LnNpemUoKSwgbV9tYWluUmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsK
KyAgICAgICAgZm9yRWFjaENvbnRlbnRGaWx0ZXJVbnRpbEJsb2NrZWQoW2RhdGEgPSBSZWYgeyBk
YXRhIH1dKFBsYXRmb3JtQ29udGVudEZpbHRlciYgY29udGVudEZpbHRlcikgeworICAgICAgICAg
ICAgY29udGVudEZpbHRlci5hZGREYXRhKGRhdGEpOwogICAgICAgICB9KTsKIAogICAgICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWxsb3dlZCkKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIENv
bnRlbnRGaWx0ZXI6OmRlbGl2ZXJSZXNvdXJjZURhdGEoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
KQogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKTsKICAgICBBU1NFUlQocmVz
b3VyY2UuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZl
ckRhdGEpOwogICAgIGlmIChhdXRvKiByZXNvdXJjZUJ1ZmZlciA9IHJlc291cmNlLnJlc291cmNl
QnVmZmVyKCkpCi0gICAgICAgIG1fY2xpZW50LmRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50Rmls
dGVyKHJlc291cmNlQnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlQnVm
ZmVyLT5zaXplKCkpOworICAgICAgICBtX2NsaWVudC5kYXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVu
dEZpbHRlcihyZXNvdXJjZUJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSk7CiB9CiAKIHN0YXRpYyBj
b25zdCBVUkwmIGJsb2NrZWRQYWdlVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRl
ci5oCmluZGV4IDhiNmRlZmZmYWI4MGY1ZGFjMjU4N2UzNzFjMDE4NzliOWYzZmRmNzcuLjYwYjRk
YTFhOWIzMzY4YzJkZmVjZmY0MmI4OWYzNTU4ZTgzMzFjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0NvbnRlbnRGaWx0ZXIuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGNv
bnRpbnVlQWZ0ZXJXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpOwogICAgIGJvb2wgY29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgY29udGludWVBZnRlckRhdGFSZWNlaXZl
ZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICBib29sIGNvbnRpbnVlQWZ0
ZXJEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBjb250aW51ZUFm
dGVyTm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmKTsKIAogICAgIHN0YXRpYyBib29sIGNv
bnRpbnVlQWZ0ZXJTdWJzdGl0dXRlRGF0YVJlcXVlc3QoY29uc3QgRG9jdW1lbnRMb2FkZXImIGFj
dGl2ZUxvYWRlciwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29udGVudEZpbHRlckNsaWVudC5oCmluZGV4IDIxNWMwNGVjOTg5NWU5ZjFlNmUxNDdkYTgy
MDkzMDA5ODUyMzk2MjMuLmZhN2FkMzAzOWEyMDVlOTA1NzEwOGYzYzZmMzkyNDE5YmM0NjQ3ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXJDbGllbnQuaApAQCAtMzMs
NiArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBj
bGFzcyBTdWJzdGl0dXRlRGF0YTsKIAogY2xhc3MgQ29udGVudEZpbHRlckNsaWVudCB7CkBAIC00
MSw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBk
YXRhUmVjZWl2ZWRUaHJvdWdoQ29udGVudEZpbHRlcihjb25zdCB1aW50OF90KiwgaW50KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0
IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY29udGVudEZp
bHRlckRpZEJsb2NrKENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciwgU3RyaW5nJiYgdW5ibG9j
a1JlcXVlc3REZW5pZWRTY3JpcHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTWFpblJl
c291cmNlTG9hZEZvckNvbnRlbnRGaWx0ZXIoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJvdmlzaW9uYWxMb2FkRmFpbHVyZUZyb21Db250ZW50Rmls
dGVyKGNvbnN0IFVSTCYgYmxvY2tlZFBhZ2VVUkwsIFN1YnN0aXR1dGVEYXRhJikgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggNmJmM2FjMjk3ZWM2YjI2
M2EwNzg2NDBiY2YzYWQ1Nzc5ZGIwZmVkYi4uY2E2YTk0N2JlY2QzNTg2N2MyYTc4MTYwYjNkMjQw
MjZkN2U1ZjM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBA
IC00ODMsOCArNDgzLDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nKCkK
ICAgICAgICAgLy8gSWYgdGhpcyBpcyBhbiBlbXB0eSBkb2N1bWVudCwgaXQgd2lsbCBub3QgaGF2
ZSBhY3R1YWxseSBiZWVuIGNyZWF0ZWQgeWV0LiBDb21taXQgZHVtbXkgZGF0YSBzbyB0aGF0CiAg
ICAgICAgIC8vIERvY3VtZW50V3JpdGVyOjpiZWdpbigpIGdldHMgY2FsbGVkIGFuZCBjcmVhdGVz
IHRoZSBEb2N1bWVudC4KICAgICAgICAgaWYgKCFtX2dvdEZpcnN0Qnl0ZSkKLSAgICAgICAgICAg
IGNvbW1pdERhdGEoMCwgMCk7Ci0gICAgICAgIAorICAgICAgICAgICAgY29tbWl0RGF0YShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZSgpKTsKKwogICAgICAgICBpZiAoIWZyYW1lTG9hZGVyKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmZpbmlzaGVk
TG9hZGluZyh0aGlzKTsKQEAgLTExNTcsOCArMTE1Nyw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6
OmNvbnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgaWYg
KCFpc1N0b3BwaW5nKCkgJiYgbV9zdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkgJiYgaXNMb2FkaW5n
TWFpblJlc291cmNlKCkpIHsKICAgICAgICAgYXV0byBjb250ZW50ID0gbV9zdWJzdGl0dXRlRGF0
YS5jb250ZW50KCk7CiAgICAgICAgIGlmIChjb250ZW50ICYmIGNvbnRlbnQtPnNpemUoKSkgewot
ICAgICAgICAgICAgY29udGVudC0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsK
LSAgICAgICAgICAgICAgICBkYXRhUmVjZWl2ZWQoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6
ZSgpKTsKKyAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIo
WyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgICAgICAgICBkYXRhUmVjZWl2ZWQoYnVmZmVy
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc0xvYWRpbmdNYWlu
UmVzb3VyY2UoKSkKQEAgLTExNzEsNyArMTE3MSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNv
bnRpbnVlQWZ0ZXJDb250ZW50UG9saWN5KFBvbGljeUFjdGlvbiBwb2xpY3kpCiAgICAgfQogfQog
Ci12b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGlu
dCBsZW5ndGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKICAgICAvLyBCb3RoIHVubG9hZGluZyB0aGUgb2xkIHBhZ2UgYW5kIHBh
cnNpbmcgdGhlIG5ldyBwYWdlIG1heSBleGVjdXRlIEphdmFTY3JpcHQgd2hpY2ggZGVzdHJveXMg
dGhlIGRhdGFzb3VyY2UKICAgICAvLyBieSBzdGFydGluZyBhIG5ldyBsb2FkLCBzbyByZXRhaW4g
dGVtcG9yYXJpbHkuCkBAIC0xMTg2LDcgKzExODYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpj
b21taXRMb2FkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgaWYgKEFyY2hp
dmVGYWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShyZXNwb25zZSgpLm1pbWVUeXBlKCkpKQogICAg
ICAgICByZXR1cm47CiAjZW5kaWYKLSAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuY29tbWl0dGVk
TG9hZCh0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIGZyYW1lTG9hZGVyLT5jbGllbnQoKS5jb21t
aXR0ZWRMb2FkKHRoaXMsIGRhdGEpOwogCiAgICAgaWYgKGlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9h
ZCgpKQogICAgICAgICBmcmFtZUxvYWRlci0+Y2xpZW50KCkuZGlkUmVwbGFjZU11bHRpcGFydENv
bnRlbnQoKTsKQEAgLTEyMTUsNyArMTIxNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRV
c2VBY3RpdmVTZXJ2aWNlV29ya2VyRnJvbVBhcmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lCiB9
CiAjZW5kaWYKIAotdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCB1aW50OF90
KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmICghbV9nb3RGaXJzdEJ5dGUpIHsK
ICAgICAgICAgbV9nb3RGaXJzdEJ5dGUgPSB0cnVlOwpAQCAtMTMxMywyNCArMTMxMywyNCBAQCB2
b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXpl
X3QgbGVuZ3RoKQogI2VuZGlmCiAKICAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFy
c2luZygpKTsKLSAgICBtX3dyaXRlci5hZGREYXRhKGJ5dGVzLCBsZW5ndGgpOworICAgIG1fd3Jp
dGVyLmFkZERhdGEoZGF0YSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCit2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlRfVU5VU0VE
KHJlc291cmNlLCAmcmVzb3VyY2UgPT0gbV9tYWluUmVzb3VyY2UpOwotICAgIGRhdGFSZWNlaXZl
ZChkYXRhLCBsZW5ndGgpOworICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogfQogCi12b2lkIERv
Y3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0
aCkKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgaWYgKG1fY29u
dGVudEZpbHRlciAmJiAhbV9jb250ZW50RmlsdGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVk
KGRhdGEsIGxlbmd0aCkpCisgICAgaWYgKG1fY29udGVudEZpbHRlciAmJiAhbV9jb250ZW50Rmls
dGVyLT5jb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsK
ICNlbmRpZgogCi0gICAgQVNTRVJUKGRhdGEpOwotICAgIEFTU0VSVChsZW5ndGgpOworICAgIEFT
U0VSVChidWZmZXIuZGF0YSgpKTsKKyAgICBBU1NFUlQoYnVmZmVyLnNpemUoKSk7CiAgICAgQVNT
RVJUKCFtX3Jlc3BvbnNlLmlzTnVsbCgpKTsKIAogICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIENG
TmV0d29yayB3aGVyZSBjYWxsYmFja3MgY2FuIGJlIGRpc3BhdGNoZWQgZXZlbiB3aGVuIGxvYWRz
IGFyZSBkZWZlcnJlZC4KQEAgLTEzNDAsMTIgKzEzNDAsMTIgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6ZGF0YVJlY2VpdmVkKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCiAjZW5kaWYK
IAogICAgIGlmIChtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKQotICAg
ICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEodGhp
cywgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciwgZGF0YSwgbGVuZ3Ro
LCAtMSk7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlzcGF0Y2hEaWRSZWNl
aXZlRGF0YSh0aGlzLCBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyLCAm
YnVmZmVyLCBidWZmZXIuc2l6ZSgpLCAtMSk7CiAKLSAgICBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0
LT5tYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoZGF0YSwgbGVuZ3RoLCAtMSwgZmFsc2UpOworICAg
IG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChidWZmZXIs
IC0xLCBmYWxzZSk7CiAKICAgICBpZiAoIWlzTXVsdGlwYXJ0UmVwbGFjaW5nTG9hZCgpKQotICAg
ICAgICBjb21taXRMb2FkKGRhdGEsIGxlbmd0aCk7CisgICAgICAgIGNvbW1pdExvYWQoYnVmZmVy
KTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0dXBGb3JSZXBsYWNlKCkKQEAgLTE2MTQs
NyArMTYxNCw3IEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6Om1heWJlQ3JlYXRlQXJjaGl2ZSgpCiAg
ICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFpblJlc291cmNlLm1pbWVUeXBlKCkpOwogCiAgICAg
QVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIGNvbW1pdERhdGEobV9wYXJzZWRBcmNo
aXZlRGF0YS0+ZGF0YSgpLCBtYWluUmVzb3VyY2UuZGF0YSgpLnNpemUoKSk7CisgICAgY29tbWl0
RGF0YSgqbV9wYXJzZWRBcmNoaXZlRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0K
QEAgLTIyNTcsOCArMjI1Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1heWJlRmluaXNoTG9h
ZGluZ011bHRpcGFydENvbnRlbnQoKQogCiAgICAgZnJhbWVMb2FkZXIoKS0+c2V0dXBGb3JSZXBs
YWNlKCk7CiAgICAgbV9jb21taXR0ZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwotICAgIGNvbW1p
dExvYWQocmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCksIHJlc291cmNlRGF0
YS0+c2l6ZSgpKTsKKyAgICBjb21taXRMb2FkKG1haW5SZXNvdXJjZURhdGEoKS0+bWFrZUNvbnRp
Z3VvdXMoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQpA
QCAtMjQxMCw5ICsyNDA5LDkgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZW5xdWV1ZVNlY3VyaXR5
UG9saWN5VmlvbGF0aW9uRXZlbnQoU2VjdXJpdHlQb2xpY3lWaW9sYXRpb24KIH0KIAogI2lmIEVO
QUJMRShDT05URU5UX0ZJTFRFUklORykKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OmRhdGFSZWNlaXZl
ZFRocm91Z2hDb250ZW50RmlsdGVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBzaXplKQordm9p
ZCBEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgZGF0YVJlY2VpdmVkKGRhdGEsIHNpemUpOwor
ICAgIGRhdGFSZWNlaXZlZChidWZmZXIpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5j
ZWxNYWluUmVzb3VyY2VMb2FkRm9yQ29udGVudEZpbHRlcihjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYjQ2OTgxZDc1
MGIyNWMxZmQzMDdmMTZmZGE3NGI3ZWUzMDZhNGMzOS4uMjhlMjhhNjg4YWU2YjU3ZTBmMGQxNGM0
ZTdhMGMyNTU4Y2I2N2U0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgK
QEAgLTg2LDYgKzg2LDcgQEAgY2xhc3MgUHJldmlld0NvbnZlcnRlcjsKIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNXQ2xpZW50Q29u
bmVjdGlvbjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN1YnJlc291cmNlTG9hZGVyOwog
Y2xhc3MgU3Vic3RpdHV0ZVJlc291cmNlOwogY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOwpA
QCAtMzc3LDcgKzM3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0VGltaW5nKCkgeyBtX2xv
YWRUaW1pbmcgPSB7IH07IH0KIAogICAgIC8vIFRoZSBXZWJLaXQgbGF5ZXIgY2FsbHMgdGhpcyBm
dW5jdGlvbiB3aGVuIGl0J3MgcmVhZHkgZm9yIHRoZSBkYXRhIHRvIGFjdHVhbGx5IGJlIGFkZGVk
IHRvIHRoZSBkb2N1bWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdERhdGEoY29u
c3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY29tbWl0RGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0JiBhcHBsaWNhdGlvbkNhY2hlSG9zdCgpIGNvbnN0OwogICAgIEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KiBhcHBsaWNhdGlvbkNhY2hlSG9zdFVubGVzc0JlaW5nRGVzdHJveWVkKCkgY29uc3Q7
CkBAIC00NzcsNyArNDc4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tbWl0SWZSZWFkeSgp
OwogICAgIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOwot
ICAgIHZvaWQgY29tbWl0TG9hZChjb25zdCB1aW50OF90KiwgaW50KTsKKyAgICB2b2lkIGNvbW1p
dExvYWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBjbGVhck1haW5SZXNvdXJjZUxv
YWRlcigpOwogCiAgICAgdm9pZCBzZXR1cEZvclJlcGxhY2UoKTsKQEAgLTQ5Myw3ICs0OTQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgbWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNv
dXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRlOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIG92ZXJyaWRl
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAjaWYg
VVNFKFFVSUNLX0xPT0spCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcmV2aWV3UmVzcG9uc2VS
ZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZTsKQEAgLTUwMywxMyArNTA0LDEzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCiAgICAgLy8gQ29udGVudEZpbHRlckNsaWVudAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGF0YVJlY2VpdmVkVGhyb3VnaENvbnRlbnRGaWx0ZXIoY29uc3QgdWludDhfdCosIGlu
dCkgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWRUaHJvdWdoQ29u
dGVudEZpbHRlcihjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9S
VCBSZXNvdXJjZUVycm9yIGNvbnRlbnRGaWx0ZXJEaWRCbG9jayhDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIsIFN0cmluZyYmIHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0KSBmaW5hbDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNhbmNlbE1haW5SZXNvdXJjZUxvYWRGb3JDb250ZW50Rmls
dGVyKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGhhbmRsZVByb3Zpc2lvbmFsTG9hZEZhaWx1cmVGcm9tQ29udGVudEZpbHRlcihjb25zdCBVUkwm
IGJsb2NrZWRQYWdlVVJMLCBTdWJzdGl0dXRlRGF0YSYpIGZpbmFsOwogI2VuZGlmCiAKLSAgICB2
b2lkIGRhdGFSZWNlaXZlZChjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKTsKKyAgICB2
b2lkIGRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAgIGJvb2wgbWF5YmVM
b2FkRW1wdHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAppbmRleCBiOWM0MTM1MjU2NzYyNjcyMTkwN2FmMzY2ZGZiMWRlYzc5
NGMyNDc0Li44NjRiNjVhMWQxMTMxZmI2MzcxMjViMTczOTkxZTlkM2UwYTZlNzFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApA
QCAtNDM3LDIwICs0MzcsMjAgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnQKICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKQordm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3Vy
Y2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKLSAgICBkaWRSZWNlaXZlRGF0YShtX3Jlc291
cmNlLT5pZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgpOworICAgIGRpZFJlY2VpdmVEYXRh
KG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKSwgYnVmZmVyKTsKIH0KIAotdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwg
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCiAgICAg
aWYgKG1fZGVsYXlDYWxsYmFja3NGb3JJbnRlZ3JpdHlDaGVjaykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIGRhdGFMZW5ndGgpOworICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGZhbHNlKTsKIH0KIAogdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNv
dXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlVGltaW5nJiByZXNvdXJjZVRpbWluZykKQEAg
LTQ5MywyMCArNDkzLDE0IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmCiAKICAgICAgICAgaWYg
KG9wdGlvbnMoKS5maWx0ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRp
c2FibGUpIHsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRp
ZmllciwgcmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3Vy
Y2UtPnJlc291cmNlQnVmZmVyKCkpIHsKLSAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZl
ciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVEYXRhKCpidWZmZXIsIGZhbHNlKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlw
ZTo6RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2Uo
aWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNlLCBtX29wdGlvbnMu
Y3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA/IFJlc291
cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5vIDogUmVzb3VyY2VS
ZXNwb25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7Ci0gICAgICAgICAg
ICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewotICAg
ICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21lbnQuZGF0
YSgpLCBzZWdtZW50LnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKSkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlciwg
ZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogCkBAIC02NjcsMTEgKzY2MSw4IEBAIHZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBTZWN1cml0eUNoCiAgICAgfQogICAgIGRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVy
LCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YSkgewotICAgICAgICBkYXRhLT5mb3JFYWNoU2Vn
bWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRl
bnRpZmllciwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKLSAgICAgICAgfSk7Ci0g
ICAgfQorICAgIGlmIChkYXRhKQorICAgICAgICBkaWRSZWNlaXZlRGF0YShpZGVudGlmaWVyLCAq
ZGF0YSk7CiAKICAgICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0
d29ya0xvYWRNZXRyaWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291
cmNlVGltaW5nOjpmcm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0
aWF0b3IsIGxvYWRUaW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3M6
OmVtcHR5TWV0cmljcygpLCByZXNwb25zZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggZjFmNDFl
ZTkxZDZjZThhMWM1ODYyMzgxN2IzNThmNzc0NjUxZTBhNC4uYzg2YmE3ZjQ1MzgzYjZjMjg2MDAz
MmQzYWViZmJhM2UwODYwNzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaApAQCAtODYsMTQgKzg2LDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICAgICAgdm9pZCBk
YXRhU2VudChDYWNoZWRSZXNvdXJjZSYsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAgICB2
b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICAgICAgdm9p
ZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQg
ZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcmVk
aXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9h
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlVGltaW5nJikgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgZmluaXNoZWRUaW1pbmdGb3JXb3JrZXJMb2FkKGNvbnN0IFJlc291cmNlVGltaW5n
Jik7CiAgICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
KTsKICAgICAgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRl
ci5jcHAKaW5kZXggYjA0NmVmMGRlMjA0OGVmZDQzMTk3MDI2MjJiOTZhN2RmMmZlYWZhNy4uNGZm
OTM4MTgwZmRkMjhmYzcxNWQwODg4MTYwOGZjNjI4OTQ5MmU5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgdm9pZCBEb2N1bWVu
dFdyaXRlcjo6cmVwb3J0RGF0YVJlY2VpdmVkKCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5y
ZXNvbHZlU3R5bGUoRG9jdW1lbnQ6OlJlc29sdmVTdHlsZVR5cGU6OlJlYnVpbGQpOwogfQogCi12
b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3Qg
bGVuZ3RoKQordm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEpCiB7CiAgICAgLy8gRklYTUU6IENoYW5nZSB0aGVzZSB0byBBU1NFUlQgb25jZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA0MjcgaGFzIGJlZW4gcmVzb2x2
ZWQuCiAgICAgUkVMRUFTRV9BU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6Tm90U3RhcnRlZCk7CkBA
IC0yNzMsNyArMjczLDcgQEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRkRGF0YShjb25zdCB1aW50
OF90KiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBB
U1NFUlQobV9wYXJzZXIpOwotICAgIG1fcGFyc2VyLT5hcHBlbmRCeXRlcygqdGhpcywgYnl0ZXMs
IGxlbmd0aCk7CisgICAgbV9wYXJzZXItPmFwcGVuZEJ5dGVzKCp0aGlzLCBkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjppbnNlcnREYXRhU3luY2hy
b25vdXNseShjb25zdCBTdHJpbmcmIG1hcmt1cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmgKaW5kZXggMDcxNzJjOTczOWViNTczNWJjODFmOGRlZjJmYjliMjg1YzI1NGQwYi4u
YzBhMzRhNmI3ZTljZmU5NjQzMDQ1YTk1ZTc5MzIyNTIzNjNiMjY4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudFBhcnNlcjsKIGNsYXNzIEZyYW1l
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAogY2xh
c3MgRG9jdW1lbnRXcml0ZXIgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IGJlZ2luKCk7CiAgICAgYm9vbCBiZWdpbihjb25zdCBVUkwmLCBib29sIGRpc3BhdGNoV2luZG93
T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQgPSBudWxscHRy
KTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBsZW5ndGgp
OworICAgIHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGluc2Vy
dERhdGFTeW5jaHJvbm91c2x5KGNvbnN0IFN0cmluZyYpOyAvLyBGb3IgYW4gaW50ZXJuYWwgdXNl
IG9ubHkgdG8gcHJldmVudCB0aGUgcGFyc2VyIGZyb20geWllbGRpbmcuCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBlbmQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApp
bmRleCA3NThjYmU4MDY1NGU4ODg5N2FjZDllZDQxMTk5MGM4Njg2Y2FmM2JhLi5kMjNjOTZiNmM1
MjgwM2ZlYzJlNDU3YjdlYzdkYmM5ZWIzNzk5NWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcApAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6ZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKQogewogfQogCi12b2lkIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCB1aW50
OF90KiwgaW50KQordm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERv
Y3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMjI2OTljOWM1MTgz
MmE1YWE4Yzg5YWJhYjJmZmM3ZTA5ODViZmMwMC4uMTE2YTE3ZDFmNWM5ZTY0N2UxZjE0MWExMDA4
NmIwNzk4MzkzZjNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxS
ZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRp
cGFydENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExv
YWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0dGVkTG9h
ZChEb2N1bWVudExvYWRlciosIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKikgZmluYWw7CiAKICAgICBSZXNvdXJjZUVy
cm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIGNvbnN0IGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmRjOTdkYzQ2MmM4NzUyNmFh
MTg4Zjc5NjhkNjBhMGM4M2Q2ODBkOS4uYmI1MjkxYTY3ZmZmZTdhMTE2ZjhjMmNmYmY0ZmFiOTRm
ODg0ODI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNjg3LDcg
KzE2ODcsNyBAQCBib29sIEZyYW1lTG9hZGVyOjp3aWxsTG9hZE1lZGlhRWxlbWVudFVSTChVUkwm
IHVybCwgTm9kZSYgaW5pdGlhdG9yTm9kZSkKICAgICBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIg
aWRlbnRpZmllcjsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yOwogICAgIHJlcXVlc3RGcm9tRGVs
ZWdhdGUocmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwotICAgIG5vdGlmaWVyKCkuc2VuZFJl
bWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRpZmll
ciwgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSh1cmwsIFN0cmluZygpLCAtMSwgU3RyaW5nKCkp
LCAwLCAtMSwgLTEsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIFJl
c291cmNlUmVzcG9uc2UodXJsLCBTdHJpbmcoKSwgLTEsIFN0cmluZygpKSwgbnVsbHB0ciwgLTEs
IC0xLCBlcnJvcik7CiAKICAgICB1cmwgPSByZXF1ZXN0LnVybCgpOwogCkBAIC0yMDg3LDggKzIw
ODcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAg
ICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHRpdGxlKTsKIAogICAgICAg
ICAvLyBTZW5kIHJlbWFpbmluZyBub3RpZmljYXRpb25zIGZvciB0aGUgbWFpbiByZXNvdXJjZS4K
LSAgICAgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3Vt
ZW50TG9hZGVyLmdldCgpLCBtYWluUmVzb3VyY2VJZGVudGlmaWVyLCBtYWluUmVzb3VyY2VSZXF1
ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCksCi0gICAgICAgICAgICBudWxscHRyLCBzdGF0aWNfY2Fz
dDxpbnQ+KG1fZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkpLCAwLCBtYWluUmVzb3VjZUVycm9yKTsKKyAgICAgICAgbm90aWZpZXIoKS5zZW5kUmVtYWlu
aW5nRGVsZWdhdGVNZXNzYWdlcyhtX2RvY3VtZW50TG9hZGVyLmdldCgpLCBtYWluUmVzb3VyY2VJ
ZGVudGlmaWVyLCBtYWluUmVzb3VyY2VSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCksIG51bGxw
dHIsIHN0YXRpY19jYXN0PGludD4obV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5leHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSksIDAsIG1haW5SZXNvdWNlRXJyb3IpOwogCiAgICAgICAgIFZlY3Rv
cjxSZWY8RnJhbWU+PiB0YXJnZXRGcmFtZXM7CiAgICAgICAgIHRhcmdldEZyYW1lcy5hcHBlbmQo
bV9mcmFtZSk7CkBAIC0yMTM2LDcgKzIxMzUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQ
cm92aXNpb25hbExvYWQoKQogICAgICAgICAgICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJlc291
cmNlIHdpdGggbW9yZSB0aGFuIDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0
IHRoaW5nLgogICAgICAgICAgICAgLy8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBh
bmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAg
ICAgICAgICAgLy8gQ291bGQgYmUgYW4gaXNzdWUgd2l0aCBhIGdpYW50IGxvY2FsIGZpbGUuCi0g
ICAgICAgICAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKG1fZG9j
dW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlc3BvbnNlLCAwLCBzdGF0
aWNfY2FzdDxpbnQ+KHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKSwgMCwgZXJyb3Ip
OworICAgICAgICAgICAgbm90aWZpZXIoKS5zZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyht
X2RvY3VtZW50TG9hZGVyLmdldCgpLCBpZGVudGlmaWVyLCByZXF1ZXN0LCByZXNwb25zZSwgbnVs
bHB0ciwgc3RhdGljX2Nhc3Q8aW50PihyZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSks
IDAsIGVycm9yKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBXaHkgb25seSB0aGlz
IGZyYW1lIGFuZCBub3QgcGFyZW50IGZyYW1lcz8KQEAgLTMxNjYsNyArMzE2NSw4IEBAIFJlc291
cmNlTG9hZGVySWRlbnRpZmllciBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgICAgICAgICAgKGlzU2NyaXB0TGlrZURlc3RpbmF0
aW9uKG9wdGlvbnMuZGVzdGluYXRpb24pID8gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OkZldGNoRGVz
dGluYXRpb25Jc1NjcmlwdExpa2U6OlllcyA6IFJlc291cmNlTG9hZE9ic2VydmVyOjpGZXRjaERl
c3RpbmF0aW9uSXNTY3JpcHRMaWtlOjpObykpOwogICAgICAgICB9CiAgICAgfQotICAgIG5vdGlm
aWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQo
KSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBu
dWxscHRyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCwgLTEsIGVycm9yKTsKKworICAgIG5vdGlm
aWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5nZXQo
KSwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzcG9uc2UsIGRhdGEuZ2V0KCksIGRhdGEgPyBkYXRh
LT5zaXplKCkgOiAwLCAtMSwgZXJyb3IpOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCkBA
IC0zNjQ3LDcgKzM2NDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkZWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIFJlc291cgogCiAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSA9IHJlc291cmNlLnJlc3BvbnNlKCk7CiAgICAgcmVzcG9uc2Uu
c2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TWVtb3J5Q2FjaGUpOwotICAgIG5v
dGlmaWVyKCkuc2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMobV9kb2N1bWVudExvYWRlci5n
ZXQoKSwgaWRlbnRpZmllciwgbmV3UmVxdWVzdCwgcmVzcG9uc2UsIDAsIHJlc291cmNlLmVuY29k
ZWRTaXplKCksIDAsIGVycm9yKTsKKyAgICBub3RpZmllcigpLnNlbmRSZW1haW5pbmdEZWxlZ2F0
ZU1lc3NhZ2VzKG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3Qs
IHJlc3BvbnNlLCBudWxscHRyLCByZXNvdXJjZS5lbmNvZGVkU2l6ZSgpLCAwLCBlcnJvcik7CiB9
CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmFwcGx5VXNlckFnZW50SWZOZWVkZWQoUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApp
bmRleCBlZTlmM2QwYzk4NGQ0NTVjYmI5MWI0NjBjMWJjMTI4OThkMTIzNjUyLi4zNTJhNGM0ZmI1
MDRmN2NkNGQyZWM0MDZlNmJjMjkxMWE1NWZkMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNyw3ICs3LDcgQEAKICAqIGFyZSBtZXQ6CiAgKgogICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCiAgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCkBAIC01MCw3ICs1MCw3IEBACiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2lmZGVmIF9fT0JKQ19fIAorI2lmZGVmIF9f
T0JKQ19fCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIHR5cGVkZWYgaWQgUmVt
b3RlQVhPYmplY3RSZWY7CiAjZWxzZQpAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBSZXNvdXJjZUhh
bmRsZTsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBj
bGFzcyBTZWN1cml0eU9yaWdpbjsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CitjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdWJzdGl0dXRlRGF0YTsKIGNsYXNzIFdpZGdldDsKIApA
QCAtMjE0LDkgKzIxNCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlcGxhY2VN
dWx0aXBhcnRDb250ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXBsYWNlTXVsdGlw
YXJ0Q29udGVudCgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
b21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSA9IDA7Ci0g
ICAgCisKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSA9IDA7CiAKQEAg
LTI3Miw3ICsyNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNv
bnN0IFVSTCYpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICAKKwogICAg
IHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZy
YW1lKENhY2hlZEZyYW1lKikgPSAwOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zODEs
NyArMzgxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIEFsbG93c0NvbnRlbnRK
YXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gQWxsb3dzQ29udGVudEphdmFTY3JpcHQ6OlllczsgfQotICAgIAor
CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRF
bmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlT2ZBcHBCb3VuZEJlaGF2aW9yKCkgeyB9
CkBAIC0zOTAsNyArMzkwLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShQREZLSVRfUExVR0lOKQog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VQREZQbHVnaW4oY29uc3QgU3RyaW5nJiwgU3RyaW5n
VmlldykgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotICAgIAorCiAgICAgdmlydHVh
bCBib29sIGlzUGFyZW50UHJvY2Vzc0FGdWxsV2ViQnJvd3NlcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggNWQxMjBlMjQ3YWMyNjI3MTE2MWRlMGRjNTIzMDI0ZGM4ZGUzNGQ2OS4uMWEx
N2E3MGZhNThjNzIyOGY2Mzg5MzU5ZGQwZDMzOWQwZTA1Y2QyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtMjMxLDEzICsyMzEsMTMgQEAg
dm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKICAgICAgICAgbV9jbGllbnQtPmRhdGFTZW50KCp0aGlz
LCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKLXZvaWQgTWVkaWFSZXNvdXJj
ZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGRhdGFMZW5ndGgpCit2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewog
ICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsICZyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAog
ICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmICht
X2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0
YUxlbmd0aCk7CisgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGJ1ZmZlcik7
CiB9CiAKIHZvaWQgTWVkaWFSZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRleCBmZjZjMjg4NzEwMDg4ZjRi
MDU0Y2U0NzYzZDVkYTBkZGM5MmMyMDY1Li43YjU1NzcyMGVmMDUzM2ZiYWEyMjY1NjUzOGVmZGQ5
NmY2MTc5ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVy
LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYpIG92ZXJyaWRl
OwogICAgIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KENhY2hlZFJlc291
cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCosIGlu
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmNwcAppbmRleCA2MDQzYWM5YmUyNjdlYTRmYmM3MWUxMTE4YjkwNzkxNTVlMzkxNTAz
Li41Y2FhZGY2MjljNzBhZTA4NmI3N2JkNzJjZDI4Njc1MzZiOGZhOTdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAg
LTE0MSwzMCArMTQxLDE0IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwCiAgICAgfSk7CiB9CiAK
LXZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3Ro
LCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewotICAgIGRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBh
eWxvYWRUeXBlKTsKLX0KLQotdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVj
ZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKLXsK
LSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKG51bGxwdHIsIDAsIFdURk1vdmUoYnVmZmVyKSwg
ZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9h
ZFR5cGUpCit2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewogICAgIFJlZjxOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBpZiAobV9jbGllbnQp
IHsKLSAgICAgICAgaWYgKGJ1ZmZlcikgewotICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2Vn
bWVudChbJl0oYXV0byYgc2VnbWVudCkgewotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YSh0aGlzLCBzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKHRoaXMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgfQorICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlcik7CiAKLSAgICBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIFdURk1vdmUo
YnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CisgICAgUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQ
YXlsb2FkVHlwZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5oCmluZGV4IGI1MTc0ZWRjOTRiOTkyMzkwMjA1ZjBmYWQ0NTJlYTVhYzM4Nzg5MzguLjFlYzdk
NjFlM2ExNzVjMjJiNTU4NzU4ZDM3ZWQwYzU1YmU1ZjEzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oCkBAIC0zNiwxMiArMzYs
MTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyQ2xpZW50PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVz
dChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBTaGFy
ZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgeyB9CiAgICAg
dmlydHVhbCBib29sIHdhbnRzQWxsU3RyZWFtcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBA
IC02Miw4ICs2Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2ln
bmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxv
bmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKQEAgLTc0
LDggKzc0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxDYW5jZWwoY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50
OF90KiwgaW50LCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVu
Y29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotCiAgICAgdm9pZCBub3RpZnlEb25l
KCk7CiAKICAgICBXZWFrUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50PiBtX2Ns
aWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3Rp
Zmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3Bw
CmluZGV4IDYyYmI1NmUzNGU2ZjQ2ZDI2MjgzNmNmY2E0NjViNGRiMGUzMDgzY2YuLjAxOWQxNzQ4
MWU0NDgyYTA0OGEyNjczNTYwMTg3NDc5N2QzZTg4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCkBAIC03OCwxMiArNzksMTIgQEAgdm9pZCBS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVyKiBs
b2FkZXIsIGNvbnN0IFJlc28KICAgICBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShsb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCksIGxvYWRlci0+aWRlbnRpZmllcigpLCByLCBsb2FkZXIpOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUxvYWRl
ciogbG9hZGVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkUmVjZWl2ZURhdGEo
UmVzb3VyY2VMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgp
KQotICAgICAgICBwYWdlLT5wcm9ncmVzcygpLmluY3JlbWVudFByb2dyZXNzKGxvYWRlci0+aWRl
bnRpZmllcigpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgcGFnZS0+cHJvZ3Jlc3MoKS5pbmNyZW1l
bnRQcm9ncmVzcyhsb2FkZXItPmlkZW50aWZpZXIoKSwgYnVmZmVyLnNpemUoKSk7CiAKLSAgICBk
aXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5p
ZGVudGlmaWVyKCksIGRhdGEsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBk
aXNwYXRjaERpZFJlY2VpdmVEYXRhKGxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSwgbG9hZGVyLT5p
ZGVudGlmaWVyKCksICZidWZmZXIsIGJ1ZmZlci5zaXplKCksIGVuY29kZWREYXRhTGVuZ3RoKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlkRmluaXNoTG9hZChSZXNvdXJjZUxv
YWRlciogbG9hZGVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmlj
cykKQEAgLTE1MywxMyArMTU0LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlCiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1l
LCBpZGVudGlmaWVyLCBsb2FkZXIsIHIsIHJlc291cmNlTG9hZGVyKTsKIH0KIAotdm9pZCBSZXNv
dXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExvYWRlciog
bG9hZGVyLCBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgUmVz
b3VyY2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoRGlkUmVjZWl2ZURhdGEoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJl
ZEJ1ZmZlciogYnVmZmVyLCBpbnQgZXhwZWN0ZWREYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpCiB7CiAgICAgLy8gTm90aWZ5aW5nIHRoZSBGcmFtZUxvYWRlckNsaWVudCBtYXkgY2F1
c2UgdGhlIGZyYW1lIHRvIGJlIGRlc3Ryb3llZC4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9m
cmFtZSk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVD
b250ZW50TGVuZ3RoKGxvYWRlciwgaWRlbnRpZmllciwgZGF0YUxlbmd0aCk7CisgICAgbV9mcmFt
ZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKGxvYWRl
ciwgaWRlbnRpZmllciwgZXhwZWN0ZWREYXRhTGVuZ3RoKTsKIAotICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEoJm1fZnJhbWUsIGlkZW50aWZpZXIsIGRhdGEsIGRh
dGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVEYXRhKCZtX2ZyYW1lLCBpZGVudGlmaWVyLCBidWZmZXIgPyAqYnVmZmVy
IDogU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgZW5jb2RlZERhdGFMZW5ndGgpOwogfQogCiB2b2lk
IFJlc291cmNlTG9hZE5vdGlmaWVyOjpkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzLCBSZXNvdXJjZUxvYWRlciog
cmVzb3VyY2VMb2FkZXIpCkBAIC0xODAsNyArMTgxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNv
dXIKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKCZtX2ZyYW1l
LCBsb2FkZXIsIGlkZW50aWZpZXIsIGVycm9yKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6c2VuZFJlbWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6c2VuZFJl
bWFpbmluZ0RlbGVnYXRlTWVzc2FnZXMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciog
YnVmZmVyLCBpbnQgZXhwZWN0ZWREYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIC8vIElmIHRoZSByZXF1ZXN0IGlzIG51
bGwsIHdpbGxTZW5kUmVxdWVzdCBjYW5jZWxsZWQgdGhlIGxvYWQuIFdlIHNob3VsZAogICAgIC8v
IG9ubHkgZGlzcGF0Y2ggZGlkRmFpbExvYWRpbmcgaW4gdGhpcyBjYXNlLgpAQCAtMTkzLDggKzE5
NCw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OnNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1l
c3NhZ2VzKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsCiAgICAgaWYgKCFyZXNwb25zZS5pc051bGwo
KSkKICAgICAgICAgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UobG9hZGVyLCBpZGVudGlmaWVy
LCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YUxlbmd0aCA+IDApCi0gICAgICAgIGRpc3BhdGNo
RGlkUmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlmaWVyLCBkYXRhLCBkYXRhTGVuZ3RoLCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CisgICAgaWYgKGV4cGVjdGVkRGF0YUxlbmd0aCA+IDApCisgICAgICAg
IGRpc3BhdGNoRGlkUmVjZWl2ZURhdGEobG9hZGVyLCBpZGVudGlmaWVyLCBidWZmZXIsIGV4cGVj
dGVkRGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpOwogCiAgICAgaWYgKGVycm9yLmlzTnVs
bCgpKSB7CiAgICAgICAgIE5ldHdvcmtMb2FkTWV0cmljcyBlbXB0eU1ldHJpY3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCmluZGV4IDZkYTE2MDMyNWY0
MmZlZjU0MGM2YmQ1MGJiMTgyZTg2OWRhZGU5ZTMuLmM0ZjViMmViZGQ4MTA4ZTc4YjI4MjViOWQ2
ZDcxMjhkNzRkNTc0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRO
b3RpZmllci5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBS
ZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVz
cG9uc2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFJlc291cmNlTG9hZE5vdGlmaWVy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXNvdXJjZUxvYWROb3RpZmllcik7CkBAIC01
NSwxOCArNTYsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VMb2FkZXIqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
ciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJl
c291cmNlTG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VMb2FkZXIqLCBj
b25zdCBTaGFyZWRCdWZmZXImLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpOwog
ICAgIHZvaWQgZGlkRmFpbFRvTG9hZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKIAogICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCBS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IENhY2hlZFJlc291cmNlKik7CiAgICAg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShEb2N1bWVudExvYWRlciosIFJlc291cmNl
TG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlTG9hZGVy
KiA9IG51bGxwdHIpOwotICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlRGF0YShEb2N1bWVudExv
YWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVEYXRhKERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBj
b25zdCBTaGFyZWRCdWZmZXIqLCBpbnQgZXhwZWN0ZWREYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
LCBSZXNvdXJjZUxvYWRlciopOwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1
bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwogCi0gICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExv
YWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVu
Z3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICB2
b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERvY3VtZW50TG9hZGVyKiwgUmVzb3Vy
Y2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgU2hhcmVkQnVmZmVyKiwgaW50IGV4cGVjdGVkRGF0YUxlbmd0aCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBib29s
IGlzSW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IDZkZWJiMjU4OGEzZTgyYjIxYzYxZDdlOGYzNmU0ZjRiYmJhMjVlNjAuLjY2NDdjMjcwODEx
ODBlYmNlYzJiNWNhMjlmZDYwYjcyM2FiNjQ4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtMjk5LDkgKzI5OSw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmxvYWREYXRhVVJMKCkKIAogICAgICAgICBhdXRvIGRhdGFTaXplID0gZGVjb2RlUmVzdWx0LT5k
YXRhLnNpemUoKTsKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBkYXRhUmVzcG9uc2UgPSBSZXNv
dXJjZVJlc3BvbnNlOjpkYXRhVVJMUmVzcG9uc2UodXJsLCBkZWNvZGVSZXN1bHQudmFsdWUoKSk7
Ci0gICAgICAgIHRoaXMtPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2UsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZGF0YVNpemUsIGRhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRlY29kZVJlc3VsdC0+ZGF0YSkpXSgpIG11dGFi
bGUgeworICAgICAgICB0aGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3BvbnNlLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGRhdGFTaXplLCBkYXRh
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkZWNvZGVSZXN1bHQtPmRhdGEpKV0oKSB7
CiAgICAgICAgICAgICBpZiAoIXRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkgJiYgZGF0YVNp
emUgJiYgbV9yZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiSEVBRCIpCi0gICAgICAgICAgICAgICAg
dGhpcy0+ZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGRhdGEpLCBkYXRhU2l6ZSwgRGF0YVBheWxv
YWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgICAgICAgICB0aGlzLT5kaWRSZWNlaXZlQnVmZmVy
KGRhdGEsIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogCiAgICAgICAgICAg
ICBpZiAoIXRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKICAgICAgICAgICAgICAgICBO
ZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOwpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OndpbGxTd2l0Y2hUb1N1YnN0aXR1dGVSZXNvdXJjZSgpCiAgICAgICAg
IG1faGFuZGxlLT5jYW5jZWwoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6YWRkRGF0YU9y
QnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogYnVmZmVyLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQordm9p
ZCBSZXNvdXJjZUxvYWRlcjo6YWRkQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICBpZiAobV9v
cHRpb25zLmRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6RG9Ob3RC
dWZmZXJEYXRhKQogICAgICAgICByZXR1cm47CkBAIC0zMzYsMTAgKzMzNiw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmFkZERhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgsIEZyYWdtCiAgICAgaWYgKGRhdGFQYXlsb2FkVHlwZSA9PSBEYXRhUGF5bG9hZFdo
b2xlUmVzb3VyY2UpCiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CiAKLSAgICBpZiAo
YnVmZmVyKQotICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoKmJ1ZmZlcik7Ci0gICAgZWxz
ZQotICAgICAgICBtX3Jlc291cmNlRGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX3Jl
c291cmNlRGF0YS5hcHBlbmQoYnVmZmVyKTsKIH0KIAogY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogUmVzb3VyY2VMb2FkZXI6OnJlc291cmNlRGF0YSgpIGNvbnN0CkBAIC01MzksNyArNTM2
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHIsIENvbXBsZXRpb25IYW4KICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90
aWZpZXIoKS5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgbV9yZXNwb25zZSk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUg
ZGF0YVBheWxvYWRUeXBlKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0
YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsKICAgICAvLyBUaGUgZm9sbG93aW5nIGFz
c2VydGlvbnMgYXJlIG5vdCBxdWl0ZSB2YWxpZCBoZXJlLCBzaW5jZSBhIHN1YmNsYXNzCiAgICAg
Ly8gbWlnaHQgb3ZlcnJpZGUgZGlkUmVjZWl2ZURhdGEgaW4gYSB3YXkgdGhhdCBpbnZhbGlkYXRl
cyB0aGVtLiBUaGlzCkBAIC01NDcsMzAgKzU0NCwyMiBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGxvbmcg
bAogICAgIC8vIEFTU0VSVChjb24gPT0gY29ubmVjdGlvbik7CiAgICAgLy8gQVNTRVJUKCFtX3Jl
YWNoZWRUZXJtaW5hbFN0YXRlKTsKIAotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwg
bGVuZ3RoLCBudWxscHRyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKKyAg
ICBkaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2Fk
VHlwZSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwg
bG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRU
eXBlKQogewotICAgIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIobnVsbHB0ciwgMCwgV1RGTW92ZShi
dWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKLX0KLQotdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxv
YWRUeXBlKQotewotICAgIC8vIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGdldCBkYXRhK2xlbmd0
aCAqT1IqIGEgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlci4KLSAgICBBU1NFUlQoIWJ1ZmZlciB8fCAo
IWRhdGEgJiYgIWxlbmd0aCkpOwotCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdh
dGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8g
YW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9m
IHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KICAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwogCi0gICAgYWRkRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgYnVmZmVy
LmdldCgpLCBkYXRhUGF5bG9hZFR5cGUpOworICAgIGFkZEJ1ZmZlcihidWZmZXIsIGRhdGFQYXls
b2FkVHlwZSk7CiAKICAgICAvLyBGSVhNRTogSWYgd2UgZ2V0IGEgcmVzb3VyY2Ugd2l0aCBtb3Jl
IHRoYW4gMkIgYnl0ZXMsIHRoaXMgY29kZSB3b24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAg
Ly8gSG93ZXZlciwgd2l0aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMs
IHRoaXMgd29uJ3QgaGFwcGVuIGluIHByYWN0aWNlLgogICAgIC8vIENvdWxkIGJlIGFuIGlzc3Vl
IHdpdGggYSBnaWFudCBsb2NhbCBmaWxlLgogICAgIGlmIChtX29wdGlvbnMuc2VuZExvYWRDYWxs
YmFja3MgPT0gU2VuZENhbGxiYWNrUG9saWN5OjpTZW5kQ2FsbGJhY2tzICYmIG1fZnJhbWUpCi0g
ICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVjZWl2ZURhdGEodGhpcywgYnVm
ZmVyID8gYnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBi
dWZmZXItPnNpemUoKSA6IGxlbmd0aCwgc3RhdGljX2Nhc3Q8aW50PihlbmNvZGVkRGF0YUxlbmd0
aCkpOworICAgICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlci5tYWtlQ29udGlndW91cygpLCBzdGF0aWNfY2FzdDxpbnQ+KGVuY29kZWREYXRh
TGVuZ3RoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCkBAIC03MjksMTQgKzcx
OCwxNCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNv
dXJjZUhhbmRsZSosIFJlc291cmNlUmVzcG9uc2UmJgogICAgIGRpZFJlY2VpdmVSZXNwb25zZShy
ZXNwb25zZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgaW50IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRh
KGRhdGEsIGxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOworICAg
IGRpZFJlY2VpdmVEYXRhKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0
ZXMpOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNl
SGFuZGxlKiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgpCit2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291
cmNlSGFuZGxlKiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpCiB7Ci0gICAgZGlkUmVjZWl2ZUJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlciks
IGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBkaWRSZWNlaXZlQnVm
ZmVyKGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkQnl0ZXMpOwogfQogCiB2
b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaAppbmRleCA5MDc1Y2JjMGEzMDQwZWExNTBhODYyNWNkYTA4OTBiMWVlMTM4Yzcy
Li4xMDk4ZTRmMjc4ODljZGE3YjNhOWNmZDRkNTQ2YWUyZmQ5YTdjNTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTA3LDggKzEwNyw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjayk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFNl
bmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBwb2xp
Y3lDb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRh
UGF5bG9hZFR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIApA
QCAtMTY3LDggKzE2Nyw2IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgd2FzQ2FuY2VsbGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5jZWxsYXRpb25TdGF0dXMgPj0gQ2FuY2VsbGVkOyB9CiAKLSAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIHVuc2lnbmVkLCBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVu
Z3RoLCBEYXRhUGF5bG9hZFR5cGUpOwotICAgIAogICAgIHZvaWQgc2V0UmVmZXJyZXJQb2xpY3ko
UmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3kpIHsgbV9vcHRpb25zLnJlZmVycmVyUG9saWN5
ID0gcmVmZXJyZXJQb2xpY3k7IH0KICAgICBSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5yZWZlcnJlclBvbGljeTsgfQogCkBAIC0xOTIsNyAr
MTkwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENhbmNlbChjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpID0gMDsKIAotICAgIHZvaWQgYWRkRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3Qq
LCB1bnNpZ25lZCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIERhdGFQYXlsb2FkVHlwZSk7Cisg
ICAgdm9pZCBhZGRCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIERhdGFQYXls
b2FkVHlwZSk7CiAgICAgdm9pZCBsb2FkRGF0YVVSTCgpOwogICAgIHZvaWQgZmluaXNoTmV0d29y
a0xvYWQoKTsKIApAQCAtMjAyLDggKzIwMCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZW5k
RGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3BvbnNlJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJj
ZVJlc3BvbnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgdWludDhfdCosIHVuc2lnbmVkLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKICAgICB2b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM3ZDBiYjgyMWFi
ZDg2YTliNTYwNmUxMjdlZmM5NDEyYTUxYmIxYTkuLjk3MmYyYWYyMjYwM2Y0MjRjZDg3NzVmNTkx
MDEwZTJkNzY5MzhhMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcApAQCAtNTE4LDMyICs1MTgsMTUgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlUG9saWN5KCkKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0K
IAotdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQ
YXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCit2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgbG9uZyBs
b25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQog
ewogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3By
ZXZpZXdMb2FkZXIuZ2V0KCkpIHsKLSAgICAgICAgaWYgKHByZXZpZXdMb2FkZXItPmRpZFJlY2Vp
dmVEYXRhKGRhdGEsIGxlbmd0aCkpCisgICAgICAgIGlmIChwcmV2aWV3TG9hZGVyLT5kaWRSZWNl
aXZlRGF0YShidWZmZXIubWFrZUNvbnRpZ3VvdXMoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgfQogI2VuZGlmCiAKLSAgICBkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwg
bnVsbHB0ciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7Ci19Ci0KLXZvaWQg
U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2Fk
VHlwZSBkYXRhUGF5bG9hZFR5cGUpCi17Ci0jaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgaWYgKGF1
dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewotICAgICAgICBpZiAo
cHJldmlld0xvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihidWZmZXIuZ2V0KCkpKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihu
dWxscHRyLCAwLCBXVEZNb3ZlKGJ1ZmZlciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9h
ZFR5cGUpOwotfQotCi12b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVm
ZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgsIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUgZGF0YVBheWxvYWRUeXBlKQotewogICAgIEFTU0VSVChtX3Jlc291cmNlKTsKIAog
ICAgIGlmIChtX3Jlc291cmNlLT5yZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPj0gNDAwICYm
ICFtX3Jlc291cmNlLT5zaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpKQpAQCAtNTU1
LDEzICs1MzgsMTMgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLAogICAgIC8vIGFueXRoaW5nIGlu
Y2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBl
eGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KICAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCi0gICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
T3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuY29weVJlZigpLCBlbmNvZGVkRGF0YUxlbmd0
aCwgZGF0YVBheWxvYWRUeXBlKTsKKyAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogCiAgICAgaWYg
KCFtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJj
ZURhdGEgPSB0aGlzLT5yZXNvdXJjZURhdGEoKSkKICAgICAgICAgICAgIG1fcmVzb3VyY2UtPnVw
ZGF0ZUJ1ZmZlcigqcmVzb3VyY2VEYXRhKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9y
ZXNvdXJjZS0+dXBkYXRlRGF0YShidWZmZXIgPyBidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRh
dGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICAgICAg
ICAgIG1fcmVzb3VyY2UtPnVwZGF0ZURhdGEoYnVmZmVyLm1ha2VDb250aWd1b3VzKCkpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAppbmRleCA4
MzJjOWYwZTczZDM4NDY0YTc5NWY0MDM4NjBmNzljMzRlNzNiYzdmLi4zZGJkNTMzOGFmZTQ5YjQ3
ODU3ZDUzNDA5Nzg4NzUyZWFhMWFlZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuaApAQCAtNzMsOCArNzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcg
bG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgcG9saWN5Q29tcGxldGlvbkhhbmRsZXIp
IG92ZXJyaWRlOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCosIHVuc2ln
bmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
QEAgLTkyLDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBFeHBlY3RlZDx2b2lkLCBTdHJpbmc+IGNo
ZWNrUmVzcG9uc2VDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2woY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpOwogICAgIEV4cGVjdGVkPHZvaWQsIFN0cmluZz4gY2hlY2tSZWRpcmVjdGlvbkNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHByZXZpb3VzUmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCk7CiAK
LSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCosIGludCwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0
aCwgRGF0YVBheWxvYWRUeXBlKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwg
RGF0YVBheWxvYWRUeXBlKTsKIAogICAgIHZvaWQgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlvblR5
cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXgg
Y2YyZGUwYzYyZDk1ZjMzMjViNDJiNDZlMjQwMzc3NDQxMDc0MmEwZC4uM2QxOTI4NjJmMjc3Mjli
MmYzOGRiNTRiZDgzNjc5OTUyNWMwMTlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJM
JiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nh
c3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQotICAg
IHZvaWQgYXBwZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIHsgbV9kYXRhLmFw
cGVuZChkYXRhLCBsZW5ndGgpOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgU2hhcmVkQnVmZmVy
JiBidWZmZXIpIHsgbV9kYXRhLmFwcGVuZChidWZmZXIpOyB9CiAgICAgdm9pZCBjbGVhcigpIHsg
bV9kYXRhLmVtcHR5KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIpIHsgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEobV9yZXNwb25zZSwg
bV9kYXRhLmNvcHkoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJl
YWRhYmxlTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxv
YWRlckNsaWVudC5oCmluZGV4IDg0ZDc5YjBjOTlkZjEwZDk5MzgwYjg0ODMxNzM3MWJjMWU4NTcz
YmYuLmNlZjBjOGYxZjE3ZDBmNTc2NTlhMzU0MWI1NGY2Mzg5OTA2NGIxYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnQuaApAQCAtMzcsNiArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNlVGltaW5nOworY2xhc3MgU2hhcmVkQnVmZmVy
OwogCiBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC00NCw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEodW5z
aWduZWQgbG9uZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFs
Qnl0ZXNUb0JlU2VudCovKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqLCBpbnQgLypk
YXRhTGVuZ3RoKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImLCBib29sIC8qIHVzZVN0ckxlbiAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaFRpbWluZyhjb25zdCBSZXNvdXJjZVRpbWluZyYpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaApp
bmRleCA0MmFlNjQ5MDlhNWUwZmU0NGM2YTVlMDA2MGQ1OGM5NjRlYzU2MDUxLi5mMzZhMmQ0MDdh
Zjg4MTU5MDQyODY2Yjg1ZTllMDE4NjFkYWFjNzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIuaApAQCAtNjYsMTAgKzY2
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2Uo
aWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpCisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiAgICAgewog
ICAgICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoYnVmZmVyLCB1c2VTdHJMZW4pOwogICAgIH0KIAogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBkZmY4OTcwMWM5Mzli
YzczYzM3MDMyYWQ5YzQyYWQyMDYzMjZhZDZlLi43YzAzNDk0NWVlMDNhNzRmNTMzMzliYjgxZmZh
MGUwNmM2OWM3MTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuY3BwCkBAIC0yMzEsMTQgKzIzMSwxMyBAQCB2b2lkIFdvcmtlclRocmVhZGFi
bGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxv
YWRlcgogICAgIH0sIG1fdGFza01vZGUpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgdXNl
U3RyTGVuKQogewotICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXIoZGF0YSwgZGF0YUxlbmd0aCk7
Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKFtwcm90ZWN0ZWRXb3JrZXJDbGllbnRXcmFwcGVyID0gUmVmIHsgKm1fd29ya2VyQ2xp
ZW50V3JhcHBlciB9LCB3b3JrZXJSZXF1ZXN0SWRlbnRpZmllciA9IG1fd29ya2VyUmVxdWVzdElk
ZW50aWZpZXIsIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2Rl
VG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShbcHJvdGVjdGVkV29ya2VyQ2xpZW50V3JhcHBl
ciA9IFJlZiB7ICptX3dvcmtlckNsaWVudFdyYXBwZXIgfSwgd29ya2VyUmVxdWVzdElkZW50aWZp
ZXIgPSBtX3dvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIgPSBSZWYgeyBkYXRhIH0sIHVz
ZVN0ckxlbl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNT
RVJUKGNvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpIHx8IGNvbnRleHQuaXNXb3JrbGV0R2xv
YmFsU2NvcGUoKSk7Ci0gICAgICAgIHByb3RlY3RlZFdvcmtlckNsaWVudFdyYXBwZXItPmRpZFJl
Y2VpdmVEYXRhKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICBwcm90ZWN0
ZWRXb3JrZXJDbGllbnRXcmFwcGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIHVzZVN0ckxlbik7
CiAgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkpCi0gICAgICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKGRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KSwgd29ya2VyUmVxdWVzdElkZW50aWZpZXIsIGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlRGF0YShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCks
IHdvcmtlclJlcXVlc3RJZGVudGlmaWVyLCBidWZmZXIpOwogICAgIH0sIG1fdGFza01vZGUpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApp
bmRleCA3MjNiNDU2ZWM4ZTllMzA2ZmMxOGNjOGYzNmRlNmRjZDhhZTMwNDcwLi4zMzlkNmY0NzMx
MGExZWQyODkwMzZhZDBhNDA0ZjM4YTdhMjY4NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcml2YXRl
OgogICAgICAgICAvLyBBbGwgZXhlY3V0ZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgICAgICB2
b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxv
bmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50
OF90KiwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICAg
ICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICAgICAg
dm9pZCBkaWRGaW5pc2hUaW1pbmcoY29uc3QgUmVzb3VyY2VUaW1pbmcmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwCmluZGV4IDUxOTc4ZjQxMjM4NzRkYzU2NjBlZmY0NzA2NTk3MDdkNGU1ZDg1YTcu
LmVkNzU2NjUyNmIyZDdlZmJmMWM1MTcwMjA5NWE4NzliYWY1Njk0NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNw
cApAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1heWJlTG9h
ZEZhbGxiYWNrRm9yTWFpbkVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om1haW5SZXNvdXJjZURhdGFS
ZWNlaXZlZChjb25zdCB1aW50OF90KiwgaW50LCBsb25nIGxvbmcsIGJvb2wpCit2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjptYWluUmVzb3VyY2VEYXRhUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVm
ZmVyJiwgbG9uZyBsb25nLCBib29sKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCmluZGV4IGI5NjM1NmU3ODU2
MTM4OTU2YWU0YzA1OTgzMTcwY2RmNzIzNjcyYTAuLmQyYWVhZWMzZTE0YzYzYmNiZjYwMWU5YWFm
MDI0YzFmOWVjNDc2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG1heWJlTG9hZE1haW5SZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTdWJz
dGl0dXRlRGF0YSYpOwogICAgIHZvaWQgbWF5YmVMb2FkTWFpblJlc291cmNlRm9yUmVkaXJlY3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3Vic3RpdHV0ZURhdGEmKTsKICAgICBib29sIG1heWJl
TG9hZEZhbGxiYWNrRm9yTWFpblJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIG1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIGJvb2wgYWxsQXRPbmNlKTsKKyAgICB2b2lkIG1haW5SZXNvdXJjZURhdGFSZWNlaXZlZChj
b25zdCBTaGFyZWRCdWZmZXImLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgsIGJvb2wgYWxs
QXRPbmNlKTsKICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwogICAgIHZv
aWQgZmFpbGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCmlu
ZGV4IDJiYjNmZTc1Yjk5NzdlODMzMjJhZTI1ODBmNzIxMmVlNWJmMjE2MTAuLjI1NmU4OWIyMTFi
MzhiMmQyMWRjZDY2NTc4MjY5ZTY2MDczNjczMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuY3BwCkBA
IC01MSw3ICs1MSwxMCBAQCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJgogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6ZGVsaXZlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogewotICAg
IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKHJlc3BvbnNlKCksIG1fcGF0aC5pc0VtcHR5
KCkgPyBkYXRhKCkubWFrZUNvbnRpZ3VvdXMoKSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENv
bnRlbnRzT2ZGaWxlKG1fcGF0aCkpOworICAgIGlmIChtX3BhdGguaXNFbXB0eSgpKQorICAgICAg
ICBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSgpLCBSZWZQdHIgeyAmZGF0
YSgpIH0pOworICAgIGVsc2UKKyAgICAgICAgbG9hZGVyLmRlbGl2ZXJSZXNwb25zZUFuZERhdGEo
cmVzcG9uc2UoKSwgU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUobV9wYXRo
KSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjphZGRUeXBlKHVuc2lnbmVk
IHR5cGUpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3YjJmYjZjOWMy
NTNkOTQzN2Y0MDdlOGM5N2I4YjUwNzRjNzEyOTI2Li41NGZlZWQyY2E2NDEyYjQ1MjA5ODcwYzc3
MzQzNjA5ZDg1MDliNzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmNwcApAQCAt
OTksOSArOTksOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlcjo6cmVzcG9u
c2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsCiAgICAgbV9hcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UgPSBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShtX3Jlc291cmNl
LT51cmwoKSwgcmVzcG9uc2UsIG1fdHlwZSk7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90
KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewotICAgIG1fYXBwbGljYXRpb25DYWNoZVJlc291cmNlLT5hcHBlbmQoZGF0YSwgbGVuZ3Ro
KTsKKyAgICBtX2FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS0+YXBwZW5kKGJ1ZmZlcik7CiB9CiAK
IHZvaWQgQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENh
Y2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZUxvYWRlci5oCmluZGV4IDAyZDdhZDk3YTI4
ZDQ3YzNmYWI1ZTNiYWIwN2ViZTliMDY5ZTIzMmQuLjBiMjk2Mjg4ZjMxYTQzMjVkNDg0OWE0NDJl
OGFlNjAyYzE3MzE5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlTG9hZGVyLmgKQEAgLTU2LDcg
KzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50CiAgICAg
dm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Ci0gICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkgZmluYWw7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCmluZGV4IDUwNDY1Y2M2YzAxMzNlNWE3NzQ0NWNmOTQ3MzMzZmUyMDY0MDg2MWQuLmQzNGM4
ZmI2NTMyNmE4NzUzYjJhOWI0ZmNmYmM1NzAxYThjOGE0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDY4LDcgKzQ2OCw3IEBAIGlubGluZSB2
b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKICAgICBtX3VwZGF0ZUltYWdlRGF0YUNvdW50
ID0gMDsKIH0KIAotdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1
ZmZlckludGVybmFsKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBtX2RhdGEgPSBk
YXRhLm1ha2VDb250aWd1b3VzKCk7CiAgICAgc2V0RW5jb2RlZFNpemUobV9kYXRhLT5zaXplKCkp
OwpAQCAtNTU1LDE4ICs1NTUsMTggQEAgRW5jb2RlZERhdGFTdGF0dXMgQ2FjaGVkSW1hZ2U6OnVw
ZGF0ZUltYWdlRGF0YShib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi12b2lkIENhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQ
b2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5OjpCdWZmZXJEYXRhKTsKLSAgICB1cGRhdGVC
dWZmZXJJbnRlcm5hbChkYXRhKTsKLSAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGRh
dGEpOworICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKGJ1ZmZlci5tYWtlQ29udGlndW91cygpKTsK
KyAgICBDYWNoZWRSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGJ1ZmZlcik7CiB9CiAKLXZvaWQgQ2Fj
aGVkSW1hZ2U6OnVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KQordm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEp
CiB7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9s
aWN5OjpEb05vdEJ1ZmZlckRhdGEpOwotICAgIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIGxlbmd0aCkpOwotICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVE
YXRhKGRhdGEsIGxlbmd0aCk7CisgICAgdXBkYXRlQnVmZmVySW50ZXJuYWwoZGF0YSk7CisgICAg
Q2FjaGVkUmVzb3VyY2U6OnVwZGF0ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgQ2FjaGVkSW1hZ2U6
OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAppbmRleCBlODQzMDg3MGI0OGFmM2RjOTViYmEzY2FkMWE2NGUwNjhhZTE1
NTEzLi5hNWRjNjNmMjNkYmQ0MWEyNzBlZTU2YzMyYTQ0MTc3N2Q2YWRkYjQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY29udmVydGVkRGF0YUlmTmVlZGVkKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpIGNvbnN0OwogICAgIHZvaWQgZGlkVXBk
YXRlSW1hZ2VEYXRhKCk7CiAgICAgRW5jb2RlZERhdGFTdGF0dXMgdXBkYXRlSW1hZ2VEYXRhKGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCog
ZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBlcnJvcihDYWNoZWRSZXNvdXJj
ZTo6U3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogCkBAIC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UmLCBjb25zdCBJbnRSZWN0Kik7CiAg
ICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShjb25zdCBJbWFnZSYpOwogCi0gICAgdm9p
ZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cisg
ICAgdm9pZCB1cGRhdGVCdWZmZXJJbnRlcm5hbChjb25zdCBTaGFyZWRCdWZmZXImKTsKIAogICAg
IHZvaWQgZGlkUmVwbGFjZVNoYXJlZEJ1ZmZlckNvbnRlbnRzKCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4
IDcxZTE2MDgyZmZlNjU1ZDExMWYxNjk5MGQxMjMwNTM1YmVhY2JmOTUuLmQzMzYxMTMyMTNmYmVi
ZmY0ZTkxZmY2NWY4M2ZmZTI0ZDNlOGEwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIENhY2hl
ZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlzTWFpbk9yTWVkaWFPckljb25PclJhd1Jl
c291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNo
ZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkgY29uc3QKK3N0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVy
RGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHByZXZpb3Vz
RGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7Ci0gICAgaWYgKCFkYXRhIHx8IGRhdGEtPnNpemUo
KSA8PSBwcmV2aW91c0RhdGFMZW5ndGgpCisgICAgaWYgKGRhdGEuc2l6ZSgpIDw9IHByZXZpb3Vz
RGF0YUxlbmd0aCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gZGF0
YS0+Z2V0U29tZURhdGEocHJldmlvdXNEYXRhTGVuZ3RoKTsKKyAgICByZXR1cm4gZGF0YS5nZXRT
b21lRGF0YShwcmV2aW91c0RhdGFMZW5ndGgpOwogfQogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKQEAgLTcy
LDcgKzcyLDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgICAgIHByZXZpb3VzRGF0YVNpemUgKz0g
aW5jcmVtZW50YWxEYXRhLnNpemUoKTsKIAogICAgICAgICBTZXRGb3JTY29wZTxib29sPiBub3Rp
ZnlTY29wZShtX2luSW5jcmVtZW50YWxEYXRhTm90aWZ5LCB0cnVlKTsKLSAgICAgICAgbm90aWZ5
Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNyZW1lbnRhbERhdGEuZGF0YSgpLCBpbmNyZW1lbnRh
bERhdGEuc2l6ZSgpKTsKKyAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChpbmNy
ZW1lbnRhbERhdGEuY3JlYXRlU2hhcmVkQnVmZmVyKCkpOwogICAgIH0KICAgICBzZXRFbmNvZGVk
U2l6ZShtX2RhdGEtPnNpemUoKSk7CiAKQEAgLTg5LDExICs4OSwxMSBAQCB2b2lkIENhY2hlZFJh
d1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSkKICAgICB9CiB9CiAKLXZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZURhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQordm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBBU1NFUlQoZGF0
YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0
YSk7Ci0gICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChkYXRhLCBsZW5ndGgpOwotICAg
IENhY2hlZFJlc291cmNlOjp1cGRhdGVEYXRhKGRhdGEsIGxlbmd0aCk7CisgICAgbm90aWZ5Q2xp
ZW50c0RhdGFXYXNSZWNlaXZlZChidWZmZXIpOworICAgIENhY2hlZFJlc291cmNlOjp1cGRhdGVE
YXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmco
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBtZXRyaWNzKQpAQCAtMTEwLDkgKzExMCw5IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QK
ICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgIGlmIChkYXRhICE9IG1fZGF0YS5nZXQo
KSkKICAgICAgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwotICAg
ICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoZGF0YSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVudGFsRGF0YSA9
IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKCptX2RhdGEpKSB7CiAgICAgICAgICAgICAg
ICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBub3RpZnlD
bGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0YS0+ZGF0YSgpLCBpbmNyZW1lbnRh
bERhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNl
aXZlZChpbmNyZW1lbnRhbERhdGEtPmNyZWF0ZVNoYXJlZEJ1ZmZlcigpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2RhdGEgPSBudWxscHRyOwpAQCAtMTMw
LDE1ICsxMzAsMTUgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBD
YWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3Rp
ZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewot
ICAgIGlmICghbGVuZ3RoKQorICAgIGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCogYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRh
dGEsIGxlbmd0aCk7CisgICAgICAgIGMtPmRhdGFSZWNlaXZlZCgqdGhpcywgYnVmZmVyKTsKIH0K
IAogc3RhdGljIHZvaWQgaXRlcmF0ZVJlZGlyZWN0cyhDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRSYXdSZXNvdXJjZT4mJiBoYW5kbGUsIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50JiBjbGllbnQs
IFZlY3RvcjxzdGQ6OnBhaXI8UmVzb3VyY2VSZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlPj4mJiBy
ZWRpcmVjdHNJblJldmVyc2VPcmRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xNzAsOSArMTcwLDkgQEAgdm9pZCBD
YWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjKQog
ICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgaWYgKG1fZGF0YSkgewotICAgICAgICAgICAgICAgIG1fZGF0YS0+
Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgICAgICBtX2Rh
dGEtPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsaWVudCgqY2xpZW50KSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBzZWdtZW50LmRhdGEoKSwgc2Vn
bWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LT5kYXRhUmVjZWl2
ZWQoKnRoaXMsIGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKaW5kZXggYTc4NjVmOGFkMTc4YWVmYjMy
MjBhNTZkY2ZmMTk1OTkzY2Y5NWFlNC4uMzZlNDdhMWRiYTIzMTI4ZGM1MzA3M2I3MGI1ZjNmODUz
ODA0YWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jl
c291cmNlLmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
YWNoZWRSZXNvdXJjZUNsaWVudDsKIGNsYXNzIFJlc291cmNlVGltaW5nOworY2xhc3MgU2hhcmVk
QnVmZmVyOwogY2xhc3MgU2hhcmVkQnVmZmVyRGF0YVZpZXc7CiAKIGNsYXNzIENhY2hlZFJhd1Jl
c291cmNlIGZpbmFsIDogcHVibGljIENhY2hlZFJlc291cmNlIHsKQEAgLTUyLDcgKzUzLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNs
aWVudCYpIGZpbmFsOwogICAgIHZvaWQgdXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgdWludDhfdCogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGEoY29uc3QgU2hh
cmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAg
IGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0NvZGVFcnJvcnMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CkBAIC02Niw4ICs2Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzd2l0
Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBtYXlU
cnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FsbG93RW5j
b2RlZERhdGFSZXBsYWNlbWVudDsgfQogCi0gICAgc3RkOjpvcHRpb25hbDxTaGFyZWRCdWZmZXJE
YXRhVmlldz4gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciopIGNvbnN0OwotICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZl
ZChjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpOworICAgIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIHZvaWQgbm90aWZ5Q2xpZW50c0RhdGFXYXNS
ZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ICAgICB2b2lkIHByZXZpZXdSZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmgKaW5kZXggMjNlYWI4ZGYyOTU4ZmY4YjQ5ZjM1NDViNTA4M2ZlMjk4
OWVmMTIyMC4uY2Q2NTBhMmYzMTM2Y2U5YjI2MmZiZGZjODI5MjhiZjIxMDc5ZmJjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgUmVzb3VyY2VUaW1p
bmc7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50
IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTQ2LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNl
KENhY2hlZFJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
dWludDhfdCogLyogZGF0YSAqLywgaW50IC8qIGxlbmd0aCAqLykgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaGVkVGltaW5nRm9yV29ya2VyTG9hZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IFJlc291
cmNlVGltaW5nJikgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCmluZGV4IDlkZTBhMDRjZDVlYzVmM2ZhZDJmYjE2ZDdiMzIyYzg1OGEzOGE2
YjIuLjdiOWM2MWY5NjYxNzU0NmI2NmJjYzNjNjNlY2EwZTg1N2UyNjJlZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzQxLDcgKzM0
MSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJikKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFC
dWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlOjp1
cGRhdGVEYXRhKGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCkKK3ZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBBU1NFUlQoZGF0YUJ1ZmZl
cmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkRvTm90QnVmZmVyRGF0YSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGM5
ODJkZDY5MzdhMGJjMmJmMzhjNDI2MTI2ZmZlNmU3OGM3OTY0NzguLjUzNGUwMTJjYzRmYTVkZDJi
ZTFmZDZlZWU1YWE2YWU0ZTVmYWUyMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0
dWFsIGNvbnN0IFRleHRSZXNvdXJjZURlY29kZXIqIHRleHRSZXNvdXJjZURlY29kZXIoKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNo
TG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJik7CiAgICAgdmlydHVhbCB2b2lkIGVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5o
CmluZGV4IDk2ZDg5ODJlOTM1MDM0NzY5NmZjOTY5ZDU4NWFiNzA3NWRlMDIwZWQuLmNhMDE5MzRk
MzFiYTVkNTA5ZmViZTdkMmY5MTIyNDlkMjcxMjZhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5oCkBAIC00Nyw4ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICB+TGVnYWN5UHJldmlld0xvYWRlcigpOwogCiAgICAgYm9vbCBkaWRSZWNlaXZlUmVz
cG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIGJvb2wgZGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKTsKLSAgICBib29sIGRpZFJlY2Vp
dmVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIGJvb2wgZGlkUmVj
ZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgYm9vbCBkaWRGaW5pc2hMb2FkaW5n
KCk7CiAgICAgdm9pZCBkaWRGYWlsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pb3MvTGVnYWN5UHJldmlld0xvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
b3MvTGVnYWN5UHJldmlld0xvYWRlci5tbQppbmRleCA0ODc1NmEzM2I1ODcyYjQ0YjJmMGJhMDg0
MjQxZjg2Y2ZhZWJjYWEwLi5hMjRiOGM1OWQ0NjBhZmY1ZTJmZWY4MzE5MGMyMDg2NTcyMzY1ZDM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Lm1tCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBSZWY8TGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dD4gbWFrZUNsaWVudChjb25zdCBSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBjCiAgICAgcmV0dXJu
IGVtcHR5Q2xpZW50KCk7CiB9CiAKLWJvb2wgTGVnYWN5UHJldmlld0xvYWRlcjo6ZGlkUmVjZWl2
ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitib29sIExlZ2Fj
eVByZXZpZXdMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGlmIChtX2ZpbmlzaGVkTG9hZGluZ0RhdGFJbnRvQ29udmVydGVyKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC03MSw3ICs3MSw3IEBAIGJvb2wgTGVnYWN5UHJldmlld0xvYWRl
cjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiAgICAgTE9HKE5ldHdvcmssICJMZWdhY3lQcmV2aWV3TG9hZGVyIGFwcGVuZGluZyBidWZmZXIg
d2l0aCBzaXplICVsZC4iLCBidWZmZXIuc2l6ZSgpKTsKICAgICBtX29yaWdpbmFsRGF0YS5hcHBl
bmQoYnVmZmVyKTsKICAgICBtX2NvbnZlcnRlci0+dXBkYXRlTWFpblJlc291cmNlKCk7Ci0gICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVCdWZmZXIoYnVmZmVyKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoYnVmZmVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTYyLDggKzE2Miw3
IEBAIHZvaWQgTGVnYWN5UHJldmlld0xvYWRlcjo6cHJldmlld0NvbnZlcnRlckRpZFJlY2VpdmVE
YXRhKFByZXZpZXdDb252ZXJ0ZXImLCBjb25zCiAgICAgaWYgKCFtX2hhc1Byb2Nlc3NlZFJlc3Bv
bnNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGRhdGFDb3B5ID0gZGF0YS5jb3B5KCk7
Ci0gICAgcmVzb3VyY2VMb2FkZXItPmRpZFJlY2VpdmVCdWZmZXIoV1RGTW92ZShkYXRhQ29weSks
IGRhdGFDb3B5LT5zaXplKCksIERhdGFQYXlsb2FkQnl0ZXMpOworICAgIHJlc291cmNlTG9hZGVy
LT5kaWRSZWNlaXZlQnVmZmVyKGRhdGEsIGRhdGEuc2l6ZSgpLCBEYXRhUGF5bG9hZEJ5dGVzKTsK
IH0KIAogdm9pZCBMZWdhY3lQcmV2aWV3TG9hZGVyOjpwcmV2aWV3Q29udmVydGVyRGlkRmluaXNo
Q29udmVydGluZyhQcmV2aWV3Q29udmVydGVyJikKQEAgLTI0MywxMSArMjQyLDYgQEAgTGVnYWN5
UHJldmlld0xvYWRlcjo6TGVnYWN5UHJldmlld0xvYWRlcihSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBjb25zdCBSZXNvdXJjZVIKICAgICBMT0coTmV0d29yaywgIkxlZ2FjeVByZXZpZXdMb2FkZXIg
Y3JlYXRlZCB3aXRoIHByZXZpZXcgZmlsZSBuYW1lIFwiJXNcIi4iLCBtX2NvbnZlcnRlci0+cHJl
dmlld0ZpbGVOYW1lKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWJvb2wgTGVnYWN5UHJldmlld0xv
YWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KQotewotICAgIHJldHVybiBkaWRSZWNlaXZlQnVmZmVyKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRh
dGEsIGxlbmd0aCkuZ2V0KCkpOwotfQotCiBib29sIExlZ2FjeVByZXZpZXdMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKIHsKICAgICByZXR1cm4gIW1f
c2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJj
ZS5jcHAKaW5kZXggNjAyNjMxYmI3Y2QxMDg2MGIxYTMxMjEwNDNjOTdkOGVmZTQ0NzYxZC4uNjdh
Yzc3ZTJiZjc2MTA0NWM4YzE4ZDVjN2FkZWM3ZjczMzhhYjcxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMjEwLDEzICsyMTEsMTMgQEAgdm9pZCBF
dmVudFNvdXJjZTo6ZGlzcGF0Y2hFcnJvckV2ZW50KCkKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwogfQogCi12b2lkIEV2ZW50U291cmNlOjpkaWRSZWNl
aXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBFdmVudFNvdXJj
ZTo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAg
ICAgQVNTRVJUKG1fc3RhdGUgPT0gT1BFTik7CiAgICAgQVNTRVJUKG1fcmVxdWVzdEluRmxpZ2h0
KTsKICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFtX2lzU3Vz
cGVuZGVkRm9yQmFja0ZvcndhcmRDYWNoZSk7CiAKLSAgICBhcHBlbmQobV9yZWNlaXZlQnVmZmVy
LCBtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW5ndGgpKTsKKyAgICBhcHBlbmQobV9yZWNlaXZl
QnVmZmVyLCBtX2RlY29kZXItPmRlY29kZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSk7
CiAgICAgcGFyc2VFdmVudFN0cmVhbSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgK
aW5kZXggZDAxMmQzNzdkMTk3Njc1ZjBmZTExNDVmMTcxOWYxN2ZkZGJmZWEzYi4uZDY2MmFlMjgw
NmY0YjI0ODY3YjAxNjA4ZTA0ZGJiNGY5N2RiYTA2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3Vy
Y2UuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhyZWFkYWJsZUxvYWRl
ckNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oCmluZGV4IDllNzJlNDRhMmVhYzRkOGVmNzMwYjk4
NzFkMGVjNTA4ZWQ5ZmFjNDQuLjQ2MmNmM2I4NzQyMzM4NWJlODNhMDAyZTQzZjc0NDc3OTk4N2Vl
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZp
bHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRl
ci5oCkBAIC0yNiwxNSArMjYsMTcgQEAKICNpZm5kZWYgUGxhdGZvcm1Db250ZW50RmlsdGVyX2gK
ICNkZWZpbmUgUGxhdGZvcm1Db250ZW50RmlsdGVyX2gKIAorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFBsYXRmb3JtQ29udGVudEZpbHRlciB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01NCw3ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIoKSA9IGRlZmF1bHQ7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGREYXRh
KGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRBZGRp
bmdEYXRhKCkgPSAwOwogICAgIHZpcnR1YWwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJl
cGxhY2VtZW50RGF0YSgpIGNvbnN0ID0gMDsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBkMzk2MTU2ODg0
YjRiNzllM2U1NWQ1NjkxZDcxOGM4ODc1ZmY5ZmY3Li5kMDlmMTA1MmEwZjMxZWU5NzA2MTEwMTNi
MzkzNWZiNTMwOTU1MDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKQEAgLTEzNyw4ICsxMzcsOCBAQCBWZWN0b3I8dWludDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcjo6dGFrZURhdGEoKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGNvbWJpbmVkRGF0YTsKLSAgICBpZiAoaGFzT25lU2VnbWVudCgpICYmIHN0ZDo6aG9sZHNf
YWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1t
dXRhYmxlRGF0YSkpCi0gICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhjaGFuZ2Uoc3RkOjpn
ZXQ8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0
YSksIFZlY3Rvcjx1aW50OF90PigpKTsKKyAgICBpZiAoaGFzT25lU2VnbWVudCgpICYmIHN0ZDo6
aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQt
Pm1faW1tdXRhYmxlRGF0YSkgJiYgbV9zZWdtZW50c1swXS5zZWdtZW50LT5oYXNPbmVSZWYoKSkK
KyAgICAgICAgY29tYmluZWREYXRhID0gc3RkOjpleGNoYW5nZShzdGQ6OmdldDxWZWN0b3I8dWlu
dDhfdD4+KGNvbnN0X2Nhc3Q8RGF0YVNlZ21lbnQmPihtX3NlZ21lbnRzWzBdLnNlZ21lbnQuZ2V0
KCkpLm1faW1tdXRhYmxlRGF0YSksIFZlY3Rvcjx1aW50OF90PigpKTsKICAgICBlbHNlCiAgICAg
ICAgIGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXpl
KTsKIApAQCAtMjMxLDYgKzIzMSw4IEBAIHZvaWQgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y2xl
YXIoKQogCiBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjo6Y29weSgpIGNvbnN0CiB7CisgICAgaWYgKG1fY29udGlndW91cykKKyAgICAgICAgcmV0dXJu
IG1fc2VnbWVudHMuc2l6ZSgpID8gU2hhcmVkQnVmZmVyOjpjcmVhdGUobV9zZWdtZW50c1swXS5z
ZWdtZW50LmNvcHlSZWYoKSkgOiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBjbG9uZSA9IGFkb3B0UmVmKCpuZXcgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcik7CiAgICAgY2xvbmUtPm1fc2l6ZSA9IG1fc2l6ZTsKICAgICBjbG9uZS0+bV9zZWdt
ZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc2VnbWVudHMuc2l6ZSgpKTsKQEAgLTI0OCw2
ICsyNTAsMTMgQEAgdm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChj
b25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QKICAgICAgICAgYXBwbHkoU3BhbiB7
IHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSB9KTsKIH0K
IAordm9pZCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudEFzU2hhcmVkQnVm
ZmVyKGNvbnN0IEZ1bmN0aW9uPHZvaWQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik+JiBhcHBseSkgY29u
c3QKK3sKKyAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9OworICAgIGZvciAo
YXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCisgICAgICAgIGFwcGx5KFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHNlZ21lbnQuc2VnbWVudC5jb3B5UmVmKCkpKTsKK30KKwogYm9vbCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHByZWZp
eCkgY29uc3QKIHsKICAgICBpZiAocHJlZml4LmVtcHR5KCkpCkBAIC00MTMsNyArNDIyLDcgQEAg
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoKQogICAgIG1fY29udGlndW91cyA9IHRydWU7CiB9
CiAKLVNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFJlZjxEYXRhU2VnbWVudD4mJiBzZWdtZW50
KQorU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiYmIHNl
Z21lbnQpCiB7CiAgICAgbV9zaXplID0gc2VnbWVudC0+c2l6ZSgpOwogICAgIG1fc2VnbWVudHMu
YXBwZW5kKHsgMCwgV1RGTW92ZShzZWdtZW50KSB9KTsKQEAgLTYwMSw3ICs2MTAsNyBAQCB2b2lk
IFNoYXJlZEJ1ZmZlckJ1aWxkZXI6OmVuc3VyZUJ1ZmZlcigpCiAgICAgICAgIG1fYnVmZmVyID0g
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiB9CiAKLVNoYXJlZEJ1ZmZlckRhdGFW
aWV3OjpTaGFyZWRCdWZmZXJEYXRhVmlldyhSZWY8RGF0YVNlZ21lbnQ+JiYgc2VnbWVudCwgc2l6
ZV90IHBvc2l0aW9uV2l0aGluU2VnbWVudCwgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHNpemUpCitT
aGFyZWRCdWZmZXJEYXRhVmlldzo6U2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPGNvbnN0IERhdGFT
ZWdtZW50PiYmIHNlZ21lbnQsIHNpemVfdCBwb3NpdGlvbldpdGhpblNlZ21lbnQsIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PiBzaXplKQogICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAg
ICAgLCBtX3Bvc2l0aW9uV2l0aGluU2VnbWVudChwb3NpdGlvbldpdGhpblNlZ21lbnQpCiAgICAg
LCBtX3NpemUoc2l6ZSA/ICpzaXplIDogbV9zZWdtZW50LT5zaXplKCkgLSBwb3NpdGlvbldpdGhp
blNlZ21lbnQpCkBAIC02MTcsNyArNjI2LDcgQEAgU2hhcmVkQnVmZmVyRGF0YVZpZXc6OlNoYXJl
ZEJ1ZmZlckRhdGFWaWV3KGNvbnN0IFNoYXJlZEJ1ZmZlckRhdGFWaWV3JiBvdGhlciwgc2kKIAog
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyRGF0YVZpZXc6OmNyZWF0ZVNoYXJlZEJ1ZmZl
cigpIGNvbnN0CiB7Ci0gICAgY29uc3QgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50ID0gbV9zZWdt
ZW50OworICAgIGNvbnN0IFJlZjxjb25zdCBEYXRhU2VnbWVudD4gc2VnbWVudCA9IG1fc2VnbWVu
dDsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoRGF0YVNlZ21lbnQ6OlByb3ZpZGVy
IHsKICAgICAgICAgW3NlZ21lbnQsIGRhdGEgPSBkYXRhKCldKCkgeyByZXR1cm4gZGF0YTsgfSwK
ICAgICAgICAgW3NpemUgPSBzaXplKCldKCkgeyByZXR1cm4gc2l6ZTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjMjdjOTI2OWZmZWYyNDlhYjVlOGFiYTI0ZDc2
MmZjNDBjMWMyMzAwLi4zNDg0YTZhNTNiODA0MDY0YmU1N2EyODNlZjQxOGE4YTYyZDU4OWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMTc4LDEyICsxNzgsMTMg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoU2VnbWVudChjb25z
dCBGdW5jdGlvbjx2b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90
PiYgcHJlZml4KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hTZWdtZW50
QXNTaGFyZWRCdWZmZXIoY29uc3QgRnVuY3Rpb248dm9pZChSZWY8U2hhcmVkQnVmZmVyPiYmKT4m
KSBjb25zdDsKIAogICAgIHVzaW5nIERhdGFTZWdtZW50ID0gV2ViQ29yZTo6RGF0YVNlZ21lbnQ7
IC8vIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aGVuIHVzaW5nIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50CiAKICAgICBzdHJ1Y3QgRGF0YVNlZ21lbnRWZWN0b3JF
bnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwotICAgICAgICBSZWY8RGF0YVNl
Z21lbnQ+IHNlZ21lbnQ7CisgICAgICAgIGNvbnN0IFJlZjxjb25zdCBEYXRhU2VnbWVudD4gc2Vn
bWVudDsKICAgICB9OwogICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFT
ZWdtZW50VmVjdG9yRW50cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVy
YXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQpAQCAtMjU5
LDcgKzI2MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoIXNpemVvZi4uLihB
cmdzKSkKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcigpKTsK
ICAgICAgICAgZWxzZSBpZiBjb25zdGV4cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCi0gICAgICAg
ICAgICAmJiAoc3RkOjppc19zYW1lX3Y8QXJncywgUmVmPERhdGFTZWdtZW50Pj4gJiYuLi4pKQor
ICAgICAgICAgICAgJiYgKHN0ZDo6aXNfc2FtZV92PEFyZ3MsIFJlZjxjb25zdCBEYXRhU2VnbWVu
dD4+ICYmLi4uKSkKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZl
cihzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICAgICAgZWxzZSBpZiBjb25zdGV4
cHIgKHNpemVvZi4uLihBcmdzKSA9PSAxCisgICAgICAgICAgICAmJiAoc3RkOjppc19zYW1lX3Y8
c3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxBcmdzPj4sIERhdGFT
ZWdtZW50PiAmJi4uLikpCiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRC
dWZmZXIoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgYXV0byBidWZmZXIgPSBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKQEAgLTI4Niw4ICsyOTAsMTAgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFNoYXJlZEJ1ZmZlcigpOworICAgIFNoYXJl
ZEJ1ZmZlcihjb25zdCBEYXRhU2VnbWVudCYgc2VnbWVudCkKKyAgICAgICAgOiBTaGFyZWRCdWZm
ZXIoUmVmPGNvbnN0IERhdGFTZWdtZW50PiB7IHNlZ21lbnQgfSkgeyB9CiAgICAgV0VCQ09SRV9F
WFBPUlQgZXhwbGljaXQgU2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8RGF0YVNlZ21l
bnQ+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihSZWY8Y29u
c3QgRGF0YVNlZ21lbnQ+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlcihSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gY3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpOwpAQCAtMzU5LDcgKzM2NSw3IEBAIGlubGluZSBWZWN0b3I8dWlu
dDhfdD4gRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6ZXh0cmFjdERhdGEoKQogCiBjbGFzcyBTaGFy
ZWRCdWZmZXJEYXRhVmlldyB7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVm
ZmVyRGF0YVZpZXcoUmVmPERhdGFTZWdtZW50PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdt
ZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyRGF0YVZpZXcoUmVmPGNvbnN0IERhdGFTZWdtZW50
PiYmLCBzaXplX3QgcG9zaXRpb25XaXRoaW5TZWdtZW50LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
bmV3U2l6ZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVy
RGF0YVZpZXcoY29uc3QgU2hhcmVkQnVmZmVyRGF0YVZpZXcmLCBzaXplX3QgbmV3U2l6ZSk7CiAg
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBjb25zdCB1aW50
OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zZWdtZW50LT5kYXRhKCkgKyBtX3Bvc2l0aW9u
V2l0aGluU2VnbWVudDsgfQpAQCAtMzcwLDcgKzM3Niw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRpZgog
cHJpdmF0ZToKLSAgICBjb25zdCBSZWY8RGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBjb25z
dCBSZWY8Y29uc3QgRGF0YVNlZ21lbnQ+IG1fc2VnbWVudDsKICAgICBjb25zdCBzaXplX3QgbV9w
b3NpdGlvbldpdGhpblNlZ21lbnQ7CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVu
c2lvbkNvbnRlbnRGaWx0ZXIuaAppbmRleCBjYmU4NzcxYTQ1ZDg2MmNiNWFiMDVlY2EzOTk5Mjdl
MDc4MzhmNTQwLi4xMjUzMTliY2IzOGU3MWJhNzk1YTZhZmQyZGQxM2ZiZDE5YTJkM2IyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL05ldHdvcmtF
eHRlbnNpb25Db250ZW50RmlsdGVyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YShjb25zdCBTaGFyZWRC
dWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRl
OwogICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBjb25z
dCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRs
ZXIoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KaW5kZXggMmVm
MjcwMWZlNjc4YmY5YjkyZGIyMTJiYmVhNWM5MTVhM2ZjM2EyZi4uZjg3Nzk3Y2NkNTBiOWFiNWVh
NDhjMjUxZTQyZjAwYjVmYmY0ZmFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIubW0KQEAg
LTE0NSwxMiArMTQ1LDEyIEBAIHZvaWQgTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OnJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzCiAgICAgc2VtYXBob3Jl
LndhaXQoKTsKIH0KIAotdm9pZCBOZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlcjo6YWRkRGF0
YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQordm9pZCBOZXR3b3JrRXh0ZW5zaW9u
Q29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAg
UmV0YWluUHRyPE5TRGF0YT4gY29waWVkRGF0YSB7IFtOU0RhdGEgZGF0YVdpdGhCeXRlczoodm9p
ZCopZGF0YSBsZW5ndGg6bGVuZ3RoXSB9OworICAgIGF1dG8gbnNEYXRhID0gZGF0YS5jcmVhdGVO
U0RhdGEoKTsKIAogICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgW21fbmVGaWx0
ZXJTb3VyY2UgcmVjZWl2ZWREYXRhOmNvcGllZERhdGEuZ2V0KCkgZGVjaXNpb25IYW5kbGVyOlt0
aGlzLCAmc2VtYXBob3JlXShORUZpbHRlclNvdXJjZVN0YXR1cyBzdGF0dXMsIE5TRGljdGlvbmFy
eSAqZGVjaXNpb25JbmZvKSB7CisgICAgW21fbmVGaWx0ZXJTb3VyY2UgcmVjZWl2ZWREYXRhOm5z
RGF0YS5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6W3RoaXMsICZzZW1hcGhvcmVdKE5FRmlsdGVyU291
cmNlU3RhdHVzIHN0YXR1cywgTlNEaWN0aW9uYXJ5ICpkZWNpc2lvbkluZm8pIHsKICAgICAgICAg
aGFuZGxlRGVjaXNpb24oc3RhdHVzLCByZXBsYWNlbWVudERhdGFGcm9tRGVjaXNpb25JbmZvKGRl
Y2lzaW9uSW5mbykpOwogICAgICAgICBzZW1hcGhvcmUuc2lnbmFsKCk7CiAgICAgfV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250
cm9sc0NvbnRlbnRGaWx0ZXIuaAppbmRleCA2NzlhZTkzMjk1MTdlMWYzOTQzYmE1NzYyYWM4ZjU2
ZTg2MGM4YzI1Li5kNWZhMTMzMGIxNjJjY2NjZTIyZTk0NzU4NjE1YTZlMDExMjJkMDQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29u
dGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFs
Q29udHJvbHNDb250ZW50RmlsdGVyLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBhZGREYXRhKGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkQWRkaW5nRGF0YSgpIG92ZXJy
aWRlOwogICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXBsYWNlbWVudERhdGEoKSBj
b25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tCmluZGV4IDFjOTYwNDcxNmI0MjY5M2Q1ZTQ2YzJlMjNlOTQxZGEwMGM4
M2U0ZGUuLmE2NTExNWNlYjEyMjIzNjc3ZjA5YTRhM2RhOTliNGFjNzI2OGRmMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC05NCwxMCArOTQsMTAgQEAgdm9pZCBQYXJlbnRhbENv
bnRyb2xzQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXMKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogfQogCi12b2lkIFBhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5n
dGgpCit2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBBU1NFUlQoIVttX3JlcGxhY2VtZW50RGF0YSBsZW5n
dGhdKTsKLSAgICBtX3JlcGxhY2VtZW50RGF0YSA9IFttX3dlYkZpbHRlckV2YWx1YXRvciBhZGRE
YXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZGF0YSBsZW5ndGg6bGVuZ3Ro
IGZyZWVXaGVuRG9uZTpOT11dOworICAgIG1fcmVwbGFjZW1lbnREYXRhID0gW21fd2ViRmlsdGVy
RXZhbHVhdG9yIGFkZERhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiAgICAgdXBkYXRl
RmlsdGVyU3RhdGUoKTsKICAgICBBU1NFUlQobmVlZHNNb3JlRGF0YSgpIHx8IFttX3JlcGxhY2Vt
ZW50RGF0YSBsZW5ndGhdKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IGRlMzNmMWFmNDEyZGMwOGIyYjk2MWEx
OTQ5NDVjOWNjOTBhYTY2MjUuLmE0NzUwNzRhMTA4YTFiNTg3YjNiNmE4Yjk4ODA1OWRhZGU0N2U1
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFj
a2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
YWNraW5nU3RvcmUuaApAQCAtMjMzLDYgKzIzMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biBQYWNrZWRDb2xvcjo6QVJHQiB7IHJlc3VsdCB9LnZhbHVlOwogICAgIH0KIAorICAgIC8vIG1f
cGl4ZWxzIHR5cGUgc2hvdWxkIGJlIGlkZW50aWNhbCB0byB0aGUgb25lIHNldCBpbiBJbWFnZUJh
Y2tpbmdTdG9yZUNhaXJvLmNwcAogICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpE
YXRhU2VnbWVudD4gbV9waXhlbHM7CiAgICAgdWludDMyX3QqIG1fcGl4ZWxzUHRyIHsgbnVsbHB0
ciB9OwogICAgIEludFNpemUgbV9zaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCA4ODY5MWRjMjU2ZDZkZDZjNDVmNDZlMDE1NDk2NzQyNDVhYTM1MzM3Li5jOTU4Zjg0NGRhYzE0
Mzk0ZTI0ZGVmZWFiYTc1NGY5ZDhhODEyOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aApAQCAtNTEsOSArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRy
dWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
dW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpIHsgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIC8v
IFRoaXMgbWV0aG9kIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgQ2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQgdXNlcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyLgotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiBwbGF0Zm9ybSwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkgeyBkYXRhUmVjZWl2ZWQocGxhdGZvcm0sIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGRhdGEsIGxlbmd0aCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBTaGFyZWRCdWZmZXImKSB7IFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFp
bGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxvYWRGaW5pc2hlZChQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJD
b3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBl
YzBhN2FjZjQ3MzI2MWM3NGU3ZWVmZmFkYzljY2MzYzNlNTdmMjI4Li43NzA4YTU4ZDJiNTgwOGI5
NDAwMmQyMDVlOThhMjdiYjJjZTZmMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBX
ZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
JiByZXNvdXJjZSwgY29uc3QKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIFdlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXI6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpCiB7CiAgICAgZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UocmVzb3VyY2UpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNlTG9hZGVyLmgKaW5kZXgg
Y2RmMTQzZjNjM2NkZTk3MWZkNzlkY2Y3MzI4YmZjZDdiMzI2MDJkYy4uNjI2N2JlMDBjNTRlZTYx
NzAyZmI3N2IyYTVmYjU2N2IyN2ViOWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
V2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgLy8gQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQKICAgICB2b2lkIHJlc3BvbnNl
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBmdWxmaWxsUmVxdWVzdFdpdGhS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCmluZGV4IGY5MjFmM2RhMGU2OWIzMzk5NzdjOWUz
ZTQ5NjY3YTI4ZjVlOTVjYmQuLjcyNjQ3MjVjOGU1NjIyZGYzOGI0NWJjZDk5YWM3ODc1NWI5ZWI4
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VM
b2FkZXIubW0KQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90
KiwgaW50KSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAogICAgIHZvaWQg
ZnVsZmlsbFJlcXVlc3RXaXRoUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTgogICAgIG1fcGFyZW50LmxvYWRGaW5pc2hl
ZCgpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IHVpbnQ4X3QqLCBpbnQpCit2b2lkIENhY2hl
ZFJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpCiB7CiAgICAgQVNTRVJUKCZyZXNvdXJjZSA9PSBtX3Jl
c291cmNlKTsKICAgICBpZiAoYXV0byogZGF0YSA9IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCkp
CkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOyB9CiAgICAgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZvaWQgZGF0YVNlbnQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgdW5zaWduZWQg
bG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsIHsgfQotICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKKyAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBjb25zdCBTaGFyZWRCdWZmZXImKSBmaW5hbDsKICAgICB2b2lkIGFjY2Vzc0NvbnRyb2xDaGVj
a0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikgZmluYWwgeyBsb2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBs
b2FkRmFpbGVkKGVycm9yKTsgfQogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsIHsgbG9hZEZpbmlzaGVk
KCk7IH0KQEAgLTIxMSw5ICsyMTEsOSBAQCB2b2lkIFBsYXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRl
cjo6bG9hZEZpbmlzaGVkKCkKICAgICBtX3BhcmVudC5sb2FkRmluaXNoZWQoKTsKIH0KIAotdm9p
ZCBQbGF0Zm9ybVJlc291cmNlTWVkaWFMb2FkZXI6OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFBs
YXRmb3JtUmVzb3VyY2VNZWRpYUxvYWRlcjo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNv
dXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIG1fYnVmZmVyLmFwcGVu
ZChXVEZNb3ZlKGJ1ZmZlcikpOworICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIpOwogICAgIG1f
cGFyZW50Lm5ld0RhdGFTdG9yZWRJblNoYXJlZEJ1ZmZlcigqbV9idWZmZXIuZ2V0KCkpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDkzMDE5
MDk5NDViNGEyM2Q2Njc4MmYzNTBiNTZlNDQ3OWY4MDI2ZjIuLmI3YjA3ZmYxNDU0ZDU2MWEzMDIx
MDhhZTMyMjkxZThmODM0MzdiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBQbGF0Zm9y
bU1lZGlhUmVzb3VyY2VDbGllbnQgdmlydHVhbCBtZXRob2RzLgogICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTaG91bGRDb250aW51ZVBvbGljeUNoZWNrKT4mJikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGF0YVJlY2Vp
dmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRl
OwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIGxvYWRGYWlsZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgbG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBjb24KICAgICBjb21wbGV0aW9uSGFuZGxlcihTaG91bGRDb250aW51ZVBvbGlj
eUNoZWNrOjpZZXMpOwogfQogCi12b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQordm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0
YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0
YSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3Jj
ID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIFJlZjxGcmEKICAgICAvLyB0aGF0IGZpcnN0IHBhY2thZ2UgZGVsaXZlcnkg
d291bGQgaW5jbHVkZSB0aGUgdGltZSBvZiBzZW5kaW5nIG91dCB0aGUgcmVxdWVzdCBhbmQgZ2V0
dGluZyB0aGUgZGF0YSBiYWNrLiBTaW5jZSB3ZSBjYW4ndCBkaXN0aW5ndWlzaCB0aGUKICAgICAv
LyBzZW5kaW5nIHRpbWUgZnJvbSB0aGUgcmVjZWl2aW5nIHRpbWUsIGl0IGlzIGJldHRlciB0byBp
Z25vcmUgaXQuCiAgICAgaWYgKCFzdGQ6OmlzbmFuKG1lbWJlcnMtPmRvd25sb2FkU3RhcnRUaW1l
KSkgewotICAgICAgICBtZW1iZXJzLT50b3RhbERvd25sb2FkZWRCeXRlcyArPSBidWZmZXItPnNp
emUoKTsKKyAgICAgICAgbWVtYmVycy0+dG90YWxEb3dubG9hZGVkQnl0ZXMgKz0gZGF0YS5zaXpl
KCk7CiAgICAgICAgIGRvdWJsZSB0aW1lU2luY2VTdGFydCA9IChXYWxsVGltZTo6bm93KCkgLSBt
ZW1iZXJzLT5kb3dubG9hZFN0YXJ0VGltZSkuc2Vjb25kcygpOwogICAgICAgICBHU1RfVFJBQ0Vf
T0JKRUNUKHNyYywgIlIldTogZG93bmxvYWRlZCAlIiBHX0dVSU5UNjRfRk9STUFUICIgYnl0ZXMg
aW4gJWYgc2Vjb25kcyA9fiAlMS4wZiBieXRlcy9zZWNvbmQiLCBtX3JlcXVlc3ROdW1iZXIsIG1l
bWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzLCB0aW1lU2luY2VTdGFydAogICAgICAgICAgICAg
LCB0aW1lU2luY2VTdGFydCA/IG1lbWJlcnMtPnRvdGFsRG93bmxvYWRlZEJ5dGVzIC8gdGltZVNp
bmNlU3RhcnQgOiAwKTsKQEAgLTExMTUsMjAgKzExMTUsMTkgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIFJl
ZjxGcmEKICAgICAgICAgbWVtYmVycy0+ZG93bmxvYWRTdGFydFRpbWUgPSBXYWxsVGltZTo6bm93
KCk7CiAgICAgfQogCi0gICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVu
dCkgewotICAgICAgICBpbnQgbGVuZ3RoID0gc2VnbWVudC5zaXplKCk7Ci0gICAgICAgIEdTVF9M
T0dfT0JKRUNUKHNyYywgIlIldTogSGF2ZSAlZCBieXRlcyBvZiBkYXRhIiwgbV9yZXF1ZXN0TnVt
YmVyLCBsZW5ndGgpOworICAgIGludCBsZW5ndGggPSBkYXRhLnNpemUoKTsKKyAgICBHU1RfTE9H
X09CSkVDVChzcmMsICJSJXU6IEhhdmUgJWQgYnl0ZXMgb2YgZGF0YSIsIG1fcmVxdWVzdE51bWJl
ciwgbGVuZ3RoKTsKIAotICAgICAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3RoOwot
ICAgICAgICBBU1NFUlQoIW1lbWJlcnMtPmhhdmVTaXplIHx8IG1lbWJlcnMtPnJlYWRQb3NpdGlv
biA8PSBtZW1iZXJzLT5zaXplKTsKKyAgICBtZW1iZXJzLT5yZWFkUG9zaXRpb24gKz0gbGVuZ3Ro
OworICAgIEFTU0VSVCghbWVtYmVycy0+aGF2ZVNpemUgfHwgbWVtYmVycy0+cmVhZFBvc2l0aW9u
IDw9IG1lbWJlcnMtPnNpemUpOwogCi0gICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShH
U1RfRUxFTUVOVF9DQVNUKHNyYyksIGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1Rf
Q0FTVChzcmMpLAotICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcoIndlYmtpdC1uZXR3b3Jr
LXN0YXRpc3RpY3MiLCAicmVhZC1wb3NpdGlvbiIsIEdfVFlQRV9VSU5UNjQsIG1lbWJlcnMtPnJl
YWRQb3NpdGlvbiwgInNpemUiLCBHX1RZUEVfVUlOVDY0LCBtZW1iZXJzLT5zaXplLCBudWxscHRy
KSkpOworICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZShHU1RfRUxFTUVOVF9DQVNUKHNyYyks
IGdzdF9tZXNzYWdlX25ld19lbGVtZW50KEdTVF9PQkpFQ1RfQ0FTVChzcmMpLAorICAgICAgICBn
c3Rfc3RydWN0dXJlX25ldygid2Via2l0LW5ldHdvcmstc3RhdGlzdGljcyIsICJyZWFkLXBvc2l0
aW9uIiwgR19UWVBFX1VJTlQ2NCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uLCAic2l6ZSIsIEdfVFlQ
RV9VSU5UNjQsIG1lbWJlcnMtPnNpemUsIG51bGxwdHIpKSk7CisKKyAgICBjaGVja1VwZGF0ZUJs
b2Nrc2l6ZShsZW5ndGgpOworICAgIEdzdEJ1ZmZlciogYnVmZmVyID0gZ3N0QnVmZmVyTmV3V3Jh
cHBlZEZhc3QoZmFzdE1lbUR1cChkYXRhLmRhdGEoKSwgbGVuZ3RoKSwgbGVuZ3RoKTsKKyAgICBn
c3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0ZXIuZ2V0KCksIGJ1ZmZlcik7CiAKLSAgICAg
ICAgY2hlY2tVcGRhdGVCbG9ja3NpemUobGVuZ3RoKTsKLSAgICAgICAgR3N0QnVmZmVyKiBidWZm
ZXIgPSBnc3RCdWZmZXJOZXdXcmFwcGVkRmFzdChmYXN0TWVtRHVwKHNlZ21lbnQuZGF0YSgpLCBs
ZW5ndGgpLCBsZW5ndGgpOwotICAgICAgICBnc3RfYWRhcHRlcl9wdXNoKG1lbWJlcnMtPmFkYXB0
ZXIuZ2V0KCksIGJ1ZmZlcik7Ci0gICAgfSk7CiAgICAgc3RvcExvYWRlcklmTmVlZGVkKHNyYywg
bWVtYmVycyk7CiAgICAgbWVtYmVycy0+cmVzcG9uc2VDb25kaXRpb24ubm90aWZ5T25lKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCA5YzQwNTU3ODI0MWQwYzUxMjcwMjk1MTVj
MjIxMjY1OGY4YzRmNjhhLi5iMjg5NmFlMzBhMWI4Y2MzZGYxMmEwNzQxMmNmNTAyMjE3ZmM2ODM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2Fs
YWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTc2LDkgKzc2LDggQEAgcHVibGljOgog
ICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJy
b3IpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9
IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAgaWYgKGNvbnRpZ3VvdXNEYXRhLT5kYXRh
KCkpCi0gICAgICAgICAgICBtX2RhdGEgPSBjb250aWd1b3VzRGF0YS0+YmVnaW4oKS0+c2VnbWVu
dC5jb3B5UmVmKCk7CisgICAgICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKwog
ICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlw
ZUF2YWlsYWJsZSkgewogICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRy
dWU7CiAgICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZlZCk7CkBAIC0xOTQs
NyArMTkzLDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3Qo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KIAogcHJvdGVjdGVkOgot
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOwor
ICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IG1fZGF0YTsKICAgICBWZWN0b3I8U2NhbGFi
bGVJbWFnZURlY29kZXJGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlIFdURl9HVUFSREVEX0JZ
X0xPQ0sobV9sb2NrKTsKICAgICBtdXRhYmxlIExvY2sgbV9sb2NrOwogICAgIGJvb2wgbV9wcmVt
dWx0aXBseUFscGhhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYXZpZi9BVklGSW1hZ2VSZWFkZXIuY3BwCmluZGV4IDI2Zjg4NjQ5
NmU1YTVhMTRlMjhhZmIxYWZhOWJmYzMwMTc3ZjUxY2YuLmQ2OGMwYTM1ZmMxZjRhYjYwMTdiZDM5
ZWU0MzkxMDI2ODM1ZmM4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgQVZJRkltYWdlUmVhZGVyOjpBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJ
bWFnZURlY29kZXI+JiYgZGVjb2RlcikKIAogQVZJRkltYWdlUmVhZGVyOjp+QVZJRkltYWdlUmVh
ZGVyKCkgPSBkZWZhdWx0OwogCi1ib29sIEFWSUZJbWFnZVJlYWRlcjo6cGFyc2VIZWFkZXIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQorYm9vbCBBVklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKGF2aWZEZWNv
ZGVyU2V0SU9NZW1vcnkobV9hdmlmRGVjb2Rlci5nZXQoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKSAhPSBBVklGX1JFU1VMVF9PSykKICAgICAgICAgcmV0dXJuIGFsbERhdGFSZWNlaXZlZCA/
IG1fZGVjb2Rlci0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBB
VklGSW1hZ2VSZWFkZXI6OnBhcnNlSGVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6
OkRhdGFTZWdtZW50JiBkYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBVklGSW1hZ2VS
ZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2Rl
ckZyYW1lJiBidWZmZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50
JiBkYXRhKQordm9pZCBBVklGSW1hZ2VSZWFkZXI6OmRlY29kZUZyYW1lKHNpemVfdCBmcmFtZUlu
ZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZyYW1lJiBidWZmZXIsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSkKIHsKICAgICBpZiAobV9kZWNvZGVyLT5mYWlsZWQoKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZp
Zi9BVklGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2F2aWYvQVZJRkltYWdlUmVhZGVyLmgKaW5kZXggNDk2ZjY5ZjgxMmJkNzViMGVkYTYzNTdi
YWE4NjBjZmNjYjViYTRiMy4uODVhY2IxN2NiY2ZjNTg4NWQ2YWM1NTI1YzdiNWM5ZWZmYzU4YzY2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYXZp
Zi9BVklGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9hdmlmL0FWSUZJbWFnZVJlYWRlci5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoK
ICAgICBBVklGSW1hZ2VSZWFkZXIoUmVmUHRyPEFWSUZJbWFnZURlY29kZXI+JiYpOwogICAgIH5B
VklGSW1hZ2VSZWFkZXIoKTsKIAotICAgIGJvb2wgcGFyc2VIZWFkZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAg
dm9pZCBkZWNvZGVGcmFtZShzaXplX3QgaW5kZXgsIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUm
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYpOworICAgIGJvb2wg
cGFyc2VIZWFkZXIoY29uc3QgU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwor
ICAgIHZvaWQgZGVjb2RlRnJhbWUoc2l6ZV90IGluZGV4LCBTY2FsYWJsZUltYWdlRGVjb2RlckZy
YW1lJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgc2l6ZV90IGltYWdlQ291bnQoKSBjb25z
dDsKICAgICBkb3VibGUgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZVJlYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVh
ZGVyLmgKaW5kZXggYmQ0MzBlOGE4YmVhMmM4MTZiMmM1MjJiZjViYTc4ODQ2YzM4ZTBmZi4uYzMx
NDEzNDc5ZDQzMjUxYjI3OGVkZDY3YTQ0MTkxNmYwODAyMTlkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVhZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlUmVh
ZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgQk1QSW1hZ2VSZWFkZXIgewogcHVibGljOgog
ICAgIC8vIFJlYWQgYSB2YWx1ZSBmcm9tIHxkYXRhW29mZnNldF18LCBjb252ZXJ0aW5nIGZyb20g
bGl0dGxlIHRvIG5hdGl2ZQogICAgIC8vIGVuZGlhbm5lc3MuCi0gICAgc3RhdGljIGlubGluZSB1
aW50MTZfdCByZWFkVWludDE2KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdt
ZW50JiBkYXRhLCBpbnQgb2Zmc2V0KQorICAgIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgcmVhZFVp
bnQxNihjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGludCBvZmZzZXQpCiAgICAgewogICAgICAg
ICB1aW50MTZfdCByZXN1bHQ7CiAgICAgICAgIG1lbWNweSgmcmVzdWx0LCAmZGF0YS5kYXRhKClb
b2Zmc2V0XSwgMik7CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEsIGludCBvZmZzZXQp
CisgICAgc3RhdGljIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgaW50IG9mZnNldCkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IHJlc3VsdDsKICAg
ICAgICAgbWVtY3B5KCZyZXN1bHQsICZkYXRhLmRhdGEoKVtvZmZzZXRdLCA0KTsKQEAgLTY5LDcg
KzY5LDcgQEAgcHVibGljOgogICAgIEJNUEltYWdlUmVhZGVyKFNjYWxhYmxlSW1hZ2VEZWNvZGVy
KiBwYXJlbnQsIHNpemVfdCBkZWNvZGVkQW5kSGVhZGVyT2Zmc2V0LCBzaXplX3QgaW1nRGF0YU9m
ZnNldCwgYm9vbCB1c2VzQW5kTWFzayk7CiAKICAgICB2b2lkIHNldEJ1ZmZlcihTY2FsYWJsZUlt
YWdlRGVjb2RlckZyYW1lKiBidWZmZXIpIHsgbV9idWZmZXIgPSBidWZmZXI7IH0KLSAgICB2b2lk
IHNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQmIGRhdGEpIHsgbV9k
YXRhID0gJmRhdGE7IH0KKyAgICB2b2lkIHNldERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KSB7IG1fZGF0YSA9ICZkYXRhOyB9CiAKICAgICAvLyBEb2VzIHRoZSBhY3R1YWwgZGVjb2Rpbmcu
IElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgZGVjb2Rpbmcgb25seQogICAgIC8vIHByb2dyZXNzZXMg
YXMgZmFyIGFzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGltYWdlIHNpemUuIFJldHVybnMKQEAgLTI3
Miw3ICsyNzIsNyBAQCBwcml2YXRlOgogICAgIFNjYWxhYmxlSW1hZ2VEZWNvZGVyRnJhbWUqIG1f
YnVmZmVyOwogCiAgICAgLy8gVGhlIGZpbGUgdG8gZGVjb2RlLgotICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudD4gbV9kYXRhOworICAgIFJlZlB0cjxjb25zdCBT
aGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogICAgIC8vIEFuIGluZGV4IGludG8gfG1fZGF0YXwgcmVw
cmVzZW50aW5nIGhvdyBtdWNoIHdlJ3ZlIGFscmVhZHkgZGVjb2RlZC4KICAgICBzaXplX3QgbV9k
ZWNvZGVkT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCAxMDgyZmRmMGRmZjIzOTFl
NTY1MzBhNDFmODdiYTQzOTgyMzI3NTM1Li5kNmJmZmMxMmIxZTFlNDZkNDNkMDQ3ZWRkYzJhZDk0
YjVjODU1M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjM3LDcgKzIzNyw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhKSB7IG1fZGF0YSA9ICZkYXRhOyB9Cisg
ICAgdm9pZCBzZXREYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkgeyBtX2Rh
dGEgPSAmZGF0YTsgfQogICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFtZSBzaG91bGQgYmUgc2l6ZV90
LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVu
c2lnbmVkIGhhbHRBdEZyYW1lKTsKIApAQCAtMzE2LDYgKzMxNiw2IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxHSUZGcmFtZUNvbnRleHQ+ID4gbV9mcmFtZXM7CiAgICAg
c2l6ZV90IG1fY3VycmVudERlY29kaW5nRnJhbWU7CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IG1fZGF0YTsKKyAgICBSZWZQdHI8Y29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2RhdGE7CiAgICAgYm9vbCBtX3BhcnNlQ29tcGxl
dGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IGY0MjNjY2M5Y2Ux
MjdlZjdhZTc2YzkxMjgyNGFiZTg3NzNmYjcyZDEuLjQzNTAzNThmM2JlZWI5ZjI0NTg2M2NlN2Uw
MGFlODI3NTBkZTc0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzE3
LDcgKzMxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9ieXRlc1RvU2tpcCA9IHN0ZDo6bWF4KG51
bUJ5dGVzIC0gYnl0ZXNUb1NraXAsIHN0YXRpY19jYXN0PGxvbmc+KDApKTsKICAgICB9CiAKLSAg
ICBib29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYg
ZGF0YSwgYm9vbCBvbmx5U2l6ZSkKKyAgICBib29sIGRlY29kZShjb25zdCBTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgb25seVNpemUpCiAgICAgewogICAgICAgICBtX2RlY29kaW5nU2l6ZU9ubHkg
PSBvbmx5U2l6ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZzIwMDAvSlBFRzIwMDBJbWFnZURlY29kZXIu
Y3BwCmluZGV4IDIwNDczZjBlZWViYjU2YzcxMzE0ZjY1NTZiZGEwOTAzMzQ5MDc0NDIuLjkzM2Ew
MTNmMjFjNDdlOWNiNzk5ZWI3MmFiYjdlMzhjZmFiMWE2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcyMDAwL0pQRUcyMDAwSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
MjAwMC9KUEVHMjAwMEltYWdlRGVjb2Rlci5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEpQ
RUcyMDAwSW1hZ2VEZWNvZGVyOjpkZWNvZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiAgICAgfQogCiAgICAgc3RydWN0IFJlYWRlciB7Ci0gICAgICAgIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50JiBkYXRhOworICAgICAgICBjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGE7CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgfSByZWFkZXIgPSB7ICptX2Rh
dGEsIDAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCAyNzA5YjdjNjhiZjUz
MGQxOTVkNzY2NmEzZDZhY2U1MDAxM2JiZTM0Li40MDQ5NjNhNDc5YzA1ZmMwYzZkNWMzMGViN2Jl
Yzc4MTU2OWFiOWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9yZWFkT2Zmc2V0ID0gMDsKICAgICB9CiAKLSAgICBi
b29sIGRlY29kZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudCYgZGF0
YSwgYm9vbCBzaXplT25seSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisgICAgYm9vbCBkZWNvZGUo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIHNpemVPbmx5LCB1bnNpZ25lZCBoYWx0QXRG
cmFtZSkKICAgICB7CiAgICAgICAgIG1fZGVjb2RpbmdTaXplT25seSA9IHNpemVPbmx5OwogICAg
ICAgICBQTkdJbWFnZURlY29kZXIqIGRlY29kZXIgPSBzdGF0aWNfY2FzdDxQTkdJbWFnZURlY29k
ZXIqPihwbmdfZ2V0X3Byb2dyZXNzaXZlX3B0cihtX3BuZykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5jcHAKaW5kZXggYjFiZWM1NWU3OGM0MzQ4MDFjMjU0YWNlMGRmNTk5MzFhMzZiNzRi
ZC4uNzcyZTgzMjY2ZTIzMGViNmRmZjdkYzFlZjdkYjU1MjM5NjNiZmIwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJw
L1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBXRUJQSW1hZ2VE
ZWNvZGVyOjpkZWNvZGUoc2l6ZV90IGZyYW1lSW5kZXgsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQog
ICAgIC8vIFRoaXMgY2FuIGJlIGV4ZWN1dGVkIGJvdGggaW4gdGhlIG1haW4gdGhyZWFkICh3aGVu
IG5vdCB1c2luZyBhc3luYyBkZWNvZGluZykgb3IgaW4gdGhlIGRlY29kaW5nIHRocmVhZC4KICAg
ICAvLyBXaGVuIGV4ZWN1dGVkIGluIHRoZSBkZWNvZGluZyB0aHJlYWQsIGEgY2FsbCB0byBzZXRE
YXRhKCkgZnJvbSB0aGUgbWFpbiB0aHJlYWQgbWF5IGNoYW5nZSB0aGUgZGF0YQogICAgIC8vIHRo
ZSBXZWJQRGVtdXhlciBpcyB1c2luZywgbGVhdmluZyBpdCBpbiBhbiBpbmNvbnNpc3RlbnQgc3Rh
dGUsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgZGF0YS4KLSAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ+IHByb3RlY3RlZERhdGEobV9kYXRhKTsKKyAgICBS
ZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBwcm90ZWN0ZWREYXRhKG1fZGF0YSk7CiAgICAgV2Vi
UERhdGEgaW5wdXREYXRhID0geyBwcm90ZWN0ZWREYXRhLT5kYXRhKCksIHByb3RlY3RlZERhdGEt
PnNpemUoKSB9OwogICAgIFdlYlBEZW11eFN0YXRlIGRlbXV4ZXJTdGF0ZTsKICAgICBXZWJQRGVt
dXhlciogZGVtdXhlciA9IFdlYlBEZW11eFBhcnRpYWwoJmlucHV0RGF0YSwgJmRlbXV4ZXJTdGF0
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
SGFuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VIYW5kbGVDbGllbnQuY3BwCmluZGV4IGJhOGZkNGZmNGYxZTQxYzlhZDRmYTc0YTQyYmU0ZTJi
ZDExYWE4NDMuLmRjYWM1OTk3YTYxMzVkMmFiNzU5YTdhZDJlYmIwNDM1MmQ1MTRhNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5k
bGVDbGllbnQuY3BwCkBAIC0zNiw5ICszNiwxMSBAQCBSZXNvdXJjZUhhbmRsZUNsaWVudDo6UmVz
b3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKIFJlc291cmNlSGFuZGxlQ2xpZW50Ojp+
UmVzb3VyY2VIYW5kbGVDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUmVzb3VyY2VIYW5kbGVD
bGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lk
IFJlc291cmNlSGFuZGxlQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IGVuY29kZWRE
YXRhTGVuZ3RoKQogewotICAgIGRpZFJlY2VpdmVEYXRhKGhhbmRsZSwgYnVmZmVyLT5tYWtlQ29u
dGlndW91cygpLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpLCBlbmNvZGVkRGF0YUxlbmd0aCk7Cisg
ICAgYnVmZmVyLmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIoWyZdKGF1dG8mJiBidWZmZXIp
IHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoaGFuZGxlLCBidWZmZXIsIGVuY29kZWREYXRhTGVu
Z3RoKTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUNsaWVudC5oCmluZGV4IGM0ZjA1NDg1ZjI4NzBiMTE2
ZGE3Yzc2MGQzYzBmY2U5NmVjMmI0YTUuLmU0NDJjOTczNGMxMTk4NDkwYTFjNmNhYzU3NzI1ZmQ1
MTk2YjNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VIYW5kbGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlQ2xpZW50LmgKQEAgLTQ0LDEzICs0NCwxNCBAQCBPQkpDX0NMQVNTIE5T
Q2FjaGVkVVJMUmVzcG9uc2U7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKIGNsYXNzIENyZWRlbnRpYWw7CitjbGFzcyBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyOwogY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOwogY2xhc3MgUHJvdGVjdGlvblNwYWNl
OwogY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLWNsYXNzIEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGVudW0gQ2FjaGVTdG9yYWdlUG9s
aWN5IHsKICAgICBTdG9yYWdlQWxsb3dlZCwKQEAgLTY1LDkgKzY2LDkgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9u
ZyBsb25nIC8qYnl0ZXNTZW50Ki8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKnRvdGFsQnl0ZXNUb0Jl
U2VudCovKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhh
bmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgq
LykgeyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVzb3VyY2VIYW5kbGUqLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50IGVuY29k
ZWREYXRhTGVuZ3RoKTsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBTaGFyZWRCdWZmZXImLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0
aCovKSB7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZl
cihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgZW5j
b2RlZERhdGFMZW5ndGgpOworCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmNwcAppbmRleCA0YzA0MjEwYzVhNTEzYWMzZjU0NzE0NmQ5Zjg1YzgyYmQ4ODEz
Nzc2Li4zMGI0YmIwZmRhZWY3YWUyY2M3NGFjNjA5ZjdiMDA5OTdlNWE2ZGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmNwcApAQCAtNzEsOSArNzEsOSBAQCB2b2lkIFN5bmNocm9ub3VzTG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyhSZXNvdXJjZUhhbmRsZSosIFJlc291cmNlUgog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgU3luY2hyb25vdXNMb2FkZXJDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgdWludDhfdCogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoLCBpbnQgLyplbmNvZGVkRGF0YUxlbmd0aCovKQordm9pZCBTeW5jaHJv
bm91c0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKIHsKLSAgICBt
X2RhdGEuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisgICAgbV9kYXRhLmFwcGVuZChidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBTeW5jaHJvbm91c0xvYWRlckNsaWVudDo6
ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBOZXR3b3JrTG9h
ZE1ldHJpY3MmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9T
eW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCmluZGV4IDY4MzhlOWQ4Y2Y0Mzc5NmQyZjM5NGJh
MWY1NGYwOWQwYjY3ZThhYmQuLmM0Y2I3MmRjN2E2NTVmZDM2OTZhMzMzZmUwNWNkZWQ2Mjk3NmFm
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25v
dXNMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1N5
bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBTaGFyZWRCdWZmZXI7CisKIGNsYXNzIFN5bmNocm9ub3VzTG9hZGVy
TWVzc2FnZVF1ZXVlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN5bmNocm9ub3VzTG9h
ZGVyTWVzc2FnZVF1ZXVlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTeW5jaHJvbm91c0xv
YWRlck1lc3NhZ2VRdWV1ZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTeW5jaHJv
bm91c0xvYWRlck1lc3NhZ2VRdWV1ZSk7IH0KQEAgLTY2LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlc3Bv
bnNlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IHVpbnQ4X3QqLCB1bnNpZ25lZCwg
aW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGludCAvKmVuY29kZWRE
YXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsK
ICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNlR2VuZXJhdG9y
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SYW5nZVJlc3BvbnNl
R2VuZXJhdG9yLm1tCmluZGV4IGZjMjcyNTQwODkyYjhlMmNkNzdkZThmNmQ5ZTU0YThjOGI1OTdm
NjEuLjE5ODE0YTM2NWM5ZjY2MWEyMWMyMjlhZGJkMDQ2MTFjMjA5NDdlNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmFuZ2VSZXNwb25zZUdlbmVy
YXRvci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jhbmdl
UmVzcG9uc2VHZW5lcmF0b3IubW0KQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFJhbmdlUmVzcG9u
c2VHZW5lcmF0b3I6OmdpdmVSZXNwb25zZVRvVGFza0lmQnl0ZXNJblJhbmdlUmVjZWl2ZWQoV2Vi
Q29yZU5TVQogCiAgICAgICAgICAgICBzaXplX3QgYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXIg
PSBzdGQ6Om1pbihidWZmZXJWaWV3LnNpemUoKSwgcmFuZ2UuZW5kIC0gYnl0ZUluZGV4ICsgMSk7
CiAgICAgICAgICAgICBieXRlSW5kZXggKz0gYnl0ZXNGcm9tVGhpc1ZpZXdUb0RlbGl2ZXI7Ci0g
ICAgICAgICAgICBbdGFzayByZXNvdXJjZTpudWxscHRyIHJlY2VpdmVkRGF0YTpTaGFyZWRCdWZm
ZXJEYXRhVmlldyhidWZmZXJWaWV3LCBieXRlc0Zyb21UaGlzVmlld1RvRGVsaXZlcikuY3JlYXRl
U2hhcmVkQnVmZmVyKCldOworICAgICAgICAgICAgW3Rhc2sgcmVzb3VyY2U6bnVsbHB0ciByZWNl
aXZlZERhdGE6U2hhcmVkQnVmZmVyRGF0YVZpZXcoYnVmZmVyVmlldywgYnl0ZXNGcm9tVGhpc1Zp
ZXdUb0RlbGl2ZXIpLmNyZWF0ZVNoYXJlZEJ1ZmZlcigpLT5jcmVhdGVOU0RhdGEoKV07CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGJ5dGVJbmRleCA+PSByYW5nZS5lbmQpIHsKICAgICAgICAgICAg
IFt0YXNrIHJlc291cmNlRmluaXNoZWQ6bnVsbHB0ciBtZXRyaWNzOk5ldHdvcmtMb2FkTWV0cmlj
cyB7IH1dOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICB2b2lkIGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIGZpbmFsCisgICAgdm9pZCBk
YXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpIGZpbmFsCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
ICAgICBpZiAoIW1fZ2VuZXJhdG9yKQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGF1dG8qIGRhdGEgPSBtX2dlbmVyYXRvci0+bV9tYXAuZ2V0KG1fdXJsU3RyaW5nKTsKICAg
ICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkYXRhLT5idWZm
ZXIuYXBwZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGRhdGEtPmJ1ZmZlci5hcHBlbmQo
YnVmZmVyKTsKICAgICAgICAgbV9nZW5lcmF0b3ItPmdpdmVSZXNwb25zZVRvVGFza3NXaXRoRmlu
aXNoZWRSYW5nZXMoKmRhdGEpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAppbmRleCBm
OTA5NmVlMmU5ZjI0MmZmMDRkNzA1YzJhYTEwOTNhNTVlNTczNWRiLi5lYTRhOWJmMjk3ODI5ZWJk
MDI5MTQ3NmNiZjhhN2U1NDk0NzIxMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaApAQCAtMTU4
LDcgKzE1OCw3IEBAIFdFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViQ29yZU5TVVJMU2Vzc2lv
biA6IE5TT2JqZWN0IHsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRm
b3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2Ugc2VudEJ5dGVzOih1bnNpZ25lZCBsb25nIGxvbmcp
Ynl0ZXNTZW50IHRvdGFsQnl0ZXNUb0JlU2VudDoodW5zaWduZWQgbG9uZyBsb25nKXRvdGFsQnl0
ZXNUb0JlU2VudDsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3Jt
TWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgcmVjZWl2ZWRSZXNwb25zZTooY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgY29tcGxldGlvbkhhbmRsZXI6KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xpY3lDaGVjayk+JiYpY29tcGxl
dGlvbkhhbmRsZXI7CiAtIChCT09MKXJlc291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlOwotLSAodm9pZClyZXNvdXJjZToobnVsbGFi
bGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNlaXZlZERhdGE6
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKWRhdGE7CistICh2b2lkKXJl
c291cmNlOihudWxsYWJsZSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UqKXJlc291cmNl
IHJlY2VpdmVkRGF0YTooUmV0YWluUHRyPE5TRGF0YT4mJilkYXRhOwogLSAodm9pZClyZXNvdXJj
ZToobnVsbGFibGUgV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNvdXJjZSByZWNl
aXZlZFJlZGlyZWN0Oihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZSBy
ZXF1ZXN0OihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJilyZXF1ZXN0IGNvbXBsZXRpb25IYW5k
bGVyOihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
Jiljb21wbGV0aW9uSGFuZGxlcjsKIC0gKHZvaWQpcmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6
OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3VyY2UgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVk
V2l0aEVycm9yOihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJillcnJvcjsKIC0gKHZvaWQp
cmVzb3VyY2U6KG51bGxhYmxlIFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSopcmVzb3Vy
Y2UgbG9hZEZhaWxlZFdpdGhFcnJvcjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpZXJy
b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0KaW5kZXggNWUyZThlOGQ5ZDc2NjcyYTI0MTRmNzZm
NWMwOGYyNTllMDI5ZjUwNC4uM2M4YmUwOGMyOTM0ZTU0ZGEzYjc0OWNhNmRhMzRlZGE5NmRjOWI4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJD
b3JlTlNVUkxTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQpAQCAtNjA4LDcgKzYwOCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKICAgICB2b2lkIGRhdGFTZW50KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIHVu
c2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhY2Nl
c3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2FkRmlu
aXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikg
b3ZlcnJpZGU7CkBAIC02NTIsMTMgKzY1MiwxMyBAQCBib29sIFdlYkNvcmVOU1VSTFNlc3Npb25E
YXRhVGFza0NsaWVudDo6c2hvdWxkQ2FjaGVSZXNwb25zZShQbGF0Zm9ybU1lZGlhUmVzb3VyYwog
ICAgIHJldHVybiBbbV90YXNrIHJlc291cmNlOiZyZXNvdXJjZSBzaG91bGRDYWNoZVJlc3BvbnNl
OnJlc3BvbnNlXTsKIH0KIAotdm9pZCBXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6
OmRhdGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRh
VGFza0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2Us
IGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX3Rh
c2tMb2NrIH07CiAgICAgaWYgKCFtX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIFttX3Rh
c2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpXVEZNb3ZlKGJ1ZmZlcildOworICAg
IFttX3Rhc2sgcmVzb3VyY2U6JnJlc291cmNlIHJlY2VpdmVkRGF0YTpidWZmZXIuY3JlYXRlTlNE
YXRhKCldOwogfQogCiB2b2lkIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFza0NsaWVudDo6cmVk
aXJlY3RSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmIHJlc291cmNlLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC05MzEsMTUgKzkzMSwxNCBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UqKXJlc291cmNlIHNob3VsZENhY2hlUmVzcG9uc2U6KGNvbnN0IFJlcwogICAgIHJldHVy
biByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRSYW5nZSku
aXNFbXB0eSgpOwogfQogCi0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2Uq
KXJlc291cmNlIHJlY2VpdmVkRGF0YTooUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpZGF0YQorLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlKilyZXNv
dXJjZSByZWNlaXZlZERhdGE6KFJldGFpblB0cjxOU0RhdGE+JiYpZGF0YQogewogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsICFyZXNvdXJjZSB8fCByZXNvdXJjZSA9PSBfcmVzb3VyY2UpOwog
ICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRpb246W3N0cm9uZ1NlbGYgPSBSZXRh
aW5QdHIgeyBzZWxmIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7Ci0gICAgICAgIGF1dG8gbnNE
YXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7Ci0gICAgICAgIHN0
cm9uZ1NlbGYuZ2V0KCkuY291bnRPZkJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS0+c2l6ZSgpOworICAg
ICAgICBzdHJvbmdTZWxmLmdldCgpLmNvdW50T2ZCeXRlc1JlY2VpdmVkICs9IFtkYXRhIGxlbmd0
aF07CiAgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0g
KGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ryb25nU2VsZi5nZXQoKS5zZXNzaW9uLmRl
bGVnYXRlOwogICAgICAgICBpZiAoW2RhdGFEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlkUmVjZWl2ZURhdGE6KV0pCi0gICAgICAgICAg
ICBbZGF0YURlbGVnYXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0
KCkuc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdl
dCgpIGRpZFJlY2VpdmVEYXRhOm5zRGF0YS5nZXQoKV07CisgICAgICAgICAgICBbZGF0YURlbGVn
YXRlIFVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXN0cm9uZ1NlbGYuZ2V0KCkuc2Vzc2lvbiBk
YXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilzdHJvbmdTZWxmLmdldCgpIGRpZFJlY2Vp
dmVEYXRhOmRhdGEuZ2V0KCldOwogICAgIH1dOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXgg
ZjMyM2FmMjY0MDE2YjY2MzkzMTFhYzIzMjQ2ZWM1ZWQ4MGEzOTU0NS4uM2JkMmNjNzQyODZlYzQ2
Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMjQzLDcg
KzI0Myw3IEBAIGJvb2wgQ3VybENhY2hlTWFuYWdlcjo6Z2V0Q2FjaGVkUmVzcG9uc2UoY29uc3Qg
U3RyaW5nJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlJiBq
b2IsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBDdXJsQ2FjaGVNYW5h
Z2VyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYgam9iLCBjb25zdCBTaGFyZWRCdWZm
ZXImIGRhdGEpCiB7CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTI1
NSwxMSArMjU1LDExIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUmIGpvYiwgY29uc3QgdWludDhfdCogZGF0YSwKICAgICAgICAgaWYgKGl0LT52
YWx1ZS0+Z2V0Sm9iKCkgIT0gJmpvYikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBp
ZiAoIWl0LT52YWx1ZS0+c2F2ZUNhY2hlZERhdGEoZGF0YSwgc2l6ZSkpCisgICAgICAgIGlmICgh
aXQtPnZhbHVlLT5zYXZlQ2FjaGVkRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKQogICAg
ICAgICAgICAgaW52YWxpZGF0ZUNhY2hlRW50cnkodXJsKTsKIAogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIG1fY3VycmVudFN0b3JhZ2VTaXplICs9IHNpemU7CisgICAgICAgICAgICBtX2N1
cnJlbnRTdG9yYWdlU2l6ZSArPSBkYXRhLnNpemUoKTsKICAgICAgICAgICAgIG1fTFJVRW50cnlM
aXN0LnByZXBlbmRPck1vdmVUb0ZpcnN0KHVybCk7CiAgICAgICAgICAgICBtYWtlUm9vbUZvck5l
d0VudHJ5KCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5oCmluZGV4IGM5ZTI5ZDgwOTcwYzQwNDZl
Nzk2MTYyYmQ5ODMyOTExYjZkZWU2OGMuLmI2NWI5NjNiNjhlNmE2OGQ5ODE5M2FhZjczZjEwODAz
ZDk3ZmNkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBnZXRDYWNoZWRSZXNwb25zZShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VSZXNwb25z
ZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUmLCBSZXNv
dXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSYs
IGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOyAvLyBTYXZlIGRhdGEKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFJlc291cmNlSGFuZGxlJiwgY29uc3QgU2hhcmVkQnVmZmVyJik7IC8vIFNhdmUgZGF0
YQogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSYpOwogICAgIHZvaWQg
ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IDM0OTQ0NTkyNTRhYzkz
ZmMxOWNiMTIxNTBhNjFiYzJiY2VkMDJkNmUuLmFhZjBjOGQ5NDA3MDU1ZDY4YTA1NWZiMzUwNzk2
N2RlNGMwMDg2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDdXJsRG93
bmxvYWQ6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxS
ZXNwb25zZSYmIHIKIH0KIAogCi12b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVCdWZm
ZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2
b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1ZXN0JiwgY29uc3Qg
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApA
QCAtMTExLDcgKzExMSw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkUmVjZWl2ZUJ1ZmZl
cihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX2xpc3RlbmVyKQotICAgICAgICBtX2xpc3RlbmVyLT5kaWRSZWNlaXZl
RGF0YU9mTGVuZ3RoKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbV9saXN0ZW5lci0+ZGlkUmVj
ZWl2ZURhdGFPZkxlbmd0aChidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsRG93bmxvYWQ6
OmN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgTmV0d29ya0xvYWRNZXRyaWNz
JiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERv
d25sb2FkLmgKaW5kZXggY2RlNDQ0NTc3NWY3NDQyMzMwNTMwYjY1YjEzNTdiYTZiZmQ5YmI4MS4u
YTEyMDc1ODM0OTNmNzgzMzc1NmQzYzQ5ODdjZjVjOTVkZmE5NzljNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuaApAQCAtMzgs
NiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VIYW5kbGU7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIEN1cmxEb3du
bG9hZExpc3RlbmVyIHsKIHB1YmxpYzoKQEAgLTcyLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICBS
ZWY8Q3VybFJlcXVlc3Q+IGNyZWF0ZUN1cmxSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5zaWduZWQgbG9uZyBsb25nLCB1
bnNpZ25lZCBsb25nIGxvbmcpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgY3VybERpZFJlY2VpdmVS
ZXNwb25zZShDdXJsUmVxdWVzdCYsIEN1cmxSZXNwb25zZSYmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGN1cmxEaWRSZWNlaXZlQnVmZmVyKEN1cmxSZXF1ZXN0JiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VybERpZFJlY2VpdmVEYXRhKEN1cmxSZXF1
ZXN0JiwgY29uc3QgU2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJsRGlkQ29t
cGxldGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjdXJsRGlkRmFpbFdpdGhFcnJvcihDdXJsUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImJiwg
Q2VydGlmaWNhdGVJbmZvJiYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5jcHAKaW5k
ZXggMDkwZDAzOWJhNDVkZTEwMjhlZGY3Njg0YzZkN2QyZjI5NmUzYTM0ZC4uZDFlNTg2MjRhYWVl
MmVjZTgxMjlkZDM0ZWE5ODY2MjZlNmNkZjA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmNwcApA
QCAtMTE5LDEyICsxMTksMTIgQEAgQ3VybE11bHRpcGFydEhhbmRsZTo6Q3VybE11bHRpcGFydEhh
bmRsZShDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50JiBjbGllbnQsIGNvbnMKIAogfQogCi12b2lk
IEN1cmxNdWx0aXBhcnRIYW5kbGU6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3ZvaWQgQ3VybE11bHRpcGFydEhhbmRsZTo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3Rh
dGU6OkVuZCkKICAgICAgICAgcmV0dXJuOyAvLyBUaGUgaGFuZGxlciBpcyBjbG9zZWQgZG93biBz
byBpZ25vcmUgZXZlcnl0aGluZy4KIAotICAgIG1fYnVmZmVyLmFwcGVuZChidWZmZXIubWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBtX2J1ZmZlci5hcHBlbmQo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKICAgICB3aGlsZSAocHJvY2Vzc0NvbnRl
bnQoKSkgeyB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE11bHRpcGFydEhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNdWx0aXBhcnRIYW5kbGUuaAppbmRleCA5YTFhMWJiZDE5MzhhMTRmNjlm
Y2NlZTNmMGY4OWI5N2E0YTIxODc0Li41YzA4YmNjNWViM2U0YmJjYzAyOWI0NzY3ODY4ZjQzZTJm
OTVjMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE11bHRpcGFydEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50OwogY2xhc3MgQ3Vy
bFJlc3BvbnNlOwotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgQ3VybE11bHRpcGFydEhhbmRsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBDdXJsTXVsdGlwYXJ0SGFu
ZGxlKEN1cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQmLCBjb25zdCBTdHJpbmcmKTsKICAgICB+Q3Vy
bE11bHRpcGFydEhhbmRsZSgpIHsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBT
aGFyZWRCdWZmZXImKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKCk7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11bHRpcGFy
dEhhbmRsZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxNdWx0aXBhcnRIYW5kbGVDbGllbnQuaAppbmRleCBjODEzODg2YThkNWM1ZmE2YzEyZDE0MTMz
MTkxMDFhZjI1MDJhMmFkLi5kZjc2MzdkZTlkOWZmMmI2YjEwODU1ZDBjNTc3MTI1NTM0YjJhNmVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE11
bHRpcGFydEhhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTXVsdGlwYXJ0SGFuZGxlQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xh
c3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEN1cmxNdWx0aXBhcnRIYW5kbGVDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRp
cGFydChjb25zdCBWZWN0b3I8U3RyaW5nPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZURhdGFGcm9tTXVsdGlwYXJ0KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChjb25zdCBTaGFy
ZWRCdWZmZXImKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+Q3VybE11bHRpcGFydEhhbmRsZUNs
aWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYmFjYjJiNTUwYjI4NDEzMWQxYWMyMGFhNjYzODg2ZmUy
MmZlN2Y5OC4uZDBlZjBlNzExNjJiNTM2M2FkNDI1NDE3ZDg1ZWM3MjM4ZjNmNjJiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwCkBAIC0zOTYsNyArMzk2LDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVh
ZGVyKFN0cmluZyYmIGhlYWRlcikKIAogLy8gY2FsbGVkIHdpdGggZGF0YSBhZnRlciBhbGwgaGVh
ZGVycyBoYXZlIGJlZW4gcHJvY2Vzc2VkIHZpYSBoZWFkZXJDYWxsYmFjawogCi1zaXplX3QgQ3Vy
bFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKK3NpemVfdCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC00MTEsNyArNDExLDcgQEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAg
IHJldHVybiBDVVJMX1dSSVRFRlVOQ19QQVVTRTsKICAgICB9CiAKLSAgICBhdXRvIHJlY2VpdmVC
eXRlcyA9IGJ1ZmZlci0+c2l6ZSgpOworICAgIGF1dG8gcmVjZWl2ZUJ5dGVzID0gYnVmZmVyLnNp
emUoKTsKICAgICBtX3RvdGFsUmVjZWl2ZWRTaXplICs9IHJlY2VpdmVCeXRlczsKIAogICAgIHdy
aXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGJ1ZmZlcik7CkBAIC00MjAsOCArNDIwLDgg
QEAgc2l6ZV90IEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIGlmIChtX211bHRpcGFydEhhbmRsZSkKICAgICAg
ICAgICAgIG1fbXVsdGlwYXJ0SGFuZGxlLT5kaWRSZWNlaXZlRGF0YShidWZmZXIpOwogICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1vdmUoYnVmZmVy
KV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQpIG11dGFi
bGUgewotICAgICAgICAgICAgICAgIGNsaWVudC5jdXJsRGlkUmVjZWl2ZUJ1ZmZlcihyZXF1ZXN0
LCBXVEZNb3ZlKGJ1ZmZlcikpOworICAgICAgICAgICAgY2FsbENsaWVudChbYnVmZmVyID0gUmVm
IHsgYnVmZmVyIH1dKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdXJsUmVxdWVzdENsaWVudCYgY2xp
ZW50KSB7CisgICAgICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0
LCBidWZmZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00NDQsMTYg
KzQ0NCwxNiBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlSGVhZGVyRnJvbU11bHRpcGFy
dChjb25zdCBWZWN0b3I8U3RyaW5nPiYgaGVhZGVycykKICAgICBpbnZva2VEaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UsIEFjdGlvbjo6Tm9uZSk7CiB9CiAKLXZvaWQgQ3VybFJlcXVlc3Q6OmRp
ZFJlY2VpdmVEYXRhRnJvbU11bHRpcGFydChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIEN1cmxSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgaWYgKGlzQ29tcGxldGVkT3JDYW5jZWxs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWNlaXZlQnl0ZXMgPSBidWZmZXIt
PnNpemUoKTsKKyAgICBhdXRvIHJlY2VpdmVCeXRlcyA9IGJ1ZmZlci5zaXplKCk7CiAKICAgICBp
ZiAocmVjZWl2ZUJ5dGVzKSB7Ci0gICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFdURk1vdmUo
YnVmZmVyKV0oQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1cmxSZXF1ZXN0Q2xpZW50JiBjbGllbnQp
IG11dGFibGUgewotICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlQnVmZmVyKHJlcXVl
c3QsIFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIGNhbGxDbGllbnQoW2J1ZmZlciA9IFJlZiB7
IGJ1ZmZlciB9XShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlcXVlc3RDbGllbnQmIGNsaWVu
dCkgeworICAgICAgICAgICAgY2xpZW50LmN1cmxEaWRSZWNlaXZlRGF0YShyZXF1ZXN0LCBidWZm
ZXIpOwogICAgICAgICB9KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IGE2ZmIzMTU3NjZiYTVjMmYzZWEz
MmI5ZWY1MWViMDAzZThjYjg5ZDAuLjkyYjc0Njk3YmMzMTc1Y2UwY2RhZGYxNTFmYTI1NDNhMDNl
MTE5ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5oCkBAIC0xMjIsOSArMTIyLDkgQEAgcHJpdmF0ZToKICAgICBDVVJMKiBzZXR1
cFRyYW5zZmVyKCkgb3ZlcnJpZGU7CiAgICAgc2l6ZV90IHdpbGxTZW5kRGF0YShjaGFyKiwgc2l6
ZV90LCBzaXplX3QpOwogICAgIHNpemVfdCBkaWRSZWNlaXZlSGVhZGVyKFN0cmluZyYmKTsKLSAg
ICBzaXplX3QgZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwor
ICAgIHNpemVfdCBkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVIZWFkZXJGcm9tTXVsdGlwYXJ0KGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YUZyb21NdWx0aXBhcnQoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFGcm9t
TXVsdGlwYXJ0KGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29t
cGxldGVUcmFuc2ZlcihDVVJMY29kZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDYW5jZWxUcmFu
c2ZlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluYWxpemVUcmFuc2ZlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Q2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGll
bnQuaAppbmRleCAzNDc5ODMyZjU3NmQ0MTI4YWZhNTFjODE0MjRjY2ZkNzQxZGY2YWU3Li43MzAz
M2YwZWY0ZWI0ZGYyMWFiNzY0NjNjYzM5ODE5YjI4Njc4NDliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RDbGllbnQuaApA
QCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDdXJsUmVxdWVzdDsKIGNsYXNzIEN1cmxSZXNwb25zZTsK
IGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKIGNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogCiBjbGFzcyBDdXJs
UmVxdWVzdENsaWVudCB7CiBwdWJsaWM6CkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBjdXJsRGlkU2VuZERhdGEoQ3VybFJlcXVlc3QmLCB1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3Qm
LCBDdXJsUmVzcG9uc2UmJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjdXJsRGlkUmVjZWl2ZUJ1
ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGN1cmxEaWRSZWNlaXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNo
YXJlZEJ1ZmZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3VybERpZENvbXBsZXRlKEN1cmxS
ZXF1ZXN0JiwgTmV0d29ya0xvYWRNZXRyaWNzJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY3Vy
bERpZEZhaWxXaXRoRXJyb3IoQ3VybFJlcXVlc3QmLCBSZXNvdXJjZUVycm9yJiYsIENlcnRpZmlj
YXRlSW5mbyYmKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
aW5kZXggMzA1ZDRlNWM5ZmMyNzA3NzU3ODdiMGY5YTkxOTc5YzA4ODg5YThhNi4uMzg5N2UwMWM2
ZDA3NjZkYWNmM2UxOWIyMzczMzZmNWI1NWNlNTI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGUuY3BwCkBAIC0xNDIsMTYgKzE0MiwxNSBAQCB2b2lkIEN1cmxSZXNvdXJjZUhh
bmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0
LCBDdQogICAgIH0pOwogfQogCi12b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJs
RGlkUmVjZWl2ZUJ1ZmZlcihDdXJsUmVxdWVzdCYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKK3ZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNl
aXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoY2FuY2VsbGVkT3JDbGllbnRsZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gY29udGlndW91c0J1ZmZlciA9IGJ1ZmZl
ci0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICBDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5k
aWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgY29udGlndW91c0J1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSk7Ci0gICAgY2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBXVEZN
b3ZlKGNvbnRpZ3VvdXNCdWZmZXIpLCBidWZmZXItPnNpemUoKSk7CisgICAgQ3VybENhY2hlTWFu
YWdlcjo6c2luZ2xldG9uKCkuZGlkUmVjZWl2ZURhdGEobV9oYW5kbGUsIGJ1ZmZlcik7CisgICAg
Y2xpZW50KCktPmRpZFJlY2VpdmVCdWZmZXIoJm1faGFuZGxlLCBidWZmZXIsIGJ1ZmZlci5zaXpl
KCkpOwogfQogCiB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkQ29tcGxl
dGUoQ3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBtZXRyaWNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
c291cmNlSGFuZGxlRGVsZWdhdGUuaAppbmRleCBkYWYwYTU5YTRlNTg2ZDcxMTRhYmI0ZTVlZjlj
NTRmNmE4YmVmYzcwLi4wMjRiYzRlOWFlMzFkZjI1YThmOWI3MGNiYTI4MWZhY2VhYzhjZjAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuaApAQCAtMzgsNiArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKIGNsYXNzIFJlc291cmNlSGFu
ZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDsKK2NsYXNzIFNoYXJlZEJ1
ZmZlcjsKIAogY2xhc3MgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUgZmluYWwgOiBwdWJsaWMg
Q3VybFJlcXVlc3RDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEN1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Myw3ICs1NCw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY3VybERpZFNlbmREYXRhKEN1cmxSZXF1ZXN0JiwgdW5z
aWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNU
b0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCBjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1
ZXN0JiwgQ3VybFJlc3BvbnNlJiYpIGZpbmFsOwotICAgIHZvaWQgY3VybERpZFJlY2VpdmVCdWZm
ZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7Cisg
ICAgdm9pZCBjdXJsRGlkUmVjZWl2ZURhdGEoQ3VybFJlcXVlc3QmLCBjb25zdCBTaGFyZWRCdWZm
ZXImKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRDb21wbGV0ZShDdXJsUmVxdWVzdCYsIE5ldHdv
cmtMb2FkTWV0cmljcyYmKSBmaW5hbDsKICAgICB2b2lkIGN1cmxEaWRGYWlsV2l0aEVycm9yKEN1
cmxSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYmLCBDZXJ0aWZpY2F0ZUluZm8mJikgZmluYWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFt
LmNwcAppbmRleCBjMDcwNGYwY2RkNjQ0MjM3M2Y3YjcwYmZlNjE1MzliZjViMzdkNjI1Li4zNjY1
OGY5MWRjOWQ2NzIzMGIyMzllNDk3YzAwMDBhYzYyYWFlOTgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uY3BwCkBAIC05LDcgKzks
NyBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAKKyAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCiAgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKICAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDdXJsU3RyZWFtLmgiCiAKICNpbmNs
dWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAj
aW5jbHVkZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKIAogI2lmIFVTRShDVVJMKQpAQCAtMTI5LDEw
ICsxMzAsMTAgQEAgdm9pZCBDdXJsU3RyZWFtOjp0cnlUb1JlY2VpdmUoKQogICAgIGlmICghbV9j
dXJsSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlY2VpdmVCdWZmZXIgPSBt
YWtlVW5pcXVlQXJyYXk8dWludDhfdD4oa1JlY2VpdmVCdWZmZXJTaXplKTsKKyAgICBWZWN0b3I8
dWludDhfdD4gcmVjZWl2ZUJ1ZmZlcihrUmVjZWl2ZUJ1ZmZlclNpemUpOwogICAgIHNpemVfdCBi
eXRlc1JlY2VpdmVkID0gMDsKIAotICAgIGF1dG8gZXJyb3JDb2RlID0gbV9jdXJsSGFuZGxlLT5y
ZWNlaXZlKHJlY2VpdmVCdWZmZXIuZ2V0KCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNl
aXZlZCk7CisgICAgYXV0byBlcnJvckNvZGUgPSBtX2N1cmxIYW5kbGUtPnJlY2VpdmUocmVjZWl2
ZUJ1ZmZlci5kYXRhKCksIGtSZWNlaXZlQnVmZmVyU2l6ZSwgYnl0ZXNSZWNlaXZlZCk7CiAgICAg
aWYgKGVycm9yQ29kZSAhPSBDVVJMRV9PSykgewogICAgICAgICBpZiAoZXJyb3JDb2RlICE9IENV
UkxFX0FHQUlOKQogICAgICAgICAgICAgbm90aWZ5RmFpbHVyZShlcnJvckNvZGUpOwpAQCAtMTQz
LDggKzE0NCw5IEBAIHZvaWQgQ3VybFN0cmVhbTo6dHJ5VG9SZWNlaXZlKCkKICAgICBpZiAoIWJ5
dGVzUmVjZWl2ZWQpCiAgICAgICAgIGRlc3Ryb3lIYW5kbGUoKTsKIAotICAgIG1fc2NoZWR1bGVy
LmNhbGxDbGllbnRPbk1haW5UaHJlYWQobV9zdHJlYW1JRCwgW3N0cmVhbUlEID0gbV9zdHJlYW1J
RCwgYnVmZmVyID0gV1RGTW92ZShyZWNlaXZlQnVmZmVyKSwgbGVuZ3RoID0gYnl0ZXNSZWNlaXZl
ZF0oQ2xpZW50JiBjbGllbnQpIG11dGFibGUgewotICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURh
dGEoc3RyZWFtSUQsIGJ1ZmZlci5nZXQoKSwgbGVuZ3RoKTsKKyAgICByZWNlaXZlQnVmZmVyLnJl
c2l6ZShieXRlc1JlY2VpdmVkKTsKKyAgICBtX3NjaGVkdWxlci5jYWxsQ2xpZW50T25NYWluVGhy
ZWFkKG1fc3RyZWFtSUQsIFtzdHJlYW1JRCA9IG1fc3RyZWFtSUQsIGJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKFdURk1vdmUocmVjZWl2ZUJ1ZmZlcikpXShDbGllbnQmIGNsaWVudCkgewor
ICAgICAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoc3RyZWFtSUQsIGJ1ZmZlcik7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0
cmVhbS5oCmluZGV4IDRmNTliMjBlOGRiMjc5MDM5OTRiMzMxNTRjZTY0YjA5OTRmM2EwYmEuLmU4
YTMyYzI2NDYxYjQzMDhlYTIyN2M2ZGY4Yzk3MjQzOTkwNWQwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW0uaApAQCAtOSw3ICs5LDcg
QEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICogCisgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwogICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCiAgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCkBAIC0zMyw2ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cmxT
dHJlYW1TY2hlZHVsZXI7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTb2NrZXRTdHJlYW1F
cnJvcjsKIAogdXNpbmcgQ3VybFN0cmVhbUlEID0gdWludDE2X3Q7CkBAIC00Niw3ICs0Nyw3IEBA
IHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuKEN1cmxT
dHJlYW1JRCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU2VuZERhdGEoQ3VybFN0cmVh
bUlELCBzaXplX3QpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1
cmxTdHJlYW1JRCwgY29uc3QgdWludDhfdCosIHNpemVfdCkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoQ3VybFN0cmVhbUlELCBjb25zdCBTaGFyZWRCdWZmZXImKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKEN1cmxTdHJlYW1JRCwgQ1VSTGNvZGUp
ID0gMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGwuaAppbmRleCBiODA0ZmRlMDk3
M2JiZmIyODMzMWNmN2MzYTFmMjBiMDQzZTc0ZmU4Li4zNjZiMDU5YzAyODA0YjE5OWM4ODZhOWMy
YzY3MjczZjkyNGYyZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKQEAgLTU5LDkgKzU5
LDEwIEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHBsYXRmb3JtU2VuZElu
dGVybmFsKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpOwogICAgIGJvb2wgc2VuZFBlbmRpbmdEYXRh
KCk7CiAKKyAgICAvLyBDdXJsU3RyZWFtOjpDbGllbnQKICAgICB2b2lkIGRpZE9wZW4oQ3VybFN0
cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIGRpZFNlbmREYXRhKEN1cmxTdHJlYW1JRCwgc2l6ZV90
KSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgdWlu
dDhfdCosIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFt
SUQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbChDdXJsU3Ry
ZWFtSUQsIENVUkxjb2RlKSBmaW5hbDsKIAogICAgIGJvb2wgaXNTdHJlYW1JbnZhbGlkYXRlZCgp
IHsgcmV0dXJuIG1fc3RyZWFtSUQgPT0gaW52YWxpZEN1cmxTdHJlYW1JRDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKaW5kZXggNGI5NDkxYzExNTQzZjJiNjBmMTJkMzZl
OWU2YTBjYmFhZTM0YTcyZS4uYThmNTdhNzJkMGVhY2NhNzc1NWJlODRmY2FhMWM5YmYxMDk1OGMw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAKICNpbmNsdWRlICJDdXJsU3RyZWFtU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiU29ja2V0U3RyZWFtRXJyb3IuaCIKICNpbmNsdWRlICJTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQuaCIKICNpbmNsdWRlICJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmgiCkBAIC0xMDQsMTIgKzEw
NSwxMiBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZFNlbmREYXRhKEN1cmxTdHJl
YW1JRCwgc2l6ZV90IGxlbmd0aCkKICAgICBzZW5kUGVuZGluZ0RhdGEoKTsKIH0KIAotdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRSZWNlaXZlRGF0YShDdXJsU3RyZWFtSUQsIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUlt
cGw6OmRpZFJlY2VpdmVEYXRhKEN1cmxTdHJlYW1JRCwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
KQogewogICAgIGlmIChtX3N0YXRlICE9IE9wZW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLCBsZW5ndGgpOwor
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzLCBkYXRhLmRhdGEo
KSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRpZEZh
aWwoQ3VybFN0cmVhbUlELCBDVVJMY29kZSBlcnJvckNvZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVy
Q2xpZW50LmgKaW5kZXggMWY0YTE5MzEzMzEyYzVkZDZhNDhhZDUzMzlkZmQyYzNiNWRlYzI1Ny4u
MGZlNjVhMjllNjM2MTZkYjQyZjdjOWVhMWQxODUyMjFjMjAwNDBjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaApAQCAtMzEsMTIgKzMxLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsK
IAogY2xhc3MgTGVnYWN5UHJldmlld0xvYWRlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPExl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50KCkgPSBkZWZhdWx0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgp
IHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVJlc291cmNlSGFuZGxl
QXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tCmluZGV4IDMxNWUwNjUxNTMwZGNkYjAyODAxNjU0
Yjc1N2Q4MTQ3M2MyMGZkMzAuLmFlNzE1NWVjZWYzNWQzZTE4ODhkOTE2NTY0NTdlMzgxMTU5ZGY0
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0KQEAgLTMwMCw3ICszMDAsNyBAQCAtICh2b2lkKWNvbm5lY3Rp
b246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAq
KWRhdGEgbAogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NzkzCiAgICAgICAgIC8vIC0xIG1lYW5zIHdlIGRvIG5vdCBwcm92aWRlIGFu
eSBkYXRhIGFib3V0IHRyYW5zZmVyIHNpemUgdG8gaW5zcGVjdG9yIHNvIGl0IHdvdWxkIHVzZQog
ICAgICAgICAvLyBDb250ZW50LUxlbmd0aCBoZWFkZXJzIG9yIGNvbnRlbnQgc2l6ZSB0byBzaG93
IHRyYW5zZmVyIHNpemUuCi0gICAgICAgIG1faGFuZGxlLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUJ1
ZmZlcihtX2hhbmRsZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKKyAg
ICAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShtX2hhbmRsZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YS5nZXQoKSksIC0xKTsKICAgICB9OwogCiAgICAgW3NlbGYgY2Fs
bEZ1bmN0aW9uT25NYWluVGhyZWFkOldURk1vdmUod29yayldOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMDhkMDU3YmJiNWYxN2MyMDQ1YmZmOTA2ZmY1YWRh
ODVmMTA0MjkzMC4uZjdmMjY2Y2U4ZDgxOTEwNjBjODU3YTJmOGE2YWQ5ZmRlYmQ4MTgyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01NDYsOCArNTQ2LDgg
QEAgRW5jb2RlZERhdGFTdGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogICAgICAgICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAv
LyBEb2N1bWVudExvYWRlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQo
KS4KICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1J
TUVUeXBlKCJpbWFnZS9zdmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExv
YWRlcigpLT53cml0ZXIoKS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1l
bnQKLSAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewot
ICAgICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERh
dGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgZGF0YSgpLT5mb3JF
YWNoU2VnbWVudEFzU2hhcmVkQnVmZmVyKFsmXShhdXRvJiYgYnVmZmVyKSB7CisgICAgICAgICAg
ICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShidWZmZXIp
OwogICAgICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndy
aXRlcigpLmVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
b250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwCmluZGV4IDA1OWYzYTM4NmI2Y2Y1ZmE3OWIzYzE4OTcwMTUzMTNmN2NkYjRlZjIuLjFk
ZTI1M2M5MmIxYjgxZTcyYWI3MGY5YmI1NjhkNDFmZGUzNzRlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9p
ZCBNb2NrQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikKICAgICBtYXliZURldGVybWluZVN0YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlclJlc3Bv
bnNlKTsKIH0KIAotdm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCB1aW50OF90
KiwgaW50KQordm9pZCBNb2NrQ29udGVudEZpbHRlcjo6YWRkRGF0YShjb25zdCBTaGFyZWRCdWZm
ZXImKQogewogICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVyQWRk
RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKaW5k
ZXggNjM1YWM4NGJlNzkzODQ3YWE1NzIxM2QwMWZmYzFlNzRmNzZiNzU5My4uYjgzOTdiMzBkOGQ4
NWI3YmZmYjM2MjU0NjZmMDY4ODhjMTgyMTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
aW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAg
ICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92
ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmNwcAppbmRleCA4MmEyYThjNGIxOGFj
Y2U3OThiMjdjMmM4ZDAwOTU4OWZmNzVjYmE4Li40ZThhYjc4MWE0MDYxYWIxOGM1MDMzNzNiZGEz
OGY2YzU1ZDhhMDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZv
bnRMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJGb250
TG9hZFJlcXVlc3QuY3BwCkBAIC0xMTUsMTIgKzExNSwxMiBAQCB2b2lkIFdvcmtlckZvbnRMb2Fk
UmVxdWVzdDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29u
c3QgUgogICAgICAgICBtX2Vycm9yT2NjdXJyZWQgPSB0cnVlOwogfQogCi12b2lkIFdvcmtlckZv
bnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRh
dGFMZW5ndGgpCit2b2lkIFdvcmtlckZvbnRMb2FkUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGJvb2wpCiB7CiAgICAgaWYgKG1fZXJyb3JPY2N1cnJl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kYXRhLmFwcGVuZChkYXRhLCBkYXRhTGVuZ3Ro
KTsKKyAgICBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKIHZvaWQgV29ya2VyRm9udExvYWRS
ZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRm9udExvYWRSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckZvbnRMb2FkUmVxdWVzdC5oCmluZGV4IGRhYjcz
ZmM3YjFhOTNlZDRlM2ZlYjMxZDY3MDk4ZDk5YjUxNzZhMzkuLjdjYmFhOGU1NTEwYzhjNGZjYWYy
ZWI5MmM2ZjczYjNkMmExMmM2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyRm9udExvYWRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJGb250TG9hZFJlcXVlc3QuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNXb3JrZXJGb250TG9hZFJlcXVlc3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQg
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCBiZjVhNDRmZTM0OGQyZmZjZTkx
NmZiMTk0OTE1ZTY3YmZkYTlhZWMxLi5jZDI2ZWNkNmEzN2E3ZWQzOWZmNzFlZGRhMzVlOGVmYTkw
YjM3YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIu
Y3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiB9CiAK
LXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgbGVuKQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBib29sIHVzZVN0ckxlbikKIHsKICAgICBpZiAobV9m
YWlsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIxMiwxMyArMjEyLDExIEBAIHZvaWQgV29ya2Vy
U2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVu
KQogICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0
ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYtOCIpOwogICAgIH0KIAotICAgIGlmICghbGVuKQorICAg
IGlmIChidWZmZXIuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKGxl
biA9PSAtMSkKLSAgICAgICAgbGVuID0gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGRhdGEpKTsKIAotICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRh
LCBsZW4pKTsKKyAgICBzaXplX3QgbGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CisgICAg
bV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci5kYXRhKCksIGxlbikpOwog
fQogCiB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxv
YWRlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5oCmluZGV4IGVhYWJlMWVhNWQxM2IzM2Y5YzNjYzY2ZGQ0OTU1N2ViNjll
MzdlZmMuLjBiYzNhMDI1YjM2NzllMjU2MzA4NjI0ZWVlYmE4OWRjY2M0NWM4MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtNzksNyArNzksNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVy
biBtX2Vycm9yOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUxvYWRl
cklkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGJvb2wg
dXNlU3RyTGVuKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VM
b2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCmluZGV4IGZiYTM2MzIy
YjI5YTZkNWI3OTdiMzllZGMzYzNkMTcxMjRiM2I1YmMuLmNlMzcwOTY4OWQ5ZjA5MjFlMDkwM2Ew
Mzc3ZGIyNjhhNTQ1MGIyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5oCkBAIC01MSw3ICs1MSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IDliMTEyYjlkYjJjZDg0ZDAzMmY1OWRhZmE4ZThlMzhlMDcwZTUz
ZjcuLmRjM2FlYThjYWQ5ZDA5NmI0MmJjYTY1YjI2MTIzMmYxMzc0M2QxZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTAzNCw3ICsxMDM0LDcgQEAgUmVmPFRleHRS
ZXNvdXJjZURlY29kZXI+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVEZWNvZGVyKCkgY29uc3QKICAg
ICByZXR1cm4gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04
Iik7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsIGludCBsZW4pCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShj
b25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgYm9vbCB1c2VTdHJMZW4pCiB7CiAgICAgaWYgKG1f
ZXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTEwNTIsMTcgKzEwNTIsMTYgQEAgdm9pZCBYTUxI
dHRwUmVxdWVzdDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbikK
ICAgICBpZiAodXNlRGVjb2RlciAmJiAhbV9kZWNvZGVyKQogICAgICAgICBtX2RlY29kZXIgPSBj
cmVhdGVEZWNvZGVyKCk7CiAKLSAgICBpZiAoIWxlbikKKyAgICBpZiAoYnVmZmVyLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxlbiA9PSAtMSkKLSAgICAgICAgbGVuID0g
c3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpKTsKKyAgICBzaXplX3Qg
bGVuID0gdXNlU3RyTGVuID8gc3RybGVuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGJ1
ZmZlci5kYXRhKCkpKSA6IGJ1ZmZlci5zaXplKCk7CiAKICAgICBpZiAodXNlRGVjb2RlcikKLSAg
ICAgICAgbV9yZXNwb25zZUJ1aWxkZXIuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEsIGxl
bikpOworICAgICAgICBtX3Jlc3BvbnNlQnVpbGRlci5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUo
YnVmZmVyLmRhdGEoKSwgbGVuKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJ1ZmZlciBiaW5h
cnkgZGF0YS4KLSAgICAgICAgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIuYXBwZW5kKGRhdGEsIGxl
bik7CisgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmFwcGVuZChidWZmZXIpOwogICAg
IH0KIAogICAgIGlmICghbV9lcnJvcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApp
bmRleCAyZDEzYmVjMzk0NjQ0OGI5YjRmOTI1ZDMyYmQ4NmJhMmQ4MDM3NzVhLi42YmYxOWY4MmJk
MmZmNzY3MDdkYTQ1NzE0NzUwN2U5OTFkMjQ2NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaApAQCAtMTYyLDcgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlckNsaWVudAogICAgIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVz
U2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShj
b25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImLCBib29sKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIHZv
aWQgbm90aWZ5SXNEb25lKGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuY3BwCmluZGV4IDYxN2Y0NzY4OTU2
NDJkZWMyMzI1NGI1NDBlZTgxOTExYWM0YTJkZjYuLjdmNTEyYzZjMTFhOGU3MTA4Y2YwMDYyYjU4
NGQyN2I1ODkwOGQxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFSZXNvdXJjZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFSZXNvdXJj
ZU1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAt
OTYsMTAgKzk3LDEwIEBAIHZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQodWludDY0
X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNlCiAgICAgICAgIG1fY2xpZW50
LT5kYXRhU2VudCgqdGhpcywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCi12
b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQordm9pZCBSZW1vdGVNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQo
Y29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAg
bV9jbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgV1RGTW92ZShkYXRhKSk7CisgICAgICAgIG1f
Y2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRoaXMsIGRhdGEpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlh
UmVzb3VyY2U6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFSZXNvdXJjZS5oCmluZGV4IDViN2E3ZTJhNzQyNDQzMmQ4NmNiMjhhMWJlNzE3MThhMTY3Mzc1
ZTcuLjk1MTA2ZjY3MjI3M2I0NWYwYTI0YTQ3YTFhMmJkZDE0MDllMGY0MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlLmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2UuaApA
QCAtMzUsNiArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTmV0d29ya0xvYWRN
ZXRyaWNzOwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Nyw3ICs1OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U2hvdWxkQ29udGludWVQb2xp
Y3lDaGVjayk+JiYpOwogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIGRh
dGFTZW50KHVpbnQ2NF90LCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkYXRhUmVjZWl2ZWQoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQgZGF0YVJlY2VpdmVk
KGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENo
ZWNrRmFpbGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGxvYWRG
YWlsZWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgbG9hZEZpbmlz
aGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApp
bmRleCA3MWZkMDIyMjliYmIxYzU3MzI2ZmRmY2ZlMjZjMTFmNzYxYWJjZjcyLi4wNTRiODkzZTEx
MTEwZGNmOWE3MDAyNTJmNGY3OTViMDFhNTg3YjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaApAQCAtNjgs
NyArNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVu
dGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRl
bnRpYWxzOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgZGlkUmVj
ZWl2ZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgb3ZlcnJpZGUgeyB9
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggOTU4NjA5MWVhMDA0MWI2
ZjE1ODY5ZDQyYmJkYTcyNDMyOTc2OTBlYy4uYmE4ZDA0OGY2NWRjMzM5ODRmMGNkNDc2MzVhYjkx
MDE4NzliZDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBA
IHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0
aW9uOjpVc2UpOwogfQogCi12b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVj
ZWl2ZURhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpCit2b2lkIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikKIHsKICAgICBDT1JTX0NIRUNLRVJfUkVMRUFTRV9MT0coImRpZFJlY2Vp
dmVEYXRhIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCA1MDVhNGVmZTU3MWQ0ODllNTBh
OTg4YmViODE4NWI3ZmVhYjNkYjEwLi4wY2IzMTVmZDhmZjUzMTk5MTU3ZGU3OGY4NDUyZDcxYzRm
NWUyOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTM3LDYgKzM3LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsK
K2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03MSw3ICs3
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxs
ZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5
VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBm
aW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKaW5k
ZXggNGI5ZWU1NzRiOTJjN2MzNzE3YTRiYzI4MTlhNmJlM2ExOTA2NTcxNS4uZjQ3OWUwOTAyYjIx
NzkyOTU1ZDM3NjgxNGIyMWM4OWZmNTVkYjU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgUmVzb3VyY2VF
cnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7Ci1jbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyOworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYz
LDcgKzYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYm
LCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1NlbmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggOGMxMDRk
ODE2MGI3YWFmZDA5OTcxNWRhNmQ0ZTZmN2M0NjM3ZmEwOC4uNjBiNjlhOTM2YmI3OGRmMjUxMDc0
OWM3NTRmZTZhYTIyOTNmZTAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHAKQEAgLTI1NCwxMSArMjU0LDEwIEBAIHZvaWQgTmV0d29ya0xvYWQ6Om5v
dGlmeURpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290
aWF0CiAgICAgbV9jbGllbnQuZ2V0KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKFdURk1vdmUocmVzcG9u
c2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3Zv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSB0aGUgZW5jb2RlZCBk
YXRhIGxlbmd0aCwgbm90IHRoZSBkZWNvZGVkIGRhdGEgbGVuZ3RoLgotICAgIGF1dG8gc2l6ZSA9
IGJ1ZmZlci0+c2l6ZSgpOwotICAgIG1fY2xpZW50LmdldCgpLmRpZFJlY2VpdmVCdWZmZXIoV1RG
TW92ZShidWZmZXIpLCBzaXplKTsKKyAgICBtX2NsaWVudC5nZXQoKS5kaWRSZWNlaXZlQnVmZmVy
KGJ1ZmZlciwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZENvbXBs
ZXRlV2l0aEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCBlNmE3NjExNTk2MmI5NjU5ZTdiZmU3OGM2
ZjRkYzZmNTMxMmIzY2JlLi4wZTRjMWFlNDkyM2MzMzdmNWNmOWIwYTQwOGI1YTg4MjI5ZjU5NjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCkBAIC04MSw3
ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNo
YWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVn
YWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIE5lZ290aWF0ZWRM
ZWdhY3lUTFMsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXIm
KSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpIGZpbmFsOwogICAgIHZvaWQgd2FzQmxvY2tlZCgpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENsaWVu
dC5oCmluZGV4IDM0OGNmZmI5ZThlMjVlZTgzYmJiMzlhMDJjZDNjZjZkMjg1NGQzOWUuLjhhMjg1
ODI2MTEzZjlkOGVlNjYwZGI2ODhiM2M1MzkzZmY5N2IyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcg
Ynl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkg
eyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDM2YWNjNjMxNDVmNDA1YjE5NTVkMzM1NDBkYWE3MDhmOWE2
MjkzNDEuLmU2ZmQyYWM3MGVjN2UwZTc1OTBhZGUyNzJlMTQyN2ZjZTk2ZGRlNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTg2MywyOSArODYzLDI5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
ZW5kRGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4CiAgICAg
fSk7CiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERh
dGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQotICAg
ICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2
aW5nIGRhdGEgKHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGg9JWQpIiwgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCk7Ci0gICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci0+c2l6ZSgpOwor
ICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2Vp
dmluZyBkYXRhIChyZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoPSVkKSIsIHJlcG9ydGVkRW5jb2Rl
ZERhdGFMZW5ndGgpOworICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXIuc2l6ZSgpOwog
CiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAogICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBp
biBjYXNlIG9mIHN0cmVhbWluZyBkYXRhIGFuZCBsaW1pdCBzaXplIG9mIGVudHJpZXMgaW4gdGhl
IGNhY2hlLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNhY2hlQnVmZmVyU2l6ZSA9IG1f
Y2FjaGUtPmNhcGFjaXR5KCkgLyA4OwotICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNo
ZS5zaXplKCkgKyBidWZmZXItPnNpemUoKSA8PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQotICAg
ICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JDYWNoZS5hcHBlbmQoYnVmZmVyLmdldCgpKTsKKyAg
ICAgICAgaWYgKG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUuc2l6ZSgpICsgYnVmZmVyLnNpemUoKSA8
PSBtYXhpbXVtQ2FjaGVCdWZmZXJTaXplKQorICAgICAgICAgICAgbV9idWZmZXJlZERhdGFGb3JD
YWNoZS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9idWZmZXJl
ZERhdGFGb3JDYWNoZS5yZXNldCgpOwogICAgIH0KICAgICBpZiAoaXNDcm9zc09yaWdpblByZWZl
dGNoKCkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogQXQgbGVhc3Qgb24gT1MgWCBZ
b3NlbWl0ZSB3ZSBhbHdheXMgZ2V0IC0xIGZyb20gdGhlIHJlc291cmNlIGhhbmRsZS4KLSAgICB1
bnNpZ25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0g
MCA/IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXItPnNpemUoKTsKKyAgICB1bnNp
Z25lZCBlbmNvZGVkRGF0YUxlbmd0aCA9IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggPj0gMCA/
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGggOiBidWZmZXIuc2l6ZSgpOwogCiAgICAgaWYgKG1f
YnVmZmVyZWREYXRhKSB7Ci0gICAgICAgIG1fYnVmZmVyZWREYXRhLmFwcGVuZChidWZmZXIuZ2V0
KCkpOworICAgICAgICBtX2J1ZmZlcmVkRGF0YS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgbV9i
dWZmZXJlZERhdGFFbmNvZGVkRGF0YUxlbmd0aCArPSBlbmNvZGVkRGF0YUxlbmd0aDsKICAgICAg
ICAgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTEy
NzMsNyArMTI3Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpidWZmZXJpbmdUaW1l
ckZpcmVkKCkKICAgICBtX2J1ZmZlcmVkRGF0YUVuY29kZWREYXRhTGVuZ3RoID0gMDsKIH0KIAot
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRCdWZmZXIoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c2VuZEJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIsIHNpemVfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBBU1NFUlQoIWlzU3luY2hyb25v
dXMoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGNmMTBjZjBlNzFhMWJjNjU1NDBlODdkNmJhNGMxYjljODU2
YzBhMWQuLjgxN2FlZjI2YzgzNmMzNGE3ZDQ0ZWU3Y2M5NWVkZDlhMjk4ZDZhNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFsczsgfQogICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVk
aXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpIGZpbmFsOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIo
UmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29k
ZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CiAgICAgdm9pZCBkaWRCbG9ja0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKCkgZmluYWw7CkBAIC0xOTMsNyArMTkzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgc3RhcnRCdWZmZXJpbmdUaW1lcklmTmVlZGVkKCk7CiAgICAgdm9pZCBidWZmZXJp
bmdUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzZW5kQnVmZmVyKFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImLCBzaXplX3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgc2VuZEJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgc2l6ZV90IGVuY29k
ZWREYXRhTGVuZ3RoKTsKIAogICAgIHZvaWQgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAg
ICAgdm9pZCBpbnZhbGlkYXRlU2FuZGJveEV4dGVuc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggYmMyYzMzN2U0ZWVlMDFhZjgzZTEzNjcyMzE3
YTlhOWVhYmM3YzZmOC4uZjBlZmQwNGJiMmUxOGY2ZjNjYmMxNjNmYWYyM2RhMDQ2NmJlZTU0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAgLTE3Miw3ICsx
NzIsNyBAQCB2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBOZWdvdGlhdGVkTGVnYWN5VAogICAgIGRpZEZpbmlzaCh7IH0sIHJlc3Bv
bnNlKTsKIH0KIAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZURhdGEoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlRGF0YShjb25zdCBTaGFy
ZWRCdWZmZXImKQogewogICAgIFBJTkdfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVEYXRhIik7CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdM
b2FkLmgKaW5kZXggZTc4MDhkOGU2NTU4MmY3OTM4ODgyOGQ1MTc1OGNiMTkzY2Y1NWZjNy4uYjIy
NWM0N2I5NGFmYTBiNDRlZGMyNjcwZGZjNThhZDdhZmM5MTQxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29y
ZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50
NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKSBm
aW5hbDsKICAgICB2b2lkIHdhc0Jsb2NrZWQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKaW5kZXggMTdkNDc5MDdhM2Y2ZWU1MmJl
NjUwMWQxZGFiMGNhNjA3NTFkNmIwYi4uYWFhZTJiZmJkZjgzYTM5YWNlYzA2M2ZlYjI0NDYxNmRj
ODQ4ZWRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0
VGFzay5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcmVjb25uZWN0VGFzazo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb20KICAgICBj
b21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgUHJlY29u
bmVjdFRhc2s6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQordm9pZCBQcmVjb25uZWN0VGFzazo6ZGlk
UmVjZWl2ZUJ1ZmZlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKaW5kZXggODU4MDhl
MTIxYjY4Y2E4YjczZTI1MThkMTkzYWIzOTU4MWVhZDFlNy4uOGM2YjBkZWVkNjZjNTEwMTliZTg5
ODRlZDViODdlMGMxZDc5MGY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QcmVjb25uZWN0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJlY29ubmVjdFRhc2suaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0g
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5jcHAKaW5kZXggMjVk
NGUzN2Y5NDU0YmVlMzJmMDRkOGNjOGM0NzFkNWQzZjdlZDgyYi4uOGM4ZGMzNmIxZTUzOTM4Zjgx
ZWI0YWJhYWZmMDE5MGYyYjU0ZWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RG93bmxvYWRUYXNrLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFu
YWdlci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIK
ICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCkBAIC0xNzMsNyArMTc0LDcg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrOjpzdGFydCgpCiAgICAgZG93bmxvYWRQ
dHItPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwogfQog
Ci12b2lkIFNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQg
U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIEFT
U0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRG93
bmxvYWRUYXNrLmgKaW5kZXggYWI1OWVhZTUyNjY1MzA2MjEyYTI4ZTkzMjNhMmI4YjRmZmUwYzc4
Zi4uYjg5YWIzZWJkNzYyZjY4MTJhNWU5N2JmZjY5MGJhOTBmMDI1N2ZjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJE
b3dubG9hZFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckRvd25sb2FkVGFzay5oCkBAIC0zNyw2ICszNyw3IEBACiAKIG5h
bWVzcGFjZSBJUEMgewogY2xhc3MgRm9ybURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZm
ZXJDb3B5OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY2LDcgKzY3LDcgQEAgcHJpdmF0
ZToKICAgICBTZXJ2aWNlV29ya2VyRG93bmxvYWRUYXNrKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29y
a0RhdGFUYXNrQ2xpZW50JiwgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgRG93bmxvYWRJRCk7CiAKICAgICAvLyBJUEMgTWVzc2FnZQotICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1
ZmZlckNvcHkmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBkaWRG
aW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRG93bmxvYWRUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMu
aW4KaW5kZXggMWQzYmZiN2NjMzEwOTc5OWNjODAwMWJiYTcxZDg5YzBmNmYyZDkyZi4uNTBkMmI0
MmE3MWIwZWRhYjc5ZmJjZTlkZGI5ZjE5OTgyZGI1MzU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRh
c2subWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2subWVzc2FnZXMuaW4KQEAgLTI0LDcgKzI0
LDcgQEAKIAogbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckRvd25sb2FkVGFzayBOb3RSZWZDb3Vu
dGVkIHsKICAgICBEaWRGYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCi0gICAgRGlk
UmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJD
b3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkUmVjZWl2ZUZvcm1E
YXRhKElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRGaW5pc2goKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IDRlNzkxOWIzZGRjMDJh
ZTE0ZDBlZDk2ODRiOGM2OGJiNmYyOGE0MzQuLjRmNzhiOWRmNTRlNWU2Nzc4Nzg0MTM1YTI3YTAz
ZGJjNjI5YmZkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAK
QEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAtMjI1LDcgKzIy
NSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6cHJvY2Vzc1Jlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuCiAgICAgICAgIG1fbG9hZGVyLnNldFJlc3Bv
bnNlKFdURk1vdmUocmVzcG9uc2UpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3Qg
ZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2Vp
dmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCkKIHsKICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVybjsKQEAgLTQw
MSw3ICs0MDEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmxvYWRCb2R5RnJvbVBy
ZWxvYWRlcigpCiAgICAgICAgICAgICBkaWRGaW5pc2hXaXRoTWV0cmljcyhtX3ByZWxvYWRlci0+
bmV0d29ya0xvYWRNZXRyaWNzKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSB7IGNodW5rLT5kYXRhKCks
IGNodW5rLT5zaXplKCkgfSwgbGVuZ3RoKTsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGEoUmVmIHsg
Y29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJj4oKmNodW5rKSB9LCBs
ZW5ndGgpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
aAppbmRleCBjMzQ1ODAyNjdmYjMyNjllNmRjYmRjZWZjMzRkMDY4MmM2YTA4ODZjLi41MjI1ZTU0
NTk5OTUxZDhmODFjNzBhZjgyZWJiYTI2ODllMzUwMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIElQQyB7CiBjbGFz
cyBDb25uZWN0aW9uOwogY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTMs
NyArOTQsNyBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU2hvdWxkU2V0U291cmNlIDogYm9v
bCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiwgaW50NjRfdCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRm9ybURhdGEoY29uc3QgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYpOwogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hXaXRo
TWV0cmljcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KaW5kZXggMThlNjI5
ZjBkMTQ2ZWQyZDQyOWRiMWJhMjg3MDFlODNmYjk2ZTYyZi4uN2RiNTNlOWJkMDM4MDQ1NDczYTI1
YWYzN2Q0N2MxOTU3OTVlMjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2subWVzc2FnZXMuaW4KQEAgLTI3LDcgKzI3LDcgQEAgbWVzc2FnZXMgLT4gU2Vy
dmljZVdvcmtlckZldGNoVGFzayBOb3RSZWZDb3VudGVkIHsKICAgICBEaWRGYWlsKFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgZXJyb3IpCiAgICAgRGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKICAgICBEaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKLSAgICBEaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1
ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKKyAgICBE
aWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCkKICAgICBEaWRSZWNlaXZlRm9ybURhdGEoSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSBkYXRhKQogICAgIERpZEZpbmlzaCgpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcAppbmRleCA1ZDliZDMzMzM5MjExY2ExY2Q0
NDdiODc5MmY1NDYxZWE4N2VkZGY0Li5lNTY1NGNjMzEzOWI0OWQ2MWE5ODUxM2NkMDE2YmVjZjcz
OWJiY2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlv
blByZWxvYWRlci5jcHAKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzCiAgICAgICAgIGNhbGxiYWNrKCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsK
ICAgICBpZiAobV9ib2R5Q2FsbGJhY2spCi0gICAgICAgIG1fYm9keUNhbGxiYWNrKGJ1ZmZlci0+
bWFrZUNvbnRpZ3VvdXMoKSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgICAgIG1f
Ym9keUNhbGxiYWNrKFJlZlB0ciB7ICZidWZmZXIgfSwgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCmlu
ZGV4IDY3YWJjNTVjNjBmZjI0ZTM5ZGQwNGVjYzUwMjFiNjA1ZWU4YmViYjEuLjVmODhhYzJhYThk
Zjk2MjhkNGM1OWRkZDA5NGYwY2VlMWQyMWE3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC0zNiw2ICszNiw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK2NsYXNzIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTQsNyArNTUs
NyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9p
ZCgpPjsKICAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOwotICAg
IHVzaW5nIEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB1c2luZyBC
b2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OwogICAg
IHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CkBAIC03MSw3
ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJl
ZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFs
OwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IGZpbmFsOwogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwCmluZGV4IDdhMjYyMjE5ZGU3OGIyMzVkMTI1YTkyYjZlMjM2ZDMzMjYyZjdhMjcuLmQ5ZDc0
NzUyNTMyZjE4OWViMWJlMmMwM2Q3ZTI5ZTg1OWU4OTZlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBA
IFJlc291cmNlRXJyb3IgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnByb2Nlc3NSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQor
dm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9kZWNvZGVyKSB7CiAgICAgICAgIGlmICgh
bV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKQEAgLTE4Niw4ICsxODYsMTEgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4KICAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKICAgICB9CiAKLSAg
ICBpZiAoYXV0byBzaXplID0gYnVmZmVyLT5zaXplKCkpCi0gICAgICAgIG1fc2NyaXB0LmFwcGVu
ZChtX2RlY29kZXItPmRlY29kZShidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgc2l6
ZSkpOworICAgIGlmICghYnVmZmVyLmlzRW1wdHkoKSkgeworICAgICAgICBidWZmZXIuZm9yRWFj
aFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVu
ZChtX2RlY29kZXItPmRlY29kZShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpKTsKKyAg
ICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDQ0
ZmMwNjg1ZmEwZmVkYzg3NDIxOTE2ZTkxM2E2NzRiMWMwZmRiZWEuLjdlODE4ZjM0MTNkYTI5Zjg2
MWUxMDAzOTkxZThkNTM4OTIzNDZlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsK
ICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
QnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVwb3J0ZWRFbmNvZGVk
RGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbExvYWRpbmco
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggNDFkODIzNTAyNDc0N2I2ZmM0YTNhYzU0OGUxMzM0ZWQ2
Y2I1ZWY3YS4uODE0ZWIzMjBkNGU3NDhhMjlhZTA5MTM1YWZjMWRhNWYzNzUxNWVmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVjZWl2ZWRSZXNwb25zZSwgUmUKICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246
OlVzZSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlTG9hZDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWRE
YXRhTGVuZ3RoKQogewogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5KTsKIAogICAgIGlmIChtX2J1
ZmZlcmVkRGF0YUZvckNhY2hlKSB7CiAgICAgICAgIC8vIFByZXZlbnQgbWVtb3J5IGdyb3d0aCBp
biBjYXNlIG9mIHN0cmVhbWluZyBkYXRhLgogICAgICAgICBjb25zdCBzaXplX3QgbWF4aW11bUNh
Y2hlQnVmZmVyU2l6ZSA9IDEwICogMTAyNCAqIDEwMjQ7Ci0gICAgICAgIGlmIChtX2J1ZmZlcmVk
RGF0YUZvckNhY2hlLnNpemUoKSArIGJ1ZmZlci0+c2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZl
clNpemUpCi0gICAgICAgICAgICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIu
Z2V0KCkpOworICAgICAgICBpZiAobV9idWZmZXJlZERhdGFGb3JDYWNoZS5zaXplKCkgKyBidWZm
ZXIuc2l6ZSgpIDw9IG1heGltdW1DYWNoZUJ1ZmZlclNpemUpCisgICAgICAgICAgICBtX2J1ZmZl
cmVkRGF0YUZvckNhY2hlLmFwcGVuZChidWZmZXIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlLnJlc2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmgKaW5kZXggMWI4NDNkYjdlYzI3MGRiOWRhYjllOGEyNWYyYTQ4YThlY2Fl
MmE4YS4uOWFkY2E2MDVlNzI4MGJiN2IzNGNlNzQ0ZDg3ODhiYmI0NDg5MjRlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
aWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXggNDE2NjhhNWIxY2Q3Mzg2OTY3YjhmZDk3M2U5Njcz
MmVjYTkwN2VkYy4uMDc3MmFmMWE4NmQyMjQxN2JmMTFmMTZiZDZiN2I1ODBmZTU3YTdhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EuaApAQCAtMzgsNiArMzgsNyBAQCBPQkpDX0NMQVNTIE5TTXV0YWJsZVVS
TFJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWlu
OworY2xhc3MgU2hhcmVkQnVmZmVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYyLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFVS
TCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgTmVnb3RpYXRl
ZExlZ2FjeVRMUywgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogCiAgICAg
dm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
JiYpOwogICAgIHZvaWQgdHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZChEb3dubG9h
ZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNDc3MWZkZTkyMGQ2Yjk4ZTgzZmMyOWRkM2Fh
Zjk3YTBhNmQ5YTg4MC4uNjQ5YjVjYTc4YzY4NzVlY2RlMGQzZDQzNmY5NTkwZGI1MTc5ZDBiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC00NDMsMTIgKzQ0MywxMiBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcgogICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVXaXRoRXJyb3IoZXJyb3Is
IG5ldHdvcmtMb2FkTWV0cmljcyk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRp
ZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEp
Cit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXImIGRhdGEpCiB7Ci0gICAgV1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQo
KSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBieXRlcyIsIGRhdGEtPnNpemUoKSk7CisgICAg
V1RGRW1pdFNpZ25wb3N0KG1fdGFzay5nZXQoKSwgIkRhdGFUYXNrIiwgInJlY2VpdmVkICV6ZCBi
eXRlcyIsIGRhdGEuc2l6ZSgpKTsKIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSkpOworICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIE5lZ290
aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgV2ViS2l0OjpSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKaW5kZXgg
ODQ2NjllMjA5ZDc3YmY1MmEzNmFmZTJhN2RhYjI1MmE2OTAwZGNmNy4uMTNmY2M3YmQ0OGE1NWEw
OTM5MTI5MjZiYTQ0ODRjZjVlMzU1MTMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U3luY2hyb25vdXNMb2FkZXJDbGllbnQuaD4KICNpbmNsdWRlIDxwYWwvdGV4dC9UZXh0RW5jb2Rp
bmcuaD4KQEAgLTE3MiwxMyArMTczLDEzIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6Y3Vy
bERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVzdCwgQ3VybFJlc3BvCiAgICAg
aW52b2tlRGlkUmVjZWl2ZVJlc3BvbnNlKCk7CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ3Vy
bDo6Y3VybERpZFJlY2VpdmVCdWZmZXIoQ3VybFJlcXVlc3QmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OmN1cmxEaWRSZWNl
aXZlRGF0YShDdXJsUmVxdWVzdCYsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBpZiAoc3RhdGUoKSA9PSBTdGF0ZTo6
Q2FuY2VsaW5nIHx8IHN0YXRlKCkgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYm
ICFpc0Rvd25sb2FkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEo
YnVmZmVyKTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjpjdXJsRGlkQ29tcGxldGUo
Q3VybFJlcXVlc3QmLCBOZXR3b3JrTG9hZE1ldHJpY3MmJiBuZXR3b3JrTG9hZE1ldHJpY3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFU
YXNrQ3VybC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRh
VGFza0N1cmwuaAppbmRleCA0NWJlNWNlMTg0MzI1MjcxZDVjMDgwZGQzNGYxZWU0YTE2NjQyYTFm
Li5lNTU4NjRhOTVmN2JjYmMwODVjNDY2MjhiZmYwNTg1NzM1NzMyODZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJs
LmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3VybFJl
cXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NjgsNyArNjksNyBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJDb3JlOjpDdXJsUmVxdWVzdD4gY3Jl
YXRlQ3VybFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlcXVlc3RTdGF0dXMg
PSBSZXF1ZXN0U3RhdHVzOjpOZXdSZXF1ZXN0KTsKICAgICB2b2lkIGN1cmxEaWRTZW5kRGF0YShX
ZWJDb3JlOjpDdXJsUmVxdWVzdCYsIHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBs
b25nKSBvdmVycmlkZTsKICAgICB2b2lkIGN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpDdXJsUmVzcG9uc2UmJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjdXJsRGlkUmVjZWl2ZUJ1ZmZlcihXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cmxEaWRS
ZWNlaXZlRGF0YShXZWJDb3JlOjpDdXJsUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgY3VybERpZENvbXBsZXRlKFdlYkNvcmU6OkN1cmxS
ZXF1ZXN0JiwgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiYpIG92ZXJyaWRlOwogICAgIHZv
aWQgY3VybERpZEZhaWxXaXRoRXJyb3IoV2ViQ29yZTo6Q3VybFJlcXVlc3QmLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYmKSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5o
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCmluZGV4IDE3
ZjA4YzI4ZWExMjViNTUwOTkzZWVkMjRkNTk2M2I4NTEwYTExNDEuLjU3YjE0NmU1OGU3YTlkYTcw
MjZjOWRlZTUyMDM5NTUxYWRhYjcxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9TaGFyZWRCdWZmZXJDb3B5LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZm
ZXIuaD4KIAogbmFtZXNwYWNlIElQQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApp
bmRleCA5Y2RlZDk2OTM1MTVjYmRiOTI1ZjU5NTRhMTZmNGJhZjA2N2EzMTYyLi42YzE5YmM5YmFi
NjQxMDMzMzAwNzNiNDFjNWFlMWQ4ZWQwMWMzYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5jcHAKQEAgLTE4NSw5ICsxODUsOSBAQCB2b2lkIE1lZGlhRm9ybWF0UmVhZGVyOjpkaWRQ
YXJzZVRyYWNrcyhTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvbgogICAg
IEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3BhcnNl
VHJhY2tzTG9jayB9OwotICAgIEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyk7Ci0gICAgQVNT
RVJUKG1fZHVyYXRpb24uaXNJbnZhbGlkKCkpOwotICAgIEFTU0VSVChtX3RyYWNrUmVhZGVycy5p
c0VtcHR5KCkpOworICAgIEFTU0VSVCghbV9wYXJzZVRyYWNrc1N0YXR1cyB8fCAobV9pbml0ICYm
IGVycm9yQ29kZSkpOworICAgIEFTU0VSVChtX2R1cmF0aW9uLmlzSW52YWxpZCgpIHx8IChtX2lu
aXQgJiYgZXJyb3JDb2RlKSk7CisgICAgQVNTRVJUKG1fdHJhY2tSZWFkZXJzLmlzRW1wdHkoKSB8
fCAobV9pbml0ICYmIGVycm9yQ29kZSkpOwogCiAgICAgQUxXQVlTX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSKTsKICAgICBpZiAoZXJyb3JDb2RlKQpAQCAtMjIxLDYgKzIyMSw3IEBAIHZv
aWQgTWVkaWFGb3JtYXRSZWFkZXI6OmRpZFBhcnNlVHJhY2tzKFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkluaXRpYWxpemF0aW9uCiAgICAgfQogCiAgICAgbV9wYXJzZVRyYWNrc0NvbmRpdGlv
bi5ub3RpZnlBbGwoKTsKKyAgICBtX2luaXQgPSB0cnVlOwogfQogCiB2b2lkIE1lZGlhRm9ybWF0
UmVhZGVyOjpkaWRQcm92aWRlTWVkaWFEYXRhKFJlZjxNZWRpYVNhbXBsZT4mJiBtZWRpYVNhbXBs
ZSwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVh
ZGVyLmgKaW5kZXggMzdlNGFkNDI3NmIxMmFkNTE0M2RjMjI4Y2RlOTQ3NjM4N2U1Yzg4OC4uNjUw
OTNlOWU0NmI0MGI1YTM5NzZmZGVmMjllNjEzYzY0NTFmMzE1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9y
bWF0UmVhZGVyLmgKQEAgLTg3LDYgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmPE1l
ZGlhVHJhY2tSZWFkZXI+PiBtX3RyYWNrUmVhZGVycyBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fcGFy
c2VUcmFja3NMb2NrKTsKICAgICBSZWZQdHI8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBj
b25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CisgICAgYm9vbCBtX2luaXQgeyBmYWxzZSB9Owog
fTsKIAogY29uc3RleHByIE1lZGlhRm9ybWF0UmVhZGVyOjpXcmFwcGVyQ2xhc3MgTWVkaWFGb3Jt
YXRSZWFkZXI6OndyYXBwZXJDbGFzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZVRhc2suY3BwCmluZGV4IGUxMjY0Y2UyMWJhNTdmMmE0Mjc0OGUzM2ExZGFkODhhMGUy
NThiYzIuLmQ3NjdmYzA2YjM2ZjE1NmZmMzFjMzgzZTY0M2Q0MzQ0YzIxN2FhYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0xNjgsNyArMTY4
LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6
Tm9uZTsKIH0KIAotYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKK2F1dG8gV2Vi
VVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIp
IC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRh
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRQogICAgIG1fZGF0YVNl
bnQgPSB0cnVlOwogCiAgICAgaWYgKGlzU3luYygpKSB7Ci0gICAgICAgIG1fc3luY0RhdGEuYXBw
ZW5kKFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fc3luY0RhdGEuYXBwZW5kKGJ1ZmZlcik7
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogICAgIH0KIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRh
KG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX3Jlc291cmNlTG9hZGVySUQsIGJ1
ZmZlci5nZXQoKSksIG1fd2ViUGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXIt
PmlkZW50aWZpZXIoKSwgbV9yZXNvdXJjZUxvYWRlcklELCBidWZmZXIpLCBtX3dlYlBhZ2VJRCk7
CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBmNmZmNDZlZWE1ZjI5MGI3YjdlM2ZlNTky
MWRmOWYxOTRiYWNkMTE3Li5jMzIzMDY5YjFjYzAzMWYwMjViMjJjODU5YTM1NDE4OGZkZDIzNzI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC04Myw3
ICs4Myw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rp
b24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBF
eGNlcHRpb25UeXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAg
RXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJik7CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJD
b3JlOjpTaGFyZWRCdWZmZXImKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc3RvcCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVNZWRp
YVJlc291cmNlUHJveHkuY3BwCmluZGV4IGI1MTNhMjY4MDhlYWExOGUzN2Y0ZmRmMDRhMjNkMjk2
MGIyNzNiMmMuLjkyMzRiNWM2NTNmOTFlYmE5MTBmYmRmOWJlMWUyMmEwMmMxMWM2NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlTWVkaWFSZXNv
dXJjZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZU1lZGlhUmVzb3VyY2VQcm94eS5jcHAKQEAgLTcyLDIwICs3MiwxNyBAQCB2b2lkIFJlbW90
ZU1lZGlhUmVzb3VyY2VQcm94eTo6ZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgdW5zaWduZQogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFSZXNvdXJjZU1hbmFnZXI6OkRhdGFTZW50KG1faWQsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1Rv
QmVTZW50KSwgMCk7CiB9CiAKLXZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVj
ZWl2ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGxlbmd0aCkKK3ZvaWQgUmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5OjpkYXRhUmVjZWl2
ZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6
OmFsbG9jYXRlKGxlbmd0aCk7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6
OmNvcHlCdWZmZXIoYnVmZmVyKTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBzaGFyZWRNZW1vcnlQdHIgPSBzdGF0aWNfY2FzdDxjaGFyKj4oc2hh
cmVkTWVtb3J5LT5kYXRhKCkpOwotICAgIG1lbWNweShzaGFyZWRNZW1vcnlQdHIsIGRhdGEsIGxl
bmd0aCk7Ci0KICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgc2hhcmVkTWVt
b3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRP
bmx5KTsKICAgICAvLyBUYWtlIG93bmVyc2hpcCBvZiBzaGFyZWQgbWVtb3J5IGFuZCBtYXJrIGl0
IGFzIG1lZGlhLXJlbGF0ZWQgbWVtb3J5LgogICAgIGhhbmRsZS50YWtlT3duZXJzaGlwT2ZNZW1v
cnkoTWVtb3J5TGVkZ2VyOjpNZWRpYSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVNZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1l
bW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
bGVuZ3RoKSB9KSwgMCk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVN
ZWRpYVJlc291cmNlTWFuYWdlcjo6RGF0YVJlY2VpdmVkKG1faWQsIFNoYXJlZE1lbW9yeTo6SVBD
SGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBidWZmZXIuc2l6ZSgpIH0pLCAwKTsKIH0KIAogdm9p
ZCBSZW1vdGVNZWRpYVJlc291cmNlUHJveHk6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChXZWJD
b3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VQcm94eS5oCmluZGV4IDQ3ZWE4NjY3MWIxM2QxMzk1
YzNkYWQ5YmRhNzlhYmY2MTZjYmExNzkuLjk0OTQ2NDUyMmMyNjNlNmE1ZTgwNzNmNzRlOWQyNDM0
YmFhOTM5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlTWVkaWFSZXNvdXJjZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVNZWRpYVJlc291cmNlUHJveHkuaApAQCAtNDcsNyArNDcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmKSBmaW5hbDsKICAgICBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2ViQ29y
ZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpIGZpbmFsOwogICAgIHZvaWQgZGF0YVNlbnQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291
cmNlJiwgdW5zaWduZWQgbG9uZyBsb25nLCB1bnNpZ25lZCBsb25nIGxvbmcpIGZpbmFsOwotICAg
IHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0
IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgZGF0YVJlY2VpdmVkKFdlYkNvcmU6OlBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFs
OwogICAgIHZvaWQgYWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFdlYkNvcmU6OlBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKICAgICB2
b2lkIGxvYWRGYWlsZWQoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGQ3MWFlNWUwYTlhZjNkOWVlM2E1MWQ4ZmNm
NTBmZTUzNTliMzkwYjcuLjc0OTE5MGQxOWIwZmExY2UwYjUxMWU4NDIwNzI1NjAwNjkxMTg2MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jl
c291cmNlTG9hZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAj
aW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTIwMCwxNiArMjAxLDE1IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgYm9vCiAgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9u
c2UsIFdURk1vdmUocG9saWN5RGVjaXNpb25Db21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCit2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGlu
dDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vz
cykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMn
IiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNw
b25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2
YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRD
b250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsK
LSAgICAgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwg
ZGF0YS5zaXplKCkpOwotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3Jl
TG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fSwgYnVmZmVyID0gV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aF0oKSBtdXRhYmxl
IHsKKyAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRl
bnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9
IGRhdGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YSh7IGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSB9LCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAg
ICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShidWZmZXIpLCBlbmNvZGVkRGF0YUxl
bmd0aCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjE4LDcgKzIx
OCw4IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgICAgIFdFQlJFU09VUkNFTE9BREVS
X1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSIpOwog
ICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIAotICAgIG1fY29yZUxvYWRl
ci0+ZGlkUmVjZWl2ZURhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBlbmNvZGVkRGF0YUxl
bmd0aCwgRGF0YVBheWxvYWRCeXRlcyk7CisgICAgYXV0byBidWZmZXIgPSBkYXRhLmJ1ZmZlcigp
ID8gUmVmIHsgKmRhdGEuYnVmZmVyKCkgfSA6IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAg
bV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShidWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBE
YXRhUGF5bG9hZEJ5dGVzKTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
UmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNz
KQpAQCAtMzA2LDcgKzMwNyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kCiAgICAgTE9HKE5l
dHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJj
ZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
KTsKICAgICBXRUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiZGlkUmVjZWl2ZVJlc291cmNl
OiIpOwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRs
ZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZm
ZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVh
YmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7CkBAIC0zMjMsNyAr
MzI0LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0
IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmQKIAogICAgIC8vIE9ubHkgc2VuZCBkYXRh
IHRvIHRoZSBkaWRSZWNlaXZlRGF0YSBjYWxsYmFjayBpZiBpdCBleGlzdHMuCiAgICAgaWYgKHVu
c2lnbmVkIGJ1ZmZlclNpemUgPSBidWZmZXItPnNpemUoKSkKLSAgICAgICAgbV9jb3JlTG9hZGVy
LT5kaWRSZWNlaXZlQnVmZmVyKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBE
YXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOworICAgICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2Vp
dmVEYXRhKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBidWZmZXJTaXplLCBEYXRhUGF5bG9hZFdo
b2xlUmVzb3VyY2UpOwogCiAgICAgaWYgKCFtX2NvcmVMb2FkZXIpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCmluZGV4IGEyMmU2MmYyOGI1ZmE0Y2ZjOTFhYTVlNWNlODJjYTI3YWUyNmFkNTMuLmFj
NTQyMmZjMDY3MTBiZDBlMDg3ZTBmNDQwOWVkOTQwMTdjMGNmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMzks
NiArMzksNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwor
Y2xhc3MgU2hhcmVkQnVmZmVyQ29weTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODAs
NyArODEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRf
dCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGJvb2wgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwotICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkRmluaXNoUmVz
b3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQg
ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWRGYWlsU2VydmljZVdvcmtlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgppbmRleCAwMmExNGY1OWEzMDQ3NDRjMmQx
ODNlYTc5ZTk5ZWJhZWI0Y2ZiYmEyLi5kYWEyNGQyN2M3MWE4M2NmN2MwZjE2OGRhMjZhNDliNDg3
NjkyNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRlciBMZWdhY3lSZWNlaXZlciB7CiAgICAgV2lsbFNl
bmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0
UmVzcG9uc2UpCiAgICAgRGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0
b3RhbEJ5dGVzVG9CZVNlbnQpCiAgICAgRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZU1lc3NhZ2UpCi0gICAgRGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgRGlkUmVjZWl2ZURhdGEo
SVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAg
ICAgRGlkRmluaXNoUmVzb3VyY2VMb2FkKFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBuZXR3
b3JrTG9hZE1ldHJpY3MpCiAgICAgRGlkRmFpbFJlc291cmNlTG9hZChXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yKQogICAgIERpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5oCmluZGV4IDhkMmM1ZjNlMjVjYTFhMjM3OGU1ZTMwMDVkNzU0OTJiZWFm
MGIxZWEuLjJiN2U0ZDJjMjBmZGQxOTk4ODI3MmRhOGJmY2M1YTYxODZjNmQzZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAgLTY1
LDYgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNs
YXNzIEVsZW1lbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0K
IAogbmFtZXNwYWNlIFdURiB7CkBAIC0xNzYsMTEgKzE3NywxMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5n
JiByZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkws
IGludCByZXNwb25zZVN0YXR1cykgZmluYWwgeyB9CiAgICAgdm9pZCBzdHJlYW1EaWRSZWNlaXZl
UmVzcG9uc2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFVSTCYgcmVzcG9uc2VVUkwsIHVpbnQz
Ml90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90
IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgZmluYWw7CisgICAg
dm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hMb2FkaW5n
KHVpbnQ2NF90IHN0cmVhbUlEKSBmaW5hbDsKICAgICB2b2lkIHN0cmVhbURpZEZhaWwodWludDY0
X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICB2b2lkIG1hbnVhbFN0
cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBz
dHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5n
JiBtaW1lVHlwZSwgY29uc3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZU5hbWUpIGZpbmFsOwotICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpIGZpbmFsOworICAgIHZvaWQgbWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmlu
YWw7CiAgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgZmluYWw7CiAgICAg
dm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBmaW5hbDsKICAgICBi
b29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIGZpbmFsOwpAQCAtMzYy
LDcgKzM2Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2Vi
Q29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZp
bmFsOwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5h
bDsKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYkNvcmU6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRmFpbChXZWJD
b3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6Ok5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGU1ZmEwNzEwOWE5MzE4
NDUzOWZiMWUyNDcwYTNmOTM4NmQ0MzE1NTguLmZhNmNlNmY2OWZjMDJmNzAxZjg4NTEzODg0NzVk
ZWYzZjI0MzE0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbQpAQCAtOTQsNiArOTQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TY3Jv
bGxBbmltYXRvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaD4KICNp
bXBvcnQgPFdlYkNvcmUvV2hlZWxFdmVudFRlc3RNb25pdG9yLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L2NnL0NvcmVHcmFwaGljc1NQSS5oPgpAQCAtMTE5MSw3ICsxMTkyLDcgQEAgdm9pZCBQREZQbHVn
aW46OlBERlBsdWdpblN0cmVhbUxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNj
YXBlUGx1Z0luU3QKICAgICB9CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpQREZQbHVnaW5TdHJlYW1M
b2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBs
b2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBjb3VudCkKK3ZvaWQgUERGUGx1Z2luOjpQ
REZQbHVnaW5TdHJlYW1Mb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBp
ZiAoIW1fcGRmUGx1Z2luKQogICAgICAgICByZXR1cm47CkBAIC0xMjAwLDcgKzEyMDEsNyBAQCB2
b2lkIFBERlBsdWdpbjo6UERGUGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YShOZXRzY2FwZVBsdWdJblN0cmVhbQogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcmVxdWVzdC0+YWRkRGF0YShkYXRhLCBjb3VudCk7CisgICAgcmVxdWVzdC0+YWRk
RGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6UERG
UGx1Z2luU3RyZWFtTG9hZGVyQ2xpZW50OjpkaWRGYWlsKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKiBsb2FkZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQpAQCAtMTcxOCwxNSArMTcxOSwxNSBA
QCB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVh
bUlELCBjb25zdCBVUkwmLCB1aW50MzJfdAogICAgICAgICBtX2lzUG9zdFNjcmlwdCA9IHRydWU7
CiB9CiAKLXZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJl
YW1JRCwgY29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpCit2b2lkIFBERlBsdWdpbjo6
c3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYgYnVmZmVyKQogewogICAgIEFTU0VSVF9VTlVTRUQoc3RyZWFtSUQsIHN0cmVhbUlEID09IHBk
ZkRvY3VtZW50UmVxdWVzdElEKTsKIAogICAgIGlmICghbV9kYXRhKQogICAgICAgICBtX2RhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCi0gICAgQ0ZEYXRhQXBwZW5k
Qnl0ZXMobV9kYXRhLmdldCgpLCBieXRlcywgbGVuZ3RoKTsKLSAgICBtX3N0cmVhbWVkQnl0ZXMg
Kz0gbGVuZ3RoOworICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGJ1ZmZlci5zaXpl
KCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90
IHN0cmVhbUlEKQpAQCAtMTc2MywxNCArMTc2NCwxNCBAQCB2b2lkIFBERlBsdWdpbjo6ZW5zdXJl
RGF0YUJ1ZmZlckxlbmd0aCh1aW50NjRfdCB0YXJnZXRMZW5ndGgpCiAgICAgICAgIENGRGF0YUlu
Y3JlYXNlTGVuZ3RoKG1fZGF0YS5nZXQoKSwgdGFyZ2V0TGVuZ3RoIC0gY3VycmVudExlbmd0aCk7
CiB9CiAKLXZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCB1
aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkKK3ZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1E
aWRSZWNlaXZlRGF0YShjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBpZiAoIW1f
ZGF0YSkKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDAp
KTsKIAotICAgIGVuc3VyZURhdGFCdWZmZXJMZW5ndGgobV9zdHJlYW1lZEJ5dGVzICsgbGVuZ3Ro
KTsKLSAgICBtZW1jcHkoQ0ZEYXRhR2V0TXV0YWJsZUJ5dGVQdHIobV9kYXRhLmdldCgpKSArIG1f
c3RyZWFtZWRCeXRlcywgYnl0ZXMsIGxlbmd0aCk7Ci0gICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxl
bmd0aDsKKyAgICBlbnN1cmVEYXRhQnVmZmVyTGVuZ3RoKG1fc3RyZWFtZWRCeXRlcyArIGJ1ZmZl
ci5zaXplKCkpOworICAgIG1lbWNweShDRkRhdGFHZXRNdXRhYmxlQnl0ZVB0cihtX2RhdGEuZ2V0
KCkpICsgbV9zdHJlYW1lZEJ5dGVzLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAg
ICBtX3N0cmVhbWVkQnl0ZXMgKz0gYnVmZmVyLnNpemUoKTsKIAogI2lmIEhBVkUoSU5DUkVNRU5U
QUxfUERGX0FQSVMpCiAgICAgLy8gS2VlcCBvdXIgcmFuZ2VzLWxvb2t1cC10YWJsZSBjb21wYWN0
IGJ5IGNvbnRpbnVvdXNseSB1cGRhdGluZyBpdHMgZmlyc3QgcmFuZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKaW5kZXggMWQ4NDQ4MDVmNGMxMGU5M2ZlZGNhYmRl
ZWMyMWRkMzVkZGY4ODIwMi4uZTRkNjJmNGJlYTliZmMyZmE4MGVmNGQ2ZTkwYzVjY2YwNjc5NGY2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTU0LDEy
ICs1NCwxMyBAQCBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBFbGVtZW50OwogY2xhc3Mg
RmxvYXRQb2ludDsKIGNsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJl
Y3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC0xNjAsNyArMTYxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVOYW1lKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFtIGRp
ZCByZWNlaXZlIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwg
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBs
dWctaW4gdGhhdCBhIHN0cmVhbSBoYXMgZmluaXNoZWQgbG9hZGluZy4KICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkgPSAwOwpAQCAtMTcz
LDcgKzE3NCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
TmFtZSkgPSAwOwogCiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gdGhhdCB0aGUgbWFudWFsIHN0
cmVhbSBkaWQgcmVjZWl2ZSBkYXRhLgotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRS
ZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXImKSA9IDA7CiAKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiB0aGF0IGEgc3RyZWFt
IGhhcyBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRG
aW5pc2hMb2FkaW5nKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAppbmRleCA1MzRkYTUyZDQ3ZDYyODUwZTIwNWZmOWU5OWMzMGIzN2Qz
YmNiYTEyLi4wMzQ0ZjRiZTIzYTQzNzY3MTk3Nzg5OTk3ZDc2MzdhMjAzMWI3ZWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTI3
LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgLy8gTmV0c2NhcGVQbHVnaW5TdHJlYW1Mb2FkZXJD
bGllbnQKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJl
c3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBp
bnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIqLCBjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZh
aWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyKikgb3ZlcnJpZGU7CiAKQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFBsdWdpblZpZXc6OlN0
cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29u
c3QgUgogICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZShtX3N0cmVhbUlELCByZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRl
TVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5h
bWUoKSk7CiB9CiAKLXZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3Ro
KQordm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyKiwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgbV9wbHVn
aW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURhdGEobV9zdHJlYW1JRCwgYnl0ZXMs
IGxlbmd0aCk7CisgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZURh
dGEobV9zdHJlYW1JRCwgYnVmZmVyKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRp
ZEZhaWwoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikgCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIG1f
cGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVh
bUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMs
IHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCi12b2lkIFBsdWdpblZpZXc6Om1h
bnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBieXRlcywgaW50IGxlbmd0aCkK
K3ZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYg
aXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX3BsdWdpbikKQEAgLTM4MiwxMSAr
MzgyLDExIEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogCiAgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQp
IHsKICAgICAgICAgQVNTRVJUKG1fbWFudWFsU3RyZWFtU3RhdGUgPT0gTWFudWFsU3RyZWFtU3Rh
dGU6Okhhc1JlY2VpdmVkUmVzcG9uc2UpOwotICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBw
ZW5kKGJ5dGVzLCBsZW5ndGgpOworICAgICAgICBtX21hbnVhbFN0cmVhbURhdGEuYXBwZW5kKGJ1
ZmZlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3BsdWdpbi0+bWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZURhdGEoYnl0ZXMsIGxlbmd0aCk7CisgICAgbV9wbHVnaW4tPm1hbnVhbFN0
cmVhbURpZFJlY2VpdmVEYXRhKGJ1ZmZlcik7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6bWFudWFs
TG9hZERpZEZpbmlzaExvYWRpbmcoKQpAQCAtMTE3MSw5ICsxMTcxLDkgQEAgdm9pZCBQbHVnaW5W
aWV3OjpyZWRlbGl2ZXJNYW51YWxTdHJlYW0oKQogCiAgICAgLy8gRGVsaXZlciB0aGUgZGF0YS4K
ICAgICBpZiAobV9tYW51YWxTdHJlYW1EYXRhKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyID0gbV9t
YW51YWxTdHJlYW1EYXRhLnRha2UoKTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50
IDogYnVmZmVyLmdldCgpKQotICAgICAgICAgICAgbWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGVs
ZW1lbnQuc2VnbWVudC0+ZGF0YSgpLCBlbGVtZW50LnNlZ21lbnQtPnNpemUoKSk7CisgICAgICAg
IG1fbWFudWFsU3RyZWFtRGF0YS50YWtlKCktPmZvckVhY2hTZWdtZW50QXNTaGFyZWRCdWZmZXIo
WyZdKGF1dG8mJiBidWZmZXIpIHsKKyAgICAgICAgICAgIG1hbnVhbExvYWREaWRSZWNlaXZlRGF0
YShidWZmZXIpOworICAgICAgICB9KTsKICAgICB9CiAKICAgICBpZiAobV9tYW51YWxTdHJlYW1T
dGF0ZSA9PSBNYW51YWxTdHJlYW1TdGF0ZTo6RmluaXNoZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZjY2MzEyYTgwYWNkMWUwMzUzMTBk
ZmFhM2E1ZjNhMTdiNzJhYWU1NS4uMjU2MTVjYjMwZjIyNjQ2MzkyNDQ0ODhmMmJkN2M0MTIyNzkw
NzliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0JlaW5nRGVzdHJveWVkKCkg
Y29uc3QgeyByZXR1cm4gIW1fcGx1Z2luIHx8IG1fcGx1Z2luLT5pc0JlaW5nRGVzdHJveWVkKCk7
IH0KIAogICAgIHZvaWQgbWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCBtYW51YWxMb2FkRGlkUmVjZWl2ZURhdGEo
Y29uc3QgdWludDhfdCogYnl0ZXMsIGludCBsZW5ndGgpOworICAgIHZvaWQgbWFudWFsTG9hZERp
ZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgbWFu
dWFsTG9hZERpZEZpbmlzaExvYWRpbmcoKTsKICAgICB2b2lkIG1hbnVhbExvYWREaWRGYWlsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcAppbmRleCBlZTQwZmI5NTg1ZTc5ZDg2YjNjZmQyZjU3OWVkNDZlNjFiOWVj
NjNlLi4zMTQ4MmViM2IzNjhkNzhhNjFhN2VjMWQyNGM1OTgxMGJjOTFlZDhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJgogICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwog
fQogCi12b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKQEAgLTgw
LDE0ICs4MCwxNCBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPgogICAgIGlmIChtX3dhaXRpbmdG
b3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKICAgICAgICAgaWYgKCFzdGQ6
OmhvbGRzX2FsdGVybmF0aXZlPFNoYXJlZEJ1ZmZlckJ1aWxkZXI+KG1fcmVzcG9uc2VEYXRhKSkK
ICAgICAgICAgICAgIG1fcmVzcG9uc2VEYXRhID0gU2hhcmVkQnVmZmVyQnVpbGRlcigpOwotICAg
ICAgICBzdGQ6OmdldDxTaGFyZWRCdWZmZXJCdWlsZGVyPihtX3Jlc3BvbnNlRGF0YSkuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CisgICAgICAgIHN0ZDo6Z2V0PFNoYXJlZEJ1ZmZlckJ1aWxkZXI+
KG1fcmVzcG9uc2VEYXRhKS5hcHBlbmQoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmIChtX2lzRG93bmxvYWQpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIu
Z2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRl
bnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckRvd25sb2FkVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIsIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICBlbHNlCi0g
ICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1
ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEg
eyBidWZmZXIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci5zaXplKCkpIH0sIG1fZmV0Y2hJ
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAt
MTM2LDE1ICsxMzYsMTUgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICB9KTsKIH0KIAot
dm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5r
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQordm9pZCBXZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAobV9pc0Rvd25sb2FkKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJEb3dubG9hZFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBkYXRhLCBzaXpl
IH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRG93bmxvYWRU
YXNrOjpEaWRSZWNlaXZlRGF0YSB7IGJ1ZmZlciwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVy
LnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZl
RGF0YSB7IHsgZGF0YSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2Zl
dGNoSWRlbnRpZmllcik7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyBidWZmZXIgLCBzdGF0aWNfY2Fz
dDxpbnQ2NF90PihidWZmZXIuc2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZv
aWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoQmxvYkxvYWRpbmco
KQpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVu
dDo6Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKQogICAgICAgICBpZiAobV9kaWRGaW5pc2gp
CiAgICAgICAgICAgICBkaWRGaW5pc2goKTsKICAgICB9LCBbdGhpc10oY29uc3QgU2hhcmVkQnVm
ZmVyQnVpbGRlciYgYnVmZmVyKSB7Ci0gICAgICAgIGRpZFJlY2VpdmVEYXRhKCpidWZmZXIuZ2V0
KCkpOworICAgICAgICBkaWRSZWNlaXZlRGF0YShidWZmZXIuY29weSgpLT5tYWtlQ29udGlndW91
cygpKTsKICAgICAgICAgaWYgKG1fZGlkRmluaXNoKQogICAgICAgICAgICAgZGlkRmluaXNoKCk7
CiAgICAgfSwgW3RoaXNdKFJlZjxGb3JtRGF0YT4mIGZvcm1EYXRhKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmgKaW5kZXggZTk4N2UxOWFjOGI3Mzg4NzFhYWQ4MmI0YjM4NTYy
OTY4YTJiNmM5Yy4uMDk0MDBkZjBjZTcyNWYzOWE4YjExZDkzNWUxNDU0ZTM5OWY1YTI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckZldGNoVGFza0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVE
YXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxXZWJDb3JlOjpGb3JtRGF0
YT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBmaW5hbDsKICAgICB2b2lkIGRpZEZpbmlzaCgpIGZpbmFsOwpAQCAtNjAsOCArNjAsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29udmVydEZldGNoVG9Eb3dubG9hZCgpIGZpbmFsOwogCiAg
ICAgdm9pZCBjbGVhbnVwKCk7Ci0gICAgCi0gICAgdm9pZCBkaWRSZWNlaXZlQmxvYkNodW5rKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7CisKKyAgICB2b2lkIGRpZFJlY2VpdmVCbG9iQ2h1
bmsoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCBkaWRGaW5pc2hCbG9i
TG9hZGluZygpOwogCiAgICAgc3RydWN0IEJsb2JMb2FkZXIgZmluYWwgOiBXZWJDb3JlOjpGZXRj
aExvYWRlckNsaWVudCB7CkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgLy8g
RmV0Y2hMb2FkZXJDbGllbnQgQVBJCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbCB7IH0KLSAgICAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgZmluYWwgeyBj
bGllbnQtPmRpZFJlY2VpdmVCbG9iQ2h1bmsoZGF0YSwgc2l6ZSk7IH0KKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIGRhdGEpIGZpbmFsIHsg
Y2xpZW50LT5kaWRSZWNlaXZlQmxvYkNodW5rKGRhdGEpOyB9CiAgICAgICAgIHZvaWQgZGlkRmFp
bChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBjbGllbnQtPmRp
ZEZhaWwoZXJyb3IpOyB9CiAgICAgICAgIHZvaWQgZGlkU3VjY2VlZCgpIGZpbmFsIHsgY2xpZW50
LT5kaWRGaW5pc2hCbG9iTG9hZGluZygpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDE0YTA4M2NhMjA3YTkwNjNjZjgwYjFlN2U5NjcwYTQ4N2NmNGQzOTkuLmVkNGY1
ZGU5ZDVlNTYxOGQ0MzI0NTUwODJmNWRhMTg4YWJmOWJmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMTE1MiwxMCArMTE1MiwxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpCiAgICAgd2ViUGFnZS0+ZGlkUmVw
bGFjZU11bHRpcGFydENvbnRlbnQobV9mcmFtZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhf
dCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRl
ZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQog
ewogICAgIGlmICghbV9wbHVnaW5WaWV3KQotICAgICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0
YSwgbGVuZ3RoKTsKKyAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRhdGEpOwogCiAgICAgLy8g
SWYgdGhlIGRvY3VtZW50IGlzIGEgc3RhbmQtYWxvbmUgbWVkaWEgZG9jdW1lbnQsIG5vdyBpcyB0
aGUgcmlnaHQgdGltZSB0byBjYW5jZWwgdGhlIFdlYktpdCBsb2FkLgogICAgIC8vIEZJWE1FOiBU
aGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlZCBhY3Jvc3MgYWxsIHBvcnRzLiA8aHR0cDovL3dlYmtp
dC5vcmcvYi80ODc2Mj4uCkBAIC0xMTc3LDcgKzExNzcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4
X3QqCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faGFzU2VudFJlc3BvbnNlVG9QbHVn
aW5WaWV3ID0gdHJ1ZTsKICAgICB9Ci0gICAgbV9wbHVnaW5WaWV3LT5tYW51YWxMb2FkRGlkUmVj
ZWl2ZURhdGEoZGF0YSwgbGVuZ3RoKTsKKyAgICBtX3BsdWdpblZpZXctPm1hbnVhbExvYWREaWRS
ZWNlaXZlRGF0YShkYXRhKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNo
ZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IGJiNTI5ZDNhZWM0ZTJjNzVmMWE3ZGU5MWIxMGI1NTgyZDQ1MjJiNDIuLjFkMzBi
YzM5MzgzYWZmZjJjYTljMjg3NTNkZDJkN2VjMmIyNjQ5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxSZXBs
YWNlTXVsdGlwYXJ0Q29udGVudCgpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFy
dENvbnRlbnQoKSBmaW5hbDsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIGZpbmFsOworICAgIHZvaWQgY29tbWl0
dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlciYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKikgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCBhMjA1
ZTAwMWNhNzE1ODIwOTEzYTgxYWU0YTgzNjUzMGY5YTBmNjQ4Li43MmUzNTU0YzhlMGFhNjkwYTZl
YzU3ODAxNzZmMTllMGI4ZDcwZDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViUHJldmlld0xvYWRlckNsaWVudDo6V2Vi
UHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHIKIAog
V2ViUHJldmlld0xvYWRlckNsaWVudDo6fldlYlByZXZpZXdMb2FkZXJDbGllbnQoKSA9IGRlZmF1
bHQ7CiAKLXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAg
IGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobV9wYWdlSUQp
OwogICAgIGlmICghd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmgKaW5kZXggMGRjMTY3ZTViN2JjM2IwM2VmMzkzMWVhYjM1NmM3ODI3OTI5NTI5ZS4uNjQ5YmM4
MzE5YzI3ODZmMDFkNjE3YzExMTk5ZGIwYzZjMDc3ZmE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29u
c3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnko
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDk0MmVkYzYyM2E0ZTY1M2JiMTg4YWVlMDUw
NjQ0YTNmNGEwMzJlODkuLmY4OWZmNzJhMGQzMWJlYzExZWY4MDI5N2VmYmE5MmMyYTdiYzY2YjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03
MDU3LDEyICs3MDU3LDEyIEBAIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFJlY2VpdmVS
ZXNwb25zZShXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kCiAgICAgaGFuZGxlci0+
dGFza0RpZFJlY2VpdmVSZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2UpOwogfQogCi12
b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVIYW5k
bGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJ
ZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEp
Cit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShXZWJVUkxTY2hlbWVI
YW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkm
IGRhdGEpCiB7CiAgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFu
ZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGhhbmRsZXIp
OwogCi0gICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBkYXRh
LnNpemUoKSwgZGF0YS5kYXRhKCkpOworICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0
YXNrSWRlbnRpZmllciwgZGF0YS5idWZmZXIoKSA/ICpkYXRhLmJ1ZmZlcigpIDogU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0Rp
ZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGE5NGI1YjlkN2ZlMzJmMjRhODZkYWFhZDQ0ODQyYjBjZGQwYWViMmYu
LjQ4ODY2NzA3YzQ2MTNkOWE3Y2QzNTIxNWRmY2E5MjNjNjk3OWJlYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE4NCw2ICsxODQsNyBAQCBuYW1l
c3BhY2UgSVBDIHsKIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9y
bURhdGFSZWZlcmVuY2U7CitjbGFzcyBTaGFyZWRCdWZmZXJDb3B5OwogfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xODk2LDcgKzE4OTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXJsU2No
ZW1lVGFza1dpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAg
IHZvaWQgdXJsU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJVUkxTY2hlbWVIYW5k
bGVySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2ViVVJM
U2NoZW1lSGFuZGxlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmll
ciB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAg
IHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJl
Y2VpdmVEYXRhKFdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6U2hhcmVkQnVmZmVy
Q29weSYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZENvbXBsZXRlKFdlYlVSTFNjaGVtZUhh
bmRsZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAgIHZvaWQgc2V0
SXNUYWtpbmdTbmFwc2hvdHNGb3JBcHBsaWNhdGlvblN1c3BlbnNpb24oYm9vbCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpp
bmRleCBiMjcyMjk0NzFlYWU4NmVlNTk4MTk4M2RkNTdiNWU3YTgyOTFjZDRiLi5iZGE1ZjUwYWRk
MjNhOTY3NDBlODlkNzMzZDc5YzE4N2YwNTJiZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTU2NCw3ICs1NjQs
NyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6
OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFVSTFNjaGVtZVRhc2tXaWxsUGVyZm9y
bVJlZGlyZWN0aW9uKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIgaGFuZGxl
cklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVySWRlbnRpZmllciB0YXNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkgLT4gKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBh
Y3R1YWxSZXF1ZXN0KSBBc3luYwogICAgIFVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rp
b24oV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cHJvcG9zZWRSZXF1ZXN0KQogICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllciBoYW5kbGVySWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQotICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0
YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNl
aXZlRGF0YShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIs
IElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQogICAgIFVSTFNjaGVtZVRhc2tEaWRDb21wbGV0
ZShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyIGhhbmRsZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiAKICAgICBTZXRJc1N1c3BlbmRlZChib29sIHN1c3Bl
bmRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCmluZGV4IDZkOGQwY2YyNzg0ZWQzMDU2NjI1
YzdmNmU4NDZhOTNhNzExY2JhY2QuLjYxNmVkYTA4ZjBiOGZjYWIyZDU3ZmM0NzUzMjkxMDdiODE1
Y2QyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcApAQCAtOTYsMTMgKzk2LDEzIEBAIHZv
aWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNv
cmU6OlJlc291cmNlTG9hZGVySWRlCiAgICAgdGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZl
RGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIHNp
emVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXIgdGFza0lkZW50aWZpZXIsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBhdXRv
KiB0YXNrID0gbV90YXNrcy5nZXQodGFza0lkZW50aWZpZXIpOwogICAgIGlmICghdGFzaykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoc2l6ZSwgZGF0YSk7Cisg
ICAgdGFzay0+ZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiB9CiAKIHZvaWQgV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5Ojp0YXNrRGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlm
aWVyIHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5LmgKaW5kZXggNThiZWNjMTdiNWQ4NTk4NzQ5ODg0ZDMwMjUxNjg5Y2NjYzE3Njkz
Zi4uYWIyMGJkNTczYWE0YWZjMTU4MDU5MGYyNzA0NjYzMDA2ODc3NDBlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC01OSw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGFza0RpZFBlcmZvcm1SZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2b2lkIHRhc2tEaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdm9pZCB0YXNrRGlkUmVjZWl2ZURhdGEo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEpOworICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB0
YXNrRGlkQ29tcGxldGUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCB0YXNrRGlkU3RvcExvYWRpbmcoV2Vi
VVJMU2NoZW1lVGFza1Byb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCmluZGV4IDM2MDZiYmRj
NjUyMTVkZGNhOTI2MTNhODEwN2RhYjFiMTFlY2I2NTYuLjllNzJkODRjOTdkZjZkMjk3MTRhODNj
NTFhYzE3NzYzZTVmYjY1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApAQCAtMTQwLDIxICsxNDAs
MjEgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJVUkxT
Y2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90
KiBkYXRhKQordm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBpZiAoIWhhc0xvYWRlcigpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29tcGxldGlvbkhhbmRsZXIp
IHsKICAgICAgICAgV0VCVVJMU0NIRU1FVEFTS1BST1hZX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZl
RGF0YTogUmVjZWl2ZWQgZGF0YSBkdXJpbmcgcmVzcG9uc2UgcHJvY2Vzc2luZywgcXVldWluZyBp
dC4iKTsKLSAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgZGF0YVZlY3RvciA9IFZlY3RvciB7IGRhdGEsIHNpemUgfV0gewotICAgICAgICAgICAg
ZGlkUmVjZWl2ZURhdGEoZGF0YVZlY3Rvci5zaXplKCksIGRhdGFWZWN0b3IuZGF0YSgpKTsKKyAg
ICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0
YSA9IFJlZiB7IGRhdGEgfV0geworICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YSk7CiAg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUmVmIHByb3RlY3RlZFRo
aXMgeyAqdGhpcyB9OwotICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgc2l6
ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKKyAgICBtX2NvcmVMb2Fk
ZXItPmRpZFJlY2VpdmVEYXRhKGRhdGEsIDAsIERhdGFQYXlsb2FkVHlwZTo6RGF0YVBheWxvYWRC
eXRlcyk7CiAgICAgcHJvY2Vzc05leHRQZW5kaW5nVGFzaygpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5o
CmluZGV4IDc1NTA4Nzk0MTgyMGZlZWZjNWQwMTI3MTU4YzA2NGNlMjU4YTA4MzUuLmVkOTFmMzhl
M2FkZDEzYmUxOWNiMjE3N2VkNDQ4ZmRkMmZhNzk1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCkBAIC0z
NCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBTaGFy
ZWRCdWZmZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTUsNyArNTYsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgZGlkQ29t
cGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogCiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
aWZpZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
UGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFu
ZGxlLmgKaW5kZXggYTI1NTYwYTEwYzI4ODJlMWFiZDE3ODQ1Njk0ODZlYTEzZWQ4OTZkNC4uMzI4
OWMyMzYyOWEwZGMzMWZjMGMxOTllZGYxMzI5N2JlZDYxYTE5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9QaW5nSGFuZGxlLmgKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9u
c2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIApAQCAtNzMs
NyArNzQsNyBAQCBwcml2YXRlOgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAg
ICBwaW5nTG9hZENvbXBsZXRlKHsgfSwgcmVzcG9uc2UpOwogICAgIH0KLSAgICB2b2lkIGRpZFJl
Y2VpdmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBSZWY8V2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiwgaW50KSBmaW5hbCB7IHBpbmdMb2FkQ29tcGxldGUoKTsgfQor
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBX
ZWJDb3JlOjpTaGFyZWRCdWZmZXImLCBpbnQpIGZpbmFsIHsgcGluZ0xvYWRDb21wbGV0ZSgpOyB9
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRl
KCk7IH0KICAgICB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwgeyBwaW5nTG9hZENvbXBsZXRlKGVy
cm9yKTsgfQogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGUqKSBmaW5hbCB7IHJldHVybiBtX3Nob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA5NTlkNzQ4YjU2YmUxMDc2YmQ5Nzc5
OTIyY2QzNTZkMjFhNjgxNzRlLi44ZGY5OTNmMmQ3NzViNmM5M2QyZThmMDk5MGY3MmY4NWY2MThl
NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTQ4LDEwICs0OCwxMiBAQCBjbGFz
cyBTZXNzaW9uSUQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTsKIGNsYXNzIENhY2hlZEZyYW1lOworY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cjsKIGNsYXNzIEhpc3RvcnlJdGVtOwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVz
b3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiB9CiAKIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+
IHsKQEAgLTE1MSw3ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFJlcGxhY2VNdWx0
aXBhcnRDb250ZW50KCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29u
dGVudCgpIGZpbmFsOwogCi0gICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgY29uc3QgdWludDhfdCosIGludCkgZmluYWw7CisgICAgdm9pZCBjb21taXR0ZWRM
b2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
JikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKSBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCmluZGV4IDQzZTYzZjQ1NjM0NWVjZjFjOTI0ZTViNzcyYTZmNTQxNzNh
OTE0MmIuLjg3YTVkNjU3ZjdiNzMzZDA3YzVkYjYwMWY2OTgxZjkwNDk3NzEzOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC05OTIsMTAgKzk5Miw5IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkKICNlbmRpZgogfQogCi12
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBhdXRv
IG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6KHZv
aWQqKWRhdGEgbGVuZ3RoOmxlbmd0aCBmcmVlV2hlbkRvbmU6Tk9dKTsKLSAgICBbZGF0YVNvdXJj
ZShsb2FkZXIpIF9yZWNlaXZlZERhdGE6bnNEYXRhLmdldCgpXTsKKyAgICBbZGF0YVNvdXJjZShs
b2FkZXIpIF9yZWNlaXZlZERhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CiB9CiAKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciogbG9hZGVyKQpAQCAtMjAxMiw3ICsyMDExLDcgQEAgUmVmUHRyPFdlYkNvcmU6Okxl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVQcmV2
aWV3TG8KICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBtX2ZpbGVQYXRoOwogICAgICAgICBS
ZXRhaW5QdHI8TlNGaWxlSGFuZGxlPiBtX2ZpbGVIYW5kbGU7CiAKLSAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImIGJ1ZmZlcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgYXV0
byBkYXRhQXJyYXkgPSBidWZmZXIuY3JlYXRlTlNEYXRhQXJyYXkoKTsKICAgICAgICAgICAgIGZv
ciAoTlNEYXRhICpkYXRhIGluIGRhdGFBcnJheS5nZXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDBlMDViMThkNjk2Mzk4MjhkNDMzYzQ2ZDc5
MjFjZjcwZGU3ZGY5ZDEuLjJhODc3MGRmODBiYjlmNzBjMTBiYjkxZjk1MjBkMWUxOWM4NTlkOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTc3
LDcgKzk3Nyw3IEBAIC0gKHZvaWQpX2NvbW1pdERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICBhdXRv
KiBkb2N1bWVudCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCk7CiAgICAgZG9jdW1l
bnQtPnNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhfcHJpdmF0ZS0+c2hvdWxkQ3JlYXRlUmVuZGVy
ZXJzKTsKIAotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPmNvbW1pdERhdGEoKGNvbnN0IHVpbnQ4X3QqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3Ro
XSk7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
Y29tbWl0RGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhKSk7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCBmYjI1ODNmZTk3MjY0YzczZWVi
MjNlYmI0ZDM5OTBiM2I4NGEwN2YzLi4xMjcwZTU3ZGQ5NWIwZDAwMDNiNWU1Njc3ZDQ3NDJhMTI1
NTJkODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC02NDEsOSArNjQxLDkg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2Fk
ZXIqKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgdWludDhfdCog
ZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExv
YWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewot
ICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOworICAgIGxvYWRlci0+Y29tbWl0
RGF0YShkYXRhKTsKIAogICAgIC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1l
ZGlhIGRvY3VtZW50LCBub3cgaXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQg
bG9hZC4KICAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFs
bCBwb3J0cy4gPGh0dHA6Ly93ZWJraXQub3JnL2IvNDg3NjI+LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggMDk1YjI1MzVhNjg3NTQ3YmQ3ODg0NmY5MDc2YWU2YzdkMDE2Mjk0OC4uNzky
NmZkMzY3MTgwOWU4Mzg0N2E0ODAzMWE4YjkwYzYzOGZhZjdlNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzdGFydERv
d25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkTmFtZSA9IFN0cmluZygpKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY29tbWl0dGVkTG9h
ZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IHVpbnQ4X3QqLCBpbnQpIG92ZXJyaWRl
OworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRMb2Fk
aW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHdpbGxD
aGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJlMGU2MjA0NmE2NDc2
YTFmMjUyZGU5OWU0ZjQ3MTAwN2JkYjk0YTUuLjhhNTk2OTI4OGJhZGI2Y2ExNjY0OTYwN2VlMzk0
N2E5ODUxOGI5YzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0xMi0yOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxq
eWFAYXBwbGUuY29tPgorCisgICAgICAgIFNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEoKSBpcyBzdGls
bCBkYW5nZXJvdXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNDcyNAorICAgICAgICByZGFyOi8vcHJvYmxlbS84Njk1NzIzMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
X0YpOgorCisyMDIxLTEyLTIyICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisK
KyAgICAgICAgbWFrZSBTaGFyZWRCdWZmZXI6OmNvcHkoKSByZXR1cm4gYSBjb250aWd1b3VzIFNo
YXJlZEJ1ZmZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM0NjIyCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzg2ODI5NTI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Rf
Rik6CisKIDIwMjEtMTItMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdW2ExMXldIFN0b3Agc2V0dGluZyBtYW5hZ2VzLWRlc2NlbmRh
bnRzIG9uIHdlYiBwcm9jZXNzIHJvb3Qgb2JqZWN0IHdpdGggQVRTUEkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZjEyYjlm
MDgzNjA1NTg5NGNkNjVhODIzZDVmZjZlMzRiOThhZDU5OC4uMDFiNmNlNDYxY2NkMzY2NjQ2NTM3
YTQ2Nzg2MDI5OGRmNTU4MDRlOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgdm9p
ZCBjaGVja0J1ZmZlcihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgs
IGNvbnN0IGNoYXIqCiB7CiAgICAgLy8gZXhwZWN0ZWQgaXMgbnVsbCB0ZXJtaW5hdGVkLCBidWZm
ZXIgaXMgbm90LgogICAgIHNpemVfdCBsZW5ndGggPSBzdHJsZW4oZXhwZWN0ZWQpOwotICAgIEVY
UEVDVF9FUShsZW5ndGgsIGJ1ZmZlckxlbmd0aCk7CisgICAgQVNTRVJUX0VRKGxlbmd0aCwgYnVm
ZmVyTGVuZ3RoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQogICAg
ICAgICBFWFBFQ1RfRVEoYnVmZmVyW2ldLCBleHBlY3RlZFtpXSk7CiB9CkBAIC0zMDMsNiArMzAz
LDI3IEBAIFRFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgcmVhZCkKICAgICBjaGVj
ayhidWlsZGVyLnRha2UoKSk7CiB9CiAKK1RFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVz
dCwgY29weUlzQ29udGlndW91cykKK3sKKyAgICBFWFBFQ1RfVFJVRShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgpLT5jb3B5KCktPmlzQ29udGlndW91cygpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCktPmNvcHkoKS0+aXNDb250aWd1b3VzKCkpOworICAg
IGNvbnN0IGNoYXIqIGNvbnN0IHNpbXBsZVRleHQgPSAiVGhpcyBpcyBhIHNpbXBsZSB0ZXN0LiI7
CisgICAgRVhQRUNUX1RSVUUoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKS0+Y29weSgpLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgRVhQRUNUX0ZBTFNF
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxl
VGV4dCkpLT5jb3B5KCktPmlzQ29udGlndW91cygpKTsKK30KKworVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCBleHRyYWN0RGF0YSkKK3sKKyAgICBjb25zdCBjaGFyKiBjb25zdCBz
aW1wbGVUZXh0ID0gIlRoaXMgaXMgYSBzaW1wbGUgdGVzdC4iOworICAgIGF1dG8gb3JpZ2luYWwg
PSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwor
ICAgIGF1dG8gY29weSA9IG9yaWdpbmFsLT5jb3B5KCk7CisgICAgYXV0byB2ZWN0b3IgPSBjb3B5
LT5leHRyYWN0RGF0YSgpOworICAgIEVYUEVDVF9UUlVFKGNvcHktPmlzRW1wdHkoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKG9yaWdpbmFsLT5pc0VtcHR5KCkpOworICAgIEFTU0VSVF9UUlVFKG9yaWdp
bmFsLT5oYXNPbmVTZWdtZW50KCkpOworICAgIEVYUEVDVF9HVChvcmlnaW5hbC0+YmVnaW4oKS0+
c2VnbWVudC0+c2l6ZSgpLCAwdSk7Cit9CisKICNpZiBFTkFCTEUoTUhUTUwpCiAvLyBTaGFyZWRC
dWZmZXJDaHVua1JlYWRlciB1bml0LXRlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+Cg==
</data>
<flag name="commit-queue"
          id="473858"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448491</attachid>
            <date>2022-01-06 05:45:46 -0800</date>
            <delta_ts>2022-01-06 08:36:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234713-20220107004544.patch</filename>
            <type>text/plain</type>
            <size>10783</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOThhYjgwZDU1MmUwZWEx
MDI5MGUxYTdhZThiMzcxY2VmODgzNmY3YS4uZDMwMTBkZDUxNTVjZTE2OGE2MWRkMzBmNWUyMWMy
YmRkNTE0YjYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTEyLTI3ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29udGVudCBGaWx0ZXJp
bmcgc2hvdWxkIGJlIHVzaW5nIFNoYXJlZEJ1ZmZlciBpbnN0ZWFkIG9mIGNvcHlpbmcgaXRzIGRh
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDcx
MworICAgICAgICByZGFyOi8vcHJvYmxlbS84Njk0NzQzMworCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgV2UgY2FuIGRpcmVjdGx5IGNvbnN0cnVjdCB0aGUg
TlNEYXRhIHVzZWQgYnkgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIKKyAgICAgICAgYW5k
IE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyIGZyb20gdGhlIFNoYXJlZEJ1ZmZlci4KKwor
ICAgICAgICBObyBjaGFuZ2UgaW4gb2JzZXJ2YWJsZSBiZWhhdmlvdXIuCisKKyAgICAgICAgKiBs
b2FkZXIvQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVy
Ojpjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvQ29udGVudEZp
bHRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9OZXR3
b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL05l
dHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXI6OmFkZERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW06CisgICAgICAgIChXZWJDb3Jl
OjpQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6YWRkRGF0YSk6CisgICAgICAgICogdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlcjo6YWRkRGF0YSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5o
OgorCiAyMDIxLTEyLTI4ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAg
ICAgICAgSGF2ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCBhbmQgcmVsYXRlZCBuZXR3b3JraW5n
IGFjdG9ycyB1c2UgU2hhcmVkQnVmZmVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0
ZXIuY3BwCmluZGV4IGEwOTgxYWRkNzk4NTMyYjk3YmFhNDA0MTI4YmEzODg5NmRhZjY4NGEuLjI4
OWYzMmE2MzcwZDNjZGM5NThkNjM2ZTU4NzBjZjc2M2UxMzczNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTE0NSwxNCArMTQ1LDE0IEBAIGJvb2wgQ29udGVu
dEZpbHRlcjo6Y29udGludWVBZnRlclJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uCiAgICAgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OkJsb2NrZWQ7CiB9CiAK
LWJvb2wgQ29udGVudEZpbHRlcjo6Y29udGludWVBZnRlckRhdGFSZWNlaXZlZChjb25zdCB1aW50
OF90KiBkYXRhLCBpbnQgbGVuZ3RoKQorYm9vbCBDb250ZW50RmlsdGVyOjpjb250aW51ZUFmdGVy
RGF0YVJlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBSZWY8Q29udGVu
dEZpbHRlckNsaWVudD4gcHJvdGVjdGVkQ2xpZW50IHsgbV9jbGllbnQgfTsKIAogICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpGaWx0ZXJpbmcpIHsKLSAgICAgICAgTE9HKENvbnRlbnRGaWx0ZXJp
bmcsICJDb250ZW50RmlsdGVyIHJlY2VpdmVkICVkIGJ5dGVzIG9mIGRhdGEgZnJvbSA8JXM+Llxu
IiwgbGVuZ3RoLCBtX21haW5SZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OwotICAgICAgICBmb3JFYWNoQ29udGVudEZpbHRlclVudGlsQmxvY2tlZChbZGF0YSwgbGVuZ3Ro
XShQbGF0Zm9ybUNvbnRlbnRGaWx0ZXImIGNvbnRlbnRGaWx0ZXIpIHsKLSAgICAgICAgICAgIGNv
bnRlbnRGaWx0ZXIuYWRkRGF0YShkYXRhLCBsZW5ndGgpOworICAgICAgICBMT0coQ29udGVudEZp
bHRlcmluZywgIkNvbnRlbnRGaWx0ZXIgcmVjZWl2ZWQgJXp1IGJ5dGVzIG9mIGRhdGEgZnJvbSA8
JXM+LlxuIiwgZGF0YS5zaXplKCksIG1fbWFpblJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSk7CisgICAgICAgIGZvckVhY2hDb250ZW50RmlsdGVyVW50aWxCbG9ja2VkKFtk
YXRhID0gUmVmIHsgZGF0YSB9XShhdXRvJiBjb250ZW50RmlsdGVyKSB7CisgICAgICAgICAgICBj
b250ZW50RmlsdGVyLmFkZERhdGEoZGF0YSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGlmICht
X3N0YXRlID09IFN0YXRlOjpBbGxvd2VkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVy
LmgKaW5kZXggOGI2ZGVmZmZhYjgwZjVkYWMyNTg3ZTM3MWMwMTg3OWI5ZjNmZGY3Ny4uNjBiNGRh
MWE5YjMzNjhjMmRmZWNmZjQyYjg5ZjM1NThlODMzMWMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29udGVudEZpbHRlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29u
dGludWVBZnRlcldpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJik7CiAgICAgYm9vbCBjb250aW51ZUFmdGVyUmVzcG9uc2VSZWNlaXZlZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgYm9vbCBjb250aW51ZUFmdGVyRGF0YVJlY2VpdmVk
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpOworICAgIGJvb2wgY29udGludWVBZnRl
ckRhdGFSZWNlaXZlZChjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICBib29sIGNvbnRpbnVlQWZ0
ZXJOb3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgc3RhdGljIGJvb2wgY29u
dGludWVBZnRlclN1YnN0aXR1dGVEYXRhUmVxdWVzdChjb25zdCBEb2N1bWVudExvYWRlciYgYWN0
aXZlTG9hZGVyLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKaW5kZXggNWU3N2E2OTdhODRlYWU5ZGFhOGViMTAyOTkxMGE3MDhh
MTI0ODllYS4uY2E2YTk0N2JlY2QzNTg2N2MyYTc4MTYwYjNkMjQwMjZkN2U1ZjM3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xMzI1LDcgKzEzMjUsNyBA
QCB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmIHJlc291
cmNlLCBjb25zdCBTaGFyZWRCdWZmZXImCiB2b2lkIERvY3VtZW50TG9hZGVyOjpkYXRhUmVjZWl2
ZWQoY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQotICAgIGlmIChtX2NvbnRlbnRGaWx0ZXIgJiYgIW1fY29udGVudEZpbHRlci0+Y29u
dGludWVBZnRlckRhdGFSZWNlaXZlZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKSkKKyAg
ICBpZiAobV9jb250ZW50RmlsdGVyICYmICFtX2NvbnRlbnRGaWx0ZXItPmNvbnRpbnVlQWZ0ZXJE
YXRhUmVjZWl2ZWQoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggOWU3MmU0
NGEyZWFjNGQ4ZWY3MzBiOTg3MWQwZWM1MDhlZDlmYWM0NC4uNDYyY2YzYjg3NDIzMzg1YmU4M2Ew
MDJlNDNmNzQ0Nzc5OTg3ZWU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1Db250ZW50RmlsdGVyLmgKQEAgLTI2LDE1ICsyNiwxNyBAQAogI2lmbmRlZiBQbGF0Zm9y
bUNvbnRlbnRGaWx0ZXJfaAogI2RlZmluZSBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXJfaAogCisjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKK2NsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotY2xhc3MgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgUGxhdGZv
cm1Db250ZW50RmlsdGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTU0LDcg
KzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3JtQ29udGVudEZpbHRlcigpID0g
ZGVmYXVsdDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkRGF0YShjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgbGVuZ3RoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBmaW5pc2hlZEFkZGluZ0RhdGEoKSA9IDA7CiAgICAgdmlydHVhbCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gcmVwbGFjZW1lbnREYXRhKCkgY29uc3QgPSAwOwogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZpbHRlci5oCmluZGV4IGNiZTg3NzFh
NDVkODYyY2I1YWIwNWVjYTM5OTkyN2UwNzgzOGY1NDAuLjEyNTMxOWJjYjM4ZTcxYmE3OTVhNmFm
ZDJkZDEzZmJkMTlhMmQzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL05ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0ZXIuaApAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lkIGFk
ZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNo
ZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTmV0d29ya0V4dGVuc2lvbkNvbnRlbnRGaWx0
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29u
dGVudEZpbHRlci5tbQppbmRleCAyZWYyNzAxZmU2NzhiZjliOTJkYjIxMmJiZWE1YzkxNWEzZmMz
YTJmLi5mODc3OTdjY2Q1MGI5YWI1ZWE0OGMyNTFlNDJmMDBiNWZiZjRmYWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5zaW9uQ29udGVudEZp
bHRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9OZXR3b3JrRXh0ZW5z
aW9uQ29udGVudEZpbHRlci5tbQpAQCAtMTQ1LDEyICsxNDUsMTIgQEAgdm9pZCBOZXR3b3JrRXh0
ZW5zaW9uQ29udGVudEZpbHRlcjo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXMKICAgICBzZW1hcGhvcmUud2FpdCgpOwogfQogCi12b2lkIE5ldHdvcmtFeHRlbnNp
b25Db250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgp
Cit2b2lkIE5ldHdvcmtFeHRlbnNpb25Db250ZW50RmlsdGVyOjphZGREYXRhKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb3BpZWREYXRhIHsgW05T
RGF0YSBkYXRhV2l0aEJ5dGVzOih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGhdIH07CisgICAgYXV0
byBuc0RhdGEgPSBkYXRhLmNyZWF0ZU5TRGF0YSgpOwogCiAgICAgQmluYXJ5U2VtYXBob3JlIHNl
bWFwaG9yZTsKLSAgICBbbV9uZUZpbHRlclNvdXJjZSByZWNlaXZlZERhdGE6Y29waWVkRGF0YS5n
ZXQoKSBkZWNpc2lvbkhhbmRsZXI6W3RoaXMsICZzZW1hcGhvcmVdKE5FRmlsdGVyU291cmNlU3Rh
dHVzIHN0YXR1cywgTlNEaWN0aW9uYXJ5ICpkZWNpc2lvbkluZm8pIHsKKyAgICBbbV9uZUZpbHRl
clNvdXJjZSByZWNlaXZlZERhdGE6bnNEYXRhLmdldCgpIGRlY2lzaW9uSGFuZGxlcjpbdGhpcywg
JnNlbWFwaG9yZV0oTkVGaWx0ZXJTb3VyY2VTdGF0dXMgc3RhdHVzLCBOU0RpY3Rpb25hcnkgKmRl
Y2lzaW9uSW5mbykgewogICAgICAgICBoYW5kbGVEZWNpc2lvbihzdGF0dXMsIHJlcGxhY2VtZW50
RGF0YUZyb21EZWNpc2lvbkluZm8oZGVjaXNpb25JbmZvKSk7CiAgICAgICAgIHNlbWFwaG9yZS5z
aWduYWwoKTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5oCmluZGV4IDY3OWFlOTMy
OTUxN2UxZjM5NDNiYTU3NjJhYzhmNTZlODYwYzhjMjUuLmQ1ZmExMzMwYjE2MmNjY2NlMjJlOTQ3
NTg2MTVhNmUwMTEyMmQwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaApAQCAtNDMsNyAr
NDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCByZXNw
b25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGFkZERhdGEoY29uc3QgdWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBhZGREYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZmlu
aXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7CiAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IHJlcGxhY2VtZW50RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bh
cmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KaW5kZXggMWM5NjA0NzE2YjQy
NjkzZDVlNDZjMmUyM2U5NDFkYTAwYzgzZTRkZS4uYTY1MTE1Y2ViMTIyMjM2NzdmMDlhNGEzZGE5
OWI0YWM3MjY4ZGYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
UGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIubW0KQEAgLTk0LDEwICs5
NCwxMCBAQCB2b2lkIFBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjpyZXNwb25zZVJlY2Vp
dmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlcwogICAgIHVwZGF0ZUZpbHRlclN0YXRlKCk7
CiB9CiAKLXZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3Qg
dWludDhfdCogZGF0YSwgaW50IGxlbmd0aCkKK3ZvaWQgUGFyZW50YWxDb250cm9sc0NvbnRlbnRG
aWx0ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIEFTU0VSVCgh
W21fcmVwbGFjZW1lbnREYXRhIGxlbmd0aF0pOwotICAgIG1fcmVwbGFjZW1lbnREYXRhID0gW21f
d2ViRmlsdGVyRXZhbHVhdG9yIGFkZERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzTm9Db3B5Oih2
b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXV07CisgICAgbV9yZXBsYWNl
bWVudERhdGEgPSBbbV93ZWJGaWx0ZXJFdmFsdWF0b3IgYWRkRGF0YTpkYXRhLmNyZWF0ZU5TRGF0
YSgpLmdldCgpXTsKICAgICB1cGRhdGVGaWx0ZXJTdGF0ZSgpOwogICAgIEFTU0VSVChuZWVkc01v
cmVEYXRhKCkgfHwgW21fcmVwbGFjZW1lbnREYXRhIGxlbmd0aF0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcAppbmRleCAwNTlmM2EzODZiNmNmNWZh
NzliM2MxODk3MDE1MzEzZjdjZGI0ZWYyLi4xZGUyNTNjOTJiMWI4MWU3MmFiNzBmOWJiNTY4ZDQx
ZmRlMzc0ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50
RmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVy
LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OnJlc3BvbnNl
UmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiAgICAgbWF5YmVEZXRlcm1pbmVTdGF0
dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSk7CiB9CiAKLXZvaWQgTW9ja0NvbnRlbnRG
aWx0ZXI6OmFkZERhdGEoY29uc3QgdWludDhfdCosIGludCkKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0
ZXI6OmFkZERhdGEoY29uc3QgU2hhcmVkQnVmZmVyJikKIHsKICAgICBtYXliZURldGVybWluZVN0
YXR1cyhEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGEpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4IDYzNWFjODRiZTc5Mzg0N2FhNTcyMTNkMDFm
ZmMxZTc0Zjc2Yjc1OTMuLmI4Mzk3YjMwZDhkODViN2JmZmIzNjI1NDY2ZjA2ODg4YzE4MjE3ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmgKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBh
ZGREYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgYWRkRGF0YShjb25zdCBTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlz
aGVkQWRkaW5nRGF0YSgpIG92ZXJyaWRlOwogICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiByZXBsYWNlbWVudERhdGEoKSBjb25zdCBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVOVF9G
SUxURVJJTkcpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>