<?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>172017</bug_id>
          
          <creation_ts>2017-05-11 21:22:18 -0700</creation_ts>
          <short_desc>Stop using PassRefPtr under WebKit2/Shared</short_desc>
          <delta_ts>2017-05-12 07:33:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1307756</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 21:22:18 -0700</bug_when>
    <thetext>Sop using PassRefPtr under WebKit2/Shared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307757</commentid>
    <comment_count>1</comment_count>
      <attachid>309861</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 21:24:16 -0700</bug_when>
    <thetext>Created attachment 309861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307759</commentid>
    <comment_count>2</comment_count>
      <attachid>309862</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 21:34:56 -0700</bug_when>
    <thetext>Created attachment 309862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307763</commentid>
    <comment_count>3</comment_count>
      <attachid>309866</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 21:46:07 -0700</bug_when>
    <thetext>Created attachment 309866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307764</commentid>
    <comment_count>4</comment_count>
      <attachid>309867</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 21:50:19 -0700</bug_when>
    <thetext>Created attachment 309867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307767</commentid>
    <comment_count>5</comment_count>
      <attachid>309868</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 22:05:09 -0700</bug_when>
    <thetext>Created attachment 309868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307768</commentid>
    <comment_count>6</comment_count>
      <attachid>309869</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-11 22:10:39 -0700</bug_when>
    <thetext>Created attachment 309869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307812</commentid>
    <comment_count>7</comment_count>
      <attachid>309869</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-05-12 00:47:37 -0700</bug_when>
    <thetext>Comment on attachment 309869
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307866</commentid>
    <comment_count>8</comment_count>
      <attachid>309869</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-12 07:33:19 -0700</bug_when>
    <thetext>Comment on attachment 309869
Patch

Clearing flags on attachment: 309869

Committed r216764: &lt;http://trac.webkit.org/changeset/216764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307867</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-12 07:33:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309861</attachid>
            <date>2017-05-11 21:24:16 -0700</date>
            <delta_ts>2017-05-11 21:34:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172017-20170511212415.patch</filename>
            <type>text/plain</type>
            <size>40651</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWVlZTcyZjIzZWM0NmM4
NzdmYmI1YWE2M2FiN2Q0YjViY2EwZDI3YS4uMzUwOGMxMTIzOGUwMmNjOGU3N2NmZmMyZTIzYzU4
NTc3MDNlNDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTA1LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVm
UHRyIHVuZGVyIFdlYktpdDIvU2hhcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzIwMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHA6CisgICAgICAg
IChBUEk6OkRpY3Rpb25hcnk6OmFkZCk6CisgICAgICAgIChBUEk6OkRpY3Rpb25hcnk6OnNldCk6
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElTZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyk6CisgICAgICAgIChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUp
OgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAg
ICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1No
YXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6UHJveHlpbmdSZWZQdHI6OlByb3h5aW5n
UmVmUHRyKToKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLmg6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3Vy
Y2U6OldlYkFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgICogU2hhcmVkL0FzeW5jUmVxdWVzdC5o
OgorICAgICAgICAoV2ViS2l0OjpBc3luY1JlcXVlc3RNYXA6OmFkZCk6CisgICAgICAgICogU2hh
cmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKiBTaGFy
ZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVU
aWxlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6Y3JlYXRlVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAg
ICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAg
ICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmg6CisgICAg
ICAgICogU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNp
dGVkTGlua1RhYmxlOjpzZXRTaGFyZWRNZW1vcnkpOgorICAgICAgICAqIFNoYXJlZC9WaXNpdGVk
TGlua1RhYmxlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U25hcHNob3QpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbnRl
eHRNZW51SXRlbS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmg6
CisgICAgICAgICogU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlckxheWVy
OjpjcmVhdGVBcnJheUZyb21MYXllckxpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJM
YXllcjo6V2ViUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJMYXllci5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlck9i
amVjdDo6V2ViUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUmVuZGVyT2JqZWN0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlOjpyZXNpemVUYWJsZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFibGUpOgor
CiAyMDE3LTA1LTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOi4uLl0gZG9lc24ndCB3b3Jr
IGZvciBJbmRleGVkREIgaWYgdGhlIGRhdGEgc3RvcmUgaGFzIGEgY3VzdG9tIElEQiBwYXRoLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHAKaW5kZXggODk0ZTk4
ZGQxMjI1ZDQ4MDVlOTcwYjZkZTkyNWMwYmU3NzlhMGRlOS4uNGZiOTk1MmZkNjkzYTJmMTY5NTlm
YWUzZWE1NzE0NWFjMzk5MWM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9BUElEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURp
Y3Rpb25hcnkuY3BwCkBAIC02NCwxNSArNjQsMTUgQEAgUmVmPEFycmF5PiBEaWN0aW9uYXJ5Ojpr
ZXlzKCkgY29uc3QKICAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5cykp
OwogfQogCi1ib29sIERpY3Rpb25hcnk6OmFkZChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBQYXNz
UmVmUHRyPEFQSTo6T2JqZWN0PiBpdGVtKQorYm9vbCBEaWN0aW9uYXJ5OjphZGQoY29uc3QgV1RG
OjpTdHJpbmcmIGtleSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYmIGl0ZW0pCiB7Ci0gICAgTWFwVHlw
ZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGl0ZW0pOworICAgIE1hcFR5cGU6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBXVEZNb3ZlKGl0ZW0pKTsKICAgICBy
ZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiB9CiAKLWJvb2wgRGljdGlvbmFyeTo6c2V0KGNvbnN0
IFdURjo6U3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8QVBJOjpPYmplY3Q+IGl0ZW0pCitib29sIERp
Y3Rpb25hcnk6OnNldChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBSZWZQdHI8QVBJOjpPYmplY3Q+
JiYgaXRlbSkKIHsKLSAgICBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuc2V0KGtl
eSwgaXRlbSk7CisgICAgTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLnNldChrZXks
IFdURk1vdmUoaXRlbSkpOwogICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURpY3Rpb25hcnkuaAppbmRleCA1MDU5OTEyOWE4Y2Fk
ZmE2ODg4NzhkMGFmMTFjZmJkZmY0MTBhOWIzLi5mY2JhNzIzODE3NjY5NzAwN2I3ZmRmYWE0YjMx
ODU5ZjcxOWQzMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURp
Y3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURpY3Rpb25hcnku
aApAQCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8QXJyYXk+IGtleXMoKSBjb25z
dDsKIAotICAgIGJvb2wgYWRkKGNvbnN0IFdURjo6U3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8T2Jq
ZWN0Pik7Ci0gICAgYm9vbCBzZXQoY29uc3QgV1RGOjpTdHJpbmcmIGtleSwgUGFzc1JlZlB0cjxP
YmplY3Q+KTsKKyAgICBib29sIGFkZChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBSZWZQdHI8T2Jq
ZWN0PiYmKTsKKyAgICBib29sIHNldChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBSZWZQdHI8T2Jq
ZWN0PiYmKTsKICAgICB2b2lkIHJlbW92ZShjb25zdCBXVEY6OlN0cmluZyYga2V5KTsKIAogICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmgKaW5kZXggODkxN2M2NzA0OTA0
ZDM3Zjg0YjgzMTViOTMzOTlkZjJkZTc0ZDRjNS4uYjM4OTNhMTU4ZDc4ZGZiY2YyYTdmYmE0YTQ4
Mzg5NzQ2NDY2NzljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElT
ZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VjdXJp
dHlPcmlnaW4uaApAQCAtMjcsMzIgKzI3LDMyIEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFz
cyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OlNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gY3JlYXRlRnJvbVN0cmluZyhjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAg
IHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgV1RGOjpT
dHJpbmcmIHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBjcmVhdGUoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc3RyaW5nKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBwcm90
b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBv
cnQpCisgICAgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6U3Ry
aW5nJiBwcm90b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+IHBvcnQpCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUocHJvdG9jb2wsIGhvc3QsIHBvcnQpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQorICAgIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKSk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fc2VjdXJpdHlPcmlnaW47IH0KKyAgICBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBt
X3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU2VjdXJpdHlPcmlnaW4o
UGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCi0gICAg
ICAgIDogbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKKyAgICBTZWN1cml0eU9yaWdp
bihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCisgICAgICAg
IDogbV9zZWN1cml0eU9yaWdpbihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICB7CiAgICAg
fQogCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKKyAgICBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApp
bmRleCA2NTY5ZDRkNGNlOTIxMjkxNDlmMTlkNDhlMDQ0OWJlY2FiYThhOGRhLi4xY2ZhZTRhMjQ4
YzUzN2U5OGY3MWEzMjk3N2NjM2IwZWRhZTNhNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTM2LDkgKzM2LDkg
QEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVh
dGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRW
YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKFJlZlB0
cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2VyaWFsaXplZFZhbHVlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNl
cmlhbGl6ZWRWYWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUoV1RGTW92ZShzZXJpYWxpemVkVmFsdWUpKSk7CiAgICAgfQogICAgIAogICAg
IHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTY4
LDggKzY4LDggQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVl
LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUpCi0gICAgICAgIDogbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUoc2VyaWFsaXplZFNj
cmlwdFZhbHVlKQorICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKKyAg
ICAgICAgOiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
U2hhcmVkQVBJQ2FzdC5oCmluZGV4IDMzZTY1Mjg3OWNkODYwMjZmYzQwYWE1YjZjMTkxNWE5N2Yy
NTFkNmUuLmIyNzE1M2E2NmM1MzQ0NTEyYWQyZDYxNmQyZDMzNjM5ODM5MDc0YTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKQEAgLTEzNiw3ICsx
MzYsNyBAQCBhdXRvIHRvSW1wbChUIHQpIC0+IEltcGxUeXBlKgogdGVtcGxhdGU8dHlwZW5hbWUg
SW1wbFR5cGUsIHR5cGVuYW1lIEFQSVR5cGUgPSB0eXBlbmFtZSBJbXBsVHlwZUluZm88SW1wbFR5
cGU+OjpBUElUeXBlPgogY2xhc3MgUHJveHlpbmdSZWZQdHIgewogcHVibGljOgotICAgIFByb3h5
aW5nUmVmUHRyKFBhc3NSZWZQdHI8SW1wbFR5cGU+IGltcGwpCisgICAgUHJveHlpbmdSZWZQdHIo
UmVmUHRyPEltcGxUeXBlPiYmIGltcGwpCiAgICAgICAgIDogbV9pbXBsKGltcGwpCiAgICAgewog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlUmVz
b3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UuaApp
bmRleCAxZWI5MjY0YjNlZmQ4NzU3OTNlNWJmYTRkOWU0OGE3ZjliZjU2OTdjLi45Y2QxYzFjNDI3
OWNkMTYxYWI5ZWQ3Njk4M2FkMWQxYmM4NTE4YjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5oCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgQVBJIHsK
QEAgLTQ5LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYkFyY2hpdmVSZXNvdXJj
ZSgpOwogCiAgICAgc3RhdGljIFJlZjxXZWJBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShBUEk6OkRh
dGEqLCBjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmcpOwotICAgIHN0YXRpYyBSZWY8V2ViQXJjaGl2ZVJlc291cmNlPiBj
cmVhdGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U+KTsKKyAgICBzdGF0aWMg
UmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxXZWJDb3JlOjpBcmNoaXZlUmVz
b3VyY2U+JiYpOwogCiAgICAgUmVmPEFQSTo6RGF0YT4gZGF0YSgpOwogICAgIFN0cmluZyBVUkwo
KTsKQEAgLTYwLDcgKzU5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYkFyY2hpdmVS
ZXNvdXJjZShBUEk6OkRhdGEqLCBjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3RyaW5nJiBNSU1F
VHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcpOwotICAgIFdlYkFyY2hpdmVSZXNvdXJj
ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4pOworICAgIFdlYkFyY2hpdmVS
ZXNvdXJjZShSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPiYmKTsKIAogICAgIFJlZlB0
cjxXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U+IG1fYXJjaGl2ZVJlc291cmNlOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0gYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCmluZGV4IDlhNDU5
YjZmNWYxYTNjMjg3NGRjNmI0MzY3NzgyMzU1ZGUyMTBlMzMuLmIxYzUyZDc2NWE1Zjc3ODJlZTE5
MjcwYWE3MjI3NGE0ZmMwNzllZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElXZWJBcmNoaXZlUmVzb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdl
YkFyY2hpdmVSZXNvdXJjZS5tbQpAQCAtNDIsOSArNDIsOSBAQCBSZWY8V2ViQXJjaGl2ZVJlc291
cmNlPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShBUEk6OkRhdGEqIGRhdGEsIGNvbnN0IFN0
cmluZwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFyY2hpdmVSZXNvdXJjZShkYXRhLCBV
UkwsIE1JTUVUeXBlLCB0ZXh0RW5jb2RpbmcpKTsKIH0KIAotUmVmPFdlYkFyY2hpdmVSZXNvdXJj
ZT4gV2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3VyY2U+
IGFyY2hpdmVSZXNvdXJjZSkKK1JlZjxXZWJBcmNoaXZlUmVzb3VyY2U+IFdlYkFyY2hpdmVSZXNv
dXJjZTo6Y3JlYXRlKFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+JiYgYXJjaGl2ZVJlc291cmNlKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFyY2hpdmVSZXNvdXJjZShhcmNoaXZlUmVz
b3VyY2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJBcmNoaXZlUmVzb3VyY2UoV1RG
TW92ZShhcmNoaXZlUmVzb3VyY2UpKSk7CiB9CiAKIFdlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJj
aGl2ZVJlc291cmNlKEFQSTo6RGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKQpAQCAtNTIsOCArNTIs
OCBAQCBXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShBUEk6OkRhdGEqIGRh
dGEsIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdAogewogfQogCi1XZWJBcmNoaXZlUmVzb3VyY2U6
OldlYkFyY2hpdmVSZXNvdXJjZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gYXJjaGl2ZVJl
c291cmNlKQotICAgIDogbV9hcmNoaXZlUmVzb3VyY2UoYXJjaGl2ZVJlc291cmNlKQorV2ViQXJj
aGl2ZVJlc291cmNlOjpXZWJBcmNoaXZlUmVzb3VyY2UoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4m
JiBhcmNoaXZlUmVzb3VyY2UpCisgICAgOiBtX2FyY2hpdmVSZXNvdXJjZShXVEZNb3ZlKGFyY2hp
dmVSZXNvdXJjZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
c3luY1JlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3QuaAppbmRl
eCA1ZjMyN2M0OTY5ZWNlYjg5OWE4ZWRlMGNlOWUwZmMzMTU3ODdiNzljLi4wYzRhMGEwYzQxM2Iw
YTFjM2JlOWVlZjVjNzc1YmNmMTIzNTViOTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQXN5bmNSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jUmVx
dWVzdC5oCkBAIC0yOSw4ICsyOSw4IEBACiAKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKQEAgLTEyNiw5ICsxMjYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqcmVxdWVzdC5sZWFrUmVmKCkpOwogICAgIH0KIAotICAgIHZvaWQgYWRkKHVpbnQ2
NF90IHJlcXVlc3RJRCwgUGFzc1JlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QpCisgICAgdm9p
ZCBhZGQodWludDY0X3QgcmVxdWVzdElELCBSZWZQdHI8QXN5bmNSZXF1ZXN0PiYmIHJlcXVlc3Qp
CiAgICAgewotICAgICAgICBtX3JlcXVlc3RNYXAuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdCk7Cisg
ICAgICAgIG1fcmVxdWVzdE1hcC5hZGQocmVxdWVzdElELCBXVEZNb3ZlKHJlcXVlc3QpKTsKICAg
ICB9CiAKICAgICB2b2lkIGNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24u
Y3BwCmluZGV4IGZiNWUwNGYwNTZjNzE1ZDc3MWIwMjUxNGM2ZTIwZTcwNDBiZTcyNDAuLmZjNzRi
NjAxNzNjNTUyNTkwYjU0ZTM0MGM2NmFlMWZhMzY4NDU3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhT
YW5kYm94RXh0ZW5zaW9uLmNwcApAQCAtMzAsOSArMzAsOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJsb2JEYXRh
RmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFz
c1JlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBzYW5kYm94RXh0ZW5zaW9uKQorQmxvYkRhdGFGaWxl
UmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhT
YW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNp
b24+JiYgc2FuZGJveEV4dGVuc2lvbikKICAgICA6IEJsb2JEYXRhRmlsZVJlZmVyZW5jZShwYXRo
KQotICAgICwgbV9zYW5kYm94RXh0ZW5zaW9uKHNhbmRib3hFeHRlbnNpb24pCisgICAgLCBtX3Nh
bmRib3hFeHRlbnNpb24oV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5k
Ym94RXh0ZW5zaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaAppbmRleCA3YWU4ZDJhNmY1NGE0ZDk1OGJlYTc2YWM3
MDQzMDRmYjE2ZTI1YTkxLi43NWE1ZDRkMGNiYmVjMDg1YWZkZGIzOGZlYmI1MzNlNzM2NDA2MzI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
V2l0aFNhbmRib3hFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaApAQCAtMzQsMTMgKzM0LDEzIEBA
IGNsYXNzIFNhbmRib3hFeHRlbnNpb247CiAKIGNsYXNzIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdp
dGhTYW5kYm94RXh0ZW5zaW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJl
ZmVyZW5jZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4g
c2FuZGJveEV4dGVuc2lvbikKKyAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2Fu
ZGJveEV4dGVuc2lvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2JE
YXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKHBhdGgsIHNhbmRib3hFeHRlbnNp
b24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNl
V2l0aFNhbmRib3hFeHRlbnNpb24ocGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKSkpOwog
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4p
OworICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgcGF0aCwgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYpOwogICAgIHZpcnR1YWwgfkJs
b2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKCk7CiAKICAgICB2b2lkIHBy
ZXBhcmVGb3JGaWxlQWNjZXNzKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5jcHAKaW5kZXggNzQwY2VlMDkzMWY4ZDg1OGZlOGEzZDcyYzMwMmYyZTQ5MWUy
ZmI3NC4uNDA0MDU0MjBjZjc1MDE5NTUzY2QwMTU0MzU0NTY4NTdkMGQxMGFiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApAQCAtNTEsMTIgKzUxLDEyIEBAIHZv
aWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpzd2FwQnVmZmVycyhUZXh0dXJlTWFwcGVy
JiB0ZXh0dXJlTWFwcGVyKQogICAgIG1fc3VyZmFjZSA9IG51bGxwdHI7CiB9CiAKLXZvaWQgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpzZXRCYWNrQnVmZmVyKGNvbnN0IEludFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBQYXNzUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4gYnVmZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQordm9pZCBDb29yZGluYXRl
ZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZmZXIoY29uc3QgSW50UmVjdCYgdGlsZVJlY3Qs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+JiYg
YnVmZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIG1fc291cmNlUmVjdCA9IHNv
dXJjZVJlY3Q7CiAgICAgbV90aWxlUmVjdCA9IHRpbGVSZWN0OwogICAgIG1fc3VyZmFjZU9mZnNl
dCA9IG9mZnNldDsKLSAgICBtX3N1cmZhY2UgPSBidWZmZXI7CisgICAgbV9zdXJmYWNlID0gV1RG
TW92ZShidWZmZXIpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjcmVhdGVU
aWxlKHVpbnQzMl90IGlkLCBmbG9hdCBzY2FsZSkKQEAgLTc3LDExICs3NywxMSBAQCB2b2lkIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlOjpyZW1vdmVBbGxUaWxlcygpCiAgICAgICAgIG1fdGlsZXNU
b1JlbW92ZS5hZGQoa2V5KTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dXBk
YXRlVGlsZSh1aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgdGlsZVJlY3QsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBiYWNrQnVmZmVy
LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6
dXBkYXRlVGlsZSh1aW50MzJfdCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgdGlsZVJlY3QsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+JiYgYmFja0J1ZmZl
ciwgY29uc3QgSW50UG9pbnQmIG9mZnNldCkKIHsKICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZVRpbGVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90aWxlcy5maW5kKGlkKTsKICAgICBBU1NFUlQoaXQg
IT0gbV90aWxlcy5lbmQoKSk7Ci0gICAgaXQtPnZhbHVlLnNldEJhY2tCdWZmZXIodGlsZVJlY3Qs
IHNvdXJjZVJlY3QsIGJhY2tCdWZmZXIsIG9mZnNldCk7CisgICAgaXQtPnZhbHVlLnNldEJhY2tC
dWZmZXIodGlsZVJlY3QsIHNvdXJjZVJlY3QsIFdURk1vdmUoYmFja0J1ZmZlciksIG9mZnNldCk7
CiB9CiAKIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6dGV4
dHVyZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAppbmRleCAx
NjZjMGExYzdkZThlZGFmOTA4NDhlNjc0OTVkNDBkMmRkMDk3OTY3Li4xYjkzMmJiNGRiZjA2OWZh
NzZmY2I2NzMzYjI1NzA3Y2MzYTk3NjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgaW5saW5lIGZsb2F0IHNj
YWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQogICAgIHZvaWQgc3dhcEJ1ZmZlcnMoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlciYpOwotICAgIHZvaWQgc2V0QmFja0J1ZmZlcihjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7
CisgICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4mJiBi
dWZmZXIsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4gbV9zdXJmYWNlOwpAQCAtNjAsNyArNjAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwgZmxvYXQpOwog
ICAgIHZvaWQgcmVtb3ZlVGlsZSh1aW50MzJfdCB0aWxlSUQpOwogICAgIHZvaWQgcmVtb3ZlQWxs
VGlsZXMoKTsKLSAgICB2b2lkIHVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2
b2lkIHVwZGF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFJlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZh
Y2U+JiYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgc3RhdGljIFJlZjxDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZSk7IH0KICAgICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25zKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXImKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4g
dGV4dHVyZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHAKaW5kZXggNzYxNWYwOTFkZjM3M2M3YWU4YjU4Nzk1OWIxNGJmZmExNjE5ODdl
NS4uYjkxYmFhMDllNDk3ZGY2Yjg0YmNhMTMzNDdjMTFhOTdiMTNhZDNlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC00MjcsMTAgKzQyNywxMCBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1VwZGF0ZUF0bGFzZXMoY29uc3QgQ29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlJgogICAgICAgICBjcmVhdGVVcGRhdGVBdGxhcyhhdGxhcy5m
aXJzdCwgYXRsYXMuc2Vjb25kKTsKIH0KIAotdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OmNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0
ZWRTdXJmYWNlPiBzdXJmYWNlKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0
ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+
JiYgc3VyZmFjZSkKIHsKICAgICBBU1NFUlQoIW1fc3VyZmFjZXMuY29udGFpbnMoYXRsYXNJRCkp
OwotICAgIG1fc3VyZmFjZXMuYWRkKGF0bGFzSUQsIHN1cmZhY2UpOworICAgIG1fc3VyZmFjZXMu
YWRkKGF0bGFzSUQsIFdURk1vdmUoc3VyZmFjZSkpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6cmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCkKQEAgLTQ2Nyw3
ICs0NjcsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlSW1hZ2VCYWNr
aW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZwogICAgIG1faW1hZ2VCYWNraW5ncy5h
ZGQoaW1hZ2VJRCwgYmFja2luZ1N0b3JlLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCBpbWFnZUlELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gc3VyZmFjZSkKK3Zv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiYmIHN1
cmZhY2UpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VCYWNraW5ncy5jb250YWlucyhpbWFnZUlEKSk7
CiAgICAgSW1hZ2VCYWNraW5nTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VCYWNraW5ncy5maW5k
KGltYWdlSUQpOwpAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnCiAg
ICAgLy8gU2VlIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2hvdWxkRGlyZWN0bHlDb21wb3Np
dGVJbWFnZSgpCiAgICAgQVNTRVJUKDIwMDAgPj0gc3RkOjptYXgocmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpKSk7CiAgICAgYmFja2luZ1N0b3JlLT5zZXRTaXplKHJlY3Quc2l6ZSgpKTsKLSAg
ICBiYWNraW5nU3RvcmUtPnVwZGF0ZVRpbGUoMSAvKiBpZCAqLywgcmVjdCwgcmVjdCwgc3VyZmFj
ZSwgcmVjdC5sb2NhdGlvbigpKTsKKyAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZVRpbGUoMSAvKiBp
ZCAqLywgcmVjdCwgcmVjdCwgV1RGTW92ZShzdXJmYWNlKSwgcmVjdC5sb2NhdGlvbigpKTsKIAog
ICAgIG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVycy5hZGQoYmFja2luZ1N0b3JlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKaW5kZXggYjlmMWNlMjFj
ZDM0OTdjYjY4NDllZWJiNTQ5ZWVkYjM4OTE2YzM0Mi4uYjIwMDA0N2Q1MDgxMTFkODFkYzQ1ZjU4
ODM5MzIzZmQxM2RhNjcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmgKQEAgLTEwMiwxMiArMTAyLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMYXllclJlcGFp
bnRDb3VudElmTmVlZGVkKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJik7CiAKICAgICB2b2lkIHN5bmNVcGRh
dGVBdGxhc2VzKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpOwotICAg
IHZvaWQgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpDb29yZGluYXRlZFN1cmZhY2U+KTsKKyAgICB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKHVp
bnQzMl90IGF0bGFzSUQsIFJlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+JiYpOwog
ICAgIHZvaWQgcmVtb3ZlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCk7CiAKICAgICB2b2lk
IHN5bmNJbWFnZUJhY2tpbmdzKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZSYpOwogICAgIHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQpOwotICAgIHZvaWQgdXBkYXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nSUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJm
YWNlPik7CisgICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmdJRCwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4mJik7CiAg
ICAgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQpOwogICAgIHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkSW1hZ2VCYWNraW5nSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKaW5k
ZXggYWQ3MDYzYjI0ZjZmMDhlYWUyYjYwMzcyNjI2ZGRiZDBhZmJkMzQyNS4uZDRkZGEyYWJjODhl
NDEyNmJlY2E2YTk5NzI5Y2Y4MGRlYTZkNWJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OnNodXRk
b3duKCkKICAgICBpbml0aWFsaXplZE5ldHNjYXBlUGx1Z2luTW9kdWxlcygpLnJlbW92ZShwbHVn
aW5Nb2R1bGVJbmRleCk7CiB9CiAKLVBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IE5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgp
CitSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRP
ckNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7CiAgICAgLy8gRmlyc3QsIHNlZSBp
ZiB3ZSBhbHJlYWR5IGhhdmUgYSBtb2R1bGUgd2l0aCB0aGlzIHBsdWctaW4gcGF0aC4KICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGluaXRpYWxpemVkTmV0c2NhcGVQbHVnaW5Nb2R1bGVzKCku
c2l6ZSgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCmluZGV4IGYxOWY5NDE2MTBm
MmE4NWU1YWVjYTk3OGFiZjJjNTJlMjdlZTZlN2YuLjFkN2E1NTdmMjJmMWVhYTE5NjI2MWRhMDcy
MmJhODkwYzQzOGU5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaApAQCAtNDUsNyArNDUs
NyBAQCBzdHJ1Y3QgUmF3UGx1Z2luTWV0YURhdGE7CiAKIGNsYXNzIE5ldHNjYXBlUGx1Z2luTW9k
dWxlIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gZ2V0T3JDcmVhdGUo
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKKyAgICBzdGF0aWMgUmVmUHRyPE5ldHNjYXBlUGx1
Z2luTW9kdWxlPiBnZXRPckNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwogICAgIH5O
ZXRzY2FwZVBsdWdpbk1vZHVsZSgpOwogCiAgICAgY29uc3QgTlBQbHVnaW5GdW5jcyYgcGx1Z2lu
RnVuY3MoKSBjb25zdCB7IHJldHVybiBtX3BsdWdpbkZ1bmNzOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAKaW5kZXggNTlmZTExODgyMzI4NDc3YTczZDNjMzM1
YzBmNDU4NTA5NWRmMjQ2Mi4uNjJiMTFiNzNjZjJkNzdhYjgwZjUzMzI2OTFmYjg3ZWQyYmIyZjA5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcApAQCAtNTIs
OSArNTIsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNQb3dlck9mMih1bnNpZ25lZCB2KQogfQog
I2VuZGlmCiAKLXZvaWQgVmlzaXRlZExpbmtUYWJsZTo6c2V0U2hhcmVkTWVtb3J5KFBhc3NSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnkpCit2b2lkIFZpc2l0ZWRMaW5rVGFibGU6OnNl
dFNoYXJlZE1lbW9yeShSZWY8U2hhcmVkTWVtb3J5PiYmIHNoYXJlZE1lbW9yeSkKIHsKLSAgICBt
X3NoYXJlZE1lbW9yeSA9IHNoYXJlZE1lbW9yeTsKKyAgICBtX3NoYXJlZE1lbW9yeSA9IFdURk1v
dmUoc2hhcmVkTWVtb3J5KTsKICAgICAKICAgICBBU1NFUlQobV9zaGFyZWRNZW1vcnkpOwogICAg
IEFTU0VSVCghKG1fc2hhcmVkTWVtb3J5LT5zaXplKCkgJSBzaXplb2YoTGlua0hhc2gpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuaAppbmRleCA4NjFjZTdhNzkzMjE0
OTYxNTVjNTc3NWYzYTEyNjkxMmNkZTI1NDllLi4xZDkxMjY3NTgxNTRjMTg5NDlkNDVkMjg1MGEz
MWIxY2ZlOTRlYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlzaXRlZExp
bmtUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmgK
QEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgVmlzaXRlZExpbmtUYWJsZV9oCiAKICNpbmNsdWRl
IDxXZWJDb3JlL0xpbmtIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMzksNyArMzgsNyBA
QCBwdWJsaWM6CiAgICAgVmlzaXRlZExpbmtUYWJsZSgpOwogICAgIH5WaXNpdGVkTGlua1RhYmxl
KCk7CiAKLSAgICB2b2lkIHNldFNoYXJlZE1lbW9yeShQYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4p
OworICAgIHZvaWQgc2V0U2hhcmVkTWVtb3J5KFJlZjxTaGFyZWRNZW1vcnk+JiYpOwogCiAgICAg
Ly8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgVUkgcHJvY2Vzcy4KICAgICBi
b29sIGFkZExpbmtIYXNoKFdlYkNvcmU6OkxpbmtIYXNoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDFiNzU0ZjM0ZDU1NTM1YzJiYWEx
M2EwM2FkYzE1MTdlYWI5Yjg0ZGUuLjkxNDUwZmQ5OTFiMDkxMTAxMTA2ZmE3NDIxYmNjOGY0NWNm
NTA2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiU2Vzc2lvblN0YXRlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBBUEkgewpAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBWaWV3U25hcHNob3QqIHNuYXBzaG90KCkgY29uc3QgeyByZXR1cm4gbV9pdGVtU3Rh
dGUuc25hcHNob3QuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFNuYXBzaG90KFBhc3NSZWZQdHI8Vmll
d1NuYXBzaG90PiBzbmFwc2hvdCkgeyBtX2l0ZW1TdGF0ZS5zbmFwc2hvdCA9IHNuYXBzaG90OyB9
CisgICAgdm9pZCBzZXRTbmFwc2hvdChSZWZQdHI8Vmlld1NuYXBzaG90PiYmIHNuYXBzaG90KSB7
IG1faXRlbVN0YXRlLnNuYXBzaG90ID0gV1RGTW92ZShzbmFwc2hvdCk7IH0KICNlbmRpZgogCiAg
ICAgc3RhdGljIHVpbnQ2NF90IGhpZ2hlc3RVc2VkSXRlbUlEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwCmluZGV4IGVlMjFiNDZmMTVmZmUwZGM4N2Ux
YmFkYTRhNjJiYjcyMzExYWJiMDEuLmQzMDc4YjU5YWEzZWFjZTk3M2RjZDkyZTc1ZDUxMTk4ZGEz
NWM0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIFdlYkNvbnRleHRNZW51SXRlbTo6V2ViQ29udGV4dE1lbnVJdGVt
KGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGRhdGEpCiB7CiB9CiAKLVBhc3NSZWZQdHI8
V2ViQ29udGV4dE1lbnVJdGVtPiBXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShjb25zdCBTdHJp
bmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIEFQSTo6QXJyYXkqIHN1Ym1lbnVJdGVtcykKK1JlZjxX
ZWJDb250ZXh0TWVudUl0ZW0+IFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJheSogc3VibWVudUl0ZW1zKQogewogICAg
IHNpemVfdCBzaXplID0gc3VibWVudUl0ZW1zLT5zaXplKCk7CiAKQEAgLTUyLDcgKzUyLDcgQEAg
UGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+IFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRl
KGNvbnN0IFN0cmluZyYgdGl0bGUsIGIKICAgICAgICAgICAgIHN1Ym1lbnUuYXBwZW5kKGl0ZW0t
PmRhdGEoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250ZXh0TWVu
dUl0ZW0oV2ViQ29udGV4dE1lbnVJdGVtRGF0YShXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdO
b0FjdGlvbiwgdGl0bGUsIGVuYWJsZWQsIHN1Ym1lbnUpKSkubGVha1JlZigpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYkNvbnRleHRNZW51SXRlbShXZWJDb250ZXh0TWVudUl0ZW1EYXRh
KFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCB0aXRsZSwgZW5hYmxlZCwgc3Vi
bWVudSkpKS5sZWFrUmVmKCk7CiB9CiAKIFdlYkNvbnRleHRNZW51SXRlbSogV2ViQ29udGV4dE1l
bnVJdGVtOjpzZXBhcmF0b3JJdGVtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb250ZXh0TWVudUl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0
TWVudUl0ZW0uaAppbmRleCA5OGI5ZjAxZDNjMjU2ZDM4YzJiYzg0NTZlMmFhYjBkZDNlZGE0Y2Jh
Li45NzYzMmY5NjZjY2Y3OGMwNWUzMjZjNWY2YWQyZmZkZDc1MTY1YmU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29udGV4dE1lbnVJdGVtKGRhdGEp
KTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+IGNy
ZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIEFQSTo6QXJyYXkqIHN1Ym1l
bnVJdGVtcyk7CisgICAgc3RhdGljIFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIEFQSTo6QXJyYXkqIHN1Ym1lbnVJdGVtcyk7
CiAgICAgc3RhdGljIFdlYkNvbnRleHRNZW51SXRlbSogc2VwYXJhdG9ySXRlbSgpOwogCiAgICAg
UmVmPEFQSTo6QXJyYXk+IHN1Ym1lbnVJdGVtc0FzQVBJQXJyYXkoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCmluZGV4IDNmMDM5NzFj
M2VlZDNhYzQ1NWMwYzk1NGMxNzJiYWQ4NDRkZWQ3ZjYuLjFkZDc5ODliY2MwM2Q0MDAwMGRjZDlj
YzI2OTRjYmFiY2ZmZTQ2MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24uaApAQCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBXZWJHZW9sb2NhdGlv
blBvc2l0aW9uX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgSVBDIHsKIGNs
YXNzIERlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcAppbmRl
eCA5Y2MxMGVjYTQ2YzQ0ZTEzMTBjMmI2NzczNjZiNDAyNzNjYTQ0OTYyLi5hN2I0ZjQ2NTU1NjYz
MzVjMDY2YWIxNjk5NjBlODFmY2VhOWIwZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJS
ZW5kZXJMYXllci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYlJlbmRlckxheWVyPiBXZWJS
ZW5kZXJMYXllcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCitSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+
IFdlYlJlbmRlckxheWVyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKIHsKICAgICBGcmFtZSogbWFp
bkZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgaWYgKCFtYWluRnJhbWUpCkBAIC02Mywx
MiArNjMsMTIgQEAgUGFzc1JlZlB0cjxXZWJSZW5kZXJMYXllcj4gV2ViUmVuZGVyTGF5ZXI6OmNy
ZWF0ZShXZWJQYWdlKiBwYWdlKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUmVuZGVyTGF5
ZXIocm9vdExheWVyKSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+IFdlYlJlbmRl
ckxheWVyOjpjcmVhdGUoUGFzc1JlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IHJlbmRlcmVyLCBib29s
IGlzUmVmbGVjdGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRp
bmdMYXllclR5cGUgdHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBk
b3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4g
bmVnYXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5vcm1hbEZsb3dMaXN0
LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IHBvc2l0aXZlWk9yZGVyTGlzdCwgUGFzc1JlZlB0cjxX
ZWJSZW5kZXJMYXllcj4gZnJhbWVDb250ZW50c0xheWVyKQorUmVmPFdlYlJlbmRlckxheWVyPiBX
ZWJSZW5kZXJMYXllcjo6Y3JlYXRlKFJlZlB0cjxXZWJSZW5kZXJPYmplY3Q+JiYgcmVuZGVyZXIs
IGJvb2wgaXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBDb21w
b3NpdGluZ0xheWVyVHlwZSB0eXBlLCBXZWJDb3JlOjpJbnRSZWN0IGFic29sdXRlQm91bmRpbmdC
b3gsIGRvdWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwgUmVmUHRyPEFQSTo6QXJyYXk+
JiYgbmVnYXRpdmVaT3JkZXJMaXN0LCBSZWZQdHI8QVBJOjpBcnJheT4mJiBub3JtYWxGbG93TGlz
dCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgcG9zaXRpdmVaT3JkZXJMaXN0LCBSZWZQdHI8V2ViUmVu
ZGVyTGF5ZXI+JiYgZnJhbWVDb250ZW50c0xheWVyKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViUmVuZGVyTGF5ZXIocmVuZGVyZXIsIGlzUmVmbGVjdGlvbiwgaXNDbGlwcGluZywgaXND
bGlwcGVkLCB0eXBlLCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBiYWNraW5nU3RvcmVNZW1vcnlFc3Rp
bWF0ZSwgbmVnYXRpdmVaT3JkZXJMaXN0LCBub3JtYWxGbG93TGlzdCwgcG9zaXRpdmVaT3JkZXJM
aXN0LCBmcmFtZUNvbnRlbnRzTGF5ZXIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJS
ZW5kZXJMYXllcihXVEZNb3ZlKHJlbmRlcmVyKSwgaXNSZWZsZWN0aW9uLCBpc0NsaXBwaW5nLCBp
c0NsaXBwZWQsIHR5cGUsIGFic29sdXRlQm91bmRpbmdCb3gsIGJhY2tpbmdTdG9yZU1lbW9yeUVz
dGltYXRlLCBXVEZNb3ZlKG5lZ2F0aXZlWk9yZGVyTGlzdCksIFdURk1vdmUobm9ybWFsRmxvd0xp
c3QpLCBXVEZNb3ZlKHBvc2l0aXZlWk9yZGVyTGlzdCksIFdURk1vdmUoZnJhbWVDb250ZW50c0xh
eWVyKSkpOwogfQogCi1QYXNzUmVmUHRyPEFQSTo6QXJyYXk+IFdlYlJlbmRlckxheWVyOjpjcmVh
dGVBcnJheUZyb21MYXllckxpc3QoVmVjdG9yPFJlbmRlckxheWVyKj4qIGxpc3QpCitSZWZQdHI8
QVBJOjpBcnJheT4gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChWZWN0
b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCkKIHsKICAgICBpZiAoIWxpc3QgfHwgIWxpc3QtPnNpemUo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMjgsMTggKzEyOCwxOCBAQCBXZWJSZW5k
ZXJMYXllcjo6V2ViUmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQogICAgIH0KIH0KIAot
V2ViUmVuZGVyTGF5ZXI6OldlYlJlbmRlckxheWVyKFBhc3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0
PiByZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGluZywgYm9vbCBpc0Ns
aXBwZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlIHR5cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1
dGVCb3VuZGluZ0JveCwgZG91YmxlIGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlLCBQYXNzUmVm
UHRyPEFQSTo6QXJyYXk+IG5lZ2F0aXZlWk9yZGVyTGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5
PiBub3JtYWxGbG93TGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBwb3NpdGl2ZVpPcmRlckxp
c3QsIFBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+IGZyYW1lQ29udGVudHNMYXllcikKLSAgICA6
IG1fcmVuZGVyZXIocmVuZGVyZXIpCitXZWJSZW5kZXJMYXllcjo6V2ViUmVuZGVyTGF5ZXIoUmVm
UHRyPFdlYlJlbmRlck9iamVjdD4mJiByZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wg
aXNDbGlwcGluZywgYm9vbCBpc0NsaXBwZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlIHR5cGUsIFdl
YkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCwgZG91YmxlIGJhY2tpbmdTdG9yZU1l
bW9yeUVzdGltYXRlLCBSZWZQdHI8QVBJOjpBcnJheT4mJiBuZWdhdGl2ZVpPcmRlckxpc3QsIFJl
ZlB0cjxBUEk6OkFycmF5PiYmIG5vcm1hbEZsb3dMaXN0LCBSZWZQdHI8QVBJOjpBcnJheT4mJiBw
b3NpdGl2ZVpPcmRlckxpc3QsIFJlZlB0cjxXZWJSZW5kZXJMYXllcj4mJiBmcmFtZUNvbnRlbnRz
TGF5ZXIpCisgICAgOiBtX3JlbmRlcmVyKFdURk1vdmUocmVuZGVyZXIpKQogICAgICwgbV9pc1Jl
ZmxlY3Rpb24oaXNSZWZsZWN0aW9uKQogICAgICwgbV9pc0NsaXBwaW5nKGlzQ2xpcHBpbmcpCiAg
ICAgLCBtX2lzQ2xpcHBlZChpc0NsaXBwZWQpCiAgICAgLCBtX2NvbXBvc2l0aW5nTGF5ZXJUeXBl
KHR5cGUpCiAgICAgLCBtX2Fic29sdXRlQm91bmRpbmdCb3goYWJzb2x1dGVCb3VuZGluZ0JveCkK
ICAgICAsIG1fYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUoYmFja2luZ1N0b3JlTWVtb3J5RXN0
aW1hdGUpCi0gICAgLCBtX25lZ2F0aXZlWk9yZGVyTGlzdChuZWdhdGl2ZVpPcmRlckxpc3QpCi0g
ICAgLCBtX25vcm1hbEZsb3dMaXN0KG5vcm1hbEZsb3dMaXN0KQotICAgICwgbV9wb3NpdGl2ZVpP
cmRlckxpc3QocG9zaXRpdmVaT3JkZXJMaXN0KQotICAgICwgbV9mcmFtZUNvbnRlbnRzTGF5ZXIo
ZnJhbWVDb250ZW50c0xheWVyKQorICAgICwgbV9uZWdhdGl2ZVpPcmRlckxpc3QoV1RGTW92ZShu
ZWdhdGl2ZVpPcmRlckxpc3QpKQorICAgICwgbV9ub3JtYWxGbG93TGlzdChXVEZNb3ZlKG5vcm1h
bEZsb3dMaXN0KSkKKyAgICAsIG1fcG9zaXRpdmVaT3JkZXJMaXN0KFdURk1vdmUocG9zaXRpdmVa
T3JkZXJMaXN0KSkKKyAgICAsIG1fZnJhbWVDb250ZW50c0xheWVyKFdURk1vdmUoZnJhbWVDb250
ZW50c0xheWVyKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlJlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuaApp
bmRleCA1YjZiZTA0MzM0ZTQ2MjBkMWQwYTlmMjNhYjEzOTQ1M2RiZGI0MmRjLi41MTQxNGRmYjQ3
YTJlNmYyNTZmMzBkM2Y1YTE1M2I4MTRjNzhhYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UmVuZGVyTGF5ZXIuaApAQCAtNDAsOCArNDAsOCBAQCBjbGFzcyBXZWJSZW5kZXJMYXllciA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlJlbmRlckxheWVyPiB7CiBw
dWJsaWM6CiAgICAgZW51bSBDb21wb3NpdGluZ0xheWVyVHlwZSB7IE5vbmUsIE5vcm1hbCwgVGls
ZWQsIE1lZGlhLCBDb250YWluZXIgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlJlbmRl
ckxheWVyPiBjcmVhdGUoV2ViUGFnZSopOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlJlbmRl
ckxheWVyPiBjcmVhdGUoUGFzc1JlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IHJlbmRlcmVyLCBib29s
IGlzUmVmbGVjdGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRp
bmdMYXllclR5cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCwgZG91Ymxl
IGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5lZ2F0
aXZlWk9yZGVyTGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBub3JtYWxGbG93TGlzdCwgUGFz
c1JlZlB0cjxBUEk6OkFycmF5PiBwb3NpdGl2ZVpPcmRlckxpc3QsIFBhc3NSZWZQdHI8V2ViUmVu
ZGVyTGF5ZXI+IGZyYW1lQ29udGVudHNMYXllcik7CisgICAgc3RhdGljIFJlZlB0cjxXZWJSZW5k
ZXJMYXllcj4gY3JlYXRlKFdlYlBhZ2UqKTsKKyAgICBzdGF0aWMgUmVmPFdlYlJlbmRlckxheWVy
PiBjcmVhdGUoUmVmUHRyPFdlYlJlbmRlck9iamVjdD4mJiByZW5kZXJlciwgYm9vbCBpc1JlZmxl
Y3Rpb24sIGJvb2wgaXNDbGlwcGluZywgYm9vbCBpc0NsaXBwZWQsIENvbXBvc2l0aW5nTGF5ZXJU
eXBlLCBXZWJDb3JlOjpJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3gsIGRvdWJsZSBiYWNraW5n
U3RvcmVNZW1vcnlFc3RpbWF0ZSwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgbmVnYXRpdmVaT3JkZXJM
aXN0LCBSZWZQdHI8QVBJOjpBcnJheT4mJiBub3JtYWxGbG93TGlzdCwgUmVmUHRyPEFQSTo6QXJy
YXk+JiYgcG9zaXRpdmVaT3JkZXJMaXN0LCBSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+JiYgZnJhbWVD
b250ZW50c0xheWVyKTsKIAogICAgIEFQSTo6QXJyYXkqIG5lZ2F0aXZlWk9yZGVyTGlzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fbmVnYXRpdmVaT3JkZXJMaXN0LmdldCgpOyB9CiAgICAgQVBJOjpBcnJh
eSogbm9ybWFsRmxvd0xpc3QoKSBjb25zdCB7IHJldHVybiBtX25vcm1hbEZsb3dMaXN0LmdldCgp
OyB9CkBAIC01OCw5ICs1OCw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBX
ZWJSZW5kZXJMYXllcihXZWJDb3JlOjpSZW5kZXJMYXllciopOwotICAgIFdlYlJlbmRlckxheWVy
KFBhc3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiByZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24s
IGJvb2wgaXNDbGlwcGluZywgYm9vbCBpc0NsaXBwZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlLCBX
ZWJDb3JlOjpJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3gsIGRvdWJsZSBiYWNraW5nU3RvcmVN
ZW1vcnlFc3RpbWF0ZSwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBuZWdhdGl2ZVpPcmRlckxpc3Qs
IFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gbm9ybWFsRmxvd0xpc3QsIFBhc3NSZWZQdHI8QVBJOjpB
cnJheT4gcG9zaXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPFdlYlJlbmRlckxheWVyPiBmcmFt
ZUNvbnRlbnRzTGF5ZXIpOworICAgIFdlYlJlbmRlckxheWVyKFJlZlB0cjxXZWJSZW5kZXJPYmpl
Y3Q+JiYgcmVuZGVyZXIsIGJvb2wgaXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wg
aXNDbGlwcGVkLCBDb21wb3NpdGluZ0xheWVyVHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0
ZUJvdW5kaW5nQm94LCBkb3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUsIFJlZlB0cjxB
UEk6OkFycmF5PiYmIG5lZ2F0aXZlWk9yZGVyTGlzdCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgbm9y
bWFsRmxvd0xpc3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIHBvc2l0aXZlWk9yZGVyTGlzdCwgUmVm
UHRyPFdlYlJlbmRlckxheWVyPiYmIGZyYW1lQ29udGVudHNMYXllcik7CiAKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxBUEk6OkFycmF5PiBjcmVhdGVBcnJheUZyb21MYXllckxpc3QoVmVjdG9yPFdl
YkNvcmU6OlJlbmRlckxheWVyKj4qKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFQSTo6QXJyYXk+IGNy
ZWF0ZUFycmF5RnJvbUxheWVyTGlzdChWZWN0b3I8V2ViQ29yZTo6UmVuZGVyTGF5ZXIqPiopOwog
CiAgICAgUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gbV9yZW5kZXJlcjsKICAgICBib29sIG1faXNS
ZWZsZWN0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmNwcAppbmRl
eCBhZmM0MzM2ZWQ4NDU4ODMwODM3OTJiNTk5NzQ0Y2RmNzQ0MGVhZjliLi41OTIyYjAwMDA5OGI0
MGU2NWQzNjFjODQwMGZhNzYzNTQxNzZmYjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UmVuZGVyT2JqZWN0LmNwcApAQCAtNTgsOSArNTgsOSBAQCBSZWZQdHI8V2ViUmVuZGVyT2JqZWN0
PiBXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViUmVuZGVyT2JqZWN0KGNvbnRlbnRSZW5kZXJlciwgdHJ1ZSkpOwogfQogCi1Q
YXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gV2ViUmVuZGVyT2JqZWN0OjpjcmVhdGUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRUYWdOYW1lLCBjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBlbGVtZW50Q2xhc3NOYW1lcywgV2Vi
Q29yZTo6SW50UG9pbnQgYWJzb2x1dGVQb3NpdGlvbiwgV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJl
Y3QsIGNvbnN0IFN0cmluZyYgdGV4dFNuaXBwZXQsIHVuc2lnbmVkIHRleHRMZW5ndGgsIFBhc3NS
ZWZQdHI8QVBJOjpBcnJheT4gY2hpbGRyZW4pCitSZWY8V2ViUmVuZGVyT2JqZWN0PiBXZWJSZW5k
ZXJPYmplY3Q6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVu
dFRhZ05hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBSZWZQdHI8QVBJOjpBcnJheT4mJiBl
bGVtZW50Q2xhc3NOYW1lcywgV2ViQ29yZTo6SW50UG9pbnQgYWJzb2x1dGVQb3NpdGlvbiwgV2Vi
Q29yZTo6SW50UmVjdCBmcmFtZVJlY3QsIGNvbnN0IFN0cmluZyYgdGV4dFNuaXBwZXQsIHVuc2ln
bmVkIHRleHRMZW5ndGgsIFJlZlB0cjxBUEk6OkFycmF5PiYmIGNoaWxkcmVuKQogewotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViUmVuZGVyT2JqZWN0KG5hbWUsIGVsZW1lbnRUYWdOYW1lLCBl
bGVtZW50SUQsIGVsZW1lbnRDbGFzc05hbWVzLCBhYnNvbHV0ZVBvc2l0aW9uLCBmcmFtZVJlY3Qs
IHRleHRTbmlwcGV0LCB0ZXh0TGVuZ3RoLCBjaGlsZHJlbikpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlJlbmRlck9iamVjdChuYW1lLCBlbGVtZW50VGFnTmFtZSwgZWxlbWVudElELCBX
VEZNb3ZlKGVsZW1lbnRDbGFzc05hbWVzKSwgYWJzb2x1dGVQb3NpdGlvbiwgZnJhbWVSZWN0LCB0
ZXh0U25pcHBldCwgdGV4dExlbmd0aCwgV1RGTW92ZShjaGlsZHJlbikpKTsKIH0KIAogV2ViUmVu
ZGVyT2JqZWN0OjpXZWJSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYm9vbCBz
aG91bGRJbmNsdWRlRGVzY2VuZGFudHMpCkBAIC0xMjcsMTMgKzEyNywxMyBAQCBXZWJSZW5kZXJP
YmplY3Q6OldlYlJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIHNob3Vs
ZEluY2x1ZGVEZXNjZQogICAgIG1fY2hpbGRyZW4gPSBBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShjaGlsZHJlbikpOwogfQogCi1XZWJSZW5kZXJPYmplY3Q6OldlYlJlbmRlck9iamVjdChjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudFRhZ05hbWUsIGNvbnN0IFN0cmlu
ZyYgZWxlbWVudElELCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGVsZW1lbnRDbGFzc05hbWVzLCBX
ZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1l
UmVjdCwgY29uc3QgU3RyaW5nJiB0ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUGFz
c1JlZlB0cjxBUEk6OkFycmF5PiBjaGlsZHJlbikKLSAgICA6IG1fY2hpbGRyZW4oY2hpbGRyZW4p
CitXZWJSZW5kZXJPYmplY3Q6OldlYlJlbmRlck9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFN0cmluZyYgZWxlbWVudFRhZ05hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBSZWZQ
dHI8QVBJOjpBcnJheT4mJiBlbGVtZW50Q2xhc3NOYW1lcywgV2ViQ29yZTo6SW50UG9pbnQgYWJz
b2x1dGVQb3NpdGlvbiwgV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3QsIGNvbnN0IFN0cmluZyYg
dGV4dFNuaXBwZXQsIHVuc2lnbmVkIHRleHRMZW5ndGgsIFJlZlB0cjxBUEk6OkFycmF5PiYmIGNo
aWxkcmVuKQorICAgIDogbV9jaGlsZHJlbihXVEZNb3ZlKGNoaWxkcmVuKSkKICAgICAsIG1fbmFt
ZShuYW1lKQogICAgICwgbV9lbGVtZW50VGFnTmFtZShlbGVtZW50VGFnTmFtZSkKICAgICAsIG1f
ZWxlbWVudElEKGVsZW1lbnRJRCkKICAgICAsIG1fdGV4dFNuaXBwZXQodGV4dFNuaXBwZXQpCi0g
ICAgLCBtX2VsZW1lbnRDbGFzc05hbWVzKGVsZW1lbnRDbGFzc05hbWVzKQorICAgICwgbV9lbGVt
ZW50Q2xhc3NOYW1lcyhXVEZNb3ZlKGVsZW1lbnRDbGFzc05hbWVzKSkKICAgICAsIG1fYWJzb2x1
dGVQb3NpdGlvbihhYnNvbHV0ZVBvc2l0aW9uKQogICAgICwgbV9mcmFtZVJlY3QoZnJhbWVSZWN0
KQogICAgICwgbV90ZXh0TGVuZ3RoKHRleHRMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UmVuZGVyT2JqZWN0LmgKaW5kZXggZmMyNTU4MjMxN2E1MzhiYjRkNDc5MzBlYWU1YWUwZGI1ZjUx
Zjc3NS4uODUyMmRhYzg4NDQyN2I1ODc1YTlkN2FjZDRkYzNiNTA2NGY4ODczNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlbmRlck9iamVjdChyZW5k
ZXJlciwgZmFsc2UpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJSZW5kZXJP
YmplY3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudFRh
Z05hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGVs
ZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJD
b3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0ZXh0U25pcHBldCwgdW5zaWdu
ZWQgdGV4dExlbmd0aCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBjaGlsZHJlbik7CisgICAgc3Rh
dGljIFJlZjxXZWJSZW5kZXJPYmplY3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZWxlbWVudFRhZ05hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBSZWZQdHI8
QVBJOjpBcnJheT4mJiBlbGVtZW50Q2xhc3NOYW1lcywgV2ViQ29yZTo6SW50UG9pbnQgYWJzb2x1
dGVQb3NpdGlvbiwgV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3QsIGNvbnN0IFN0cmluZyYgdGV4
dFNuaXBwZXQsIHVuc2lnbmVkIHRleHRMZW5ndGgsIFJlZlB0cjxBUEk6OkFycmF5PiYmIGNoaWxk
cmVuKTsKIAogICAgIHZpcnR1YWwgfldlYlJlbmRlck9iamVjdCgpOwogCkBAIC03MSw3ICs3MSw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJSZW5kZXJPYmplY3QoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0KiwgYm9vbCBzaG91bGRJbmNsdWRlRGVzY2VuZGFudHMpOwotICAgIFdlYlJlbmRl
ck9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudFRhZ05hbWUs
IGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGVsZW1lbnRD
bGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJ
bnRSZWN0IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4
dExlbmd0aCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBjaGlsZHJlbik7CisgICAgV2ViUmVuZGVy
T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwg
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFJlZlB0cjxBUEk6OkFycmF5PiYmIGVsZW1lbnRDbGFz
c05hbWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRS
ZWN0IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4dExl
bmd0aCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgY2hpbGRyZW4pOwogCiAgICAgUmVmUHRyPEFQSTo6
QXJyYXk+IG1fY2hpbGRyZW47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9WaXNpdGVkTGlua1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVk
TGlua1N0b3JlLmNwcAppbmRleCBhOTYxYTJiMzFlZjg3NTMyMWQ4MTM5Y2NkOTQzNDg2ODNjMDI3
NWI1Li4yOTU5ZDU5MWY2ZWI5ODRiNGRmYTliMGM2NTZjYTc3Yjg0N2Y3ODQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0yMDIsNyArMjAy
LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0b3JlOjpwZW5kaW5nVmlzaXRlZExpbmtzVGltZXJGaXJl
ZCgpCiAKIHZvaWQgVmlzaXRlZExpbmtTdG9yZTo6cmVzaXplVGFibGUodW5zaWduZWQgbmV3VGFi
bGVTaXplKQogewotICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IG5ld1RhYmxlTWVtb3J5ID0gU2hh
cmVkTWVtb3J5OjphbGxvY2F0ZShuZXdUYWJsZVNpemUgKiBzaXplb2YoTGlua0hhc2gpKTsKKyAg
ICBhdXRvIG5ld1RhYmxlTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShuZXdUYWJsZVNp
emUgKiBzaXplb2YoTGlua0hhc2gpKTsKIAogICAgIGlmICghbmV3VGFibGVNZW1vcnkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBmb3Igdmlz
aXRlZCBsaW5rIHRhYmxlIik7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0
b3JlOjpyZXNpemVUYWJsZSh1bnNpZ25lZCBuZXdUYWJsZVNpemUpCiAgICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gY3VycmVudFRhYmxlTWVtb3J5ID0gbV90YWJsZS5zaGFyZWRNZW1vcnkoKTsKICAg
ICB1bnNpZ25lZCBjdXJyZW50VGFibGVTaXplID0gbV90YWJsZVNpemU7CiAKLSAgICBtX3RhYmxl
LnNldFNoYXJlZE1lbW9yeShuZXdUYWJsZU1lbW9yeSk7CisgICAgbV90YWJsZS5zZXRTaGFyZWRN
ZW1vcnkobmV3VGFibGVNZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgbV90YWJsZVNpemUg
PSBuZXdUYWJsZVNpemU7CiAKICAgICBpZiAoY3VycmVudFRhYmxlTWVtb3J5KSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRM
aW5rVGFibGVDb250cm9sbGVyLmNwcAppbmRleCAxZDRiOTdlYmU5ZjJkYWY1NDY1ZWJiYWI1Y2Y5
YTE5MWQ3OGRlZGU0Li42ZThiMDZkZmI4ZDNkNWYwYmNkNTNkNTA4ODE5NTg0YzhmMzcxMTE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtU
YWJsZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBW
aXNpdGVkTGlua1RhYmxlQ29udHJvbGxlcjo6c2V0VmlzaXRlZExpbmtUYWJsZShjb25zdCBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSYKICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV92aXNpdGVkTGlua1RhYmxlLnNldFNoYXJlZE1lbW9yeShXVEZNb3ZlKHNoYXJl
ZE1lbW9yeSkpOworICAgIG1fdmlzaXRlZExpbmtUYWJsZS5zZXRTaGFyZWRNZW1vcnkoc2hhcmVk
TWVtb3J5LnJlbGVhc2VOb25OdWxsKCkpOwogCiAgICAgaW52YWxpZGF0ZVN0eWxlc0ZvckFsbExp
bmtzKCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309862</attachid>
            <date>2017-05-11 21:34:56 -0700</date>
            <delta_ts>2017-05-11 21:46:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172017-20170511213455.patch</filename>
            <type>text/plain</type>
            <size>41058</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWVlZTcyZjIzZWM0NmM4
NzdmYmI1YWE2M2FiN2Q0YjViY2EwZDI3YS4uMzUwOGMxMTIzOGUwMmNjOGU3N2NmZmMyZTIzYzU4
NTc3MDNlNDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTA1LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVm
UHRyIHVuZGVyIFdlYktpdDIvU2hhcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzIwMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHA6CisgICAgICAg
IChBUEk6OkRpY3Rpb25hcnk6OmFkZCk6CisgICAgICAgIChBUEk6OkRpY3Rpb25hcnk6OnNldCk6
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElTZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyk6CisgICAgICAgIChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUp
OgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAg
ICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1No
YXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6UHJveHlpbmdSZWZQdHI6OlByb3h5aW5n
UmVmUHRyKToKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLmg6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3Vy
Y2U6OldlYkFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgICogU2hhcmVkL0FzeW5jUmVxdWVzdC5o
OgorICAgICAgICAoV2ViS2l0OjpBc3luY1JlcXVlc3RNYXA6OmFkZCk6CisgICAgICAgICogU2hh
cmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKiBTaGFy
ZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVU
aWxlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6Y3JlYXRlVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAg
ICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAg
ICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmg6CisgICAg
ICAgICogU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNp
dGVkTGlua1RhYmxlOjpzZXRTaGFyZWRNZW1vcnkpOgorICAgICAgICAqIFNoYXJlZC9WaXNpdGVk
TGlua1RhYmxlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U25hcHNob3QpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbnRl
eHRNZW51SXRlbS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmg6
CisgICAgICAgICogU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlckxheWVy
OjpjcmVhdGVBcnJheUZyb21MYXllckxpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJM
YXllcjo6V2ViUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJMYXllci5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlck9i
amVjdDo6V2ViUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUmVuZGVyT2JqZWN0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlOjpyZXNpemVUYWJsZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFibGUpOgor
CiAyMDE3LTA1LTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOi4uLl0gZG9lc24ndCB3b3Jr
IGZvciBJbmRleGVkREIgaWYgdGhlIGRhdGEgc3RvcmUgaGFzIGEgY3VzdG9tIElEQiBwYXRoLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHAKaW5kZXggODk0ZTk4
ZGQxMjI1ZDQ4MDVlOTcwYjZkZTkyNWMwYmU3NzlhMGRlOS4uNGZiOTk1MmZkNjkzYTJmMTY5NTlm
YWUzZWE1NzE0NWFjMzk5MWM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9BUElEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURp
Y3Rpb25hcnkuY3BwCkBAIC02NCwxNSArNjQsMTUgQEAgUmVmPEFycmF5PiBEaWN0aW9uYXJ5Ojpr
ZXlzKCkgY29uc3QKICAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5cykp
OwogfQogCi1ib29sIERpY3Rpb25hcnk6OmFkZChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBQYXNz
UmVmUHRyPEFQSTo6T2JqZWN0PiBpdGVtKQorYm9vbCBEaWN0aW9uYXJ5OjphZGQoY29uc3QgV1RG
OjpTdHJpbmcmIGtleSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYmIGl0ZW0pCiB7Ci0gICAgTWFwVHlw
ZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGl0ZW0pOworICAgIE1hcFR5cGU6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBXVEZNb3ZlKGl0ZW0pKTsKICAgICBy
ZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiB9CiAKLWJvb2wgRGljdGlvbmFyeTo6c2V0KGNvbnN0
IFdURjo6U3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8QVBJOjpPYmplY3Q+IGl0ZW0pCitib29sIERp
Y3Rpb25hcnk6OnNldChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBSZWZQdHI8QVBJOjpPYmplY3Q+
JiYgaXRlbSkKIHsKLSAgICBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuc2V0KGtl
eSwgaXRlbSk7CisgICAgTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLnNldChrZXks
IFdURk1vdmUoaXRlbSkpOwogICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURpY3Rpb25hcnkuaAppbmRleCA1MDU5OTEyOWE4Y2Fk
ZmE2ODg4NzhkMGFmMTFjZmJkZmY0MTBhOWIzLi5mY2JhNzIzODE3NjY5NzAwN2I3ZmRmYWE0YjMx
ODU5ZjcxOWQzMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURp
Y3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURpY3Rpb25hcnku
aApAQCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8QXJyYXk+IGtleXMoKSBjb25z
dDsKIAotICAgIGJvb2wgYWRkKGNvbnN0IFdURjo6U3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8T2Jq
ZWN0Pik7Ci0gICAgYm9vbCBzZXQoY29uc3QgV1RGOjpTdHJpbmcmIGtleSwgUGFzc1JlZlB0cjxP
YmplY3Q+KTsKKyAgICBib29sIGFkZChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBSZWZQdHI8T2Jq
ZWN0PiYmKTsKKyAgICBib29sIHNldChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBSZWZQdHI8T2Jq
ZWN0PiYmKTsKICAgICB2b2lkIHJlbW92ZShjb25zdCBXVEY6OlN0cmluZyYga2V5KTsKIAogICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmgKaW5kZXggODkxN2M2NzA0OTA0
ZDM3Zjg0YjgzMTViOTMzOTlkZjJkZTc0ZDRjNS4uYjM4OTNhMTU4ZDc4ZGZiY2YyYTdmYmE0YTQ4
Mzg5NzQ2NDY2NzljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElT
ZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VjdXJp
dHlPcmlnaW4uaApAQCAtMjcsMzIgKzI3LDMyIEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFz
cyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OlNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gY3JlYXRlRnJvbVN0cmluZyhjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAg
IHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgV1RGOjpT
dHJpbmcmIHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBjcmVhdGUoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc3RyaW5nKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBwcm90
b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBv
cnQpCisgICAgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6U3Ry
aW5nJiBwcm90b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+IHBvcnQpCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUocHJvdG9jb2wsIGhvc3QsIHBvcnQpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQorICAgIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKSk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fc2VjdXJpdHlPcmlnaW47IH0KKyAgICBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBt
X3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU2VjdXJpdHlPcmlnaW4o
UGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCi0gICAg
ICAgIDogbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKKyAgICBTZWN1cml0eU9yaWdp
bihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCisgICAgICAg
IDogbV9zZWN1cml0eU9yaWdpbihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICB7CiAgICAg
fQogCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKKyAgICBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApp
bmRleCA2NTY5ZDRkNGNlOTIxMjkxNDlmMTlkNDhlMDQ0OWJlY2FiYThhOGRhLi4xY2ZhZTRhMjQ4
YzUzN2U5OGY3MWEzMjk3N2NjM2IwZWRhZTNhNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTM2LDkgKzM2LDkg
QEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVh
dGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRW
YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKFJlZlB0
cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2VyaWFsaXplZFZhbHVlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNl
cmlhbGl6ZWRWYWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUoV1RGTW92ZShzZXJpYWxpemVkVmFsdWUpKSk7CiAgICAgfQogICAgIAogICAg
IHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTY4
LDggKzY4LDggQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVl
LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUpCi0gICAgICAgIDogbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUoc2VyaWFsaXplZFNj
cmlwdFZhbHVlKQorICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKKyAg
ICAgICAgOiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
U2hhcmVkQVBJQ2FzdC5oCmluZGV4IDMzZTY1Mjg3OWNkODYwMjZmYzQwYWE1YjZjMTkxNWE5N2Yy
NTFkNmUuLmI0ODA5ZjNhMTVmZjhjZGU2NDJkMWRkNGU2NTkxNzJkMDUwZmU0NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKQEAgLTEzNiw3ICsx
MzYsNyBAQCBhdXRvIHRvSW1wbChUIHQpIC0+IEltcGxUeXBlKgogdGVtcGxhdGU8dHlwZW5hbWUg
SW1wbFR5cGUsIHR5cGVuYW1lIEFQSVR5cGUgPSB0eXBlbmFtZSBJbXBsVHlwZUluZm88SW1wbFR5
cGU+OjpBUElUeXBlPgogY2xhc3MgUHJveHlpbmdSZWZQdHIgewogcHVibGljOgotICAgIFByb3h5
aW5nUmVmUHRyKFBhc3NSZWZQdHI8SW1wbFR5cGU+IGltcGwpCisgICAgUHJveHlpbmdSZWZQdHIo
UmVmUHRyPEltcGxUeXBlPiYmIGltcGwpCiAgICAgICAgIDogbV9pbXBsKGltcGwpCiAgICAgewog
ICAgIH0KQEAgLTIxMCw4ICsyMTAsOCBAQCBpbmxpbmUgUHJveHlpbmdSZWZQdHI8QVBJOjpVUkxS
ZXNwb25zZT4gdG9BUEkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcgogaW5saW5l
IFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9Db3BpZWRBUEkoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4q
IG9yaWdpbikKIHsKICAgICBpZiAoIW9yaWdpbikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIHRvQVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgqb3JpZ2luKS5sZWFrUmVmKCkp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gdG9BUEkoJkFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSgqb3JpZ2luKS5sZWFrUmVmKCkpOwogfQogCiAvKiBHZW9tZXRyeSBj
b252ZXJzaW9ucyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNv
dXJjZS5oCmluZGV4IDFlYjkyNjRiM2VmZDg3NTc5M2U1YmZhNGQ5ZTQ4YTdmOWJmNTY5N2MuLjlj
ZDFjMWM0Mjc5Y2QxNjFhYjllZDc2OTgzYWQxZDFiYzg1MThiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLmgKQEAgLTMwLDcgKzMwLDYgQEAKIAog
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBBUEkgewpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViQXJjaGl2
ZVJlc291cmNlKCk7CiAKICAgICBzdGF0aWMgUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gY3JlYXRl
KEFQSTo6RGF0YSosIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyk7Ci0gICAgc3RhdGljIFJlZjxXZWJBcmNoaXZlUmVz
b3VyY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4pOworICAg
IHN0YXRpYyBSZWY8V2ViQXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPFdlYkNvcmU6OkFy
Y2hpdmVSZXNvdXJjZT4mJik7CiAKICAgICBSZWY8QVBJOjpEYXRhPiBkYXRhKCk7CiAgICAgU3Ry
aW5nIFVSTCgpOwpAQCAtNjAsNyArNTksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2Vi
QXJjaGl2ZVJlc291cmNlKEFQSTo6RGF0YSosIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyk7Ci0gICAgV2ViQXJjaGl2
ZVJlc291cmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPik7CisgICAgV2Vi
QXJjaGl2ZVJlc291cmNlKFJlZlB0cjxXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U+JiYpOwogCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4gbV9hcmNoaXZlUmVzb3VyY2U7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5k
ZXggOWE0NTliNmY1ZjFhM2MyODc0ZGM2YjQzNjc3ODIzNTVkZTIxMGUzMy4uYjFjNTJkNzY1YTVm
Nzc4MmVlMTkyNzBhYTcyMjc0YTRmYzA3OWVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC00Miw5ICs0Miw5IEBAIFJlZjxXZWJBcmNo
aXZlUmVzb3VyY2U+IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKEFQSTo6RGF0YSogZGF0YSwg
Y29uc3QgU3RyaW5nCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXJjaGl2ZVJlc291cmNl
KGRhdGEsIFVSTCwgTUlNRVR5cGUsIHRleHRFbmNvZGluZykpOwogfQogCi1SZWY8V2ViQXJjaGl2
ZVJlc291cmNlPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQYXNzUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gYXJjaGl2ZVJlc291cmNlKQorUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBhcmNoaXZlUmVz
b3VyY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXJjaGl2ZVJlc291cmNlKGFy
Y2hpdmVSZXNvdXJjZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFyY2hpdmVSZXNv
dXJjZShXVEZNb3ZlKGFyY2hpdmVSZXNvdXJjZSkpKTsKIH0KIAogV2ViQXJjaGl2ZVJlc291cmNl
OjpXZWJBcmNoaXZlUmVzb3VyY2UoQVBJOjpEYXRhKiBkYXRhLCBjb25zdCBTdHJpbmcmIFVSTCwg
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcpCkBAIC01
Miw4ICs1Miw4IEBAIFdlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6
RGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0CiB7CiB9CiAKLVdlYkFyY2hpdmVS
ZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBh
cmNoaXZlUmVzb3VyY2UpCi0gICAgOiBtX2FyY2hpdmVSZXNvdXJjZShhcmNoaXZlUmVzb3VyY2Up
CitXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiYmIGFyY2hpdmVSZXNvdXJjZSkKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKFdURk1v
dmUoYXJjaGl2ZVJlc291cmNlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FzeW5jUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jUmVxdWVz
dC5oCmluZGV4IDVmMzI3YzQ5NjllY2ViODk5YThlZGUwY2U5ZTBmYzMxNTc4N2I3OWMuLjBjNGEw
YTBjNDEzYjBhMWMzYmU5ZWVmNWM3NzViY2YxMjM1NWI5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QXN5bmNSZXF1ZXN0LmgKQEAgLTI5LDggKzI5LDggQEAKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTI2LDkgKzEyNiw5IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpyZXF1ZXN0LmxlYWtSZWYoKSk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGQodWludDY0X3QgcmVxdWVzdElELCBQYXNzUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCkK
KyAgICB2b2lkIGFkZCh1aW50NjRfdCByZXF1ZXN0SUQsIFJlZlB0cjxBc3luY1JlcXVlc3Q+JiYg
cmVxdWVzdCkKICAgICB7Ci0gICAgICAgIG1fcmVxdWVzdE1hcC5hZGQocmVxdWVzdElELCByZXF1
ZXN0KTsKKyAgICAgICAgbV9yZXF1ZXN0TWFwLmFkZChyZXF1ZXN0SUQsIFdURk1vdmUocmVxdWVz
dCkpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4
dGVuc2lvbi5jcHAKaW5kZXggZmI1ZTA0ZjA1NmM3MTVkNzcxYjAyNTE0YzZlMjBlNzA0MGJlNzI0
MC4uZmM3NGI2MDE3M2M1NTI1OTBiNTRlMzQwYzY2YWUxZmEzNjg0NTcwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0
ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBw
YXRoLCBQYXNzUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IHNhbmRib3hFeHRlbnNpb24pCitCbG9i
RGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6QmxvYkRhdGFGaWxlUmVmZXJl
bmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJv
eEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKQogICAgIDogQmxvYkRhdGFGaWxlUmVmZXJl
bmNlKHBhdGgpCi0gICAgLCBtX3NhbmRib3hFeHRlbnNpb24oc2FuZGJveEV4dGVuc2lvbikKKyAg
ICAsIG1fc2FuZGJveEV4dGVuc2lvbihXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
V2l0aFNhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCmluZGV4IDdhZThkMmE2ZjU0YTRkOTU4
YmVhNzZhYzcwNDMwNGZiMTZlMjVhOTEuLjc1YTVkNGQwY2JiZWMwODVhZmRkYjM4ZmViYjUzM2U3
MzY0MDYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCkBAIC0zNCwxMyAr
MzQsMTMgQEAgY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIAogY2xhc3MgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYkRh
dGFGaWxlUmVmZXJlbmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiBzYW5kYm94RXh0ZW5zaW9uKQorICAgIHN0YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4mJiBzYW5kYm94RXh0ZW5zaW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24ocGF0aCwgc2FuZGJv
eEV4dGVuc2lvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b24pKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhT
YW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPik7CisgICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJik7CiAgICAgdmly
dHVhbCB+QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oKTsKIAogICAg
IHZvaWQgcHJlcGFyZUZvckZpbGVBY2Nlc3MoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA3NDBjZWUwOTMxZjhkODU4ZmU4YTNkNzJjMzAy
ZjJlNDkxZTJmYjc0Li40MDQwNTQyMGNmNzUwMTk1NTNjZDAxNTQzNTQ1Njg1N2QwZDEwYWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC01MSwxMiArNTEs
MTIgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKFRleHR1
cmVNYXBwZXImIHRleHR1cmVNYXBwZXIpCiAgICAgbV9zdXJmYWNlID0gbnVsbHB0cjsKIH0KIAot
dm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZmZXIoY29uc3QgSW50
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIFBhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcihjb25zdCBJbnRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgUmVmUHRyPENvb3JkaW5hdGVkU3Vy
ZmFjZT4mJiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgbV9zb3VyY2VS
ZWN0ID0gc291cmNlUmVjdDsKICAgICBtX3RpbGVSZWN0ID0gdGlsZVJlY3Q7CiAgICAgbV9zdXJm
YWNlT2Zmc2V0ID0gb2Zmc2V0OwotICAgIG1fc3VyZmFjZSA9IGJ1ZmZlcjsKKyAgICBtX3N1cmZh
Y2UgPSBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6
OmNyZWF0ZVRpbGUodWludDMyX3QgaWQsIGZsb2F0IHNjYWxlKQpAQCAtNzcsMTEgKzc3LDExIEBA
IHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnJlbW92ZUFsbFRpbGVzKCkKICAgICAgICAg
bV90aWxlc1RvUmVtb3ZlLmFkZChrZXkpOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJh
Y2tCdWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mJiBi
YWNrQnVmZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFT
U0VSVChpdCAhPSBtX3RpbGVzLmVuZCgpKTsKLSAgICBpdC0+dmFsdWUuc2V0QmFja0J1ZmZlcih0
aWxlUmVjdCwgc291cmNlUmVjdCwgYmFja0J1ZmZlciwgb2Zmc2V0KTsKKyAgICBpdC0+dmFsdWUu
c2V0QmFja0J1ZmZlcih0aWxlUmVjdCwgc291cmNlUmVjdCwgV1RGTW92ZShiYWNrQnVmZmVyKSwg
b2Zmc2V0KTsKIH0KIAogUmVmUHRyPEJpdG1hcFRleHR1cmU+IENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjp0ZXh0dXJlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5o
CmluZGV4IDE2NmMwYTFjN2RlOGVkYWY5MDg0OGU2NzQ5NWQ0MGQyZGQwOTc5NjcuLjFiOTMyYmI0
ZGJmMDY5ZmE3NmZjYjY3MzNiMjU3MDdjYzNhOTc2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICBpbmxpbmUg
ZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAgICAgdm9pZCBzd2FwQnVm
ZmVycyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyJik7Ci0gICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKKyAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJm
YWNlPiYmIGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAogcHJpdmF0ZToKICAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBm
bG9hdCk7CiAgICAgdm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCk7CiAgICAgdm9pZCBy
ZW1vdmVBbGxUaWxlcygpOwotICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OworICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5h
dGVkU3VyZmFjZT4mJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMgUmVm
PENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGlsZU9wZXJhdGlv
bnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpCaXRtYXBU
ZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCA3NjE1ZjA5MWRmMzczYzdhZThiNTg3OTU5YjE0YmZm
YTE2MTk4N2U1Li5iOTFiYWEwOWU0OTdkZjZiODRiY2ExMzM0N2MxMWE5N2IxM2FkM2U4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTQyNywxMCArNDI3
LDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jVXBkYXRlQXRsYXNlcyhj
b25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmCiAgICAgICAgIGNyZWF0ZVVwZGF0ZUF0bGFz
KGF0bGFzLmZpcnN0LCBhdGxhcy5zZWNvbmQpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6Y3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0cjxD
b29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2UpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6Y3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4mJiBzdXJmYWNlKQogewogICAgIEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhh
dGxhc0lEKSk7Ci0gICAgbV9zdXJmYWNlcy5hZGQoYXRsYXNJRCwgc3VyZmFjZSk7CisgICAgbV9z
dXJmYWNlcy5hZGQoYXRsYXNJRCwgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQpA
QCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVJ
bWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnCiAgICAgbV9pbWFnZUJh
Y2tpbmdzLmFkZChpbWFnZUlELCBiYWNraW5nU3RvcmUucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEIGltYWdlSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJm
YWNlKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZh
Y2U+JiYgc3VyZmFjZSkKIHsKICAgICBBU1NFUlQobV9pbWFnZUJhY2tpbmdzLmNvbnRhaW5zKGlt
YWdlSUQpKTsKICAgICBJbWFnZUJhY2tpbmdNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZUJhY2tp
bmdzLmZpbmQoaW1hZ2VJRCk7CkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
IGltYWcKICAgICAvLyBTZWUgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzaG91bGREaXJlY3Rs
eUNvbXBvc2l0ZUltYWdlKCkKICAgICBBU1NFUlQoMjAwMCA+PSBzdGQ6Om1heChyZWN0LndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkpKTsKICAgICBiYWNraW5nU3RvcmUtPnNldFNpemUocmVjdC5zaXpl
KCkpOwotICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZSgxIC8qIGlkICovLCByZWN0LCByZWN0
LCBzdXJmYWNlLCByZWN0LmxvY2F0aW9uKCkpOworICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlVGls
ZSgxIC8qIGlkICovLCByZWN0LCByZWN0LCBXVEZNb3ZlKHN1cmZhY2UpLCByZWN0LmxvY2F0aW9u
KCkpOwogCiAgICAgbV9iYWNraW5nU3RvcmVzV2l0aFBlbmRpbmdCdWZmZXJzLmFkZChiYWNraW5n
U3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAppbmRleCBi
OWYxY2UyMWNkMzQ5N2NiNjg0OWVlYmI1NDllZWRiMzg5MTZjMzQyLi5iMjAwMDQ3ZDUwODExMWQ4
MWRjNDVmNTg4MzkzMjNmZDEzZGE2NzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuaApAQCAtMTAyLDEyICsxMDIsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExh
eWVyUmVwYWludENvdW50SWZOZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29u
c3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKIAogICAgIHZvaWQg
c3luY1VwZGF0ZUF0bGFzZXMoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
Jik7Ci0gICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4pOworICAgIHZvaWQgY3JlYXRlVXBkYXRl
QXRsYXModWludDMyX3QgYXRsYXNJRCwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFj
ZT4mJik7CiAgICAgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKTsKIAog
ICAgIHZvaWQgc3luY0ltYWdlQmFja2luZ3MoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlJik7CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGlu
YXRlZFN1cmZhY2U+KTsKKyAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhXZWJDb3JlOjpDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lELCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNl
PiYmKTsKICAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmNwcAppbmRleCBhZDcwNjNiMjRmNmYwOGVhZTJiNjAzNzI2MjZkZGJkMGFmYmQzNDI1Li5kNGRk
YTJhYmM4OGU0MTI2YmVjYTZhOTk3MjljZjgwZGVhNmQ1YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW5Nb2R1bGUuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6c2h1dGRvd24oKQogICAgIGluaXRpYWxpemVkTmV0c2NhcGVQbHVnaW5Nb2R1bGVzKCkucmVt
b3ZlKHBsdWdpbk1vZHVsZUluZGV4KTsKIH0KIAotUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1v
ZHVsZT4gTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCkKK1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gTmV0c2NhcGVQbHVnaW5Nb2R1
bGU6OmdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKIHsKICAgICAvLyBGaXJz
dCwgc2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBhIG1vZHVsZSB3aXRoIHRoaXMgcGx1Zy1pbiBwYXRo
LgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5pdGlhbGl6ZWROZXRzY2FwZVBsdWdpbk1v
ZHVsZXMoKS5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKaW5kZXggZjE5
Zjk0MTYxMGYyYTg1ZTVhZWNhOTc4YWJmMmM1MmUyN2VlNmU3Zi4uMWQ3YTU1N2YyMmYxZWFhMTk2
MjYxZGEwNzIyYmE4OTBjNDM4ZTlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCkBAIC00
NSw3ICs0NSw3IEBAIHN0cnVjdCBSYXdQbHVnaW5NZXRhRGF0YTsKIAogY2xhc3MgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBnZXRP
ckNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIHN0YXRpYyBSZWZQdHI8TmV0
c2NhcGVQbHVnaW5Nb2R1bGU+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7
CiAgICAgfk5ldHNjYXBlUGx1Z2luTW9kdWxlKCk7CiAKICAgICBjb25zdCBOUFBsdWdpbkZ1bmNz
JiBwbHVnaW5GdW5jcygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRnVuY3M7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcAppbmRleCA1OWZlMTE4ODIzMjg0Nzdh
NzNkM2MzMzVjMGY0NTg1MDk1ZGYyNDYyLi42MmIxMWI3M2NmMmQ3N2FiODBmNTMzMjY5MWZiODdl
ZDJiYjJmMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlzaXRlZExpbmtU
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3Bw
CkBAIC01Miw5ICs1Miw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Bvd2VyT2YyKHVuc2lnbmVk
IHYpCiB9CiAjZW5kaWYKIAotdm9pZCBWaXNpdGVkTGlua1RhYmxlOjpzZXRTaGFyZWRNZW1vcnko
UGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKK3ZvaWQgVmlzaXRlZExpbmtU
YWJsZTo6c2V0U2hhcmVkTWVtb3J5KFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQog
ewotICAgIG1fc2hhcmVkTWVtb3J5ID0gc2hhcmVkTWVtb3J5OworICAgIG1fc2hhcmVkTWVtb3J5
ID0gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwogICAgIAogICAgIEFTU0VSVChtX3NoYXJlZE1lbW9y
eSk7CiAgICAgQVNTRVJUKCEobV9zaGFyZWRNZW1vcnktPnNpemUoKSAlIHNpemVvZihMaW5rSGFz
aCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1RhYmxl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5oCmluZGV4IDg2MWNl
N2E3OTMyMTQ5NjE1NWM1Nzc1ZjNhMTI2OTEyY2RlMjU0OWUuLjFkOTEyNjc1ODE1NGMxODk0OWQ0
NWQyODUwYTMxYjFjZmU5NGVjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9W
aXNpdGVkTGlua1RhYmxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5r
VGFibGUuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBWaXNpdGVkTGlua1RhYmxlX2gKIAog
I2luY2x1ZGUgPFdlYkNvcmUvTGlua0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOSw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBWaXNpdGVkTGlua1RhYmxlKCk7CiAgICAgflZpc2l0ZWRM
aW5rVGFibGUoKTsKIAotICAgIHZvaWQgc2V0U2hhcmVkTWVtb3J5KFBhc3NSZWZQdHI8U2hhcmVk
TWVtb3J5Pik7CisgICAgdm9pZCBzZXRTaGFyZWRNZW1vcnkoUmVmPFNoYXJlZE1lbW9yeT4mJik7
CiAKICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBVSSBwcm9jZXNz
LgogICAgIGJvb2wgYWRkTGlua0hhc2goV2ViQ29yZTo6TGlua0hhc2gpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggMWI3NTRmMzRkNTU1
MzVjMmJhYTEzYTAzYWRjMTUxN2VhYjliODRkZS4uOTE0NTBmZDk5MWIwOTExMDExMDZmYTc0MjFi
Y2M4ZjQ1Y2Y1MDZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0Zvcndh
cmRMaXN0SXRlbS5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIEFQSSB7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFZpZXdTbmFwc2hvdCogc25hcHNob3QoKSBjb25zdCB7IHJldHVybiBt
X2l0ZW1TdGF0ZS5zbmFwc2hvdC5nZXQoKTsgfQotICAgIHZvaWQgc2V0U25hcHNob3QoUGFzc1Jl
ZlB0cjxWaWV3U25hcHNob3Q+IHNuYXBzaG90KSB7IG1faXRlbVN0YXRlLnNuYXBzaG90ID0gc25h
cHNob3Q7IH0KKyAgICB2b2lkIHNldFNuYXBzaG90KFJlZlB0cjxWaWV3U25hcHNob3Q+JiYgc25h
cHNob3QpIHsgbV9pdGVtU3RhdGUuc25hcHNob3QgPSBXVEZNb3ZlKHNuYXBzaG90KTsgfQogI2Vu
ZGlmCiAKICAgICBzdGF0aWMgdWludDY0X3QgaGlnaGVzdFVzZWRJdGVtSUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggZWUyMWI0NmYxNWZm
ZTBkYzg3ZTFiYWRhNGE2MmJiNzIzMTFhYmIwMS4uZDMwNzhiNTlhYTNlYWNlOTczZGNkOTJlNzVk
NTExOThkYTM1YzRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRl
eHRNZW51SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51
SXRlbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgV2ViQ29udGV4dE1lbnVJdGVtOjpXZWJDb250ZXh0
TWVudUl0ZW0oY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgZGF0YSkKIHsKIH0KIAotUGFz
c1JlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+IFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJheSogc3VibWVudUl0ZW1z
KQorUmVmPFdlYkNvbnRleHRNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiB0aXRsZSwgYm9vbCBlbmFibGVkLCBBUEk6OkFycmF5KiBzdWJtZW51SXRlbXMp
CiB7CiAgICAgc2l6ZV90IHNpemUgPSBzdWJtZW51SXRlbXMtPnNpemUoKTsKIApAQCAtNTIsNyAr
NTIsNyBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVJdGVt
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgYgogICAgICAgICAgICAgc3VibWVudS5hcHBl
bmQoaXRlbS0+ZGF0YSgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNv
bnRleHRNZW51SXRlbShXZWJDb250ZXh0TWVudUl0ZW1EYXRhKFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ05vQWN0aW9uLCB0aXRsZSwgZW5hYmxlZCwgc3VibWVudSkpKS5sZWFrUmVmKCk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvbnRleHRNZW51
SXRlbURhdGEoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIHRpdGxlLCBlbmFi
bGVkLCBzdWJtZW51KSkpLmxlYWtSZWYoKTsKIH0KIAogV2ViQ29udGV4dE1lbnVJdGVtKiBXZWJD
b250ZXh0TWVudUl0ZW06OnNlcGFyYXRvckl0ZW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvbnRleHRNZW51SXRlbS5oCmluZGV4IDk4YjlmMDFkM2MyNTZkMzhjMmJjODQ1NmUyYWFiMGRk
M2VkYTRjYmEuLjk3NjMyZjk2NmNjZjc4YzA1ZTMyNmM1ZjZhZDJmZmRkNzUxNjViZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudUl0
ZW0oZGF0YSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51
SXRlbT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJh
eSogc3VibWVudUl0ZW1zKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvbnRleHRNZW51SXRlbT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJheSogc3VibWVu
dUl0ZW1zKTsKICAgICBzdGF0aWMgV2ViQ29udGV4dE1lbnVJdGVtKiBzZXBhcmF0b3JJdGVtKCk7
CiAKICAgICBSZWY8QVBJOjpBcnJheT4gc3VibWVudUl0ZW1zQXNBUElBcnJheSgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKaW5kZXgg
M2YwMzk3MWMzZWVkM2FjNDU1YzBjOTU0YzE3MmJhZDg0NGRlZDdmNi4uMWRkNzk4OWJjYzAzZDQw
MDAwZGNkOWNjMjY5NGNiYWJjZmZlNDYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgRGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJSZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIu
Y3BwCmluZGV4IDljYzEwZWNhNDZjNDRlMTMxMGMyYjY3NzM2NmI0MDI3M2NhNDQ5NjIuLmE3YjRm
NDY1NTU2NjMzNWMwNjZhYjE2OTk2MGU4MWZjZWE5YjBkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlJlbmRlckxheWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5
ZXI+IFdlYlJlbmRlckxheWVyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKK1JlZlB0cjxXZWJSZW5k
ZXJMYXllcj4gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQogewogICAgIEZy
YW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKICAgICBpZiAoIW1haW5GcmFtZSkK
QEAgLTYzLDEyICs2MywxMiBAQCBQYXNzUmVmUHRyPFdlYlJlbmRlckxheWVyPiBXZWJSZW5kZXJM
YXllcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJS
ZW5kZXJMYXllcihyb290TGF5ZXIpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJSZW5kZXJMYXllcj4g
V2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZShQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gcmVuZGVy
ZXIsIGJvb2wgaXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBD
b21wb3NpdGluZ0xheWVyVHlwZSB0eXBlLCBXZWJDb3JlOjpJbnRSZWN0IGFic29sdXRlQm91bmRp
bmdCb3gsIGRvdWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwgUGFzc1JlZlB0cjxBUEk6
OkFycmF5PiBuZWdhdGl2ZVpPcmRlckxpc3QsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gbm9ybWFs
Rmxvd0xpc3QsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gcG9zaXRpdmVaT3JkZXJMaXN0LCBQYXNz
UmVmUHRyPFdlYlJlbmRlckxheWVyPiBmcmFtZUNvbnRlbnRzTGF5ZXIpCitSZWY8V2ViUmVuZGVy
TGF5ZXI+IFdlYlJlbmRlckxheWVyOjpjcmVhdGUoUmVmUHRyPFdlYlJlbmRlck9iamVjdD4mJiBy
ZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGluZywgYm9vbCBpc0NsaXBw
ZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlIHR5cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVC
b3VuZGluZ0JveCwgZG91YmxlIGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlLCBSZWZQdHI8QVBJ
OjpBcnJheT4mJiBuZWdhdGl2ZVpPcmRlckxpc3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5vcm1h
bEZsb3dMaXN0LCBSZWZQdHI8QVBJOjpBcnJheT4mJiBwb3NpdGl2ZVpPcmRlckxpc3QsIFJlZlB0
cjxXZWJSZW5kZXJMYXllcj4mJiBmcmFtZUNvbnRlbnRzTGF5ZXIpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJSZW5kZXJMYXllcihyZW5kZXJlciwgaXNSZWZsZWN0aW9uLCBpc0NsaXBw
aW5nLCBpc0NsaXBwZWQsIHR5cGUsIGFic29sdXRlQm91bmRpbmdCb3gsIGJhY2tpbmdTdG9yZU1l
bW9yeUVzdGltYXRlLCBuZWdhdGl2ZVpPcmRlckxpc3QsIG5vcm1hbEZsb3dMaXN0LCBwb3NpdGl2
ZVpPcmRlckxpc3QsIGZyYW1lQ29udGVudHNMYXllcikpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlJlbmRlckxheWVyKFdURk1vdmUocmVuZGVyZXIpLCBpc1JlZmxlY3Rpb24sIGlzQ2xp
cHBpbmcsIGlzQ2xpcHBlZCwgdHlwZSwgYWJzb2x1dGVCb3VuZGluZ0JveCwgYmFja2luZ1N0b3Jl
TWVtb3J5RXN0aW1hdGUsIFdURk1vdmUobmVnYXRpdmVaT3JkZXJMaXN0KSwgV1RGTW92ZShub3Jt
YWxGbG93TGlzdCksIFdURk1vdmUocG9zaXRpdmVaT3JkZXJMaXN0KSwgV1RGTW92ZShmcmFtZUNv
bnRlbnRzTGF5ZXIpKSk7CiB9CiAKLVBhc3NSZWZQdHI8QVBJOjpBcnJheT4gV2ViUmVuZGVyTGF5
ZXI6OmNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCkK
K1JlZlB0cjxBUEk6OkFycmF5PiBXZWJSZW5kZXJMYXllcjo6Y3JlYXRlQXJyYXlGcm9tTGF5ZXJM
aXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0KQogewogICAgIGlmICghbGlzdCB8fCAhbGlz
dC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyOCwxOCArMTI4LDE4IEBA
IFdlYlJlbmRlckxheWVyOjpXZWJSZW5kZXJMYXllcihSZW5kZXJMYXllciogbGF5ZXIpCiAgICAg
fQogfQogCi1XZWJSZW5kZXJMYXllcjo6V2ViUmVuZGVyTGF5ZXIoUGFzc1JlZlB0cjxXZWJSZW5k
ZXJPYmplY3Q+IHJlbmRlcmVyLCBib29sIGlzUmVmbGVjdGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBi
b29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5cGUgdHlwZSwgV2ViQ29yZTo6SW50UmVj
dCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBkb3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUs
IFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gbmVnYXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPEFQ
STo6QXJyYXk+IG5vcm1hbEZsb3dMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IHBvc2l0aXZl
Wk9yZGVyTGlzdCwgUGFzc1JlZlB0cjxXZWJSZW5kZXJMYXllcj4gZnJhbWVDb250ZW50c0xheWVy
KQotICAgIDogbV9yZW5kZXJlcihyZW5kZXJlcikKK1dlYlJlbmRlckxheWVyOjpXZWJSZW5kZXJM
YXllcihSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiYmIHJlbmRlcmVyLCBib29sIGlzUmVmbGVjdGlv
biwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5cGUg
dHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBkb3VibGUgYmFja2lu
Z1N0b3JlTWVtb3J5RXN0aW1hdGUsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5lZ2F0aXZlWk9yZGVy
TGlzdCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgbm9ybWFsRmxvd0xpc3QsIFJlZlB0cjxBUEk6OkFy
cmF5PiYmIHBvc2l0aXZlWk9yZGVyTGlzdCwgUmVmUHRyPFdlYlJlbmRlckxheWVyPiYmIGZyYW1l
Q29udGVudHNMYXllcikKKyAgICA6IG1fcmVuZGVyZXIoV1RGTW92ZShyZW5kZXJlcikpCiAgICAg
LCBtX2lzUmVmbGVjdGlvbihpc1JlZmxlY3Rpb24pCiAgICAgLCBtX2lzQ2xpcHBpbmcoaXNDbGlw
cGluZykKICAgICAsIG1faXNDbGlwcGVkKGlzQ2xpcHBlZCkKICAgICAsIG1fY29tcG9zaXRpbmdM
YXllclR5cGUodHlwZSkKICAgICAsIG1fYWJzb2x1dGVCb3VuZGluZ0JveChhYnNvbHV0ZUJvdW5k
aW5nQm94KQogICAgICwgbV9iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZShiYWNraW5nU3RvcmVN
ZW1vcnlFc3RpbWF0ZSkKLSAgICAsIG1fbmVnYXRpdmVaT3JkZXJMaXN0KG5lZ2F0aXZlWk9yZGVy
TGlzdCkKLSAgICAsIG1fbm9ybWFsRmxvd0xpc3Qobm9ybWFsRmxvd0xpc3QpCi0gICAgLCBtX3Bv
c2l0aXZlWk9yZGVyTGlzdChwb3NpdGl2ZVpPcmRlckxpc3QpCi0gICAgLCBtX2ZyYW1lQ29udGVu
dHNMYXllcihmcmFtZUNvbnRlbnRzTGF5ZXIpCisgICAgLCBtX25lZ2F0aXZlWk9yZGVyTGlzdChX
VEZNb3ZlKG5lZ2F0aXZlWk9yZGVyTGlzdCkpCisgICAgLCBtX25vcm1hbEZsb3dMaXN0KFdURk1v
dmUobm9ybWFsRmxvd0xpc3QpKQorICAgICwgbV9wb3NpdGl2ZVpPcmRlckxpc3QoV1RGTW92ZShw
b3NpdGl2ZVpPcmRlckxpc3QpKQorICAgICwgbV9mcmFtZUNvbnRlbnRzTGF5ZXIoV1RGTW92ZShm
cmFtZUNvbnRlbnRzTGF5ZXIpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJM
YXllci5oCmluZGV4IDViNmJlMDQzMzRlNDYyMGQxZDBhOWYyM2FiMTM5NDUzZGJkYjQyZGMuLjUx
NDE0ZGZiNDdhMmU2ZjI1NmYzMGQzZjVhMTUzYjgxNGM3OGFiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJSZW5kZXJMYXllci5oCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNzIFdlYlJlbmRlckxh
eWVyIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UmVuZGVyTGF5
ZXI+IHsKIHB1YmxpYzoKICAgICBlbnVtIENvbXBvc2l0aW5nTGF5ZXJUeXBlIHsgTm9uZSwgTm9y
bWFsLCBUaWxlZCwgTWVkaWEsIENvbnRhaW5lciB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViUmVuZGVyTGF5ZXI+IGNyZWF0ZShXZWJQYWdlKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViUmVuZGVyTGF5ZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gcmVuZGVy
ZXIsIGJvb2wgaXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBD
b21wb3NpdGluZ0xheWVyVHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94
LCBkb3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUsIFBhc3NSZWZQdHI8QVBJOjpBcnJh
eT4gbmVnYXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5vcm1hbEZsb3dM
aXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IHBvc2l0aXZlWk9yZGVyTGlzdCwgUGFzc1JlZlB0
cjxXZWJSZW5kZXJMYXllcj4gZnJhbWVDb250ZW50c0xheWVyKTsKKyAgICBzdGF0aWMgUmVmUHRy
PFdlYlJlbmRlckxheWVyPiBjcmVhdGUoV2ViUGFnZSopOworICAgIHN0YXRpYyBSZWY8V2ViUmVu
ZGVyTGF5ZXI+IGNyZWF0ZShSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiYmIHJlbmRlcmVyLCBib29s
IGlzUmVmbGVjdGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRp
bmdMYXllclR5cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCwgZG91Ymxl
IGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlLCBSZWZQdHI8QVBJOjpBcnJheT4mJiBuZWdhdGl2
ZVpPcmRlckxpc3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5vcm1hbEZsb3dMaXN0LCBSZWZQdHI8
QVBJOjpBcnJheT4mJiBwb3NpdGl2ZVpPcmRlckxpc3QsIFJlZlB0cjxXZWJSZW5kZXJMYXllcj4m
JiBmcmFtZUNvbnRlbnRzTGF5ZXIpOwogCiAgICAgQVBJOjpBcnJheSogbmVnYXRpdmVaT3JkZXJM
aXN0KCkgY29uc3QgeyByZXR1cm4gbV9uZWdhdGl2ZVpPcmRlckxpc3QuZ2V0KCk7IH0KICAgICBB
UEk6OkFycmF5KiBub3JtYWxGbG93TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9ybWFsRmxvd0xp
c3QuZ2V0KCk7IH0KQEAgLTU4LDkgKzU4LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFdlYlJlbmRlckxheWVyKFdlYkNvcmU6OlJlbmRlckxheWVyKik7Ci0gICAgV2ViUmVu
ZGVyTGF5ZXIoUGFzc1JlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IHJlbmRlcmVyLCBib29sIGlzUmVm
bGVjdGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXll
clR5cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCwgZG91YmxlIGJhY2tp
bmdTdG9yZU1lbW9yeUVzdGltYXRlLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5lZ2F0aXZlWk9y
ZGVyTGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBub3JtYWxGbG93TGlzdCwgUGFzc1JlZlB0
cjxBUEk6OkFycmF5PiBwb3NpdGl2ZVpPcmRlckxpc3QsIFBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5
ZXI+IGZyYW1lQ29udGVudHNMYXllcik7CisgICAgV2ViUmVuZGVyTGF5ZXIoUmVmUHRyPFdlYlJl
bmRlck9iamVjdD4mJiByZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGlu
ZywgYm9vbCBpc0NsaXBwZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlLCBXZWJDb3JlOjpJbnRSZWN0
IGFic29sdXRlQm91bmRpbmdCb3gsIGRvdWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwg
UmVmUHRyPEFQSTo6QXJyYXk+JiYgbmVnYXRpdmVaT3JkZXJMaXN0LCBSZWZQdHI8QVBJOjpBcnJh
eT4mJiBub3JtYWxGbG93TGlzdCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgcG9zaXRpdmVaT3JkZXJM
aXN0LCBSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+JiYgZnJhbWVDb250ZW50c0xheWVyKTsKIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChW
ZWN0b3I8V2ViQ29yZTo6UmVuZGVyTGF5ZXIqPiopOworICAgIHN0YXRpYyBSZWZQdHI8QVBJOjpB
cnJheT4gY3JlYXRlQXJyYXlGcm9tTGF5ZXJMaXN0KFZlY3RvcjxXZWJDb3JlOjpSZW5kZXJMYXll
cio+Kik7CiAKICAgICBSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBtX3JlbmRlcmVyOwogICAgIGJv
b2wgbV9pc1JlZmxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IGFmYzQzMzZlZDg0NTg4MzA4Mzc5MmI1OTk3NDRjZGY3NDQwZWFmOWIuLjU5MjJi
MDAwMDk4YjQwZTY1ZDM2MWM4NDAwZmE3NjM1NDE3NmZiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwCkBAIC01OCw5ICs1OCw5IEBAIFJlZlB0cjxXZWJSZW5k
ZXJPYmplY3Q+IFdlYlJlbmRlck9iamVjdDo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QoY29udGVudFJlbmRlcmVyLCB0cnVlKSk7
CiB9CiAKLVBhc3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBXZWJSZW5kZXJPYmplY3Q6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudFRhZ05hbWUsIGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGVsZW1lbnRDbGFzc05h
bWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0
IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0
aCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBjaGlsZHJlbikKK1JlZjxXZWJSZW5kZXJPYmplY3Q+
IFdlYlJlbmRlck9iamVjdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFJlZlB0cjxBUEk6OkFy
cmF5PiYmIGVsZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0
aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0ZXh0U25pcHBl
dCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgY2hpbGRyZW4pCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QobmFtZSwgZWxlbWVudFRh
Z05hbWUsIGVsZW1lbnRJRCwgZWxlbWVudENsYXNzTmFtZXMsIGFic29sdXRlUG9zaXRpb24sIGZy
YW1lUmVjdCwgdGV4dFNuaXBwZXQsIHRleHRMZW5ndGgsIGNoaWxkcmVuKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViUmVuZGVyT2JqZWN0KG5hbWUsIGVsZW1lbnRUYWdOYW1lLCBlbGVt
ZW50SUQsIFdURk1vdmUoZWxlbWVudENsYXNzTmFtZXMpLCBhYnNvbHV0ZVBvc2l0aW9uLCBmcmFt
ZVJlY3QsIHRleHRTbmlwcGV0LCB0ZXh0TGVuZ3RoLCBXVEZNb3ZlKGNoaWxkcmVuKSkpOwogfQog
CiBXZWJSZW5kZXJPYmplY3Q6OldlYlJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBib29sIHNob3VsZEluY2x1ZGVEZXNjZW5kYW50cykKQEAgLTEyNywxMyArMTI3LDEzIEBAIFdl
YlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJv
b2wgc2hvdWxkSW5jbHVkZURlc2NlCiAgICAgbV9jaGlsZHJlbiA9IEFQSTo6QXJyYXk6OmNyZWF0
ZShXVEZNb3ZlKGNoaWxkcmVuKSk7CiB9CiAKLVdlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2Jq
ZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29u
c3QgU3RyaW5nJiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gZWxlbWVudENsYXNz
TmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6OkludFJl
Y3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25lZCB0ZXh0TGVu
Z3RoLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKQotICAgIDogbV9jaGlsZHJlbihj
aGlsZHJlbikKK1dlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50
SUQsIFJlZlB0cjxBUEk6OkFycmF5PiYmIGVsZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQ
b2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3Qg
U3RyaW5nJiB0ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUmVmUHRyPEFQSTo6QXJy
YXk+JiYgY2hpbGRyZW4pCisgICAgOiBtX2NoaWxkcmVuKFdURk1vdmUoY2hpbGRyZW4pKQogICAg
ICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX2VsZW1lbnRUYWdOYW1lKGVsZW1lbnRUYWdOYW1lKQog
ICAgICwgbV9lbGVtZW50SUQoZWxlbWVudElEKQogICAgICwgbV90ZXh0U25pcHBldCh0ZXh0U25p
cHBldCkKLSAgICAsIG1fZWxlbWVudENsYXNzTmFtZXMoZWxlbWVudENsYXNzTmFtZXMpCisgICAg
LCBtX2VsZW1lbnRDbGFzc05hbWVzKFdURk1vdmUoZWxlbWVudENsYXNzTmFtZXMpKQogICAgICwg
bV9hYnNvbHV0ZVBvc2l0aW9uKGFic29sdXRlUG9zaXRpb24pCiAgICAgLCBtX2ZyYW1lUmVjdChm
cmFtZVJlY3QpCiAgICAgLCBtX3RleHRMZW5ndGgodGV4dExlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJSZW5kZXJPYmplY3QuaAppbmRleCBmYzI1NTgyMzE3YTUzOGJiNGQ0NzkzMGVhZTVh
ZTBkYjVmNTFmNzc1Li44NTIyZGFjODg0NDI3YjU4NzVhOWQ3YWNkNGRjM2I1MDY0Zjg4NzM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5oCkBAIC0yOCw3ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4K
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEFQSSB7CkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVuZGVyT2Jq
ZWN0KHJlbmRlcmVyLCBmYWxzZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YlJlbmRlck9iamVjdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBl
bGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpB
cnJheT4gZWxlbWVudENsYXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRp
b24sIFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0
LCB1bnNpZ25lZCB0ZXh0TGVuZ3RoLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKTsK
KyAgICBzdGF0aWMgUmVmPFdlYlJlbmRlck9iamVjdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQs
IFJlZlB0cjxBUEk6OkFycmF5PiYmIGVsZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2lu
dCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3QgU3Ry
aW5nJiB0ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUmVmUHRyPEFQSTo6QXJyYXk+
JiYgY2hpbGRyZW4pOwogCiAgICAgdmlydHVhbCB+V2ViUmVuZGVyT2JqZWN0KCk7CiAKQEAgLTcx
LDcgKzcxLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlJlbmRlck9iamVjdChXZWJD
b3JlOjpSZW5kZXJPYmplY3QqLCBib29sIHNob3VsZEluY2x1ZGVEZXNjZW5kYW50cyk7Ci0gICAg
V2ViUmVuZGVyT2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50
VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4g
ZWxlbWVudENsYXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdl
YkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNp
Z25lZCB0ZXh0TGVuZ3RoLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKTsKKyAgICBX
ZWJSZW5kZXJPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRU
YWdOYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgZWxl
bWVudENsYXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNv
cmU6OkludFJlY3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25l
ZCB0ZXh0TGVuZ3RoLCBSZWZQdHI8QVBJOjpBcnJheT4mJiBjaGlsZHJlbik7CiAKICAgICBSZWZQ
dHI8QVBJOjpBcnJheT4gbV9jaGlsZHJlbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCmluZGV4IGE5NjFhMmIzMWVmODc1MzIxZDgxMzljY2Q5NDM0
ODY4M2MwMjc1YjUuLjI5NTlkNTkxZjZlYjk4NGI0ZGZhOWIwYzY1NmNhNzdiODQ3Zjc4NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKQEAgLTIw
Miw3ICsyMDIsNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnBlbmRpbmdWaXNpdGVkTGlua3NU
aW1lckZpcmVkKCkKIAogdm9pZCBWaXNpdGVkTGlua1N0b3JlOjpyZXNpemVUYWJsZSh1bnNpZ25l
ZCBuZXdUYWJsZVNpemUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbmV3VGFibGVNZW1v
cnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKG5ld1RhYmxlU2l6ZSAqIHNpemVvZihMaW5rSGFz
aCkpOworICAgIGF1dG8gbmV3VGFibGVNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKG5l
d1RhYmxlU2l6ZSAqIHNpemVvZihMaW5rSGFzaCkpOwogCiAgICAgaWYgKCFuZXdUYWJsZU1lbW9y
eSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5
IGZvciB2aXNpdGVkIGxpbmsgdGFibGUiKTsKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFZpc2l0
ZWRMaW5rU3RvcmU6OnJlc2l6ZVRhYmxlKHVuc2lnbmVkIG5ld1RhYmxlU2l6ZSkKICAgICBSZWZQ
dHI8U2hhcmVkTWVtb3J5PiBjdXJyZW50VGFibGVNZW1vcnkgPSBtX3RhYmxlLnNoYXJlZE1lbW9y
eSgpOwogICAgIHVuc2lnbmVkIGN1cnJlbnRUYWJsZVNpemUgPSBtX3RhYmxlU2l6ZTsKIAotICAg
IG1fdGFibGUuc2V0U2hhcmVkTWVtb3J5KG5ld1RhYmxlTWVtb3J5KTsKKyAgICBtX3RhYmxlLnNl
dFNoYXJlZE1lbW9yeShuZXdUYWJsZU1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBtX3Rh
YmxlU2l6ZSA9IG5ld1RhYmxlU2l6ZTsKIAogICAgIGlmIChjdXJyZW50VGFibGVNZW1vcnkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlu
a1RhYmxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDFkNGI5N2ViZTlmMmRhZjU0NjVl
YmJhYjVjZjlhMTkxZDc4ZGVkZTQuLjZlOGIwNmRmYjhkM2Q1ZjBiY2Q1M2Q1MDg4MTk1ODRjOGYz
NzExMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNp
dGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcApAQCAtOTQsNyArOTQsNyBA
QCB2b2lkIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpzZXRWaXNpdGVkTGlua1RhYmxlKGNv
bnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJgogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Zpc2l0ZWRMaW5rVGFibGUuc2V0U2hhcmVkTWVtb3J5KFdURk1v
dmUoc2hhcmVkTWVtb3J5KSk7CisgICAgbV92aXNpdGVkTGlua1RhYmxlLnNldFNoYXJlZE1lbW9y
eShzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBpbnZhbGlkYXRlU3R5bGVz
Rm9yQWxsTGlua3MoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309866</attachid>
            <date>2017-05-11 21:46:07 -0700</date>
            <delta_ts>2017-05-11 21:50:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172017-20170511214606.patch</filename>
            <type>text/plain</type>
            <size>42702</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWVlZTcyZjIzZWM0NmM4
NzdmYmI1YWE2M2FiN2Q0YjViY2EwZDI3YS4uMzUwOGMxMTIzOGUwMmNjOGU3N2NmZmMyZTIzYzU4
NTc3MDNlNDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTA1LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVm
UHRyIHVuZGVyIFdlYktpdDIvU2hhcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzIwMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHA6CisgICAgICAg
IChBUEk6OkRpY3Rpb25hcnk6OmFkZCk6CisgICAgICAgIChBUEk6OkRpY3Rpb25hcnk6OnNldCk6
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElTZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyk6CisgICAgICAgIChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUp
OgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAg
ICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1No
YXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6UHJveHlpbmdSZWZQdHI6OlByb3h5aW5n
UmVmUHRyKToKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLmg6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3Vy
Y2U6OldlYkFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgICogU2hhcmVkL0FzeW5jUmVxdWVzdC5o
OgorICAgICAgICAoV2ViS2l0OjpBc3luY1JlcXVlc3RNYXA6OmFkZCk6CisgICAgICAgICogU2hh
cmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKiBTaGFy
ZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVU
aWxlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6Y3JlYXRlVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAg
ICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAg
ICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmg6CisgICAg
ICAgICogU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNp
dGVkTGlua1RhYmxlOjpzZXRTaGFyZWRNZW1vcnkpOgorICAgICAgICAqIFNoYXJlZC9WaXNpdGVk
TGlua1RhYmxlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U25hcHNob3QpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbnRl
eHRNZW51SXRlbS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmg6
CisgICAgICAgICogU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlckxheWVy
OjpjcmVhdGVBcnJheUZyb21MYXllckxpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJM
YXllcjo6V2ViUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJMYXllci5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlck9i
amVjdDo6V2ViUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUmVuZGVyT2JqZWN0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlOjpyZXNpemVUYWJsZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFibGUpOgor
CiAyMDE3LTA1LTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOi4uLl0gZG9lc24ndCB3b3Jr
IGZvciBJbmRleGVkREIgaWYgdGhlIGRhdGEgc3RvcmUgaGFzIGEgY3VzdG9tIElEQiBwYXRoLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHAKaW5kZXggODk0ZTk4
ZGQxMjI1ZDQ4MDVlOTcwYjZkZTkyNWMwYmU3NzlhMGRlOS4uNGZiOTk1MmZkNjkzYTJmMTY5NTlm
YWUzZWE1NzE0NWFjMzk5MWM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9BUElEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURp
Y3Rpb25hcnkuY3BwCkBAIC02NCwxNSArNjQsMTUgQEAgUmVmPEFycmF5PiBEaWN0aW9uYXJ5Ojpr
ZXlzKCkgY29uc3QKICAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5cykp
OwogfQogCi1ib29sIERpY3Rpb25hcnk6OmFkZChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBQYXNz
UmVmUHRyPEFQSTo6T2JqZWN0PiBpdGVtKQorYm9vbCBEaWN0aW9uYXJ5OjphZGQoY29uc3QgV1RG
OjpTdHJpbmcmIGtleSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYmIGl0ZW0pCiB7Ci0gICAgTWFwVHlw
ZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGl0ZW0pOworICAgIE1hcFR5cGU6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBXVEZNb3ZlKGl0ZW0pKTsKICAgICBy
ZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiB9CiAKLWJvb2wgRGljdGlvbmFyeTo6c2V0KGNvbnN0
IFdURjo6U3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8QVBJOjpPYmplY3Q+IGl0ZW0pCitib29sIERp
Y3Rpb25hcnk6OnNldChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBSZWZQdHI8QVBJOjpPYmplY3Q+
JiYgaXRlbSkKIHsKLSAgICBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuc2V0KGtl
eSwgaXRlbSk7CisgICAgTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLnNldChrZXks
IFdURk1vdmUoaXRlbSkpOwogICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURpY3Rpb25hcnkuaAppbmRleCA1MDU5OTEyOWE4Y2Fk
ZmE2ODg4NzhkMGFmMTFjZmJkZmY0MTBhOWIzLi5mY2JhNzIzODE3NjY5NzAwN2I3ZmRmYWE0YjMx
ODU5ZjcxOWQzMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURp
Y3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURpY3Rpb25hcnku
aApAQCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8QXJyYXk+IGtleXMoKSBjb25z
dDsKIAotICAgIGJvb2wgYWRkKGNvbnN0IFdURjo6U3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8T2Jq
ZWN0Pik7Ci0gICAgYm9vbCBzZXQoY29uc3QgV1RGOjpTdHJpbmcmIGtleSwgUGFzc1JlZlB0cjxP
YmplY3Q+KTsKKyAgICBib29sIGFkZChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBSZWZQdHI8T2Jq
ZWN0PiYmKTsKKyAgICBib29sIHNldChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBSZWZQdHI8T2Jq
ZWN0PiYmKTsKICAgICB2b2lkIHJlbW92ZShjb25zdCBXVEY6OlN0cmluZyYga2V5KTsKIAogICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmgKaW5kZXggODkxN2M2NzA0OTA0
ZDM3Zjg0YjgzMTViOTMzOTlkZjJkZTc0ZDRjNS4uYjM4OTNhMTU4ZDc4ZGZiY2YyYTdmYmE0YTQ4
Mzg5NzQ2NDY2NzljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElT
ZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VjdXJp
dHlPcmlnaW4uaApAQCAtMjcsMzIgKzI3LDMyIEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFz
cyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OlNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gY3JlYXRlRnJvbVN0cmluZyhjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAg
IHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgV1RGOjpT
dHJpbmcmIHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBjcmVhdGUoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc3RyaW5nKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBwcm90
b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBv
cnQpCisgICAgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6U3Ry
aW5nJiBwcm90b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+IHBvcnQpCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUocHJvdG9jb2wsIGhvc3QsIHBvcnQpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQorICAgIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKSk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fc2VjdXJpdHlPcmlnaW47IH0KKyAgICBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBt
X3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU2VjdXJpdHlPcmlnaW4o
UGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCi0gICAg
ICAgIDogbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKKyAgICBTZWN1cml0eU9yaWdp
bihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCisgICAgICAg
IDogbV9zZWN1cml0eU9yaWdpbihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICB7CiAgICAg
fQogCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKKyAgICBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApp
bmRleCA2NTY5ZDRkNGNlOTIxMjkxNDlmMTlkNDhlMDQ0OWJlY2FiYThhOGRhLi4xY2ZhZTRhMjQ4
YzUzN2U5OGY3MWEzMjk3N2NjM2IwZWRhZTNhNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTM2LDkgKzM2LDkg
QEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVh
dGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRW
YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKFJlZlB0
cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2VyaWFsaXplZFZhbHVlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNl
cmlhbGl6ZWRWYWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUoV1RGTW92ZShzZXJpYWxpemVkVmFsdWUpKSk7CiAgICAgfQogICAgIAogICAg
IHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTY4
LDggKzY4LDggQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVl
LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUpCi0gICAgICAgIDogbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUoc2VyaWFsaXplZFNj
cmlwdFZhbHVlKQorICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKKyAg
ICAgICAgOiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCmluZGV4IDYxYTFjNjc0NTM1NTgyYjUwZmZhZTY4
YzI4ZTYyOTE1YWNiZDFlMDQuLjNjNGI0MjQ2ZTgxMjA4N2IzMGUzNmJhZmMxNjhlZjQ2NjNjNzBh
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3Jp
Z2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9y
aWdpblJlZi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgV0tUeXBlSUQgV0tTZWN1cml0eU9yaWdpbkdl
dFR5cGVJRCgpCiAKIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZy
b21TdHJpbmcoV0tTdHJpbmdSZWYgc3RyaW5nKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcodG9JbXBsKHN0cmluZyktPnN0cmluZygpKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4g
dG9BUEkoJkFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCkpKS5sZWFrUmVmKCkp
OwogfQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tRGF0
YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXIpCkBAIC00NywxMyArNDcsMTMg
QEAgV0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllcihXS1N0cmluZ1JlZiBpZGUKICAgICBhdXRvIG9yaWdpbiA9IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcih0b0ltcGwoaWRlbnRpZmll
ciktPnN0cmluZygpKTsKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW4udmFs
dWUoKS5zZWN1cml0eU9yaWdpbigpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSgmQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi52YWx1ZSgpLnNlY3VyaXR5T3JpZ2luKCkp
LmxlYWtSZWYoKSk7CiB9CiAKIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tTZWN1cml0eU9yaWdpbkNy
ZWF0ZShXS1N0cmluZ1JlZiBwcm90b2NvbCwgV0tTdHJpbmdSZWYgaG9zdCwgaW50IHBvcnQpCiB7
CiAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0
b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgdG9JbXBsKGhvc3QpLT5zdHJpbmcoKSwgcG9ydCk7
Ci0gICAgcmV0dXJuIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmxlYWtSZWYoKSk7CisgICAgcmV0dXJu
IHRvQVBJKCZzZWN1cml0eU9yaWdpbi5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1Nl
Y3VyaXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3JpZ2luUmVmIHNl
Y3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
U2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJ
Q2FzdC5oCmluZGV4IDMzZTY1Mjg3OWNkODYwMjZmYzQwYWE1YjZjMTkxNWE5N2YyNTFkNmUuLmI0
ODA5ZjNhMTVmZjhjZGU2NDJkMWRkNGU2NTkxNzJkMDUwZmU0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBh
dXRvIHRvSW1wbChUIHQpIC0+IEltcGxUeXBlKgogdGVtcGxhdGU8dHlwZW5hbWUgSW1wbFR5cGUs
IHR5cGVuYW1lIEFQSVR5cGUgPSB0eXBlbmFtZSBJbXBsVHlwZUluZm88SW1wbFR5cGU+OjpBUElU
eXBlPgogY2xhc3MgUHJveHlpbmdSZWZQdHIgewogcHVibGljOgotICAgIFByb3h5aW5nUmVmUHRy
KFBhc3NSZWZQdHI8SW1wbFR5cGU+IGltcGwpCisgICAgUHJveHlpbmdSZWZQdHIoUmVmUHRyPElt
cGxUeXBlPiYmIGltcGwpCiAgICAgICAgIDogbV9pbXBsKGltcGwpCiAgICAgewogICAgIH0KQEAg
LTIxMCw4ICsyMTAsOCBAQCBpbmxpbmUgUHJveHlpbmdSZWZQdHI8QVBJOjpVUkxSZXNwb25zZT4g
dG9BUEkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcgogaW5saW5lIFdLU2VjdXJp
dHlPcmlnaW5SZWYgdG9Db3BpZWRBUEkoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikK
IHsKICAgICBpZiAoIW9yaWdpbikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHRvQVBJ
KEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgqb3JpZ2luKS5sZWFrUmVmKCkpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gdG9BUEkoJkFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSgqb3JpZ2luKS5sZWFrUmVmKCkpOwogfQogCiAvKiBHZW9tZXRyeSBjb252ZXJzaW9u
cyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNv
dXJjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5oCmlu
ZGV4IDFlYjkyNjRiM2VmZDg3NTc5M2U1YmZhNGQ5ZTQ4YTdmOWJmNTY5N2MuLjljZDFjMWM0Mjc5
Y2QxNjFhYjllZDc2OTgzYWQxZDFiYzg1MThiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLmgKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpA
QCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViQXJjaGl2ZVJlc291cmNl
KCk7CiAKICAgICBzdGF0aWMgUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKEFQSTo6RGF0
YSosIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZyk7Ci0gICAgc3RhdGljIFJlZjxXZWJBcmNoaXZlUmVzb3VyY2U+IGNy
ZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4pOworICAgIHN0YXRpYyBS
ZWY8V2ViQXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNv
dXJjZT4mJik7CiAKICAgICBSZWY8QVBJOjpEYXRhPiBkYXRhKCk7CiAgICAgU3RyaW5nIFVSTCgp
OwpAQCAtNjAsNyArNTksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViQXJjaGl2ZVJl
c291cmNlKEFQSTo6RGF0YSosIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyk7Ci0gICAgV2ViQXJjaGl2ZVJlc291cmNl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPik7CisgICAgV2ViQXJjaGl2ZVJl
c291cmNlKFJlZlB0cjxXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U+JiYpOwogCiAgICAgUmVmUHRy
PFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4gbV9hcmNoaXZlUmVzb3VyY2U7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXggOWE0NTli
NmY1ZjFhM2MyODc0ZGM2YjQzNjc3ODIzNTVkZTIxMGUzMy4uYjFjNTJkNzY1YTVmNzc4MmVlMTky
NzBhYTcyMjc0YTRmYzA3OWVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJV2Vi
QXJjaGl2ZVJlc291cmNlLm1tCkBAIC00Miw5ICs0Miw5IEBAIFJlZjxXZWJBcmNoaXZlUmVzb3Vy
Y2U+IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKEFQSTo6RGF0YSogZGF0YSwgY29uc3QgU3Ry
aW5nCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXJjaGl2ZVJlc291cmNlKGRhdGEsIFVS
TCwgTUlNRVR5cGUsIHRleHRFbmNvZGluZykpOwogfQogCi1SZWY8V2ViQXJjaGl2ZVJlc291cmNl
PiBXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
YXJjaGl2ZVJlc291cmNlKQorUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBhcmNoaXZlUmVzb3VyY2UpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXJjaGl2ZVJlc291cmNlKGFyY2hpdmVSZXNv
dXJjZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFyY2hpdmVSZXNvdXJjZShXVEZN
b3ZlKGFyY2hpdmVSZXNvdXJjZSkpKTsKIH0KIAogV2ViQXJjaGl2ZVJlc291cmNlOjpXZWJBcmNo
aXZlUmVzb3VyY2UoQVBJOjpEYXRhKiBkYXRhLCBjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcpCkBAIC01Miw4ICs1Miw4
IEBAIFdlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6RGF0YSogZGF0
YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0CiB7CiB9CiAKLVdlYkFyY2hpdmVSZXNvdXJjZTo6
V2ViQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBhcmNoaXZlUmVz
b3VyY2UpCi0gICAgOiBtX2FyY2hpdmVSZXNvdXJjZShhcmNoaXZlUmVzb3VyY2UpCitXZWJBcmNo
aXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiYm
IGFyY2hpdmVSZXNvdXJjZSkKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKFdURk1vdmUoYXJjaGl2
ZVJlc291cmNlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Fz
eW5jUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jUmVxdWVzdC5oCmluZGV4
IDVmMzI3YzQ5NjllY2ViODk5YThlZGUwY2U5ZTBmYzMxNTc4N2I3OWMuLjBjNGEwYTBjNDEzYjBh
MWMzYmU5ZWVmNWM3NzViY2YxMjM1NWI5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Bc3luY1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1
ZXN0LmgKQEAgLTI5LDggKzI5LDggQEAKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtMTI2LDkgKzEyNiw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpyZXF1ZXN0LmxlYWtSZWYoKSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGQodWludDY0
X3QgcmVxdWVzdElELCBQYXNzUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCkKKyAgICB2b2lk
IGFkZCh1aW50NjRfdCByZXF1ZXN0SUQsIFJlZlB0cjxBc3luY1JlcXVlc3Q+JiYgcmVxdWVzdCkK
ICAgICB7Ci0gICAgICAgIG1fcmVxdWVzdE1hcC5hZGQocmVxdWVzdElELCByZXF1ZXN0KTsKKyAg
ICAgICAgbV9yZXF1ZXN0TWFwLmFkZChyZXF1ZXN0SUQsIFdURk1vdmUocmVxdWVzdCkpOwogICAg
IH0KIAogICAgIHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5j
cHAKaW5kZXggZmI1ZTA0ZjA1NmM3MTVkNzcxYjAyNTE0YzZlMjBlNzA0MGJlNzI0MC4uZmM3NGI2
MDE3M2M1NTI1OTBiNTRlMzQwYzY2YWUxZmEzNjg0NTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNh
bmRib3hFeHRlbnNpb24uY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNz
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IHNhbmRib3hFeHRlbnNpb24pCitCbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNh
bmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4mJiBzYW5kYm94RXh0ZW5zaW9uKQogICAgIDogQmxvYkRhdGFGaWxlUmVmZXJlbmNlKHBhdGgp
Ci0gICAgLCBtX3NhbmRib3hFeHRlbnNpb24oc2FuZGJveEV4dGVuc2lvbikKKyAgICAsIG1fc2Fu
ZGJveEV4dGVuc2lvbihXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRi
b3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCmluZGV4IDdhZThkMmE2ZjU0YTRkOTU4YmVhNzZhYzcw
NDMwNGZiMTZlMjVhOTEuLjc1YTVkNGQwY2JiZWMwODVhZmRkYjM4ZmViYjUzM2U3MzY0MDYzMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VX
aXRoU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0
YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCkBAIC0zNCwxMyArMzQsMTMgQEAg
Y2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIAogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0
aFNhbmRib3hFeHRlbnNpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBz
YW5kYm94RXh0ZW5zaW9uKQorICAgIHN0YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBzYW5k
Ym94RXh0ZW5zaW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24ocGF0aCwgc2FuZGJveEV4dGVuc2lv
bikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVSZWZlcmVuY2VX
aXRoU2FuZGJveEV4dGVuc2lvbihwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKSk7CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPik7
CisgICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJik7CiAgICAgdmlydHVhbCB+Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oKTsKIAogICAgIHZvaWQgcHJl
cGFyZUZvckZpbGVBY2Nlc3MoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmNwcAppbmRleCA3NDBjZWUwOTMxZjhkODU4ZmU4YTNkNzJjMzAyZjJlNDkxZTJm
Yjc0Li40MDQwNTQyMGNmNzUwMTk1NTNjZDAxNTQzNTQ1Njg1N2QwZDEwYWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC01MSwxMiArNTEsMTIgQEAgdm9p
ZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKFRleHR1cmVNYXBwZXIm
IHRleHR1cmVNYXBwZXIpCiAgICAgbV9zdXJmYWNlID0gbnVsbHB0cjsKIH0KIAotdm9pZCBDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZmZXIoY29uc3QgSW50UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRT
dXJmYWNlPiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcihjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mJiBi
dWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgbV9zb3VyY2VSZWN0ID0gc291
cmNlUmVjdDsKICAgICBtX3RpbGVSZWN0ID0gdGlsZVJlY3Q7CiAgICAgbV9zdXJmYWNlT2Zmc2V0
ID0gb2Zmc2V0OwotICAgIG1fc3VyZmFjZSA9IGJ1ZmZlcjsKKyAgICBtX3N1cmZhY2UgPSBXVEZN
b3ZlKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRp
bGUodWludDMyX3QgaWQsIGZsb2F0IHNjYWxlKQpAQCAtNzcsMTEgKzc3LDExIEBAIHZvaWQgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmU6OnJlbW92ZUFsbFRpbGVzKCkKICAgICAgICAgbV90aWxlc1Rv
UmVtb3ZlLmFkZChrZXkpOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRh
dGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiB0aWxlUmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJhY2tCdWZmZXIs
IGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1
cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiB0aWxlUmVjdCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mJiBiYWNrQnVmZmVy
LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
VGlsZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAh
PSBtX3RpbGVzLmVuZCgpKTsKLSAgICBpdC0+dmFsdWUuc2V0QmFja0J1ZmZlcih0aWxlUmVjdCwg
c291cmNlUmVjdCwgYmFja0J1ZmZlciwgb2Zmc2V0KTsKKyAgICBpdC0+dmFsdWUuc2V0QmFja0J1
ZmZlcih0aWxlUmVjdCwgc291cmNlUmVjdCwgV1RGTW92ZShiYWNrQnVmZmVyKSwgb2Zmc2V0KTsK
IH0KIAogUmVmUHRyPEJpdG1hcFRleHR1cmU+IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp0ZXh0
dXJlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDE2
NmMwYTFjN2RlOGVkYWY5MDg0OGU2NzQ5NWQ0MGQyZGQwOTc5NjcuLjFiOTMyYmI0ZGJmMDY5ZmE3
NmZjYjY3MzNiMjU3MDdjYzNhOTc2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICBpbmxpbmUgZmxvYXQgc2Nh
bGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAgICAgdm9pZCBzd2FwQnVmZmVycyhXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyJik7Ci0gICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpDb29yZGluYXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
KyAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiYmIGJ1
ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8
V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBmbG9hdCk7CiAg
ICAgdm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCk7CiAgICAgdm9pZCByZW1vdmVBbGxU
aWxlcygpOwotICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpDb29yZGluYXRlZFN1cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZv
aWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFj
ZT4mJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMgUmVmPENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGlsZU9wZXJhdGlvbnMoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlciYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiB0
ZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcAppbmRleCA3NjE1ZjA5MWRmMzczYzdhZThiNTg3OTU5YjE0YmZmYTE2MTk4N2U1
Li5iOTFiYWEwOWU0OTdkZjZiODRiY2ExMzM0N2MxMWE5N2IxM2FkM2U4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTQyNywxMCArNDI3LDEwIEBAIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jVXBkYXRlQXRsYXNlcyhjb25zdCBDb29y
ZGluYXRlZEdyYXBoaWNzU3RhdGUmCiAgICAgICAgIGNyZWF0ZVVwZGF0ZUF0bGFzKGF0bGFzLmZp
cnN0LCBhdGxhcy5zZWNvbmQpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
Y3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRl
ZFN1cmZhY2U+IHN1cmZhY2UpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRl
VXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4m
JiBzdXJmYWNlKQogewogICAgIEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhhdGxhc0lEKSk7
Ci0gICAgbV9zdXJmYWNlcy5hZGQoYXRsYXNJRCwgc3VyZmFjZSk7CisgICAgbV9zdXJmYWNlcy5h
ZGQoYXRsYXNJRCwgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQpAQCAtNDY3LDcg
KzQ2Nyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVJbWFnZUJhY2tp
bmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnCiAgICAgbV9pbWFnZUJhY2tpbmdzLmFk
ZChpbWFnZUlELCBiYWNraW5nU3RvcmUucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lEIGltYWdlSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlKQordm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+JiYgc3Vy
ZmFjZSkKIHsKICAgICBBU1NFUlQobV9pbWFnZUJhY2tpbmdzLmNvbnRhaW5zKGltYWdlSUQpKTsK
ICAgICBJbWFnZUJhY2tpbmdNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZUJhY2tpbmdzLmZpbmQo
aW1hZ2VJRCk7CkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWcKICAg
ICAvLyBTZWUgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzaG91bGREaXJlY3RseUNvbXBvc2l0
ZUltYWdlKCkKICAgICBBU1NFUlQoMjAwMCA+PSBzdGQ6Om1heChyZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpKTsKICAgICBiYWNraW5nU3RvcmUtPnNldFNpemUocmVjdC5zaXplKCkpOwotICAg
IGJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZSgxIC8qIGlkICovLCByZWN0LCByZWN0LCBzdXJmYWNl
LCByZWN0LmxvY2F0aW9uKCkpOworICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZSgxIC8qIGlk
ICovLCByZWN0LCByZWN0LCBXVEZNb3ZlKHN1cmZhY2UpLCByZWN0LmxvY2F0aW9uKCkpOwogCiAg
ICAgbV9iYWNraW5nU3RvcmVzV2l0aFBlbmRpbmdCdWZmZXJzLmFkZChiYWNraW5nU3RvcmUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAppbmRleCBiOWYxY2UyMWNk
MzQ5N2NiNjg0OWVlYmI1NDllZWRiMzg5MTZjMzQyLi5iMjAwMDQ3ZDUwODExMWQ4MWRjNDVmNTg4
MzkzMjNmZDEzZGE2NzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
aApAQCAtMTAyLDEyICsxMDIsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExheWVyUmVwYWlu
dENvdW50SWZOZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKIAogICAgIHZvaWQgc3luY1VwZGF0
ZUF0bGFzZXMoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7Ci0gICAg
dm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4pOworICAgIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXModWlu
dDMyX3QgYXRsYXNJRCwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4mJik7CiAg
ICAgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKTsKIAogICAgIHZvaWQg
c3luY0ltYWdlQmFja2luZ3MoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
Jik7CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZh
Y2U+KTsKKyAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhXZWJDb3JlOjpDb29yZGluYXRlZElt
YWdlQmFja2luZ0lELCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiYmKTsKICAg
ICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmdJRCk7CiAgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRl
eCBhZDcwNjNiMjRmNmYwOGVhZTJiNjAzNzI2MjZkZGJkMGFmYmQzNDI1Li5kNGRkYTJhYmM4OGU0
MTI2YmVjYTZhOTk3MjljZjgwZGVhNmQ1YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUu
Y3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2h1dGRv
d24oKQogICAgIGluaXRpYWxpemVkTmV0c2NhcGVQbHVnaW5Nb2R1bGVzKCkucmVtb3ZlKHBsdWdp
bk1vZHVsZUluZGV4KTsKIH0KIAotUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gTmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkK
K1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldE9y
Q3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKIHsKICAgICAvLyBGaXJzdCwgc2VlIGlm
IHdlIGFscmVhZHkgaGF2ZSBhIG1vZHVsZSB3aXRoIHRoaXMgcGx1Zy1pbiBwYXRoLgogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5pdGlhbGl6ZWROZXRzY2FwZVBsdWdpbk1vZHVsZXMoKS5z
aXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKaW5kZXggZjE5Zjk0MTYxMGYy
YTg1ZTVhZWNhOTc4YWJmMmM1MmUyN2VlNmU3Zi4uMWQ3YTU1N2YyMmYxZWFhMTk2MjYxZGEwNzIy
YmE4OTBjNDM4ZTlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCkBAIC00NSw3ICs0NSw3
IEBAIHN0cnVjdCBSYXdQbHVnaW5NZXRhRGF0YTsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5Nb2R1
bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBnZXRPckNyZWF0ZShj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIHN0YXRpYyBSZWZQdHI8TmV0c2NhcGVQbHVn
aW5Nb2R1bGU+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CiAgICAgfk5l
dHNjYXBlUGx1Z2luTW9kdWxlKCk7CiAKICAgICBjb25zdCBOUFBsdWdpbkZ1bmNzJiBwbHVnaW5G
dW5jcygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRnVuY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcAppbmRleCA1OWZlMTE4ODIzMjg0NzdhNzNkM2MzMzVj
MGY0NTg1MDk1ZGYyNDYyLi42MmIxMWI3M2NmMmQ3N2FiODBmNTMzMjY5MWZiODdlZDJiYjJmMDlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3BwCkBAIC01Miw5
ICs1Miw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Bvd2VyT2YyKHVuc2lnbmVkIHYpCiB9CiAj
ZW5kaWYKIAotdm9pZCBWaXNpdGVkTGlua1RhYmxlOjpzZXRTaGFyZWRNZW1vcnkoUGFzc1JlZlB0
cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKK3ZvaWQgVmlzaXRlZExpbmtUYWJsZTo6c2V0
U2hhcmVkTWVtb3J5KFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQogewotICAgIG1f
c2hhcmVkTWVtb3J5ID0gc2hhcmVkTWVtb3J5OworICAgIG1fc2hhcmVkTWVtb3J5ID0gV1RGTW92
ZShzaGFyZWRNZW1vcnkpOwogICAgIAogICAgIEFTU0VSVChtX3NoYXJlZE1lbW9yeSk7CiAgICAg
QVNTRVJUKCEobV9zaGFyZWRNZW1vcnktPnNpemUoKSAlIHNpemVvZihMaW5rSGFzaCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5oCmluZGV4IDg2MWNlN2E3OTMyMTQ5
NjE1NWM1Nzc1ZjNhMTI2OTEyY2RlMjU0OWUuLjFkOTEyNjc1ODE1NGMxODk0OWQ0NWQyODUwYTMx
YjFjZmU5NGVjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlu
a1RhYmxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuaApA
QCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBWaXNpdGVkTGlua1RhYmxlX2gKIAogI2luY2x1ZGUg
PFdlYkNvcmUvTGlua0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOSw3ICszOCw3IEBA
IHB1YmxpYzoKICAgICBWaXNpdGVkTGlua1RhYmxlKCk7CiAgICAgflZpc2l0ZWRMaW5rVGFibGUo
KTsKIAotICAgIHZvaWQgc2V0U2hhcmVkTWVtb3J5KFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5Pik7
CisgICAgdm9pZCBzZXRTaGFyZWRNZW1vcnkoUmVmPFNoYXJlZE1lbW9yeT4mJik7CiAKICAgICAv
LyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBVSSBwcm9jZXNzLgogICAgIGJv
b2wgYWRkTGlua0hhc2goV2ViQ29yZTo6TGlua0hhc2gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggMWI3NTRmMzRkNTU1MzVjMmJhYTEz
YTAzYWRjMTUxN2VhYjliODRkZS4uOTE0NTBmZDk5MWIwOTExMDExMDZmYTc0MjFiY2M4ZjQ1Y2Y1
MDZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRl
ICJTZXNzaW9uU3RhdGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIEFQSSB7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFZpZXdTbmFwc2hvdCogc25hcHNob3QoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1TdGF0
ZS5zbmFwc2hvdC5nZXQoKTsgfQotICAgIHZvaWQgc2V0U25hcHNob3QoUGFzc1JlZlB0cjxWaWV3
U25hcHNob3Q+IHNuYXBzaG90KSB7IG1faXRlbVN0YXRlLnNuYXBzaG90ID0gc25hcHNob3Q7IH0K
KyAgICB2b2lkIHNldFNuYXBzaG90KFJlZlB0cjxWaWV3U25hcHNob3Q+JiYgc25hcHNob3QpIHsg
bV9pdGVtU3RhdGUuc25hcHNob3QgPSBXVEZNb3ZlKHNuYXBzaG90KTsgfQogI2VuZGlmCiAKICAg
ICBzdGF0aWMgdWludDY0X3QgaGlnaGVzdFVzZWRJdGVtSUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggZWUyMWI0NmYxNWZmZTBkYzg3ZTFi
YWRhNGE2MmJiNzIzMTFhYmIwMS4uZDMwNzhiNTlhYTNlYWNlOTczZGNkOTJlNzVkNTExOThkYTM1
YzRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRl
bS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgV2ViQ29udGV4dE1lbnVJdGVtOjpXZWJDb250ZXh0TWVudUl0ZW0o
Y29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgZGF0YSkKIHsKIH0KIAotUGFzc1JlZlB0cjxX
ZWJDb250ZXh0TWVudUl0ZW0+IFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJheSogc3VibWVudUl0ZW1zKQorUmVmPFdl
YkNvbnRleHRNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiB0aXRsZSwgYm9vbCBlbmFibGVkLCBBUEk6OkFycmF5KiBzdWJtZW51SXRlbXMpCiB7CiAgICAg
c2l6ZV90IHNpemUgPSBzdWJtZW51SXRlbXMtPnNpemUoKTsKIApAQCAtNTIsNyArNTIsNyBAQCBQ
YXNzUmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgYgogICAgICAgICAgICAgc3VibWVudS5hcHBlbmQoaXRlbS0+
ZGF0YSgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRleHRNZW51
SXRlbShXZWJDb250ZXh0TWVudUl0ZW1EYXRhKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05v
QWN0aW9uLCB0aXRsZSwgZW5hYmxlZCwgc3VibWVudSkpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvbnRleHRNZW51SXRlbURhdGEo
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIHRpdGxlLCBlbmFibGVkLCBzdWJt
ZW51KSkpLmxlYWtSZWYoKTsKIH0KIAogV2ViQ29udGV4dE1lbnVJdGVtKiBXZWJDb250ZXh0TWVu
dUl0ZW06OnNlcGFyYXRvckl0ZW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvbnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRN
ZW51SXRlbS5oCmluZGV4IDk4YjlmMDFkM2MyNTZkMzhjMmJjODQ1NmUyYWFiMGRkM2VkYTRjYmEu
Ljk3NjMyZjk2NmNjZjc4YzA1ZTMyNmM1ZjZhZDJmZmRkNzUxNjViZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudUl0ZW0oZGF0YSkp
OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJheSogc3VibWVu
dUl0ZW1zKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvbnRleHRNZW51SXRlbT4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJheSogc3VibWVudUl0ZW1zKTsK
ICAgICBzdGF0aWMgV2ViQ29udGV4dE1lbnVJdGVtKiBzZXBhcmF0b3JJdGVtKCk7CiAKICAgICBS
ZWY8QVBJOjpBcnJheT4gc3VibWVudUl0ZW1zQXNBUElBcnJheSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKaW5kZXggM2YwMzk3MWMz
ZWVkM2FjNDU1YzBjOTU0YzE3MmJhZDg0NGRlZDdmNi4uMWRkNzk4OWJjYzAzZDQwMDAwZGNkOWNj
MjY5NGNiYWJjZmZlNDYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdl
b2xvY2F0aW9uUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xh
c3MgRGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJM
YXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuY3BwCmluZGV4
IDljYzEwZWNhNDZjNDRlMTMxMGMyYjY3NzM2NmI0MDI3M2NhNDQ5NjIuLmE3YjRmNDY1NTU2NjMz
NWMwNjZhYjE2OTk2MGU4MWZjZWE5YjBkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJSZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJl
bmRlckxheWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+IFdlYlJl
bmRlckxheWVyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKK1JlZlB0cjxXZWJSZW5kZXJMYXllcj4g
V2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQogewogICAgIEZyYW1lKiBtYWlu
RnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKICAgICBpZiAoIW1haW5GcmFtZSkKQEAgLTYzLDEy
ICs2MywxMiBAQCBQYXNzUmVmUHRyPFdlYlJlbmRlckxheWVyPiBXZWJSZW5kZXJMYXllcjo6Y3Jl
YXRlKFdlYlBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJMYXll
cihyb290TGF5ZXIpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJSZW5kZXJMYXllcj4gV2ViUmVuZGVy
TGF5ZXI6OmNyZWF0ZShQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gcmVuZGVyZXIsIGJvb2wg
aXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBDb21wb3NpdGlu
Z0xheWVyVHlwZSB0eXBlLCBXZWJDb3JlOjpJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3gsIGRv
dWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBu
ZWdhdGl2ZVpPcmRlckxpc3QsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gbm9ybWFsRmxvd0xpc3Qs
IFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gcG9zaXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPFdl
YlJlbmRlckxheWVyPiBmcmFtZUNvbnRlbnRzTGF5ZXIpCitSZWY8V2ViUmVuZGVyTGF5ZXI+IFdl
YlJlbmRlckxheWVyOjpjcmVhdGUoUmVmUHRyPFdlYlJlbmRlck9iamVjdD4mJiByZW5kZXJlciwg
Ym9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGluZywgYm9vbCBpc0NsaXBwZWQsIENvbXBv
c2l0aW5nTGF5ZXJUeXBlIHR5cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0Jv
eCwgZG91YmxlIGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlLCBSZWZQdHI8QVBJOjpBcnJheT4m
JiBuZWdhdGl2ZVpPcmRlckxpc3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5vcm1hbEZsb3dMaXN0
LCBSZWZQdHI8QVBJOjpBcnJheT4mJiBwb3NpdGl2ZVpPcmRlckxpc3QsIFJlZlB0cjxXZWJSZW5k
ZXJMYXllcj4mJiBmcmFtZUNvbnRlbnRzTGF5ZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJSZW5kZXJMYXllcihyZW5kZXJlciwgaXNSZWZsZWN0aW9uLCBpc0NsaXBwaW5nLCBpc0Ns
aXBwZWQsIHR5cGUsIGFic29sdXRlQm91bmRpbmdCb3gsIGJhY2tpbmdTdG9yZU1lbW9yeUVzdGlt
YXRlLCBuZWdhdGl2ZVpPcmRlckxpc3QsIG5vcm1hbEZsb3dMaXN0LCBwb3NpdGl2ZVpPcmRlckxp
c3QsIGZyYW1lQ29udGVudHNMYXllcikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJl
bmRlckxheWVyKFdURk1vdmUocmVuZGVyZXIpLCBpc1JlZmxlY3Rpb24sIGlzQ2xpcHBpbmcsIGlz
Q2xpcHBlZCwgdHlwZSwgYWJzb2x1dGVCb3VuZGluZ0JveCwgYmFja2luZ1N0b3JlTWVtb3J5RXN0
aW1hdGUsIFdURk1vdmUobmVnYXRpdmVaT3JkZXJMaXN0KSwgV1RGTW92ZShub3JtYWxGbG93TGlz
dCksIFdURk1vdmUocG9zaXRpdmVaT3JkZXJMaXN0KSwgV1RGTW92ZShmcmFtZUNvbnRlbnRzTGF5
ZXIpKSk7CiB9CiAKLVBhc3NSZWZQdHI8QVBJOjpBcnJheT4gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0
ZUFycmF5RnJvbUxheWVyTGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCkKK1JlZlB0cjxB
UEk6OkFycmF5PiBXZWJSZW5kZXJMYXllcjo6Y3JlYXRlQXJyYXlGcm9tTGF5ZXJMaXN0KFZlY3Rv
cjxSZW5kZXJMYXllcio+KiBsaXN0KQogewogICAgIGlmICghbGlzdCB8fCAhbGlzdC0+c2l6ZSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyOCwxOCArMTI4LDE4IEBAIFdlYlJlbmRl
ckxheWVyOjpXZWJSZW5kZXJMYXllcihSZW5kZXJMYXllciogbGF5ZXIpCiAgICAgfQogfQogCi1X
ZWJSZW5kZXJMYXllcjo6V2ViUmVuZGVyTGF5ZXIoUGFzc1JlZlB0cjxXZWJSZW5kZXJPYmplY3Q+
IHJlbmRlcmVyLCBib29sIGlzUmVmbGVjdGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xp
cHBlZCwgQ29tcG9zaXRpbmdMYXllclR5cGUgdHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0
ZUJvdW5kaW5nQm94LCBkb3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUsIFBhc3NSZWZQ
dHI8QVBJOjpBcnJheT4gbmVnYXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+
IG5vcm1hbEZsb3dMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IHBvc2l0aXZlWk9yZGVyTGlz
dCwgUGFzc1JlZlB0cjxXZWJSZW5kZXJMYXllcj4gZnJhbWVDb250ZW50c0xheWVyKQotICAgIDog
bV9yZW5kZXJlcihyZW5kZXJlcikKK1dlYlJlbmRlckxheWVyOjpXZWJSZW5kZXJMYXllcihSZWZQ
dHI8V2ViUmVuZGVyT2JqZWN0PiYmIHJlbmRlcmVyLCBib29sIGlzUmVmbGVjdGlvbiwgYm9vbCBp
c0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5cGUgdHlwZSwgV2Vi
Q29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBkb3VibGUgYmFja2luZ1N0b3JlTWVt
b3J5RXN0aW1hdGUsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5lZ2F0aXZlWk9yZGVyTGlzdCwgUmVm
UHRyPEFQSTo6QXJyYXk+JiYgbm9ybWFsRmxvd0xpc3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIHBv
c2l0aXZlWk9yZGVyTGlzdCwgUmVmUHRyPFdlYlJlbmRlckxheWVyPiYmIGZyYW1lQ29udGVudHNM
YXllcikKKyAgICA6IG1fcmVuZGVyZXIoV1RGTW92ZShyZW5kZXJlcikpCiAgICAgLCBtX2lzUmVm
bGVjdGlvbihpc1JlZmxlY3Rpb24pCiAgICAgLCBtX2lzQ2xpcHBpbmcoaXNDbGlwcGluZykKICAg
ICAsIG1faXNDbGlwcGVkKGlzQ2xpcHBlZCkKICAgICAsIG1fY29tcG9zaXRpbmdMYXllclR5cGUo
dHlwZSkKICAgICAsIG1fYWJzb2x1dGVCb3VuZGluZ0JveChhYnNvbHV0ZUJvdW5kaW5nQm94KQog
ICAgICwgbV9iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZShiYWNraW5nU3RvcmVNZW1vcnlFc3Rp
bWF0ZSkKLSAgICAsIG1fbmVnYXRpdmVaT3JkZXJMaXN0KG5lZ2F0aXZlWk9yZGVyTGlzdCkKLSAg
ICAsIG1fbm9ybWFsRmxvd0xpc3Qobm9ybWFsRmxvd0xpc3QpCi0gICAgLCBtX3Bvc2l0aXZlWk9y
ZGVyTGlzdChwb3NpdGl2ZVpPcmRlckxpc3QpCi0gICAgLCBtX2ZyYW1lQ29udGVudHNMYXllcihm
cmFtZUNvbnRlbnRzTGF5ZXIpCisgICAgLCBtX25lZ2F0aXZlWk9yZGVyTGlzdChXVEZNb3ZlKG5l
Z2F0aXZlWk9yZGVyTGlzdCkpCisgICAgLCBtX25vcm1hbEZsb3dMaXN0KFdURk1vdmUobm9ybWFs
Rmxvd0xpc3QpKQorICAgICwgbV9wb3NpdGl2ZVpPcmRlckxpc3QoV1RGTW92ZShwb3NpdGl2ZVpP
cmRlckxpc3QpKQorICAgICwgbV9mcmFtZUNvbnRlbnRzTGF5ZXIoV1RGTW92ZShmcmFtZUNvbnRl
bnRzTGF5ZXIpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJMYXllci5oCmlu
ZGV4IDViNmJlMDQzMzRlNDYyMGQxZDBhOWYyM2FiMTM5NDUzZGJkYjQyZGMuLjUxNDE0ZGZiNDdh
MmU2ZjI1NmYzMGQzZjVhMTUzYjgxNGM3OGFiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJSZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJS
ZW5kZXJMYXllci5oCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNzIFdlYlJlbmRlckxheWVyIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UmVuZGVyTGF5ZXI+IHsKIHB1
YmxpYzoKICAgICBlbnVtIENvbXBvc2l0aW5nTGF5ZXJUeXBlIHsgTm9uZSwgTm9ybWFsLCBUaWxl
ZCwgTWVkaWEsIENvbnRhaW5lciB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUmVuZGVy
TGF5ZXI+IGNyZWF0ZShXZWJQYWdlKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUmVuZGVy
TGF5ZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gcmVuZGVyZXIsIGJvb2wg
aXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBDb21wb3NpdGlu
Z0xheWVyVHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBkb3VibGUg
YmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gbmVnYXRp
dmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5vcm1hbEZsb3dMaXN0LCBQYXNz
UmVmUHRyPEFQSTo6QXJyYXk+IHBvc2l0aXZlWk9yZGVyTGlzdCwgUGFzc1JlZlB0cjxXZWJSZW5k
ZXJMYXllcj4gZnJhbWVDb250ZW50c0xheWVyKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYlJlbmRl
ckxheWVyPiBjcmVhdGUoV2ViUGFnZSopOworICAgIHN0YXRpYyBSZWY8V2ViUmVuZGVyTGF5ZXI+
IGNyZWF0ZShSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiYmIHJlbmRlcmVyLCBib29sIGlzUmVmbGVj
dGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5
cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCwgZG91YmxlIGJhY2tpbmdT
dG9yZU1lbW9yeUVzdGltYXRlLCBSZWZQdHI8QVBJOjpBcnJheT4mJiBuZWdhdGl2ZVpPcmRlckxp
c3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5vcm1hbEZsb3dMaXN0LCBSZWZQdHI8QVBJOjpBcnJh
eT4mJiBwb3NpdGl2ZVpPcmRlckxpc3QsIFJlZlB0cjxXZWJSZW5kZXJMYXllcj4mJiBmcmFtZUNv
bnRlbnRzTGF5ZXIpOwogCiAgICAgQVBJOjpBcnJheSogbmVnYXRpdmVaT3JkZXJMaXN0KCkgY29u
c3QgeyByZXR1cm4gbV9uZWdhdGl2ZVpPcmRlckxpc3QuZ2V0KCk7IH0KICAgICBBUEk6OkFycmF5
KiBub3JtYWxGbG93TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9ybWFsRmxvd0xpc3QuZ2V0KCk7
IH0KQEAgLTU4LDkgKzU4LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
YlJlbmRlckxheWVyKFdlYkNvcmU6OlJlbmRlckxheWVyKik7Ci0gICAgV2ViUmVuZGVyTGF5ZXIo
UGFzc1JlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IHJlbmRlcmVyLCBib29sIGlzUmVmbGVjdGlvbiwg
Ym9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5cGUsIFdl
YkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCwgZG91YmxlIGJhY2tpbmdTdG9yZU1l
bW9yeUVzdGltYXRlLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5lZ2F0aXZlWk9yZGVyTGlzdCwg
UGFzc1JlZlB0cjxBUEk6OkFycmF5PiBub3JtYWxGbG93TGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFy
cmF5PiBwb3NpdGl2ZVpPcmRlckxpc3QsIFBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+IGZyYW1l
Q29udGVudHNMYXllcik7CisgICAgV2ViUmVuZGVyTGF5ZXIoUmVmUHRyPFdlYlJlbmRlck9iamVj
dD4mJiByZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGluZywgYm9vbCBp
c0NsaXBwZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IGFic29sdXRl
Qm91bmRpbmdCb3gsIGRvdWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwgUmVmUHRyPEFQ
STo6QXJyYXk+JiYgbmVnYXRpdmVaT3JkZXJMaXN0LCBSZWZQdHI8QVBJOjpBcnJheT4mJiBub3Jt
YWxGbG93TGlzdCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgcG9zaXRpdmVaT3JkZXJMaXN0LCBSZWZQ
dHI8V2ViUmVuZGVyTGF5ZXI+JiYgZnJhbWVDb250ZW50c0xheWVyKTsKIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChWZWN0b3I8V2Vi
Q29yZTo6UmVuZGVyTGF5ZXIqPiopOworICAgIHN0YXRpYyBSZWZQdHI8QVBJOjpBcnJheT4gY3Jl
YXRlQXJyYXlGcm9tTGF5ZXJMaXN0KFZlY3RvcjxXZWJDb3JlOjpSZW5kZXJMYXllcio+Kik7CiAK
ICAgICBSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBtX3JlbmRlcmVyOwogICAgIGJvb2wgbV9pc1Jl
ZmxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwCmluZGV4
IGFmYzQzMzZlZDg0NTg4MzA4Mzc5MmI1OTk3NDRjZGY3NDQwZWFmOWIuLjU5MjJiMDAwMDk4YjQw
ZTY1ZDM2MWM4NDAwZmE3NjM1NDE3NmZiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJS
ZW5kZXJPYmplY3QuY3BwCkBAIC01OCw5ICs1OCw5IEBAIFJlZlB0cjxXZWJSZW5kZXJPYmplY3Q+
IFdlYlJlbmRlck9iamVjdDo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QoY29udGVudFJlbmRlcmVyLCB0cnVlKSk7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudFRhZ05hbWUsIGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGVsZW1lbnRDbGFzc05hbWVzLCBXZWJD
b3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVj
dCwgY29uc3QgU3RyaW5nJiB0ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUGFzc1Jl
ZlB0cjxBUEk6OkFycmF5PiBjaGlsZHJlbikKK1JlZjxXZWJSZW5kZXJPYmplY3Q+IFdlYlJlbmRl
ck9iamVjdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50
VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFJlZlB0cjxBUEk6OkFycmF5PiYmIGVs
ZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJD
b3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0ZXh0U25pcHBldCwgdW5zaWdu
ZWQgdGV4dExlbmd0aCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgY2hpbGRyZW4pCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QobmFtZSwgZWxlbWVudFRhZ05hbWUsIGVs
ZW1lbnRJRCwgZWxlbWVudENsYXNzTmFtZXMsIGFic29sdXRlUG9zaXRpb24sIGZyYW1lUmVjdCwg
dGV4dFNuaXBwZXQsIHRleHRMZW5ndGgsIGNoaWxkcmVuKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViUmVuZGVyT2JqZWN0KG5hbWUsIGVsZW1lbnRUYWdOYW1lLCBlbGVtZW50SUQsIFdU
Rk1vdmUoZWxlbWVudENsYXNzTmFtZXMpLCBhYnNvbHV0ZVBvc2l0aW9uLCBmcmFtZVJlY3QsIHRl
eHRTbmlwcGV0LCB0ZXh0TGVuZ3RoLCBXVEZNb3ZlKGNoaWxkcmVuKSkpOwogfQogCiBXZWJSZW5k
ZXJPYmplY3Q6OldlYlJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIHNo
b3VsZEluY2x1ZGVEZXNjZW5kYW50cykKQEAgLTEyNywxMyArMTI3LDEzIEBAIFdlYlJlbmRlck9i
amVjdDo6V2ViUmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgc2hvdWxk
SW5jbHVkZURlc2NlCiAgICAgbV9jaGlsZHJlbiA9IEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3Zl
KGNoaWxkcmVuKSk7CiB9CiAKLVdlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5n
JiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gZWxlbWVudENsYXNzTmFtZXMsIFdl
YkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6OkludFJlY3QgZnJhbWVS
ZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25lZCB0ZXh0TGVuZ3RoLCBQYXNz
UmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKQotICAgIDogbV9jaGlsZHJlbihjaGlsZHJlbikK
K1dlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFJlZlB0
cjxBUEk6OkFycmF5PiYmIGVsZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNv
bHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0
ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgY2hp
bGRyZW4pCisgICAgOiBtX2NoaWxkcmVuKFdURk1vdmUoY2hpbGRyZW4pKQogICAgICwgbV9uYW1l
KG5hbWUpCiAgICAgLCBtX2VsZW1lbnRUYWdOYW1lKGVsZW1lbnRUYWdOYW1lKQogICAgICwgbV9l
bGVtZW50SUQoZWxlbWVudElEKQogICAgICwgbV90ZXh0U25pcHBldCh0ZXh0U25pcHBldCkKLSAg
ICAsIG1fZWxlbWVudENsYXNzTmFtZXMoZWxlbWVudENsYXNzTmFtZXMpCisgICAgLCBtX2VsZW1l
bnRDbGFzc05hbWVzKFdURk1vdmUoZWxlbWVudENsYXNzTmFtZXMpKQogICAgICwgbV9hYnNvbHV0
ZVBvc2l0aW9uKGFic29sdXRlUG9zaXRpb24pCiAgICAgLCBtX2ZyYW1lUmVjdChmcmFtZVJlY3Qp
CiAgICAgLCBtX3RleHRMZW5ndGgodGV4dExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJS
ZW5kZXJPYmplY3QuaAppbmRleCBmYzI1NTgyMzE3YTUzOGJiNGQ0NzkzMGVhZTVhZTBkYjVmNTFm
Nzc1Li44NTIyZGFjODg0NDI3YjU4NzVhOWQ3YWNkNGRjM2I1MDY0Zjg4NzM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEFQSSB7CkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVuZGVyT2JqZWN0KHJlbmRl
cmVyLCBmYWxzZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlJlbmRlck9i
amVjdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFn
TmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gZWxl
bWVudENsYXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNv
cmU6OkludFJlY3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25l
ZCB0ZXh0TGVuZ3RoLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKTsKKyAgICBzdGF0
aWMgUmVmPFdlYlJlbmRlck9iamVjdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFJlZlB0cjxB
UEk6OkFycmF5PiYmIGVsZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0
ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0ZXh0
U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgY2hpbGRy
ZW4pOwogCiAgICAgdmlydHVhbCB+V2ViUmVuZGVyT2JqZWN0KCk7CiAKQEAgLTcxLDcgKzcxLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlJlbmRlck9iamVjdChXZWJDb3JlOjpSZW5k
ZXJPYmplY3QqLCBib29sIHNob3VsZEluY2x1ZGVEZXNjZW5kYW50cyk7Ci0gICAgV2ViUmVuZGVy
T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwg
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gZWxlbWVudENs
YXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6Oklu
dFJlY3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25lZCB0ZXh0
TGVuZ3RoLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKTsKKyAgICBXZWJSZW5kZXJP
YmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRUYWdOYW1lLCBj
b25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgZWxlbWVudENsYXNz
TmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6OkludFJl
Y3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25lZCB0ZXh0TGVu
Z3RoLCBSZWZQdHI8QVBJOjpBcnJheT4mJiBjaGlsZHJlbik7CiAKICAgICBSZWZQdHI8QVBJOjpB
cnJheT4gbV9jaGlsZHJlbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1Zpc2l0ZWRMaW5rU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRM
aW5rU3RvcmUuY3BwCmluZGV4IGE5NjFhMmIzMWVmODc1MzIxZDgxMzljY2Q5NDM0ODY4M2MwMjc1
YjUuLjI5NTlkNTkxZjZlYjk4NGI0ZGZhOWIwYzY1NmNhNzdiODQ3Zjc4NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKQEAgLTIwMiw3ICsyMDIs
NyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnBlbmRpbmdWaXNpdGVkTGlua3NUaW1lckZpcmVk
KCkKIAogdm9pZCBWaXNpdGVkTGlua1N0b3JlOjpyZXNpemVUYWJsZSh1bnNpZ25lZCBuZXdUYWJs
ZVNpemUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbmV3VGFibGVNZW1vcnkgPSBTaGFy
ZWRNZW1vcnk6OmFsbG9jYXRlKG5ld1RhYmxlU2l6ZSAqIHNpemVvZihMaW5rSGFzaCkpOworICAg
IGF1dG8gbmV3VGFibGVNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKG5ld1RhYmxlU2l6
ZSAqIHNpemVvZihMaW5rSGFzaCkpOwogCiAgICAgaWYgKCFuZXdUYWJsZU1lbW9yeSkgewogICAg
ICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5IGZvciB2aXNp
dGVkIGxpbmsgdGFibGUiKTsKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3Rv
cmU6OnJlc2l6ZVRhYmxlKHVuc2lnbmVkIG5ld1RhYmxlU2l6ZSkKICAgICBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBjdXJyZW50VGFibGVNZW1vcnkgPSBtX3RhYmxlLnNoYXJlZE1lbW9yeSgpOwogICAg
IHVuc2lnbmVkIGN1cnJlbnRUYWJsZVNpemUgPSBtX3RhYmxlU2l6ZTsKIAotICAgIG1fdGFibGUu
c2V0U2hhcmVkTWVtb3J5KG5ld1RhYmxlTWVtb3J5KTsKKyAgICBtX3RhYmxlLnNldFNoYXJlZE1l
bW9yeShuZXdUYWJsZU1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBtX3RhYmxlU2l6ZSA9
IG5ld1RhYmxlU2l6ZTsKIAogICAgIGlmIChjdXJyZW50VGFibGVNZW1vcnkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExp
bmtUYWJsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDFkNGI5N2ViZTlmMmRhZjU0NjVlYmJhYjVjZjlh
MTkxZDc4ZGVkZTQuLjZlOGIwNmRmYjhkM2Q1ZjBiY2Q1M2Q1MDg4MTk1ODRjOGYzNzExMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1Rh
YmxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFZp
c2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpzZXRWaXNpdGVkTGlua1RhYmxlKGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SGFuZGxlJgogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Zpc2l0ZWRMaW5rVGFibGUuc2V0U2hhcmVkTWVtb3J5KFdURk1vdmUoc2hhcmVk
TWVtb3J5KSk7CisgICAgbV92aXNpdGVkTGlua1RhYmxlLnNldFNoYXJlZE1lbW9yeShzaGFyZWRN
ZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBpbnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlu
a3MoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309867</attachid>
            <date>2017-05-11 21:50:19 -0700</date>
            <delta_ts>2017-05-11 22:05:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172017-20170511215018.patch</filename>
            <type>text/plain</type>
            <size>43524</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWVlZTcyZjIzZWM0NmM4
NzdmYmI1YWE2M2FiN2Q0YjViY2EwZDI3YS4uMzUwOGMxMTIzOGUwMmNjOGU3N2NmZmMyZTIzYzU4
NTc3MDNlNDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTA1LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVm
UHRyIHVuZGVyIFdlYktpdDIvU2hhcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzIwMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHA6CisgICAgICAg
IChBUEk6OkRpY3Rpb25hcnk6OmFkZCk6CisgICAgICAgIChBUEk6OkRpY3Rpb25hcnk6OnNldCk6
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElTZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyk6CisgICAgICAgIChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUp
OgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAg
ICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1No
YXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6UHJveHlpbmdSZWZQdHI6OlByb3h5aW5n
UmVmUHRyKToKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLmg6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3Vy
Y2U6OldlYkFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgICogU2hhcmVkL0FzeW5jUmVxdWVzdC5o
OgorICAgICAgICAoV2ViS2l0OjpBc3luY1JlcXVlc3RNYXA6OmFkZCk6CisgICAgICAgICogU2hh
cmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKiBTaGFy
ZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVU
aWxlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6Y3JlYXRlVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAg
ICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAg
ICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmg6CisgICAg
ICAgICogU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNp
dGVkTGlua1RhYmxlOjpzZXRTaGFyZWRNZW1vcnkpOgorICAgICAgICAqIFNoYXJlZC9WaXNpdGVk
TGlua1RhYmxlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U25hcHNob3QpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbnRl
eHRNZW51SXRlbS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmg6
CisgICAgICAgICogU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlckxheWVy
OjpjcmVhdGVBcnJheUZyb21MYXllckxpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJM
YXllcjo6V2ViUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJMYXllci5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlck9i
amVjdDo6V2ViUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUmVuZGVyT2JqZWN0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlOjpyZXNpemVUYWJsZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFibGUpOgor
CiAyMDE3LTA1LTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOi4uLl0gZG9lc24ndCB3b3Jr
IGZvciBJbmRleGVkREIgaWYgdGhlIGRhdGEgc3RvcmUgaGFzIGEgY3VzdG9tIElEQiBwYXRoLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHAKaW5kZXggODk0ZTk4
ZGQxMjI1ZDQ4MDVlOTcwYjZkZTkyNWMwYmU3NzlhMGRlOS4uNGZiOTk1MmZkNjkzYTJmMTY5NTlm
YWUzZWE1NzE0NWFjMzk5MWM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9BUElEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURp
Y3Rpb25hcnkuY3BwCkBAIC02NCwxNSArNjQsMTUgQEAgUmVmPEFycmF5PiBEaWN0aW9uYXJ5Ojpr
ZXlzKCkgY29uc3QKICAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5cykp
OwogfQogCi1ib29sIERpY3Rpb25hcnk6OmFkZChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBQYXNz
UmVmUHRyPEFQSTo6T2JqZWN0PiBpdGVtKQorYm9vbCBEaWN0aW9uYXJ5OjphZGQoY29uc3QgV1RG
OjpTdHJpbmcmIGtleSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYmIGl0ZW0pCiB7Ci0gICAgTWFwVHlw
ZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZChrZXksIGl0ZW0pOworICAgIE1hcFR5cGU6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBXVEZNb3ZlKGl0ZW0pKTsKICAgICBy
ZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiB9CiAKLWJvb2wgRGljdGlvbmFyeTo6c2V0KGNvbnN0
IFdURjo6U3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8QVBJOjpPYmplY3Q+IGl0ZW0pCitib29sIERp
Y3Rpb25hcnk6OnNldChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBSZWZQdHI8QVBJOjpPYmplY3Q+
JiYgaXRlbSkKIHsKLSAgICBNYXBUeXBlOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9tYXAuc2V0KGtl
eSwgaXRlbSk7CisgICAgTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLnNldChrZXks
IFdURk1vdmUoaXRlbSkpOwogICAgIHJldHVybiByZXN1bHQuaXNOZXdFbnRyeTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURpY3Rpb25hcnkuaAppbmRleCA1MDU5OTEyOWE4Y2Fk
ZmE2ODg4NzhkMGFmMTFjZmJkZmY0MTBhOWIzLi5mY2JhNzIzODE3NjY5NzAwN2I3ZmRmYWE0YjMx
ODU5ZjcxOWQzMDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURp
Y3Rpb25hcnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURpY3Rpb25hcnku
aApAQCAtNzEsOCArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8QXJyYXk+IGtleXMoKSBjb25z
dDsKIAotICAgIGJvb2wgYWRkKGNvbnN0IFdURjo6U3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8T2Jq
ZWN0Pik7Ci0gICAgYm9vbCBzZXQoY29uc3QgV1RGOjpTdHJpbmcmIGtleSwgUGFzc1JlZlB0cjxP
YmplY3Q+KTsKKyAgICBib29sIGFkZChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBSZWZQdHI8T2Jq
ZWN0PiYmKTsKKyAgICBib29sIHNldChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBSZWZQdHI8T2Jq
ZWN0PiYmKTsKICAgICB2b2lkIHJlbW92ZShjb25zdCBXVEY6OlN0cmluZyYga2V5KTsKIAogICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmgKaW5kZXggODkxN2M2NzA0OTA0
ZDM3Zjg0YjgzMTViOTMzOTlkZjJkZTc0ZDRjNS4uYjM4OTNhMTU4ZDc4ZGZiY2YyYTdmYmE0YTQ4
Mzg5NzQ2NDY2NzljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElT
ZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VjdXJp
dHlPcmlnaW4uaApAQCAtMjcsMzIgKzI3LDMyIEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogCiBjbGFz
cyBTZWN1cml0eU9yaWdpbiA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OlNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4gY3JlYXRlRnJvbVN0cmluZyhjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQorICAg
IHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgV1RGOjpT
dHJpbmcmIHN0cmluZykKICAgICB7CiAgICAgICAgIHJldHVybiBjcmVhdGUoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc3RyaW5nKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6U3RyaW5nJiBwcm90
b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBv
cnQpCisgICAgc3RhdGljIFJlZjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdURjo6U3Ry
aW5nJiBwcm90b2NvbCwgY29uc3QgV1RGOjpTdHJpbmcmIGhvc3QsIHN0ZDo6b3B0aW9uYWw8dWlu
dDE2X3Q+IHBvcnQpCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUocHJvdG9jb2wsIGhvc3QsIHBvcnQpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQorICAgIHN0YXRpYyBSZWY8U2VjdXJpdHlPcmlnaW4+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4pCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKSk7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNl
Y3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fc2VjdXJpdHlPcmlnaW47IH0KKyAgICBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBt
X3NlY3VyaXR5T3JpZ2luLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgU2VjdXJpdHlPcmlnaW4o
UGFzc1JlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCi0gICAg
ICAgIDogbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKKyAgICBTZWN1cml0eU9yaWdp
bihSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4pCisgICAgICAg
IDogbV9zZWN1cml0eU9yaWdpbihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICB7CiAgICAg
fQogCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKKyAgICBSZWY8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApp
bmRleCA2NTY5ZDRkNGNlOTIxMjkxNDlmMTlkNDhlMDQ0OWJlY2FiYThhOGRhLi4xY2ZhZTRhMjQ4
YzUzN2U5OGY3MWEzMjk3N2NjM2IwZWRhZTNhNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTM2LDkgKzM2LDkg
QEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVh
dGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRW
YWx1ZSkKKyAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKFJlZlB0
cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2VyaWFsaXplZFZhbHVlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNl
cmlhbGl6ZWRWYWx1ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUoV1RGTW92ZShzZXJpYWxpemVkVmFsdWUpKSk7CiAgICAgfQogICAgIAogICAg
IHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTY4
LDggKzY4LDggQEAgcHVibGljOgogICAgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVl
LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUpCi0gICAgICAgIDogbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUoc2VyaWFsaXplZFNj
cmlwdFZhbHVlKQorICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShSZWZQdHI8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKKyAg
ICAgICAgOiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCmluZGV4IDYxYTFjNjc0NTM1NTgyYjUwZmZhZTY4
YzI4ZTYyOTE1YWNiZDFlMDQuLjNjNGI0MjQ2ZTgxMjA4N2IzMGUzNmJhZmMxNjhlZjQ2NjNjNzBh
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3Jp
Z2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9y
aWdpblJlZi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgV0tUeXBlSUQgV0tTZWN1cml0eU9yaWdpbkdl
dFR5cGVJRCgpCiAKIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZy
b21TdHJpbmcoV0tTdHJpbmdSZWYgc3RyaW5nKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcodG9JbXBsKHN0cmluZyktPnN0cmluZygpKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4g
dG9BUEkoJkFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCkpKS5sZWFrUmVmKCkp
OwogfQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tRGF0
YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXIpCkBAIC00NywxMyArNDcsMTMg
QEAgV0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllcihXS1N0cmluZ1JlZiBpZGUKICAgICBhdXRvIG9yaWdpbiA9IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcih0b0ltcGwoaWRlbnRpZmll
ciktPnN0cmluZygpKTsKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW4udmFs
dWUoKS5zZWN1cml0eU9yaWdpbigpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSgmQVBJ
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi52YWx1ZSgpLnNlY3VyaXR5T3JpZ2luKCkp
LmxlYWtSZWYoKSk7CiB9CiAKIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tTZWN1cml0eU9yaWdpbkNy
ZWF0ZShXS1N0cmluZ1JlZiBwcm90b2NvbCwgV0tTdHJpbmdSZWYgaG9zdCwgaW50IHBvcnQpCiB7
CiAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh0
b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgdG9JbXBsKGhvc3QpLT5zdHJpbmcoKSwgcG9ydCk7
Ci0gICAgcmV0dXJuIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmxlYWtSZWYoKSk7CisgICAgcmV0dXJu
IHRvQVBJKCZzZWN1cml0eU9yaWdpbi5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1Nl
Y3VyaXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3JpZ2luUmVmIHNl
Y3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
U2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJ
Q2FzdC5oCmluZGV4IDMzZTY1Mjg3OWNkODYwMjZmYzQwYWE1YjZjMTkxNWE5N2YyNTFkNmUuLmI0
ODA5ZjNhMTVmZjhjZGU2NDJkMWRkNGU2NTkxNzJkMDUwZmU0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKQEAgLTEzNiw3ICsxMzYsNyBAQCBh
dXRvIHRvSW1wbChUIHQpIC0+IEltcGxUeXBlKgogdGVtcGxhdGU8dHlwZW5hbWUgSW1wbFR5cGUs
IHR5cGVuYW1lIEFQSVR5cGUgPSB0eXBlbmFtZSBJbXBsVHlwZUluZm88SW1wbFR5cGU+OjpBUElU
eXBlPgogY2xhc3MgUHJveHlpbmdSZWZQdHIgewogcHVibGljOgotICAgIFByb3h5aW5nUmVmUHRy
KFBhc3NSZWZQdHI8SW1wbFR5cGU+IGltcGwpCisgICAgUHJveHlpbmdSZWZQdHIoUmVmUHRyPElt
cGxUeXBlPiYmIGltcGwpCiAgICAgICAgIDogbV9pbXBsKGltcGwpCiAgICAgewogICAgIH0KQEAg
LTIxMCw4ICsyMTAsOCBAQCBpbmxpbmUgUHJveHlpbmdSZWZQdHI8QVBJOjpVUkxSZXNwb25zZT4g
dG9BUEkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcgogaW5saW5lIFdLU2VjdXJp
dHlPcmlnaW5SZWYgdG9Db3BpZWRBUEkoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbikK
IHsKICAgICBpZiAoIW9yaWdpbikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHRvQVBJ
KEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgqb3JpZ2luKS5sZWFrUmVmKCkpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gdG9BUEkoJkFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSgqb3JpZ2luKS5sZWFrUmVmKCkpOwogfQogCiAvKiBHZW9tZXRyeSBjb252ZXJzaW9u
cyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNv
dXJjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5oCmlu
ZGV4IDFlYjkyNjRiM2VmZDg3NTc5M2U1YmZhNGQ5ZTQ4YTdmOWJmNTY5N2MuLjljZDFjMWM0Mjc5
Y2QxNjFhYjllZDc2OTgzYWQxZDFiYzg1MThiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLmgKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBBUEkgewpA
QCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViQXJjaGl2ZVJlc291cmNl
KCk7CiAKICAgICBzdGF0aWMgUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKEFQSTo6RGF0
YSosIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZyk7Ci0gICAgc3RhdGljIFJlZjxXZWJBcmNoaXZlUmVzb3VyY2U+IGNy
ZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4pOworICAgIHN0YXRpYyBS
ZWY8V2ViQXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNv
dXJjZT4mJik7CiAKICAgICBSZWY8QVBJOjpEYXRhPiBkYXRhKCk7CiAgICAgU3RyaW5nIFVSTCgp
OwpAQCAtNjAsNyArNTksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViQXJjaGl2ZVJl
c291cmNlKEFQSTo6RGF0YSosIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyk7Ci0gICAgV2ViQXJjaGl2ZVJlc291cmNl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPik7CisgICAgV2ViQXJjaGl2ZVJl
c291cmNlKFJlZlB0cjxXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U+JiYpOwogCiAgICAgUmVmUHRy
PFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4gbV9hcmNoaXZlUmVzb3VyY2U7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5kZXggOWE0NTli
NmY1ZjFhM2MyODc0ZGM2YjQzNjc3ODIzNTVkZTIxMGUzMy4uYjFjNTJkNzY1YTVmNzc4MmVlMTky
NzBhYTcyMjc0YTRmYzA3OWVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJV2Vi
QXJjaGl2ZVJlc291cmNlLm1tCkBAIC00Miw5ICs0Miw5IEBAIFJlZjxXZWJBcmNoaXZlUmVzb3Vy
Y2U+IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKEFQSTo6RGF0YSogZGF0YSwgY29uc3QgU3Ry
aW5nCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXJjaGl2ZVJlc291cmNlKGRhdGEsIFVS
TCwgTUlNRVR5cGUsIHRleHRFbmNvZGluZykpOwogfQogCi1SZWY8V2ViQXJjaGl2ZVJlc291cmNl
PiBXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQYXNzUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4g
YXJjaGl2ZVJlc291cmNlKQorUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBhcmNoaXZlUmVzb3VyY2UpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXJjaGl2ZVJlc291cmNlKGFyY2hpdmVSZXNv
dXJjZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFyY2hpdmVSZXNvdXJjZShXVEZN
b3ZlKGFyY2hpdmVSZXNvdXJjZSkpKTsKIH0KIAogV2ViQXJjaGl2ZVJlc291cmNlOjpXZWJBcmNo
aXZlUmVzb3VyY2UoQVBJOjpEYXRhKiBkYXRhLCBjb25zdCBTdHJpbmcmIFVSTCwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcpCkBAIC01Miw4ICs1Miw4
IEBAIFdlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6RGF0YSogZGF0
YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0CiB7CiB9CiAKLVdlYkFyY2hpdmVSZXNvdXJjZTo6
V2ViQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBhcmNoaXZlUmVz
b3VyY2UpCi0gICAgOiBtX2FyY2hpdmVSZXNvdXJjZShhcmNoaXZlUmVzb3VyY2UpCitXZWJBcmNo
aXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiYm
IGFyY2hpdmVSZXNvdXJjZSkKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKFdURk1vdmUoYXJjaGl2
ZVJlc291cmNlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Fz
eW5jUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jUmVxdWVzdC5oCmluZGV4
IDVmMzI3YzQ5NjllY2ViODk5YThlZGUwY2U5ZTBmYzMxNTc4N2I3OWMuLjBjNGEwYTBjNDEzYjBh
MWMzYmU5ZWVmNWM3NzViY2YxMjM1NWI5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Bc3luY1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1
ZXN0LmgKQEAgLTI5LDggKzI5LDggQEAKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtMTI2LDkgKzEyNiw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpyZXF1ZXN0LmxlYWtSZWYoKSk7CiAgICAgfQogCi0gICAgdm9pZCBhZGQodWludDY0
X3QgcmVxdWVzdElELCBQYXNzUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCkKKyAgICB2b2lk
IGFkZCh1aW50NjRfdCByZXF1ZXN0SUQsIFJlZlB0cjxBc3luY1JlcXVlc3Q+JiYgcmVxdWVzdCkK
ICAgICB7Ci0gICAgICAgIG1fcmVxdWVzdE1hcC5hZGQocmVxdWVzdElELCByZXF1ZXN0KTsKKyAg
ICAgICAgbV9yZXF1ZXN0TWFwLmFkZChyZXF1ZXN0SUQsIFdURk1vdmUocmVxdWVzdCkpOwogICAg
IH0KIAogICAgIHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5j
cHAKaW5kZXggZmI1ZTA0ZjA1NmM3MTVkNzcxYjAyNTE0YzZlMjBlNzA0MGJlNzI0MC4uZmM3NGI2
MDE3M2M1NTI1OTBiNTRlMzQwYzY2YWUxZmEzNjg0NTcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNh
bmRib3hFeHRlbnNpb24uY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNz
UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IHNhbmRib3hFeHRlbnNpb24pCitCbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNh
bmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4mJiBzYW5kYm94RXh0ZW5zaW9uKQogICAgIDogQmxvYkRhdGFGaWxlUmVmZXJlbmNlKHBhdGgp
Ci0gICAgLCBtX3NhbmRib3hFeHRlbnNpb24oc2FuZGJveEV4dGVuc2lvbikKKyAgICAsIG1fc2Fu
ZGJveEV4dGVuc2lvbihXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRi
b3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCmluZGV4IDdhZThkMmE2ZjU0YTRkOTU4YmVhNzZhYzcw
NDMwNGZiMTZlMjVhOTEuLjc1YTVkNGQwY2JiZWMwODVhZmRkYjM4ZmViYjUzM2U3MzY0MDYzMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VX
aXRoU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0
YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCkBAIC0zNCwxMyArMzQsMTMgQEAg
Y2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIAogY2xhc3MgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0
aFNhbmRib3hFeHRlbnNpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBz
YW5kYm94RXh0ZW5zaW9uKQorICAgIHN0YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiBj
cmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBzYW5k
Ym94RXh0ZW5zaW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24ocGF0aCwgc2FuZGJveEV4dGVuc2lv
bikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVSZWZlcmVuY2VX
aXRoU2FuZGJveEV4dGVuc2lvbihwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKSk7CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPik7
CisgICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJik7CiAgICAgdmlydHVhbCB+Qmxv
YkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oKTsKIAogICAgIHZvaWQgcHJl
cGFyZUZvckZpbGVBY2Nlc3MoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmNwcAppbmRleCA3NDBjZWUwOTMxZjhkODU4ZmU4YTNkNzJjMzAyZjJlNDkxZTJm
Yjc0Li40MDQwNTQyMGNmNzUwMTk1NTNjZDAxNTQzNTQ1Njg1N2QwZDEwYWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC01MSwxMiArNTEsMTIgQEAgdm9p
ZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKFRleHR1cmVNYXBwZXIm
IHRleHR1cmVNYXBwZXIpCiAgICAgbV9zdXJmYWNlID0gbnVsbHB0cjsKIH0KIAotdm9pZCBDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZmZXIoY29uc3QgSW50UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRT
dXJmYWNlPiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcihjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mJiBi
dWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgbV9zb3VyY2VSZWN0ID0gc291
cmNlUmVjdDsKICAgICBtX3RpbGVSZWN0ID0gdGlsZVJlY3Q7CiAgICAgbV9zdXJmYWNlT2Zmc2V0
ID0gb2Zmc2V0OwotICAgIG1fc3VyZmFjZSA9IGJ1ZmZlcjsKKyAgICBtX3N1cmZhY2UgPSBXVEZN
b3ZlKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZVRp
bGUodWludDMyX3QgaWQsIGZsb2F0IHNjYWxlKQpAQCAtNzcsMTEgKzc3LDExIEBAIHZvaWQgQ29v
cmRpbmF0ZWRCYWNraW5nU3RvcmU6OnJlbW92ZUFsbFRpbGVzKCkKICAgICAgICAgbV90aWxlc1Rv
UmVtb3ZlLmFkZChrZXkpOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRh
dGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiB0aWxlUmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJhY2tCdWZmZXIs
IGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1
cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiB0aWxlUmVjdCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mJiBiYWNrQnVmZmVy
LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
VGlsZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFTU0VSVChpdCAh
PSBtX3RpbGVzLmVuZCgpKTsKLSAgICBpdC0+dmFsdWUuc2V0QmFja0J1ZmZlcih0aWxlUmVjdCwg
c291cmNlUmVjdCwgYmFja0J1ZmZlciwgb2Zmc2V0KTsKKyAgICBpdC0+dmFsdWUuc2V0QmFja0J1
ZmZlcih0aWxlUmVjdCwgc291cmNlUmVjdCwgV1RGTW92ZShiYWNrQnVmZmVyKSwgb2Zmc2V0KTsK
IH0KIAogUmVmUHRyPEJpdG1hcFRleHR1cmU+IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp0ZXh0
dXJlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDE2
NmMwYTFjN2RlOGVkYWY5MDg0OGU2NzQ5NWQ0MGQyZGQwOTc5NjcuLjFiOTMyYmI0ZGJmMDY5ZmE3
NmZjYjY3MzNiMjU3MDdjYzNhOTc2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICBpbmxpbmUgZmxvYXQgc2Nh
bGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAgICAgdm9pZCBzd2FwQnVmZmVycyhXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyJik7Ci0gICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpDb29yZGluYXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
KyAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiYmIGJ1
ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAogcHJpdmF0ZToKICAgICBSZWZQdHI8
V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBmbG9hdCk7CiAg
ICAgdm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCk7CiAgICAgdm9pZCByZW1vdmVBbGxU
aWxlcygpOwotICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpDb29yZGluYXRlZFN1cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOworICAgIHZv
aWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFj
ZT4mJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMgUmVmPENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGlsZU9wZXJhdGlvbnMoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlciYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiB0
ZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcAppbmRleCA3NjE1ZjA5MWRmMzczYzdhZThiNTg3OTU5YjE0YmZmYTE2MTk4N2U1
Li5iOTFiYWEwOWU0OTdkZjZiODRiY2ExMzM0N2MxMWE5N2IxM2FkM2U4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTQyNywxMCArNDI3LDEwIEBAIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jVXBkYXRlQXRsYXNlcyhjb25zdCBDb29y
ZGluYXRlZEdyYXBoaWNzU3RhdGUmCiAgICAgICAgIGNyZWF0ZVVwZGF0ZUF0bGFzKGF0bGFzLmZp
cnN0LCBhdGxhcy5zZWNvbmQpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
Y3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0cjxDb29yZGluYXRl
ZFN1cmZhY2U+IHN1cmZhY2UpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRl
VXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4m
JiBzdXJmYWNlKQogewogICAgIEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhhdGxhc0lEKSk7
Ci0gICAgbV9zdXJmYWNlcy5hZGQoYXRsYXNJRCwgc3VyZmFjZSk7CisgICAgbV9zdXJmYWNlcy5h
ZGQoYXRsYXNJRCwgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQpAQCAtNDY3LDcg
KzQ2Nyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVJbWFnZUJhY2tp
bmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnCiAgICAgbV9pbWFnZUJhY2tpbmdzLmFk
ZChpbWFnZUlELCBiYWNraW5nU3RvcmUucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2lu
Z0lEIGltYWdlSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlKQordm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRl
ZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+JiYgc3Vy
ZmFjZSkKIHsKICAgICBBU1NFUlQobV9pbWFnZUJhY2tpbmdzLmNvbnRhaW5zKGltYWdlSUQpKTsK
ICAgICBJbWFnZUJhY2tpbmdNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZUJhY2tpbmdzLmZpbmQo
aW1hZ2VJRCk7CkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWcKICAg
ICAvLyBTZWUgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzaG91bGREaXJlY3RseUNvbXBvc2l0
ZUltYWdlKCkKICAgICBBU1NFUlQoMjAwMCA+PSBzdGQ6Om1heChyZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpKTsKICAgICBiYWNraW5nU3RvcmUtPnNldFNpemUocmVjdC5zaXplKCkpOwotICAg
IGJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZSgxIC8qIGlkICovLCByZWN0LCByZWN0LCBzdXJmYWNl
LCByZWN0LmxvY2F0aW9uKCkpOworICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZSgxIC8qIGlk
ICovLCByZWN0LCByZWN0LCBXVEZNb3ZlKHN1cmZhY2UpLCByZWN0LmxvY2F0aW9uKCkpOwogCiAg
ICAgbV9iYWNraW5nU3RvcmVzV2l0aFBlbmRpbmdCdWZmZXJzLmFkZChiYWNraW5nU3RvcmUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAppbmRleCBiOWYxY2UyMWNk
MzQ5N2NiNjg0OWVlYmI1NDllZWRiMzg5MTZjMzQyLi5iMjAwMDQ3ZDUwODExMWQ4MWRjNDVmNTg4
MzkzMjNmZDEzZGE2NzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
aApAQCAtMTAyLDEyICsxMDIsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExheWVyUmVwYWlu
dENvdW50SWZOZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKIAogICAgIHZvaWQgc3luY1VwZGF0
ZUF0bGFzZXMoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJik7Ci0gICAg
dm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4pOworICAgIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXModWlu
dDMyX3QgYXRsYXNJRCwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4mJik7CiAg
ICAgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKTsKIAogICAgIHZvaWQg
c3luY0ltYWdlQmFja2luZ3MoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
Jik7CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZh
Y2U+KTsKKyAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhXZWJDb3JlOjpDb29yZGluYXRlZElt
YWdlQmFja2luZ0lELCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiYmKTsKICAg
ICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoV2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmdJRCk7CiAgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcAppbmRl
eCBhZDcwNjNiMjRmNmYwOGVhZTJiNjAzNzI2MjZkZGJkMGFmYmQzNDI1Li5kNGRkYTJhYmM4OGU0
MTI2YmVjYTZhOTk3MjljZjgwZGVhNmQ1YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUu
Y3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6c2h1dGRv
d24oKQogICAgIGluaXRpYWxpemVkTmV0c2NhcGVQbHVnaW5Nb2R1bGVzKCkucmVtb3ZlKHBsdWdp
bk1vZHVsZUluZGV4KTsKIH0KIAotUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gTmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkK
K1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldE9y
Q3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKIHsKICAgICAvLyBGaXJzdCwgc2VlIGlm
IHdlIGFscmVhZHkgaGF2ZSBhIG1vZHVsZSB3aXRoIHRoaXMgcGx1Zy1pbiBwYXRoLgogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5pdGlhbGl6ZWROZXRzY2FwZVBsdWdpbk1vZHVsZXMoKS5z
aXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKaW5kZXggZjE5Zjk0MTYxMGYy
YTg1ZTVhZWNhOTc4YWJmMmM1MmUyN2VlNmU3Zi4uMWQ3YTU1N2YyMmYxZWFhMTk2MjYxZGEwNzIy
YmE4OTBjNDM4ZTlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCkBAIC00NSw3ICs0NSw3
IEBAIHN0cnVjdCBSYXdQbHVnaW5NZXRhRGF0YTsKIAogY2xhc3MgTmV0c2NhcGVQbHVnaW5Nb2R1
bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBnZXRPckNyZWF0ZShj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIHN0YXRpYyBSZWZQdHI8TmV0c2NhcGVQbHVn
aW5Nb2R1bGU+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CiAgICAgfk5l
dHNjYXBlUGx1Z2luTW9kdWxlKCk7CiAKICAgICBjb25zdCBOUFBsdWdpbkZ1bmNzJiBwbHVnaW5G
dW5jcygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRnVuY3M7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcAppbmRleCA1OWZlMTE4ODIzMjg0NzdhNzNkM2MzMzVj
MGY0NTg1MDk1ZGYyNDYyLi42MmIxMWI3M2NmMmQ3N2FiODBmNTMzMjY5MWZiODdlZDJiYjJmMDlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3BwCkBAIC01Miw5
ICs1Miw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Bvd2VyT2YyKHVuc2lnbmVkIHYpCiB9CiAj
ZW5kaWYKIAotdm9pZCBWaXNpdGVkTGlua1RhYmxlOjpzZXRTaGFyZWRNZW1vcnkoUGFzc1JlZlB0
cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKK3ZvaWQgVmlzaXRlZExpbmtUYWJsZTo6c2V0
U2hhcmVkTWVtb3J5KFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQogewotICAgIG1f
c2hhcmVkTWVtb3J5ID0gc2hhcmVkTWVtb3J5OworICAgIG1fc2hhcmVkTWVtb3J5ID0gV1RGTW92
ZShzaGFyZWRNZW1vcnkpOwogICAgIAogICAgIEFTU0VSVChtX3NoYXJlZE1lbW9yeSk7CiAgICAg
QVNTRVJUKCEobV9zaGFyZWRNZW1vcnktPnNpemUoKSAlIHNpemVvZihMaW5rSGFzaCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5oCmluZGV4IDg2MWNlN2E3OTMyMTQ5
NjE1NWM1Nzc1ZjNhMTI2OTEyY2RlMjU0OWUuLjFkOTEyNjc1ODE1NGMxODk0OWQ0NWQyODUwYTMx
YjFjZmU5NGVjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlu
a1RhYmxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuaApA
QCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBWaXNpdGVkTGlua1RhYmxlX2gKIAogI2luY2x1ZGUg
PFdlYkNvcmUvTGlua0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOSw3ICszOCw3IEBA
IHB1YmxpYzoKICAgICBWaXNpdGVkTGlua1RhYmxlKCk7CiAgICAgflZpc2l0ZWRMaW5rVGFibGUo
KTsKIAotICAgIHZvaWQgc2V0U2hhcmVkTWVtb3J5KFBhc3NSZWZQdHI8U2hhcmVkTWVtb3J5Pik7
CisgICAgdm9pZCBzZXRTaGFyZWRNZW1vcnkoUmVmPFNoYXJlZE1lbW9yeT4mJik7CiAKICAgICAv
LyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBVSSBwcm9jZXNzLgogICAgIGJv
b2wgYWRkTGlua0hhc2goV2ViQ29yZTo6TGlua0hhc2gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggMWI3NTRmMzRkNTU1MzVjMmJhYTEz
YTAzYWRjMTUxN2VhYjliODRkZS4uOTE0NTBmZDk5MWIwOTExMDExMDZmYTc0MjFiY2M4ZjQ1Y2Y1
MDZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRl
ICJTZXNzaW9uU3RhdGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIEFQSSB7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFZpZXdTbmFwc2hvdCogc25hcHNob3QoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1TdGF0
ZS5zbmFwc2hvdC5nZXQoKTsgfQotICAgIHZvaWQgc2V0U25hcHNob3QoUGFzc1JlZlB0cjxWaWV3
U25hcHNob3Q+IHNuYXBzaG90KSB7IG1faXRlbVN0YXRlLnNuYXBzaG90ID0gc25hcHNob3Q7IH0K
KyAgICB2b2lkIHNldFNuYXBzaG90KFJlZlB0cjxWaWV3U25hcHNob3Q+JiYgc25hcHNob3QpIHsg
bV9pdGVtU3RhdGUuc25hcHNob3QgPSBXVEZNb3ZlKHNuYXBzaG90KTsgfQogI2VuZGlmCiAKICAg
ICBzdGF0aWMgdWludDY0X3QgaGlnaGVzdFVzZWRJdGVtSUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggZWUyMWI0NmYxNWZmZTBkYzg3ZTFi
YWRhNGE2MmJiNzIzMTFhYmIwMS4uZDMwNzhiNTlhYTNlYWNlOTczZGNkOTJlNzVkNTExOThkYTM1
YzRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRl
bS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgV2ViQ29udGV4dE1lbnVJdGVtOjpXZWJDb250ZXh0TWVudUl0ZW0o
Y29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgZGF0YSkKIHsKIH0KIAotUGFzc1JlZlB0cjxX
ZWJDb250ZXh0TWVudUl0ZW0+IFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJheSogc3VibWVudUl0ZW1zKQorUmVmPFdl
YkNvbnRleHRNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiB0aXRsZSwgYm9vbCBlbmFibGVkLCBBUEk6OkFycmF5KiBzdWJtZW51SXRlbXMpCiB7CiAgICAg
c2l6ZV90IHNpemUgPSBzdWJtZW51SXRlbXMtPnNpemUoKTsKIApAQCAtNTIsNyArNTIsNyBAQCBQ
YXNzUmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiB0aXRsZSwgYgogICAgICAgICAgICAgc3VibWVudS5hcHBlbmQoaXRlbS0+
ZGF0YSgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRleHRNZW51
SXRlbShXZWJDb250ZXh0TWVudUl0ZW1EYXRhKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05v
QWN0aW9uLCB0aXRsZSwgZW5hYmxlZCwgc3VibWVudSkpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvbnRleHRNZW51SXRlbURhdGEo
V2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIHRpdGxlLCBlbmFibGVkLCBzdWJt
ZW51KSkpLmxlYWtSZWYoKTsKIH0KIAogV2ViQ29udGV4dE1lbnVJdGVtKiBXZWJDb250ZXh0TWVu
dUl0ZW06OnNlcGFyYXRvckl0ZW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvbnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRN
ZW51SXRlbS5oCmluZGV4IDk4YjlmMDFkM2MyNTZkMzhjMmJjODQ1NmUyYWFiMGRkM2VkYTRjYmEu
Ljk3NjMyZjk2NmNjZjc4YzA1ZTMyNmM1ZjZhZDJmZmRkNzUxNjViZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudUl0ZW0oZGF0YSkp
OwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJheSogc3VibWVu
dUl0ZW1zKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvbnRleHRNZW51SXRlbT4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJheSogc3VibWVudUl0ZW1zKTsK
ICAgICBzdGF0aWMgV2ViQ29udGV4dE1lbnVJdGVtKiBzZXBhcmF0b3JJdGVtKCk7CiAKICAgICBS
ZWY8QVBJOjpBcnJheT4gc3VibWVudUl0ZW1zQXNBUElBcnJheSgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKaW5kZXggM2YwMzk3MWMz
ZWVkM2FjNDU1YzBjOTU0YzE3MmJhZDg0NGRlZDdmNi4uMWRkNzk4OWJjYzAzZDQwMDAwZGNkOWNj
MjY5NGNiYWJjZmZlNDYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdl
b2xvY2F0aW9uUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xh
c3MgRGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJM
YXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuY3BwCmluZGV4
IDljYzEwZWNhNDZjNDRlMTMxMGMyYjY3NzM2NmI0MDI3M2NhNDQ5NjIuLmE3YjRmNDY1NTU2NjMz
NWMwNjZhYjE2OTk2MGU4MWZjZWE5YjBkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJSZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJl
bmRlckxheWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+IFdlYlJl
bmRlckxheWVyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKK1JlZlB0cjxXZWJSZW5kZXJMYXllcj4g
V2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQogewogICAgIEZyYW1lKiBtYWlu
RnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKICAgICBpZiAoIW1haW5GcmFtZSkKQEAgLTYzLDEy
ICs2MywxMiBAQCBQYXNzUmVmUHRyPFdlYlJlbmRlckxheWVyPiBXZWJSZW5kZXJMYXllcjo6Y3Jl
YXRlKFdlYlBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJMYXll
cihyb290TGF5ZXIpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJSZW5kZXJMYXllcj4gV2ViUmVuZGVy
TGF5ZXI6OmNyZWF0ZShQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gcmVuZGVyZXIsIGJvb2wg
aXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBDb21wb3NpdGlu
Z0xheWVyVHlwZSB0eXBlLCBXZWJDb3JlOjpJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3gsIGRv
dWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBu
ZWdhdGl2ZVpPcmRlckxpc3QsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gbm9ybWFsRmxvd0xpc3Qs
IFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gcG9zaXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPFdl
YlJlbmRlckxheWVyPiBmcmFtZUNvbnRlbnRzTGF5ZXIpCitSZWY8V2ViUmVuZGVyTGF5ZXI+IFdl
YlJlbmRlckxheWVyOjpjcmVhdGUoUmVmUHRyPFdlYlJlbmRlck9iamVjdD4mJiByZW5kZXJlciwg
Ym9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGluZywgYm9vbCBpc0NsaXBwZWQsIENvbXBv
c2l0aW5nTGF5ZXJUeXBlIHR5cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0Jv
eCwgZG91YmxlIGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlLCBSZWZQdHI8QVBJOjpBcnJheT4m
JiBuZWdhdGl2ZVpPcmRlckxpc3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5vcm1hbEZsb3dMaXN0
LCBSZWZQdHI8QVBJOjpBcnJheT4mJiBwb3NpdGl2ZVpPcmRlckxpc3QsIFJlZlB0cjxXZWJSZW5k
ZXJMYXllcj4mJiBmcmFtZUNvbnRlbnRzTGF5ZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJSZW5kZXJMYXllcihyZW5kZXJlciwgaXNSZWZsZWN0aW9uLCBpc0NsaXBwaW5nLCBpc0Ns
aXBwZWQsIHR5cGUsIGFic29sdXRlQm91bmRpbmdCb3gsIGJhY2tpbmdTdG9yZU1lbW9yeUVzdGlt
YXRlLCBuZWdhdGl2ZVpPcmRlckxpc3QsIG5vcm1hbEZsb3dMaXN0LCBwb3NpdGl2ZVpPcmRlckxp
c3QsIGZyYW1lQ29udGVudHNMYXllcikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJl
bmRlckxheWVyKFdURk1vdmUocmVuZGVyZXIpLCBpc1JlZmxlY3Rpb24sIGlzQ2xpcHBpbmcsIGlz
Q2xpcHBlZCwgdHlwZSwgYWJzb2x1dGVCb3VuZGluZ0JveCwgYmFja2luZ1N0b3JlTWVtb3J5RXN0
aW1hdGUsIFdURk1vdmUobmVnYXRpdmVaT3JkZXJMaXN0KSwgV1RGTW92ZShub3JtYWxGbG93TGlz
dCksIFdURk1vdmUocG9zaXRpdmVaT3JkZXJMaXN0KSwgV1RGTW92ZShmcmFtZUNvbnRlbnRzTGF5
ZXIpKSk7CiB9CiAKLVBhc3NSZWZQdHI8QVBJOjpBcnJheT4gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0
ZUFycmF5RnJvbUxheWVyTGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCkKK1JlZlB0cjxB
UEk6OkFycmF5PiBXZWJSZW5kZXJMYXllcjo6Y3JlYXRlQXJyYXlGcm9tTGF5ZXJMaXN0KFZlY3Rv
cjxSZW5kZXJMYXllcio+KiBsaXN0KQogewogICAgIGlmICghbGlzdCB8fCAhbGlzdC0+c2l6ZSgp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyOCwxOCArMTI4LDE4IEBAIFdlYlJlbmRl
ckxheWVyOjpXZWJSZW5kZXJMYXllcihSZW5kZXJMYXllciogbGF5ZXIpCiAgICAgfQogfQogCi1X
ZWJSZW5kZXJMYXllcjo6V2ViUmVuZGVyTGF5ZXIoUGFzc1JlZlB0cjxXZWJSZW5kZXJPYmplY3Q+
IHJlbmRlcmVyLCBib29sIGlzUmVmbGVjdGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xp
cHBlZCwgQ29tcG9zaXRpbmdMYXllclR5cGUgdHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0
ZUJvdW5kaW5nQm94LCBkb3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUsIFBhc3NSZWZQ
dHI8QVBJOjpBcnJheT4gbmVnYXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+
IG5vcm1hbEZsb3dMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IHBvc2l0aXZlWk9yZGVyTGlz
dCwgUGFzc1JlZlB0cjxXZWJSZW5kZXJMYXllcj4gZnJhbWVDb250ZW50c0xheWVyKQotICAgIDog
bV9yZW5kZXJlcihyZW5kZXJlcikKK1dlYlJlbmRlckxheWVyOjpXZWJSZW5kZXJMYXllcihSZWZQ
dHI8V2ViUmVuZGVyT2JqZWN0PiYmIHJlbmRlcmVyLCBib29sIGlzUmVmbGVjdGlvbiwgYm9vbCBp
c0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5cGUgdHlwZSwgV2Vi
Q29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBkb3VibGUgYmFja2luZ1N0b3JlTWVt
b3J5RXN0aW1hdGUsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5lZ2F0aXZlWk9yZGVyTGlzdCwgUmVm
UHRyPEFQSTo6QXJyYXk+JiYgbm9ybWFsRmxvd0xpc3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIHBv
c2l0aXZlWk9yZGVyTGlzdCwgUmVmUHRyPFdlYlJlbmRlckxheWVyPiYmIGZyYW1lQ29udGVudHNM
YXllcikKKyAgICA6IG1fcmVuZGVyZXIoV1RGTW92ZShyZW5kZXJlcikpCiAgICAgLCBtX2lzUmVm
bGVjdGlvbihpc1JlZmxlY3Rpb24pCiAgICAgLCBtX2lzQ2xpcHBpbmcoaXNDbGlwcGluZykKICAg
ICAsIG1faXNDbGlwcGVkKGlzQ2xpcHBlZCkKICAgICAsIG1fY29tcG9zaXRpbmdMYXllclR5cGUo
dHlwZSkKICAgICAsIG1fYWJzb2x1dGVCb3VuZGluZ0JveChhYnNvbHV0ZUJvdW5kaW5nQm94KQog
ICAgICwgbV9iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZShiYWNraW5nU3RvcmVNZW1vcnlFc3Rp
bWF0ZSkKLSAgICAsIG1fbmVnYXRpdmVaT3JkZXJMaXN0KG5lZ2F0aXZlWk9yZGVyTGlzdCkKLSAg
ICAsIG1fbm9ybWFsRmxvd0xpc3Qobm9ybWFsRmxvd0xpc3QpCi0gICAgLCBtX3Bvc2l0aXZlWk9y
ZGVyTGlzdChwb3NpdGl2ZVpPcmRlckxpc3QpCi0gICAgLCBtX2ZyYW1lQ29udGVudHNMYXllcihm
cmFtZUNvbnRlbnRzTGF5ZXIpCisgICAgLCBtX25lZ2F0aXZlWk9yZGVyTGlzdChXVEZNb3ZlKG5l
Z2F0aXZlWk9yZGVyTGlzdCkpCisgICAgLCBtX25vcm1hbEZsb3dMaXN0KFdURk1vdmUobm9ybWFs
Rmxvd0xpc3QpKQorICAgICwgbV9wb3NpdGl2ZVpPcmRlckxpc3QoV1RGTW92ZShwb3NpdGl2ZVpP
cmRlckxpc3QpKQorICAgICwgbV9mcmFtZUNvbnRlbnRzTGF5ZXIoV1RGTW92ZShmcmFtZUNvbnRl
bnRzTGF5ZXIpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJMYXllci5oCmlu
ZGV4IDViNmJlMDQzMzRlNDYyMGQxZDBhOWYyM2FiMTM5NDUzZGJkYjQyZGMuLjUxNDE0ZGZiNDdh
MmU2ZjI1NmYzMGQzZjVhMTUzYjgxNGM3OGFiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJSZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJS
ZW5kZXJMYXllci5oCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNzIFdlYlJlbmRlckxheWVyIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UmVuZGVyTGF5ZXI+IHsKIHB1
YmxpYzoKICAgICBlbnVtIENvbXBvc2l0aW5nTGF5ZXJUeXBlIHsgTm9uZSwgTm9ybWFsLCBUaWxl
ZCwgTWVkaWEsIENvbnRhaW5lciB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUmVuZGVy
TGF5ZXI+IGNyZWF0ZShXZWJQYWdlKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUmVuZGVy
TGF5ZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gcmVuZGVyZXIsIGJvb2wg
aXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBDb21wb3NpdGlu
Z0xheWVyVHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBkb3VibGUg
YmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gbmVnYXRp
dmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5vcm1hbEZsb3dMaXN0LCBQYXNz
UmVmUHRyPEFQSTo6QXJyYXk+IHBvc2l0aXZlWk9yZGVyTGlzdCwgUGFzc1JlZlB0cjxXZWJSZW5k
ZXJMYXllcj4gZnJhbWVDb250ZW50c0xheWVyKTsKKyAgICBzdGF0aWMgUmVmUHRyPFdlYlJlbmRl
ckxheWVyPiBjcmVhdGUoV2ViUGFnZSopOworICAgIHN0YXRpYyBSZWY8V2ViUmVuZGVyTGF5ZXI+
IGNyZWF0ZShSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiYmIHJlbmRlcmVyLCBib29sIGlzUmVmbGVj
dGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5
cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCwgZG91YmxlIGJhY2tpbmdT
dG9yZU1lbW9yeUVzdGltYXRlLCBSZWZQdHI8QVBJOjpBcnJheT4mJiBuZWdhdGl2ZVpPcmRlckxp
c3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5vcm1hbEZsb3dMaXN0LCBSZWZQdHI8QVBJOjpBcnJh
eT4mJiBwb3NpdGl2ZVpPcmRlckxpc3QsIFJlZlB0cjxXZWJSZW5kZXJMYXllcj4mJiBmcmFtZUNv
bnRlbnRzTGF5ZXIpOwogCiAgICAgQVBJOjpBcnJheSogbmVnYXRpdmVaT3JkZXJMaXN0KCkgY29u
c3QgeyByZXR1cm4gbV9uZWdhdGl2ZVpPcmRlckxpc3QuZ2V0KCk7IH0KICAgICBBUEk6OkFycmF5
KiBub3JtYWxGbG93TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9ybWFsRmxvd0xpc3QuZ2V0KCk7
IH0KQEAgLTU4LDkgKzU4LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
YlJlbmRlckxheWVyKFdlYkNvcmU6OlJlbmRlckxheWVyKik7Ci0gICAgV2ViUmVuZGVyTGF5ZXIo
UGFzc1JlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IHJlbmRlcmVyLCBib29sIGlzUmVmbGVjdGlvbiwg
Ym9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5cGUsIFdl
YkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCwgZG91YmxlIGJhY2tpbmdTdG9yZU1l
bW9yeUVzdGltYXRlLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5lZ2F0aXZlWk9yZGVyTGlzdCwg
UGFzc1JlZlB0cjxBUEk6OkFycmF5PiBub3JtYWxGbG93TGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFy
cmF5PiBwb3NpdGl2ZVpPcmRlckxpc3QsIFBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+IGZyYW1l
Q29udGVudHNMYXllcik7CisgICAgV2ViUmVuZGVyTGF5ZXIoUmVmUHRyPFdlYlJlbmRlck9iamVj
dD4mJiByZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGluZywgYm9vbCBp
c0NsaXBwZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IGFic29sdXRl
Qm91bmRpbmdCb3gsIGRvdWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwgUmVmUHRyPEFQ
STo6QXJyYXk+JiYgbmVnYXRpdmVaT3JkZXJMaXN0LCBSZWZQdHI8QVBJOjpBcnJheT4mJiBub3Jt
YWxGbG93TGlzdCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgcG9zaXRpdmVaT3JkZXJMaXN0LCBSZWZQ
dHI8V2ViUmVuZGVyTGF5ZXI+JiYgZnJhbWVDb250ZW50c0xheWVyKTsKIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChWZWN0b3I8V2Vi
Q29yZTo6UmVuZGVyTGF5ZXIqPiopOworICAgIHN0YXRpYyBSZWZQdHI8QVBJOjpBcnJheT4gY3Jl
YXRlQXJyYXlGcm9tTGF5ZXJMaXN0KFZlY3RvcjxXZWJDb3JlOjpSZW5kZXJMYXllcio+Kik7CiAK
ICAgICBSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBtX3JlbmRlcmVyOwogICAgIGJvb2wgbV9pc1Jl
ZmxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwCmluZGV4
IGFmYzQzMzZlZDg0NTg4MzA4Mzc5MmI1OTk3NDRjZGY3NDQwZWFmOWIuLjU5MjJiMDAwMDk4YjQw
ZTY1ZDM2MWM4NDAwZmE3NjM1NDE3NmZiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJS
ZW5kZXJPYmplY3QuY3BwCkBAIC01OCw5ICs1OCw5IEBAIFJlZlB0cjxXZWJSZW5kZXJPYmplY3Q+
IFdlYlJlbmRlck9iamVjdDo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QoY29udGVudFJlbmRlcmVyLCB0cnVlKSk7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudFRhZ05hbWUsIGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGVsZW1lbnRDbGFzc05hbWVzLCBXZWJD
b3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVj
dCwgY29uc3QgU3RyaW5nJiB0ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUGFzc1Jl
ZlB0cjxBUEk6OkFycmF5PiBjaGlsZHJlbikKK1JlZjxXZWJSZW5kZXJPYmplY3Q+IFdlYlJlbmRl
ck9iamVjdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50
VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFJlZlB0cjxBUEk6OkFycmF5PiYmIGVs
ZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJD
b3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0ZXh0U25pcHBldCwgdW5zaWdu
ZWQgdGV4dExlbmd0aCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgY2hpbGRyZW4pCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QobmFtZSwgZWxlbWVudFRhZ05hbWUsIGVs
ZW1lbnRJRCwgZWxlbWVudENsYXNzTmFtZXMsIGFic29sdXRlUG9zaXRpb24sIGZyYW1lUmVjdCwg
dGV4dFNuaXBwZXQsIHRleHRMZW5ndGgsIGNoaWxkcmVuKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViUmVuZGVyT2JqZWN0KG5hbWUsIGVsZW1lbnRUYWdOYW1lLCBlbGVtZW50SUQsIFdU
Rk1vdmUoZWxlbWVudENsYXNzTmFtZXMpLCBhYnNvbHV0ZVBvc2l0aW9uLCBmcmFtZVJlY3QsIHRl
eHRTbmlwcGV0LCB0ZXh0TGVuZ3RoLCBXVEZNb3ZlKGNoaWxkcmVuKSkpOwogfQogCiBXZWJSZW5k
ZXJPYmplY3Q6OldlYlJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIHNo
b3VsZEluY2x1ZGVEZXNjZW5kYW50cykKQEAgLTEyNywxMyArMTI3LDEzIEBAIFdlYlJlbmRlck9i
amVjdDo6V2ViUmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgc2hvdWxk
SW5jbHVkZURlc2NlCiAgICAgbV9jaGlsZHJlbiA9IEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3Zl
KGNoaWxkcmVuKSk7CiB9CiAKLVdlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5n
JiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gZWxlbWVudENsYXNzTmFtZXMsIFdl
YkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6OkludFJlY3QgZnJhbWVS
ZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25lZCB0ZXh0TGVuZ3RoLCBQYXNz
UmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKQotICAgIDogbV9jaGlsZHJlbihjaGlsZHJlbikK
K1dlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFJlZlB0
cjxBUEk6OkFycmF5PiYmIGVsZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNv
bHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0
ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgY2hp
bGRyZW4pCisgICAgOiBtX2NoaWxkcmVuKFdURk1vdmUoY2hpbGRyZW4pKQogICAgICwgbV9uYW1l
KG5hbWUpCiAgICAgLCBtX2VsZW1lbnRUYWdOYW1lKGVsZW1lbnRUYWdOYW1lKQogICAgICwgbV9l
bGVtZW50SUQoZWxlbWVudElEKQogICAgICwgbV90ZXh0U25pcHBldCh0ZXh0U25pcHBldCkKLSAg
ICAsIG1fZWxlbWVudENsYXNzTmFtZXMoZWxlbWVudENsYXNzTmFtZXMpCisgICAgLCBtX2VsZW1l
bnRDbGFzc05hbWVzKFdURk1vdmUoZWxlbWVudENsYXNzTmFtZXMpKQogICAgICwgbV9hYnNvbHV0
ZVBvc2l0aW9uKGFic29sdXRlUG9zaXRpb24pCiAgICAgLCBtX2ZyYW1lUmVjdChmcmFtZVJlY3Qp
CiAgICAgLCBtX3RleHRMZW5ndGgodGV4dExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJS
ZW5kZXJPYmplY3QuaAppbmRleCBmYzI1NTgyMzE3YTUzOGJiNGQ0NzkzMGVhZTVhZTBkYjVmNTFm
Nzc1Li44NTIyZGFjODg0NDI3YjU4NzVhOWQ3YWNkNGRjM2I1MDY0Zjg4NzM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEFQSSB7CkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVuZGVyT2JqZWN0KHJlbmRl
cmVyLCBmYWxzZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlJlbmRlck9i
amVjdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFn
TmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gZWxl
bWVudENsYXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNv
cmU6OkludFJlY3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25l
ZCB0ZXh0TGVuZ3RoLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKTsKKyAgICBzdGF0
aWMgUmVmPFdlYlJlbmRlck9iamVjdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFJlZlB0cjxB
UEk6OkFycmF5PiYmIGVsZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0
ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0ZXh0
U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgY2hpbGRy
ZW4pOwogCiAgICAgdmlydHVhbCB+V2ViUmVuZGVyT2JqZWN0KCk7CiAKQEAgLTcxLDcgKzcxLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlJlbmRlck9iamVjdChXZWJDb3JlOjpSZW5k
ZXJPYmplY3QqLCBib29sIHNob3VsZEluY2x1ZGVEZXNjZW5kYW50cyk7Ci0gICAgV2ViUmVuZGVy
T2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwg
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gZWxlbWVudENs
YXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6Oklu
dFJlY3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25lZCB0ZXh0
TGVuZ3RoLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKTsKKyAgICBXZWJSZW5kZXJP
YmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRUYWdOYW1lLCBj
b25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgZWxlbWVudENsYXNz
TmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6OkludFJl
Y3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25lZCB0ZXh0TGVu
Z3RoLCBSZWZQdHI8QVBJOjpBcnJheT4mJiBjaGlsZHJlbik7CiAKICAgICBSZWZQdHI8QVBJOjpB
cnJheT4gbV9jaGlsZHJlbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElGcmFtZUluZm8uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElG
cmFtZUluZm8uY3BwCmluZGV4IDNlMzIyZTU1N2ExZGI5Yzg5NTFlNGQ5YWU2OGM2OGIxYzcyZWE4
NzAuLmEyNGEzZDZlMDY5NWZiODhhODgwNzdmNDk4MDIzOGRiNTgwMzgyMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZvOjpjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ28KIEZyYW1lSW5mbzo6RnJhbWVJbmZvKGNvbnN0IFdl
YktpdDo6RnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSkKICAgICA6IG1faXNNYWluRnJhbWUo
ZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSkKICAgICAsIG1fcmVxdWVzdChmcmFtZUluZm9EYXRh
LnJlcXVlc3QpCi0gICAgLCBtX3NlY3VyaXR5T3JpZ2luKCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KGZyYW1lSW5mb0RhdGEuc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkpCisgICAgLCBt
X3NlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZvRGF0YS5zZWN1
cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSkKICAgICAsIG1faGFuZGxlKEFQSTo6RnJhbWVI
YW5kbGU6OmNyZWF0ZShmcmFtZUluZm9EYXRhLmZyYW1lSUQpKQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCmluZGV4IGE5NjFhMmIzMWVmODc1
MzIxZDgxMzljY2Q5NDM0ODY4M2MwMjc1YjUuLjI5NTlkNTkxZjZlYjk4NGI0ZGZhOWIwYzY1NmNh
NzdiODQ3Zjc4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVk
TGlua1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtT
dG9yZS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnBlbmRp
bmdWaXNpdGVkTGlua3NUaW1lckZpcmVkKCkKIAogdm9pZCBWaXNpdGVkTGlua1N0b3JlOjpyZXNp
emVUYWJsZSh1bnNpZ25lZCBuZXdUYWJsZVNpemUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZE1lbW9y
eT4gbmV3VGFibGVNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKG5ld1RhYmxlU2l6ZSAq
IHNpemVvZihMaW5rSGFzaCkpOworICAgIGF1dG8gbmV3VGFibGVNZW1vcnkgPSBTaGFyZWRNZW1v
cnk6OmFsbG9jYXRlKG5ld1RhYmxlU2l6ZSAqIHNpemVvZihMaW5rSGFzaCkpOwogCiAgICAgaWYg
KCFuZXdUYWJsZU1lbW9yeSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBhbGxvY2F0
ZSBzaGFyZWQgbWVtb3J5IGZvciB2aXNpdGVkIGxpbmsgdGFibGUiKTsKQEAgLTIxNCw3ICsyMTQs
NyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnJlc2l6ZVRhYmxlKHVuc2lnbmVkIG5ld1RhYmxl
U2l6ZSkKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjdXJyZW50VGFibGVNZW1vcnkgPSBtX3Rh
YmxlLnNoYXJlZE1lbW9yeSgpOwogICAgIHVuc2lnbmVkIGN1cnJlbnRUYWJsZVNpemUgPSBtX3Rh
YmxlU2l6ZTsKIAotICAgIG1fdGFibGUuc2V0U2hhcmVkTWVtb3J5KG5ld1RhYmxlTWVtb3J5KTsK
KyAgICBtX3RhYmxlLnNldFNoYXJlZE1lbW9yeShuZXdUYWJsZU1lbW9yeS5yZWxlYXNlTm9uTnVs
bCgpKTsKICAgICBtX3RhYmxlU2l6ZSA9IG5ld1RhYmxlU2l6ZTsKIAogICAgIGlmIChjdXJyZW50
VGFibGVNZW1vcnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwCmluZGV4IDFkNGI5
N2ViZTlmMmRhZjU0NjVlYmJhYjVjZjlhMTkxZDc4ZGVkZTQuLjZlOGIwNmRmYjhkM2Q1ZjBiY2Q1
M2Q1MDg4MTk1ODRjOGYzNzExMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcApA
QCAtOTQsNyArOTQsNyBAQCB2b2lkIFZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyOjpzZXRWaXNp
dGVkTGlua1RhYmxlKGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJgogICAgIGlmICghc2hhcmVk
TWVtb3J5KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Zpc2l0ZWRMaW5rVGFibGUuc2V0U2hh
cmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5KSk7CisgICAgbV92aXNpdGVkTGlua1RhYmxl
LnNldFNoYXJlZE1lbW9yeShzaGFyZWRNZW1vcnkucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBp
bnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3MoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309868</attachid>
            <date>2017-05-11 22:05:09 -0700</date>
            <delta_ts>2017-05-11 22:10:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172017-20170511220508.patch</filename>
            <type>text/plain</type>
            <size>48151</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWVlZTcyZjIzZWM0NmM4
NzdmYmI1YWE2M2FiN2Q0YjViY2EwZDI3YS4uMzUwOGMxMTIzOGUwMmNjOGU3N2NmZmMyZTIzYzU4
NTc3MDNlNDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTA1LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVm
UHRyIHVuZGVyIFdlYktpdDIvU2hhcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzIwMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHA6CisgICAgICAg
IChBUEk6OkRpY3Rpb25hcnk6OmFkZCk6CisgICAgICAgIChBUEk6OkRpY3Rpb25hcnk6OnNldCk6
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElTZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyk6CisgICAgICAgIChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUp
OgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAg
ICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1No
YXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6UHJveHlpbmdSZWZQdHI6OlByb3h5aW5n
UmVmUHRyKToKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLmg6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3Vy
Y2U6OldlYkFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgICogU2hhcmVkL0FzeW5jUmVxdWVzdC5o
OgorICAgICAgICAoV2ViS2l0OjpBc3luY1JlcXVlc3RNYXA6OmFkZCk6CisgICAgICAgICogU2hh
cmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKiBTaGFy
ZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVU
aWxlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6Y3JlYXRlVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAg
ICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAg
ICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmg6CisgICAg
ICAgICogU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNp
dGVkTGlua1RhYmxlOjpzZXRTaGFyZWRNZW1vcnkpOgorICAgICAgICAqIFNoYXJlZC9WaXNpdGVk
TGlua1RhYmxlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U25hcHNob3QpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbnRl
eHRNZW51SXRlbS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmg6
CisgICAgICAgICogU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlckxheWVy
OjpjcmVhdGVBcnJheUZyb21MYXllckxpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJM
YXllcjo6V2ViUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJMYXllci5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlck9i
amVjdDo6V2ViUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUmVuZGVyT2JqZWN0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlOjpyZXNpemVUYWJsZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFibGUpOgor
CiAyMDE3LTA1LTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOi4uLl0gZG9lc24ndCB3b3Jr
IGZvciBJbmRleGVkREIgaWYgdGhlIGRhdGEgc3RvcmUgaGFzIGEgY3VzdG9tIElEQiBwYXRoLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkv
TmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKaW5kZXggMTcyNTU4ZDkyYjVmYjhhMDU0OGU5OTdmMWEx
ZTFkNmQ5NTcwMDAyMC4uNjg5MDYzNjg1ZTcwMDY5NGRiMDMwNDA5ZWM2NzRhMDQ5Nzg1MGY3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxl
QVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBAIC01MSw3ICs1MSw3IEBAIE5ldHdvcmtCbG9i
UmVnaXN0cnk6Ok5ldHdvcmtCbG9iUmVnaXN0cnkoKQogCiB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNv
bm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNpb24sIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCiB7Ci0gICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocGF0aCwgc2FuZGJv
eEV4dGVuc2lvbiksIGNvbnRlbnRUeXBlKTsKKyAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZp
bGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZShwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKSwgY29udGVudFR5cGUpOwog
CiAgICAgQVNTRVJUKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbikuY29udGFp
bnModXJsKSk7CiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9y
ID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0FQSURpY3Rpb25hcnkuY3BwCmluZGV4IDg5NGU5OGRkMTIyNWQ0ODA1ZTk3
MGI2ZGU5MjVjMGJlNzc5YTBkZTkuLjRmYjk5NTJmZDY5M2EyZjE2OTU5ZmFlM2VhNTcxNDVhYzM5
OTFjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJRGljdGlvbmFy
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmNwcApA
QCAtNjQsMTUgKzY0LDE1IEBAIFJlZjxBcnJheT4gRGljdGlvbmFyeTo6a2V5cygpIGNvbnN0CiAg
ICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGtleXMpKTsKIH0KIAotYm9vbCBE
aWN0aW9uYXJ5OjphZGQoY29uc3QgV1RGOjpTdHJpbmcmIGtleSwgUGFzc1JlZlB0cjxBUEk6Ok9i
amVjdD4gaXRlbSkKK2Jvb2wgRGljdGlvbmFyeTo6YWRkKGNvbnN0IFdURjo6U3RyaW5nJiBrZXks
IFJlZlB0cjxBUEk6Ok9iamVjdD4mJiBpdGVtKQogewotICAgIE1hcFR5cGU6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBpdGVtKTsKKyAgICBNYXBUeXBlOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9tYXAuYWRkKGtleSwgV1RGTW92ZShpdGVtKSk7CiAgICAgcmV0dXJuIHJlc3VsdC5p
c05ld0VudHJ5OwogfQogCi1ib29sIERpY3Rpb25hcnk6OnNldChjb25zdCBXVEY6OlN0cmluZyYg
a2V5LCBQYXNzUmVmUHRyPEFQSTo6T2JqZWN0PiBpdGVtKQorYm9vbCBEaWN0aW9uYXJ5OjpzZXQo
Y29uc3QgV1RGOjpTdHJpbmcmIGtleSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYmIGl0ZW0pCiB7Ci0g
ICAgTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLnNldChrZXksIGl0ZW0pOworICAg
IE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5zZXQoa2V5LCBXVEZNb3ZlKGl0ZW0p
KTsKICAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9BUElEaWN0aW9uYXJ5LmgKaW5kZXggNTA1OTkxMjlhOGNhZGZhNjg4ODc4ZDBhZjEx
Y2ZiZGZmNDEwYTliMy4uZmNiYTcyMzgxNzY2OTcwMDdiN2ZkZmFhNGIzMTg1OWY3MTlkMzA5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmgKQEAgLTcxLDggKzcx
LDggQEAgcHVibGljOgogCiAgICAgUmVmPEFycmF5PiBrZXlzKCkgY29uc3Q7CiAKLSAgICBib29s
IGFkZChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBQYXNzUmVmUHRyPE9iamVjdD4pOwotICAgIGJv
b2wgc2V0KGNvbnN0IFdURjo6U3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8T2JqZWN0Pik7CisgICAg
Ym9vbCBhZGQoY29uc3QgV1RGOjpTdHJpbmcmIGtleSwgUmVmUHRyPE9iamVjdD4mJik7CisgICAg
Ym9vbCBzZXQoY29uc3QgV1RGOjpTdHJpbmcmIGtleSwgUmVmUHRyPE9iamVjdD4mJik7CiAgICAg
dm9pZCByZW1vdmUoY29uc3QgV1RGOjpTdHJpbmcmIGtleSk7CiAKICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCmluZGV4IDg5MTdjNjcwNDkwNGQzN2Y4NGI4MzE1Yjkz
Mzk5ZGYyZGU3NGQ0YzUuLmIzODkzYTE1OGQ3OGRmYmNmMmE3ZmJhNGE0ODM4OTc0NjQ2Njc5Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmgKQEAg
LTI3LDMyICsyNywzMiBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgU2VjdXJpdHlPcmln
aW4gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTZWN1cml0eU9y
aWdpbj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0
ZUZyb21TdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0aWMgUmVmPFNl
Y3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiBzdHJpbmcp
CiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHN0cmluZykpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQorICAgIHN0YXRp
YyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgcHJvdG9jb2ws
IGNvbnN0IFdURjo6U3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHByb3RvY29sLCBob3N0LCBwb3J0KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1
cml0eU9yaWdpbikKKyAgICBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikp
OwogICAgIH0KIAotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuICptX3NlY3VyaXR5T3JpZ2luOyB9CisgICAgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdp
bi5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQotICAgICAgICA6IG1fc2VjdXJp
dHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCisgICAgU2VjdXJpdHlPcmlnaW4oUmVmPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2luKQorICAgICAgICA6IG1fc2VjdXJpdHlP
cmlnaW4oV1RGTW92ZShzZWN1cml0eU9yaWdpbikpCiAgICAgewogICAgIH0KIApAQCAtNjEsNyAr
NjEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CisgICAgUmVmPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNjU2OWQ0ZDRj
ZTkyMTI5MTQ5ZjE5ZDQ4ZTA0NDliZWNhYmE4YThkYS4uMWNmYWU0YTI0OGM1MzdlOThmNzFhMzI5
NzdjYzNiMGVkYWUzYTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9B
UElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBB
UEkgewogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUpCisgICAgc3Rh
dGljIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShSZWZQdHI8V2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIHNlcmlhbGl6ZWRWYWx1ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShzZXJpYWxpemVkVmFsdWUp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdU
Rk1vdmUoc2VyaWFsaXplZFZhbHVlKSkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1Zh
bHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC02OCw4ICs2OCw4IEBAIHB1
YmxpYzoKICAgICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGludGVybmFsUmVwcmVz
ZW50YXRpb24oKSB7IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQoKTsgfQogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShQYXNzUmVmUHRyPFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKQotICAg
ICAgICA6IG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKKyAg
ICBleHBsaWNpdCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpCisgICAgICAgIDogbV9zZXJp
YWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpKQogICAgIHsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRl
eHRNZW51SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVu
dUl0ZW0uY3BwCmluZGV4IDA1MTRmMTgyNTFkOGVhNTg3MGJiNGE2ZGM5YmVmNzc4OTc5ZjE0YzMu
LjFjZjA1ZTUwNWMyNDcyNDg0NTE1ZTk4ZjA3MDY3OTA0NzJjNThjOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbUNyZWF0ZUFzQWN0
aW9uKFdLQ29udGV4dE1lbnVJdGVtVGFnIHRhZywgVwogICAgIFVOVVNFRF9QQVJBTSh0YWcpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aXRsZSk7CiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwotICAg
IHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiB9CiAKQEAgLTY1LDE5ICs2
NSwxOSBAQCBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbUNyZWF0ZUFzQ2hl
Y2thYmxlQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVtVAogICAgIFVOVVNFRF9QQVJBTSh0aXRsZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogICAgIFVOVVNFRF9QQVJBTShjaGVja2VkKTsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogCiBXS0NvbnRl
eHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbUNyZWF0ZUFzU3VibWVudShXS1N0cmluZ1Jl
ZiB0aXRsZSwgYm9vbCBlbmFibGVkLCBXS0FycmF5UmVmIHN1Ym1lbnVJdGVtcykKIHsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICByZXR1cm4gdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVt
OjpjcmVhdGUodG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIHRvSW1wbChzdWJtZW51
SXRlbXMpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSgmV2ViQ29udGV4dE1lbnVJdGVt
OjpjcmVhdGUodG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIHRvSW1wbChzdWJtZW51
SXRlbXMpKS5sZWFrUmVmKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGl0bGUpOwogICAg
IFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICAgICBVTlVTRURfUEFSQU0oc3VibWVudUl0ZW1zKTsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogCkBAIC04Niw3
ICs4Niw3IEBAIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtU2VwYXJhdG9y
SXRlbSgpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgcmV0dXJuIHRvQVBJKFdlYkNv
bnRleHRNZW51SXRlbTo6c2VwYXJhdG9ySXRlbSgpKTsKICNlbHNlCi0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCmluZGV4IDYxYTFjNjc0NTM1NTgy
YjUwZmZhZTY4YzI4ZTYyOTE1YWNiZDFlMDQuLjNjNGI0MjQ2ZTgxMjA4N2IzMGUzNmJhZmMxNjhl
ZjQ2NjNjNzBhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Nl
Y3VyaXR5T3JpZ2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tT
ZWN1cml0eU9yaWdpblJlZi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgV0tUeXBlSUQgV0tTZWN1cml0
eU9yaWdpbkdldFR5cGVJRCgpCiAKIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tTZWN1cml0eU9yaWdp
bkNyZWF0ZUZyb21TdHJpbmcoV0tTdHJpbmdSZWYgc3RyaW5nKQogewotICAgIHJldHVybiB0b0FQ
SShBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcodG9JbXBsKHN0cmluZyktPnN0cmluZygpKSkubGVha1JlZigpKTsKKyAg
ICByZXR1cm4gdG9BUEkoJkFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCkpKS5s
ZWFrUmVmKCkpOwogfQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVh
dGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXIpCkBAIC00Nywx
MyArNDcsMTMgQEAgV0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJv
bURhdGFiYXNlSWRlbnRpZmllcihXS1N0cmluZ1JlZiBpZGUKICAgICBhdXRvIG9yaWdpbiA9IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcih0b0ltcGwo
aWRlbnRpZmllciktPnN0cmluZygpKTsKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShv
cmlnaW4udmFsdWUoKS5zZWN1cml0eU9yaWdpbigpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0
b0FQSSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi52YWx1ZSgpLnNlY3VyaXR5
T3JpZ2luKCkpLmxlYWtSZWYoKSk7CiB9CiAKIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tTZWN1cml0
eU9yaWdpbkNyZWF0ZShXS1N0cmluZ1JlZiBwcm90b2NvbCwgV0tTdHJpbmdSZWYgaG9zdCwgaW50
IHBvcnQpCiB7CiAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgdG9JbXBsKGhvc3QpLT5zdHJpbmco
KSwgcG9ydCk7Ci0gICAgcmV0dXJuIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmxlYWtSZWYoKSk7Cisg
ICAgcmV0dXJuIHRvQVBJKCZzZWN1cml0eU9yaWdpbi5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmlu
Z1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3Jp
Z2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
U2hhcmVkQVBJQ2FzdC5oCmluZGV4IDMzZTY1Mjg3OWNkODYwMjZmYzQwYWE1YjZjMTkxNWE5N2Yy
NTFkNmUuLmI0ODA5ZjNhMTVmZjhjZGU2NDJkMWRkNGU2NTkxNzJkMDUwZmU0NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKQEAgLTEzNiw3ICsx
MzYsNyBAQCBhdXRvIHRvSW1wbChUIHQpIC0+IEltcGxUeXBlKgogdGVtcGxhdGU8dHlwZW5hbWUg
SW1wbFR5cGUsIHR5cGVuYW1lIEFQSVR5cGUgPSB0eXBlbmFtZSBJbXBsVHlwZUluZm88SW1wbFR5
cGU+OjpBUElUeXBlPgogY2xhc3MgUHJveHlpbmdSZWZQdHIgewogcHVibGljOgotICAgIFByb3h5
aW5nUmVmUHRyKFBhc3NSZWZQdHI8SW1wbFR5cGU+IGltcGwpCisgICAgUHJveHlpbmdSZWZQdHIo
UmVmUHRyPEltcGxUeXBlPiYmIGltcGwpCiAgICAgICAgIDogbV9pbXBsKGltcGwpCiAgICAgewog
ICAgIH0KQEAgLTIxMCw4ICsyMTAsOCBAQCBpbmxpbmUgUHJveHlpbmdSZWZQdHI8QVBJOjpVUkxS
ZXNwb25zZT4gdG9BUEkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcgogaW5saW5l
IFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9Db3BpZWRBUEkoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4q
IG9yaWdpbikKIHsKICAgICBpZiAoIW9yaWdpbikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIHRvQVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgqb3JpZ2luKS5sZWFrUmVmKCkp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gdG9BUEkoJkFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSgqb3JpZ2luKS5sZWFrUmVmKCkpOwogfQogCiAvKiBHZW9tZXRyeSBj
b252ZXJzaW9ucyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNv
dXJjZS5oCmluZGV4IDFlYjkyNjRiM2VmZDg3NTc5M2U1YmZhNGQ5ZTQ4YTdmOWJmNTY5N2MuLjlj
ZDFjMWM0Mjc5Y2QxNjFhYjllZDc2OTgzYWQxZDFiYzg1MThiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLmgKQEAgLTMwLDcgKzMwLDYgQEAKIAog
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBBUEkgewpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViQXJjaGl2
ZVJlc291cmNlKCk7CiAKICAgICBzdGF0aWMgUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gY3JlYXRl
KEFQSTo6RGF0YSosIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyk7Ci0gICAgc3RhdGljIFJlZjxXZWJBcmNoaXZlUmVz
b3VyY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4pOworICAg
IHN0YXRpYyBSZWY8V2ViQXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPFdlYkNvcmU6OkFy
Y2hpdmVSZXNvdXJjZT4mJik7CiAKICAgICBSZWY8QVBJOjpEYXRhPiBkYXRhKCk7CiAgICAgU3Ry
aW5nIFVSTCgpOwpAQCAtNjAsNyArNTksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2Vi
QXJjaGl2ZVJlc291cmNlKEFQSTo6RGF0YSosIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyk7Ci0gICAgV2ViQXJjaGl2
ZVJlc291cmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPik7CisgICAgV2Vi
QXJjaGl2ZVJlc291cmNlKFJlZlB0cjxXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U+JiYpOwogCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4gbV9hcmNoaXZlUmVzb3VyY2U7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5k
ZXggOWE0NTliNmY1ZjFhM2MyODc0ZGM2YjQzNjc3ODIzNTVkZTIxMGUzMy4uYjFjNTJkNzY1YTVm
Nzc4MmVlMTkyNzBhYTcyMjc0YTRmYzA3OWVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC00Miw5ICs0Miw5IEBAIFJlZjxXZWJBcmNo
aXZlUmVzb3VyY2U+IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKEFQSTo6RGF0YSogZGF0YSwg
Y29uc3QgU3RyaW5nCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXJjaGl2ZVJlc291cmNl
KGRhdGEsIFVSTCwgTUlNRVR5cGUsIHRleHRFbmNvZGluZykpOwogfQogCi1SZWY8V2ViQXJjaGl2
ZVJlc291cmNlPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQYXNzUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gYXJjaGl2ZVJlc291cmNlKQorUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBhcmNoaXZlUmVz
b3VyY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXJjaGl2ZVJlc291cmNlKGFy
Y2hpdmVSZXNvdXJjZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFyY2hpdmVSZXNv
dXJjZShXVEZNb3ZlKGFyY2hpdmVSZXNvdXJjZSkpKTsKIH0KIAogV2ViQXJjaGl2ZVJlc291cmNl
OjpXZWJBcmNoaXZlUmVzb3VyY2UoQVBJOjpEYXRhKiBkYXRhLCBjb25zdCBTdHJpbmcmIFVSTCwg
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcpCkBAIC01
Miw4ICs1Miw4IEBAIFdlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6
RGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0CiB7CiB9CiAKLVdlYkFyY2hpdmVS
ZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBh
cmNoaXZlUmVzb3VyY2UpCi0gICAgOiBtX2FyY2hpdmVSZXNvdXJjZShhcmNoaXZlUmVzb3VyY2Up
CitXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiYmIGFyY2hpdmVSZXNvdXJjZSkKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKFdURk1v
dmUoYXJjaGl2ZVJlc291cmNlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FzeW5jUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jUmVxdWVz
dC5oCmluZGV4IDVmMzI3YzQ5NjllY2ViODk5YThlZGUwY2U5ZTBmYzMxNTc4N2I3OWMuLjBjNGEw
YTBjNDEzYjBhMWMzYmU5ZWVmNWM3NzViY2YxMjM1NWI5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QXN5bmNSZXF1ZXN0LmgKQEAgLTI5LDggKzI5LDggQEAKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTI2LDkgKzEyNiw5IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpyZXF1ZXN0LmxlYWtSZWYoKSk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGQodWludDY0X3QgcmVxdWVzdElELCBQYXNzUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCkK
KyAgICB2b2lkIGFkZCh1aW50NjRfdCByZXF1ZXN0SUQsIFJlZlB0cjxBc3luY1JlcXVlc3Q+JiYg
cmVxdWVzdCkKICAgICB7Ci0gICAgICAgIG1fcmVxdWVzdE1hcC5hZGQocmVxdWVzdElELCByZXF1
ZXN0KTsKKyAgICAgICAgbV9yZXF1ZXN0TWFwLmFkZChyZXF1ZXN0SUQsIFdURk1vdmUocmVxdWVz
dCkpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4
dGVuc2lvbi5jcHAKaW5kZXggZmI1ZTA0ZjA1NmM3MTVkNzcxYjAyNTE0YzZlMjBlNzA0MGJlNzI0
MC4uZmM3NGI2MDE3M2M1NTI1OTBiNTRlMzQwYzY2YWUxZmEzNjg0NTcwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0
ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBw
YXRoLCBQYXNzUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IHNhbmRib3hFeHRlbnNpb24pCitCbG9i
RGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6QmxvYkRhdGFGaWxlUmVmZXJl
bmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJv
eEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKQogICAgIDogQmxvYkRhdGFGaWxlUmVmZXJl
bmNlKHBhdGgpCi0gICAgLCBtX3NhbmRib3hFeHRlbnNpb24oc2FuZGJveEV4dGVuc2lvbikKKyAg
ICAsIG1fc2FuZGJveEV4dGVuc2lvbihXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
V2l0aFNhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCmluZGV4IDdhZThkMmE2ZjU0YTRkOTU4
YmVhNzZhYzcwNDMwNGZiMTZlMjVhOTEuLjc1YTVkNGQwY2JiZWMwODVhZmRkYjM4ZmViYjUzM2U3
MzY0MDYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCkBAIC0zNCwxMyAr
MzQsMTMgQEAgY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIAogY2xhc3MgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYkRh
dGFGaWxlUmVmZXJlbmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiBzYW5kYm94RXh0ZW5zaW9uKQorICAgIHN0YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4mJiBzYW5kYm94RXh0ZW5zaW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24ocGF0aCwgc2FuZGJv
eEV4dGVuc2lvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b24pKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhT
YW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPik7CisgICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJik7CiAgICAgdmly
dHVhbCB+QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oKTsKIAogICAg
IHZvaWQgcHJlcGFyZUZvckZpbGVBY2Nlc3MoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA3NDBjZWUwOTMxZjhkODU4ZmU4YTNkNzJjMzAy
ZjJlNDkxZTJmYjc0Li40MDQwNTQyMGNmNzUwMTk1NTNjZDAxNTQzNTQ1Njg1N2QwZDEwYWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC01MSwxMiArNTEs
MTIgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKFRleHR1
cmVNYXBwZXImIHRleHR1cmVNYXBwZXIpCiAgICAgbV9zdXJmYWNlID0gbnVsbHB0cjsKIH0KIAot
dm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZmZXIoY29uc3QgSW50
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIFBhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcihjb25zdCBJbnRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgUmVmUHRyPENvb3JkaW5hdGVkU3Vy
ZmFjZT4mJiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgbV9zb3VyY2VS
ZWN0ID0gc291cmNlUmVjdDsKICAgICBtX3RpbGVSZWN0ID0gdGlsZVJlY3Q7CiAgICAgbV9zdXJm
YWNlT2Zmc2V0ID0gb2Zmc2V0OwotICAgIG1fc3VyZmFjZSA9IGJ1ZmZlcjsKKyAgICBtX3N1cmZh
Y2UgPSBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6
OmNyZWF0ZVRpbGUodWludDMyX3QgaWQsIGZsb2F0IHNjYWxlKQpAQCAtNzcsMTEgKzc3LDExIEBA
IHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnJlbW92ZUFsbFRpbGVzKCkKICAgICAgICAg
bV90aWxlc1RvUmVtb3ZlLmFkZChrZXkpOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJh
Y2tCdWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mJiBi
YWNrQnVmZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFT
U0VSVChpdCAhPSBtX3RpbGVzLmVuZCgpKTsKLSAgICBpdC0+dmFsdWUuc2V0QmFja0J1ZmZlcih0
aWxlUmVjdCwgc291cmNlUmVjdCwgYmFja0J1ZmZlciwgb2Zmc2V0KTsKKyAgICBpdC0+dmFsdWUu
c2V0QmFja0J1ZmZlcih0aWxlUmVjdCwgc291cmNlUmVjdCwgV1RGTW92ZShiYWNrQnVmZmVyKSwg
b2Zmc2V0KTsKIH0KIAogUmVmUHRyPEJpdG1hcFRleHR1cmU+IENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjp0ZXh0dXJlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5o
CmluZGV4IDE2NmMwYTFjN2RlOGVkYWY5MDg0OGU2NzQ5NWQ0MGQyZGQwOTc5NjcuLjFiOTMyYmI0
ZGJmMDY5ZmE3NmZjYjY3MzNiMjU3MDdjYzNhOTc2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICBpbmxpbmUg
ZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAgICAgdm9pZCBzd2FwQnVm
ZmVycyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyJik7Ci0gICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKKyAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJm
YWNlPiYmIGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAogcHJpdmF0ZToKICAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBm
bG9hdCk7CiAgICAgdm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCk7CiAgICAgdm9pZCBy
ZW1vdmVBbGxUaWxlcygpOwotICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OworICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5h
dGVkU3VyZmFjZT4mJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMgUmVm
PENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGlsZU9wZXJhdGlv
bnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpCaXRtYXBU
ZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCA3NjE1ZjA5MWRmMzczYzdhZThiNTg3OTU5YjE0YmZm
YTE2MTk4N2U1Li5iOTFiYWEwOWU0OTdkZjZiODRiY2ExMzM0N2MxMWE5N2IxM2FkM2U4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTQyNywxMCArNDI3
LDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jVXBkYXRlQXRsYXNlcyhj
b25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmCiAgICAgICAgIGNyZWF0ZVVwZGF0ZUF0bGFz
KGF0bGFzLmZpcnN0LCBhdGxhcy5zZWNvbmQpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6Y3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUGFzc1JlZlB0cjxD
b29yZGluYXRlZFN1cmZhY2U+IHN1cmZhY2UpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6Y3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJRCwgUmVmUHRyPENvb3JkaW5hdGVk
U3VyZmFjZT4mJiBzdXJmYWNlKQogewogICAgIEFTU0VSVCghbV9zdXJmYWNlcy5jb250YWlucyhh
dGxhc0lEKSk7Ci0gICAgbV9zdXJmYWNlcy5hZGQoYXRsYXNJRCwgc3VyZmFjZSk7CisgICAgbV9z
dXJmYWNlcy5hZGQoYXRsYXNJRCwgV1RGTW92ZShzdXJmYWNlKSk7CiB9CiAKIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQpA
QCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVJ
bWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnCiAgICAgbV9pbWFnZUJh
Y2tpbmdzLmFkZChpbWFnZUlELCBiYWNraW5nU3RvcmUucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZElt
YWdlQmFja2luZ0lEIGltYWdlSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJm
YWNlKQordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyhD
b29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQsIFJlZlB0cjxDb29yZGluYXRlZFN1cmZh
Y2U+JiYgc3VyZmFjZSkKIHsKICAgICBBU1NFUlQobV9pbWFnZUJhY2tpbmdzLmNvbnRhaW5zKGlt
YWdlSUQpKTsKICAgICBJbWFnZUJhY2tpbmdNYXA6Oml0ZXJhdG9yIGl0ID0gbV9pbWFnZUJhY2tp
bmdzLmZpbmQoaW1hZ2VJRCk7CkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lE
IGltYWcKICAgICAvLyBTZWUgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzaG91bGREaXJlY3Rs
eUNvbXBvc2l0ZUltYWdlKCkKICAgICBBU1NFUlQoMjAwMCA+PSBzdGQ6Om1heChyZWN0LndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkpKTsKICAgICBiYWNraW5nU3RvcmUtPnNldFNpemUocmVjdC5zaXpl
KCkpOwotICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlVGlsZSgxIC8qIGlkICovLCByZWN0LCByZWN0
LCBzdXJmYWNlLCByZWN0LmxvY2F0aW9uKCkpOworICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlVGls
ZSgxIC8qIGlkICovLCByZWN0LCByZWN0LCBXVEZNb3ZlKHN1cmZhY2UpLCByZWN0LmxvY2F0aW9u
KCkpOwogCiAgICAgbV9iYWNraW5nU3RvcmVzV2l0aFBlbmRpbmdCdWZmZXJzLmFkZChiYWNraW5n
U3RvcmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAppbmRleCBi
OWYxY2UyMWNkMzQ5N2NiNjg0OWVlYmI1NDllZWRiMzg5MTZjMzQyLi5iMjAwMDQ3ZDUwODExMWQ4
MWRjNDVmNTg4MzkzMjNmZDEzZGE2NzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuaApAQCAtMTAyLDEyICsxMDIsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldExh
eWVyUmVwYWludENvdW50SWZOZWVkZWQoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgY29u
c3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUmKTsKIAogICAgIHZvaWQg
c3luY1VwZGF0ZUF0bGFzZXMoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
Jik7Ci0gICAgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4pOworICAgIHZvaWQgY3JlYXRlVXBkYXRl
QXRsYXModWludDMyX3QgYXRsYXNJRCwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFj
ZT4mJik7CiAgICAgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKTsKIAog
ICAgIHZvaWQgc3luY0ltYWdlQmFja2luZ3MoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlJik7CiAgICAgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCk7Ci0gICAgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGlu
YXRlZFN1cmZhY2U+KTsKKyAgICB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhXZWJDb3JlOjpDb29y
ZGluYXRlZEltYWdlQmFja2luZ0lELCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNl
PiYmKTsKICAgICB2b2lkIGNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAgICAgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmNwcAppbmRleCBhZDcwNjNiMjRmNmYwOGVhZTJiNjAzNzI2MjZkZGJkMGFmYmQzNDI1Li5kNGRk
YTJhYmM4OGU0MTI2YmVjYTZhOTk3MjljZjgwZGVhNmQ1YmM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW5Nb2R1bGUuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6c2h1dGRvd24oKQogICAgIGluaXRpYWxpemVkTmV0c2NhcGVQbHVnaW5Nb2R1bGVzKCkucmVt
b3ZlKHBsdWdpbk1vZHVsZUluZGV4KTsKIH0KIAotUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1v
ZHVsZT4gTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCkKK1JlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gTmV0c2NhcGVQbHVnaW5Nb2R1
bGU6OmdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKIHsKICAgICAvLyBGaXJz
dCwgc2VlIGlmIHdlIGFscmVhZHkgaGF2ZSBhIG1vZHVsZSB3aXRoIHRoaXMgcGx1Zy1pbiBwYXRo
LgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5pdGlhbGl6ZWROZXRzY2FwZVBsdWdpbk1v
ZHVsZXMoKS5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgKaW5kZXggZjE5
Zjk0MTYxMGYyYTg1ZTVhZWNhOTc4YWJmMmM1MmUyN2VlNmU3Zi4uMWQ3YTU1N2YyMmYxZWFhMTk2
MjYxZGEwNzIyYmE4OTBjNDM4ZTlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5oCkBAIC00
NSw3ICs0NSw3IEBAIHN0cnVjdCBSYXdQbHVnaW5NZXRhRGF0YTsKIAogY2xhc3MgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBnZXRP
ckNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOworICAgIHN0YXRpYyBSZWZQdHI8TmV0
c2NhcGVQbHVnaW5Nb2R1bGU+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7
CiAgICAgfk5ldHNjYXBlUGx1Z2luTW9kdWxlKCk7CiAKICAgICBjb25zdCBOUFBsdWdpbkZ1bmNz
JiBwbHVnaW5GdW5jcygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luRnVuY3M7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcAppbmRleCA1OWZlMTE4ODIzMjg0Nzdh
NzNkM2MzMzVjMGY0NTg1MDk1ZGYyNDYyLi42MmIxMWI3M2NmMmQ3N2FiODBmNTMzMjY5MWZiODdl
ZDJiYjJmMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlzaXRlZExpbmtU
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3Bw
CkBAIC01Miw5ICs1Miw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Bvd2VyT2YyKHVuc2lnbmVk
IHYpCiB9CiAjZW5kaWYKIAotdm9pZCBWaXNpdGVkTGlua1RhYmxlOjpzZXRTaGFyZWRNZW1vcnko
UGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSkKK3ZvaWQgVmlzaXRlZExpbmtU
YWJsZTo6c2V0U2hhcmVkTWVtb3J5KFJlZjxTaGFyZWRNZW1vcnk+JiYgc2hhcmVkTWVtb3J5KQog
ewotICAgIG1fc2hhcmVkTWVtb3J5ID0gc2hhcmVkTWVtb3J5OworICAgIG1fc2hhcmVkTWVtb3J5
ID0gV1RGTW92ZShzaGFyZWRNZW1vcnkpOwogICAgIAogICAgIEFTU0VSVChtX3NoYXJlZE1lbW9y
eSk7CiAgICAgQVNTRVJUKCEobV9zaGFyZWRNZW1vcnktPnNpemUoKSAlIHNpemVvZihMaW5rSGFz
aCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1RhYmxl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlzaXRlZExpbmtUYWJsZS5oCmluZGV4IDg2MWNl
N2E3OTMyMTQ5NjE1NWM1Nzc1ZjNhMTI2OTEyY2RlMjU0OWUuLjFkOTEyNjc1ODE1NGMxODk0OWQ0
NWQyODUwYTMxYjFjZmU5NGVjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9W
aXNpdGVkTGlua1RhYmxlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5r
VGFibGUuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBWaXNpdGVkTGlua1RhYmxlX2gKIAog
I2luY2x1ZGUgPFdlYkNvcmUvTGlua0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0zOSw3
ICszOCw3IEBAIHB1YmxpYzoKICAgICBWaXNpdGVkTGlua1RhYmxlKCk7CiAgICAgflZpc2l0ZWRM
aW5rVGFibGUoKTsKIAotICAgIHZvaWQgc2V0U2hhcmVkTWVtb3J5KFBhc3NSZWZQdHI8U2hhcmVk
TWVtb3J5Pik7CisgICAgdm9pZCBzZXRTaGFyZWRNZW1vcnkoUmVmPFNoYXJlZE1lbW9yeT4mJik7
CiAKICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBVSSBwcm9jZXNz
LgogICAgIGJvb2wgYWRkTGlua0hhc2goV2ViQ29yZTo6TGlua0hhc2gpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKaW5kZXggMWI3NTRmMzRkNTU1
MzVjMmJhYTEzYTAzYWRjMTUxN2VhYjliODRkZS4uOTE0NTBmZDk5MWIwOTExMDExMDZmYTc0MjFi
Y2M4ZjQ1Y2Y1MDZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0Zvcndh
cmRMaXN0SXRlbS5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIEFQSSB7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFZpZXdTbmFwc2hvdCogc25hcHNob3QoKSBjb25zdCB7IHJldHVybiBt
X2l0ZW1TdGF0ZS5zbmFwc2hvdC5nZXQoKTsgfQotICAgIHZvaWQgc2V0U25hcHNob3QoUGFzc1Jl
ZlB0cjxWaWV3U25hcHNob3Q+IHNuYXBzaG90KSB7IG1faXRlbVN0YXRlLnNuYXBzaG90ID0gc25h
cHNob3Q7IH0KKyAgICB2b2lkIHNldFNuYXBzaG90KFJlZlB0cjxWaWV3U25hcHNob3Q+JiYgc25h
cHNob3QpIHsgbV9pdGVtU3RhdGUuc25hcHNob3QgPSBXVEZNb3ZlKHNuYXBzaG90KTsgfQogI2Vu
ZGlmCiAKICAgICBzdGF0aWMgdWludDY0X3QgaGlnaGVzdFVzZWRJdGVtSUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggZWUyMWI0NmYxNWZm
ZTBkYzg3ZTFiYWRhNGE2MmJiNzIzMTFhYmIwMS4uZDMwNzhiNTlhYTNlYWNlOTczZGNkOTJlNzVk
NTExOThkYTM1YzRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRl
eHRNZW51SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51
SXRlbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgV2ViQ29udGV4dE1lbnVJdGVtOjpXZWJDb250ZXh0
TWVudUl0ZW0oY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgZGF0YSkKIHsKIH0KIAotUGFz
c1JlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+IFdlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJheSogc3VibWVudUl0ZW1z
KQorUmVmPFdlYkNvbnRleHRNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiB0aXRsZSwgYm9vbCBlbmFibGVkLCBBUEk6OkFycmF5KiBzdWJtZW51SXRlbXMp
CiB7CiAgICAgc2l6ZV90IHNpemUgPSBzdWJtZW51SXRlbXMtPnNpemUoKTsKIApAQCAtNTIsNyAr
NTIsNyBAQCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4gV2ViQ29udGV4dE1lbnVJdGVt
OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgYgogICAgICAgICAgICAgc3VibWVudS5hcHBl
bmQoaXRlbS0+ZGF0YSgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNv
bnRleHRNZW51SXRlbShXZWJDb250ZXh0TWVudUl0ZW1EYXRhKFdlYkNvcmU6OkNvbnRleHRNZW51
SXRlbVRhZ05vQWN0aW9uLCB0aXRsZSwgZW5hYmxlZCwgc3VibWVudSkpKS5sZWFrUmVmKCk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvbnRleHRNZW51
SXRlbURhdGEoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIHRpdGxlLCBlbmFi
bGVkLCBzdWJtZW51KSkpLmxlYWtSZWYoKTsKIH0KIAogV2ViQ29udGV4dE1lbnVJdGVtKiBXZWJD
b250ZXh0TWVudUl0ZW06OnNlcGFyYXRvckl0ZW0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvbnRleHRNZW51SXRlbS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvbnRleHRNZW51SXRlbS5oCmluZGV4IDk4YjlmMDFkM2MyNTZkMzhjMmJjODQ1NmUyYWFiMGRk
M2VkYTRjYmEuLjk3NjMyZjk2NmNjZjc4YzA1ZTMyNmM1ZjZhZDJmZmRkNzUxNjViZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudUl0
ZW0oZGF0YSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51
SXRlbT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJh
eSogc3VibWVudUl0ZW1zKTsKKyAgICBzdGF0aWMgUmVmPFdlYkNvbnRleHRNZW51SXRlbT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGJvb2wgZW5hYmxlZCwgQVBJOjpBcnJheSogc3VibWVu
dUl0ZW1zKTsKICAgICBzdGF0aWMgV2ViQ29udGV4dE1lbnVJdGVtKiBzZXBhcmF0b3JJdGVtKCk7
CiAKICAgICBSZWY8QVBJOjpBcnJheT4gc3VibWVudUl0ZW1zQXNBUElBcnJheSgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKaW5kZXgg
M2YwMzk3MWMzZWVkM2FjNDU1YzBjOTU0YzE3MmJhZDg0NGRlZDdmNi4uMWRkNzk4OWJjYzAzZDQw
MDAwZGNkOWNjMjY5NGNiYWJjZmZlNDYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAjZGVmaW5lIFdlYkdl
b2xvY2F0aW9uUG9zaXRpb25faAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBJ
UEMgewogY2xhc3MgRGVjb2RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJSZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIu
Y3BwCmluZGV4IDljYzEwZWNhNDZjNDRlMTMxMGMyYjY3NzM2NmI0MDI3M2NhNDQ5NjIuLmE3YjRm
NDY1NTU2NjMzNWMwNjZhYjE2OTk2MGU4MWZjZWE5YjBkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlJlbmRlckxheWVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5
ZXI+IFdlYlJlbmRlckxheWVyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKK1JlZlB0cjxXZWJSZW5k
ZXJMYXllcj4gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdlKQogewogICAgIEZy
YW1lKiBtYWluRnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKICAgICBpZiAoIW1haW5GcmFtZSkK
QEAgLTYzLDEyICs2MywxMiBAQCBQYXNzUmVmUHRyPFdlYlJlbmRlckxheWVyPiBXZWJSZW5kZXJM
YXllcjo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJS
ZW5kZXJMYXllcihyb290TGF5ZXIpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJSZW5kZXJMYXllcj4g
V2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZShQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gcmVuZGVy
ZXIsIGJvb2wgaXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBD
b21wb3NpdGluZ0xheWVyVHlwZSB0eXBlLCBXZWJDb3JlOjpJbnRSZWN0IGFic29sdXRlQm91bmRp
bmdCb3gsIGRvdWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwgUGFzc1JlZlB0cjxBUEk6
OkFycmF5PiBuZWdhdGl2ZVpPcmRlckxpc3QsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gbm9ybWFs
Rmxvd0xpc3QsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gcG9zaXRpdmVaT3JkZXJMaXN0LCBQYXNz
UmVmUHRyPFdlYlJlbmRlckxheWVyPiBmcmFtZUNvbnRlbnRzTGF5ZXIpCitSZWY8V2ViUmVuZGVy
TGF5ZXI+IFdlYlJlbmRlckxheWVyOjpjcmVhdGUoUmVmUHRyPFdlYlJlbmRlck9iamVjdD4mJiBy
ZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGluZywgYm9vbCBpc0NsaXBw
ZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlIHR5cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVC
b3VuZGluZ0JveCwgZG91YmxlIGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlLCBSZWZQdHI8QVBJ
OjpBcnJheT4mJiBuZWdhdGl2ZVpPcmRlckxpc3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5vcm1h
bEZsb3dMaXN0LCBSZWZQdHI8QVBJOjpBcnJheT4mJiBwb3NpdGl2ZVpPcmRlckxpc3QsIFJlZlB0
cjxXZWJSZW5kZXJMYXllcj4mJiBmcmFtZUNvbnRlbnRzTGF5ZXIpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJSZW5kZXJMYXllcihyZW5kZXJlciwgaXNSZWZsZWN0aW9uLCBpc0NsaXBw
aW5nLCBpc0NsaXBwZWQsIHR5cGUsIGFic29sdXRlQm91bmRpbmdCb3gsIGJhY2tpbmdTdG9yZU1l
bW9yeUVzdGltYXRlLCBuZWdhdGl2ZVpPcmRlckxpc3QsIG5vcm1hbEZsb3dMaXN0LCBwb3NpdGl2
ZVpPcmRlckxpc3QsIGZyYW1lQ29udGVudHNMYXllcikpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlJlbmRlckxheWVyKFdURk1vdmUocmVuZGVyZXIpLCBpc1JlZmxlY3Rpb24sIGlzQ2xp
cHBpbmcsIGlzQ2xpcHBlZCwgdHlwZSwgYWJzb2x1dGVCb3VuZGluZ0JveCwgYmFja2luZ1N0b3Jl
TWVtb3J5RXN0aW1hdGUsIFdURk1vdmUobmVnYXRpdmVaT3JkZXJMaXN0KSwgV1RGTW92ZShub3Jt
YWxGbG93TGlzdCksIFdURk1vdmUocG9zaXRpdmVaT3JkZXJMaXN0KSwgV1RGTW92ZShmcmFtZUNv
bnRlbnRzTGF5ZXIpKSk7CiB9CiAKLVBhc3NSZWZQdHI8QVBJOjpBcnJheT4gV2ViUmVuZGVyTGF5
ZXI6OmNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCkK
K1JlZlB0cjxBUEk6OkFycmF5PiBXZWJSZW5kZXJMYXllcjo6Y3JlYXRlQXJyYXlGcm9tTGF5ZXJM
aXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0KQogewogICAgIGlmICghbGlzdCB8fCAhbGlz
dC0+c2l6ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEyOCwxOCArMTI4LDE4IEBA
IFdlYlJlbmRlckxheWVyOjpXZWJSZW5kZXJMYXllcihSZW5kZXJMYXllciogbGF5ZXIpCiAgICAg
fQogfQogCi1XZWJSZW5kZXJMYXllcjo6V2ViUmVuZGVyTGF5ZXIoUGFzc1JlZlB0cjxXZWJSZW5k
ZXJPYmplY3Q+IHJlbmRlcmVyLCBib29sIGlzUmVmbGVjdGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBi
b29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5cGUgdHlwZSwgV2ViQ29yZTo6SW50UmVj
dCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBkb3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUs
IFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gbmVnYXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPEFQ
STo6QXJyYXk+IG5vcm1hbEZsb3dMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IHBvc2l0aXZl
Wk9yZGVyTGlzdCwgUGFzc1JlZlB0cjxXZWJSZW5kZXJMYXllcj4gZnJhbWVDb250ZW50c0xheWVy
KQotICAgIDogbV9yZW5kZXJlcihyZW5kZXJlcikKK1dlYlJlbmRlckxheWVyOjpXZWJSZW5kZXJM
YXllcihSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiYmIHJlbmRlcmVyLCBib29sIGlzUmVmbGVjdGlv
biwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5cGUg
dHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBkb3VibGUgYmFja2lu
Z1N0b3JlTWVtb3J5RXN0aW1hdGUsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5lZ2F0aXZlWk9yZGVy
TGlzdCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgbm9ybWFsRmxvd0xpc3QsIFJlZlB0cjxBUEk6OkFy
cmF5PiYmIHBvc2l0aXZlWk9yZGVyTGlzdCwgUmVmUHRyPFdlYlJlbmRlckxheWVyPiYmIGZyYW1l
Q29udGVudHNMYXllcikKKyAgICA6IG1fcmVuZGVyZXIoV1RGTW92ZShyZW5kZXJlcikpCiAgICAg
LCBtX2lzUmVmbGVjdGlvbihpc1JlZmxlY3Rpb24pCiAgICAgLCBtX2lzQ2xpcHBpbmcoaXNDbGlw
cGluZykKICAgICAsIG1faXNDbGlwcGVkKGlzQ2xpcHBlZCkKICAgICAsIG1fY29tcG9zaXRpbmdM
YXllclR5cGUodHlwZSkKICAgICAsIG1fYWJzb2x1dGVCb3VuZGluZ0JveChhYnNvbHV0ZUJvdW5k
aW5nQm94KQogICAgICwgbV9iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZShiYWNraW5nU3RvcmVN
ZW1vcnlFc3RpbWF0ZSkKLSAgICAsIG1fbmVnYXRpdmVaT3JkZXJMaXN0KG5lZ2F0aXZlWk9yZGVy
TGlzdCkKLSAgICAsIG1fbm9ybWFsRmxvd0xpc3Qobm9ybWFsRmxvd0xpc3QpCi0gICAgLCBtX3Bv
c2l0aXZlWk9yZGVyTGlzdChwb3NpdGl2ZVpPcmRlckxpc3QpCi0gICAgLCBtX2ZyYW1lQ29udGVu
dHNMYXllcihmcmFtZUNvbnRlbnRzTGF5ZXIpCisgICAgLCBtX25lZ2F0aXZlWk9yZGVyTGlzdChX
VEZNb3ZlKG5lZ2F0aXZlWk9yZGVyTGlzdCkpCisgICAgLCBtX25vcm1hbEZsb3dMaXN0KFdURk1v
dmUobm9ybWFsRmxvd0xpc3QpKQorICAgICwgbV9wb3NpdGl2ZVpPcmRlckxpc3QoV1RGTW92ZShw
b3NpdGl2ZVpPcmRlckxpc3QpKQorICAgICwgbV9mcmFtZUNvbnRlbnRzTGF5ZXIoV1RGTW92ZShm
cmFtZUNvbnRlbnRzTGF5ZXIpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJM
YXllci5oCmluZGV4IDViNmJlMDQzMzRlNDYyMGQxZDBhOWYyM2FiMTM5NDUzZGJkYjQyZGMuLjUx
NDE0ZGZiNDdhMmU2ZjI1NmYzMGQzZjVhMTUzYjgxNGM3OGFiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJSZW5kZXJMYXllci5oCkBAIC00MCw4ICs0MCw4IEBAIGNsYXNzIFdlYlJlbmRlckxh
eWVyIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UmVuZGVyTGF5
ZXI+IHsKIHB1YmxpYzoKICAgICBlbnVtIENvbXBvc2l0aW5nTGF5ZXJUeXBlIHsgTm9uZSwgTm9y
bWFsLCBUaWxlZCwgTWVkaWEsIENvbnRhaW5lciB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViUmVuZGVyTGF5ZXI+IGNyZWF0ZShXZWJQYWdlKik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViUmVuZGVyTGF5ZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gcmVuZGVy
ZXIsIGJvb2wgaXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBD
b21wb3NpdGluZ0xheWVyVHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94
LCBkb3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUsIFBhc3NSZWZQdHI8QVBJOjpBcnJh
eT4gbmVnYXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5vcm1hbEZsb3dM
aXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IHBvc2l0aXZlWk9yZGVyTGlzdCwgUGFzc1JlZlB0
cjxXZWJSZW5kZXJMYXllcj4gZnJhbWVDb250ZW50c0xheWVyKTsKKyAgICBzdGF0aWMgUmVmUHRy
PFdlYlJlbmRlckxheWVyPiBjcmVhdGUoV2ViUGFnZSopOworICAgIHN0YXRpYyBSZWY8V2ViUmVu
ZGVyTGF5ZXI+IGNyZWF0ZShSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiYmIHJlbmRlcmVyLCBib29s
IGlzUmVmbGVjdGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRp
bmdMYXllclR5cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCwgZG91Ymxl
IGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlLCBSZWZQdHI8QVBJOjpBcnJheT4mJiBuZWdhdGl2
ZVpPcmRlckxpc3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5vcm1hbEZsb3dMaXN0LCBSZWZQdHI8
QVBJOjpBcnJheT4mJiBwb3NpdGl2ZVpPcmRlckxpc3QsIFJlZlB0cjxXZWJSZW5kZXJMYXllcj4m
JiBmcmFtZUNvbnRlbnRzTGF5ZXIpOwogCiAgICAgQVBJOjpBcnJheSogbmVnYXRpdmVaT3JkZXJM
aXN0KCkgY29uc3QgeyByZXR1cm4gbV9uZWdhdGl2ZVpPcmRlckxpc3QuZ2V0KCk7IH0KICAgICBB
UEk6OkFycmF5KiBub3JtYWxGbG93TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9ybWFsRmxvd0xp
c3QuZ2V0KCk7IH0KQEAgLTU4LDkgKzU4LDkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFdlYlJlbmRlckxheWVyKFdlYkNvcmU6OlJlbmRlckxheWVyKik7Ci0gICAgV2ViUmVu
ZGVyTGF5ZXIoUGFzc1JlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IHJlbmRlcmVyLCBib29sIGlzUmVm
bGVjdGlvbiwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXll
clR5cGUsIFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCwgZG91YmxlIGJhY2tp
bmdTdG9yZU1lbW9yeUVzdGltYXRlLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5lZ2F0aXZlWk9y
ZGVyTGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBub3JtYWxGbG93TGlzdCwgUGFzc1JlZlB0
cjxBUEk6OkFycmF5PiBwb3NpdGl2ZVpPcmRlckxpc3QsIFBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5
ZXI+IGZyYW1lQ29udGVudHNMYXllcik7CisgICAgV2ViUmVuZGVyTGF5ZXIoUmVmUHRyPFdlYlJl
bmRlck9iamVjdD4mJiByZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGlu
ZywgYm9vbCBpc0NsaXBwZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlLCBXZWJDb3JlOjpJbnRSZWN0
IGFic29sdXRlQm91bmRpbmdCb3gsIGRvdWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwg
UmVmUHRyPEFQSTo6QXJyYXk+JiYgbmVnYXRpdmVaT3JkZXJMaXN0LCBSZWZQdHI8QVBJOjpBcnJh
eT4mJiBub3JtYWxGbG93TGlzdCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgcG9zaXRpdmVaT3JkZXJM
aXN0LCBSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+JiYgZnJhbWVDb250ZW50c0xheWVyKTsKIAotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChW
ZWN0b3I8V2ViQ29yZTo6UmVuZGVyTGF5ZXIqPiopOworICAgIHN0YXRpYyBSZWZQdHI8QVBJOjpB
cnJheT4gY3JlYXRlQXJyYXlGcm9tTGF5ZXJMaXN0KFZlY3RvcjxXZWJDb3JlOjpSZW5kZXJMYXll
cio+Kik7CiAKICAgICBSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBtX3JlbmRlcmVyOwogICAgIGJv
b2wgbV9pc1JlZmxlY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IGFmYzQzMzZlZDg0NTg4MzA4Mzc5MmI1OTk3NDRjZGY3NDQwZWFmOWIuLjU5MjJi
MDAwMDk4YjQwZTY1ZDM2MWM4NDAwZmE3NjM1NDE3NmZiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwCkBAIC01OCw5ICs1OCw5IEBAIFJlZlB0cjxXZWJSZW5k
ZXJPYmplY3Q+IFdlYlJlbmRlck9iamVjdDo6Y3JlYXRlKFdlYlBhZ2UqIHBhZ2UpCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QoY29udGVudFJlbmRlcmVyLCB0cnVlKSk7
CiB9CiAKLVBhc3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBXZWJSZW5kZXJPYmplY3Q6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudFRhZ05hbWUsIGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGVsZW1lbnRDbGFzc05h
bWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0
IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0
aCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBjaGlsZHJlbikKK1JlZjxXZWJSZW5kZXJPYmplY3Q+
IFdlYlJlbmRlck9iamVjdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFJlZlB0cjxBUEk6OkFy
cmF5PiYmIGVsZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0
aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3QgU3RyaW5nJiB0ZXh0U25pcHBl
dCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgY2hpbGRyZW4pCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QobmFtZSwgZWxlbWVudFRh
Z05hbWUsIGVsZW1lbnRJRCwgZWxlbWVudENsYXNzTmFtZXMsIGFic29sdXRlUG9zaXRpb24sIGZy
YW1lUmVjdCwgdGV4dFNuaXBwZXQsIHRleHRMZW5ndGgsIGNoaWxkcmVuKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViUmVuZGVyT2JqZWN0KG5hbWUsIGVsZW1lbnRUYWdOYW1lLCBlbGVt
ZW50SUQsIFdURk1vdmUoZWxlbWVudENsYXNzTmFtZXMpLCBhYnNvbHV0ZVBvc2l0aW9uLCBmcmFt
ZVJlY3QsIHRleHRTbmlwcGV0LCB0ZXh0TGVuZ3RoLCBXVEZNb3ZlKGNoaWxkcmVuKSkpOwogfQog
CiBXZWJSZW5kZXJPYmplY3Q6OldlYlJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBib29sIHNob3VsZEluY2x1ZGVEZXNjZW5kYW50cykKQEAgLTEyNywxMyArMTI3LDEzIEBAIFdl
YlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJv
b2wgc2hvdWxkSW5jbHVkZURlc2NlCiAgICAgbV9jaGlsZHJlbiA9IEFQSTo6QXJyYXk6OmNyZWF0
ZShXVEZNb3ZlKGNoaWxkcmVuKSk7CiB9CiAKLVdlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2Jq
ZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29u
c3QgU3RyaW5nJiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gZWxlbWVudENsYXNz
TmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6OkludFJl
Y3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25lZCB0ZXh0TGVu
Z3RoLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKQotICAgIDogbV9jaGlsZHJlbihj
aGlsZHJlbikKK1dlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50
SUQsIFJlZlB0cjxBUEk6OkFycmF5PiYmIGVsZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQ
b2ludCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3Qg
U3RyaW5nJiB0ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUmVmUHRyPEFQSTo6QXJy
YXk+JiYgY2hpbGRyZW4pCisgICAgOiBtX2NoaWxkcmVuKFdURk1vdmUoY2hpbGRyZW4pKQogICAg
ICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX2VsZW1lbnRUYWdOYW1lKGVsZW1lbnRUYWdOYW1lKQog
ICAgICwgbV9lbGVtZW50SUQoZWxlbWVudElEKQogICAgICwgbV90ZXh0U25pcHBldCh0ZXh0U25p
cHBldCkKLSAgICAsIG1fZWxlbWVudENsYXNzTmFtZXMoZWxlbWVudENsYXNzTmFtZXMpCisgICAg
LCBtX2VsZW1lbnRDbGFzc05hbWVzKFdURk1vdmUoZWxlbWVudENsYXNzTmFtZXMpKQogICAgICwg
bV9hYnNvbHV0ZVBvc2l0aW9uKGFic29sdXRlUG9zaXRpb24pCiAgICAgLCBtX2ZyYW1lUmVjdChm
cmFtZVJlY3QpCiAgICAgLCBtX3RleHRMZW5ndGgodGV4dExlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJSZW5kZXJPYmplY3QuaAppbmRleCBmYzI1NTgyMzE3YTUzOGJiNGQ0NzkzMGVhZTVh
ZTBkYjVmNTFmNzc1Li44NTIyZGFjODg0NDI3YjU4NzVhOWQ3YWNkNGRjM2I1MDY0Zjg4NzM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5oCkBAIC0yOCw3ICsyOCw3IEBA
CiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4K
LSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEFQSSB7CkBAIC01MSw3ICs1
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVuZGVyT2Jq
ZWN0KHJlbmRlcmVyLCBmYWxzZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YlJlbmRlck9iamVjdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBl
bGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpB
cnJheT4gZWxlbWVudENsYXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRp
b24sIFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0
LCB1bnNpZ25lZCB0ZXh0TGVuZ3RoLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKTsK
KyAgICBzdGF0aWMgUmVmPFdlYlJlbmRlck9iamVjdD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQs
IFJlZlB0cjxBUEk6OkFycmF5PiYmIGVsZW1lbnRDbGFzc05hbWVzLCBXZWJDb3JlOjpJbnRQb2lu
dCBhYnNvbHV0ZVBvc2l0aW9uLCBXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgY29uc3QgU3Ry
aW5nJiB0ZXh0U25pcHBldCwgdW5zaWduZWQgdGV4dExlbmd0aCwgUmVmUHRyPEFQSTo6QXJyYXk+
JiYgY2hpbGRyZW4pOwogCiAgICAgdmlydHVhbCB+V2ViUmVuZGVyT2JqZWN0KCk7CiAKQEAgLTcx
LDcgKzcxLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdlYlJlbmRlck9iamVjdChXZWJD
b3JlOjpSZW5kZXJPYmplY3QqLCBib29sIHNob3VsZEluY2x1ZGVEZXNjZW5kYW50cyk7Ci0gICAg
V2ViUmVuZGVyT2JqZWN0KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50
VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4g
ZWxlbWVudENsYXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdl
YkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNp
Z25lZCB0ZXh0TGVuZ3RoLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKTsKKyAgICBX
ZWJSZW5kZXJPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRU
YWdOYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgZWxl
bWVudENsYXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNv
cmU6OkludFJlY3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25l
ZCB0ZXh0TGVuZ3RoLCBSZWZQdHI8QVBJOjpBcnJheT4mJiBjaGlsZHJlbik7CiAKICAgICBSZWZQ
dHI8QVBJOjpBcnJheT4gbV9jaGlsZHJlbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElGcmFtZUluZm8uY3BwCmluZGV4IDNlMzIyZTU1N2ExZGI5Yzg5NTFlNGQ5YWU2OGM2
OGIxYzcyZWE4NzAuLmEyNGEzZDZlMDY5NWZiODhhODgwNzdmNDk4MDIzOGRiNTgwMzgyMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgUmVmPEZyYW1lSW5mbz4gRnJhbWVJbmZvOjpjcmVhdGUoY29uc3QgV2ViS2l0
OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ28KIEZyYW1lSW5mbzo6RnJhbWVJbmZv
KGNvbnN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSkKICAgICA6IG1faXNN
YWluRnJhbWUoZnJhbWVJbmZvRGF0YS5pc01haW5GcmFtZSkKICAgICAsIG1fcmVxdWVzdChmcmFt
ZUluZm9EYXRhLnJlcXVlc3QpCi0gICAgLCBtX3NlY3VyaXR5T3JpZ2luKCpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGZyYW1lSW5mb0RhdGEuc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKSkp
CisgICAgLCBtX3NlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZv
RGF0YS5zZWN1cml0eU9yaWdpbi5zZWN1cml0eU9yaWdpbigpKSkKICAgICAsIG1faGFuZGxlKEFQ
STo6RnJhbWVIYW5kbGU6OmNyZWF0ZShmcmFtZUluZm9EYXRhLmZyYW1lSUQpKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggODM4NDI4MmQwMzU5YzI4ZDEz
NzE0MDQ0YWRlNDRkM2JmOGRhNjFmMy4uNGMwM2NkZWIxMmEyOGU1MTUwOWNhNGU5OTI5ZTg5MWFh
ZGU0MTgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0yOTEs
NyArMjkxLDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
cmVxdWVzdFVzZXJNZWRpYVBlcm1pc3Npb25Gb3JGcmFtZSgKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICghbV9wYWdlLnVpQ2xpZW50KCkuZGVjaWRlUG9saWN5
Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QobV9wYWdlLCAqbV9wYWdlLnByb2Nlc3MoKS53
ZWJGcmFtZShmcmFtZUlEKSwgKnVzZXJNZWRpYU9yaWdpbi5nZXQoKSwgKnRvcExldmVsT3JpZ2lu
LmdldCgpLCByZXF1ZXN0LmdldCgpKSkKKyAgICAgICAgaWYgKCFtX3BhZ2UudWlDbGllbnQoKS5k
ZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsICptX3BhZ2Uu
cHJvY2VzcygpLndlYkZyYW1lKGZyYW1lSUQpLCB1c2VyTWVkaWFPcmlnaW4sIHRvcExldmVsT3Jp
Z2luLCByZXF1ZXN0LmdldCgpKSkKICAgICAgICAgICAgIHVzZXJNZWRpYUFjY2Vzc1dhc0Rlbmll
ZCh1c2VyTWVkaWFJRCwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eTo6VXNlck1lZGlh
QWNjZXNzRGVuaWFsUmVhc29uOjpVc2VyTWVkaWFEaXNhYmxlZCk7CiAKICAgICB9OwpAQCAtMzI2
LDcgKzMyNiw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2CiAgICAgYXV0byB1c2VyTWVkaWFP
cmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRGF0YWJhc2VJZGVudGlmaWVyKHVzZXJNZWRpYURvY3VtZW50T3JpZ2luSWRlbnRpZmllciku
dmFsdWVfb3IoU2VjdXJpdHlPcmlnaW5EYXRhKCkpLnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIGF1
dG8gdG9wTGV2ZWxPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHRvcExldmVsRG9jdW1lbnRPcmlnaW5J
ZGVudGlmaWVyKS52YWx1ZV9vcihTZWN1cml0eU9yaWdpbkRhdGEoKSkuc2VjdXJpdHlPcmlnaW4o
KSk7CiAKLSAgICBpZiAoIW1fcGFnZS51aUNsaWVudCgpLmNoZWNrVXNlck1lZGlhUGVybWlzc2lv
bkZvck9yaWdpbihtX3BhZ2UsICptX3BhZ2UucHJvY2VzcygpLndlYkZyYW1lKGZyYW1lSUQpLCAq
dXNlck1lZGlhT3JpZ2luLmdldCgpLCAqdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0
KCkpKSB7CisgICAgaWYgKCFtX3BhZ2UudWlDbGllbnQoKS5jaGVja1VzZXJNZWRpYVBlcm1pc3Np
b25Gb3JPcmlnaW4obV9wYWdlLCAqbV9wYWdlLnByb2Nlc3MoKS53ZWJGcmFtZShmcmFtZUlEKSwg
dXNlck1lZGlhT3JpZ2luLCB0b3BMZXZlbE9yaWdpbiwgcmVxdWVzdC5nZXQoKSkpIHsKICAgICAg
ICAgbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMudGFrZSh1c2VyTWVkaWFJRCk7CiAgICAgICAgIG1f
cGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVNZWRpYURl
dmljZUVudW1lcmF0aW9uKHVzZXJNZWRpYUlELCBWZWN0b3I8V2ViQ29yZTo6Q2FwdHVyZURldmlj
ZT4oKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UpLCBtX3BhZ2UucGFnZUlEKCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAppbmRleCBhOTYx
YTJiMzFlZjg3NTMyMWQ4MTM5Y2NkOTQzNDg2ODNjMDI3NWI1Li4yOTU5ZDU5MWY2ZWI5ODRiNGRm
YTliMGM2NTZjYTc3Yjg0N2Y3ODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zp
c2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0
b3JlOjpwZW5kaW5nVmlzaXRlZExpbmtzVGltZXJGaXJlZCgpCiAKIHZvaWQgVmlzaXRlZExpbmtT
dG9yZTo6cmVzaXplVGFibGUodW5zaWduZWQgbmV3VGFibGVTaXplKQogewotICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IG5ld1RhYmxlTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShuZXdU
YWJsZVNpemUgKiBzaXplb2YoTGlua0hhc2gpKTsKKyAgICBhdXRvIG5ld1RhYmxlTWVtb3J5ID0g
U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShuZXdUYWJsZVNpemUgKiBzaXplb2YoTGlua0hhc2gpKTsK
IAogICAgIGlmICghbmV3VGFibGVNZW1vcnkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBmb3IgdmlzaXRlZCBsaW5rIHRhYmxlIik7CkBAIC0y
MTQsNyArMjE0LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0b3JlOjpyZXNpemVUYWJsZSh1bnNpZ25l
ZCBuZXdUYWJsZVNpemUpCiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY3VycmVudFRhYmxlTWVt
b3J5ID0gbV90YWJsZS5zaGFyZWRNZW1vcnkoKTsKICAgICB1bnNpZ25lZCBjdXJyZW50VGFibGVT
aXplID0gbV90YWJsZVNpemU7CiAKLSAgICBtX3RhYmxlLnNldFNoYXJlZE1lbW9yeShuZXdUYWJs
ZU1lbW9yeSk7CisgICAgbV90YWJsZS5zZXRTaGFyZWRNZW1vcnkobmV3VGFibGVNZW1vcnkucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgbV90YWJsZVNpemUgPSBuZXdUYWJsZVNpemU7CiAKICAgICBp
ZiAoY3VycmVudFRhYmxlTWVtb3J5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcApp
bmRleCAxZDRiOTdlYmU5ZjJkYWY1NDY1ZWJiYWI1Y2Y5YTE5MWQ3OGRlZGU0Li42ZThiMDZkZmI4
ZDNkNWYwYmNkNTNkNTA4ODE5NTg0YzhmMzcxMTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJv
bGxlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxl
cjo6c2V0VmlzaXRlZExpbmtUYWJsZShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYKICAgICBp
ZiAoIXNoYXJlZE1lbW9yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aXNpdGVkTGlua1Rh
YmxlLnNldFNoYXJlZE1lbW9yeShXVEZNb3ZlKHNoYXJlZE1lbW9yeSkpOworICAgIG1fdmlzaXRl
ZExpbmtUYWJsZS5zZXRTaGFyZWRNZW1vcnkoc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCkp
OwogCiAgICAgaW52YWxpZGF0ZVN0eWxlc0ZvckFsbExpbmtzKCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309869</attachid>
            <date>2017-05-11 22:10:39 -0700</date>
            <delta_ts>2017-05-12 07:33:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172017-20170511221038.patch</filename>
            <type>text/plain</type>
            <size>49365</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWVlZTcyZjIzZWM0NmM4
NzdmYmI1YWE2M2FiN2Q0YjViY2EwZDI3YS4uMzUwOGMxMTIzOGUwMmNjOGU3N2NmZmMyZTIzYzU4
NTc3MDNlNDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTA1LTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcCB1c2luZyBQYXNzUmVm
UHRyIHVuZGVyIFdlYktpdDIvU2hhcmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzIwMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHA6CisgICAgICAg
IChBUEk6OkRpY3Rpb25hcnk6OmFkZCk6CisgICAgICAgIChBUEk6OkRpY3Rpb25hcnk6OnNldCk6
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5Lmg6CisgICAgICAgICogU2hhcmVk
L0FQSS9BUElTZWN1cml0eU9yaWdpbi5oOgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyk6CisgICAgICAgIChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUp
OgorICAgICAgICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAg
ICAoQVBJOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIFNoYXJl
ZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1No
YXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6UHJveHlpbmdSZWZQdHI6OlByb3h5aW5n
UmVmUHRyKToKKyAgICAgICAgKiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLmg6CisgICAg
ICAgICogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlUmVzb3Vy
Y2U6OldlYkFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgICogU2hhcmVkL0FzeW5jUmVxdWVzdC5o
OgorICAgICAgICAoV2ViS2l0OjpBc3luY1JlcXVlc3RNYXA6OmFkZCk6CisgICAgICAgICogU2hh
cmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246OkJs
b2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uKToKKyAgICAgICAgKiBTaGFy
ZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1
ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjp1cGRhdGVU
aWxlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6Y3JlYXRlVXBkYXRlQXRsYXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnVwZGF0ZUltYWdlQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAg
ICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUpOgorICAgICAg
ICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmg6CisgICAg
ICAgICogU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNp
dGVkTGlua1RhYmxlOjpzZXRTaGFyZWRNZW1vcnkpOgorICAgICAgICAqIFNoYXJlZC9WaXNpdGVk
TGlua1RhYmxlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U25hcHNob3QpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbnRl
eHRNZW51SXRlbS5oOgorICAgICAgICAqIFNoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmg6
CisgICAgICAgICogU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlckxheWVy
OjpjcmVhdGVBcnJheUZyb21MYXllckxpc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJM
YXllcjo6V2ViUmVuZGVyTGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJMYXllci5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZW5kZXJPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlck9i
amVjdDo6V2ViUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUmVuZGVyT2JqZWN0
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpWaXNpdGVkTGlua1N0b3JlOjpyZXNpemVUYWJsZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXI6OnNldFZpc2l0ZWRMaW5rVGFibGUpOgor
CiAyMDE3LTA1LTExICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV0tXZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOi4uLl0gZG9lc24ndCB3b3Jr
IGZvciBJbmRleGVkREIgaWYgdGhlIGRhdGEgc3RvcmUgaGFzIGEgY3VzdG9tIElEQiBwYXRoLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkv
TmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKaW5kZXggMTcyNTU4ZDkyYjVmYjhhMDU0OGU5OTdmMWEx
ZTFkNmQ5NTcwMDAyMC4uNjg5MDYzNjg1ZTcwMDY5NGRiMDMwNDA5ZWM2NzRhMDQ5Nzg1MGY3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3Jr
QmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxl
QVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBAIC01MSw3ICs1MSw3IEBAIE5ldHdvcmtCbG9i
UmVnaXN0cnk6Ok5ldHdvcmtCbG9iUmVnaXN0cnkoKQogCiB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNv
bm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFJlZlB0cjxTYW5k
Ym94RXh0ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNpb24sIGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCiB7Ci0gICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh1cmwsIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUocGF0aCwgc2FuZGJv
eEV4dGVuc2lvbiksIGNvbnRlbnRUeXBlKTsKKyAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckZp
bGVCbG9iVVJMKHVybCwgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZShwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKSwgY29udGVudFR5cGUpOwog
CiAgICAgQVNTRVJUKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5nZXQoY29ubmVjdGlvbikuY29udGFp
bnModXJsKSk7CiAgICAgQmxvYkZvckNvbm5lY3Rpb25NYXA6Oml0ZXJhdG9yIG1hcEl0ZXJhdG9y
ID0gbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0FQSURpY3Rpb25hcnkuY3BwCmluZGV4IDg5NGU5OGRkMTIyNWQ0ODA1ZTk3
MGI2ZGU5MjVjMGJlNzc5YTBkZTkuLjRmYjk5NTJmZDY5M2EyZjE2OTU5ZmFlM2VhNTcxNDVhYzM5
OTFjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJRGljdGlvbmFy
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmNwcApA
QCAtNjQsMTUgKzY0LDE1IEBAIFJlZjxBcnJheT4gRGljdGlvbmFyeTo6a2V5cygpIGNvbnN0CiAg
ICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGtleXMpKTsKIH0KIAotYm9vbCBE
aWN0aW9uYXJ5OjphZGQoY29uc3QgV1RGOjpTdHJpbmcmIGtleSwgUGFzc1JlZlB0cjxBUEk6Ok9i
amVjdD4gaXRlbSkKK2Jvb2wgRGljdGlvbmFyeTo6YWRkKGNvbnN0IFdURjo6U3RyaW5nJiBrZXks
IFJlZlB0cjxBUEk6Ok9iamVjdD4mJiBpdGVtKQogewotICAgIE1hcFR5cGU6OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX21hcC5hZGQoa2V5LCBpdGVtKTsKKyAgICBNYXBUeXBlOjpBZGRSZXN1bHQgcmVz
dWx0ID0gbV9tYXAuYWRkKGtleSwgV1RGTW92ZShpdGVtKSk7CiAgICAgcmV0dXJuIHJlc3VsdC5p
c05ld0VudHJ5OwogfQogCi1ib29sIERpY3Rpb25hcnk6OnNldChjb25zdCBXVEY6OlN0cmluZyYg
a2V5LCBQYXNzUmVmUHRyPEFQSTo6T2JqZWN0PiBpdGVtKQorYm9vbCBEaWN0aW9uYXJ5OjpzZXQo
Y29uc3QgV1RGOjpTdHJpbmcmIGtleSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYmIGl0ZW0pCiB7Ci0g
ICAgTWFwVHlwZTo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLnNldChrZXksIGl0ZW0pOworICAg
IE1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5zZXQoa2V5LCBXVEZNb3ZlKGl0ZW0p
KTsKICAgICByZXR1cm4gcmVzdWx0LmlzTmV3RW50cnk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9BUElEaWN0aW9uYXJ5LmgKaW5kZXggNTA1OTkxMjlhOGNhZGZhNjg4ODc4ZDBhZjEx
Y2ZiZGZmNDEwYTliMy4uZmNiYTcyMzgxNzY2OTcwMDdiN2ZkZmFhNGIzMTg1OWY3MTlkMzA5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmgKQEAgLTcxLDggKzcx
LDggQEAgcHVibGljOgogCiAgICAgUmVmPEFycmF5PiBrZXlzKCkgY29uc3Q7CiAKLSAgICBib29s
IGFkZChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBQYXNzUmVmUHRyPE9iamVjdD4pOwotICAgIGJv
b2wgc2V0KGNvbnN0IFdURjo6U3RyaW5nJiBrZXksIFBhc3NSZWZQdHI8T2JqZWN0Pik7CisgICAg
Ym9vbCBhZGQoY29uc3QgV1RGOjpTdHJpbmcmIGtleSwgUmVmUHRyPE9iamVjdD4mJik7CisgICAg
Ym9vbCBzZXQoY29uc3QgV1RGOjpTdHJpbmcmIGtleSwgUmVmUHRyPE9iamVjdD4mJik7CiAgICAg
dm9pZCByZW1vdmUoY29uc3QgV1RGOjpTdHJpbmcmIGtleSk7CiAKICAgICBzaXplX3Qgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwLnNpemUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCmluZGV4IDg5MTdjNjcwNDkwNGQzN2Y4NGI4MzE1Yjkz
Mzk5ZGYyZGU3NGQ0YzUuLmIzODkzYTE1OGQ3OGRmYmNmMmE3ZmJhNGE0ODM4OTc0NjQ2Njc5Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2luLmgKQEAg
LTI3LDMyICsyNywzMiBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgU2VjdXJpdHlPcmln
aW4gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTZWN1cml0eU9y
aWdpbj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0
ZUZyb21TdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKKyAgICBzdGF0aWMgUmVmPFNl
Y3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiBzdHJpbmcp
CiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHN0cmluZykpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQorICAgIHN0YXRp
YyBSZWY8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgcHJvdG9jb2ws
IGNvbnN0IFdURjo6U3RyaW5nJiBob3N0LCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBwb3J0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHByb3RvY29sLCBob3N0LCBwb3J0KSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1
cml0eU9yaWdpbikKKyAgICBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikp
OwogICAgIH0KIAotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuICptX3NlY3VyaXR5T3JpZ2luOyB9CisgICAgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdp
bi5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQotICAgICAgICA6IG1fc2VjdXJp
dHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCisgICAgU2VjdXJpdHlPcmlnaW4oUmVmPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2luKQorICAgICAgICA6IG1fc2VjdXJpdHlP
cmlnaW4oV1RGTW92ZShzZWN1cml0eU9yaWdpbikpCiAgICAgewogICAgIH0KIApAQCAtNjEsNyAr
NjEsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CisgICAgUmVmPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggNjU2OWQ0ZDRj
ZTkyMTI5MTQ5ZjE5ZDQ4ZTA0NDliZWNhYmE4YThkYS4uMWNmYWU0YTI0OGM1MzdlOThmNzFhMzI5
NzdjYzNiMGVkYWUzYTQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9B
UElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0zNiw5ICszNiw5IEBAIG5hbWVzcGFjZSBB
UEkgewogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkVmFsdWUpCisgICAgc3Rh
dGljIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShSZWZQdHI8V2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIHNlcmlhbGl6ZWRWYWx1ZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShzZXJpYWxpemVkVmFsdWUp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdU
Rk1vdmUoc2VyaWFsaXplZFZhbHVlKSkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1Zh
bHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC02OCw4ICs2OCw4IEBAIHB1
YmxpYzoKICAgICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGludGVybmFsUmVwcmVz
ZW50YXRpb24oKSB7IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQoKTsgfQogCiBw
cml2YXRlOgotICAgIGV4cGxpY2l0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShQYXNzUmVmUHRyPFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZFNjcmlwdFZhbHVlKQotICAg
ICAgICA6IG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKKyAg
ICBleHBsaWNpdCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpCisgICAgICAgIDogbV9zZXJp
YWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpKQogICAgIHsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRl
eHRNZW51SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVu
dUl0ZW0uY3BwCmluZGV4IDA1MTRmMTgyNTFkOGVhNTg3MGJiNGE2ZGM5YmVmNzc4OTc5ZjE0YzMu
LjFjZjA1ZTUwNWMyNDcyNDg0NTE1ZTk4ZjA3MDY3OTA0NzJjNThjOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbUNyZWF0ZUFzQWN0
aW9uKFdLQ29udGV4dE1lbnVJdGVtVGFnIHRhZywgVwogICAgIFVOVVNFRF9QQVJBTSh0YWcpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aXRsZSk7CiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwotICAg
IHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCiB9CiAKQEAgLTY1LDE5ICs2
NSwxOSBAQCBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbUNyZWF0ZUFzQ2hl
Y2thYmxlQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVtVAogICAgIFVOVVNFRF9QQVJBTSh0aXRsZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogICAgIFVOVVNFRF9QQVJBTShjaGVja2VkKTsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogCiBXS0NvbnRl
eHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbUNyZWF0ZUFzU3VibWVudShXS1N0cmluZ1Jl
ZiB0aXRsZSwgYm9vbCBlbmFibGVkLCBXS0FycmF5UmVmIHN1Ym1lbnVJdGVtcykKIHsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICByZXR1cm4gdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVt
OjpjcmVhdGUodG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIHRvSW1wbChzdWJtZW51
SXRlbXMpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSgmV2ViQ29udGV4dE1lbnVJdGVt
OjpjcmVhdGUodG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIHRvSW1wbChzdWJtZW51
SXRlbXMpKS5sZWFrUmVmKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGl0bGUpOwogICAg
IFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICAgICBVTlVTRURfUEFSQU0oc3VibWVudUl0ZW1zKTsK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKICNlbmRpZgogfQogCkBAIC04Niw3
ICs4Niw3IEBAIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtU2VwYXJhdG9y
SXRlbSgpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgcmV0dXJuIHRvQVBJKFdlYkNv
bnRleHRNZW51SXRlbTo6c2VwYXJhdG9ySXRlbSgpKTsKICNlbHNlCi0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCmluZGV4IDYxYTFjNjc0NTM1NTgy
YjUwZmZhZTY4YzI4ZTYyOTE1YWNiZDFlMDQuLjNjNGI0MjQ2ZTgxMjA4N2IzMGUzNmJhZmMxNjhl
ZjQ2NjNjNzBhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Nl
Y3VyaXR5T3JpZ2luUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tT
ZWN1cml0eU9yaWdpblJlZi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgV0tUeXBlSUQgV0tTZWN1cml0
eU9yaWdpbkdldFR5cGVJRCgpCiAKIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tTZWN1cml0eU9yaWdp
bkNyZWF0ZUZyb21TdHJpbmcoV0tTdHJpbmdSZWYgc3RyaW5nKQogewotICAgIHJldHVybiB0b0FQ
SShBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcodG9JbXBsKHN0cmluZyktPnN0cmluZygpKSkubGVha1JlZigpKTsKKyAg
ICByZXR1cm4gdG9BUEkoJkFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCkpKS5s
ZWFrUmVmKCkpOwogfQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVh
dGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXIpCkBAIC00Nywx
MyArNDcsMTMgQEAgV0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJv
bURhdGFiYXNlSWRlbnRpZmllcihXS1N0cmluZ1JlZiBpZGUKICAgICBhdXRvIG9yaWdpbiA9IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcih0b0ltcGwo
aWRlbnRpZmllciktPnN0cmluZygpKTsKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShv
cmlnaW4udmFsdWUoKS5zZWN1cml0eU9yaWdpbigpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0
b0FQSSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi52YWx1ZSgpLnNlY3VyaXR5
T3JpZ2luKCkpLmxlYWtSZWYoKSk7CiB9CiAKIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tTZWN1cml0
eU9yaWdpbkNyZWF0ZShXS1N0cmluZ1JlZiBwcm90b2NvbCwgV0tTdHJpbmdSZWYgaG9zdCwgaW50
IHBvcnQpCiB7CiAgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgdG9JbXBsKGhvc3QpLT5zdHJpbmco
KSwgcG9ydCk7Ci0gICAgcmV0dXJuIHRvQVBJKHNlY3VyaXR5T3JpZ2luLmxlYWtSZWYoKSk7Cisg
ICAgcmV0dXJuIHRvQVBJKCZzZWN1cml0eU9yaWdpbi5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmlu
Z1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURhdGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3Jp
Z2luUmVmIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
U2hhcmVkQVBJQ2FzdC5oCmluZGV4IDMzZTY1Mjg3OWNkODYwMjZmYzQwYWE1YjZjMTkxNWE5N2Yy
NTFkNmUuLmI0ODA5ZjNhMTVmZjhjZGU2NDJkMWRkNGU2NTkxNzJkMDUwZmU0NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKQEAgLTEzNiw3ICsx
MzYsNyBAQCBhdXRvIHRvSW1wbChUIHQpIC0+IEltcGxUeXBlKgogdGVtcGxhdGU8dHlwZW5hbWUg
SW1wbFR5cGUsIHR5cGVuYW1lIEFQSVR5cGUgPSB0eXBlbmFtZSBJbXBsVHlwZUluZm88SW1wbFR5
cGU+OjpBUElUeXBlPgogY2xhc3MgUHJveHlpbmdSZWZQdHIgewogcHVibGljOgotICAgIFByb3h5
aW5nUmVmUHRyKFBhc3NSZWZQdHI8SW1wbFR5cGU+IGltcGwpCisgICAgUHJveHlpbmdSZWZQdHIo
UmVmUHRyPEltcGxUeXBlPiYmIGltcGwpCiAgICAgICAgIDogbV9pbXBsKGltcGwpCiAgICAgewog
ICAgIH0KQEAgLTIxMCw4ICsyMTAsOCBAQCBpbmxpbmUgUHJveHlpbmdSZWZQdHI8QVBJOjpVUkxS
ZXNwb25zZT4gdG9BUEkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcgogaW5saW5l
IFdLU2VjdXJpdHlPcmlnaW5SZWYgdG9Db3BpZWRBUEkoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4q
IG9yaWdpbikKIHsKICAgICBpZiAoIW9yaWdpbikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIHRvQVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSgqb3JpZ2luKS5sZWFrUmVmKCkp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gdG9BUEkoJkFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSgqb3JpZ2luKS5sZWFrUmVmKCkpOwogfQogCiAvKiBHZW9tZXRyeSBj
b252ZXJzaW9ucyAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFy
Y2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNv
dXJjZS5oCmluZGV4IDFlYjkyNjRiM2VmZDg3NTc5M2U1YmZhNGQ5ZTQ4YTdmOWJmNTY5N2MuLjlj
ZDFjMWM0Mjc5Y2QxNjFhYjllZDc2OTgzYWQxZDFiYzg1MThiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLmgKQEAgLTMwLDcgKzMwLDYgQEAKIAog
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBBUEkgewpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViQXJjaGl2
ZVJlc291cmNlKCk7CiAKICAgICBzdGF0aWMgUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gY3JlYXRl
KEFQSTo6RGF0YSosIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyk7Ci0gICAgc3RhdGljIFJlZjxXZWJBcmNoaXZlUmVz
b3VyY2U+IGNyZWF0ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4pOworICAg
IHN0YXRpYyBSZWY8V2ViQXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPFdlYkNvcmU6OkFy
Y2hpdmVSZXNvdXJjZT4mJik7CiAKICAgICBSZWY8QVBJOjpEYXRhPiBkYXRhKCk7CiAgICAgU3Ry
aW5nIFVSTCgpOwpAQCAtNjAsNyArNTksNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2Vi
QXJjaGl2ZVJlc291cmNlKEFQSTo6RGF0YSosIGNvbnN0IFN0cmluZyYgVVJMLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyk7Ci0gICAgV2ViQXJjaGl2
ZVJlc291cmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPik7CisgICAgV2Vi
QXJjaGl2ZVJlc291cmNlKFJlZlB0cjxXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U+JiYpOwogCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4gbV9hcmNoaXZlUmVzb3VyY2U7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KaW5k
ZXggOWE0NTliNmY1ZjFhM2MyODc0ZGM2YjQzNjc3ODIzNTVkZTIxMGUzMy4uYjFjNTJkNzY1YTVm
Nzc4MmVlMTkyNzBhYTcyMjc0YTRmYzA3OWVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCkBAIC00Miw5ICs0Miw5IEBAIFJlZjxXZWJBcmNo
aXZlUmVzb3VyY2U+IFdlYkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKEFQSTo6RGF0YSogZGF0YSwg
Y29uc3QgU3RyaW5nCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXJjaGl2ZVJlc291cmNl
KGRhdGEsIFVSTCwgTUlNRVR5cGUsIHRleHRFbmNvZGluZykpOwogfQogCi1SZWY8V2ViQXJjaGl2
ZVJlc291cmNlPiBXZWJBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShQYXNzUmVmUHRyPEFyY2hpdmVS
ZXNvdXJjZT4gYXJjaGl2ZVJlc291cmNlKQorUmVmPFdlYkFyY2hpdmVSZXNvdXJjZT4gV2ViQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4mJiBhcmNoaXZlUmVz
b3VyY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXJjaGl2ZVJlc291cmNlKGFy
Y2hpdmVSZXNvdXJjZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkFyY2hpdmVSZXNv
dXJjZShXVEZNb3ZlKGFyY2hpdmVSZXNvdXJjZSkpKTsKIH0KIAogV2ViQXJjaGl2ZVJlc291cmNl
OjpXZWJBcmNoaXZlUmVzb3VyY2UoQVBJOjpEYXRhKiBkYXRhLCBjb25zdCBTdHJpbmcmIFVSTCwg
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcpCkBAIC01
Miw4ICs1Miw4IEBAIFdlYkFyY2hpdmVSZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKEFQSTo6
RGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiBVUkwsIGNvbnN0CiB7CiB9CiAKLVdlYkFyY2hpdmVS
ZXNvdXJjZTo6V2ViQXJjaGl2ZVJlc291cmNlKFBhc3NSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBh
cmNoaXZlUmVzb3VyY2UpCi0gICAgOiBtX2FyY2hpdmVSZXNvdXJjZShhcmNoaXZlUmVzb3VyY2Up
CitXZWJBcmNoaXZlUmVzb3VyY2U6OldlYkFyY2hpdmVSZXNvdXJjZShSZWZQdHI8QXJjaGl2ZVJl
c291cmNlPiYmIGFyY2hpdmVSZXNvdXJjZSkKKyAgICA6IG1fYXJjaGl2ZVJlc291cmNlKFdURk1v
dmUoYXJjaGl2ZVJlc291cmNlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FzeW5jUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jUmVxdWVz
dC5oCmluZGV4IDVmMzI3YzQ5NjllY2ViODk5YThlZGUwY2U5ZTBmYzMxNTc4N2I3OWMuLjBjNGEw
YTBjNDEzYjBhMWMzYmU5ZWVmNWM3NzViY2YxMjM1NWI5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QXN5bmNSZXF1ZXN0LmgKQEAgLTI5LDggKzI5LDggQEAKIAogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtMTI2LDkgKzEyNiw5IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpyZXF1ZXN0LmxlYWtSZWYoKSk7CiAgICAgfQogCi0gICAgdm9pZCBh
ZGQodWludDY0X3QgcmVxdWVzdElELCBQYXNzUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCkK
KyAgICB2b2lkIGFkZCh1aW50NjRfdCByZXF1ZXN0SUQsIFJlZlB0cjxBc3luY1JlcXVlc3Q+JiYg
cmVxdWVzdCkKICAgICB7Ci0gICAgICAgIG1fcmVxdWVzdE1hcC5hZGQocmVxdWVzdElELCByZXF1
ZXN0KTsKKyAgICAgICAgbV9yZXF1ZXN0TWFwLmFkZChyZXF1ZXN0SUQsIFdURk1vdmUocmVxdWVz
dCkpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4
dGVuc2lvbi5jcHAKaW5kZXggZmI1ZTA0ZjA1NmM3MTVkNzcxYjAyNTE0YzZlMjBlNzA0MGJlNzI0
MC4uZmM3NGI2MDE3M2M1NTI1OTBiNTRlMzQwYzY2YWUxZmEzNjg0NTcwYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0
ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJl
bmNlV2l0aFNhbmRib3hFeHRlbnNpb24uY3BwCkBAIC0zMCw5ICszMCw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi1CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBw
YXRoLCBQYXNzUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IHNhbmRib3hFeHRlbnNpb24pCitCbG9i
RGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbjo6QmxvYkRhdGFGaWxlUmVmZXJl
bmNlV2l0aFNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJv
eEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKQogICAgIDogQmxvYkRhdGFGaWxlUmVmZXJl
bmNlKHBhdGgpCi0gICAgLCBtX3NhbmRib3hFeHRlbnNpb24oc2FuZGJveEV4dGVuc2lvbikKKyAg
ICAsIG1fc2FuZGJveEV4dGVuc2lvbihXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
V2l0aFNhbmRib3hFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCmluZGV4IDdhZThkMmE2ZjU0YTRkOTU4
YmVhNzZhYzcwNDMwNGZiMTZlMjVhOTEuLjc1YTVkNGQwY2JiZWMwODVhZmRkYjM4ZmViYjUzM2U3
MzY0MDYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9CbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oCkBAIC0zNCwxMyAr
MzQsMTMgQEAgY2xhc3MgU2FuZGJveEV4dGVuc2lvbjsKIAogY2xhc3MgQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6QmxvYkRh
dGFGaWxlUmVmZXJlbmNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPiBzYW5kYm94RXh0ZW5zaW9uKQorICAgIHN0YXRpYyBSZWY8QmxvYkRhdGFGaWxlUmVm
ZXJlbmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lv
bj4mJiBzYW5kYm94RXh0ZW5zaW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24ocGF0aCwgc2FuZGJv
eEV4dGVuc2lvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2VXaXRoU2FuZGJveEV4dGVuc2lvbihwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b24pKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhT
YW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0cjxTYW5kYm94RXh0
ZW5zaW9uPik7CisgICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJik7CiAgICAgdmly
dHVhbCB+QmxvYkRhdGFGaWxlUmVmZXJlbmNlV2l0aFNhbmRib3hFeHRlbnNpb24oKTsKIAogICAg
IHZvaWQgcHJlcGFyZUZvckZpbGVBY2Nlc3MoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA3NDBjZWUwOTMxZjhkODU4ZmU4YTNkNzJjMzAy
ZjJlNDkxZTJmYjc0Li40MDQwNTQyMGNmNzUwMTk1NTNjZDAxNTQzNTQ1Njg1N2QwZDEwYWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC01MSwxMiArNTEs
MTIgQEAgdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKFRleHR1
cmVNYXBwZXImIHRleHR1cmVNYXBwZXIpCiAgICAgbV9zdXJmYWNlID0gbnVsbHB0cjsKIH0KIAot
dm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnNldEJhY2tCdWZmZXIoY29uc3QgSW50
UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIFBhc3NSZWZQdHI8Q29v
cmRpbmF0ZWRTdXJmYWNlPiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c2V0QmFja0J1ZmZlcihjb25zdCBJbnRSZWN0JiB0
aWxlUmVjdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgUmVmUHRyPENvb3JkaW5hdGVkU3Vy
ZmFjZT4mJiBidWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgbV9zb3VyY2VS
ZWN0ID0gc291cmNlUmVjdDsKICAgICBtX3RpbGVSZWN0ID0gdGlsZVJlY3Q7CiAgICAgbV9zdXJm
YWNlT2Zmc2V0ID0gb2Zmc2V0OwotICAgIG1fc3VyZmFjZSA9IGJ1ZmZlcjsKKyAgICBtX3N1cmZh
Y2UgPSBXVEZNb3ZlKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6
OmNyZWF0ZVRpbGUodWludDMyX3QgaWQsIGZsb2F0IHNjYWxlKQpAQCAtNzcsMTEgKzc3LDExIEBA
IHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnJlbW92ZUFsbFRpbGVzKCkKICAgICAgICAg
bV90aWxlc1RvUmVtb3ZlLmFkZChrZXkpOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+IGJh
Y2tCdWZmZXIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCit2b2lkIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjp1cGRhdGVUaWxlKHVpbnQzMl90IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCwgUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4mJiBi
YWNrQnVmZmVyLCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlVGlsZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3RpbGVzLmZpbmQoaWQpOwogICAgIEFT
U0VSVChpdCAhPSBtX3RpbGVzLmVuZCgpKTsKLSAgICBpdC0+dmFsdWUuc2V0QmFja0J1ZmZlcih0
aWxlUmVjdCwgc291cmNlUmVjdCwgYmFja0J1ZmZlciwgb2Zmc2V0KTsKKyAgICBpdC0+dmFsdWUu
c2V0QmFja0J1ZmZlcih0aWxlUmVjdCwgc291cmNlUmVjdCwgV1RGTW92ZShiYWNrQnVmZmVyKSwg
b2Zmc2V0KTsKIH0KIAogUmVmUHRyPEJpdG1hcFRleHR1cmU+IENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjp0ZXh0dXJlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5o
CmluZGV4IDE2NmMwYTFjN2RlOGVkYWY5MDg0OGU2NzQ5NWQ0MGQyZGQwOTc5NjcuLjFiOTMyYmI0
ZGJmMDY5ZmE3NmZjYjY3MzNiMjU3MDdjYzNhOTc2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICBpbmxpbmUg
ZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAgICAgdm9pZCBzd2FwQnVm
ZmVycyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyJik7Ci0gICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKKyAgICB2b2lkIHNldEJhY2tCdWZmZXIoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJm
YWNlPiYmIGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAogcHJpdmF0ZToKICAg
ICBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7CkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlELCBm
bG9hdCk7CiAgICAgdm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCk7CiAgICAgdm9pZCBy
ZW1vdmVBbGxUaWxlcygpOwotICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OworICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5h
dGVkU3VyZmFjZT4mJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICBzdGF0aWMgUmVm
PENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKTsgfQogICAgIHZvaWQgY29tbWl0VGlsZU9wZXJhdGlv
bnMoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciYpOwogICAgIFJlZlB0cjxXZWJDb3JlOjpCaXRtYXBU
ZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCA3NjE1ZjA5MWRmMzczYzdhZThiNTg3OTU5YjE0YmZm
YTE2MTk4N2U1Li5jZmVmM2YyMDliMmVhYWZmNWQ3YzM0MGIzY2EzNzRjMGU1ZjU5ZjVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTQxNiw3ICs0MTYs
NyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlVGlsZXNJZk5lZWRlZChU
ZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjbwogICAgICAgICBTdXJmYWNlTWFwOjppdGVyYXRv
ciBzdXJmYWNlSXQgPSBtX3N1cmZhY2VzLmZpbmQoc3VyZmFjZVVwZGF0ZUluZm8uYXRsYXNJRCk7
CiAgICAgICAgIEFTU0VSVChzdXJmYWNlSXQgIT0gbV9zdXJmYWNlcy5lbmQoKSk7CiAKLSAgICAg
ICAgYmFja2luZ1N0b3JlLT51cGRhdGVUaWxlKHRpbGUudGlsZUlELCBzdXJmYWNlVXBkYXRlSW5m
by51cGRhdGVSZWN0LCB0aWxlLnRpbGVSZWN0LCBzdXJmYWNlSXQtPnZhbHVlLCBzdXJmYWNlVXBk
YXRlSW5mby5zdXJmYWNlT2Zmc2V0KTsKKyAgICAgICAgYmFja2luZ1N0b3JlLT51cGRhdGVUaWxl
KHRpbGUudGlsZUlELCBzdXJmYWNlVXBkYXRlSW5mby51cGRhdGVSZWN0LCB0aWxlLnRpbGVSZWN0
LCBzdXJmYWNlSXQtPnZhbHVlLmNvcHlSZWYoKSwgc3VyZmFjZVVwZGF0ZUluZm8uc3VyZmFjZU9m
ZnNldCk7CiAgICAgICAgIG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVycy5hZGQoYmFj
a2luZ1N0b3JlKTsKICAgICB9CiB9CkBAIC00MjQsMTMgKzQyNCwxMyBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlVGlsZXNJZk5lZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIq
IGxheWVyLCBjbwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNVcGRhdGVBdGxh
c2VzKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUpCiB7CiAgICAgZm9yIChh
dXRvJiBhdGxhcyA6IHN0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZSkKLSAgICAgICAgY3JlYXRl
VXBkYXRlQXRsYXMoYXRsYXMuZmlyc3QsIGF0bGFzLnNlY29uZCk7CisgICAgICAgIGNyZWF0ZVVw
ZGF0ZUF0bGFzKGF0bGFzLmZpcnN0LCBhdGxhcy5zZWNvbmQuY29weVJlZigpKTsKIH0KIAotdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0
bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBzdXJmYWNlKQordm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQs
IFJlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+JiYgc3VyZmFjZSkKIHsKICAgICBBU1NFUlQoIW1f
c3VyZmFjZXMuY29udGFpbnMoYXRsYXNJRCkpOwotICAgIG1fc3VyZmFjZXMuYWRkKGF0bGFzSUQs
IHN1cmZhY2UpOworICAgIG1fc3VyZmFjZXMuYWRkKGF0bGFzSUQsIFdURk1vdmUoc3VyZmFjZSkp
OwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVtb3ZlVXBkYXRlQXRsYXMo
dWludDMyX3QgYXRsYXNJRCkKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6c3luY0ltYWdlQmFja2luZ3MoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlJgogICAgICAgICBjcmVhdGVJbWFnZUJhY2tpbmcoaW1hZ2UpOwogCiAgICAgZm9yIChhdXRv
JiBpbWFnZSA6IHN0YXRlLmltYWdlc1RvVXBkYXRlKQotICAgICAgICB1cGRhdGVJbWFnZUJhY2tp
bmcoaW1hZ2UuZmlyc3QsIGltYWdlLnNlY29uZCk7CisgICAgICAgIHVwZGF0ZUltYWdlQmFja2lu
ZyhpbWFnZS5maXJzdCwgaW1hZ2Uuc2Vjb25kLmNvcHlSZWYoKSk7CiAKICAgICBmb3IgKGF1dG8m
IGltYWdlIDogc3RhdGUuaW1hZ2VzVG9DbGVhcikKICAgICAgICAgY2xlYXJJbWFnZUJhY2tpbmdD
b250ZW50cyhpbWFnZSk7CkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWcKICAgICBtX2ltYWdlQmFja2luZ3MuYWRkKGltYWdlSUQsIGJhY2tpbmdTdG9yZS5yZWxlYXNl
KCkpOwogfQogCi12b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlSW1hZ2VCYWNr
aW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUGFzc1JlZlB0cjxDb29yZGlu
YXRlZFN1cmZhY2U+IHN1cmZhY2UpCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBk
YXRlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJRCwgUmVmUHRy
PENvb3JkaW5hdGVkU3VyZmFjZT4mJiBzdXJmYWNlKQogewogICAgIEFTU0VSVChtX2ltYWdlQmFj
a2luZ3MuY29udGFpbnMoaW1hZ2VJRCkpOwogICAgIEltYWdlQmFja2luZ01hcDo6aXRlcmF0b3Ig
aXQgPSBtX2ltYWdlQmFja2luZ3MuZmluZChpbWFnZUlEKTsKQEAgLTQ3OSw3ICs0NzksNyBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6dXBkYXRlSW1hZ2VCYWNraW5nKENvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nSUQgaW1hZwogICAgIC8vIFNlZSBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoKQogICAgIEFTU0VSVCgyMDAwID49IHN0
ZDo6bWF4KHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOwogICAgIGJhY2tpbmdTdG9yZS0+
c2V0U2l6ZShyZWN0LnNpemUoKSk7Ci0gICAgYmFja2luZ1N0b3JlLT51cGRhdGVUaWxlKDEgLyog
aWQgKi8sIHJlY3QsIHJlY3QsIHN1cmZhY2UsIHJlY3QubG9jYXRpb24oKSk7CisgICAgYmFja2lu
Z1N0b3JlLT51cGRhdGVUaWxlKDEgLyogaWQgKi8sIHJlY3QsIHJlY3QsIFdURk1vdmUoc3VyZmFj
ZSksIHJlY3QubG9jYXRpb24oKSk7CiAKICAgICBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1
ZmZlcnMuYWRkKGJhY2tpbmdTdG9yZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5oCmluZGV4IGI5ZjFjZTIxY2QzNDk3Y2I2ODQ5ZWViYjU0OWVlZGIzODkxNmMzNDIu
LmIyMDAwNDdkNTA4MTExZDgxZGM0NWY1ODgzOTMyM2ZkMTNkYTY3MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0TGF5ZXJSZXBhaW50Q291bnRJZk5lZWRlZChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0
ZSYpOwogCiAgICAgdm9pZCBzeW5jVXBkYXRlQXRsYXNlcyhjb25zdCBXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzU3RhdGUmKTsKLSAgICB2b2lkIGNyZWF0ZVVwZGF0ZUF0bGFzKHVpbnQzMl90
IGF0bGFzSUQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPik7CisgICAg
dm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBSZWZQdHI8V2ViQ29yZTo6
Q29vcmRpbmF0ZWRTdXJmYWNlPiYmKTsKICAgICB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQz
Ml90IGF0bGFzSUQpOwogCiAgICAgdm9pZCBzeW5jSW1hZ2VCYWNraW5ncyhjb25zdCBXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKTsKICAgICB2b2lkIGNyZWF0ZUltYWdlQmFja2lu
ZyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKLSAgICB2b2lkIHVwZGF0ZUlt
YWdlQmFja2luZyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4pOworICAgIHZvaWQgdXBkYXRlSW1hZ2VCYWNr
aW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxXZWJDb3JlOjpD
b29yZGluYXRlZFN1cmZhY2U+JiYpOwogICAgIHZvaWQgY2xlYXJJbWFnZUJhY2tpbmdDb250ZW50
cyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKICAgICB2b2lkIHJlbW92ZUlt
YWdlQmFja2luZyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW5Nb2R1bGUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5Nb2R1bGUuY3BwCmluZGV4IGFkNzA2M2IyNGY2ZjA4ZWFlMmI2MDM3MjYyNmRk
YmQwYWZiZDM0MjUuLmQ0ZGRhMmFiYzg4ZTQxMjZiZWNhNmE5OTcyOWNmODBkZWE2ZDViYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luTW9kdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIE5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpzaHV0ZG93bigpCiAgICAgaW5pdGlhbGl6ZWROZXRzY2FwZVBs
dWdpbk1vZHVsZXMoKS5yZW1vdmUocGx1Z2luTW9kdWxlSW5kZXgpOwogfQogCi1QYXNzUmVmUHRy
PE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUo
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQorUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBO
ZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0T3JDcmVhdGUoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
KQogewogICAgIC8vIEZpcnN0LCBzZWUgaWYgd2UgYWxyZWFkeSBoYXZlIGEgbW9kdWxlIHdpdGgg
dGhpcyBwbHVnLWluIHBhdGguCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbml0aWFsaXpl
ZE5ldHNjYXBlUGx1Z2luTW9kdWxlcygpLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5N
b2R1bGUuaAppbmRleCBmMTlmOTQxNjEwZjJhODVlNWFlY2E5NzhhYmYyYzUyZTI3ZWU2ZTdmLi4x
ZDdhNTU3ZjIyZjFlYWExOTYyNjFkYTA3MjJiYTg5MGM0MzhlOWFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVsZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luTW9kdWxlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RydWN0IFJhd1BsdWdpbk1ldGFEYXRhOwog
CiBjbGFzcyBOZXRzY2FwZVBsdWdpbk1vZHVsZSA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHNjYXBl
UGx1Z2luTW9kdWxlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0c2NhcGVQ
bHVnaW5Nb2R1bGU+IGdldE9yQ3JlYXRlKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CisgICAg
c3RhdGljIFJlZlB0cjxOZXRzY2FwZVBsdWdpbk1vZHVsZT4gZ2V0T3JDcmVhdGUoY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoKTsKICAgICB+TmV0c2NhcGVQbHVnaW5Nb2R1bGUoKTsKIAogICAgIGNv
bnN0IE5QUGx1Z2luRnVuY3MmIHBsdWdpbkZ1bmNzKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5G
dW5jczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFi
bGUuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuY3BwCmluZGV4
IDU5ZmUxMTg4MjMyODQ3N2E3M2QzYzMzNWMwZjQ1ODUwOTVkZjI0NjIuLjYyYjExYjczY2YyZDc3
YWI4MGY1MzMyNjkxZmI4N2VkMmJiMmYwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9WaXNpdGVkTGlua1RhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlz
aXRlZExpbmtUYWJsZS5jcHAKQEAgLTUyLDkgKzUyLDkgQEAgc3RhdGljIGlubGluZSBib29sIGlz
UG93ZXJPZjIodW5zaWduZWQgdikKIH0KICNlbmRpZgogCi12b2lkIFZpc2l0ZWRMaW5rVGFibGU6
OnNldFNoYXJlZE1lbW9yeShQYXNzUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5KQor
dm9pZCBWaXNpdGVkTGlua1RhYmxlOjpzZXRTaGFyZWRNZW1vcnkoUmVmPFNoYXJlZE1lbW9yeT4m
JiBzaGFyZWRNZW1vcnkpCiB7Ci0gICAgbV9zaGFyZWRNZW1vcnkgPSBzaGFyZWRNZW1vcnk7Cisg
ICAgbV9zaGFyZWRNZW1vcnkgPSBXVEZNb3ZlKHNoYXJlZE1lbW9yeSk7CiAgICAgCiAgICAgQVNT
RVJUKG1fc2hhcmVkTWVtb3J5KTsKICAgICBBU1NFUlQoIShtX3NoYXJlZE1lbW9yeS0+c2l6ZSgp
ICUgc2l6ZW9mKExpbmtIYXNoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1Zpc2l0ZWRMaW5rVGFibGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpdGVkTGlua1Rh
YmxlLmgKaW5kZXggODYxY2U3YTc5MzIxNDk2MTU1YzU3NzVmM2ExMjY5MTJjZGUyNTQ5ZS4uMWQ5
MTI2NzU4MTU0YzE4OTQ5ZDQ1ZDI4NTBhMzFiMWNmZTk0ZWMyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Zpc2l0ZWRMaW5rVGFibGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvVmlzaXRlZExpbmtUYWJsZS5oCkBAIC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIFZpc2l0
ZWRMaW5rVGFibGVfaAogCiAjaW5jbHVkZSA8V2ViQ29yZS9MaW5rSGFzaC5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTM5LDcgKzM4LDcgQEAgcHVibGljOgogICAgIFZpc2l0ZWRMaW5rVGFibGUo
KTsKICAgICB+VmlzaXRlZExpbmtUYWJsZSgpOwogCi0gICAgdm9pZCBzZXRTaGFyZWRNZW1vcnko
UGFzc1JlZlB0cjxTaGFyZWRNZW1vcnk+KTsKKyAgICB2b2lkIHNldFNoYXJlZE1lbW9yeShSZWY8
U2hhcmVkTWVtb3J5PiYmKTsKIAogICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZy
b20gdGhlIFVJIHByb2Nlc3MuCiAgICAgYm9vbCBhZGRMaW5rSGFzaChXZWJDb3JlOjpMaW5rSGFz
aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaApp
bmRleCAxYjc1NGYzNGQ1NTUzNWMyYmFhMTNhMDNhZGMxNTE3ZWFiOWI4NGRlLi45MTQ1MGZkOTkx
YjA5MTEwMTEwNmZhNzQyMWJjYzhmNDVjZjUwNmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgQVBJIHsKQEAgLTYyLDcgKzYyLDcgQEAgcHVi
bGljOgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgVmlld1NuYXBzaG90KiBzbmFwc2hvdCgp
IGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0YXRlLnNuYXBzaG90LmdldCgpOyB9Ci0gICAgdm9pZCBz
ZXRTbmFwc2hvdChQYXNzUmVmUHRyPFZpZXdTbmFwc2hvdD4gc25hcHNob3QpIHsgbV9pdGVtU3Rh
dGUuc25hcHNob3QgPSBzbmFwc2hvdDsgfQorICAgIHZvaWQgc2V0U25hcHNob3QoUmVmUHRyPFZp
ZXdTbmFwc2hvdD4mJiBzbmFwc2hvdCkgeyBtX2l0ZW1TdGF0ZS5zbmFwc2hvdCA9IFdURk1vdmUo
c25hcHNob3QpOyB9CiAjZW5kaWYKIAogICAgIHN0YXRpYyB1aW50NjRfdCBoaWdoZXN0VXNlZEl0
ZW1JRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRNZW51
SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcApp
bmRleCBlZTIxYjQ2ZjE1ZmZlMGRjODdlMWJhZGE0YTYyYmI3MjMxMWFiYjAxLi5kMzA3OGI1OWFh
M2VhY2U5NzNkY2Q5MmU3NWQ1MTE5OGRhMzVjNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcApAQCAtMzksNyArMzksNyBAQCBXZWJDb250ZXh0TWVu
dUl0ZW06OldlYkNvbnRleHRNZW51SXRlbShjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBk
YXRhKQogewogfQogCi1QYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51SXRlbT4gV2ViQ29udGV4dE1l
bnVJdGVtOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgYm9vbCBlbmFibGVkLCBBUEk6OkFy
cmF5KiBzdWJtZW51SXRlbXMpCitSZWY8V2ViQ29udGV4dE1lbnVJdGVtPiBXZWJDb250ZXh0TWVu
dUl0ZW06OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBib29sIGVuYWJsZWQsIEFQSTo6QXJy
YXkqIHN1Ym1lbnVJdGVtcykKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHN1Ym1lbnVJdGVtcy0+c2l6
ZSgpOwogCkBAIC01Miw3ICs1Miw3IEBAIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVJdGVtPiBX
ZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCBiCiAgICAgICAg
ICAgICBzdWJtZW51LmFwcGVuZChpdGVtLT5kYXRhKCkpOwogICAgIH0KIAotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViQ29udGV4dE1lbnVJdGVtKFdlYkNvbnRleHRNZW51SXRlbURhdGEoV2Vi
Q29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24sIHRpdGxlLCBlbmFibGVkLCBzdWJtZW51
KSkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb250ZXh0TWVudUl0
ZW0oV2ViQ29udGV4dE1lbnVJdGVtRGF0YShXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW1UYWdOb0Fj
dGlvbiwgdGl0bGUsIGVuYWJsZWQsIHN1Ym1lbnUpKSkubGVha1JlZigpOwogfQogCiBXZWJDb250
ZXh0TWVudUl0ZW0qIFdlYkNvbnRleHRNZW51SXRlbTo6c2VwYXJhdG9ySXRlbSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmgKaW5kZXggOThiOWYwMWQzYzI1NmQz
OGMyYmM4NDU2ZTJhYWIwZGQzZWRhNGNiYS4uOTc2MzJmOTY2Y2NmNzhjMDVlMzI2YzVmNmFkMmZm
ZGQ3NTE2NWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRN
ZW51SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0u
aApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkNvbnRleHRNZW51SXRlbShkYXRhKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViQ29udGV4dE1lbnVJdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgYm9vbCBl
bmFibGVkLCBBUEk6OkFycmF5KiBzdWJtZW51SXRlbXMpOworICAgIHN0YXRpYyBSZWY8V2ViQ29u
dGV4dE1lbnVJdGVtPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgYm9vbCBlbmFibGVkLCBB
UEk6OkFycmF5KiBzdWJtZW51SXRlbXMpOwogICAgIHN0YXRpYyBXZWJDb250ZXh0TWVudUl0ZW0q
IHNlcGFyYXRvckl0ZW0oKTsKIAogICAgIFJlZjxBUEk6OkFycmF5PiBzdWJtZW51SXRlbXNBc0FQ
SUFycmF5KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkdlb2xvY2F0aW9u
UG9zaXRpb24uaAppbmRleCAzZjAzOTcxYzNlZWQzYWM0NTVjMGM5NTRjMTcyYmFkODQ0ZGVkN2Y2
Li4xZGQ3OTg5YmNjMDNkNDAwMDBkY2Q5Y2MyNjk0Y2JhYmNmZmU0NjAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmgKQEAgLTI3LDcgKzI3LDcg
QEAKICNkZWZpbmUgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbl9oCiAKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAogbmFtZXNwYWNlIElQQyB7CiBjbGFzcyBEZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJSZW5kZXJMYXllci5jcHAKaW5kZXggOWNjMTBlY2E0NmM0NGUxMzEwYzJiNjc3MzY2YjQw
MjczY2E0NDk2Mi4uYTdiNGY0NjU1NTY2MzM1YzA2NmFiMTY5OTYwZTgxZmNlYTliMGRiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1Jl
ZlB0cjxXZWJSZW5kZXJMYXllcj4gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZShXZWJQYWdlKiBwYWdl
KQorUmVmUHRyPFdlYlJlbmRlckxheWVyPiBXZWJSZW5kZXJMYXllcjo6Y3JlYXRlKFdlYlBhZ2Uq
IHBhZ2UpCiB7CiAgICAgRnJhbWUqIG1haW5GcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwogICAg
IGlmICghbWFpbkZyYW1lKQpAQCAtNjMsMTIgKzYzLDEyIEBAIFBhc3NSZWZQdHI8V2ViUmVuZGVy
TGF5ZXI+IFdlYlJlbmRlckxheWVyOjpjcmVhdGUoV2ViUGFnZSogcGFnZSkKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYlJlbmRlckxheWVyKHJvb3RMYXllcikpOwogfQogCi1QYXNzUmVmUHRy
PFdlYlJlbmRlckxheWVyPiBXZWJSZW5kZXJMYXllcjo6Y3JlYXRlKFBhc3NSZWZQdHI8V2ViUmVu
ZGVyT2JqZWN0PiByZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGluZywg
Ym9vbCBpc0NsaXBwZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlIHR5cGUsIFdlYkNvcmU6OkludFJl
Y3QgYWJzb2x1dGVCb3VuZGluZ0JveCwgZG91YmxlIGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRl
LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5lZ2F0aXZlWk9yZGVyTGlzdCwgUGFzc1JlZlB0cjxB
UEk6OkFycmF5PiBub3JtYWxGbG93TGlzdCwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBwb3NpdGl2
ZVpPcmRlckxpc3QsIFBhc3NSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+IGZyYW1lQ29udGVudHNMYXll
cikKK1JlZjxXZWJSZW5kZXJMYXllcj4gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZShSZWZQdHI8V2Vi
UmVuZGVyT2JqZWN0PiYmIHJlbmRlcmVyLCBib29sIGlzUmVmbGVjdGlvbiwgYm9vbCBpc0NsaXBw
aW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5cGUgdHlwZSwgV2ViQ29yZTo6
SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94LCBkb3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0
aW1hdGUsIFJlZlB0cjxBUEk6OkFycmF5PiYmIG5lZ2F0aXZlWk9yZGVyTGlzdCwgUmVmUHRyPEFQ
STo6QXJyYXk+JiYgbm9ybWFsRmxvd0xpc3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIHBvc2l0aXZl
Wk9yZGVyTGlzdCwgUmVmUHRyPFdlYlJlbmRlckxheWVyPiYmIGZyYW1lQ29udGVudHNMYXllcikK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlJlbmRlckxheWVyKHJlbmRlcmVyLCBpc1Jl
ZmxlY3Rpb24sIGlzQ2xpcHBpbmcsIGlzQ2xpcHBlZCwgdHlwZSwgYWJzb2x1dGVCb3VuZGluZ0Jv
eCwgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUsIG5lZ2F0aXZlWk9yZGVyTGlzdCwgbm9ybWFs
Rmxvd0xpc3QsIHBvc2l0aXZlWk9yZGVyTGlzdCwgZnJhbWVDb250ZW50c0xheWVyKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVuZGVyTGF5ZXIoV1RGTW92ZShyZW5kZXJlciksIGlz
UmVmbGVjdGlvbiwgaXNDbGlwcGluZywgaXNDbGlwcGVkLCB0eXBlLCBhYnNvbHV0ZUJvdW5kaW5n
Qm94LCBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwgV1RGTW92ZShuZWdhdGl2ZVpPcmRlckxp
c3QpLCBXVEZNb3ZlKG5vcm1hbEZsb3dMaXN0KSwgV1RGTW92ZShwb3NpdGl2ZVpPcmRlckxpc3Qp
LCBXVEZNb3ZlKGZyYW1lQ29udGVudHNMYXllcikpKTsKIH0KIAotUGFzc1JlZlB0cjxBUEk6OkFy
cmF5PiBXZWJSZW5kZXJMYXllcjo6Y3JlYXRlQXJyYXlGcm9tTGF5ZXJMaXN0KFZlY3RvcjxSZW5k
ZXJMYXllcio+KiBsaXN0KQorUmVmUHRyPEFQSTo6QXJyYXk+IFdlYlJlbmRlckxheWVyOjpjcmVh
dGVBcnJheUZyb21MYXllckxpc3QoVmVjdG9yPFJlbmRlckxheWVyKj4qIGxpc3QpCiB7CiAgICAg
aWYgKCFsaXN0IHx8ICFsaXN0LT5zaXplKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MTI4LDE4ICsxMjgsMTggQEAgV2ViUmVuZGVyTGF5ZXI6OldlYlJlbmRlckxheWVyKFJlbmRlckxh
eWVyKiBsYXllcikKICAgICB9CiB9CiAKLVdlYlJlbmRlckxheWVyOjpXZWJSZW5kZXJMYXllcihQ
YXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gcmVuZGVyZXIsIGJvb2wgaXNSZWZsZWN0aW9uLCBi
b29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBDb21wb3NpdGluZ0xheWVyVHlwZSB0eXBl
LCBXZWJDb3JlOjpJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3gsIGRvdWJsZSBiYWNraW5nU3Rv
cmVNZW1vcnlFc3RpbWF0ZSwgUGFzc1JlZlB0cjxBUEk6OkFycmF5PiBuZWdhdGl2ZVpPcmRlckxp
c3QsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gbm9ybWFsRmxvd0xpc3QsIFBhc3NSZWZQdHI8QVBJ
OjpBcnJheT4gcG9zaXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPFdlYlJlbmRlckxheWVyPiBm
cmFtZUNvbnRlbnRzTGF5ZXIpCi0gICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQorV2ViUmVuZGVy
TGF5ZXI6OldlYlJlbmRlckxheWVyKFJlZlB0cjxXZWJSZW5kZXJPYmplY3Q+JiYgcmVuZGVyZXIs
IGJvb2wgaXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVkLCBDb21w
b3NpdGluZ0xheWVyVHlwZSB0eXBlLCBXZWJDb3JlOjpJbnRSZWN0IGFic29sdXRlQm91bmRpbmdC
b3gsIGRvdWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwgUmVmUHRyPEFQSTo6QXJyYXk+
JiYgbmVnYXRpdmVaT3JkZXJMaXN0LCBSZWZQdHI8QVBJOjpBcnJheT4mJiBub3JtYWxGbG93TGlz
dCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgcG9zaXRpdmVaT3JkZXJMaXN0LCBSZWZQdHI8V2ViUmVu
ZGVyTGF5ZXI+JiYgZnJhbWVDb250ZW50c0xheWVyKQorICAgIDogbV9yZW5kZXJlcihXVEZNb3Zl
KHJlbmRlcmVyKSkKICAgICAsIG1faXNSZWZsZWN0aW9uKGlzUmVmbGVjdGlvbikKICAgICAsIG1f
aXNDbGlwcGluZyhpc0NsaXBwaW5nKQogICAgICwgbV9pc0NsaXBwZWQoaXNDbGlwcGVkKQogICAg
ICwgbV9jb21wb3NpdGluZ0xheWVyVHlwZSh0eXBlKQogICAgICwgbV9hYnNvbHV0ZUJvdW5kaW5n
Qm94KGFic29sdXRlQm91bmRpbmdCb3gpCiAgICAgLCBtX2JhY2tpbmdTdG9yZU1lbW9yeUVzdGlt
YXRlKGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKQotICAgICwgbV9uZWdhdGl2ZVpPcmRlckxp
c3QobmVnYXRpdmVaT3JkZXJMaXN0KQotICAgICwgbV9ub3JtYWxGbG93TGlzdChub3JtYWxGbG93
TGlzdCkKLSAgICAsIG1fcG9zaXRpdmVaT3JkZXJMaXN0KHBvc2l0aXZlWk9yZGVyTGlzdCkKLSAg
ICAsIG1fZnJhbWVDb250ZW50c0xheWVyKGZyYW1lQ29udGVudHNMYXllcikKKyAgICAsIG1fbmVn
YXRpdmVaT3JkZXJMaXN0KFdURk1vdmUobmVnYXRpdmVaT3JkZXJMaXN0KSkKKyAgICAsIG1fbm9y
bWFsRmxvd0xpc3QoV1RGTW92ZShub3JtYWxGbG93TGlzdCkpCisgICAgLCBtX3Bvc2l0aXZlWk9y
ZGVyTGlzdChXVEZNb3ZlKHBvc2l0aXZlWk9yZGVyTGlzdCkpCisgICAgLCBtX2ZyYW1lQ29udGVu
dHNMYXllcihXVEZNb3ZlKGZyYW1lQ29udGVudHNMYXllcikpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJMYXllci5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlJlbmRlckxheWVyLmgKaW5kZXggNWI2YmUwNDMzNGU0NjIwZDFkMGE5ZjIzYWIx
Mzk0NTNkYmRiNDJkYy4uNTE0MTRkZmI0N2EyZTZmMjU2ZjMwZDNmNWExNTNiODE0Yzc4YWIzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlckxheWVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlckxheWVyLmgKQEAgLTQwLDggKzQwLDggQEAg
Y2xhc3MgV2ViUmVuZGVyTGF5ZXIgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpSZW5kZXJMYXllcj4gewogcHVibGljOgogICAgIGVudW0gQ29tcG9zaXRpbmdMYXll
clR5cGUgeyBOb25lLCBOb3JtYWwsIFRpbGVkLCBNZWRpYSwgQ29udGFpbmVyIH07CiAKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJSZW5kZXJMYXllcj4gY3JlYXRlKFdlYlBhZ2UqKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJSZW5kZXJMYXllcj4gY3JlYXRlKFBhc3NSZWZQdHI8V2ViUmVu
ZGVyT2JqZWN0PiByZW5kZXJlciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGluZywg
Ym9vbCBpc0NsaXBwZWQsIENvbXBvc2l0aW5nTGF5ZXJUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IGFi
c29sdXRlQm91bmRpbmdCb3gsIGRvdWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwgUGFz
c1JlZlB0cjxBUEk6OkFycmF5PiBuZWdhdGl2ZVpPcmRlckxpc3QsIFBhc3NSZWZQdHI8QVBJOjpB
cnJheT4gbm9ybWFsRmxvd0xpc3QsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gcG9zaXRpdmVaT3Jk
ZXJMaXN0LCBQYXNzUmVmUHRyPFdlYlJlbmRlckxheWVyPiBmcmFtZUNvbnRlbnRzTGF5ZXIpOwor
ICAgIHN0YXRpYyBSZWZQdHI8V2ViUmVuZGVyTGF5ZXI+IGNyZWF0ZShXZWJQYWdlKik7CisgICAg
c3RhdGljIFJlZjxXZWJSZW5kZXJMYXllcj4gY3JlYXRlKFJlZlB0cjxXZWJSZW5kZXJPYmplY3Q+
JiYgcmVuZGVyZXIsIGJvb2wgaXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXND
bGlwcGVkLCBDb21wb3NpdGluZ0xheWVyVHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0ZUJv
dW5kaW5nQm94LCBkb3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUsIFJlZlB0cjxBUEk6
OkFycmF5PiYmIG5lZ2F0aXZlWk9yZGVyTGlzdCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgbm9ybWFs
Rmxvd0xpc3QsIFJlZlB0cjxBUEk6OkFycmF5PiYmIHBvc2l0aXZlWk9yZGVyTGlzdCwgUmVmUHRy
PFdlYlJlbmRlckxheWVyPiYmIGZyYW1lQ29udGVudHNMYXllcik7CiAKICAgICBBUEk6OkFycmF5
KiBuZWdhdGl2ZVpPcmRlckxpc3QoKSBjb25zdCB7IHJldHVybiBtX25lZ2F0aXZlWk9yZGVyTGlz
dC5nZXQoKTsgfQogICAgIEFQSTo6QXJyYXkqIG5vcm1hbEZsb3dMaXN0KCkgY29uc3QgeyByZXR1
cm4gbV9ub3JtYWxGbG93TGlzdC5nZXQoKTsgfQpAQCAtNTgsOSArNTgsOSBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViUmVuZGVyTGF5ZXIoV2ViQ29yZTo6UmVuZGVyTGF5
ZXIqKTsKLSAgICBXZWJSZW5kZXJMYXllcihQYXNzUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gcmVu
ZGVyZXIsIGJvb2wgaXNSZWZsZWN0aW9uLCBib29sIGlzQ2xpcHBpbmcsIGJvb2wgaXNDbGlwcGVk
LCBDb21wb3NpdGluZ0xheWVyVHlwZSwgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5n
Qm94LCBkb3VibGUgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUsIFBhc3NSZWZQdHI8QVBJOjpB
cnJheT4gbmVnYXRpdmVaT3JkZXJMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IG5vcm1hbEZs
b3dMaXN0LCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IHBvc2l0aXZlWk9yZGVyTGlzdCwgUGFzc1Jl
ZlB0cjxXZWJSZW5kZXJMYXllcj4gZnJhbWVDb250ZW50c0xheWVyKTsKKyAgICBXZWJSZW5kZXJM
YXllcihSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiYmIHJlbmRlcmVyLCBib29sIGlzUmVmbGVjdGlv
biwgYm9vbCBpc0NsaXBwaW5nLCBib29sIGlzQ2xpcHBlZCwgQ29tcG9zaXRpbmdMYXllclR5cGUs
IFdlYkNvcmU6OkludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCwgZG91YmxlIGJhY2tpbmdTdG9y
ZU1lbW9yeUVzdGltYXRlLCBSZWZQdHI8QVBJOjpBcnJheT4mJiBuZWdhdGl2ZVpPcmRlckxpc3Qs
IFJlZlB0cjxBUEk6OkFycmF5PiYmIG5vcm1hbEZsb3dMaXN0LCBSZWZQdHI8QVBJOjpBcnJheT4m
JiBwb3NpdGl2ZVpPcmRlckxpc3QsIFJlZlB0cjxXZWJSZW5kZXJMYXllcj4mJiBmcmFtZUNvbnRl
bnRzTGF5ZXIpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gY3JlYXRlQXJy
YXlGcm9tTGF5ZXJMaXN0KFZlY3RvcjxXZWJDb3JlOjpSZW5kZXJMYXllcio+Kik7CisgICAgc3Rh
dGljIFJlZlB0cjxBUEk6OkFycmF5PiBjcmVhdGVBcnJheUZyb21MYXllckxpc3QoVmVjdG9yPFdl
YkNvcmU6OlJlbmRlckxheWVyKj4qKTsKIAogICAgIFJlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IG1f
cmVuZGVyZXI7CiAgICAgYm9vbCBtX2lzUmVmbGVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlJlbmRlck9iamVjdC5jcHAKaW5kZXggYWZjNDMzNmVkODQ1ODgzMDgzNzkyYjU5OTc0NGNk
Zjc0NDBlYWY5Yi4uNTkyMmIwMDAwOThiNDBlNjVkMzYxYzg0MDBmYTc2MzU0MTc2ZmI2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAKQEAgLTU4LDkgKzU4LDkg
QEAgUmVmUHRyPFdlYlJlbmRlck9iamVjdD4gV2ViUmVuZGVyT2JqZWN0OjpjcmVhdGUoV2ViUGFn
ZSogcGFnZSkKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlJlbmRlck9iamVjdChjb250ZW50
UmVuZGVyZXIsIHRydWUpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IFdlYlJl
bmRlck9iamVjdDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBlbGVt
ZW50VGFnTmFtZSwgY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIFBhc3NSZWZQdHI8QVBJOjpBcnJh
eT4gZWxlbWVudENsYXNzTmFtZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24s
IFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1
bnNpZ25lZCB0ZXh0TGVuZ3RoLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNoaWxkcmVuKQorUmVm
PFdlYlJlbmRlck9iamVjdD4gV2ViUmVuZGVyT2JqZWN0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRUYWdOYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRJ
RCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgZWxlbWVudENsYXNzTmFtZXMsIFdlYkNvcmU6OkludFBv
aW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0LCBjb25zdCBT
dHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25lZCB0ZXh0TGVuZ3RoLCBSZWZQdHI8QVBJOjpBcnJh
eT4mJiBjaGlsZHJlbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlJlbmRlck9iamVj
dChuYW1lLCBlbGVtZW50VGFnTmFtZSwgZWxlbWVudElELCBlbGVtZW50Q2xhc3NOYW1lcywgYWJz
b2x1dGVQb3NpdGlvbiwgZnJhbWVSZWN0LCB0ZXh0U25pcHBldCwgdGV4dExlbmd0aCwgY2hpbGRy
ZW4pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZW5kZXJPYmplY3QobmFtZSwgZWxl
bWVudFRhZ05hbWUsIGVsZW1lbnRJRCwgV1RGTW92ZShlbGVtZW50Q2xhc3NOYW1lcyksIGFic29s
dXRlUG9zaXRpb24sIGZyYW1lUmVjdCwgdGV4dFNuaXBwZXQsIHRleHRMZW5ndGgsIFdURk1vdmUo
Y2hpbGRyZW4pKSk7CiB9CiAKIFdlYlJlbmRlck9iamVjdDo6V2ViUmVuZGVyT2JqZWN0KFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIGJvb2wgc2hvdWxkSW5jbHVkZURlc2NlbmRhbnRzKQpAQCAtMTI3
LDEzICsxMjcsMTMgQEAgV2ViUmVuZGVyT2JqZWN0OjpXZWJSZW5kZXJPYmplY3QoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciwgYm9vbCBzaG91bGRJbmNsdWRlRGVzY2UKICAgICBtX2NoaWxkcmVuID0g
QVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoY2hpbGRyZW4pKTsKIH0KIAotV2ViUmVuZGVyT2Jq
ZWN0OjpXZWJSZW5kZXJPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGVs
ZW1lbnRUYWdOYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgUGFzc1JlZlB0cjxBUEk6OkFy
cmF5PiBlbGVtZW50Q2xhc3NOYW1lcywgV2ViQ29yZTo6SW50UG9pbnQgYWJzb2x1dGVQb3NpdGlv
biwgV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3QsIGNvbnN0IFN0cmluZyYgdGV4dFNuaXBwZXQs
IHVuc2lnbmVkIHRleHRMZW5ndGgsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gY2hpbGRyZW4pCi0g
ICAgOiBtX2NoaWxkcmVuKGNoaWxkcmVuKQorV2ViUmVuZGVyT2JqZWN0OjpXZWJSZW5kZXJPYmpl
Y3QoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRUYWdOYW1lLCBjb25z
dCBTdHJpbmcmIGVsZW1lbnRJRCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgZWxlbWVudENsYXNzTmFt
ZXMsIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6OkludFJlY3Qg
ZnJhbWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25lZCB0ZXh0TGVuZ3Ro
LCBSZWZQdHI8QVBJOjpBcnJheT4mJiBjaGlsZHJlbikKKyAgICA6IG1fY2hpbGRyZW4oV1RGTW92
ZShjaGlsZHJlbikpCiAgICAgLCBtX25hbWUobmFtZSkKICAgICAsIG1fZWxlbWVudFRhZ05hbWUo
ZWxlbWVudFRhZ05hbWUpCiAgICAgLCBtX2VsZW1lbnRJRChlbGVtZW50SUQpCiAgICAgLCBtX3Rl
eHRTbmlwcGV0KHRleHRTbmlwcGV0KQotICAgICwgbV9lbGVtZW50Q2xhc3NOYW1lcyhlbGVtZW50
Q2xhc3NOYW1lcykKKyAgICAsIG1fZWxlbWVudENsYXNzTmFtZXMoV1RGTW92ZShlbGVtZW50Q2xh
c3NOYW1lcykpCiAgICAgLCBtX2Fic29sdXRlUG9zaXRpb24oYWJzb2x1dGVQb3NpdGlvbikKICAg
ICAsIG1fZnJhbWVSZWN0KGZyYW1lUmVjdCkKICAgICAsIG1fdGV4dExlbmd0aCh0ZXh0TGVuZ3Ro
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5oCmluZGV4IGZjMjU1ODIzMTdh
NTM4YmI0ZDQ3OTMwZWFlNWFlMGRiNWY1MWY3NzUuLjg1MjJkYWM4ODQ0MjdiNTg3NWE5ZDdhY2Q0
ZGMzYjUwNjRmODg3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5k
ZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyT2JqZWN0LmgK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
QVBJIHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJSZW5kZXJPYmplY3QocmVuZGVyZXIsIGZhbHNlKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIGVsZW1lbnRUYWdOYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwg
UGFzc1JlZlB0cjxBUEk6OkFycmF5PiBlbGVtZW50Q2xhc3NOYW1lcywgV2ViQ29yZTo6SW50UG9p
bnQgYWJzb2x1dGVQb3NpdGlvbiwgV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3QsIGNvbnN0IFN0
cmluZyYgdGV4dFNuaXBwZXQsIHVuc2lnbmVkIHRleHRMZW5ndGgsIFBhc3NSZWZQdHI8QVBJOjpB
cnJheT4gY2hpbGRyZW4pOworICAgIHN0YXRpYyBSZWY8V2ViUmVuZGVyT2JqZWN0PiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRUYWdOYW1lLCBjb25zdCBT
dHJpbmcmIGVsZW1lbnRJRCwgUmVmUHRyPEFQSTo6QXJyYXk+JiYgZWxlbWVudENsYXNzTmFtZXMs
IFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24sIFdlYkNvcmU6OkludFJlY3QgZnJh
bWVSZWN0LCBjb25zdCBTdHJpbmcmIHRleHRTbmlwcGV0LCB1bnNpZ25lZCB0ZXh0TGVuZ3RoLCBS
ZWZQdHI8QVBJOjpBcnJheT4mJiBjaGlsZHJlbik7CiAKICAgICB2aXJ0dWFsIH5XZWJSZW5kZXJP
YmplY3QoKTsKIApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2Vi
UmVuZGVyT2JqZWN0KFdlYkNvcmU6OlJlbmRlck9iamVjdCosIGJvb2wgc2hvdWxkSW5jbHVkZURl
c2NlbmRhbnRzKTsKLSAgICBXZWJSZW5kZXJPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIGVsZW1lbnRUYWdOYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgUGFzc1Jl
ZlB0cjxBUEk6OkFycmF5PiBlbGVtZW50Q2xhc3NOYW1lcywgV2ViQ29yZTo6SW50UG9pbnQgYWJz
b2x1dGVQb3NpdGlvbiwgV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3QsIGNvbnN0IFN0cmluZyYg
dGV4dFNuaXBwZXQsIHVuc2lnbmVkIHRleHRMZW5ndGgsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4g
Y2hpbGRyZW4pOworICAgIFdlYlJlbmRlck9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZWxlbWVudFRhZ05hbWUsIGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBSZWZQdHI8
QVBJOjpBcnJheT4mJiBlbGVtZW50Q2xhc3NOYW1lcywgV2ViQ29yZTo6SW50UG9pbnQgYWJzb2x1
dGVQb3NpdGlvbiwgV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3QsIGNvbnN0IFN0cmluZyYgdGV4
dFNuaXBwZXQsIHVuc2lnbmVkIHRleHRMZW5ndGgsIFJlZlB0cjxBUEk6OkFycmF5PiYmIGNoaWxk
cmVuKTsKIAogICAgIFJlZlB0cjxBUEk6OkFycmF5PiBtX2NoaWxkcmVuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKaW5kZXggM2UzMjJlNTU3YTFk
YjljODk1MWU0ZDlhZTY4YzY4YjFjNzJlYTg3MC4uYTI0YTNkNmUwNjk1ZmI4OGE4ODA3N2Y0OTgw
MjM4ZGI1ODAzODIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElGcmFtZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRnJh
bWVJbmZvLmNwcApAQCAtNTMsNyArNTMsNyBAQCBSZWY8RnJhbWVJbmZvPiBGcmFtZUluZm86OmNy
ZWF0ZShjb25zdCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBXZWJDbwogRnJh
bWVJbmZvOjpGcmFtZUluZm8oY29uc3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9E
YXRhKQogICAgIDogbV9pc01haW5GcmFtZShmcmFtZUluZm9EYXRhLmlzTWFpbkZyYW1lKQogICAg
ICwgbV9yZXF1ZXN0KGZyYW1lSW5mb0RhdGEucmVxdWVzdCkKLSAgICAsIG1fc2VjdXJpdHlPcmln
aW4oKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZnJhbWVJbmZvRGF0YS5zZWN1cml0eU9yaWdpbi5z
ZWN1cml0eU9yaWdpbigpKSkKKyAgICAsIG1fc2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShmcmFtZUluZm9EYXRhLnNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpKQog
ICAgICwgbV9oYW5kbGUoQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKGZyYW1lSW5mb0RhdGEuZnJh
bWVJRCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCA4
Mzg0MjgyZDAzNTljMjhkMTM3MTQwNDRhZGU0NGQzYmY4ZGE2MWYzLi40YzAzY2RlYjEyYTI4ZTUx
NTA5Y2E0ZTk5MjllODkxYWFkZTQxODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjpyZXF1ZXN0VXNlck1lZGlhUGVybWlzc2lvbkZvckZyYW1lKAogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFtX3BhZ2UudWlDbGll
bnQoKS5kZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChtX3BhZ2UsICpt
X3BhZ2UucHJvY2VzcygpLndlYkZyYW1lKGZyYW1lSUQpLCAqdXNlck1lZGlhT3JpZ2luLmdldCgp
LCAqdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIHJlcXVlc3QuZ2V0KCkpKQorICAgICAgICBpZiAoIW1f
cGFnZS51aUNsaWVudCgpLmRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
KG1fcGFnZSwgKm1fcGFnZS5wcm9jZXNzKCkud2ViRnJhbWUoZnJhbWVJRCksIHVzZXJNZWRpYU9y
aWdpbiwgdG9wTGV2ZWxPcmlnaW4sIHJlcXVlc3QuZ2V0KCkpKQogICAgICAgICAgICAgdXNlck1l
ZGlhQWNjZXNzV2FzRGVuaWVkKHVzZXJNZWRpYUlELCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dFByb3h5OjpVc2VyTWVkaWFBY2Nlc3NEZW5pYWxSZWFzb246OlVzZXJNZWRpYURpc2FibGVkKTsK
IAogICAgIH07CkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUodWludDYKICAg
ICBhdXRvIHVzZXJNZWRpYU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIodXNlck1lZGlhRG9jdW1lbnRP
cmlnaW5JZGVudGlmaWVyKS52YWx1ZV9vcihTZWN1cml0eU9yaWdpbkRhdGEoKSkuc2VjdXJpdHlP
cmlnaW4oKSk7CiAgICAgYXV0byB0b3BMZXZlbE9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIodG9wTGV2
ZWxEb2N1bWVudE9yaWdpbklkZW50aWZpZXIpLnZhbHVlX29yKFNlY3VyaXR5T3JpZ2luRGF0YSgp
KS5zZWN1cml0eU9yaWdpbigpKTsKIAotICAgIGlmICghbV9wYWdlLnVpQ2xpZW50KCkuY2hlY2tV
c2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKG1fcGFnZSwgKm1fcGFnZS5wcm9jZXNzKCkud2Vi
RnJhbWUoZnJhbWVJRCksICp1c2VyTWVkaWFPcmlnaW4uZ2V0KCksICp0b3BMZXZlbE9yaWdpbi5n
ZXQoKSwgcmVxdWVzdC5nZXQoKSkpIHsKKyAgICBpZiAoIW1fcGFnZS51aUNsaWVudCgpLmNoZWNr
VXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihtX3BhZ2UsICptX3BhZ2UucHJvY2VzcygpLndl
YkZyYW1lKGZyYW1lSUQpLCB1c2VyTWVkaWFPcmlnaW4sIHRvcExldmVsT3JpZ2luLCByZXF1ZXN0
LmdldCgpKSkgewogICAgICAgICBtX3BlbmRpbmdEZXZpY2VSZXF1ZXN0cy50YWtlKHVzZXJNZWRp
YUlEKTsKICAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24odXNlck1lZGlhSUQsIFZlY3RvcjxXZWJD
b3JlOjpDYXB0dXJlRGV2aWNlPigpLCBlbXB0eVN0cmluZygpLCBmYWxzZSksIG1fcGFnZS5wYWdl
SUQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0
ZWRMaW5rU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3Rv
cmUuY3BwCmluZGV4IGE5NjFhMmIzMWVmODc1MzIxZDgxMzljY2Q5NDM0ODY4M2MwMjc1YjUuLjI5
NTlkNTkxZjZlYjk4NGI0ZGZhOWIwYzY1NmNhNzdiODQ3Zjc4NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2
b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnBlbmRpbmdWaXNpdGVkTGlua3NUaW1lckZpcmVkKCkKIAog
dm9pZCBWaXNpdGVkTGlua1N0b3JlOjpyZXNpemVUYWJsZSh1bnNpZ25lZCBuZXdUYWJsZVNpemUp
CiB7Ci0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbmV3VGFibGVNZW1vcnkgPSBTaGFyZWRNZW1v
cnk6OmFsbG9jYXRlKG5ld1RhYmxlU2l6ZSAqIHNpemVvZihMaW5rSGFzaCkpOworICAgIGF1dG8g
bmV3VGFibGVNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKG5ld1RhYmxlU2l6ZSAqIHNp
emVvZihMaW5rSGFzaCkpOwogCiAgICAgaWYgKCFuZXdUYWJsZU1lbW9yeSkgewogICAgICAgICBM
T0dfRVJST1IoIkNvdWxkIG5vdCBhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5IGZvciB2aXNpdGVkIGxp
bmsgdGFibGUiKTsKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OnJl
c2l6ZVRhYmxlKHVuc2lnbmVkIG5ld1RhYmxlU2l6ZSkKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5
PiBjdXJyZW50VGFibGVNZW1vcnkgPSBtX3RhYmxlLnNoYXJlZE1lbW9yeSgpOwogICAgIHVuc2ln
bmVkIGN1cnJlbnRUYWJsZVNpemUgPSBtX3RhYmxlU2l6ZTsKIAotICAgIG1fdGFibGUuc2V0U2hh
cmVkTWVtb3J5KG5ld1RhYmxlTWVtb3J5KTsKKyAgICBtX3RhYmxlLnNldFNoYXJlZE1lbW9yeShu
ZXdUYWJsZU1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBtX3RhYmxlU2l6ZSA9IG5ld1Rh
YmxlU2l6ZTsKIAogICAgIGlmIChjdXJyZW50VGFibGVNZW1vcnkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJs
ZUNvbnRyb2xsZXIuY3BwCmluZGV4IDFkNGI5N2ViZTlmMmRhZjU0NjVlYmJhYjVjZjlhMTkxZDc4
ZGVkZTQuLjZlOGIwNmRmYjhkM2Q1ZjBiY2Q1M2Q1MDg4MTk1ODRjOGYzNzExMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0
ZWRMaW5rVGFibGVDb250cm9sbGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFZpc2l0ZWRM
aW5rVGFibGVDb250cm9sbGVyOjpzZXRWaXNpdGVkTGlua1RhYmxlKGNvbnN0IFNoYXJlZE1lbW9y
eTo6SGFuZGxlJgogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Zpc2l0ZWRMaW5rVGFibGUuc2V0U2hhcmVkTWVtb3J5KFdURk1vdmUoc2hhcmVkTWVtb3J5
KSk7CisgICAgbV92aXNpdGVkTGlua1RhYmxlLnNldFNoYXJlZE1lbW9yeShzaGFyZWRNZW1vcnku
cmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBpbnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3MoKTsK
IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>