<?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>188735</bug_id>
          
          <creation_ts>2018-08-19 16:31:59 -0700</creation_ts>
          <short_desc>[Cocoa] Update uses of wrapper template functions in WebKit for clarity, simplicity, better ARC readiness</short_desc>
          <delta_ts>2018-08-20 16:53:03 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1451487</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-19 16:31:59 -0700</bug_when>
    <thetext>[Cocoa] Update uses of wrapper template functions in WebKit for clarity, simplicity, better ARC readiness</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451491</commentid>
    <comment_count>1</comment_count>
      <attachid>347470</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-19 17:01:09 -0700</bug_when>
    <thetext>Created attachment 347470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451502</commentid>
    <comment_count>2</comment_count>
      <attachid>347473</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-19 17:30:11 -0700</bug_when>
    <thetext>Created attachment 347473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451503</commentid>
    <comment_count>3</comment_count>
      <attachid>347473</attachid>
    <who name="">mitz</who>
    <bug_when>2018-08-19 17:32:18 -0700</bug_when>
    <thetext>Comment on attachment 347473
Patch

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

&gt; Source/WebKit/ChangeLog:64
&gt; +        (-[WKProcessPool _configuration]): Fixed a storage leak by removing leakRef,
&gt; +        which was not balanaced. This is not a copy or create function, so it should not
&gt; +        return an object that requires a release to balance it.

Yes! I noticed this bug a couple of weeks ago and hadn’t gotten around to writing it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451509</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-08-19 17:53:39 -0700</bug_when>
    <thetext>Committed r235022: &lt;https://trac.webkit.org/changeset/235022&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451831</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-20 16:53:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/43534485&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347470</attachid>
            <date>2018-08-19 17:01:09 -0700</date>
            <delta_ts>2018-08-19 17:30:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188735-20180819170108.patch</filename>
            <type>text/plain</type>
            <size>60630</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAyOGRlOTczZmI3OTQ0M2Jm
Y2U4Y2EyM2ZhOTkxN2IxMmM4MGNjYTMuLjRmYWI3NTQ0YjkxODdlMzRmZDg5YmU1MjIzYmNlNDMz
ZWY0ZjE5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkzIEBACisyMDE4LTA4LTE5ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSB1c2VzIG9m
IHdyYXBwZXIgdGVtcGxhdGUgZnVuY3Rpb25zIGluIFdlYktpdCBmb3IgY2xhcml0eSwgc2ltcGxp
Y2l0eSwgYmV0dGVyIEFSQyByZWFkaW5lc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODczNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJlY2F1c2Ugb2YgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cCwg
dGhlcmUgc2hvdWxkIG5ldmVyIGJlIGEgcmVhc29uIHRvIGNhbGwKKyAgICAgICAgdGhlIHdyYXBw
ZXIgZnVuY3Rpb24gYXMgV2ViS2l0Ojp3cmFwcGVyIG9yIEFQSTo6d3JhcHBlciB1bmxlc3MgdGhl
cmUgaXMgYSBuZWVkCisgICAgICAgIHRvIHJlc29sdmUgYSBuYW1lIGNvbmZsaWN0LCBzbyByZW1v
dmVkIHRoZSBleHBsaWNpdCBuYW1lc3BhY2luZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkxSZXF1ZXN0
UmV0dXJuaW5nTmF2aWdhdGlvbik6IFJlbW92ZWQgZXhwbGljaXQgbnVsbCBjaGVjayBhbmQKKyAg
ICAgICAgbGVha1JlZi9hdXRvcmVsZWFzZSBwYWlyLCBib3RoIGRvbmUgYnkgdGhlIHdyYXBwZXIg
dGVtcGxhdGUgZnVuY3Rpb24gbm93LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0JhY2tGb3J3YXJkTGlzdC5tbToKKyAgICAgICAgKHRvV0tCYWNrRm9yd2FyZExpc3RJdGVtKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV0tCYWNrRm9yd2FyZExpc3QgY3VycmVudEl0ZW1dKTogVXNl
IHdyYXBwZXIgaW5zdGVhZCBvZiB0b1dLQmFja0ZvcndhcmRMaXN0SXRlbS4KKyAgICAgICAgKC1b
V0tCYWNrRm9yd2FyZExpc3QgYmFja0l0ZW1dKTogRGl0dG8uCisgICAgICAgICgtW1dLQmFja0Zv
cndhcmRMaXN0IGZvcndhcmRJdGVtXSk6IERpdHRvLgorICAgICAgICAoLVtXS0JhY2tGb3J3YXJk
TGlzdCBpdGVtQXRJbmRleDpdKTogRGl0dG8uCisgICAgICAgICgtW1dLQmFja0ZvcndhcmRMaXN0
IGJhY2tMaXN0XSk6IFJlbW92ZWQgbGVha1JlZi9hdXRvcmVsZWFzZSBwYWlyLgorICAgICAgICAo
LVtXS0JhY2tGb3J3YXJkTGlzdCBmb3J3YXJkTGlzdF0pOiBEaXR0by4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbToKKyAgICAgICAgKCtb
V0tDb250ZW50UnVsZUxpc3RTdG9yZSBkZWZhdWx0U3RvcmVdKTogUmVtb3ZlZCBleHBsaWNpdCBX
ZWJLaXQgbmFtZXNwYWNlLgorICAgICAgICAoK1tXS0NvbnRlbnRSdWxlTGlzdFN0b3JlIHN0b3Jl
V2l0aFVSTDpdKTogRml4ZWQgc3RvcmFnZSBsZWFrIGJ5IHJlbW92aW5nIGxlYWtSZWYsCisgICAg
ICAgIHdoaWNoIHdhcyBub3QgYmFsYW5jZWQuIFRoaXMgaXMgbm90IGEgY29weSBvciBjcmVhdGUg
ZnVuY3Rpb24sIHNvIGl0IHNob3VsZCBub3QKKyAgICAgICAgcmV0dXJuIGFuIG9iamVjdCB0aGF0
IHJlcXVpcmVzIGEgcmVsZWFzZSB0byBiYWxhbmNlIGl0LgorICAgICAgICAoLVtXS0NvbnRlbnRS
dWxlTGlzdFN0b3JlIF9jb21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjplbmNvZGVk
Q29udGVudFJ1bGVMaXN0OmNvbXBsZXRpb25IYW5kbGVyOnJlbGVhc2VzQXJndW1lbnQ6XSk6Cisg
ICAgICAgIFJlbW92ZWQgZXhwbGljaXQgV2ViS2l0IG5hbWVzcGFjZSBhbmQgdW5uZWVkZWQgZ2V0
KCkuCisgICAgICAgICgtW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgbG9va1VwQ29udGVudFJ1bGVM
aXN0Rm9ySWRlbnRpZmllcjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgUmVtb3ZlZCBl
eHBsaWNpdCBXZWJLaXQgbmFtZXNwYWNlLgorICAgICAgICAoK1tXS0NvbnRlbnRSdWxlTGlzdFN0
b3JlIGRlZmF1bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFtZV0pOiBEaXR0by4KKyAgICAgICAgKCtb
V0tDb250ZW50UnVsZUxpc3RTdG9yZSBzdG9yZVdpdGhVUkxBbmRMZWdhY3lGaWxlbmFtZTpdKTog
Rml4ZWQgc3RvcmFnZSBsZWFrLAorICAgICAgICBhcyBhYm92ZSBpbiBzdG9yZVdpdGhVUkwuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tOgorICAgICAgICAo
LVtXS0ZyYW1lSW5mbyBfaGFuZGxlXSk6IFJlbW92ZWQgZXhwbGljaXQgV2ViS2l0IG5hbWVzcGFj
ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgor
ICAgICAgICAoV0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcjo6Y29va2llc0RpZENoYW5nZSk6IERp
dHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24u
bW06CisgICAgICAgICgtW1dLTmF2aWdhdGlvbkFjdGlvbiBzb3VyY2VGcmFtZV0pOiBSZW1vdmVk
IGV4cGxpY2l0IG51bGwgY2hlY2ssIG5vdyBkb25lIGJ5CisgICAgICAgIHRoZSB3cmFwcGVyIHRl
bXBsYXRlIGZ1bmN0aW9uLgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gdGFyZ2V0RnJh
bWVdKTogRGl0dG8uCisgICAgICAgICgtW1dLTmF2aWdhdGlvbkFjdGlvbiBfdXNlckluaXRpYXRl
ZEFjdGlvbl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9uIF9tYWluRnJh
bWVOYXZpZ2F0aW9uXSk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S09wZW5QYW5lbFBhcmFtZXRlcnMubW06CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVy
cyBfYWNjZXB0ZWRNSU1FVHlwZXNdKTogUmVtb3ZlZCBsZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXIs
CisgICAgICAgIG5vdyBkb25lIGJ5IHRoZSB3cmFwcGVyIHRlbXBsYXRlIGZ1bmN0aW9uLgorICAg
ICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdKTog
RGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW06
CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgY29weVdpdGhab25lOl0pOiBVc2UgcmV0YWluIGlu
c3RlYWQgb2YgbGVha1JlZjsgc2xpZ2h0bHkgY2xlYXJlcgorICAgICAgICBmb3Igd2hlbiB3ZSBj
b252ZXJ0IHRvIEFSQy4KKyAgICAgICAgKCtbV0tQcmVmZXJlbmNlcyBfZXhwZXJpbWVudGFsRmVh
dHVyZXNdKTogUmVtb3ZlZCBsZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXIsCisgICAgICAgIG5vdyBk
b25lIGJ5IHRoZSB3cmFwcGVyIHRlbXBsYXRlIGZ1bmN0aW9uLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29s
IF9jb25maWd1cmF0aW9uXSk6IEZpeGVkIGEgc3RvcmFnZSBsZWFrIGJ5IHJlbW92aW5nIGxlYWtS
ZWYsCisgICAgICAgIHdoaWNoIHdhcyBub3QgYmFsYW5hY2VkLiBUaGlzIGlzIG5vdCBhIGNvcHkg
b3IgY3JlYXRlIGZ1bmN0aW9uLCBzbyBpdCBzaG91bGQgbm90CisgICAgICAgIHJldHVybiBhbiBv
YmplY3QgdGhhdCByZXF1aXJlcyBhIHJlbGVhc2UgdG8gYmFsYW5jZSBpdC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNrSW50ZXJuYWwuaDoKKyAgICAgICAg
UmVwbGFjZWQgaW5saW5lIHdyYXBwZXIgZnVuY3Rpb24gd2l0aCBXcmFwcGVyVHJhaXRzIHN0cnVj
dHVyZSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVc2VyU2NyaXB0Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX3VzZXJDb250
ZW50V29ybGRdKTogUmVtb3ZlZCBleHBsaWNpdCBBUEkgbmFtZXNwYWNlLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBs
b2FkUmVxdWVzdDpdKTogUmVtb3ZlZCBleHBsaWNpdCBudWxsIGNoZWNrIGFuZAorICAgICAgICBs
ZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXIsIGJvdGggZG9uZSBieSB0aGUgd3JhcHBlciB0ZW1wbGF0
ZSBmdW5jdGlvbiBub3cuCisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkRmlsZVVSTDphbGxvd2lu
Z1JlYWRBY2Nlc3NUb1VSTDpdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkRGF0
YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKTogRGl0dG8uCisgICAg
ICAgICgtW1dLV2ViVmlldyBnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTpdKTogRGl0dG8uCisgICAg
ICAgICgtW1dLV2ViVmlldyBnb0JhY2tdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBn
b0ZvcndhcmRdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmlldyByZWxvYWRdKTogRGl0dG8u
CisgICAgICAgICgtW1dLV2ViVmlldyByZWxvYWRGcm9tT3JpZ2luXSk6IERpdHRvLgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2RpZEluc2VydEF0dGFjaG1lbnQ6d2l0aFNvdXJjZTpdKTogUmVtb3Zl
ZCBsZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXJzLAorICAgICAgICBub3cgZG9uZSBieSB0aGUgd3Jh
cHBlciB0ZW1wbGF0ZSBmdW5jdGlvbi4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRSZW1vdmVB
dHRhY2htZW50Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkRGF0YTpNSU1F
VHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDp1c2VyRGF0YTpdKTogUmVtb3ZlZAor
ICAgICAgICBleHBsaWNpdCBudWxsIGNoZWNrIGFuZCBsZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXIs
IGJvdGggZG9uZSBieSB0aGUgd3JhcHBlciB0ZW1wbGF0ZQorICAgICAgICBmdW5jdGlvbiBub3cu
CisgICAgICAgICgtW1dLV2ViVmlldyBfbG9hZFJlcXVlc3Q6c2hvdWxkT3BlbkV4dGVybmFsVVJM
czpdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2FkV2l0aG91dENvbnRlbnRC
bG9ja2Vyc10pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZWxvYWRFeHBpcmVkT25s
eV0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXNzaW9uU3RhdGVEYXRhXSk6IFJl
bW92ZWQgZXhwbGljaXQgbGVha1JlZi9hdXRvcmVsZWFzZSBwYWlyLCBkb25lCisgICAgICAgIGJ5
IHRoZSB3cmFwcGVyIHRlbXBsYXRlIGZ1bmN0aW9uIG5vdy4gQWxzbywgdGhlIG9sZCB2ZXJzaW9u
IGV4cGxpY2l0bHkgZGVyZWZlcmVuY2VkCisgICAgICAgIGFuZCB3b3VsZCBub3Qgd29yayB3aGVu
IHRoZSByZXN1bHQgb2YgZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlIHdhcyBudWxsLiBEZWNpZGVk
CisgICAgICAgIG5vdCB0byBhZGQgYSBjYWxsIHRvIHJlbGVhc2VOb25OdWxsIHRvIHByZXNlcnZl
IHRoYXQgcG9zc2libHktaW5jb3JyZWN0IG9wdGltaXphdGlvbiwKKyAgICAgICAgaW5zdGVhZCBh
bGxvd2luZyB0aGUgd3JhcHBlciBmdW5jdGlvbiB0byBnZW5lcmF0ZSBjb2RlIHRvIGhhbmRsZSB0
aGUgbnVsbCBjYXNlLgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nlc3Npb25TdGF0ZV0pOiBVc2Ug
dGhlIE9iamVjdGl2ZS1DIGF1dG9yZWxlYXNlIGluc3RlYWQgb2YgYWRvcHROUworICAgICAgICBh
bmQgUmV0YWluUHRyJ3MgYXV0b3JlbGVhc2UuCisgICAgICAgICgtW1dLV2ViVmlldyBfc2Vzc2lv
blN0YXRlV2l0aEZpbHRlcjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9y
ZVNlc3Npb25TdGF0ZTphbmROYXZpZ2F0ZTpdKTogUmVtb3ZlZCBleHBsaWNpdCBudWxsIGNoZWNr
IGFuZAorICAgICAgICBsZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXIsIGJvdGggZG9uZSBieSB0aGUg
d3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBub3cuCisgICAgICAgICgtW1dLV2ViVmlldyBfaW5z
ZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlwZTpkYXRhOm9wdGlvbnM6Y29tcGxl
dGlvbjpdKToKKyAgICAgICAgUmVtb3ZlZCBleHBsaWNpdCBsZWFrUmVmL2F1dG9yZWxlYXNlIHBh
aXIsIGRvbmUgYnkgdGhlIHdyYXBwZXIgdGVtcGxhdGUgZnVuY3Rpb24gbm93LgorICAgICAgICAo
LVtXS1dlYlZpZXcgX2RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGVdKTogUmVwbGFjZWQgYSBsZWFr
UmVmL2F1dG9yZWxlYXNlIHBhaXIgd2l0aAorICAgICAgICB1c2Ugb2YgUmV0YWluUHRyJ3MgYXV0
b3JlbGVhc2UuCisgICAgICAgICgtW1dLV2ViVmlldyBfZmluZERlbGVnYXRlXSk6IERpdHRvLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9hcHBsaWNhdGlvbk1hbmlmZXN0
XSk6IFJlbW92ZWQgZXhwbGljaXQgbnVsbCBjaGVjaywKKyAgICAgICAgZG9uZSBieSB0aGUgd3Jh
cHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBub3cuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGRlZmF1bHREYXRhU3RvcmVdKTogUmVtb3ZlZCBleHBsaWNpdCBXZWJLaXQgbmFtZXNwYWNlCisg
ICAgICAgIGFuZCB1bm5lZWRlZCBjYWxsIHRvIGdldCgpLgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV0pOiBSZW1vdmVkIGV4cGxpY2l0IFdlYktp
dCBuYW1lc3BhY2UKKyAgICAgICAgYW5kIGxlYWtSZWYvYXV0b3JlbGVhc2UgcGFpciwgZG9uZSBi
eSB0aGUgd3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBub3cuCisgICAgICAgICgtW1dLV2Vic2l0
ZURhdGFTdG9yZSBodHRwQ29va2llU3RvcmVdKTogUmVtb3ZlZCBleHBsaWNpdCBXZWJLaXQgbmFt
ZXNwYWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1h
bmlmZXN0Lm1tOgorICAgICAgICAoK1tfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9u
TWFuaWZlc3RGcm9tSlNPTjptYW5pZmVzdFVSTDpkb2N1bWVudFVSTDpdKToKKyAgICAgICAgUmVt
b3ZlZCBleHBsaWNpdCBsZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXIsIGRvbmUgYnkgdGhlIHdyYXBw
ZXIgdGVtcGxhdGUgZnVuY3Rpb24gbm93LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6IERp
dHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBjb3B5
V2l0aFpvbmU6XSk6IFVzZSByZXRhaW4gaW5zdGVhZCBvZiBsZWFrUmVmOworICAgICAgICBzbGln
aHRseSBjbGVhcmVyIGZvciB3aGVuIHdlIGNvbnZlcnQgdG8gQVJDLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkLm1tOgorICAgICAgICAoK1tfV0tV
c2VyQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6XSk6IFJlbW92ZWQgZXhwbGljaXQgbGVha1Jl
Zi9hdXRvcmVsZWFzZSBwYWlyLAorICAgICAgICBkb25lIGJ5IHRoZSB3cmFwcGVyIHRlbXBsYXRl
IGZ1bmN0aW9uIG5vdy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZVBvbGljaWVzLm1tOgorICAgICAgICAoLVtfV0tXZWJzaXRlUG9saWNpZXMgd2Vic2l0ZURhdGFT
dG9yZV0pOiBSZW1vdmVkIGV4cGxpY2l0IG51bGwgY2hlY2ssIGRvbmUgYnkKKyAgICAgICAgdGhl
IHdyYXBwZXIgdGVtcGxhdGUgZnVuY3Rpb24gbm93LgorCisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOiBSZW1vdmVkCisg
ICAgICAgIGV4cGxpY2l0IG51bGwgY2hlY2ssIGRvbmUgYnkgdGhlIHdyYXBwZXIgdGVtcGxhdGUg
ZnVuY3Rpb24gbm93LgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTmF2aWdhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJy
b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcik6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRp
ZENvbW1pdE5hdmlnYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5p
c2hOYXZpZ2F0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
U2Vzc2lvblN0YXRlQ29kaW5nLm1tOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVTZXNzaW9uU3Rh
dGUpOiBSZW1vdmVkIGV4cGxpY2l0IGxlYWtSZWYvYXV0b3JlbGVhc2UgcGFpciwgZG9uZQorICAg
ICAgICBieSB0aGUgd3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBub3cuIEFsc28sIHRoZSBvbGQg
dmVyc2lvbiBleHBsaWNpdGx5IGRlcmVmZXJlbmNlZAorICAgICAgICBhbmQgd291bGQgbm90IHdv
cmsgd2hlbiB0aGUgcmVzdWx0IG9mIGVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZSB3YXMgbnVsbC4g
RGVjaWRlZAorICAgICAgICBub3QgdG8gYWRkIGEgY2FsbCB0byByZWxlYXNlTm9uTnVsbCB0byBw
cmVzZXJ2ZSB0aGF0IHBvc3NpYmx5LWluY29ycmVjdCBvcHRpbWl6YXRpb24sCisgICAgICAgIGlu
c3RlYWQgYWxsb3dpbmcgdGhlIHdyYXBwZXIgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgY29kZSB0byBo
YW5kbGUgdGhlIG51bGwgY2FzZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ciBjb25maWd1cmF0aW9uXSk6IFJlbW92ZWQgZXhwbGljaXQgV2ViS2l0IG5hbWVzcGFjZS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lLm1tOgorICAgICAgICAoK1tXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBsb29r
VXBGcmFtZUZyb21IYW5kbGU6XSk6IFJlbW92ZWQgZXhwbGljaXQgbnVsbCBjaGVjaywKKyAgICAg
ICAgZG9uZSBieSB0aGUgd3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBub3cuCisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGhpdFRlc3Q6XSk6IFJlbW92ZWQgZXhwbGljaXQgbGVh
a1JlZi9hdXRvcmVsZWFzZSBwYWlyLCBkb25lCisgICAgICAgIGJ5IHRoZSB3cmFwcGVyIHRlbXBs
YXRlIGZ1bmN0aW9uIG5vdy4gQWxzbywgdGhlIG9sZCB2ZXJzaW9uIGV4cGxpY2l0bHkgZGVyZWZl
cmVuY2VkCisgICAgICAgIGFuZCB3b3VsZCBub3Qgd29yayB3aGVuIHRoZSByZXN1bHQgb2YgaGl0
VGVzdCB3YXMgbnVsbC4gRGVjaWRlZCBub3QgdG8gYWRkIGEgY2FsbCB0bworICAgICAgICByZWxl
YXNlTm9uTnVsbCB0byBwcmVzZXJ2ZSB0aGF0IHBvc3NpYmx5LWluY29ycmVjdCBvcHRpbWl6YXRp
b24sIGluc3RlYWQgYWxsb3dpbmcgdGhlCisgICAgICAgIHdyYXBwZXIgZnVuY3Rpb24gdG8gZ2Vu
ZXJhdGUgY29kZSB0byBoYW5kbGUgdGhlIG51bGwgY2FzZS4KKyAgICAgICAgKC1bV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUgY2hpbGRGcmFtZXNdKTogUmVtb3ZlZCBleHBsaWNpdCBsZWFrUmVmL2F1
dG9yZWxlYXNlIHBhaXIsCisgICAgICAgIGRvbmUgYnkgdGhlIHdyYXBwZXIgdGVtcGxhdGUgZnVu
Y3Rpb24gbm93LgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBoYW5kbGVdKTog
RGl0dG8uCisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIF9wYXJlbnRGcmFtZV0p
OiBSZW1vdmVkIGV4cGxpY2l0IG51bGwgY2hlY2ssIGRvbmUgYnkgdGhlCisgICAgICAgIHdyYXBw
ZXIgdGVtcGxhdGUgZnVuY3Rpb24gbm93LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbToKKyAg
ICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCBub2RlSGFuZGxlXSk6IFJl
bW92ZWQgZXhwbGljaXQgbnVsbCBjaGVjayBhbmQKKyAgICAgICAgbGVha1JlZi9hdXRvcmVsZWFz
ZSBwYWlyLCBib3RoIGRvbmUgYnkgdGhlIHdyYXBwZXIgdGVtcGxhdGUgZnVuY3Rpb24gbm93Lgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbk5vZGVIYW5kbGUubW06CisgICAgICAgICgrW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUgbm9kZUhhbmRsZVdpdGhKU1ZhbHVlOmluQ29udGV4dDpdKTogRGl0dG8uCisgICAgICAg
ICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgaHRtbElGcmFtZUVsZW1lbnRDb250ZW50
RnJhbWVdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUg
SFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmVdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgZnJhbWVdKTogRGl0dG8uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luUmFuZ2VIYW5k
bGUubW06CisgICAgICAgICgrW1dLV2ViUHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlIHJhbmdlSGFu
ZGxlV2l0aEpTVmFsdWU6aW5Db250ZXh0Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJQcm9j
ZXNzUGx1Z0luUmFuZ2VIYW5kbGUgZnJhbWVdKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQu
bW06CisgICAgICAgICgrW1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIHdvcmxkXSk6IERp
dHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBtYWluRnJhbWVdKTogRGl0dG8u
CisgICAgICAgICgrW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBs
b29rVXBCcm93c2luZ0NvbnRleHRGcm9tSGFuZGxlOl0pOiBEaXR0by4KKwogMjAxOC0wOC0xOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBDb25zb2xp
ZGF0ZSBpbmxpbmUgIndyYXBwZXIiIGZ1bmN0aW9ucyBpbiBXZWJLaXQgQVBJIGludG8gZnVuY3Rp
b24gdGVtcGxhdGVzIGFuZCBXcmFwcGVyVHJhaXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCmluZGV4IDJlYjM2YjU2MmFi
ZmUyNjU2NWRiNDFmOTIyNzkyOTAxMzYwZTcxNmIuLjE5OTRmM2RjOWQ0ZmNmZTAxMzA1NzNhOGNh
YmNjYTU3Y2E1NGM2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCkBAIC0xNDMsMTIgKzE0Myw3IEBAIGJvb2wgV0tQ
YWdlSXNVUkxLbm93bkhTVFNIb3N0KFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiB1cmwpCiBXS05h
dmlnYXRpb24gKldLUGFnZUxvYWRVUkxSZXF1ZXN0UmV0dXJuaW5nTmF2aWdhdGlvbihXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3RSZWYpCiB7CiAgICAgYXV0byBy
ZXNvdXJjZVJlcXVlc3QgPSB0b0ltcGwodXJsUmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgp
OwotICAgIGF1dG8gbmF2aWdhdGlvbiA9IHRvSW1wbChwYWdlUmVmKS0+bG9hZFJlcXVlc3QoV1RG
TW92ZShyZXNvdXJjZVJlcXVlc3QpKTsKLQotICAgIGlmICghbmF2aWdhdGlvbikKLSAgICAgICAg
cmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbQVBJOjp3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtS
ZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiB3cmFwcGVyKHRvSW1wbChwYWdlUmVmKS0+
bG9hZFJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpKSk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQmFja0ZvcndhcmRM
aXN0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQmFja0ZvcndhcmRM
aXN0Lm1tCmluZGV4IDJjOTY5NjU0NzgwMjlkY2QyN2VjNTMxMDM2ZDJhNmE1YzhhZTIzYTkuLjc5
ZTVkMjM5YjliODBjZjY3NDE3ZTkzZjg4OGM5OTk2MjAwNGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3QubW0KQEAg
LTQ0LDQyICs0NCwzNCBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9
CiAKLXN0YXRpYyBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKnRvV0tCYWNrRm9yd2FyZExpc3RJdGVt
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0pCi17Ci0gICAgaWYgKCFpdGVtKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIHdyYXBwZXIoKml0ZW0pOwotfQotCiAtIChXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0gKiljdXJyZW50SXRlbQogewotICAgIHJldHVybiB0b1dLQmFja0Zv
cndhcmRMaXN0SXRlbShfbGlzdC0+Y3VycmVudEl0ZW0oKSk7CisgICAgcmV0dXJuIHdyYXBwZXIo
X2xpc3QtPmN1cnJlbnRJdGVtKCkpOwogfQogCiAtIChXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKili
YWNrSXRlbQogewotICAgIHJldHVybiB0b1dLQmFja0ZvcndhcmRMaXN0SXRlbShfbGlzdC0+YmFj
a0l0ZW0oKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoX2xpc3QtPmJhY2tJdGVtKCkpOwogfQogCiAt
IChXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilmb3J3YXJkSXRlbQogewotICAgIHJldHVybiB0b1dL
QmFja0ZvcndhcmRMaXN0SXRlbShfbGlzdC0+Zm9yd2FyZEl0ZW0oKSk7CisgICAgcmV0dXJuIHdy
YXBwZXIoX2xpc3QtPmZvcndhcmRJdGVtKCkpOwogfQogCiAtIChXS0JhY2tGb3J3YXJkTGlzdEl0
ZW0gKilpdGVtQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4CiB7Ci0gICAgcmV0dXJuIHRvV0tCYWNr
Rm9yd2FyZExpc3RJdGVtKF9saXN0LT5pdGVtQXRJbmRleChpbmRleCkpOworICAgIHJldHVybiB3
cmFwcGVyKF9saXN0LT5pdGVtQXRJbmRleChpbmRleCkpOwogfQogCiAtIChOU0FycmF5ICopYmFj
a0xpc3QKIHsKLSAgICByZXR1cm4gW3dyYXBwZXIoX2xpc3QtPmJhY2tMaXN0KCkubGVha1JlZigp
KSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoX2xpc3QtPmJhY2tMaXN0KCkpOwog
fQogCiAtIChOU0FycmF5ICopZm9yd2FyZExpc3QKIHsKLSAgICByZXR1cm4gW3dyYXBwZXIoX2xp
c3QtPmZvcndhcmRMaXN0KCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdy
YXBwZXIoX2xpc3QtPmZvcndhcmRMaXN0KCkpOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3Qg
cHJvdG9jb2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KaW5kZXggNTYzNTVh
ZjkzODM0ODE2ODdjNGE1ODBmZjQzMWU0ZDgzMDNhOWU3NS4uNGI0MWI0Mzk2OGMyZThiMDA1OWFh
NTFkNDM4YWUzYTMzY2JlN2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KQEAgLTYzLDE0ICs2
MywxMyBAQCAtICh2b2lkKWRlYWxsb2MKICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3RvcmUKIHsK
ICAgICBjb25zdCBib29sIGxlZ2FjeUZpbGVuYW1lID0gZmFsc2U7Ci0gICAgcmV0dXJuIFdlYktp
dDo6d3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmUobGVnYWN5
RmlsZW5hbWUpKTsKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3Jl
OjpkZWZhdWx0U3RvcmUobGVnYWN5RmlsZW5hbWUpKTsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKXN0
b3JlV2l0aFVSTDooTlNVUkwgKil1cmwKIHsKICAgICBjb25zdCBib29sIGxlZ2FjeUZpbGVuYW1l
ID0gZmFsc2U7Ci0gICAgUmVmPEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU+IHN0b3JlID0gQVBJ
OjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0aCh1cmwuYWJzb2x1dGVVUkwuZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uLCBsZWdhY3lGaWxlbmFtZSk7Ci0gICAgcmV0dXJuIFdlYktp
dDo6d3JhcHBlcihzdG9yZS5sZWFrUmVmKCkpOworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29u
dGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJsLmFic29sdXRlVVJMLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbiwgbGVnYWN5RmlsZW5hbWUpKTsKIH0KIAogLSAodm9pZCljb21waWxl
Q29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29k
ZWRDb250ZW50UnVsZUxpc3Q6KE5TU3RyaW5nICopZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tDb250ZW50UnVsZUxpc3QgKiwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcgpAQCAtOTQsNyArOTMsNyBAQCAtICh2b2lkKV9jb21waWxlQ29udGVu
dFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250
ZQogICAgICAgICAgICAgLy8gV2Ugd2FudCB0byB1c2UgZXJyb3IubWVzc2FnZSwgYnV0IGhlcmUg
d2Ugd2FudCB0byBvbmx5IHBhc3Mgb24gQ29tcGlsZUZhaWxlZCB3aXRoIHVzZXJJbmZvIGZyb20g
dGhlIHN0ZDo6ZXJyb3JfY29kZS4KICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJv
ckNvbnRlbnRSdWxlTGlzdFN0b3JlQ29tcGlsZUZhaWxlZCB1c2VySW5mbzp1c2VySW5mb10pOwog
ICAgICAgICB9Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6d3JhcHBlcigqY29u
dGVudFJ1bGVMaXN0LmdldCgpKSwgbmlsKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3Jh
cHBlcigqY29udGVudFJ1bGVMaXN0KSwgbmlsKTsKICAgICB9KTsKIH0KIApAQCAtMTA4LDcgKzEw
Nyw3IEBAIC0gKHZvaWQpbG9va1VwQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kCiAgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBj
b2RlOndrRXJyb3IgdXNlckluZm86dXNlckluZm9dKTsKICAgICAgICAgfQogCi0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6d3JhcHBlcigqY29udGVudFJ1bGVMaXN0LmdldCgpKSwg
bmlsKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcigqY29udGVudFJ1bGVMaXN0
KSwgbmlsKTsKICAgICB9KTsKIH0KIApAQCAtMTgwLDE0ICsxNzksMTMgQEAgLSAodm9pZClfY29t
cGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBl
bmNvZGVkQ29udGUKICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3RvcmVXaXRoTGVnYWN5RmlsZW5h
bWUKIHsKICAgICBjb25zdCBib29sIGxlZ2FjeUZpbGVuYW1lID0gdHJ1ZTsKLSAgICByZXR1cm4g
V2ViS2l0Ojp3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZShs
ZWdhY3lGaWxlbmFtZSkpOworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0
U3RvcmU6OmRlZmF1bHRTdG9yZShsZWdhY3lGaWxlbmFtZSkpOwogfQogCiArIChpbnN0YW5jZXR5
cGUpc3RvcmVXaXRoVVJMQW5kTGVnYWN5RmlsZW5hbWU6KE5TVVJMICopdXJsCiB7CiAgICAgY29u
c3QgYm9vbCBsZWdhY3lGaWxlbmFtZSA9IHRydWU7Ci0gICAgUmVmPEFQSTo6Q29udGVudFJ1bGVM
aXN0U3RvcmU+IHN0b3JlID0gQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0
aCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uLCBsZWdhY3lGaWxlbmFt
ZSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihzdG9yZS5sZWFrUmVmKCkpOworICAgIHJl
dHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJs
LmFic29sdXRlVVJMLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgbGVnYWN5RmlsZW5hbWUpKTsK
IH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRnJhbWVJbmZvLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJh
bWVJbmZvLm1tCmluZGV4IGJlNmViM2Y3ODQzMmU5OTE3NjRiOTU5OTQ2ZjA2MzgzZDAwMGFhMTMu
LjNkMWE2ZGU4NzNlMjhkM2ZjODFlZDBkYzUwNjI4MGU4MTU3Y2JmY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0KQEAgLTg2LDcgKzg2
LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLRnJhbWVJbmZvIChXS1ByaXZhdGUpCiAKIC0gKF9XS0Zy
YW1lSGFuZGxlICopX2hhbmRsZQogewotICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX2ZyYW1l
SW5mby0+aGFuZGxlKCkpOworICAgIHJldHVybiB3cmFwcGVyKF9mcmFtZUluZm8tPmhhbmRsZSgp
KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCmluZGV4IDBhMDg2M2E4MGY2MWM2NjIyYTIxZGJlZDcy
Zjk2N2JmZDg4NmEzMWYuLjU1MzI0YTFiNmI4NGM0NzE2YWNjZTQ3YzE2ZmU0NzQyM2Q3NWM1OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29r
aWVTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQ
Q29va2llU3RvcmUubW0KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIGNvb2tpZXNEaWRDaGFuZ2UoQVBJOjpIVFRQQ29va2llU3RvcmUmIGNvb2tpZVN0b3JlKSBm
aW5hbAogICAgIHsKLSAgICAgICAgW21fb2JzZXJ2ZXIuZ2V0KCkgY29va2llc0RpZENoYW5nZUlu
Q29va2llU3RvcmU6V2ViS2l0Ojp3cmFwcGVyKGNvb2tpZVN0b3JlKV07CisgICAgICAgIFttX29i
c2VydmVyIGNvb2tpZXNEaWRDaGFuZ2VJbkNvb2tpZVN0b3JlOndyYXBwZXIoY29va2llU3RvcmUp
XTsKICAgICB9CiAKICAgICBXZWFrT2JqQ1B0cjxpZDxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVy
Pj4gbV9vYnNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCmluZGV4IDNmOGZmNjk1YjIyNDI1Y2UyN2VlZTlh
YWI1ZjhlM2NjZjkzYjdmZDEuLmM3ZDU5MDU2MzI5ODJkY2E5OWNlYzM5OGQ5OThjYWFmYTgyYTE5
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmln
YXRpb25BY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkFjdGlvbi5tbQpAQCAtMTM3LDE2ICsxMzcsMTIgQEAgLSAoTlNTdHJpbmcgKilk
ZXNjcmlwdGlvbgogCiAtIChXS0ZyYW1lSW5mbyAqKXNvdXJjZUZyYW1lCiB7Ci0gICAgaWYgKEFQ
STo6RnJhbWVJbmZvKiBmcmFtZUluZm8gPSBfbmF2aWdhdGlvbkFjdGlvbi0+c291cmNlRnJhbWUo
KSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXIoKmZyYW1lSW5mbyk7Ci0gICAgcmV0dXJuIG5pbDsK
KyAgICByZXR1cm4gd3JhcHBlcihfbmF2aWdhdGlvbkFjdGlvbi0+c291cmNlRnJhbWUoKSk7CiB9
CiAKIC0gKFdLRnJhbWVJbmZvICopdGFyZ2V0RnJhbWUKIHsKLSAgICBpZiAoQVBJOjpGcmFtZUlu
Zm8qIGZyYW1lSW5mbyA9IF9uYXZpZ2F0aW9uQWN0aW9uLT50YXJnZXRGcmFtZSgpKQotICAgICAg
ICByZXR1cm4gd3JhcHBlcigqZnJhbWVJbmZvKTsKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVy
biB3cmFwcGVyKF9uYXZpZ2F0aW9uQWN0aW9uLT50YXJnZXRGcmFtZSgpKTsKIH0KIAogLSAoV0tO
YXZpZ2F0aW9uVHlwZSluYXZpZ2F0aW9uVHlwZQpAQCAtMjI2LDEwICsyMjIsNyBAQCAtIChCT09M
KV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzCiAKIC0gKF9XS1VzZXJJbml0aWF0ZWRBY3Rpb24gKilf
dXNlckluaXRpYXRlZEFjdGlvbgogewotICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGlvbiA9IF9u
YXZpZ2F0aW9uQWN0aW9uLT51c2VySW5pdGlhdGVkQWN0aW9uKCk7Ci0gICAgaWYgKHVzZXJJbml0
aWF0ZWRBY3Rpb24pCi0gICAgICAgIHJldHVybiB3cmFwcGVyKCp1c2VySW5pdGlhdGVkQWN0aW9u
KTsKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiB3cmFwcGVyKF9uYXZpZ2F0aW9uQWN0aW9u
LT51c2VySW5pdGlhdGVkQWN0aW9uKCkpOwogfQogCiAtIChCT09MKV9pc1JlZGlyZWN0CkBAIC0y
MzksMTAgKzIzMiw3IEBAIC0gKEJPT0wpX2lzUmVkaXJlY3QKIAogLSAoV0tOYXZpZ2F0aW9uICop
X21haW5GcmFtZU5hdmlnYXRpb24KIHsKLSAgICBpZiAoYXV0byogbmF2aWdhdGlvbiA9IF9uYXZp
Z2F0aW9uQWN0aW9uLT5tYWluRnJhbWVOYXZpZ2F0aW9uKCkpCi0gICAgICAgIHJldHVybiB3cmFw
cGVyKCpuYXZpZ2F0aW9uKTsKLSAgICAKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiB3cmFw
cGVyKF9uYXZpZ2F0aW9uQWN0aW9uLT5tYWluRnJhbWVOYXZpZ2F0aW9uKCkpOwogfQogCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3Bl
blBhbmVsUGFyYW1ldGVycy5tbQppbmRleCA4ZDI1MDliMzM1ZmY2NWY2MmM0NmFjNWZhN2Q4MTZm
ODg0NWVkMTU2Li4zZGJkNTQ1MjJhNjVkYjc0MWIwNmJmNDdiNWNhMDM3NWYxNGU5MjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5Q
YW5lbFBhcmFtZXRlcnMubW0KQEAgLTU1LDEyICs1NSwxMiBAQCBAaW1wbGVtZW50YXRpb24gV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzIChXS1ByaXZhdGUpCiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KilfYWNjZXB0ZWRNSU1FVHlwZXMKIHsKLSAgICByZXR1cm4gW3dyYXBwZXIoX29wZW5QYW5lbFBh
cmFtZXRlcnMtPmFjY2VwdE1JTUVUeXBlcygpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiB3cmFwcGVyKF9vcGVuUGFuZWxQYXJhbWV0ZXJzLT5hY2NlcHRNSU1FVHlwZXMoKSk7
CiB9CiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucwog
ewotICAgIHJldHVybiBbd3JhcHBlcihfb3BlblBhbmVsUGFyYW1ldGVycy0+YWNjZXB0RmlsZUV4
dGVuc2lvbnMoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gd3JhcHBlcihf
b3BlblBhbmVsUGFyYW1ldGVycy0+YWNjZXB0RmlsZUV4dGVuc2lvbnMoKSk7CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMu
bW0KaW5kZXggYmU0MzI4NWE1ZjJhZjA2NzVlNWIyNDIwM2E5NDUxNzcyMzc1ZWIwNi4uYzQ5YjQ3
NjhhMmQ4MDFlMWEyOTlmNGM2OWYwYjM3YzhiZDIwYWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTk3LDcgKzk3LDcg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogCiAtIChp
ZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKIHsKLSAgICByZXR1cm4gd3JhcHBlcihfcHJl
ZmVyZW5jZXMtPmNvcHkoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBbd3JhcHBlcihfcHJlZmVy
ZW5jZXMtPmNvcHkoKSkgcmV0YWluXTsKIH0KIAogLSAoQ0dGbG9hdCltaW5pbXVtRm9udFNpemUK
QEAgLTUzMCw3ICs1MzAsNyBAQCAtICh2b2lkKV9zZXRGaXhlZFBpdGNoRm9udEZhbWlseTooTlNT
dHJpbmcgKilmaXhlZFBpdGNoRm9udEZhbWlseQogKyAoTlNBcnJheTxfV0tFeHBlcmltZW50YWxG
ZWF0dXJlICo+ICopX2V4cGVyaW1lbnRhbEZlYXR1cmVzCiB7CiAgICAgYXV0byBmZWF0dXJlcyA9
IFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmV4cGVyaW1lbnRhbEZlYXR1cmVzKCk7Ci0gICAgcmV0
dXJuIFt3cmFwcGVyKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGZlYXR1cmVzKSkubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRl
KFdURk1vdmUoZmVhdHVyZXMpKSk7CiB9CiAKIC0gKEJPT0wpX2lzRW5hYmxlZEZvckZlYXR1cmU6
KF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKilmZWF0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGFiMzE5ZTc5ZWRkMTc5
MTVmZTliMTViNjlhOGRiY2FhYjVkZTEyNjMuLmUzOTBiOWQzNTU2NDQ1NTZhMTU3MmY2N2E3MDYx
YjU0YjJiNmRhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0xMjYsNyArMTI2LDcgQEAgLSAoTlNTdHJpbmcgKilkZXNj
cmlwdGlvbgogCiAtIChfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gKilfY29uZmlndXJhdGlv
bgogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+Y29uZmlndXJhdGlvbigpLmNv
cHkoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+Y29uZmln
dXJhdGlvbigpLmNvcHkoKSk7CiB9CiAKIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNr
SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVt
ZVRhc2tJbnRlcm5hbC5oCmluZGV4IDU3OTc1ODBkMjI0NTYwZWM4ZTdhNjRmM2VhNTU3YTBlMGVl
ZjJmNDYuLjUyYjg3NDg0OTIwYjhlMDA0MmFjOTAzNzdkMzQwYzJkZDJmODhmOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2tJbnRl
cm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVt
ZVRhc2tJbnRlcm5hbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM1LDExICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1p
bmxpbmUgaWQ8V0tVUkxTY2hlbWVUYXNrPiB3cmFwcGVyKEFQSTo6VVJMU2NoZW1lVGFzayYgdXJs
U2NoZW1lVGFzaykKLXsKLSAgICBBU1NFUlQoW3VybFNjaGVtZVRhc2sud3JhcHBlcigpIGlzS2lu
ZE9mQ2xhc3M6W1dLVVJMU2NoZW1lVGFza0ltcGwgY2xhc3NdXSk7Ci0gICAgcmV0dXJuIChpZDxX
S1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sud3JhcHBlcigpOwotfQordGVtcGxhdGU8PiBz
dHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OlVSTFNjaGVtZVRhc2s+IHsKKyAgICB1c2luZyBXcmFw
cGVyQ2xhc3MgPSBXS1VSTFNjaGVtZVRhc2tJbXBsOworfTsKIAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQppbmRleCAxNzQwYTIy
ZDMwNjg4OThlNzgyZGZiYjAxNmIwMmMzNzc1NTM3YTQyLi45Y2Y2NjgxYWFiMzkxYzM1YjYzNzkw
N2IxMTEwODZmODI3OTc2ZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KQEAgLTEwMiw3ICsxMDIsNyBAQCAtIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1Vz
ZXJTY3JpcHRJbgogCiAtIChfV0tVc2VyQ29udGVudFdvcmxkICopX3VzZXJDb250ZW50V29ybGQK
IHsKLSAgICByZXR1cm4gQVBJOjp3cmFwcGVyKF91c2VyU2NyaXB0LT51c2VyQ29udGVudFdvcmxk
KCkpOworICAgIHJldHVybiB3cmFwcGVyKF91c2VyU2NyaXB0LT51c2VyQ29udGVudFdvcmxkKCkp
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCA2Y2I2MDA5M2NiMDk2OTE3MGViODlhZjI1NGM2OGFjZTQ1NmY4NWQ3Li5m
MDIzMDE4MTNlMDJhZjMzNjJiZmM1YjNjNDdlMzlkYWZkMWM0ZjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTg1NywxMSArODU3LDcg
QEAgLSAodm9pZClfc2V0SWNvbkxvYWRpbmdEZWxlZ2F0ZTooaWQ8X1dLSWNvbkxvYWRpbmdEZWxl
Z2F0ZT4paWNvbkxvYWRpbmdEZWxlZ2F0ZQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdl
LT5sb2FkUmVxdWVzdChyZXF1ZXN0KTsKLSAgICBpZiAoIW5hdmlnYXRpb24pCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0KLSAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBh
dXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRSZXF1ZXN0KHJlcXVl
c3QpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFs
bG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRBY2Nlc3NVUkwKQEAgLTg3MiwxMSAr
ODY4LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFsbG93
aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWQKICAgICBpZiAoIVtyZWFkQWNjZXNzVVJM
IGlzRmlsZVVSTF0pCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVu
dEV4Y2VwdGlvbiBmb3JtYXQ6QCIlQCBpcyBub3QgYSBmaWxlIFVSTCIsIHJlYWRBY2Nlc3NVUkxd
OwogCi0gICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPmxvYWRGaWxlKFtVUkwgX3dlYl9vcmln
aW5hbERhdGFBc1dURlN0cmluZ10sIFtyZWFkQWNjZXNzVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNX
VEZTdHJpbmddKTsKLSAgICBpZiAoIW5hdmlnYXRpb24pCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07
CisgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRGaWxlKFtVUkwgX3dlYl9vcmlnaW5hbERh
dGFBc1dURlN0cmluZ10sIFtyZWFkQWNjZXNzVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJp
bmddKSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAq
KXN0cmluZyBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKQEAgLTg4OCwyMCArODgwLDEyIEBAIC0g
KFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBiYXNlVVJM
OihOU1VSTCAqKWJhc2VVUkwKIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZERhdGE6KE5TRGF0YSAq
KWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1l
OihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VV
UkwKIHsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBj
aGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcpOwotICAgIGlmICgh
bmF2aWdhdGlvbikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbd3JhcHBlcigq
bmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gd3JhcHBlcihf
cGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyks
IGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwu
YWJzb2x1dGVTdHJpbmcpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKLSAgICBhdXRvIG5hdmln
YXRpb24gPSBfcGFnZS0+Z29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtLl9pdGVtKTsKLSAgICBpZiAo
IW5hdmlnYXRpb24pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1cm4gW3dyYXBwZXIo
Km5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIo
X3BhZ2UtPmdvVG9CYWNrRm9yd2FyZEl0ZW0oaXRlbS5faXRlbSkpOwogfQogCiAtIChOU1N0cmlu
ZyAqKXRpdGxlCkBAIC05NTQsMjAgKzkzOCwxMiBAQCAtIChCT09MKWNhbkdvRm9yd2FyZAogCiAt
IChXS05hdmlnYXRpb24gKilnb0JhY2sKIHsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+
Z29CYWNrKCk7Ci0gICAgaWYgKCFuYXZpZ2F0aW9uKQotICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb0JhY2soKSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlv
biAqKWdvRm9yd2FyZAogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5nb0ZvcndhcmQo
KTsKLSAgICBpZiAoIW5hdmlnYXRpb24pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1
cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIHdyYXBwZXIoX3BhZ2UtPmdvRm9yd2FyZCgpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICop
cmVsb2FkCkBAIC05NzYsMjAgKzk1MiwxMiBAQCAtIChXS05hdmlnYXRpb24gKilyZWxvYWQKICAg
ICBpZiAobGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRXhwaXJl
ZE9ubHlSZWxvYWRCZWhhdmlvcikpCiAgICAgICAgIHJlbG9hZE9wdGlvbnMgfD0gV2ViQ29yZTo6
UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKIAotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdl
LT5yZWxvYWQocmVsb2FkT3B0aW9ucyk7Ci0gICAgaWYgKCFuYXZpZ2F0aW9uKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkg
YXV0b3JlbGVhc2VdOworICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZWxvYWQocmVsb2FkT3B0
aW9ucykpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilyZWxvYWRGcm9tT3JpZ2luCiB7Ci0gICAg
YXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkZy
b21PcmlnaW4pOwotICAgIGlmICghbmF2aWdhdGlvbikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQot
ICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6
RnJvbU9yaWdpbikpOwogfQogCiAtICh2b2lkKXN0b3BMb2FkaW5nCkBAIC0xMjQ1LDE2ICsxMjEz
LDE2IEBAIC0gKHZvaWQpX2RpZEluc2VydEF0dGFjaG1lbnQ6KE5TU3RyaW5nICopaWRlbnRpZmll
ciB3aXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjCiB7CiAgICAgaWQgPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+IHVpRGVsZWdhdGUgPSAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KXNlbGYuVUlEZWxl
Z2F0ZTsKICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzpkaWRJbnNlcnRBdHRhY2htZW50OndpdGhTb3VyY2U6KV0pCi0gICAgICAgIFt1aURl
bGVnYXRlIF93ZWJWaWV3OnNlbGYgZGlkSW5zZXJ0QXR0YWNobWVudDpbd3JhcHBlcihBUEk6OkF0
dGFjaG1lbnQ6OmNyZWF0ZShpZGVudGlmaWVyLCAqX3BhZ2UpLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdIHdpdGhTb3VyY2U6c291cmNlXTsKKyAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2Vs
ZiBkaWRJbnNlcnRBdHRhY2htZW50OndyYXBwZXIoQVBJOjpBdHRhY2htZW50OjpjcmVhdGUoaWRl
bnRpZmllciwgKl9wYWdlKSkgd2l0aFNvdXJjZTpzb3VyY2VdOwogICAgIGVsc2UgaWYgKFt1aURl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkSW5zZXJ0QXR0
YWNobWVudDopXSkKLSAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBkaWRJbnNlcnRB
dHRhY2htZW50Olt3cmFwcGVyKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpf
cGFnZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbdWlEZWxlZ2F0ZSBfd2Vi
VmlldzpzZWxmIGRpZEluc2VydEF0dGFjaG1lbnQ6d3JhcHBlcihBUEk6OkF0dGFjaG1lbnQ6OmNy
ZWF0ZShpZGVudGlmaWVyLCAqX3BhZ2UpKV07CiB9CiAKIC0gKHZvaWQpX2RpZFJlbW92ZUF0dGFj
aG1lbnQ6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewogICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPiB1aURlbGVnYXRlID0gKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilzZWxmLlVJRGVsZWdh
dGU7CiAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dl
YlZpZXc6ZGlkUmVtb3ZlQXR0YWNobWVudDopXSkKLSAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZp
ZXc6c2VsZiBkaWRSZW1vdmVBdHRhY2htZW50Olt3cmFwcGVyKEFQSTo6QXR0YWNobWVudDo6Y3Jl
YXRlKGlkZW50aWZpZXIsICpfcGFnZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV1dOworICAgICAg
ICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIGRpZFJlbW92ZUF0dGFjaG1lbnQ6d3JhcHBlcihB
UEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZShpZGVudGlmaWVyLCAqX3BhZ2UpKV07CiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtNDIyMywyMCArNDE5MSwxMiBAQCAt
ICh2b2lkKV9sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVS
TDooTlNVUkwgKiliYXNlVVJMIGZvcgogCiAtIChXS05hdmlnYXRpb24gKilfbG9hZERhdGE6KE5T
RGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAq
KWJhc2VVUkwgdXNlckRhdGE6KGlkKXVzZXJEYXRhCiB7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0g
X3BhZ2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMp
LCBkYXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJM
LmFic29sdXRlU3RyaW5nLCBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKHVzZXJEYXRh
KS5wdHIoKSk7Ci0gICAgaWYgKCFuYXZpZ2F0aW9uKQotICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVu
Y29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZywgV2ViS2l0OjpPYmpDT2JqZWN0R3Jh
cGg6OmNyZWF0ZSh1c2VyRGF0YSkucHRyKCkpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopX2xv
YWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHM6
KEJPT0wpc2hvdWxkT3BlbkV4dGVybmFsVVJMcwogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9w
YWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzID8gV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgOiBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAgaWYgKCFu
YXZpZ2F0aW9uKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpu
YXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiB3cmFwcGVyKF9w
YWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzID8gV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgOiBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdykpOwogfQogCiAtIChO
U0FycmF5ICopX2NlcnRpZmljYXRlQ2hhaW4KQEAgLTQzMTQsMjAgKzQyNzQsMTIgQEAgLSAodm9p
ZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzCiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRXaXRo
b3V0Q29udGVudEJsb2NrZXJzCiB7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9h
ZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpOwotICAgIGlm
ICghbmF2aWdhdGlvbikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbd3JhcHBl
cigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gd3JhcHBl
cihfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RGlzYWJsZUNvbnRlbnRCbG9j
a2VycykpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilfcmVsb2FkRXhwaXJlZE9ubHkKIHsKLSAg
ICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6
RXhwaXJlZE9ubHkpOwotICAgIGlmICghbmF2aWdhdGlvbikKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlv
bjo6RXhwaXJlZE9ubHkpKTsKIH0KIAogLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5k
UmVzZXRTdGF0ZQpAQCAtNDQwNCwxNSArNDM1NiwxMyBAQCAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5
RGlkR2V0U3BlYWtTZWxlY3Rpb25Db250ZW50OihOU1N0cmluZyAqKWNvbnRlbnQKIAogLSAoTlNE
YXRhICopX3Nlc3Npb25TdGF0ZURhdGEKIHsKLSAgICBXZWJLaXQ6OlNlc3Npb25TdGF0ZSBzZXNz
aW9uU3RhdGUgPSBfcGFnZS0+c2Vzc2lvblN0YXRlKCk7Ci0KICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgbm90IHVzZSB0aGUgbGVnYWN5IHNlc3Npb24gc3RhdGUgZW5jb2Rlci4KLSAgICByZXR1
cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0
ZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoV2ViS2l0Ojpl
bmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoX3BhZ2UtPnNlc3Npb25TdGF0ZSgpKSk7CiB9CiAKIC0g
KF9XS1Nlc3Npb25TdGF0ZSAqKV9zZXNzaW9uU3RhdGUKIHsKLSAgICByZXR1cm4gYWRvcHROUyhb
W19XS1Nlc3Npb25TdGF0ZSBhbGxvY10gX2luaXRXaXRoU2Vzc2lvblN0YXRlOl9wYWdlLT5zZXNz
aW9uU3RhdGUoKV0pLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIFtbW19XS1Nlc3Npb25TdGF0
ZSBhbGxvY10gX2luaXRXaXRoU2Vzc2lvblN0YXRlOl9wYWdlLT5zZXNzaW9uU3RhdGUoKV0gYXV0
b3JlbGVhc2VdOwogfQogCiAtIChfV0tTZXNzaW9uU3RhdGUgKilfc2Vzc2lvblN0YXRlV2l0aEZp
bHRlcjooQk9PTCAoXikoV0tCYWNrRm9yd2FyZExpc3RJdGVtICppdGVtKSlmaWx0ZXIKQEAgLTQ0
MjQsNyArNDM3NCw3IEBAIC0gKF9XS1Nlc3Npb25TdGF0ZSAqKV9zZXNzaW9uU3RhdGVXaXRoRmls
dGVyOihCT09MICheKShXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKml0CiAgICAgICAgIHJldHVybiAo
Ym9vbClmaWx0ZXIod3JhcHBlcihpdGVtKSk7CiAgICAgfSk7CiAKLSAgICByZXR1cm4gYWRvcHRO
UyhbW19XS1Nlc3Npb25TdGF0ZSBhbGxvY10gX2luaXRXaXRoU2Vzc2lvblN0YXRlOnNlc3Npb25T
dGF0ZV0pLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIFtbW19XS1Nlc3Npb25TdGF0ZSBhbGxv
Y10gX2luaXRXaXRoU2Vzc2lvblN0YXRlOnNlc3Npb25TdGF0ZV0gYXV0b3JlbGVhc2VdOwogfQog
CiAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGE6KE5TRGF0YSAqKXNlc3Npb25T
dGF0ZURhdGEKQEAgLTQ0MzksMTEgKzQzODksNyBAQCAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZURhdGE6KE5TRGF0YSAqKXNlc3Npb25TdGF0ZURhdGEKIAogLSAoV0tOYXZpZ2F0aW9u
ICopX3Jlc3RvcmVTZXNzaW9uU3RhdGU6KF9XS1Nlc3Npb25TdGF0ZSAqKXNlc3Npb25TdGF0ZSBh
bmROYXZpZ2F0ZTooQk9PTCluYXZpZ2F0ZQogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdl
LT5yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShzZXNzaW9uU3RhdGUtPl9zZXNzaW9uU3RhdGUsIG5h
dmlnYXRlKTsKLSAgICBpZiAoIW5hdmlnYXRpb24pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAg
ICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Cisg
ICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKHNlc3Npb25T
dGF0ZS0+X3Nlc3Npb25TdGF0ZSwgbmF2aWdhdGUpKTsKIH0KIAogLSAodm9pZClfY2xvc2UKQEAg
LTQ0NjMsNyArNDQwOSw3IEBAIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdp
dGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZW50VHlwCiAgICAgICAgICAgICBj
YXB0dXJlZEhhbmRsZXIoZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25l
KTsKICAgICB9KTsKIAotICAgIHJldHVybiBbd3JhcHBlcihBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0
ZShpZGVudGlmaWVyLCAqX3BhZ2UpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biB3cmFwcGVyKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpfcGFnZSkpOwog
I2Vsc2UKICAgICByZXR1cm4gbmlsOwogI2VuZGlmCkBAIC00NzQ3LDcgKzQ2OTMsNyBAQCAtIChp
ZCA8X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4pX2RpYWdub3N0aWNMb2dnaW5nRGVsZWdh
dGUKICAgICBpZiAoIWRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KQogICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgcmV0dXJuIFtzdGF0aWNfY2FzdDxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50Jj4oKmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KS5kZWxlZ2F0ZSgpLmxlYWtSZWYoKSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdDo6RGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQmPigqZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQpLmRlbGVnYXRlKCkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAodm9pZClfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZTooaWQ8X1dL
RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4pZGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZQpAQCAt
NDc2MSw3ICs0NzA3LDcgQEAgLSAodm9pZClfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZToo
aWQ8X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4pZGlhZ25vc3QKIAogLSAoaWQgPF9XS0Zp
bmREZWxlZ2F0ZT4pX2ZpbmREZWxlZ2F0ZQogewotICAgIHJldHVybiBbc3RhdGljX2Nhc3Q8V2Vi
S2l0OjpGaW5kQ2xpZW50Jj4oX3BhZ2UtPmZpbmRDbGllbnQoKSkuZGVsZWdhdGUoKS5sZWFrUmVm
KCkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRDbGll
bnQmPihfcGFnZS0+ZmluZENsaWVudCgpKS5kZWxlZ2F0ZSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKHZvaWQpX3NldEZpbmREZWxlZ2F0ZTooaWQ8X1dLRmluZERlbGVnYXRlPilmaW5kRGVsZWdh
dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggOGE4MDUyZDNmMGU3MzMyY2E2MzZiZTdlZGJi
ZWVhMmU1ZTMzNjQ0NC4uYmYxODdmZmNiNjlmZDYyNDYzMjY2OTE0Y2E1MjQ4ZWRjZjhjMGU4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTg0OSw5ICs4NDksNyBAQCAtICh2b2lkKV9zZXRD
b250cm9sbGVkQnlBdXRvbWF0aW9uOihCT09MKWNvbnRyb2xsZWRCeUF1dG9tYXRpb24KIAogLSAo
X1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKV9hcHBsaWNhdGlvbk1hbmlmZXN0CiB7Ci0gICAgaWYg
KGF1dG8qIG1hbmlmZXN0ID0gX3BhZ2VDb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbk1hbmlmZXN0
KCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVyKCptYW5pZmVzdCk7Ci0gICAgcmV0dXJuIG5pbDsK
KyAgICByZXR1cm4gd3JhcHBlcihfcGFnZUNvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uTWFuaWZl
c3QoKSk7CiB9CiAKIC0gKHZvaWQpX3NldEFwcGxpY2F0aW9uTWFuaWZlc3Q6KF9XS0FwcGxpY2F0
aW9uTWFuaWZlc3QgKilhcHBsaWNhdGlvbk1hbmlmZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA4MjUy
MzIyNjgyZWE5YTgwNjI0NWNjZTU4Njg1Y2FkOTQyMjQ4ZjE4Li4yNDVlNzA3ZTI2YzExYjViODUx
NmE1NTU4MzY4N2JhODAwZGMzOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTQ4LDEyICs0OCwxMiBA
QCBAaW1wbGVtZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlCiAKICsgKFdLV2Vic2l0ZURhdGFT
dG9yZSAqKWRlZmF1bHREYXRhU3RvcmUKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLmdldCgpKTsKKyAgICByZXR1
cm4gd3JhcHBlcihBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKSk7CiB9
CiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAqKW5vblBlcnNpc3RlbnREYXRhU3RvcmUKIHsKLSAg
ICByZXR1cm4gW1dlYktpdDo6d3JhcHBlcihBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5v
blBlcnNpc3RlbnREYXRhU3RvcmUoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gd3JhcHBlcihBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRh
U3RvcmUoKSk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpAQCAtMTEyLDcgKzExMiw3IEBAICsgKE5T
U2V0ICopYWxsV2Vic2l0ZURhdGFUeXBlcwogCiAtIChXS0hUVFBDb29raWVTdG9yZSAqKWh0dHBD
b29raWVTdG9yZQogewotICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX3dlYnNpdGVEYXRhU3Rv
cmUtPmh0dHBDb29raWVTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihfd2Vic2l0ZURhdGFT
dG9yZS0+aHR0cENvb2tpZVN0b3JlKCkpOwogfQogCiBzdGF0aWMgV2FsbFRpbWUgdG9TeXN0ZW1D
bG9ja1RpbWUoTlNEYXRlICpkYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQppbmRleCBjNzUzNTAz
MTgzMzEwZDhiN2I4NDdhZWMxZDQwYjRhMGQ0NDcwZmNkLi4zZWRkODUzMWEwOThiMDRmMjQzN2Q3
ZGU1Yjg1NDBmM2Y2MGVjZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQpAQCAtODQsNyArODQs
NyBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWFDb2RlcgogKyAoX1dLQXBw
bGljYXRpb25NYW5pZmVzdCAqKWFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjooTlNTdHJpbmcg
Kilqc29uIG1hbmlmZXN0VVJMOihOU1VSTCAqKW1hbmlmZXN0VVJMIGRvY3VtZW50VVJMOihOU1VS
TCAqKWRvY3VtZW50VVJMCiB7CiAgICAgYXV0byBtYW5pZmVzdCA9IFdlYkNvcmU6OkFwcGxpY2F0
aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlKFdURjo6U3RyaW5nKGpzb24pLCBXZWJDb3JlOjpVUkwo
bWFuaWZlc3RVUkwpLCBXZWJDb3JlOjpVUkwoZG9jdW1lbnRVUkwpKTsKLSAgICByZXR1cm4gW0FQ
STo6d3JhcHBlcihBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmNyZWF0ZShtYW5pZmVzdCkubGVh
a1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpBcHBsaWNhdGlv
bk1hbmlmZXN0OjpjcmVhdGUobWFuaWZlc3QpKTsKIH0KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlP
YmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tH
ZW9sb2NhdGlvblBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0KaW5kZXggNmY4MTlkZjE0NzU3NmVmZTU5NWI4OTdj
MGRiMmRkYzMzNDdmMThkMS4uZTI2ZDEzNDEwMDNhZmNiZjcyNWQwYzUzMGUzYzFiOWFhYjVmMTZl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0dlb2xv
Y2F0aW9uUG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0KQEAgLTM5LDcgKzM5LDcgQEAgKyAoaW5zdGFuY2V0
eXBlKXBvc2l0aW9uV2l0aExvY2F0aW9uOihDTExvY2F0aW9uICopbG9jYXRpb24KICAgICBpZiAo
IWxvY2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
IHsgbG9jYXRpb24gfSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBw
ZXIoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24geyBsb2NhdGlvbiB9KTsKIH0KIAogLSAodm9pZClkZWFsbG9jCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5tbQppbmRleCA2Zjc3NjdiMTQzNWI1NzQyODQwZGFhYWJhMzJmOGEyZmNj
OTYyZjQyLi5mMmZkNWRlZjhjYjY0NWU4NDZiNThlZWE1NjBlMWQ2ODUzZDQ3MWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KQEAgLTM0Nyw3ICszNDcsNyBAQCAtIChOU1N0cmlu
ZyAqKWRlc2NyaXB0aW9uCiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogewot
ICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPmNvcHkoKS5sZWFr
UmVmKCkpOworICAgIHJldHVybiBbd3JhcHBlcihfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5j
b3B5KCkpIHJldGFpbl07CiB9CiAKIC0gKE5TU3RyaW5nICopY3VzdG9tV2ViQ29udGVudFNlcnZp
Y2VCdW5kbGVJZGVudGlmaWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkLm1tCmluZGV4IDRmZDE3ZjM1MzI0ODNhYTUw
NGM4ZmY1ZWFhZWIzYmJiYTYyYTQzYWEuLmMwZWQ3Zjc4MTc4Mjk3YWEzOGJhMTE3MjZmNWZlN2Mz
YWZlYTFlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyQ29udGVudFdvcmxkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyQ29udGVudFdvcmxkLm1tCkBAIC0zMiw3ICszMiw3IEBAIEBpbXBsZW1lbnRh
dGlvbiBfV0tVc2VyQ29udGVudFdvcmxkCiAKICsgKF9XS1VzZXJDb250ZW50V29ybGQgKil3b3Js
ZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKIHsKLSAgICByZXR1cm4gW3dyYXBwZXIoQVBJOjpV
c2VyQ29udGVudFdvcmxkOjp3b3JsZFdpdGhOYW1lKG5hbWUpLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdOworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6d29ybGRXaXRo
TmFtZShuYW1lKSk7CiB9CiAKICsgKF9XS1VzZXJDb250ZW50V29ybGQgKilub3JtYWxXb3JsZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQ
b2xpY2llcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
UG9saWNpZXMubW0KaW5kZXggMjliNzM4MDlkMzk4YzM5ODgxMDM3YzY2ZWYyYjY5YzMxMmUxMWIz
Ny4uNjEzNTU0YjExNTBhNDNkMTEwZjUwZmM4NmY2NTllNjRjN2JhMzIxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVz
Lm1tCkBAIC0xNzUsOCArMTc1LDcgQEAgLSAodm9pZClzZXRDdXN0b21IZWFkZXJGaWVsZHM6KE5T
RGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWZpZWxkcwogCiAtIChXS1dlYnNp
dGVEYXRhU3RvcmUgKil3ZWJzaXRlRGF0YVN0b3JlCiB7Ci0gICAgYXV0byogc3RvcmUgPSBfd2Vi
c2l0ZVBvbGljaWVzLT53ZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgcmV0dXJuIHN0b3JlID8gV2Vi
S2l0Ojp3cmFwcGVyKCpzdG9yZSkgOiBuaWw7CisgICAgcmV0dXJuIHdyYXBwZXIoX3dlYnNpdGVQ
b2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpKTsKIH0KIAogLSAodm9pZClzZXRXZWJzaXRlRGF0
YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKil3ZWJzaXRlRGF0YVN0b3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggOWI1Mzg1
YmFhMjg4OWQ2MjQ4Y2E3ZmE5MmQyMTAzMWE2NzcyMjI2Ny4uOGY2MGMzNjk3YjFhM2RkYTRhZmY0
ZmEzNDgwMTA3YmI3M2I5MjMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNDM1LDcgKzQzNSw3IEBAIGJvb2wgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV2ViUGFn
ZVByb3h5JiwKICAgICAgICAgZm9yIChhdXRvJiByZW1vdmVkSXRlbSA6IHJlbW92ZWQpCiAgICAg
ICAgICAgICBbcmVtb3ZlZEl0ZW1zIGFkZE9iamVjdDp3cmFwcGVyKHJlbW92ZWRJdGVtLmdldCgp
KV07CiAgICAgfQotICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdh
dGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBiYWNrRm9y
d2FyZExpc3RJdGVtQWRkZWQ6YWRkZWQgPyB3cmFwcGVyKCphZGRlZCkgOiBuaWwgcmVtb3ZlZDpy
ZW1vdmVkSXRlbXNdOworICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2
aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBiYWNr
Rm9yd2FyZExpc3RJdGVtQWRkZWQ6d3JhcHBlcihhZGRlZCkgcmVtb3ZlZDpyZW1vdmVkSXRlbXNd
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00OTMsOCArNDkzLDggQEAgdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oV2ViUGFnZVAKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9IGFkb3B0TlMo
d3JhcHBlcihBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0
KCkpLmxlYWtSZWYoKSkpOwotICAgICAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFu
ZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3QuZ2V0KCldIHx8IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRs
ZXJGb3JTY2hlbWUoW25zVVJMUmVxdWVzdCBVUkxdLnNjaGVtZSkpIHsKKyAgICAgICAgICAgIE5T
VVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0ID0gd3JhcHBlcihBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0
ZShuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkpKTsKKyAgICAgICAgICAgIGlmIChbTlNVUkxD
b25uZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6bnNVUkxSZXF1ZXN0XSB8fCB3ZWJQYWdlLT51cmxT
Y2hlbWVIYW5kbGVyRm9yU2NoZW1lKFtuc1VSTFJlcXVlc3QgVVJMXS5zY2hlbWUpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKG5hdmlnYXRpb25BY3Rpb24tPnNob3VsZFBlcmZvcm1Eb3dubG9hZCgp
KQogICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAg
ICAgICBlbHNlCkBAIC02NjQsMTQgKzY2NCwxMSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVBybwog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5h
dmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9yIHNv
bWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KLSAgICBXS05hdmlnYXRpb24g
KndrTmF2aWdhdGlvbiA9IG5pbDsKLSAgICBpZiAobmF2aWdhdGlvbikKLSAgICAgICAgd2tOYXZp
Z2F0aW9uID0gd3JhcHBlcigqbmF2aWdhdGlvbik7CiAKICAgICBpZiAobV9uYXZpZ2F0aW9uU3Rh
dGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRTdGFydFByb3Zpc2lvbmFs
TmF2aWdhdGlvblVzZXJJbmZvKQotICAgICAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dl
YlZpZXcgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uIHVzZXJJbmZv
OnVzZXJJbmZvID8gc3RhdGljX2Nhc3Q8aWQgPE5TU2VjdXJlQ29kaW5nPj4odXNlckluZm8tPndy
YXBwZXIoKSkgOiBuaWxdOworICAgICAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZp
ZXcgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb246d3JhcHBlcihuYXZpZ2F0aW9uKSB1c2Vy
SW5mbzp1c2VySW5mbyA/IHN0YXRpY19jYXN0PGlkIDxOU1NlY3VyZUNvZGluZz4+KHVzZXJJbmZv
LT53cmFwcGVyKCkpIDogbmlsXTsKICAgICBlbHNlCi0gICAgICAgIFtuYXZpZ2F0aW9uRGVsZWdh
dGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkU3RhcnRQcm92aXNpb25h
bE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uXTsKKyAgICAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3
ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2
aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pXTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlv
biwgQVBJOjpPYmplY3QqKQpAQCAtNjg0LDExICs2ODEsOCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxOYQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0
aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwg
Zm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KLSAgICBXS05hdmln
YXRpb24gKndrTmF2aWdhdGlvbiA9IG5pbDsKLSAgICBpZiAobmF2aWdhdGlvbikKLSAgICAgICAg
d2tOYXZpZ2F0aW9uID0gd3JhcHBlcigqbmF2aWdhdGlvbik7CiAKLSAgICBbbmF2aWdhdGlvbkRl
bGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3a05hdmlnYXRpb25dOworICAgIFtu
YXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndyYXBwZXIobmF2
aWdhdGlvbildOwogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdURjo6
U3RyaW5nJiB1cmxTdHJpbmcsIGRvdWJsZSBkZWxheSkKQEAgLTczNSwxMCArNzI5LDcgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihX
S1dlYlZpZXcgKndlYlZpZXcsIFcKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZp
Z2F0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3Qq
KQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBu
b3QgbnVsbCBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9u
cyB0aHJvdWdoIHRoZSBwYWdlIGNhY2hlLgotICAgIFJldGFpblB0cjxXS05hdmlnYXRpb24+IHdr
TmF2aWdhdGlvbjsKLSAgICBpZiAobmF2aWdhdGlvbikKLSAgICAgICAgd2tOYXZpZ2F0aW9uID0g
d3JhcHBlcigqbmF2aWdhdGlvbik7Ci0gICAgCisKICAgICAvLyBGSVhNRTogU2V0IHRoZSBlcnJv
ciBvbiB0aGUgbmF2aWdhdGlvbiBvYmplY3QuCiAKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRl
Lm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbldpdGhFcnJvcikKQEAgLTc0OSwxNiArNzQwLDEzIEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVy
cm9yKFdlCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRl
bXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmlnYXRpb25TdGF0
ZS5tX3dlYlZpZXcsIHdlYkZyYW1lUHJveHksIGVycm9yKTsKLSAgICBbbmF2aWdhdGlvbkRlbGVn
YXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25h
bE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uLmdldCgpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVy
eUF0dGVtcHRlci5nZXQoKV07CisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2
aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndyYXBw
ZXIobmF2aWdhdGlvbikgd2l0aEVycm9yOmVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgp
XTsKIH0KIAogLy8gRklYTUU6IFNob3VsZG4ndCBuZWVkIHRvIHBhc3MgdGhlIFdlYkZyYW1lUHJv
eHkgaW4gaGVyZS4gQXQgbW9zdCwgYSBGcmFtZUhhbmRsZS4KLXZvaWQgTmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhF
cnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIEFQSTo6TmF2aWdhdGlvbiog
bmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2Jq
ZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZy
YW1lUHJveHkmIHdlYkZyYW1lUHJveHksIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJp
dHlPcmlnaW4sIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yLCBBUEk6Ok9iamVjdCopCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQg
dGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxs
IGJlY2F1c2UgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgcGFz
c2VzIG51bGwuCi0gICAgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4gd2tOYXZpZ2F0aW9uOwotICAg
IGlmIChuYXZpZ2F0aW9uKQotICAgICAgICB3a05hdmlnYXRpb24gPSB3cmFwcGVyKCpuYXZpZ2F0
aW9uKTsKIAogICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdOYXZpZ2F0aW9uRGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVX
aXRoRXJyb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTc3OSwxMSArNzY3LDggQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFn
ZVByb3h5JiBwYWdlLAogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVu
dGx5IG51bGwgZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KLSAg
ICBXS05hdmlnYXRpb24gKndrTmF2aWdhdGlvbiA9IG5pbDsKLSAgICBpZiAobmF2aWdhdGlvbikK
LSAgICAgICAgd2tOYXZpZ2F0aW9uID0gd3JhcHBlcigqbmF2aWdhdGlvbik7CiAKLSAgICBbbmF2
aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZENv
bW1pdE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uXTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZENvbW1pdE5hdmlnYXRpb246d3Jh
cHBlcihuYXZpZ2F0aW9uKV07CiB9CiAKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5h
dmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KikKQEAgLTc5NiwxMSArNzgxLDggQEAg
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaERvY3VtZW50
TG9hZChXZWJQYWdlUHJveHkmIHBhZ2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBp
dCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIHBhZ2Ug
Y2FjaGUuCi0gICAgV0tOYXZpZ2F0aW9uICp3a05hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5h
dmlnYXRpb24pCi0gICAgICAgIHdrTmF2aWdhdGlvbiA9IHdyYXBwZXIoKm5hdmlnYXRpb24pOwog
Ci0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmll
dyBuYXZpZ2F0aW9uRGlkRmluaXNoRG9jdW1lbnRMb2FkOndrTmF2aWdhdGlvbl07CisgICAgW3N0
YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVs
ZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0
aW9uRGlkRmluaXNoRG9jdW1lbnRMb2FkOndyYXBwZXIobmF2aWdhdGlvbildOwogfQogCiB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmluaXNoTmF2aWdhdGlvbihX
ZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmpl
Y3QqKQpAQCAtODEzLDExICs3OTUsOCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkRmluaXNoTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlv
biBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZp
Z2F0aW9ucyB0aHJvdWdoIHRoZSBwYWdlIGNhY2hlLgotICAgIFdLTmF2aWdhdGlvbiAqd2tOYXZp
Z2F0aW9uID0gbmlsOwotICAgIGlmIChuYXZpZ2F0aW9uKQotICAgICAgICB3a05hdmlnYXRpb24g
PSB3cmFwcGVyKCpuYXZpZ2F0aW9uKTsKIAotICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmll
dzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjp3a05hdmln
YXRpb25dOworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0
ZS5tX3dlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pXTsKIH0K
IAogLy8gRklYTUU6IFNob3VsZG4ndCBuZWVkIHRvIHBhc3MgdGhlIFdlYkZyYW1lUHJveHkgaW4g
aGVyZS4gQXQgbW9zdCwgYSBGcmFtZUhhbmRsZS4KQEAgLTgzMiwxNSArODExLDEyIEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGYWlsTmF2aWdhdGlvbldpdGhF
cnJvcihXZWJQYWdlUHJveHkmCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQncyBj
dXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBwYWdlIGNhY2hl
LgotICAgIFdLTmF2aWdhdGlvbiAqd2tOYXZpZ2F0aW9uID0gbmlsOwotICAgIGlmIChuYXZpZ2F0
aW9uKQotICAgICAgICB3a05hdmlnYXRpb24gPSB3cmFwcGVyKCpuYXZpZ2F0aW9uKTsKIAogICAg
IGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVy
eUF0dGVtcHRlcihtX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcsIHdlYkZyYW1lUHJveHksIGVy
cm9yKTsKICAgICBpZiAobV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvclVzZXJJbmZvKQotICAgICAgICBb
KGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2Vi
VmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmFpbE5hdmlnYXRpb246d2tOYXZp
Z2F0aW9uIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKSB1c2VySW5m
bzp1c2VySW5mbyA/IHN0YXRpY19jYXN0PGlkIDxOU1NlY3VyZUNvZGluZz4+KHVzZXJJbmZvLT53
cmFwcGVyKCkpIDogbmlsXTsKKyAgICAgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJW
aWV3IGRpZEZhaWxOYXZpZ2F0aW9uOndyYXBwZXIobmF2aWdhdGlvbikgd2l0aEVycm9yOmVycm9y
V2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpIHVzZXJJbmZvOnVzZXJJbmZvID8gc3RhdGljX2Nh
c3Q8aWQgPE5TU2VjdXJlQ29kaW5nPj4odXNlckluZm8tPndyYXBwZXIoKSkgOiBuaWxdOwogICAg
IGVsc2UKLSAgICAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLm1fd2ViVmlldyBkaWRGYWlsTmF2aWdhdGlvbjp3a05hdmlnYXRpb24gd2l0aEVycm9yOmVy
cm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpXTsKKyAgICAgICAgW25hdmlnYXRpb25EZWxl
Z2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsTmF2aWdhdGlv
bjp3cmFwcGVyKG5hdmlnYXRpb24pIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRl
ci5nZXQoKV07CiB9CiAKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiog
bmF2aWdhdGlvbiwgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIEFQ
STo6T2JqZWN0KikKQEAgLTg1MywxMSArODI5LDggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBu
YXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9y
IHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KLSAgICBXS05hdmlnYXRp
b24gKndrTmF2aWdhdGlvbiA9IG5pbDsKLSAgICBpZiAobmF2aWdhdGlvbikKLSAgICAgICAgd2tO
YXZpZ2F0aW9uID0gd3JhcHBlcigqbmF2aWdhdGlvbik7CiAKLSAgICBbc3RhdGljX2Nhc3Q8aWQg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkg
X3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb246d2tOYXZpZ2F0
aW9uIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb246dG9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25U
eXBlKG5hdmlnYXRpb25UeXBlKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2
aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uOndyYXBwZXIobmF2aWdhdGlvbikgZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbjp0b1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUobmF2
aWdhdGlvblR5cGUpXTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OnJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eSYsIFdlYkNvcmU6Okxh
eW91dE1pbGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGluZy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1Nlc3Npb25TdGF0ZUNvZGluZy5tbQppbmRleCA2MjNiYTQ2MGEyMDhh
YjdkNzM2MTI3Y2VhYTg0NDE0ZmNhMDQ1MDNkLi4wNDU5MTgzZGEwMGYwNzAzMTJjNTg1ZjI1NjE4
MWI4Y2U0OTVkYzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
ZXNzaW9uU3RhdGVDb2RpbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U2Vzc2lvblN0YXRlQ29kaW5nLm1tCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogUmV0YWluUHRyPE5TRGF0YT4gZW5jb2RlU2Vzc2lvblN0YXRlKGNvbnN0IFNlc3Npb25TdGF0
ZSYgc2Vzc2lvblN0YXRlKQogewogI2lmIFdLX0FQSV9FTkFCTEVECi0gICAgcmV0dXJuIFt3cmFw
cGVyKCpXZWJLaXQ6OmVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZShzZXNzaW9uU3RhdGUpLmxlYWtS
ZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiB3cmFwcGVyKFdlYktpdDo6ZW5jb2RlTGVn
YWN5U2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0ZSkpOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0
cjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCA5NDUyMTRkODczNjIwMTgzZDU0YTljNzdl
MTcxZWI1OWYyNDU1OWUzLi5iNzAxNDEyOWIyNDU3MDI1ZDIwNDJhMzE5Y2RhNTk3ZTc5MDJmNmM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtMTI5LDcgKzEyOSw3IEBAIC0gKFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBbY29uZmln
dXJhdGlvbiBzZXRQcm9jZXNzUG9vbDogOjpXZWJLaXQ6OndyYXBwZXIoaW5zcGVjdG9yUHJvY2Vz
c1Bvb2woaW5zcGVjdG9yTGV2ZWxGb3JQYWdlKF9pbnNwZWN0ZWRQYWdlKSkpXTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDp3cmFwcGVyKGluc3BlY3RvclByb2Nlc3NQb29sKGlu
c3BlY3RvckxldmVsRm9yUGFnZShfaW5zcGVjdGVkUGFnZSkpKV07CiAgICAgW2NvbmZpZ3VyYXRp
b24gX3NldEdyb3VwSWRlbnRpZmllcjppbnNwZWN0b3JQYWdlR3JvdXBJZGVudGlmaWVyRm9yUGFn
ZShfaW5zcGVjdGVkUGFnZSldOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uYXV0b3JlbGVh
c2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1l
Lm1tCmluZGV4IDlmNDgzZGJjYmQ1ZTU0MTNlNGUzZjk2ZWUyM2UwNzg0Y2Y1NTg0ZmMuLjk2YWRh
YTk0MDk4ZmExNmVlYzQ5Y2Y3ZGJhZjQ4ZThhNjcxZDFkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1
Z0luRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbQpAQCAtNTIsMTEgKzUyLDcgQEAg
QGltcGxlbWVudGF0aW9uIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIHsKIAogKyAoaW5zdGFuY2V0
eXBlKWxvb2tVcEZyYW1lRnJvbUhhbmRsZTooX1dLRnJhbWVIYW5kbGUgKiloYW5kbGUKIHsKLSAg
ICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSho
YW5kbGUuX2ZyYW1lSUQpOwotICAgIGlmICghd2ViRnJhbWUpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICByZXR1cm4gd3JhcHBlcigqd2ViRnJhbWUpOworICAgIHJldHVybiB3cmFwcGVyKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGhhbmRsZS5fZnJhbWVJRCkpOwogfQogCiAt
ICh2b2lkKWRlYWxsb2MKQEAgLTcyLDggKzY4LDcgQEAgLSAoSlNDb250ZXh0ICopanNDb250ZXh0
Rm9yV29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQKIAogLSAoV0tX
ZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQKIHsK
LSAgICBhdXRvIGhpdFRlc3RSZXN1bHQgPSBfZnJhbWUtPmhpdFRlc3QoV2ViQ29yZTo6SW50UG9p
bnQocG9pbnQpKTsKLSAgICByZXR1cm4gW3dyYXBwZXIoKmhpdFRlc3RSZXN1bHQubGVha1JlZigp
KSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoX2ZyYW1lLT5oaXRUZXN0KFdlYkNv
cmU6OkludFBvaW50KHBvaW50KSkpOwogfQogCiAtIChKU1ZhbHVlICopanNOb2RlRm9yTm9kZUhh
bmRsZTooV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAqKW5vZGVIYW5kbGUgaW5Xb3JsZDoo
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZApAQCAtMTAwLDcgKzk1LDcgQEAg
LSAoTlNVUkwgKilVUkwKIAogLSAoTlNBcnJheSAqKWNoaWxkRnJhbWVzCiB7Ci0gICAgcmV0dXJu
IFt3cmFwcGVyKF9mcmFtZS0+Y2hpbGRGcmFtZXMoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gd3JhcHBlcihfZnJhbWUtPmNoaWxkRnJhbWVzKCkpOwogfQogCiAtIChCT09M
KWNvbnRhaW5zQW55Rm9ybUVsZW1lbnRzCkBAIC0xMTAsNyArMTA1LDcgQEAgLSAoQk9PTCljb250
YWluc0FueUZvcm1FbGVtZW50cwogCiAtIChfV0tGcmFtZUhhbmRsZSAqKWhhbmRsZQogewotICAg
IHJldHVybiBbd3JhcHBlcihBUEk6OkZyYW1lSGFuZGxlOjpjcmVhdGUoX2ZyYW1lLT5mcmFtZUlE
KCkpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6RnJh
bWVIYW5kbGU6OmNyZWF0ZShfZnJhbWUtPmZyYW1lSUQoKSkpOwogfQogCiBzdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk+IGNvbGxlY3RJY29ucyhXZWJDb3JlOjpGcmFtZSogZnJhbWUsIE9wdGlvblNl
dDxXZWJDb3JlOjpMaW5rSWNvblR5cGU+IGljb25UeXBlcykKQEAgLTEzOSw4ICsxMzQsNyBAQCAt
IChOU0FycmF5ICopZmF2aWNvblVSTHMKIAogLSAoV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilf
cGFyZW50RnJhbWUKIHsKLSAgICBXZWJGcmFtZSAqcGFyZW50RnJhbWUgPSBfZnJhbWUtPnBhcmVu
dEZyYW1lKCk7Ci0gICAgcmV0dXJuIHBhcmVudEZyYW1lID8gd3JhcHBlcigqcGFyZW50RnJhbWUp
IDogbmlsOworICAgIHJldHVybiB3cmFwcGVyKF9mcmFtZS0+cGFyZW50RnJhbWUoKSk7CiB9CiAK
IC0gKEJPT0wpX2hhc0N1c3RvbUNvbnRlbnRQcm92aWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVn
SW5IaXRUZXN0UmVzdWx0Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tCmluZGV4IDdl
YTg2YzkxMWU0ZDY0MmU1ZmM2MzI1NjI0M2QyMmE1YzFkYTMyZjUuLjAyMDk0N2NmYmQwYjgwZDM3
YzlhZjdjNjM0NmE4MGMyYzcyNTRjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJl
c3VsdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW0KQEAgLTQ0LDggKzQ0LDcg
QEAgLSAodm9pZClkZWFsbG9jCiAKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKilu
b2RlSGFuZGxlCiB7Ci0gICAgYXV0byBub2RlSGFuZGxlID0gX2hpdFRlc3RSZXN1bHQtPm5vZGVI
YW5kbGUoKTsKLSAgICByZXR1cm4gbm9kZUhhbmRsZSA/IFt3cmFwcGVyKCpub2RlSGFuZGxlLmxl
YWtSZWYoKSkgYXV0b3JlbGVhc2VdIDogbmlsOworICAgIHJldHVybiB3cmFwcGVyKF9oaXRUZXN0
UmVzdWx0LT5ub2RlSGFuZGxlKCkpOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9j
b2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQppbmRleCAxOTc0NGM4ZTBiNDkzYmMxNGQyZmQ2NTgz
YWRmMWU0NWRlNmJkMGQxLi45MWNkMGM0MGU0Y2ViYzVjYmI2N2UxYTdmNTNhYmQwMGI1NGFhNzI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlLm1tCkBAIC00OSwyMSArNDksMTMgQEAgLSAodm9pZClkZWFsbG9jCiArIChXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICopbm9kZUhhbmRsZVdpdGhKU1ZhbHVlOihKU1ZhbHVl
ICopdmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CiB7CiAgICAgSlNDb250ZXh0
UmVmIGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOwotICAgIEpTT2Jq
ZWN0UmVmIG9iamVjdFJlZiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0UmVmLCBbdmFsdWUgSlNW
YWx1ZVJlZl0sIDApOwotICAgIGF1dG8gbm9kZUhhbmRsZSA9IEluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZTo6Z2V0T3JDcmVhdGUoY29udGV4dFJlZiwgb2JqZWN0UmVmKTsKLSAgICBpZiAoIW5vZGVI
YW5kbGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1cm4gW3dyYXBwZXIoKm5vZGVI
YW5kbGUubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgSlNPYmplY3RSZWYgb2JqZWN0UmVm
ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHRSZWYsIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgbnVsbHB0
cik7CisgICAgcmV0dXJuIHdyYXBwZXIoSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpnZXRPckNy
ZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpKTsKIH0KIAogLSAoV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWUgKilodG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZQogewotICAgIGF1dG8gZnJhbWUg
PSBfbm9kZUhhbmRsZS0+aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKTsKLSAgICBpZiAo
IWZyYW1lKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpmcmFt
ZS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gd3JhcHBlcihfbm9kZUhhbmRs
ZS0+aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKSk7CiB9CiAKICNpZiBQTEFURk9STShJ
T1MpCkBAIC0xOTEsMTYgKzE4MywxMiBAQCAtIChCT09MKWlzVGV4dEZpZWxkCiAKIC0gKFdLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKilIVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZQog
ewotICAgIGF1dG8gbm9kZUhhbmRsZSA9IF9ub2RlSGFuZGxlLT5odG1sVGFibGVDZWxsRWxlbWVu
dENlbGxBYm92ZSgpOwotICAgIGlmICghbm9kZUhhbmRsZSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIHJldHVybiBbd3JhcHBlcigqbm9kZUhhbmRsZS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gd3JhcHBlcihfbm9kZUhhbmRsZS0+aHRtbFRhYmxlQ2VsbEVsZW1lbnRD
ZWxsQWJvdmUoKSk7CiB9CiAKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUKIHsK
LSAgICByZXR1cm4gW3dyYXBwZXIoKl9ub2RlSGFuZGxlLT5kb2N1bWVudCgpLT5kb2N1bWVudEZy
YW1lKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoX25vZGVI
YW5kbGUtPmRvY3VtZW50KCktPmRvY3VtZW50RnJhbWUoKSk7CiB9CiAKIC0gKEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZSYpX25vZGVIYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luUmFuZ2VI
YW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlLm1tCmluZGV4IDRmY2IxYTQ0NjhkMzFj
YzI2N2ExNmIyMDE1ZTJmMjEwY2RmMDE4MDEuLjRhOGRkMzQzNTk1MjNkNzM5ZGExZjc5ZTQ5YzQ2
YjY1ZTI1OTZjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luUmFuZ2VIYW5kbGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5SYW5nZUhhbmRsZS5tbQpAQCAtNTIsMTcgKzUyLDEzIEBAIC0gKHZvaWQpZGVh
bGxvYwogKyAoV0tXZWJQcm9jZXNzUGx1Z0luUmFuZ2VIYW5kbGUgKilyYW5nZUhhbmRsZVdpdGhK
U1ZhbHVlOihKU1ZhbHVlICopdmFsdWUgaW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0CiB7
CiAgICAgSlNDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRS
ZWZdOwotICAgIEpTT2JqZWN0UmVmIG9iamVjdFJlZiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0
UmVmLCBbdmFsdWUgSlNWYWx1ZVJlZl0sIDApOwotICAgIGF1dG8gcmFuZ2VIYW5kbGUgPSBJbmpl
Y3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYp
OwotICAgIGlmICghcmFuZ2VIYW5kbGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1
cm4gW3dyYXBwZXIoKnJhbmdlSGFuZGxlLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIEpT
T2JqZWN0UmVmIG9iamVjdFJlZiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0UmVmLCBbdmFsdWUg
SlNWYWx1ZVJlZl0sIG51bGxwdHIpOworICAgIHJldHVybiB3cmFwcGVyKEluamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGU6OmdldE9yQ3JlYXRlKGNvbnRleHRSZWYsIG9iamVjdFJlZikpOwogfQogCiAt
IChXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lCiB7Ci0gICAgcmV0dXJuIFt3cmFwcGVy
KCpfcmFuZ2VIYW5kbGUtPmRvY3VtZW50KCktPmRvY3VtZW50RnJhbWUoKS5sZWFrUmVmKCkpIGF1
dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gd3JhcHBlcihfcmFuZ2VIYW5kbGUtPmRvY3VtZW50KCkt
PmRvY3VtZW50RnJhbWUoKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopdGV4dApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0KaW5k
ZXggNmViYTAxMjlkNzc3NDk0YjdiMGFhNTg4ODA0NDkyMTA4MGU2NzM3Yi4uYWU4ZDkwNjFmNDQz
MGIyYWZjOThhMGE3NWEzMTUxYzcwNjI5ZGQ3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3Jp
cHRXb3JsZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tCkBAIC0zNiw4ICszNiw3
IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCB7CiAKICsg
KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQKIHsKLSAgICBhdXRvIHNjcmlw
dFdvcmxkID0gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJu
IFt3cmFwcGVyKHNjcmlwdFdvcmxkLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biB3cmFwcGVyKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZSgpKTsKIH0KIAogKyAo
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKilub3JtYWxXb3JsZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tCmluZGV4IDE5MzUzMjJmMzY0MGU0ZWQyNGI5MWI2ZTFkMmE4MjYx
YmFlZWQyYmUuLjI4ZGMwNjY5ZGY1ZGQyMGUwYmMxZTA2NjdlY2U5ZjdlNTM5NGM0OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTM4NSwxMSArMzg1LDcgQEAgLSAoV0tE
T01SYW5nZSAqKXNlbGVjdGVkUmFuZ2UKIAogLSAoV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilt
YWluRnJhbWUKIHsKLSAgICBXZWJGcmFtZSAqd2ViS2l0TWFpbkZyYW1lID0gX3BhZ2UtPm1haW5X
ZWJGcmFtZSgpOwotICAgIGlmICghd2ViS2l0TWFpbkZyYW1lKQotICAgICAgICByZXR1cm4gbmls
OwotCi0gICAgcmV0dXJuIHdyYXBwZXIoKndlYktpdE1haW5GcmFtZSk7CisgICAgcmV0dXJuIHdy
YXBwZXIoX3BhZ2UtPm1haW5XZWJGcmFtZSgpKTsKIH0KIAogLSAoV0tXZWJQcm9jZXNzUGx1Z0lu
UGFnZUdyb3VwICopcGFnZUdyb3VwCkBAIC00MjAsMTEgKzQxNiw3IEBAIC0gKFdLQnJvd3NpbmdD
b250ZXh0SGFuZGxlICopaGFuZGxlCiAKICsgKGluc3RhbmNldHlwZSlsb29rVXBCcm93c2luZ0Nv
bnRleHRGcm9tSGFuZGxlOihXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSAqKWhhbmRsZQogewotICAg
IFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKGhhbmRs
ZS5wYWdlSUQpOwotICAgIGlmICghd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IHJldHVybiB3cmFwcGVyKCp3ZWJQYWdlKTsKKyAgICByZXR1cm4gd3JhcHBlcihXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJQYWdlKGhhbmRsZS5wYWdlSUQpKTsKIH0KIAogLSAoX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkgKilfcmVtb3RlT2JqZWN0UmVnaXN0cnkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347473</attachid>
            <date>2018-08-19 17:30:11 -0700</date>
            <delta_ts>2018-08-19 17:32:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188735-20180819173010.patch</filename>
            <type>text/plain</type>
            <size>60631</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAyOGRlOTczZmI3OTQ0M2Jm
Y2U4Y2EyM2ZhOTkxN2IxMmM4MGNjYTMuLjRmYWI3NTQ0YjkxODdlMzRmZDg5YmU1MjIzYmNlNDMz
ZWY0ZjE5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkzIEBACisyMDE4LTA4LTE5ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIFVwZGF0ZSB1c2VzIG9m
IHdyYXBwZXIgdGVtcGxhdGUgZnVuY3Rpb25zIGluIFdlYktpdCBmb3IgY2xhcml0eSwgc2ltcGxp
Y2l0eSwgYmV0dGVyIEFSQyByZWFkaW5lc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODczNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEJlY2F1c2Ugb2YgYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cCwg
dGhlcmUgc2hvdWxkIG5ldmVyIGJlIGEgcmVhc29uIHRvIGNhbGwKKyAgICAgICAgdGhlIHdyYXBw
ZXIgZnVuY3Rpb24gYXMgV2ViS2l0Ojp3cmFwcGVyIG9yIEFQSTo6d3JhcHBlciB1bmxlc3MgdGhl
cmUgaXMgYSBuZWVkCisgICAgICAgIHRvIHJlc29sdmUgYSBuYW1lIGNvbmZsaWN0LCBzbyByZW1v
dmVkIHRoZSBleHBsaWNpdCBuYW1lc3BhY2luZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbToKKyAgICAgICAgKFdLUGFnZUxvYWRVUkxSZXF1ZXN0
UmV0dXJuaW5nTmF2aWdhdGlvbik6IFJlbW92ZWQgZXhwbGljaXQgbnVsbCBjaGVjayBhbmQKKyAg
ICAgICAgbGVha1JlZi9hdXRvcmVsZWFzZSBwYWlyLCBib3RoIGRvbmUgYnkgdGhlIHdyYXBwZXIg
dGVtcGxhdGUgZnVuY3Rpb24gbm93LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0JhY2tGb3J3YXJkTGlzdC5tbToKKyAgICAgICAgKHRvV0tCYWNrRm9yd2FyZExpc3RJdGVtKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV0tCYWNrRm9yd2FyZExpc3QgY3VycmVudEl0ZW1dKTogVXNl
IHdyYXBwZXIgaW5zdGVhZCBvZiB0b1dLQmFja0ZvcndhcmRMaXN0SXRlbS4KKyAgICAgICAgKC1b
V0tCYWNrRm9yd2FyZExpc3QgYmFja0l0ZW1dKTogRGl0dG8uCisgICAgICAgICgtW1dLQmFja0Zv
cndhcmRMaXN0IGZvcndhcmRJdGVtXSk6IERpdHRvLgorICAgICAgICAoLVtXS0JhY2tGb3J3YXJk
TGlzdCBpdGVtQXRJbmRleDpdKTogRGl0dG8uCisgICAgICAgICgtW1dLQmFja0ZvcndhcmRMaXN0
IGJhY2tMaXN0XSk6IFJlbW92ZWQgbGVha1JlZi9hdXRvcmVsZWFzZSBwYWlyLgorICAgICAgICAo
LVtXS0JhY2tGb3J3YXJkTGlzdCBmb3J3YXJkTGlzdF0pOiBEaXR0by4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbToKKyAgICAgICAgKCtb
V0tDb250ZW50UnVsZUxpc3RTdG9yZSBkZWZhdWx0U3RvcmVdKTogUmVtb3ZlZCBleHBsaWNpdCBX
ZWJLaXQgbmFtZXNwYWNlLgorICAgICAgICAoK1tXS0NvbnRlbnRSdWxlTGlzdFN0b3JlIHN0b3Jl
V2l0aFVSTDpdKTogRml4ZWQgc3RvcmFnZSBsZWFrIGJ5IHJlbW92aW5nIGxlYWtSZWYsCisgICAg
ICAgIHdoaWNoIHdhcyBub3QgYmFsYW5jZWQuIFRoaXMgaXMgbm90IGEgY29weSBvciBjcmVhdGUg
ZnVuY3Rpb24sIHNvIGl0IHNob3VsZCBub3QKKyAgICAgICAgcmV0dXJuIGFuIG9iamVjdCB0aGF0
IHJlcXVpcmVzIGEgcmVsZWFzZSB0byBiYWxhbmNlIGl0LgorICAgICAgICAoLVtXS0NvbnRlbnRS
dWxlTGlzdFN0b3JlIF9jb21waWxlQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjplbmNvZGVk
Q29udGVudFJ1bGVMaXN0OmNvbXBsZXRpb25IYW5kbGVyOnJlbGVhc2VzQXJndW1lbnQ6XSk6Cisg
ICAgICAgIFJlbW92ZWQgZXhwbGljaXQgV2ViS2l0IG5hbWVzcGFjZSBhbmQgdW5uZWVkZWQgZ2V0
KCkuCisgICAgICAgICgtW1dLQ29udGVudFJ1bGVMaXN0U3RvcmUgbG9va1VwQ29udGVudFJ1bGVM
aXN0Rm9ySWRlbnRpZmllcjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgUmVtb3ZlZCBl
eHBsaWNpdCBXZWJLaXQgbmFtZXNwYWNlLgorICAgICAgICAoK1tXS0NvbnRlbnRSdWxlTGlzdFN0
b3JlIGRlZmF1bHRTdG9yZVdpdGhMZWdhY3lGaWxlbmFtZV0pOiBEaXR0by4KKyAgICAgICAgKCtb
V0tDb250ZW50UnVsZUxpc3RTdG9yZSBzdG9yZVdpdGhVUkxBbmRMZWdhY3lGaWxlbmFtZTpdKTog
Rml4ZWQgc3RvcmFnZSBsZWFrLAorICAgICAgICBhcyBhYm92ZSBpbiBzdG9yZVdpdGhVUkwuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tOgorICAgICAgICAo
LVtXS0ZyYW1lSW5mbyBfaGFuZGxlXSk6IFJlbW92ZWQgZXhwbGljaXQgV2ViS2l0IG5hbWVzcGFj
ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tOgor
ICAgICAgICAoV0tIVFRQQ29va2llU3RvcmVPYnNlcnZlcjo6Y29va2llc0RpZENoYW5nZSk6IERp
dHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24u
bW06CisgICAgICAgICgtW1dLTmF2aWdhdGlvbkFjdGlvbiBzb3VyY2VGcmFtZV0pOiBSZW1vdmVk
IGV4cGxpY2l0IG51bGwgY2hlY2ssIG5vdyBkb25lIGJ5CisgICAgICAgIHRoZSB3cmFwcGVyIHRl
bXBsYXRlIGZ1bmN0aW9uLgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gdGFyZ2V0RnJh
bWVdKTogRGl0dG8uCisgICAgICAgICgtW1dLTmF2aWdhdGlvbkFjdGlvbiBfdXNlckluaXRpYXRl
ZEFjdGlvbl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9uIF9tYWluRnJh
bWVOYXZpZ2F0aW9uXSk6IERpdHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S09wZW5QYW5lbFBhcmFtZXRlcnMubW06CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVy
cyBfYWNjZXB0ZWRNSU1FVHlwZXNdKTogUmVtb3ZlZCBsZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXIs
CisgICAgICAgIG5vdyBkb25lIGJ5IHRoZSB3cmFwcGVyIHRlbXBsYXRlIGZ1bmN0aW9uLgorICAg
ICAgICAoLVtXS09wZW5QYW5lbFBhcmFtZXRlcnMgX2FjY2VwdGVkRmlsZUV4dGVuc2lvbnNdKTog
RGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW06
CisgICAgICAgICgtW1dLUHJlZmVyZW5jZXMgY29weVdpdGhab25lOl0pOiBVc2UgcmV0YWluIGlu
c3RlYWQgb2YgbGVha1JlZjsgc2xpZ2h0bHkgY2xlYXJlcgorICAgICAgICBmb3Igd2hlbiB3ZSBj
b252ZXJ0IHRvIEFSQy4KKyAgICAgICAgKCtbV0tQcmVmZXJlbmNlcyBfZXhwZXJpbWVudGFsRmVh
dHVyZXNdKTogUmVtb3ZlZCBsZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXIsCisgICAgICAgIG5vdyBk
b25lIGJ5IHRoZSB3cmFwcGVyIHRlbXBsYXRlIGZ1bmN0aW9uLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29s
IF9jb25maWd1cmF0aW9uXSk6IEZpeGVkIGEgc3RvcmFnZSBsZWFrIGJ5IHJlbW92aW5nIGxlYWtS
ZWYsCisgICAgICAgIHdoaWNoIHdhcyBub3QgYmFsYW5hY2VkLiBUaGlzIGlzIG5vdCBhIGNvcHkg
b3IgY3JlYXRlIGZ1bmN0aW9uLCBzbyBpdCBzaG91bGQgbm90CisgICAgICAgIHJldHVybiBhbiBv
YmplY3QgdGhhdCByZXF1aXJlcyBhIHJlbGVhc2UgdG8gYmFsYW5jZSBpdC4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNrSW50ZXJuYWwuaDoKKyAgICAgICAg
UmVwbGFjZWQgaW5saW5lIHdyYXBwZXIgZnVuY3Rpb24gd2l0aCBXcmFwcGVyVHJhaXRzIHN0cnVj
dHVyZSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVc2VyU2NyaXB0Lm1tOgorICAgICAgICAoLVtXS1VzZXJTY3JpcHQgX3VzZXJDb250
ZW50V29ybGRdKTogUmVtb3ZlZCBleHBsaWNpdCBBUEkgbmFtZXNwYWNlLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBs
b2FkUmVxdWVzdDpdKTogUmVtb3ZlZCBleHBsaWNpdCBudWxsIGNoZWNrIGFuZAorICAgICAgICBs
ZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXIsIGJvdGggZG9uZSBieSB0aGUgd3JhcHBlciB0ZW1wbGF0
ZSBmdW5jdGlvbiBub3cuCisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkRmlsZVVSTDphbGxvd2lu
Z1JlYWRBY2Nlc3NUb1VSTDpdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBsb2FkRGF0
YTpNSU1FVHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDpdKTogRGl0dG8uCisgICAg
ICAgICgtW1dLV2ViVmlldyBnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTpdKTogRGl0dG8uCisgICAg
ICAgICgtW1dLV2ViVmlldyBnb0JhY2tdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBn
b0ZvcndhcmRdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmlldyByZWxvYWRdKTogRGl0dG8u
CisgICAgICAgICgtW1dLV2ViVmlldyByZWxvYWRGcm9tT3JpZ2luXSk6IERpdHRvLgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2RpZEluc2VydEF0dGFjaG1lbnQ6d2l0aFNvdXJjZTpdKTogUmVtb3Zl
ZCBsZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXJzLAorICAgICAgICBub3cgZG9uZSBieSB0aGUgd3Jh
cHBlciB0ZW1wbGF0ZSBmdW5jdGlvbi4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRSZW1vdmVB
dHRhY2htZW50Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sb2FkRGF0YTpNSU1F
VHlwZTpjaGFyYWN0ZXJFbmNvZGluZ05hbWU6YmFzZVVSTDp1c2VyRGF0YTpdKTogUmVtb3ZlZAor
ICAgICAgICBleHBsaWNpdCBudWxsIGNoZWNrIGFuZCBsZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXIs
IGJvdGggZG9uZSBieSB0aGUgd3JhcHBlciB0ZW1wbGF0ZQorICAgICAgICBmdW5jdGlvbiBub3cu
CisgICAgICAgICgtW1dLV2ViVmlldyBfbG9hZFJlcXVlc3Q6c2hvdWxkT3BlbkV4dGVybmFsVVJM
czpdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBfcmVsb2FkV2l0aG91dENvbnRlbnRC
bG9ja2Vyc10pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZWxvYWRFeHBpcmVkT25s
eV0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXNzaW9uU3RhdGVEYXRhXSk6IFJl
bW92ZWQgZXhwbGljaXQgbGVha1JlZi9hdXRvcmVsZWFzZSBwYWlyLCBkb25lCisgICAgICAgIGJ5
IHRoZSB3cmFwcGVyIHRlbXBsYXRlIGZ1bmN0aW9uIG5vdy4gQWxzbywgdGhlIG9sZCB2ZXJzaW9u
IGV4cGxpY2l0bHkgZGVyZWZlcmVuY2VkCisgICAgICAgIGFuZCB3b3VsZCBub3Qgd29yayB3aGVu
IHRoZSByZXN1bHQgb2YgZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlIHdhcyBudWxsLiBEZWNpZGVk
CisgICAgICAgIG5vdCB0byBhZGQgYSBjYWxsIHRvIHJlbGVhc2VOb25OdWxsIHRvIHByZXNlcnZl
IHRoYXQgcG9zc2libHktaW5jb3JyZWN0IG9wdGltaXphdGlvbiwKKyAgICAgICAgaW5zdGVhZCBh
bGxvd2luZyB0aGUgd3JhcHBlciBmdW5jdGlvbiB0byBnZW5lcmF0ZSBjb2RlIHRvIGhhbmRsZSB0
aGUgbnVsbCBjYXNlLgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Nlc3Npb25TdGF0ZV0pOiBVc2Ug
dGhlIE9iamVjdGl2ZS1DIGF1dG9yZWxlYXNlIGluc3RlYWQgb2YgYWRvcHROUworICAgICAgICBh
bmQgUmV0YWluUHRyJ3MgYXV0b3JlbGVhc2UuCisgICAgICAgICgtW1dLV2ViVmlldyBfc2Vzc2lv
blN0YXRlV2l0aEZpbHRlcjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9y
ZVNlc3Npb25TdGF0ZTphbmROYXZpZ2F0ZTpdKTogUmVtb3ZlZCBleHBsaWNpdCBudWxsIGNoZWNr
IGFuZAorICAgICAgICBsZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXIsIGJvdGggZG9uZSBieSB0aGUg
d3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBub3cuCisgICAgICAgICgtW1dLV2ViVmlldyBfaW5z
ZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlwZTpkYXRhOm9wdGlvbnM6Y29tcGxl
dGlvbjpdKToKKyAgICAgICAgUmVtb3ZlZCBleHBsaWNpdCBsZWFrUmVmL2F1dG9yZWxlYXNlIHBh
aXIsIGRvbmUgYnkgdGhlIHdyYXBwZXIgdGVtcGxhdGUgZnVuY3Rpb24gbm93LgorICAgICAgICAo
LVtXS1dlYlZpZXcgX2RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGVdKTogUmVwbGFjZWQgYSBsZWFr
UmVmL2F1dG9yZWxlYXNlIHBhaXIgd2l0aAorICAgICAgICB1c2Ugb2YgUmV0YWluUHRyJ3MgYXV0
b3JlbGVhc2UuCisgICAgICAgICgtW1dLV2ViVmlldyBfZmluZERlbGVnYXRlXSk6IERpdHRvLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9hcHBsaWNhdGlvbk1hbmlmZXN0
XSk6IFJlbW92ZWQgZXhwbGljaXQgbnVsbCBjaGVjaywKKyAgICAgICAgZG9uZSBieSB0aGUgd3Jh
cHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBub3cuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKCtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGRlZmF1bHREYXRhU3RvcmVdKTogUmVtb3ZlZCBleHBsaWNpdCBXZWJLaXQgbmFtZXNwYWNlCisg
ICAgICAgIGFuZCB1bm5lZWRlZCBjYWxsIHRvIGdldCgpLgorICAgICAgICAoK1tXS1dlYnNpdGVE
YXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV0pOiBSZW1vdmVkIGV4cGxpY2l0IFdlYktp
dCBuYW1lc3BhY2UKKyAgICAgICAgYW5kIGxlYWtSZWYvYXV0b3JlbGVhc2UgcGFpciwgZG9uZSBi
eSB0aGUgd3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBub3cuCisgICAgICAgICgtW1dLV2Vic2l0
ZURhdGFTdG9yZSBodHRwQ29va2llU3RvcmVdKTogUmVtb3ZlZCBleHBsaWNpdCBXZWJLaXQgbmFt
ZXNwYWNlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1h
bmlmZXN0Lm1tOgorICAgICAgICAoK1tfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxpY2F0aW9u
TWFuaWZlc3RGcm9tSlNPTjptYW5pZmVzdFVSTDpkb2N1bWVudFVSTDpdKToKKyAgICAgICAgUmVt
b3ZlZCBleHBsaWNpdCBsZWFrUmVmL2F1dG9yZWxlYXNlIHBhaXIsIGRvbmUgYnkgdGhlIHdyYXBw
ZXIgdGVtcGxhdGUgZnVuY3Rpb24gbm93LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLR2VvbG9jYXRpb25Qb3NpdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6IERp
dHRvLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBjb3B5
V2l0aFpvbmU6XSk6IFVzZSByZXRhaW4gaW5zdGVhZCBvZiBsZWFrUmVmOworICAgICAgICBzbGln
aHRseSBjbGVhcmVyIGZvciB3aGVuIHdlIGNvbnZlcnQgdG8gQVJDLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyQ29udGVudFdvcmxkLm1tOgorICAgICAgICAoK1tfV0tV
c2VyQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6XSk6IFJlbW92ZWQgZXhwbGljaXQgbGVha1Jl
Zi9hdXRvcmVsZWFzZSBwYWlyLAorICAgICAgICBkb25lIGJ5IHRoZSB3cmFwcGVyIHRlbXBsYXRl
IGZ1bmN0aW9uIG5vdy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZVBvbGljaWVzLm1tOgorICAgICAgICAoLVtfV0tXZWJzaXRlUG9saWNpZXMgd2Vic2l0ZURhdGFT
dG9yZV0pOiBSZW1vdmVkIGV4cGxpY2l0IG51bGwgY2hlY2ssIGRvbmUgYnkKKyAgICAgICAgdGhl
IHdyYXBwZXIgdGVtcGxhdGUgZnVuY3Rpb24gbm93LgorCisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpOiBSZW1vdmVkCisg
ICAgICAgIGV4cGxpY2l0IG51bGwgY2hlY2ssIGRvbmUgYnkgdGhlIHdyYXBwZXIgdGVtcGxhdGUg
ZnVuY3Rpb24gbm93LgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOiBEaXR0by4KKyAgICAg
ICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTmF2aWdhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJy
b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvcik6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRp
ZENvbW1pdE5hdmlnYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5p
c2hOYXZpZ2F0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uKTogRGl0dG8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
U2Vzc2lvblN0YXRlQ29kaW5nLm1tOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVTZXNzaW9uU3Rh
dGUpOiBSZW1vdmVkIGV4cGxpY2l0IGxlYWtSZWYvYXV0b3JlbGVhc2UgcGFpciwgZG9uZQorICAg
ICAgICBieSB0aGUgd3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBub3cuIEFsc28sIHRoZSBvbGQg
dmVyc2lvbiBleHBsaWNpdGx5IGRlcmVmZXJlbmNlZAorICAgICAgICBhbmQgd291bGQgbm90IHdv
cmsgd2hlbiB0aGUgcmVzdWx0IG9mIGVuY29kZUxlZ2FjeVNlc3Npb25TdGF0ZSB3YXMgbnVsbC4g
RGVjaWRlZAorICAgICAgICBub3QgdG8gYWRkIGEgY2FsbCB0byByZWxlYXNlTm9uTnVsbCB0byBw
cmVzZXJ2ZSB0aGF0IHBvc3NpYmx5LWluY29ycmVjdCBvcHRpbWl6YXRpb24sCisgICAgICAgIGlu
c3RlYWQgYWxsb3dpbmcgdGhlIHdyYXBwZXIgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgY29kZSB0byBo
YW5kbGUgdGhlIG51bGwgY2FzZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ciBjb25maWd1cmF0aW9uXSk6IFJlbW92ZWQgZXhwbGljaXQgV2ViS2l0IG5hbWVzcGFjZS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lLm1tOgorICAgICAgICAoK1tXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBsb29r
VXBGcmFtZUZyb21IYW5kbGU6XSk6IFJlbW92ZWQgZXhwbGljaXQgbnVsbCBjaGVjaywKKyAgICAg
ICAgZG9uZSBieSB0aGUgd3JhcHBlciB0ZW1wbGF0ZSBmdW5jdGlvbiBub3cuCisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGhpdFRlc3Q6XSk6IFJlbW92ZWQgZXhwbGljaXQgbGVh
a1JlZi9hdXRvcmVsZWFzZSBwYWlyLCBkb25lCisgICAgICAgIGJ5IHRoZSB3cmFwcGVyIHRlbXBs
YXRlIGZ1bmN0aW9uIG5vdy4gQWxzbywgdGhlIG9sZCB2ZXJzaW9uIGV4cGxpY2l0bHkgZGVyZWZl
cmVuY2VkCisgICAgICAgIGFuZCB3b3VsZCBub3Qgd29yayB3aGVuIHRoZSByZXN1bHQgb2YgaGl0
VGVzdCB3YXMgbnVsbC4gRGVjaWRlZCBub3QgdG8gYWRkIGEgY2FsbCB0bworICAgICAgICByZWxl
YXNlTm9uTnVsbCB0byBwcmVzZXJ2ZSB0aGF0IHBvc3NpYmx5LWluY29ycmVjdCBvcHRpbWl6YXRp
b24sIGluc3RlYWQgYWxsb3dpbmcgdGhlCisgICAgICAgIHdyYXBwZXIgZnVuY3Rpb24gdG8gZ2Vu
ZXJhdGUgY29kZSB0byBoYW5kbGUgdGhlIG51bGwgY2FzZS4KKyAgICAgICAgKC1bV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUgY2hpbGRGcmFtZXNdKTogUmVtb3ZlZCBleHBsaWNpdCBsZWFrUmVmL2F1
dG9yZWxlYXNlIHBhaXIsCisgICAgICAgIGRvbmUgYnkgdGhlIHdyYXBwZXIgdGVtcGxhdGUgZnVu
Y3Rpb24gbm93LgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBoYW5kbGVdKTog
RGl0dG8uCisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIF9wYXJlbnRGcmFtZV0p
OiBSZW1vdmVkIGV4cGxpY2l0IG51bGwgY2hlY2ssIGRvbmUgYnkgdGhlCisgICAgICAgIHdyYXBw
ZXIgdGVtcGxhdGUgZnVuY3Rpb24gbm93LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbToKKyAg
ICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCBub2RlSGFuZGxlXSk6IFJl
bW92ZWQgZXhwbGljaXQgbnVsbCBjaGVjayBhbmQKKyAgICAgICAgbGVha1JlZi9hdXRvcmVsZWFz
ZSBwYWlyLCBib3RoIGRvbmUgYnkgdGhlIHdyYXBwZXIgdGVtcGxhdGUgZnVuY3Rpb24gbm93Lgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbk5vZGVIYW5kbGUubW06CisgICAgICAgICgrW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUgbm9kZUhhbmRsZVdpdGhKU1ZhbHVlOmluQ29udGV4dDpdKTogRGl0dG8uCisgICAgICAg
ICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgaHRtbElGcmFtZUVsZW1lbnRDb250ZW50
RnJhbWVdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUg
SFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmVdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgZnJhbWVdKTogRGl0dG8uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luUmFuZ2VIYW5k
bGUubW06CisgICAgICAgICgrW1dLV2ViUHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlIHJhbmdlSGFu
ZGxlV2l0aEpTVmFsdWU6aW5Db250ZXh0Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tXZWJQcm9j
ZXNzUGx1Z0luUmFuZ2VIYW5kbGUgZnJhbWVdKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQu
bW06CisgICAgICAgICgrW1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIHdvcmxkXSk6IERp
dHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBtYWluRnJhbWVdKTogRGl0dG8u
CisgICAgICAgICgrW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBs
b29rVXBCcm93c2luZ0NvbnRleHRGcm9tSGFuZGxlOl0pOiBEaXR0by4KKwogMjAxOC0wOC0xOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBDb25zb2xp
ZGF0ZSBpbmxpbmUgIndyYXBwZXIiIGZ1bmN0aW9ucyBpbiBXZWJLaXQgQVBJIGludG8gZnVuY3Rp
b24gdGVtcGxhdGVzIGFuZCBXcmFwcGVyVHJhaXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCmluZGV4IDJlYjM2YjU2MmFi
ZmUyNjU2NWRiNDFmOTIyNzkyOTAxMzYwZTcxNmIuLjE5OTRmM2RjOWQ0ZmNmZTAxMzA1NzNhOGNh
YmNjYTU3Y2E1NGM2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCkBAIC0xNDMsMTIgKzE0Myw3IEBAIGJvb2wgV0tQ
YWdlSXNVUkxLbm93bkhTVFNIb3N0KFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiB1cmwpCiBXS05h
dmlnYXRpb24gKldLUGFnZUxvYWRVUkxSZXF1ZXN0UmV0dXJuaW5nTmF2aWdhdGlvbihXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIHVybFJlcXVlc3RSZWYpCiB7CiAgICAgYXV0byBy
ZXNvdXJjZVJlcXVlc3QgPSB0b0ltcGwodXJsUmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgp
OwotICAgIGF1dG8gbmF2aWdhdGlvbiA9IHRvSW1wbChwYWdlUmVmKS0+bG9hZFJlcXVlc3QoV1RG
TW92ZShyZXNvdXJjZVJlcXVlc3QpKTsKLQotICAgIGlmICghbmF2aWdhdGlvbikKLSAgICAgICAg
cmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbQVBJOjp3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtS
ZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiB3cmFwcGVyKHRvSW1wbChwYWdlUmVmKS0+
bG9hZFJlcXVlc3QoV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpKSk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQmFja0ZvcndhcmRM
aXN0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQmFja0ZvcndhcmRM
aXN0Lm1tCmluZGV4IDJjOTY5NjU0NzgwMjlkY2QyN2VjNTMxMDM2ZDJhNmE1YzhhZTIzYTkuLjc5
ZTVkMjM5YjliODBjZjY3NDE3ZTkzZjg4OGM5OTk2MjAwNGQ3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0JhY2tGb3J3YXJkTGlzdC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCYWNrRm9yd2FyZExpc3QubW0KQEAg
LTQ0LDQyICs0NCwzNCBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVhbGxvY107CiB9
CiAKLXN0YXRpYyBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKnRvV0tCYWNrRm9yd2FyZExpc3RJdGVt
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0pCi17Ci0gICAgaWYgKCFpdGVtKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIHdyYXBwZXIoKml0ZW0pOwotfQotCiAtIChXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0gKiljdXJyZW50SXRlbQogewotICAgIHJldHVybiB0b1dLQmFja0Zv
cndhcmRMaXN0SXRlbShfbGlzdC0+Y3VycmVudEl0ZW0oKSk7CisgICAgcmV0dXJuIHdyYXBwZXIo
X2xpc3QtPmN1cnJlbnRJdGVtKCkpOwogfQogCiAtIChXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKili
YWNrSXRlbQogewotICAgIHJldHVybiB0b1dLQmFja0ZvcndhcmRMaXN0SXRlbShfbGlzdC0+YmFj
a0l0ZW0oKSk7CisgICAgcmV0dXJuIHdyYXBwZXIoX2xpc3QtPmJhY2tJdGVtKCkpOwogfQogCiAt
IChXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilmb3J3YXJkSXRlbQogewotICAgIHJldHVybiB0b1dL
QmFja0ZvcndhcmRMaXN0SXRlbShfbGlzdC0+Zm9yd2FyZEl0ZW0oKSk7CisgICAgcmV0dXJuIHdy
YXBwZXIoX2xpc3QtPmZvcndhcmRJdGVtKCkpOwogfQogCiAtIChXS0JhY2tGb3J3YXJkTGlzdEl0
ZW0gKilpdGVtQXRJbmRleDooTlNJbnRlZ2VyKWluZGV4CiB7Ci0gICAgcmV0dXJuIHRvV0tCYWNr
Rm9yd2FyZExpc3RJdGVtKF9saXN0LT5pdGVtQXRJbmRleChpbmRleCkpOworICAgIHJldHVybiB3
cmFwcGVyKF9saXN0LT5pdGVtQXRJbmRleChpbmRleCkpOwogfQogCiAtIChOU0FycmF5ICopYmFj
a0xpc3QKIHsKLSAgICByZXR1cm4gW3dyYXBwZXIoX2xpc3QtPmJhY2tMaXN0KCkubGVha1JlZigp
KSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoX2xpc3QtPmJhY2tMaXN0KCkpOwog
fQogCiAtIChOU0FycmF5ICopZm9yd2FyZExpc3QKIHsKLSAgICByZXR1cm4gW3dyYXBwZXIoX2xp
c3QtPmZvcndhcmRMaXN0KCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdy
YXBwZXIoX2xpc3QtPmZvcndhcmRMaXN0KCkpOwogfQogCiAjcHJhZ21hIG1hcmsgV0tPYmplY3Qg
cHJvdG9jb2wgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KaW5kZXggNTYzNTVh
ZjkzODM0ODE2ODdjNGE1ODBmZjQzMWU0ZDgzMDNhOWU3NS4uNGI0MWI0Mzk2OGMyZThiMDA1OWFh
NTFkNDM4YWUzYTMzY2JlN2JiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KQEAgLTYzLDE0ICs2
MywxMyBAQCAtICh2b2lkKWRlYWxsb2MKICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3RvcmUKIHsK
ICAgICBjb25zdCBib29sIGxlZ2FjeUZpbGVuYW1lID0gZmFsc2U7Ci0gICAgcmV0dXJuIFdlYktp
dDo6d3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpkZWZhdWx0U3RvcmUobGVnYWN5
RmlsZW5hbWUpKTsKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3Jl
OjpkZWZhdWx0U3RvcmUobGVnYWN5RmlsZW5hbWUpKTsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKXN0
b3JlV2l0aFVSTDooTlNVUkwgKil1cmwKIHsKICAgICBjb25zdCBib29sIGxlZ2FjeUZpbGVuYW1l
ID0gZmFsc2U7Ci0gICAgUmVmPEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU+IHN0b3JlID0gQVBJ
OjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0aCh1cmwuYWJzb2x1dGVVUkwuZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uLCBsZWdhY3lGaWxlbmFtZSk7Ci0gICAgcmV0dXJuIFdlYktp
dDo6d3JhcHBlcihzdG9yZS5sZWFrUmVmKCkpOworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29u
dGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJsLmFic29sdXRlVVJMLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbiwgbGVnYWN5RmlsZW5hbWUpKTsKIH0KIAogLSAodm9pZCljb21waWxl
Q29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29k
ZWRDb250ZW50UnVsZUxpc3Q6KE5TU3RyaW5nICopZW5jb2RlZENvbnRlbnRSdWxlTGlzdCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tDb250ZW50UnVsZUxpc3QgKiwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcgpAQCAtOTQsNyArOTMsNyBAQCAtICh2b2lkKV9jb21waWxlQ29udGVu
dFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250
ZQogICAgICAgICAgICAgLy8gV2Ugd2FudCB0byB1c2UgZXJyb3IubWVzc2FnZSwgYnV0IGhlcmUg
d2Ugd2FudCB0byBvbmx5IHBhc3Mgb24gQ29tcGlsZUZhaWxlZCB3aXRoIHVzZXJJbmZvIGZyb20g
dGhlIHN0ZDo6ZXJyb3JfY29kZS4KICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJv
ckNvbnRlbnRSdWxlTGlzdFN0b3JlQ29tcGlsZUZhaWxlZCB1c2VySW5mbzp1c2VySW5mb10pOwog
ICAgICAgICB9Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6d3JhcHBlcigqY29u
dGVudFJ1bGVMaXN0LmdldCgpKSwgbmlsKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3Jh
cHBlcigqY29udGVudFJ1bGVMaXN0KSwgbmlsKTsKICAgICB9KTsKIH0KIApAQCAtMTA4LDcgKzEw
Nyw3IEBAIC0gKHZvaWQpbG9va1VwQ29udGVudFJ1bGVMaXN0Rm9ySWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudGlmaWVyIGNvbXBsZXRpb25IYW5kCiAgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBj
b2RlOndrRXJyb3IgdXNlckluZm86dXNlckluZm9dKTsKICAgICAgICAgfQogCi0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6d3JhcHBlcigqY29udGVudFJ1bGVMaXN0LmdldCgpKSwg
bmlsKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcigqY29udGVudFJ1bGVMaXN0
KSwgbmlsKTsKICAgICB9KTsKIH0KIApAQCAtMTgwLDE0ICsxNzksMTMgQEAgLSAodm9pZClfY29t
cGlsZUNvbnRlbnRSdWxlTGlzdEZvcklkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBl
bmNvZGVkQ29udGUKICsgKGluc3RhbmNldHlwZSlkZWZhdWx0U3RvcmVXaXRoTGVnYWN5RmlsZW5h
bWUKIHsKICAgICBjb25zdCBib29sIGxlZ2FjeUZpbGVuYW1lID0gdHJ1ZTsKLSAgICByZXR1cm4g
V2ViS2l0Ojp3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmRlZmF1bHRTdG9yZShs
ZWdhY3lGaWxlbmFtZSkpOworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0
U3RvcmU6OmRlZmF1bHRTdG9yZShsZWdhY3lGaWxlbmFtZSkpOwogfQogCiArIChpbnN0YW5jZXR5
cGUpc3RvcmVXaXRoVVJMQW5kTGVnYWN5RmlsZW5hbWU6KE5TVVJMICopdXJsCiB7CiAgICAgY29u
c3QgYm9vbCBsZWdhY3lGaWxlbmFtZSA9IHRydWU7Ci0gICAgUmVmPEFQSTo6Q29udGVudFJ1bGVM
aXN0U3RvcmU+IHN0b3JlID0gQVBJOjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3RvcmVXaXRoUGF0
aCh1cmwuYWJzb2x1dGVVUkwuZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uLCBsZWdhY3lGaWxlbmFt
ZSk7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihzdG9yZS5sZWFrUmVmKCkpOworICAgIHJl
dHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OnN0b3JlV2l0aFBhdGgodXJs
LmFic29sdXRlVVJMLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbiwgbGVnYWN5RmlsZW5hbWUpKTsK
IH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRnJhbWVJbmZvLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJh
bWVJbmZvLm1tCmluZGV4IGJlNmViM2Y3ODQzMmU5OTE3NjRiOTU5OTQ2ZjA2MzgzZDAwMGFhMTMu
LjNkMWE2ZGU4NzNlMjhkM2ZjODFlZDBkYzUwNjI4MGU4MTU3Y2JmY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0KQEAgLTg2LDcgKzg2
LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLRnJhbWVJbmZvIChXS1ByaXZhdGUpCiAKIC0gKF9XS0Zy
YW1lSGFuZGxlICopX2hhbmRsZQogewotICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX2ZyYW1l
SW5mby0+aGFuZGxlKCkpOworICAgIHJldHVybiB3cmFwcGVyKF9mcmFtZUluZm8tPmhhbmRsZSgp
KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCmluZGV4IDBhMDg2M2E4MGY2MWM2NjIyYTIxZGJlZDcy
Zjk2N2JmZDg4NmEzMWYuLjU1MzI0YTFiNmI4NGM0NzE2YWNjZTQ3YzE2ZmU0NzQyM2Q3NWM1OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29r
aWVTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tIVFRQ
Q29va2llU3RvcmUubW0KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2
b2lkIGNvb2tpZXNEaWRDaGFuZ2UoQVBJOjpIVFRQQ29va2llU3RvcmUmIGNvb2tpZVN0b3JlKSBm
aW5hbAogICAgIHsKLSAgICAgICAgW21fb2JzZXJ2ZXIuZ2V0KCkgY29va2llc0RpZENoYW5nZUlu
Q29va2llU3RvcmU6V2ViS2l0Ojp3cmFwcGVyKGNvb2tpZVN0b3JlKV07CisgICAgICAgIFttX29i
c2VydmVyIGNvb2tpZXNEaWRDaGFuZ2VJbkNvb2tpZVN0b3JlOndyYXBwZXIoY29va2llU3RvcmUp
XTsKICAgICB9CiAKICAgICBXZWFrT2JqQ1B0cjxpZDxXS0hUVFBDb29raWVTdG9yZU9ic2VydmVy
Pj4gbV9vYnNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCmluZGV4IDNmOGZmNjk1YjIyNDI1Y2UyN2VlZTlh
YWI1ZjhlM2NjZjkzYjdmZDEuLmM3ZDU5MDU2MzI5ODJkY2E5OWNlYzM5OGQ5OThjYWFmYTgyYTE5
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmln
YXRpb25BY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkFjdGlvbi5tbQpAQCAtMTM3LDE2ICsxMzcsMTIgQEAgLSAoTlNTdHJpbmcgKilk
ZXNjcmlwdGlvbgogCiAtIChXS0ZyYW1lSW5mbyAqKXNvdXJjZUZyYW1lCiB7Ci0gICAgaWYgKEFQ
STo6RnJhbWVJbmZvKiBmcmFtZUluZm8gPSBfbmF2aWdhdGlvbkFjdGlvbi0+c291cmNlRnJhbWUo
KSkKLSAgICAgICAgcmV0dXJuIHdyYXBwZXIoKmZyYW1lSW5mbyk7Ci0gICAgcmV0dXJuIG5pbDsK
KyAgICByZXR1cm4gd3JhcHBlcihfbmF2aWdhdGlvbkFjdGlvbi0+c291cmNlRnJhbWUoKSk7CiB9
CiAKIC0gKFdLRnJhbWVJbmZvICopdGFyZ2V0RnJhbWUKIHsKLSAgICBpZiAoQVBJOjpGcmFtZUlu
Zm8qIGZyYW1lSW5mbyA9IF9uYXZpZ2F0aW9uQWN0aW9uLT50YXJnZXRGcmFtZSgpKQotICAgICAg
ICByZXR1cm4gd3JhcHBlcigqZnJhbWVJbmZvKTsKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVy
biB3cmFwcGVyKF9uYXZpZ2F0aW9uQWN0aW9uLT50YXJnZXRGcmFtZSgpKTsKIH0KIAogLSAoV0tO
YXZpZ2F0aW9uVHlwZSluYXZpZ2F0aW9uVHlwZQpAQCAtMjI2LDEwICsyMjIsNyBAQCAtIChCT09M
KV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzCiAKIC0gKF9XS1VzZXJJbml0aWF0ZWRBY3Rpb24gKilf
dXNlckluaXRpYXRlZEFjdGlvbgogewotICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGlvbiA9IF9u
YXZpZ2F0aW9uQWN0aW9uLT51c2VySW5pdGlhdGVkQWN0aW9uKCk7Ci0gICAgaWYgKHVzZXJJbml0
aWF0ZWRBY3Rpb24pCi0gICAgICAgIHJldHVybiB3cmFwcGVyKCp1c2VySW5pdGlhdGVkQWN0aW9u
KTsKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiB3cmFwcGVyKF9uYXZpZ2F0aW9uQWN0aW9u
LT51c2VySW5pdGlhdGVkQWN0aW9uKCkpOwogfQogCiAtIChCT09MKV9pc1JlZGlyZWN0CkBAIC0y
MzksMTAgKzIzMiw3IEBAIC0gKEJPT0wpX2lzUmVkaXJlY3QKIAogLSAoV0tOYXZpZ2F0aW9uICop
X21haW5GcmFtZU5hdmlnYXRpb24KIHsKLSAgICBpZiAoYXV0byogbmF2aWdhdGlvbiA9IF9uYXZp
Z2F0aW9uQWN0aW9uLT5tYWluRnJhbWVOYXZpZ2F0aW9uKCkpCi0gICAgICAgIHJldHVybiB3cmFw
cGVyKCpuYXZpZ2F0aW9uKTsKLSAgICAKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiB3cmFw
cGVyKF9uYXZpZ2F0aW9uQWN0aW9uLT5tYWluRnJhbWVOYXZpZ2F0aW9uKCkpOwogfQogCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3Bl
blBhbmVsUGFyYW1ldGVycy5tbQppbmRleCA4ZDI1MDliMzM1ZmY2NWY2MmM0NmFjNWZhN2Q4MTZm
ODg0NWVkMTU2Li4zZGJkNTQ1MjJhNjVkYjc0MWIwNmJmNDdiNWNhMDM3NWYxNGU5MjNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5Q
YW5lbFBhcmFtZXRlcnMubW0KQEAgLTU1LDEyICs1NSwxMiBAQCBAaW1wbGVtZW50YXRpb24gV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzIChXS1ByaXZhdGUpCiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KilfYWNjZXB0ZWRNSU1FVHlwZXMKIHsKLSAgICByZXR1cm4gW3dyYXBwZXIoX29wZW5QYW5lbFBh
cmFtZXRlcnMtPmFjY2VwdE1JTUVUeXBlcygpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAg
IHJldHVybiB3cmFwcGVyKF9vcGVuUGFuZWxQYXJhbWV0ZXJzLT5hY2NlcHRNSU1FVHlwZXMoKSk7
CiB9CiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilfYWNjZXB0ZWRGaWxlRXh0ZW5zaW9ucwog
ewotICAgIHJldHVybiBbd3JhcHBlcihfb3BlblBhbmVsUGFyYW1ldGVycy0+YWNjZXB0RmlsZUV4
dGVuc2lvbnMoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gd3JhcHBlcihf
b3BlblBhbmVsUGFyYW1ldGVycy0+YWNjZXB0RmlsZUV4dGVuc2lvbnMoKSk7CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVu
Y2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMu
bW0KaW5kZXggYmU0MzI4NWE1ZjJhZjA2NzVlNWIyNDIwM2E5NDUxNzcyMzc1ZWIwNi4uYzQ5YjQ3
NjhhMmQ4MDFlMWEyOTlmNGM2OWYwYjM3YzhiZDIwYWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KQEAgLTk3LDcgKzk3LDcg
QEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogCiAtIChp
ZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKIHsKLSAgICByZXR1cm4gd3JhcHBlcihfcHJl
ZmVyZW5jZXMtPmNvcHkoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBbd3JhcHBlcihfcHJlZmVy
ZW5jZXMtPmNvcHkoKSkgcmV0YWluXTsKIH0KIAogLSAoQ0dGbG9hdCltaW5pbXVtRm9udFNpemUK
QEAgLTUzMCw3ICs1MzAsNyBAQCAtICh2b2lkKV9zZXRGaXhlZFBpdGNoRm9udEZhbWlseTooTlNT
dHJpbmcgKilmaXhlZFBpdGNoRm9udEZhbWlseQogKyAoTlNBcnJheTxfV0tFeHBlcmltZW50YWxG
ZWF0dXJlICo+ICopX2V4cGVyaW1lbnRhbEZlYXR1cmVzCiB7CiAgICAgYXV0byBmZWF0dXJlcyA9
IFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmV4cGVyaW1lbnRhbEZlYXR1cmVzKCk7Ci0gICAgcmV0
dXJuIFt3cmFwcGVyKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGZlYXR1cmVzKSkubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRl
KFdURk1vdmUoZmVhdHVyZXMpKSk7CiB9CiAKIC0gKEJPT0wpX2lzRW5hYmxlZEZvckZlYXR1cmU6
KF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKilmZWF0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGFiMzE5ZTc5ZWRkMTc5
MTVmZTliMTViNjlhOGRiY2FhYjVkZTEyNjMuLmUzOTBiOWQzNTU2NDQ1NTZhMTU3MmY2N2E3MDYx
YjU0YjJiNmRhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0xMjYsNyArMTI2LDcgQEAgLSAoTlNTdHJpbmcgKilkZXNj
cmlwdGlvbgogCiAtIChfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gKilfY29uZmlndXJhdGlv
bgogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+Y29uZmlndXJhdGlvbigpLmNv
cHkoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+Y29uZmln
dXJhdGlvbigpLmNvcHkoKSk7CiB9CiAKIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNr
SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVt
ZVRhc2tJbnRlcm5hbC5oCmluZGV4IDU3OTc1ODBkMjI0NTYwZWM4ZTdhNjRmM2VhNTU3YTBlMGVl
ZjJmNDYuLjUyYjg3NDg0OTIwYjhlMDA0MmFjOTAzNzdkMzQwYzJkZDJmODhmOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2tJbnRl
cm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVt
ZVRhc2tJbnRlcm5hbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM1LDExICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1p
bmxpbmUgaWQ8V0tVUkxTY2hlbWVUYXNrPiB3cmFwcGVyKEFQSTo6VVJMU2NoZW1lVGFzayYgdXJs
U2NoZW1lVGFzaykKLXsKLSAgICBBU1NFUlQoW3VybFNjaGVtZVRhc2sud3JhcHBlcigpIGlzS2lu
ZE9mQ2xhc3M6W1dLVVJMU2NoZW1lVGFza0ltcGwgY2xhc3NdXSk7Ci0gICAgcmV0dXJuIChpZDxX
S1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sud3JhcHBlcigpOwotfQordGVtcGxhdGU8PiBz
dHJ1Y3QgV3JhcHBlclRyYWl0czxBUEk6OlVSTFNjaGVtZVRhc2s+IHsKKyAgICB1c2luZyBXcmFw
cGVyQ2xhc3MgPSBXS1VSTFNjaGVtZVRhc2tJbXBsOworfTsKIAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlclNjcmlwdC5tbQppbmRleCAxNzQwYTIy
ZDMwNjg4OThlNzgyZGZiYjAxNmIwMmMzNzc1NTM3YTQyLi45Y2Y2NjgxYWFiMzkxYzM1YjYzNzkw
N2IxMTEwODZmODI3OTc2ZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVc2VyU2NyaXB0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJTY3JpcHQubW0KQEAgLTEwMiw3ICsxMDIsNyBAQCAtIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjZSBpbmplY3Rpb25UaW1lOihXS1Vz
ZXJTY3JpcHRJbgogCiAtIChfV0tVc2VyQ29udGVudFdvcmxkICopX3VzZXJDb250ZW50V29ybGQK
IHsKLSAgICByZXR1cm4gQVBJOjp3cmFwcGVyKF91c2VyU2NyaXB0LT51c2VyQ29udGVudFdvcmxk
KCkpOworICAgIHJldHVybiB3cmFwcGVyKF91c2VyU2NyaXB0LT51c2VyQ29udGVudFdvcmxkKCkp
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCA2Y2I2MDA5M2NiMDk2OTE3MGViODlhZjI1NGM2OGFjZTQ1NmY4NWQ3Li5m
MDIzMDE4MTNlMDJhZjMzNjJiZmM1YjNjNDdlMzlkYWZkMWM0ZjVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTg1NywxMSArODU3LDcg
QEAgLSAodm9pZClfc2V0SWNvbkxvYWRpbmdEZWxlZ2F0ZTooaWQ8X1dLSWNvbkxvYWRpbmdEZWxl
Z2F0ZT4paWNvbkxvYWRpbmdEZWxlZ2F0ZQogCiAtIChXS05hdmlnYXRpb24gKilsb2FkUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdl
LT5sb2FkUmVxdWVzdChyZXF1ZXN0KTsKLSAgICBpZiAoIW5hdmlnYXRpb24pCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0KLSAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBh
dXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRSZXF1ZXN0KHJlcXVl
c3QpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFs
bG93aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWRBY2Nlc3NVUkwKQEAgLTg3MiwxMSAr
ODY4LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICopbG9hZEZpbGVVUkw6KE5TVVJMICopVVJMIGFsbG93
aW5nUmVhZEFjY2Vzc1RvVVJMOihOU1VSTCAqKXJlYWQKICAgICBpZiAoIVtyZWFkQWNjZXNzVVJM
IGlzRmlsZVVSTF0pCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVu
dEV4Y2VwdGlvbiBmb3JtYXQ6QCIlQCBpcyBub3QgYSBmaWxlIFVSTCIsIHJlYWRBY2Nlc3NVUkxd
OwogCi0gICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPmxvYWRGaWxlKFtVUkwgX3dlYl9vcmln
aW5hbERhdGFBc1dURlN0cmluZ10sIFtyZWFkQWNjZXNzVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNX
VEZTdHJpbmddKTsKLSAgICBpZiAoIW5hdmlnYXRpb24pCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07
CisgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWRGaWxlKFtVUkwgX3dlYl9vcmlnaW5hbERh
dGFBc1dURlN0cmluZ10sIFtyZWFkQWNjZXNzVVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJp
bmddKSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAq
KXN0cmluZyBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKQEAgLTg4OCwyMCArODgwLDEyIEBAIC0g
KFdLTmF2aWdhdGlvbiAqKWxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBiYXNlVVJM
OihOU1VSTCAqKWJhc2VVUkwKIAogLSAoV0tOYXZpZ2F0aW9uICopbG9hZERhdGE6KE5TRGF0YSAq
KWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1l
OihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VV
UkwKIHsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBj
aGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcpOwotICAgIGlmICgh
bmF2aWdhdGlvbikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbd3JhcHBlcigq
bmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gd3JhcHBlcihf
cGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyks
IGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwu
YWJzb2x1dGVTdHJpbmcpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKLSAgICBhdXRvIG5hdmln
YXRpb24gPSBfcGFnZS0+Z29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtLl9pdGVtKTsKLSAgICBpZiAo
IW5hdmlnYXRpb24pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1cm4gW3dyYXBwZXIo
Km5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIo
X3BhZ2UtPmdvVG9CYWNrRm9yd2FyZEl0ZW0oaXRlbS5faXRlbSkpOwogfQogCiAtIChOU1N0cmlu
ZyAqKXRpdGxlCkBAIC05NTQsMjAgKzkzOCwxMiBAQCAtIChCT09MKWNhbkdvRm9yd2FyZAogCiAt
IChXS05hdmlnYXRpb24gKilnb0JhY2sKIHsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+
Z29CYWNrKCk7Ci0gICAgaWYgKCFuYXZpZ2F0aW9uKQotICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb0JhY2soKSk7CiB9CiAKIC0gKFdLTmF2aWdhdGlv
biAqKWdvRm9yd2FyZAogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5nb0ZvcndhcmQo
KTsKLSAgICBpZiAoIW5hdmlnYXRpb24pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICByZXR1
cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0
dXJuIHdyYXBwZXIoX3BhZ2UtPmdvRm9yd2FyZCgpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICop
cmVsb2FkCkBAIC05NzYsMjAgKzk1MiwxMiBAQCAtIChXS05hdmlnYXRpb24gKilyZWxvYWQKICAg
ICBpZiAobGlua2VkT25PckFmdGVyKFdlYktpdDo6U0RLVmVyc2lvbjo6Rmlyc3RXaXRoRXhwaXJl
ZE9ubHlSZWxvYWRCZWhhdmlvcikpCiAgICAgICAgIHJlbG9hZE9wdGlvbnMgfD0gV2ViQ29yZTo6
UmVsb2FkT3B0aW9uOjpFeHBpcmVkT25seTsKIAotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdl
LT5yZWxvYWQocmVsb2FkT3B0aW9ucyk7Ci0gICAgaWYgKCFuYXZpZ2F0aW9uKQotICAgICAgICBy
ZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkg
YXV0b3JlbGVhc2VdOworICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5yZWxvYWQocmVsb2FkT3B0
aW9ucykpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilyZWxvYWRGcm9tT3JpZ2luCiB7Ci0gICAg
YXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkZy
b21PcmlnaW4pOwotICAgIGlmICghbmF2aWdhdGlvbikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQot
ICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsK
KyAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6
RnJvbU9yaWdpbikpOwogfQogCiAtICh2b2lkKXN0b3BMb2FkaW5nCkBAIC0xMjQ1LDE2ICsxMjEz
LDE2IEBAIC0gKHZvaWQpX2RpZEluc2VydEF0dGFjaG1lbnQ6KE5TU3RyaW5nICopaWRlbnRpZmll
ciB3aXRoU291cmNlOihOU1N0cmluZyAqKXNvdXJjCiB7CiAgICAgaWQgPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+IHVpRGVsZWdhdGUgPSAoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KXNlbGYuVUlEZWxl
Z2F0ZTsKICAgICBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzpkaWRJbnNlcnRBdHRhY2htZW50OndpdGhTb3VyY2U6KV0pCi0gICAgICAgIFt1aURl
bGVnYXRlIF93ZWJWaWV3OnNlbGYgZGlkSW5zZXJ0QXR0YWNobWVudDpbd3JhcHBlcihBUEk6OkF0
dGFjaG1lbnQ6OmNyZWF0ZShpZGVudGlmaWVyLCAqX3BhZ2UpLmxlYWtSZWYoKSkgYXV0b3JlbGVh
c2VdIHdpdGhTb3VyY2U6c291cmNlXTsKKyAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2Vs
ZiBkaWRJbnNlcnRBdHRhY2htZW50OndyYXBwZXIoQVBJOjpBdHRhY2htZW50OjpjcmVhdGUoaWRl
bnRpZmllciwgKl9wYWdlKSkgd2l0aFNvdXJjZTpzb3VyY2VdOwogICAgIGVsc2UgaWYgKFt1aURl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkSW5zZXJ0QXR0
YWNobWVudDopXSkKLSAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBkaWRJbnNlcnRB
dHRhY2htZW50Olt3cmFwcGVyKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpf
cGFnZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV1dOworICAgICAgICBbdWlEZWxlZ2F0ZSBfd2Vi
VmlldzpzZWxmIGRpZEluc2VydEF0dGFjaG1lbnQ6d3JhcHBlcihBUEk6OkF0dGFjaG1lbnQ6OmNy
ZWF0ZShpZGVudGlmaWVyLCAqX3BhZ2UpKV07CiB9CiAKIC0gKHZvaWQpX2RpZFJlbW92ZUF0dGFj
aG1lbnQ6KE5TU3RyaW5nICopaWRlbnRpZmllcgogewogICAgIGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPiB1aURlbGVnYXRlID0gKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilzZWxmLlVJRGVsZWdh
dGU7CiAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dl
YlZpZXc6ZGlkUmVtb3ZlQXR0YWNobWVudDopXSkKLSAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZp
ZXc6c2VsZiBkaWRSZW1vdmVBdHRhY2htZW50Olt3cmFwcGVyKEFQSTo6QXR0YWNobWVudDo6Y3Jl
YXRlKGlkZW50aWZpZXIsICpfcGFnZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV1dOworICAgICAg
ICBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpzZWxmIGRpZFJlbW92ZUF0dGFjaG1lbnQ6d3JhcHBlcihB
UEk6OkF0dGFjaG1lbnQ6OmNyZWF0ZShpZGVudGlmaWVyLCAqX3BhZ2UpKV07CiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtNDIyMywyMCArNDE5MSwxMiBAQCAt
ICh2b2lkKV9sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVS
TDooTlNVUkwgKiliYXNlVVJMIGZvcgogCiAtIChXS05hdmlnYXRpb24gKilfbG9hZERhdGE6KE5T
RGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAq
KWJhc2VVUkwgdXNlckRhdGE6KGlkKXVzZXJEYXRhCiB7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0g
X3BhZ2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMp
LCBkYXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJM
LmFic29sdXRlU3RyaW5nLCBXZWJLaXQ6Ok9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKHVzZXJEYXRh
KS5wdHIoKSk7Ci0gICAgaWYgKCFuYXZpZ2F0aW9uKQotICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgcmV0dXJuIFt3cmFwcGVyKCpuYXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOwor
ICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVu
Y29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZywgV2ViS2l0OjpPYmpDT2JqZWN0R3Jh
cGg6OmNyZWF0ZSh1c2VyRGF0YSkucHRyKCkpKTsKIH0KIAogLSAoV0tOYXZpZ2F0aW9uICopX2xv
YWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHNob3VsZE9wZW5FeHRlcm5hbFVSTHM6
KEJPT0wpc2hvdWxkT3BlbkV4dGVybmFsVVJMcwogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9w
YWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzID8gV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgOiBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAgaWYgKCFu
YXZpZ2F0aW9uKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpu
YXZpZ2F0aW9uLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiB3cmFwcGVyKF9w
YWdlLT5sb2FkUmVxdWVzdChyZXF1ZXN0LCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzID8gV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgOiBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdykpOwogfQogCiAtIChO
U0FycmF5ICopX2NlcnRpZmljYXRlQ2hhaW4KQEAgLTQzMTQsMjAgKzQyNzQsMTIgQEAgLSAodm9p
ZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzCiAKIC0gKFdLTmF2aWdhdGlvbiAqKV9yZWxvYWRXaXRo
b3V0Q29udGVudEJsb2NrZXJzCiB7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9h
ZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpOwotICAgIGlm
ICghbmF2aWdhdGlvbikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbd3JhcHBl
cigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gd3JhcHBl
cihfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RGlzYWJsZUNvbnRlbnRCbG9j
a2VycykpOwogfQogCiAtIChXS05hdmlnYXRpb24gKilfcmVsb2FkRXhwaXJlZE9ubHkKIHsKLSAg
ICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6
RXhwaXJlZE9ubHkpOwotICAgIGlmICghbmF2aWdhdGlvbikKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIHJldHVybiBbd3JhcHBlcigqbmF2aWdhdGlvbi5sZWFrUmVmKCkpIGF1dG9yZWxlYXNl
XTsKKyAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+cmVsb2FkKFdlYkNvcmU6OlJlbG9hZE9wdGlv
bjo6RXhwaXJlZE9ubHkpKTsKIH0KIAogLSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzQW5k
UmVzZXRTdGF0ZQpAQCAtNDQwNCwxNSArNDM1NiwxMyBAQCAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5
RGlkR2V0U3BlYWtTZWxlY3Rpb25Db250ZW50OihOU1N0cmluZyAqKWNvbnRlbnQKIAogLSAoTlNE
YXRhICopX3Nlc3Npb25TdGF0ZURhdGEKIHsKLSAgICBXZWJLaXQ6OlNlc3Npb25TdGF0ZSBzZXNz
aW9uU3RhdGUgPSBfcGFnZS0+c2Vzc2lvblN0YXRlKCk7Ci0KICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgbm90IHVzZSB0aGUgbGVnYWN5IHNlc3Npb24gc3RhdGUgZW5jb2Rlci4KLSAgICByZXR1
cm4gW3dyYXBwZXIoKldlYktpdDo6ZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0
ZSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoV2ViS2l0Ojpl
bmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoX3BhZ2UtPnNlc3Npb25TdGF0ZSgpKSk7CiB9CiAKIC0g
KF9XS1Nlc3Npb25TdGF0ZSAqKV9zZXNzaW9uU3RhdGUKIHsKLSAgICByZXR1cm4gYWRvcHROUyhb
W19XS1Nlc3Npb25TdGF0ZSBhbGxvY10gX2luaXRXaXRoU2Vzc2lvblN0YXRlOl9wYWdlLT5zZXNz
aW9uU3RhdGUoKV0pLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIFtbW19XS1Nlc3Npb25TdGF0
ZSBhbGxvY10gX2luaXRXaXRoU2Vzc2lvblN0YXRlOl9wYWdlLT5zZXNzaW9uU3RhdGUoKV0gYXV0
b3JlbGVhc2VdOwogfQogCiAtIChfV0tTZXNzaW9uU3RhdGUgKilfc2Vzc2lvblN0YXRlV2l0aEZp
bHRlcjooQk9PTCAoXikoV0tCYWNrRm9yd2FyZExpc3RJdGVtICppdGVtKSlmaWx0ZXIKQEAgLTQ0
MjQsNyArNDM3NCw3IEBAIC0gKF9XS1Nlc3Npb25TdGF0ZSAqKV9zZXNzaW9uU3RhdGVXaXRoRmls
dGVyOihCT09MICheKShXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKml0CiAgICAgICAgIHJldHVybiAo
Ym9vbClmaWx0ZXIod3JhcHBlcihpdGVtKSk7CiAgICAgfSk7CiAKLSAgICByZXR1cm4gYWRvcHRO
UyhbW19XS1Nlc3Npb25TdGF0ZSBhbGxvY10gX2luaXRXaXRoU2Vzc2lvblN0YXRlOnNlc3Npb25T
dGF0ZV0pLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIFtbW19XS1Nlc3Npb25TdGF0ZSBhbGxv
Y10gX2luaXRXaXRoU2Vzc2lvblN0YXRlOnNlc3Npb25TdGF0ZV0gYXV0b3JlbGVhc2VdOwogfQog
CiAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGE6KE5TRGF0YSAqKXNlc3Npb25T
dGF0ZURhdGEKQEAgLTQ0MzksMTEgKzQzODksNyBAQCAtICh2b2lkKV9yZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZURhdGE6KE5TRGF0YSAqKXNlc3Npb25TdGF0ZURhdGEKIAogLSAoV0tOYXZpZ2F0aW9u
ICopX3Jlc3RvcmVTZXNzaW9uU3RhdGU6KF9XS1Nlc3Npb25TdGF0ZSAqKXNlc3Npb25TdGF0ZSBh
bmROYXZpZ2F0ZTooQk9PTCluYXZpZ2F0ZQogewotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdl
LT5yZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShzZXNzaW9uU3RhdGUtPl9zZXNzaW9uU3RhdGUsIG5h
dmlnYXRlKTsKLSAgICBpZiAoIW5hdmlnYXRpb24pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAg
ICByZXR1cm4gW3dyYXBwZXIoKm5hdmlnYXRpb24ubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Cisg
ICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKHNlc3Npb25T
dGF0ZS0+X3Nlc3Npb25TdGF0ZSwgbmF2aWdhdGUpKTsKIH0KIAogLSAodm9pZClfY2xvc2UKQEAg
LTQ0NjMsNyArNDQwOSw3IEBAIC0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdp
dGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZW50VHlwCiAgICAgICAgICAgICBj
YXB0dXJlZEhhbmRsZXIoZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25l
KTsKICAgICB9KTsKIAotICAgIHJldHVybiBbd3JhcHBlcihBUEk6OkF0dGFjaG1lbnQ6OmNyZWF0
ZShpZGVudGlmaWVyLCAqX3BhZ2UpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVy
biB3cmFwcGVyKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpfcGFnZSkpOwog
I2Vsc2UKICAgICByZXR1cm4gbmlsOwogI2VuZGlmCkBAIC00NzQ3LDcgKzQ2OTMsNyBAQCAtIChp
ZCA8X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4pX2RpYWdub3N0aWNMb2dnaW5nRGVsZWdh
dGUKICAgICBpZiAoIWRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KQogICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgcmV0dXJuIFtzdGF0aWNfY2FzdDxXZWJLaXQ6OkRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50Jj4oKmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KS5kZWxlZ2F0ZSgpLmxlYWtSZWYoKSBhdXRv
cmVsZWFzZV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdDo6RGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQmPigqZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQpLmRlbGVnYXRlKCkuYXV0b3JlbGVh
c2UoKTsKIH0KIAogLSAodm9pZClfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZTooaWQ8X1dL
RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4pZGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZQpAQCAt
NDc2MSw3ICs0NzA3LDcgQEAgLSAodm9pZClfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZToo
aWQ8X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4pZGlhZ25vc3QKIAogLSAoaWQgPF9XS0Zp
bmREZWxlZ2F0ZT4pX2ZpbmREZWxlZ2F0ZQogewotICAgIHJldHVybiBbc3RhdGljX2Nhc3Q8V2Vi
S2l0OjpGaW5kQ2xpZW50Jj4oX3BhZ2UtPmZpbmRDbGllbnQoKSkuZGVsZWdhdGUoKS5sZWFrUmVm
KCkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRDbGll
bnQmPihfcGFnZS0+ZmluZENsaWVudCgpKS5kZWxlZ2F0ZSgpLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC0gKHZvaWQpX3NldEZpbmREZWxlZ2F0ZTooaWQ8X1dLRmluZERlbGVnYXRlPilmaW5kRGVsZWdh
dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggOGE4MDUyZDNmMGU3MzMyY2E2MzZiZTdlZGJi
ZWVhMmU1ZTMzNjQ0NC4uYmYxODdmZmNiNjlmZDYyNDYzMjY2OTE0Y2E1MjQ4ZWRjZjhjMGU4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTg0OSw5ICs4NDksNyBAQCAtICh2b2lkKV9zZXRD
b250cm9sbGVkQnlBdXRvbWF0aW9uOihCT09MKWNvbnRyb2xsZWRCeUF1dG9tYXRpb24KIAogLSAo
X1dLQXBwbGljYXRpb25NYW5pZmVzdCAqKV9hcHBsaWNhdGlvbk1hbmlmZXN0CiB7Ci0gICAgaWYg
KGF1dG8qIG1hbmlmZXN0ID0gX3BhZ2VDb25maWd1cmF0aW9uLT5hcHBsaWNhdGlvbk1hbmlmZXN0
KCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVyKCptYW5pZmVzdCk7Ci0gICAgcmV0dXJuIG5pbDsK
KyAgICByZXR1cm4gd3JhcHBlcihfcGFnZUNvbmZpZ3VyYXRpb24tPmFwcGxpY2F0aW9uTWFuaWZl
c3QoKSk7CiB9CiAKIC0gKHZvaWQpX3NldEFwcGxpY2F0aW9uTWFuaWZlc3Q6KF9XS0FwcGxpY2F0
aW9uTWFuaWZlc3QgKilhcHBsaWNhdGlvbk1hbmlmZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA4MjUy
MzIyNjgyZWE5YTgwNjI0NWNjZTU4Njg1Y2FkOTQyMjQ4ZjE4Li4yNDVlNzA3ZTI2YzExYjViODUx
NmE1NTU4MzY4N2JhODAwZGMzOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTQ4LDEyICs0OCwxMiBA
QCBAaW1wbGVtZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlCiAKICsgKFdLV2Vic2l0ZURhdGFT
dG9yZSAqKWRlZmF1bHREYXRhU3RvcmUKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLmdldCgpKTsKKyAgICByZXR1
cm4gd3JhcHBlcihBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKSk7CiB9
CiAKICsgKFdLV2Vic2l0ZURhdGFTdG9yZSAqKW5vblBlcnNpc3RlbnREYXRhU3RvcmUKIHsKLSAg
ICByZXR1cm4gW1dlYktpdDo6d3JhcHBlcihBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5v
blBlcnNpc3RlbnREYXRhU3RvcmUoKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gd3JhcHBlcihBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRh
U3RvcmUoKSk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpAQCAtMTEyLDcgKzExMiw3IEBAICsgKE5T
U2V0ICopYWxsV2Vic2l0ZURhdGFUeXBlcwogCiAtIChXS0hUVFBDb29raWVTdG9yZSAqKWh0dHBD
b29raWVTdG9yZQogewotICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX3dlYnNpdGVEYXRhU3Rv
cmUtPmh0dHBDb29raWVTdG9yZSgpKTsKKyAgICByZXR1cm4gd3JhcHBlcihfd2Vic2l0ZURhdGFT
dG9yZS0+aHR0cENvb2tpZVN0b3JlKCkpOwogfQogCiBzdGF0aWMgV2FsbFRpbWUgdG9TeXN0ZW1D
bG9ja1RpbWUoTlNEYXRlICpkYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQppbmRleCBjNzUzNTAz
MTgzMzEwZDhiN2I4NDdhZWMxZDQwYjRhMGQ0NDcwZmNkLi4zZWRkODUzMWEwOThiMDRmMjQzN2Q3
ZGU1Yjg1NDBmM2Y2MGVjZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQpAQCAtODQsNyArODQs
NyBAQCAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWFDb2RlcgogKyAoX1dLQXBw
bGljYXRpb25NYW5pZmVzdCAqKWFwcGxpY2F0aW9uTWFuaWZlc3RGcm9tSlNPTjooTlNTdHJpbmcg
Kilqc29uIG1hbmlmZXN0VVJMOihOU1VSTCAqKW1hbmlmZXN0VVJMIGRvY3VtZW50VVJMOihOU1VS
TCAqKWRvY3VtZW50VVJMCiB7CiAgICAgYXV0byBtYW5pZmVzdCA9IFdlYkNvcmU6OkFwcGxpY2F0
aW9uTWFuaWZlc3RQYXJzZXI6OnBhcnNlKFdURjo6U3RyaW5nKGpzb24pLCBXZWJDb3JlOjpVUkwo
bWFuaWZlc3RVUkwpLCBXZWJDb3JlOjpVUkwoZG9jdW1lbnRVUkwpKTsKLSAgICByZXR1cm4gW0FQ
STo6d3JhcHBlcihBUEk6OkFwcGxpY2F0aW9uTWFuaWZlc3Q6OmNyZWF0ZShtYW5pZmVzdCkubGVh
a1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpBcHBsaWNhdGlv
bk1hbmlmZXN0OjpjcmVhdGUobWFuaWZlc3QpKTsKIH0KIAogLSAoQVBJOjpPYmplY3QmKV9hcGlP
YmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tH
ZW9sb2NhdGlvblBvc2l0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0KaW5kZXggNmY4MTlkZjE0NzU3NmVmZTU5NWI4OTdj
MGRiMmRkYzMzNDdmMThkMS4uZTg0MjYwMjRjOGIxNTM4OTk2OGUxZjkzNzU4YTkxZmE1ZTM0ZTFj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0dlb2xv
Y2F0aW9uUG9zaXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0KQEAgLTM5LDcgKzM5LDcgQEAgKyAoaW5zdGFuY2V0
eXBlKXBvc2l0aW9uV2l0aExvY2F0aW9uOihDTExvY2F0aW9uICopbG9jYXRpb24KICAgICBpZiAo
IWxvY2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgcmV0dXJuIFt3cmFwcGVyKFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZShXZWJDb3JlOjpHZW9sb2NhdGlvblBvc2l0aW9u
IHsgbG9jYXRpb24gfSkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBw
ZXIoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlKFdlYkNvcmU6Okdlb2xvY2F0aW9uUG9z
aXRpb24geyBsb2NhdGlvbiB9KSk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24ubW0KaW5kZXggNmY3NzY3YjE0MzViNTc0Mjg0MGRhYWFiYTMyZjhhMmZj
Yzk2MmY0Mi4uZjJmZDVkZWY4Y2I2NDVlODQ2YjU4ZWVhNTYwZTFkNjg1M2Q0NzFjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCkBAIC0zNDcsNyArMzQ3LDcgQEAgLSAoTlNTdHJp
bmcgKilkZXNjcmlwdGlvbgogCiAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKIHsK
LSAgICByZXR1cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5jb3B5KCkubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gW3dyYXBwZXIoX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+
Y29weSgpKSByZXRhaW5dOwogfQogCiAtIChOU1N0cmluZyAqKWN1c3RvbVdlYkNvbnRlbnRTZXJ2
aWNlQnVuZGxlSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1VzZXJDb250ZW50V29ybGQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQppbmRleCA0ZmQxN2YzNTMyNDgzYWE1
MDRjOGZmNWVhYWViM2JiYmE2MmE0M2FhLi5jMGVkN2Y3ODE3ODI5N2FhMzhiYTExNzI2ZjVmZTdj
M2FmZWExZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLVXNlckNvbnRlbnRXb3JsZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVXNlckNvbnRlbnRXb3JsZC5tbQpAQCAtMzIsNyArMzIsNyBAQCBAaW1wbGVtZW50
YXRpb24gX1dLVXNlckNvbnRlbnRXb3JsZAogCiArIChfV0tVc2VyQ29udGVudFdvcmxkICopd29y
bGRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCiB7Ci0gICAgcmV0dXJuIFt3cmFwcGVyKEFQSTo6
VXNlckNvbnRlbnRXb3JsZDo6d29ybGRXaXRoTmFtZShuYW1lKS5sZWFrUmVmKCkpIGF1dG9yZWxl
YXNlXTsKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OlVzZXJDb250ZW50V29ybGQ6OndvcmxkV2l0
aE5hbWUobmFtZSkpOwogfQogCiArIChfV0tVc2VyQ29udGVudFdvcmxkICopbm9ybWFsV29ybGQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
UG9saWNpZXMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZVBvbGljaWVzLm1tCmluZGV4IDI5YjczODA5ZDM5OGMzOTg4MTAzN2M2NmVmMmI2OWMzMTJlMTFi
MzcuLjYxMzU1NGIxMTUwYTQzZDExMGY1MGZjODZmNjU5ZTY0YzdiYTMyMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2ll
cy5tbQpAQCAtMTc1LDggKzE3NSw3IEBAIC0gKHZvaWQpc2V0Q3VzdG9tSGVhZGVyRmllbGRzOihO
U0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKilmaWVsZHMKIAogLSAoV0tXZWJz
aXRlRGF0YVN0b3JlICopd2Vic2l0ZURhdGFTdG9yZQogewotICAgIGF1dG8qIHN0b3JlID0gX3dl
YnNpdGVQb2xpY2llcy0+d2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIHJldHVybiBzdG9yZSA/IFdl
YktpdDo6d3JhcHBlcigqc3RvcmUpIDogbmlsOworICAgIHJldHVybiB3cmFwcGVyKF93ZWJzaXRl
UG9saWNpZXMtPndlYnNpdGVEYXRhU3RvcmUoKSk7CiB9CiAKIC0gKHZvaWQpc2V0V2Vic2l0ZURh
dGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopd2Vic2l0ZURhdGFTdG9yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDliNTM4
NWJhYTI4ODlkNjI0OGNhN2ZhOTJkMjEwMzFhNjc3MjIyNjcuLjhmNjBjMzY5N2IxYTNkZGE0YWZm
NGZhMzQ4MDEwN2JiNzNiOTIzMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYlBh
Z2VQcm94eSYsCiAgICAgICAgIGZvciAoYXV0byYgcmVtb3ZlZEl0ZW0gOiByZW1vdmVkKQogICAg
ICAgICAgICAgW3JlbW92ZWRJdGVtcyBhZGRPYmplY3Q6d3JhcHBlcihyZW1vdmVkSXRlbS5nZXQo
KSldOwogICAgIH0KLSAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmln
YXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgYmFja0Zv
cndhcmRMaXN0SXRlbUFkZGVkOmFkZGVkID8gd3JhcHBlcigqYWRkZWQpIDogbmlsIHJlbW92ZWQ6
cmVtb3ZlZEl0ZW1zXTsKKyAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5h
dmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgYmFj
a0ZvcndhcmRMaXN0SXRlbUFkZGVkOndyYXBwZXIoYWRkZWQpIHJlbW92ZWQ6cmVtb3ZlZEl0ZW1z
XTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDkzLDggKzQ5Myw4IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFdlYlBhZ2VQCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBhZG9wdE5T
KHdyYXBwZXIoQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUobmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVz
dCgpKS5sZWFrUmVmKCkpKTsKLSAgICAgICAgICAgIGlmIChbTlNVUkxDb25uZWN0aW9uIGNhbkhh
bmRsZVJlcXVlc3Q6bnNVUkxSZXF1ZXN0LmdldCgpXSB8fCB3ZWJQYWdlLT51cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKFtuc1VSTFJlcXVlc3QgVVJMXS5zY2hlbWUpKSB7CisgICAgICAgICAgICBO
U1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdCA9IHdyYXBwZXIoQVBJOjpVUkxSZXF1ZXN0OjpjcmVh
dGUobmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpKSk7CisgICAgICAgICAgICBpZiAoW05TVVJM
Q29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0Om5zVVJMUmVxdWVzdF0gfHwgd2ViUGFnZS0+dXJs
U2NoZW1lSGFuZGxlckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKSkgewogICAg
ICAgICAgICAgICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxvYWQo
KSkKICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXItPmRvd25sb2FkKCk7CiAgICAgICAgICAg
ICAgICAgZWxzZQpAQCAtNjY0LDE0ICs2NjQsMTEgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYlBhZ2VQcm8K
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBu
YXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGZvciBz
b21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIHBhZ2UgY2FjaGUuCi0gICAgV0tOYXZpZ2F0aW9u
ICp3a05hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb24pCi0gICAgICAgIHdrTmF2
aWdhdGlvbiA9IHdyYXBwZXIoKm5hdmlnYXRpb24pOwogCiAgICAgaWYgKG1fbmF2aWdhdGlvblN0
YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQcm92aXNpb25h
bE5hdmlnYXRpb25Vc2VySW5mbykKLSAgICAgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93
ZWJWaWV3IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndrTmF2aWdhdGlvbiB1c2VySW5m
bzp1c2VySW5mbyA/IHN0YXRpY19jYXN0PGlkIDxOU1NlY3VyZUNvZGluZz4+KHVzZXJJbmZvLT53
cmFwcGVyKCkpIDogbmlsXTsKKyAgICAgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJW
aWV3IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndyYXBwZXIobmF2aWdhdGlvbikgdXNl
ckluZm86dXNlckluZm8gPyBzdGF0aWNfY2FzdDxpZCA8TlNTZWN1cmVDb2Rpbmc+Pih1c2VySW5m
by0+d3JhcHBlcigpKSA6IG5pbF07CiAgICAgZWxzZQotICAgICAgICBbbmF2aWdhdGlvbkRlbGVn
YXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZFN0YXJ0UHJvdmlzaW9u
YWxOYXZpZ2F0aW9uOndrTmF2aWdhdGlvbl07CisgICAgICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUg
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkU3RhcnRQcm92aXNpb25hbE5h
dmlnYXRpb246d3JhcHBlcihuYXZpZ2F0aW9uKV07CiB9CiAKIHZvaWQgTmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRp
b24sIEFQSTo6T2JqZWN0KikKQEAgLTY4NCwxMSArNjgxLDggQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTmEKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQg
dGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxs
IGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIHBhZ2UgY2FjaGUuCi0gICAgV0tOYXZp
Z2F0aW9uICp3a05hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb24pCi0gICAgICAg
IHdrTmF2aWdhdGlvbiA9IHdyYXBwZXIoKm5hdmlnYXRpb24pOwogCi0gICAgW25hdmlnYXRpb25E
ZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uXTsKKyAgICBb
bmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3cmFwcGVyKG5h
dmlnYXRpb24pXTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXVEY6
OlN0cmluZyYgdXJsU3RyaW5nLCBkb3VibGUgZGVsYXkpCkBAIC03MzUsMTAgKzcyOSw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIo
V0tXZWJWaWV3ICp3ZWJWaWV3LCBXCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2
aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0
KikKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMg
bm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9yIHNvbWUgbmF2aWdhdGlv
bnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KLSAgICBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uPiB3
a05hdmlnYXRpb247Ci0gICAgaWYgKG5hdmlnYXRpb24pCi0gICAgICAgIHdrTmF2aWdhdGlvbiA9
IHdyYXBwZXIoKm5hdmlnYXRpb24pOwotICAgIAorCiAgICAgLy8gRklYTUU6IFNldCB0aGUgZXJy
b3Igb24gdGhlIG5hdmlnYXRpb24gb2JqZWN0LgogCiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0
ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEZhaWxQcm92aXNpb25hbE5h
dmlnYXRpb25XaXRoRXJyb3IpCkBAIC03NDksMTYgKzc0MCwxMyBAQCB2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhF
cnJvcihXZQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGVycm9yV2l0aFJlY292ZXJ5QXR0
ZW1wdGVyID0gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIobV9uYXZpZ2F0aW9uU3Rh
dGUubV93ZWJWaWV3LCB3ZWJGcmFtZVByb3h5LCBlcnJvcik7Ci0gICAgW25hdmlnYXRpb25EZWxl
Z2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uOndrTmF2aWdhdGlvbi5nZXQoKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3Zl
cnlBdHRlbXB0ZXIuZ2V0KCldOworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3cmFw
cGVyKG5hdmlnYXRpb24pIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQo
KV07CiB9CiAKIC8vIEZJWE1FOiBTaG91bGRuJ3QgbmVlZCB0byBwYXNzIHRoZSBXZWJGcmFtZVBy
b3h5IGluIGhlcmUuIEF0IG1vc3QsIGEgRnJhbWVIYW5kbGUuCi12b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRo
RXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBBUEk6Ok5hdmlnYXRpb24q
IG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9i
amVjdCopCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJG
cmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3Vy
aXR5T3JpZ2luLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvciwgQVBJOjpPYmplY3QqKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0
IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQgaXQncyBjdXJyZW50bHkgbnVs
bCBiZWNhdXNlIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHBh
c3NlcyBudWxsLgotICAgIFJldGFpblB0cjxXS05hdmlnYXRpb24+IHdrTmF2aWdhdGlvbjsKLSAg
ICBpZiAobmF2aWdhdGlvbikKLSAgICAgICAgd2tOYXZpZ2F0aW9uID0gd3JhcHBlcigqbmF2aWdh
dGlvbik7CiAKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3TmF2aWdhdGlvbkRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1l
V2l0aEVycm9yKQogICAgICAgICByZXR1cm47CkBAIC03NzksMTEgKzc2Nyw4IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRDb21taXROYXZpZ2F0aW9uKFdlYlBh
Z2VQcm94eSYgcGFnZSwKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJl
bnRseSBudWxsIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIHBhZ2UgY2FjaGUuCi0g
ICAgV0tOYXZpZ2F0aW9uICp3a05hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb24p
Ci0gICAgICAgIHdrTmF2aWdhdGlvbiA9IHdyYXBwZXIoKm5hdmlnYXRpb24pOwogCi0gICAgW25h
dmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRD
b21taXROYXZpZ2F0aW9uOndrTmF2aWdhdGlvbl07CisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3
ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRDb21taXROYXZpZ2F0aW9uOndy
YXBwZXIobmF2aWdhdGlvbildOwogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpO
YXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCkBAIC03OTYsMTEgKzc4MSw4IEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVu
dExvYWQoV2ViUGFnZVByb3h5JiBwYWdlCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbiBpcyBub3QgbnVsbCBoZXJlLCBidXQg
aXQncyBjdXJyZW50bHkgbnVsbCBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBwYWdl
IGNhY2hlLgotICAgIFdLTmF2aWdhdGlvbiAqd2tOYXZpZ2F0aW9uID0gbmlsOwotICAgIGlmIChu
YXZpZ2F0aW9uKQotICAgICAgICB3a05hdmlnYXRpb24gPSB3cmFwcGVyKCpuYXZpZ2F0aW9uKTsK
IAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2
aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZp
ZXcgbmF2aWdhdGlvbkRpZEZpbmlzaERvY3VtZW50TG9hZDp3a05hdmlnYXRpb25dOworICAgIFtz
dGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdh
dGlvbkRpZEZpbmlzaERvY3VtZW50TG9hZDp3cmFwcGVyKG5hdmlnYXRpb24pXTsKIH0KIAogdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZEZpbmlzaE5hdmlnYXRpb24o
V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2Jq
ZWN0KikKQEAgLTgxMywxMSArNzk1LDggQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZEZpbmlzaE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLAogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRp
b24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9yIHNvbWUgbmF2
aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KLSAgICBXS05hdmlnYXRpb24gKndrTmF2
aWdhdGlvbiA9IG5pbDsKLSAgICBpZiAobmF2aWdhdGlvbikKLSAgICAgICAgd2tOYXZpZ2F0aW9u
ID0gd3JhcHBlcigqbmF2aWdhdGlvbik7CiAKLSAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZp
ZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246d2tOYXZp
Z2F0aW9uXTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3Rh
dGUubV93ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246d3JhcHBlcihuYXZpZ2F0aW9uKV07CiB9
CiAKIC8vIEZJWE1FOiBTaG91bGRuJ3QgbmVlZCB0byBwYXNzIHRoZSBXZWJGcmFtZVByb3h5IGlu
IGhlcmUuIEF0IG1vc3QsIGEgRnJhbWVIYW5kbGUuCkBAIC04MzIsMTUgKzgxMSwxMiBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkRmFpbE5hdmlnYXRpb25XaXRo
RXJyb3IoV2ViUGFnZVByb3h5JgogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3Mg
Y3VycmVudGx5IG51bGwgZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNo
ZS4KLSAgICBXS05hdmlnYXRpb24gKndrTmF2aWdhdGlvbiA9IG5pbDsKLSAgICBpZiAobmF2aWdh
dGlvbikKLSAgICAgICAgd2tOYXZpZ2F0aW9uID0gd3JhcHBlcigqbmF2aWdhdGlvbik7CiAKICAg
ICBhdXRvIGVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyID0gY3JlYXRlRXJyb3JXaXRoUmVjb3Zl
cnlBdHRlbXB0ZXIobV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3LCB3ZWJGcmFtZVByb3h5LCBl
cnJvcik7CiAgICAgaWYgKG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3RGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3JVc2VySW5mbykKLSAgICAgICAg
WyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZhaWxOYXZpZ2F0aW9uOndrTmF2
aWdhdGlvbiB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCkgdXNlcklu
Zm86dXNlckluZm8gPyBzdGF0aWNfY2FzdDxpZCA8TlNTZWN1cmVDb2Rpbmc+Pih1c2VySW5mby0+
d3JhcHBlcigpKSA6IG5pbF07CisgICAgICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2Vi
VmlldyBkaWRGYWlsTmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pIHdpdGhFcnJvcjplcnJv
cldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKSB1c2VySW5mbzp1c2VySW5mbyA/IHN0YXRpY19j
YXN0PGlkIDxOU1NlY3VyZUNvZGluZz4+KHVzZXJJbmZvLT53cmFwcGVyKCkpIDogbmlsXTsKICAg
ICBlbHNlCi0gICAgICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25T
dGF0ZS5tX3dlYlZpZXcgZGlkRmFpbE5hdmlnYXRpb246d2tOYXZpZ2F0aW9uIHdpdGhFcnJvcjpl
cnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAgICAgIFtuYXZpZ2F0aW9uRGVs
ZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmFpbE5hdmlnYXRp
b246d3JhcHBlcihuYXZpZ2F0aW9uKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0
ZXIuZ2V0KCldOwogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24q
IG5hdmlnYXRpb24sIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBB
UEk6Ok9iamVjdCopCkBAIC04NTMsMTEgKzgyOSw4IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYs
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQg
bmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZv
ciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIHBhZ2UgY2FjaGUuCi0gICAgV0tOYXZpZ2F0
aW9uICp3a05hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb24pCi0gICAgICAgIHdr
TmF2aWdhdGlvbiA9IHdyYXBwZXIoKm5hdmlnYXRpb24pOwogCi0gICAgW3N0YXRpY19jYXN0PGlk
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkp
IF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uOndrTmF2aWdh
dGlvbiBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uOnRvV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZShuYXZpZ2F0aW9uVHlwZSldOworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRpb24pIGRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb246dG9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKG5h
dmlnYXRpb25UeXBlKV07CiB9CiAKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpyZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpM
YXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TZXNzaW9uU3RhdGVDb2RpbmcubW0KaW5kZXggNjIzYmE0NjBhMjA4
YWI3ZDczNjEyN2NlYWE4NDQxNGZjYTA0NTAzZC4uMDQ1OTE4M2RhMDBmMDcwMzEyYzU4NWYyNTYx
ODFiOGNlNDk1ZGM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U2Vzc2lvblN0YXRlQ29kaW5nLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1Nlc3Npb25TdGF0ZUNvZGluZy5tbQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIFJldGFpblB0cjxOU0RhdGE+IGVuY29kZVNlc3Npb25TdGF0ZShjb25zdCBTZXNzaW9uU3Rh
dGUmIHNlc3Npb25TdGF0ZSkKIHsKICNpZiBXS19BUElfRU5BQkxFRAotICAgIHJldHVybiBbd3Jh
cHBlcigqV2ViS2l0OjplbmNvZGVMZWdhY3lTZXNzaW9uU3RhdGUoc2Vzc2lvblN0YXRlKS5sZWFr
UmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gd3JhcHBlcihXZWJLaXQ6OmVuY29kZUxl
Z2FjeVNlc3Npb25TdGF0ZShzZXNzaW9uU3RhdGUpKTsKICNlbHNlCiAgICAgcmV0dXJuIG51bGxw
dHI7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dL
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggOTQ1MjE0ZDg3MzYyMDE4M2Q1NGE5Yzc3
ZTE3MWViNTlmMjQ1NTllMy4uYjcwMTQxMjliMjQ1NzAyNWQyMDQyYTMxOWNkYTU5N2U3OTAyZjZj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTEyOSw3ICsxMjksNyBAQCAtIChXS1dlYlZpZXdDb25m
aWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogICAgICAgICB9CiAgICAgfQogCi0gICAgW2NvbmZp
Z3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6IDo6V2ViS2l0Ojp3cmFwcGVyKGluc3BlY3RvclByb2Nl
c3NQb29sKGluc3BlY3RvckxldmVsRm9yUGFnZShfaW5zcGVjdGVkUGFnZSkpKV07CisgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6d3JhcHBlcihpbnNwZWN0b3JQcm9jZXNzUG9vbChp
bnNwZWN0b3JMZXZlbEZvclBhZ2UoX2luc3BlY3RlZFBhZ2UpKSldOwogICAgIFtjb25maWd1cmF0
aW9uIF9zZXRHcm91cElkZW50aWZpZXI6aW5zcGVjdG9yUGFnZUdyb3VwSWRlbnRpZmllckZvclBh
Z2UoX2luc3BlY3RlZFBhZ2UpXTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uLmF1dG9yZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFt
ZS5tbQppbmRleCA5ZjQ4M2RiY2JkNWU1NDEzZTRlM2Y5NmVlMjNlMDc4NGNmNTU4NGZjLi45NmFk
YWE5NDA5OGZhMTZlZWM0OWNmN2RiYWY0OGU4YTY3MWQxZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1Bs
dWdJbkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0KQEAgLTUyLDExICs1Miw3IEBA
IEBpbXBsZW1lbnRhdGlvbiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSB7CiAKICsgKGluc3RhbmNl
dHlwZSlsb29rVXBGcmFtZUZyb21IYW5kbGU6KF9XS0ZyYW1lSGFuZGxlICopaGFuZGxlCiB7Ci0g
ICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUo
aGFuZGxlLl9mcmFtZUlEKTsKLSAgICBpZiAoIXdlYkZyYW1lKQotICAgICAgICByZXR1cm4gbmls
OwotCi0gICAgcmV0dXJuIHdyYXBwZXIoKndlYkZyYW1lKTsKKyAgICByZXR1cm4gd3JhcHBlcihX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShoYW5kbGUuX2ZyYW1lSUQpKTsKIH0KIAog
LSAodm9pZClkZWFsbG9jCkBAIC03Miw4ICs2OCw3IEBAIC0gKEpTQ29udGV4dCAqKWpzQ29udGV4
dEZvcldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkCiAKIC0gKFdL
V2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgKiloaXRUZXN0OihDR1BvaW50KXBvaW50CiB7
Ci0gICAgYXV0byBoaXRUZXN0UmVzdWx0ID0gX2ZyYW1lLT5oaXRUZXN0KFdlYkNvcmU6OkludFBv
aW50KHBvaW50KSk7Ci0gICAgcmV0dXJuIFt3cmFwcGVyKCpoaXRUZXN0UmVzdWx0LmxlYWtSZWYo
KSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiB3cmFwcGVyKF9mcmFtZS0+aGl0VGVzdChXZWJD
b3JlOjpJbnRQb2ludChwb2ludCkpKTsKIH0KIAogLSAoSlNWYWx1ZSAqKWpzTm9kZUZvck5vZGVI
YW5kbGU6KFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKilub2RlSGFuZGxlIGluV29ybGQ6
KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQKQEAgLTEwMCw3ICs5NSw3IEBA
IC0gKE5TVVJMICopVVJMCiAKIC0gKE5TQXJyYXkgKiljaGlsZEZyYW1lcwogewotICAgIHJldHVy
biBbd3JhcHBlcihfZnJhbWUtPmNoaWxkRnJhbWVzKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07
CisgICAgcmV0dXJuIHdyYXBwZXIoX2ZyYW1lLT5jaGlsZEZyYW1lcygpKTsKIH0KIAogLSAoQk9P
TCljb250YWluc0FueUZvcm1FbGVtZW50cwpAQCAtMTEwLDcgKzEwNSw3IEBAIC0gKEJPT0wpY29u
dGFpbnNBbnlGb3JtRWxlbWVudHMKIAogLSAoX1dLRnJhbWVIYW5kbGUgKiloYW5kbGUKIHsKLSAg
ICByZXR1cm4gW3dyYXBwZXIoQVBJOjpGcmFtZUhhbmRsZTo6Y3JlYXRlKF9mcmFtZS0+ZnJhbWVJ
RCgpKS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkZy
YW1lSGFuZGxlOjpjcmVhdGUoX2ZyYW1lLT5mcmFtZUlEKCkpKTsKIH0KIAogc3RhdGljIFJldGFp
blB0cjxOU0FycmF5PiBjb2xsZWN0SWNvbnMoV2ViQ29yZTo6RnJhbWUqIGZyYW1lLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6TGlua0ljb25UeXBlPiBpY29uVHlwZXMpCkBAIC0xMzksOCArMTM0LDcgQEAg
LSAoTlNBcnJheSAqKWZhdmljb25VUkxzCiAKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICop
X3BhcmVudEZyYW1lCiB7Ci0gICAgV2ViRnJhbWUgKnBhcmVudEZyYW1lID0gX2ZyYW1lLT5wYXJl
bnRGcmFtZSgpOwotICAgIHJldHVybiBwYXJlbnRGcmFtZSA/IHdyYXBwZXIoKnBhcmVudEZyYW1l
KSA6IG5pbDsKKyAgICByZXR1cm4gd3JhcHBlcihfZnJhbWUtPnBhcmVudEZyYW1lKCkpOwogfQog
CiAtIChCT09MKV9oYXNDdXN0b21Db250ZW50UHJvdmlkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1
Z0luSGl0VGVzdFJlc3VsdC5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbQppbmRleCA3
ZWE4NmM5MTFlNGQ2NDJlNWZjNjMyNTYyNDNkMjJhNWMxZGEzMmY1Li4wMjA5NDdjZmJkMGI4MGQz
N2M5YWY3YzYzNDZhODBjMmM3MjU0Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RS
ZXN1bHQubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tCkBAIC00NCw4ICs0NCw3
IEBAIC0gKHZvaWQpZGVhbGxvYwogCiAtIChXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICop
bm9kZUhhbmRsZQogewotICAgIGF1dG8gbm9kZUhhbmRsZSA9IF9oaXRUZXN0UmVzdWx0LT5ub2Rl
SGFuZGxlKCk7Ci0gICAgcmV0dXJuIG5vZGVIYW5kbGUgPyBbd3JhcHBlcigqbm9kZUhhbmRsZS5s
ZWFrUmVmKCkpIGF1dG9yZWxlYXNlXSA6IG5pbDsKKyAgICByZXR1cm4gd3JhcHBlcihfaGl0VGVz
dFJlc3VsdC0+bm9kZUhhbmRsZSgpKTsKIH0KIAogI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3Rv
Y29sIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0KaW5kZXggMTk3NDRjOGUwYjQ5M2JjMTRkMmZkNjU4
M2FkZjFlNDVkZTZiZDBkMS4uOTFjZDBjNDBlNGNlYmM1Y2JiNjdlMWE3ZjUzYWJkMDBiNTRhYTcy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
Tm9kZUhhbmRsZS5tbQpAQCAtNDksMjEgKzQ5LDEzIEBAIC0gKHZvaWQpZGVhbGxvYwogKyAoV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAqKW5vZGVIYW5kbGVXaXRoSlNWYWx1ZTooSlNWYWx1
ZSAqKXZhbHVlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAogewogICAgIEpTQ29udGV4
dFJlZiBjb250ZXh0UmVmID0gW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXTsKLSAgICBKU09i
amVjdFJlZiBvYmplY3RSZWYgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dFJlZiwgW3ZhbHVlIEpT
VmFsdWVSZWZdLCAwKTsKLSAgICBhdXRvIG5vZGVIYW5kbGUgPSBJbmplY3RlZEJ1bmRsZU5vZGVI
YW5kbGU6OmdldE9yQ3JlYXRlKGNvbnRleHRSZWYsIG9iamVjdFJlZik7Ci0gICAgaWYgKCFub2Rl
SGFuZGxlKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIFt3cmFwcGVyKCpub2Rl
SGFuZGxlLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIEpTT2JqZWN0UmVmIG9iamVjdFJl
ZiA9IEpTVmFsdWVUb09iamVjdChjb250ZXh0UmVmLCBbdmFsdWUgSlNWYWx1ZVJlZl0sIG51bGxw
dHIpOworICAgIHJldHVybiB3cmFwcGVyKEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JD
cmVhdGUoY29udGV4dFJlZiwgb2JqZWN0UmVmKSk7CiB9CiAKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJ
bkZyYW1lICopaHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUKIHsKLSAgICBhdXRvIGZyYW1l
ID0gX25vZGVIYW5kbGUtPmh0bWxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKCk7Ci0gICAgaWYg
KCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBbd3JhcHBlcigqZnJh
bWUubGVha1JlZigpKSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoX25vZGVIYW5k
bGUtPmh0bWxJRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKCkpOwogfQogCiAjaWYgUExBVEZPUk0o
SU9TKQpAQCAtMTkxLDE2ICsxODMsMTIgQEAgLSAoQk9PTClpc1RleHRGaWVsZAogCiAtIChXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICopSFRNTFRhYmxlQ2VsbEVsZW1lbnRDZWxsQWJvdmUK
IHsKLSAgICBhdXRvIG5vZGVIYW5kbGUgPSBfbm9kZUhhbmRsZS0+aHRtbFRhYmxlQ2VsbEVsZW1l
bnRDZWxsQWJvdmUoKTsKLSAgICBpZiAoIW5vZGVIYW5kbGUpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICByZXR1cm4gW3dyYXBwZXIoKm5vZGVIYW5kbGUubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07CisgICAgcmV0dXJuIHdyYXBwZXIoX25vZGVIYW5kbGUtPmh0bWxUYWJsZUNlbGxFbGVtZW50
Q2VsbEFib3ZlKCkpOwogfQogCiAtIChXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lCiB7
Ci0gICAgcmV0dXJuIFt3cmFwcGVyKCpfbm9kZUhhbmRsZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRG
cmFtZSgpLmxlYWtSZWYoKSkgYXV0b3JlbGVhc2VdOworICAgIHJldHVybiB3cmFwcGVyKF9ub2Rl
SGFuZGxlLT5kb2N1bWVudCgpLT5kb2N1bWVudEZyYW1lKCkpOwogfQogCiAtIChJbmplY3RlZEJ1
bmRsZU5vZGVIYW5kbGUmKV9ub2RlSGFuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblJhbmdl
SGFuZGxlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5SYW5nZUhhbmRsZS5tbQppbmRleCA0ZmNiMWE0NDY4ZDMx
Y2MyNjdhMTZiMjAxNWUyZjIxMGNkZjAxODAxLi40YThkZDM0MzU5NTIzZDczOWRhMWY3OWU0OWM0
NmI2NWUyNTk2YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luUmFuZ2VIYW5kbGUubW0KQEAgLTUyLDE3ICs1MiwxMyBAQCAtICh2b2lkKWRl
YWxsb2MKICsgKFdLV2ViUHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlICopcmFuZ2VIYW5kbGVXaXRo
SlNWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGluQ29udGV4dDooSlNDb250ZXh0ICopY29udGV4dAog
ewogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0UmVmID0gW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXTsKLSAgICBKU09iamVjdFJlZiBvYmplY3RSZWYgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4
dFJlZiwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAwKTsKLSAgICBhdXRvIHJhbmdlSGFuZGxlID0gSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZTo6Z2V0T3JDcmVhdGUoY29udGV4dFJlZiwgb2JqZWN0UmVm
KTsKLSAgICBpZiAoIXJhbmdlSGFuZGxlKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0
dXJuIFt3cmFwcGVyKCpyYW5nZUhhbmRsZS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICBK
U09iamVjdFJlZiBvYmplY3RSZWYgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dFJlZiwgW3ZhbHVl
IEpTVmFsdWVSZWZdLCBudWxscHRyKTsKKyAgICByZXR1cm4gd3JhcHBlcihJbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlOjpnZXRPckNyZWF0ZShjb250ZXh0UmVmLCBvYmplY3RSZWYpKTsKIH0KIAog
LSAoV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZQogewotICAgIHJldHVybiBbd3JhcHBl
cigqX3JhbmdlSGFuZGxlLT5kb2N1bWVudCgpLT5kb2N1bWVudEZyYW1lKCkubGVha1JlZigpKSBh
dXRvcmVsZWFzZV07CisgICAgcmV0dXJuIHdyYXBwZXIoX3JhbmdlSGFuZGxlLT5kb2N1bWVudCgp
LT5kb2N1bWVudEZyYW1lKCkpOwogfQogCiAtIChOU1N0cmluZyAqKXRleHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tCmlu
ZGV4IDZlYmEwMTI5ZDc3NzQ5NGI3YjBhYTU4ODgwNDQ5MjEwODBlNjczN2IuLmFlOGQ5MDYxZjQ0
MzBiMmFmYzk4YTBhNzVhMzE1MWM3MDYyOWRkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2Ny
aXB0V29ybGQubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbQpAQCAtMzYsOCArMzYs
NyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgewogCiAr
IChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkCiB7Ci0gICAgYXV0byBzY3Jp
cHRXb3JsZCA9IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZSgpOwotICAgIHJldHVy
biBbd3JhcHBlcihzY3JpcHRXb3JsZC5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKKyAgICByZXR1
cm4gd3JhcHBlcihJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpjcmVhdGUoKSk7CiB9CiAKICsg
KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopbm9ybWFsV29ybGQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlci5tbQppbmRleCAxOTM1MzIyZjM2NDBlNGVkMjRiOTFiNmUxZDJhODI2
MWJhZWVkMmJlLi4yOGRjMDY2OWRmNWRkMjBlMGJjMWUwNjY3ZWNlOWY3ZTUzOTRjNDkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC0zODUsMTEgKzM4NSw3IEBAIC0gKFdL
RE9NUmFuZ2UgKilzZWxlY3RlZFJhbmdlCiAKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICop
bWFpbkZyYW1lCiB7Ci0gICAgV2ViRnJhbWUgKndlYktpdE1haW5GcmFtZSA9IF9wYWdlLT5tYWlu
V2ViRnJhbWUoKTsKLSAgICBpZiAoIXdlYktpdE1haW5GcmFtZSkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgIHJldHVybiB3cmFwcGVyKCp3ZWJLaXRNYWluRnJhbWUpOworICAgIHJldHVybiB3
cmFwcGVyKF9wYWdlLT5tYWluV2ViRnJhbWUoKSk7CiB9CiAKIC0gKFdLV2ViUHJvY2Vzc1BsdWdJ
blBhZ2VHcm91cCAqKXBhZ2VHcm91cApAQCAtNDIwLDExICs0MTYsNyBAQCAtIChXS0Jyb3dzaW5n
Q29udGV4dEhhbmRsZSAqKWhhbmRsZQogCiArIChpbnN0YW5jZXR5cGUpbG9va1VwQnJvd3NpbmdD
b250ZXh0RnJvbUhhbmRsZTooV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgKiloYW5kbGUKIHsKLSAg
ICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShoYW5k
bGUucGFnZUlEKTsKLSAgICBpZiAoIXdlYlBhZ2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAg
ICByZXR1cm4gd3JhcHBlcigqd2ViUGFnZSk7CisgICAgcmV0dXJuIHdyYXBwZXIoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZShoYW5kbGUucGFnZUlEKSk7CiB9CiAKIC0gKF9XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5ICopX3JlbW90ZU9iamVjdFJlZ2lzdHJ5Cg==
</data>
<flag name="review"
          id="365255"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>