<?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>148028</bug_id>
          
          <creation_ts>2015-08-14 09:43:13 -0700</creation_ts>
          <short_desc>[GTK] Re-add DiskImageCache</short_desc>
          <delta_ts>2016-01-04 05:42:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andre Moreira Magalhaes">andrunko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>emanuele.aina</cc>
    
    <cc>koivisto</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117649</commentid>
    <comment_count>0</comment_count>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2015-08-14 09:43:13 -0700</bug_when>
    <thetext>DiskImageCache is used in the rpi port of webkit but the original work was removed in changeset r173265. 

This bug is about re-adding the support for GTK only but including the changes from bug #124167 that would allow adding support for other platforms easily. This would help maintaining the rpi port without having to carry the patch separately.

Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117667</commentid>
    <comment_count>1</comment_count>
      <attachid>259007</attachid>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2015-08-14 10:56:25 -0700</bug_when>
    <thetext>Created attachment 259007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117675</commentid>
    <comment_count>2</comment_count>
      <attachid>259009</attachid>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2015-08-14 11:20:51 -0700</bug_when>
    <thetext>Created attachment 259009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117707</commentid>
    <comment_count>3</comment_count>
      <attachid>259022</attachid>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2015-08-14 12:20:34 -0700</bug_when>
    <thetext>Created attachment 259022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126000</commentid>
    <comment_count>4</comment_count>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2015-09-15 10:00:08 -0700</bug_when>
    <thetext>Hi, is upstream interested in this patch? We would love to have this merged if possible. Please let us know and we can tweak the patch as needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126026</commentid>
    <comment_count>5</comment_count>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2015-09-15 10:45:25 -0700</bug_when>
    <thetext>To clarify, the DiskImageCache differs from the normal disk cache by storing decoded image data on a mmaped file while the normal disk cache stores downloaded resources (ie. the png/jpeg stream), thus avoiding having to decode images already in cache again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126305</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-09-16 00:34:31 -0700</bug_when>
    <thetext>I didn&apos;t know this DiskImageCache. So, the idea is to cache decoded images in disk temporary, because reading from disk is faster than decoding, right? I wonder why it was removed from the IOS port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126345</commentid>
    <comment_count>7</comment_count>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2015-09-16 08:59:22 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I didn&apos;t know this DiskImageCache. So, the idea is to cache decoded images
&gt; in disk temporary, because reading from disk is faster than decoding, right?
&gt; I wonder why it was removed from the IOS port.

Yes, you are correct, and the cached data is mmaped also. 

From changeset r173265:
&quot;Disk image cache code unnecessarily complicates SharedBuffer implementation. We can remove this now since we don&apos;t enable it in WebKit2 on iOS.&quot;

I guess as the code was being used only in iOS and they were not enabling it on webkit2, they just removed it to simplify the SharedBuffer impl. Thing is this is still useful on the rpi and we made the code cross platform (see bug #124167), although enabled only on the gtk port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126451</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-09-16 13:51:14 -0700</bug_when>
    <thetext>I don&apos;t think we should bring this code back as it is pretty invasive and may interfere with other improvements we may want to make. The right way to do this would be to expand the network cache to support derived data in cache entries. For images this could be decoded bitmaps, for js bytecode etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126716</commentid>
    <comment_count>9</comment_count>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2015-09-17 09:57:30 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I don&apos;t think we should bring this code back as it is pretty invasive and
&gt; may interfere with other improvements we may want to make. The right way to
&gt; do this would be to expand the network cache to support derived data in
&gt; cache entries. For images this could be decoded bitmaps, for js bytecode etc.

Thanks for the feedback. Could you please elaborate a bit more on the worries about this approach? Why do you think it is too invasive? The changes to CachedImage/SharedBuffer and co are not that big and I believe we would need a similar approach if using a modified network cache for that.

In any case I will check about the network cache approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151790</commentid>
    <comment_count>10</comment_count>
      <attachid>259022</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-12-31 14:56:45 -0800</bug_when>
    <thetext>Comment on attachment 259022
Patch

To get this upstream, I think you&apos;ll need to redo the implementation as Antti suggested, sorry.

But I&apos;m not sure if we really want this upstream at all, to be honest, if it&apos;s only a performance win on specialized hardware.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152294</commentid>
    <comment_count>11</comment_count>
    <who name="Andre Moreira Magalhaes">andrunko</who>
    <bug_when>2016-01-04 05:42:12 -0800</bug_when>
    <thetext>Thanks for the comments, closing this one and will open a separate report in case we decide to redo the implementation.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259007</attachid>
            <date>2015-08-14 10:56:25 -0700</date>
            <delta_ts>2015-08-14 11:20:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148028-20150814145604.patch</filename>
            <type>text/plain</type>
            <size>100105</size>
            <attacher name="Andre Moreira Magalhaes">andrunko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEyZGIxYWI5OTRmNmY3YjkyMjlmNmMy
YzljOGU2YjdlMmE1MmE5YzkuLjVhZjIwMzdiMzBjMTIzNDNmYjA3YTNiOTM0ODJmNDM4NjU3NDYy
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDgtMTQgIEFuZHJlIE1vcmVpcmEgTWFnYWxo
YWVzICAgPGFuZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgW0dUS10g
UmUtYWRkIERpc2tJbWFnZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIHBhcnRpYWxseSByZXZlcnRzIHIxNzMyNjUgYW5kIGlu
Y2x1ZGVzIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQgYmFzZWQgb24gcGF0Y2ggZnJvbQorICAgICAg
ICBidWcgIzEyNDE2NyAodmlhIFBPU0lYIGltcGwsIGFsdGhvdWdoIG9ubHkgR1RLIHN1cHBvcnQg
aXMgZW5hYmxlZCksIGFwYXJ0IGZyb20gZm9sbG93aW5nCisgICAgICAgIGZlYXR1cmVzOgorCisg
ICAgICAgIC0gUG9ydGVkIGNoYW5nZXMgdG8gbGF0ZXN0IHVwc3RyZWFtIG1hc3Rlci4KKyAgICAg
ICAgLSBSZW1vdmUgRUZML2lPUyBzdXBwb3J0IGFuZCBlbmFibGUgR1RLIHN1cHBvcnQgb25seS4K
KyAgICAgICAgLSBQb3J0IHRvIHdrMiBhbmQgZHJvcCB3azEgc3VwcG9ydC4KKyAgICAgICAgLSBJ
bnRlZ3JhdGUgd2l0aCBjbWFrZS4KKyAgICAgICAgLSBQb3J0IEltYWdlRGVjb2RlciBpbXByb3Zl
bWVudHMgcmVxdWlyZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLSBNZXJnZSBS
ZXNvdXJjZUJ1ZmZlciBjaGFuZ2VzIHRvIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHd0Zi9G
ZWF0dXJlRGVmaW5lcy5oOgorCiAyMDE1LTA3LTMwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFyayBtb3JlIGNsYXNzZXMgYXMgZmFzdCBhbGxvY2F0ZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA0YzYzNmU0YWVmNGE3MmUzMWVkMzM4NGJkNDIwYTVjNDcxOGE1OTk2Li45MDZk
NWZlMjEzZDIyZmZlYThkZmY4MmRhY2E5N2I4Njc1ZjM3MDUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTY4IEBACisyMDE1LTA4LTE0ICBBbmRyZSBNb3JlaXJhIE1hZ2FsaGFlcyAgIDxhbmRyZS5t
YWdhbGhhZXNAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFtHVEtdIFJlLWFkZCBEaXNrSW1h
Z2VDYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ4MDI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBwYXJ0aWFsbHkgcmV2ZXJ0cyByMTczMjY1IGFuZCBpbmNsdWRlcyBjcm9zcy1w
bGF0Zm9ybSBzdXBwb3J0IGJhc2VkIG9uIHBhdGNoIGZyb20KKyAgICAgICAgYnVnICMxMjQxNjcg
KHZpYSBQT1NJWCBpbXBsLCBhbHRob3VnaCBvbmx5IEdUSyBzdXBwb3J0IGlzIGVuYWJsZWQpLCBh
cGFydCBmcm9tIGZvbGxvd2luZworICAgICAgICBmZWF0dXJlczoKKworICAgICAgICAtIFBvcnRl
ZCBjaGFuZ2VzIHRvIGxhdGVzdCB1cHN0cmVhbSBtYXN0ZXIuCisgICAgICAgIC0gUmVtb3ZlIEVG
TC9pT1Mgc3VwcG9ydCBhbmQgZW5hYmxlIEdUSyBzdXBwb3J0IG9ubHkuCisgICAgICAgIC0gUG9y
dCB0byB3azIgYW5kIGRyb3Agd2sxIHN1cHBvcnQuCisgICAgICAgIC0gSW50ZWdyYXRlIHdpdGgg
Y21ha2UuCisgICAgICAgIC0gUG9ydCBJbWFnZURlY29kZXIgaW1wcm92ZW1lbnRzIHJlcXVpcmVk
IGJ5IHRoaXMgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC0gTWVyZ2UgUmVzb3VyY2VCdWZmZXIg
Y2hhbmdlcyB0byBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAg
ICAgICogUGxhdGZvcm1HVEsuY21ha2U6IEluY2x1ZGUgUE9TSVggaW1wbGVtZW50YXRpb24gb2Yg
RGlza0ltYWdlQ2FjaGUuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjppc0RlY29kZWREYXRhTWVtb3J5TWFwcGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjYW5Vc2VEaXNrSW1hZ2VDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXNlRGlza0ltYWdlQ2FjaGUpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
aXNVc2luZ0Rpc2tJbWFnZUNhY2hlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpjYW5Vc2VEaXNrSW1h
Z2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXNlRGlza0ltYWdl
Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmlzRGVjb2RlZERhdGFN
ZW1vcnlNYXBwZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6cHJ1bmVMaXZlUmVzb3VyY2VzVG9TaXplKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpmbHVzaENhY2hlZEltYWdlc1RvRGlzayk6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6VHlwZVN0YXRpc3RpYzo6YWRkUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmR1bXBTdGF0cyk6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6ZHVtcExSVUxpc3RzKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpUeXBl
U3RhdGlzdGljOjpUeXBlU3RhdGlzdGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EaXNrSW1hZ2VD
YWNoZS5oOiBBZGRlZCAtIGJhc2VkIG9uIERpc2tJbWFnZUNhY2hlIGlPUyBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6aWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VD
YWNoZTo6RW50cnk6OmlzTWFwcGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hl
OjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OmlzRW5hYmxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6c2V0RW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6bWF4aW11bUNhY2hlU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6c2V0TWF4aW11bUNhY2hlU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6bWluaW11bUltYWdlU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6c2V0TWluaW11bUltYWdlU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6Y2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlza0ltYWdlQ2FjaGU6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2Fj
aGU6OmlzRnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6fkRpc2tJbWFn
ZUNhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZUNsaWVudC5oOiBBZGRl
ZCAtIGJhc2VkIG9uIERpc2tJbWFnZUNhY2hlIGlPUyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlQ2xpZW50Ojp+RGlza0ltYWdlQ2FjaGVDbGllbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Mb2dn
aW5nLmg6IEFkZCBjYXRlZ29yeSBmb3IgRGlza0ltYWdlQ2FjaGUuCisgICAgICAgICogcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hh
cmVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6flNoYXJlZEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzQWxsb3dlZFRvQmVNZW1vcnlN
YXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjppc1VzaW5nRGlza0ltYWdl
Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjphbGxvd1RvQmVNZW1vcnlN
YXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpmYWlsZWRNZW1vcnlNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptYXJrQXNNZW1vcnlNYXBwZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptZW1vcnlNYXBwZWROb3RpZmljYXRpb25D
YWxsYmFja0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjptZW1vcnlNYXBw
ZWROb3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OnNldE1lbW9yeU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcjo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFw
cGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNNZW1v
cnlNYXBwZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKTogSW5pdGlhbGl6ZSB0
aGUgRGlza0ltYWdlQ2FjaGUgbWVtYmVycyBvbiBjdXN0b20KKyAgICAgICAgY29uc3RydWN0b3Jz
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjppc01lbW9yeU1hcHBlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6RnJhbWVEYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2U6OmlzTWVtb3J5TWFwcGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJc01lbW9y
eU1hcHBlZEF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlVXNlckNhY2hlRGlyZWN0b3J5KTogR1RLKyBpbXBsZW1lbnRhdGlvbiBv
ZiBuZXcgbWV0aG9kIHVzZWQgYnkgdGhlCisgICAgICAgIERpc2tJbWFnZUNhY2hlIHRvIGNyZWF0
ZSBhIGNhY2hlIGRpcmVjdG9yeSB0byBzYXZlIGRhdGEgb24gZGlzay4KKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSk6IGRpdHRvIGJ1dCBjcmVhdGVzIGEgdGVtcG9y
YXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBvcmFyeUZpbGUpOiBk
aXR0byBidXQgY3JlYXRlcyBhIHRlbXBvcmFyeSBmaWxlLgorICAgICAgICAqIHBsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6IEltYWdlRGVjb2RlciBpbXByb3ZlbWVudHMg
cmVxdWlyZWQgYnkKKyAgICAgICAgRGlza0ltYWdlQ2FjaGUuCisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUZyYW1lOjpJbWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6On5J
bWFnZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNhbGN1bGF0ZVJlcXVpcmVkU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjp0cnlNZW1vcnlNYXBwaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6Onplcm9GaWxsUGl4ZWxEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRnJhbWU6Onplcm9GaWxsRnJhbWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJh
bWU6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVz
QXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpjb3B5Um93TlRpbWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmRlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RnJhbWU6OnNldERlcHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmdldEFkZHIp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6c2V0UkdCQSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUZyYW1lOjppc01lbW9yeU1hcHBlZCk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSk6IENvbnNpZGVyIGltYWdlIGRlcHRoIHRv
IGRlZmluZSBmb3JtYXQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzdHJpZGVGb3JX
aWR0aCk6IE5ldyBtZXRob2QgdG8gcmV0cmlldmUgYSBzdHJpZGUgZ2l2ZW4gYSBpbWFnZSBkZXB0
aAorICAgICAgICBhbmQgd2lkdGguCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6IFRha2UgaW50byBjb25zaWRlcmF0aW9uIGltYWdlIGRl
cHRoLgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyk6
CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cDogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpKUEVHSW1hZ2VEZWNvZGVyOjpvdXRwdXRTY2Fu
bGluZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURl
Y29kZXIuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldFBpeGVsUkdCQSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRQaXhlbFBy
ZW11bHRpcGxpZWRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OlBOR0ltYWdlRGVjb2Rlcjo6cm93
QXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9EaXNrSW1hZ2VDYWNoZVBPU0lY
LmNwcDogQWRkZWQgLSBQT1NJWCBpbXBsZW1lbnRhdGlvbiBvZiBEaXNrSW1hZ2VDYWNoZS4KKyAg
ICAgICAgKFdlYkNvcmU6OmRpc2tJbWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJ
bWFnZUNhY2hlOjpFbnRyeTo6RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2Fj
aGU6OkVudHJ5Ojp+RW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVu
dHJ5OjptYXBJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50
cnk6OmRpZEZhaWxNZW1vcnlNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6
OkVudHJ5OjpkaWRNYXBNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6
OkVudHJ5OjpzeW5jaHJvbm91c2x5TWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNh
Y2hlOjpFbnRyeTo6bWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRy
eTo6dW5tYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpyZW1v
dmVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2xlYXJE
YXRhV2l0aG91dE1hcHBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVu
dHJ5Ojp3cml0ZVRvRmlsZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNh
Y2hlOjpFbnRyeTo6c2V0VGVtcG9yYXJ5RmlsZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5OjpjYW5jZWxNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlza0lt
YWdlQ2FjaGU6OkVudHJ5OjptYXBUaHJlYWRTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNr
SW1hZ2VDYWNoZTo6RW50cnk6OmRpZFJlbW92ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5OjpyZW1vdmVGaWxlVGhyZWFkU3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0ltYWdlQ2FjaGU6OkRpc2tJbWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc2tJbWFnZUNhY2hlOjpwcmVwYXJlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1h
Z2VDYWNoZTo6Y3JlYXRlRmlsZUJhY2tlZE1hcHBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
a0ltYWdlQ2FjaGU6OndyaXRlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNo
ZTo6dXBkYXRlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6cmVtb3Zl
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6ZGF0YUZvckl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OmNyZWF0ZURpcmVjdG9yeUlmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpuZXh0QXZhaWxhYmxlSWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OnRlbXBvcmFyeURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RmlsZSk6CisgICAgICAg
ICogcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSk6IFBPU0lYIGltcGxlbWVudGF0aW9uIG9mIG5ldyBt
ZXRob2QgdXNlZCBieSB0aGUKKyAgICAgICAgRGlza0ltYWdlQ2FjaGUgdG8gY3JlYXRlIGEgdGVt
cG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKiBwbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNv
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOiBJ
bml0aWFsaXplIHRoZSBEaXNrSW1hZ2VDYWNoZSBtZW1iZXJzIG9uIGN1c3RvbQorICAgICAgICBj
b25zdHJ1Y3Rvci4KKwogMjAxNS0wNy0zMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0dUS10gSGF2ZSBEYXRhT2JqZWN0R3RrOjp1bmtub3duVHlwZXMo
KSByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIEhhc2hNYXAgb2JqZWN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
Yzc1NTBiMGMyZGNmZjY0MzY4ZDAyNDA3MWMxYWUyYTIzNGYyYjA0Ni4uYzM0YmE4OTlkNzgzZjQz
YjI1YTcwNGJmY2E2Yjk1NTIyMTNkMGFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisy
MDE1LTA4LTE0ICBBbmRyZSBNb3JlaXJhIE1hZ2FsaGFlcyAgIDxhbmRyZS5tYWdhbGhhZXNAY29s
bGFib3JhLmNvLnVrPgorCisgICAgICAgIFtHVEtdIFJlLWFkZCBEaXNrSW1hZ2VDYWNoZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDI4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBw
YXJ0aWFsbHkgcmV2ZXJ0cyByMTczMjY1IGFuZCBpbmNsdWRlcyBjcm9zcy1wbGF0Zm9ybSBzdXBw
b3J0IGJhc2VkIG9uIHBhdGNoIGZyb20KKyAgICAgICAgYnVnICMxMjQxNjcgKHZpYSBQT1NJWCBp
bXBsLCBhbHRob3VnaCBvbmx5IEdUSyBzdXBwb3J0IGlzIGVuYWJsZWQpLCBhcGFydCBmcm9tIGZv
bGxvd2luZworICAgICAgICBmZWF0dXJlczoKKworICAgICAgICAtIFBvcnRlZCBjaGFuZ2VzIHRv
IGxhdGVzdCB1cHN0cmVhbSBtYXN0ZXIuCisgICAgICAgIC0gUmVtb3ZlIEVGTC9pT1Mgc3VwcG9y
dCBhbmQgZW5hYmxlIEdUSyBzdXBwb3J0IG9ubHkuCisgICAgICAgIC0gUG9ydCB0byB3azIgYW5k
IGRyb3Agd2sxIHN1cHBvcnQuCisgICAgICAgIC0gSW50ZWdyYXRlIHdpdGggY21ha2UuCisgICAg
ICAgIC0gUG9ydCBJbWFnZURlY29kZXIgaW1wcm92ZW1lbnRzIHJlcXVpcmVkIGJ5IHRoaXMgaW1w
bGVtZW50YXRpb24uCisgICAgICAgIC0gTWVyZ2UgUmVzb3VyY2VCdWZmZXIgY2hhbmdlcyB0byBT
aGFyZWRCdWZmZXIuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHA6IEFkZCBwYXJhbWV0ZXIgdG8gZW5hYmxlIERpc2tJbWFnZUNhY2hlLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogVW5jb25kaXRpb25hbGx5
IGVuYWJsZQorICAgICAgICBEaXNrSW1hZ2VDYWNoZSBmb3IgR1RLIGlmIGVuYWJsZWQgYXQgYnVp
bGQgdGltZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOiBFbmFibGUgRGlz
a0ltYWdlQ2FjaGUgYmFzZWQgb24gcGFyYW1ldGVycyByZWNlaXZlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorCiAyMDE1LTA3LTMxICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBO
UEFQSSBjb2RlIGNyYXNoZXMgb24gV2F5bGFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgKaW5kZXgg
MTI1MzYzNWUwMmFiNzliYWE5N2QyNDI4ZDliZWQ4OGE1M2E0NTgxOS4uMzY4M2EyMTZhYzdkMjU0
MzBjNDE0ZjU3M2U5MDBmNjliYzk4NTViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmVh
dHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5oCkBAIC03
NCw2ICs3NCwxMCBAQAogI2RlZmluZSBFTkFCTEVfQ1VSU09SX1NVUFBPUlQgMAogI2VuZGlmCiAK
KyNpZiAhZGVmaW5lZChFTkFCTEVfRElTS19JTUFHRV9DQUNIRSkKKyNkZWZpbmUgRU5BQkxFX0RJ
U0tfSU1BR0VfQ0FDSEUgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfRFJBR19TVVBQ
T1JUKQogI2RlZmluZSBFTkFCTEVfRFJBR19TVVBQT1JUIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQppbmRleCAxZmM2ODUzZDdhNzcxMWQ5NTQ1NDUzZDZkYjdjYzljZjhiYzU2ZjNj
Li41Zjg2ZjBmZTRmZGQ3ODIyZmJkZmI0ODcxYTg4OTczYmQ4NjM5MmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQpAQCAtMTg1LDYgKzE4NSw4IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9TeW5jaHJvbm91c0xvYWRlckNsaWVudFNv
dXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0R2VuZXJp
Yy5jcHAKIAorICAgIHBsYXRmb3JtL3Bvc2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3BwCisKICAg
ICBwbGF0Zm9ybS9zb3VwL1B1YmxpY1N1ZmZpeFNvdXAuY3BwCiAgICAgcGxhdGZvcm0vc291cC9T
aGFyZWRCdWZmZXJTb3VwLmNwcAogICAgIHBsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGRmMzM2NzVjNjNi
NWRiNGFmMDNlMzI5MzdjOTFhOWQ3MzQwNGE3MGEuLmJjMWEyNDVmZTNhYzZlMDc3NzIwYWIzYzdh
OGJmZWFhOWFhNTZiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCkBAIC00NTQsNiArNDU1LDEzIEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgQ2Fj
aGVkUmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwogfQogCisjaWYgRU5BQkxF
KERJU0tfSU1BR0VfQ0FDSEUpCitib29sIENhY2hlZEltYWdlOjppc0RlY29kZWREYXRhTWVtb3J5
TWFwcGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbWFnZS0+aXNNZW1vcnlNYXBwZWQoKTsK
K30KKyNlbmRpZgorCiB2b2lkIENhY2hlZEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoKQogewog
ICAgIGJvb2wgY2FuRGVsZXRlSW1hZ2UgPSAhbV9pbWFnZSB8fCAobV9pbWFnZS0+aGFzT25lUmVm
KCkgJiYgbV9pbWFnZS0+aXNCaXRtYXBJbWFnZSgpKTsKQEAgLTUwNiw2ICs1MTQsNDAgQEAgYm9v
bCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyKQogICAgIHJldHVybiBpbWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKCk7CiB9CiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKK2Jvb2wgQ2FjaGVk
SW1hZ2U6OmNhblVzZURpc2tJbWFnZUNhY2hlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNMb2FkaW5n
KCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IW1fZGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fZGF0YS0+c2l6ZSgp
IDwgZGlza0ltYWdlQ2FjaGUoKS5taW5pbXVtSW1hZ2VTaXplKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vICJDYWNoZS1Db250cm9sOiBuby1zdG9yZSIgcmVzb3VyY2VzIG1heSBi
ZSBtYXJrZWQgYXMgc3VjaCBiZWNhdXNlIHRoZXkgbWF5CisgICAgLy8gY29udGFpbiBzZW5zaXRp
dmUgaW5mb3JtYXRpb24uIFdlIHNob3VsZCBub3Qgd3JpdGUgdGhlc2UgcmVzb3VyY2VzIHRvIGRp
c2suCisgICAgaWYgKG1fcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRlc3Rpbmcgc2hvd3MgdGhhdCBQREYgaW1h
Z2VzIGRpZCBub3Qgd29yayB3aGVuIG1lbW9yeSBtYXBwZWQuCisgICAgLy8gSG93ZXZlciwgU1ZH
IGltYWdlcyBhbmQgQml0bWFwIGltYWdlcyB3ZXJlIGZpbmUuIFNlZToKKyAgICAvLyA8cmRhcjov
L3Byb2JsZW0vODU5MTgzND4gRGlzayBJbWFnZSBDYWNoZSBzaG91bGQgc3VwcG9ydCBQREYgSW1h
Z2VzCisgICAgaWYgKG1fcmVzcG9uc2UubWltZVR5cGUoKSA9PSAiYXBwbGljYXRpb24vcGRmIikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ2Fj
aGVkSW1hZ2U6OnVzZURpc2tJbWFnZUNhY2hlKCkKK3sKKyAgICBBU1NFUlQoY2FuVXNlRGlza0lt
YWdlQ2FjaGUoKSk7CisgICAgQVNTRVJUKCFpc1VzaW5nRGlza0ltYWdlQ2FjaGUoKSk7CisgICAg
bV9kYXRhLT5hbGxvd1RvQmVNZW1vcnlNYXBwZWQoKTsKK30KKyNlbmRpZgorCiBib29sIENhY2hl
ZEltYWdlOjppc09yaWdpbkNsZWFuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKIHsK
ICAgICBpZiAoIWltYWdlKCktPmhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDg4NTkyNTIzMmI2M2FiNTkwZDQz
ODZkY2MyY2VmNjI2NThiZDI4NDMuLmE1NDZhZDhlYzdlZjE3MWQ3NmNiNGQzMTM1NTE4NWE0Y2I5
NTI1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC04
Nyw2ICs4NywxMiBAQCBwdWJsaWM6CiAgICAgUmV2YWxpZGF0aW9uRGVjaXNpb24gbWFrZVJldmFs
aWRhdGlvbkRlY2lzaW9uKENhY2hlUG9saWN5KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0
aW9ucyYpIG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgdmly
dHVhbCBib29sIGNhblVzZURpc2tJbWFnZUNhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHVzZURpc2tJbWFnZUNhY2hlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29s
IGlzRGVjb2RlZERhdGFNZW1vcnlNYXBwZWQoKSBjb25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAg
ICAgYm9vbCBpc09yaWdpbkNsZWFuKFNlY3VyaXR5T3JpZ2luKik7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA1YTQw
NTliYzc0MmYyNWJkZjljMzhkYmYwNmI4NTUyYTAxYjRmNWRjLi5jMDBiYTlkMmZhY2I2Nzc2ZTZj
NTRkMjZjODVmZjQzMWYyOGJjMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTc4MCw4ICs3ODAsMTQgQEAgdm9pZCBDYWNoZWRSZXNv
dXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogICAgIG1fcmVzb3VyY2UuZGlkQWRkQ2xpZW50
KCZtX2NsaWVudCk7CiB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikgfHwgVVNFKFNPVVApCisjaWYg
RU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCitib29sIENhY2hlZFJlc291cmNlOjppc1VzaW5nRGlz
a0ltYWdlQ2FjaGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2RhdGEgJiYgbV9kYXRhLT5pc1Vz
aW5nRGlza0ltYWdlQ2FjaGUoKTsKK30KKyNlbmRpZgogCisjaWYgVVNFKEZPVU5EQVRJT04pIHx8
IFVTRShTT1VQKQogdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNo
YXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCA2ZGVmMDcyZWJiMTAwMjc5
NTdhZWY3ODU1ZmQxMTUyY2M1OTAzN2U3Li42NjY2OGNmN2VjY2VkNWJiNGE2YzIyMWVkOTc5Y2Mx
ODBlODQxYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaApAQCAtMjUwLDYgKzI1MCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMb2FkRmluaXNo
VGltZShkb3VibGUgZmluaXNoVGltZSkgeyBtX2xvYWRGaW5pc2hUaW1lID0gZmluaXNoVGltZTsg
fQogICAgIGRvdWJsZSBsb2FkRmluaXNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZEZpbmlz
aFRpbWU7IH0KIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGJvb2wgaXNVc2lu
Z0Rpc2tJbWFnZUNhY2hlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblVzZURpc2tJbWFn
ZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXNlRGlz
a0ltYWdlQ2FjaGUoKSB7IEFTU0VSVChjYW5Vc2VEaXNrSW1hZ2VDYWNoZSgpKTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc0RlY29kZWREYXRhTWVtb3J5TWFwcGVkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH07CisjZW5kaWYKKwogICAgIHZpcnR1YWwgYm9vbCBjYW5SZXVzZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICNpZiBVU0UoRk9VTkRBVElPTikg
fHwgVVNFKFNPVVApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cAppbmRleCA3YWE1MWYwNDhhNmEwNWFmMzc2NWFiYWVjYjMyNWIwNTdkYWVlNDNmLi42NDNhYzcz
ZGQyMGQ2ZGQzODc5MWIyYjYxZTgwMzYxNzI4NDJjMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJD
YWNoZWRJbWFnZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZS5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWRlclR5cGVzLmgiCkBAIC01MCw2ICs1MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RhdGljIGNvbnN0IGludCBjRGVmYXVsdENhY2hlQ2FwYWNpdHkgPSA4MTkyICogMTAy
NDsKIHN0YXRpYyBjb25zdCBkb3VibGUgY01pbkRlbGF5QmVmb3JlTGl2ZURlY29kZWRQcnVuZSA9
IDE7IC8vIFNlY29uZHMuCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCitzdGF0aWMgY29u
c3QgZG91YmxlIGNNYXhEZWxheUJlZm9yZUxpdmVEZWNvZGVkUHJ1bmUgPSAxMDsgLy8gU2Vjb25k
cy4KKyNlbmRpZgogc3RhdGljIGNvbnN0IGZsb2F0IGNUYXJnZXRQcnVuZVBlcmNlbnRhZ2UgPSAu
OTVmOyAvLyBQZXJjZW50YWdlIG9mIGNhcGFjaXR5IHRvd2FyZCB3aGljaCB3ZSBwcnVuZSwgdG8g
YXZvaWQgaW1tZWRpYXRlbHkgcHJ1bmluZyBhZ2Fpbi4KIHN0YXRpYyBjb25zdCBhdXRvIGRlZmF1
bHREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwgPSBzdGQ6OmNocm9ubzo6c2Vjb25kcyB7IDAg
fTsKIApAQCAtMzE3LDkgKzMyMSwxOCBAQCB2b2lkIE1lbW9yeUNhY2hlOjpwcnVuZUxpdmVSZXNv
dXJjZXNUb1NpemUodW5zaWduZWQgdGFyZ2V0U2l6ZSwgYm9vbCBzaG91bGREZXN0cgogICAgICAg
ICAgICAgaWYgKGN1cnJlbnQtPmRlY29kZWREYXRhSXNQdXJnZWFibGUoKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgICAgICAg
ICAgLy8gVGhyb3dpbmcgYXdheSByZXNvdXJjZXMgY2FjaGVkIGluIHRoZSBkaXNrIGltYWdlIGNh
Y2hlIGRvZXMgbm8KKyAgICAgICAgICAgIC8vIGdvb2QgZm9yIG1lbW9yeSBjb25zdW1wdGlvbiwg
c28gc3RpY2sgdG8gdGhlbS4gVW5sZXNzIHRoZSBjYWNoZSBpcyBmdWxsLAorICAgICAgICAgICAg
Ly8gaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIHRocm93IGF3YXkgaXRlbXMgdGhhdCBoYXZlIG5v
dCBiZWVuIGFjY2Vzc2VkCisgICAgICAgICAgICAvLyBmb3IgYSB3aGlsZSwgdG8gZ2l2ZSByb29t
IGZvciBvdGhlcnMuCisgICAgICAgICAgICBpZiAoIWN1cnJlbnQtPmlzRGVjb2RlZERhdGFNZW1v
cnlNYXBwZWQoKSB8fCAoZGlza0ltYWdlQ2FjaGUoKS5pc0Z1bGwoKSAmJiBlbGFwc2VkVGltZSA+
PSBjTWF4RGVsYXlCZWZvcmVMaXZlRGVjb2RlZFBydW5lKSkKKyAgICAgICAgICAgICAgICBjdXJy
ZW50LT5kZXN0cm95RGVjb2RlZERhdGEoKTsKKyNlbHNlCiAgICAgICAgICAgICAvLyBEZXN0cm95
IG91ciBkZWNvZGVkIGRhdGEuIFRoaXMgd2lsbCByZW1vdmUgdXMgZnJvbSBtX2xpdmVEZWNvZGVk
UmVzb3VyY2VzLCBhbmQgcG9zc2libHkgbW92ZSB1cwogICAgICAgICAgICAgLy8gdG8gYSBkaWZm
ZXJlbnQgTFJVIGxpc3QgaW4gbV9hbGxSZXNvdXJjZXMuCiAgICAgICAgICAgICBjdXJyZW50LT5k
ZXN0cm95RGVjb2RlZERhdGEoKTsKKyNlbmRpZgogCiAgICAgICAgICAgICBpZiAodGFyZ2V0U2l6
ZSAmJiBtX2xpdmVTaXplIDw9IHRhcmdldFNpemUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNDA4LDYgKzQyMSw1MCBAQCB2b2lkIE1lbW9yeUNhY2hlOjpwcnVuZURlYWRSZXNvdXJjZXNU
b1NpemUodW5zaWduZWQgdGFyZ2V0U2l6ZSkKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoRElTS19J
TUFHRV9DQUNIRSkKK3ZvaWQgTWVtb3J5Q2FjaGU6OmZsdXNoQ2FjaGVkSW1hZ2VzVG9EaXNrKCkK
K3sKKyAgICBpZiAoIWRpc2tJbWFnZUNhY2hlKCkuaXNFbmFibGVkKCkpCisgICAgICAgIHJldHVy
bjsKKworI2lmbmRlZiBOREVCVUcKKyAgICBkb3VibGUgc3RhcnQgPSBXVEY6OmN1cnJlbnRUaW1l
TVMoKTsKKyAgICB1bnNpZ25lZCByZXNvdXJjZUNvdW50ID0gMDsKKyAgICB1bnNpZ25lZCBjYWNo
ZWRTaXplID0gMDsKKyNlbmRpZgorCisgICAgZm9yIChpbnQgaSA9IG1fYWxsUmVzb3VyY2VzLnNp
emUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIExSVUxpc3QmIGxpc3QgPSAqbV9hbGxS
ZXNvdXJjZXNbaV07CisKKyAgICAgICAgYXV0byBpdCA9IGxpc3QuYmVnaW4oKTsKKyAgICAgICAg
d2hpbGUgKGl0ICE9IGxpc3QuZW5kKCkpIHsKKyAgICAgICAgICAgIENhY2hlZFJlc291cmNlJiBj
dXJyZW50ID0gKippdDsKKworICAgICAgICAgICAgLy8gSW5jcmVtZW50IHRoZSBpdGVyYXRvciBu
b3cgYXMgdGhlIGNhbGwgdG8gZGVzdHJveURlY29kZWREYXRhKCkgYmVsb3cgbWF5CisgICAgICAg
ICAgICAvLyBpbnZhbGlkYXRlIHRoZSBjdXJyZW50IGl0ZXJhdG9yLgorICAgICAgICAgICAgKytp
dDsKKworICAgICAgICAgICAgLy8gUHJvdGVjdCAnbmV4dCcgc28gaXQgY2FuJ3QgZ2V0IGRlbGV0
ZWQgZHVyaW5nIGRlc3Ryb3lEZWNvZGVkRGF0YSgpLgorICAgICAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IG5leHQgPSBpdCAhPSBsaXN0LmVuZCgpID8gKml0IDog
bnVsbHB0cjsKKyAgICAgICAgICAgIGlmICghY3VycmVudC5pc1VzaW5nRGlza0ltYWdlQ2FjaGUo
KSAmJiBjdXJyZW50LmNhblVzZURpc2tJbWFnZUNhY2hlKCkpIHsKKyAgICAgICAgICAgICAgICBj
dXJyZW50LnVzZURpc2tJbWFnZUNhY2hlKCk7CisgICAgICAgICAgICAgICAgY3VycmVudC5kZXN0
cm95RGVjb2RlZERhdGEoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgICAgICAgICAgTE9HKERp
c2tJbWFnZUNhY2hlLCAiQ2FjaGU6OmRpc2tDYWNoZVJlc291cmNlcygpOiBhdHRlbXB0aW5nIHRv
IHNhdmUgKCVkKSBieXRlcyIsIGN1cnJlbnQucmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICArK3Jlc291cmNlQ291bnQ7CisgICAgICAgICAgICAgICAgY2FjaGVkU2l6
ZSArPSBjdXJyZW50LnJlc291cmNlQnVmZmVyKCktPnNpemUoKTsKKyNlbmRpZgorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisjaWZuZGVmIE5ERUJVRworICAgIGRvdWJsZSBlbmQg
PSBXVEY6OmN1cnJlbnRUaW1lTVMoKTsKKyAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNrSW1h
Z2VDYWNoZTogdG9vayAoJWYpIG1zIHRvIGNhY2hlICglZCkgYnl0ZXMgZm9yICglZCkgcmVzb3Vy
Y2VzIiwgZW5kIC0gc3RhcnQsIGNhY2hlZFNpemUsIHJlc291cmNlQ291bnQpOworI2VuZGlmCit9
CisjZW5kaWYgLy8gRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisKIHZvaWQgTWVtb3J5Q2FjaGU6
OnNldENhcGFjaXRpZXModW5zaWduZWQgbWluRGVhZEJ5dGVzLCB1bnNpZ25lZCBtYXhEZWFkQnl0
ZXMsIHVuc2lnbmVkIHRvdGFsQnl0ZXMpCiB7CiAgICAgQVNTRVJUKG1pbkRlYWRCeXRlcyA8PSBt
YXhEZWFkQnl0ZXMpOwpAQCAtNjcwLDYgKzcyNywxMCBAQCB2b2lkIE1lbW9yeUNhY2hlOjpUeXBl
U3RhdGlzdGljOjphZGRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgc2l6
ZSArPSByZXNvdXJjZS5zaXplKCk7CiAgICAgbGl2ZVNpemUgKz0gcmVzb3VyY2UuaGFzQ2xpZW50
cygpID8gcmVzb3VyY2Uuc2l6ZSgpIDogMDsKICAgICBkZWNvZGVkU2l6ZSArPSByZXNvdXJjZS5k
ZWNvZGVkU2l6ZSgpOworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIC8vIE9ubHkg
dGhlIGRhdGEgaW5zaWRlIHRoZSByZXNvdXJjZSB3YXMgbWFwcGVkLCBub3QgdGhlIGVudGlyZSBy
ZXNvdXJjZS4KKyAgICBtYXBwZWRTaXplICs9IHJlc291cmNlLmlzVXNpbmdEaXNrSW1hZ2VDYWNo
ZSgpID8gcmVzb3VyY2UucmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgpIDogMDsKKyNlbmRpZgogfQog
CiBNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBNZW1vcnlDYWNoZTo6Z2V0U3RhdGlzdGljcygpCkBA
IC03NzcsOSArODM4LDE1IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnBydW5lU29vbigpCiB2b2lkIE1l
bW9yeUNhY2hlOjpkdW1wU3RhdHMoKQogewogICAgIFN0YXRpc3RpY3MgcyA9IGdldFN0YXRpc3Rp
Y3MoKTsKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICBwcmludGYoIiUtMTNzICUt
MTNzICUtMTNzICUtMTNzICUtMTNzICUtMTNzICUtMTNzXG4iLCAiIiwgIkNvdW50IiwgIlNpemUi
LCAiTGl2ZVNpemUiLCAiRGVjb2RlZFNpemUiLCAiTWFwcGVkIiwgIlwiUmVhbFwiIik7CisgICAg
cHJpbnRmKCIlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzc1xuIiwgIi0t
LS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0t
LS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0tLS0tLS0i
KTsKKyAgICBwcmludGYoIiUtMTNzICUxM2QgJTEzZCAlMTNkICUxM2QgJTEzZCAlMTNkXG4iLCAi
SW1hZ2VzIiwgcy5pbWFnZXMuY291bnQsIHMuaW1hZ2VzLnNpemUsIHMuaW1hZ2VzLmxpdmVTaXpl
LCBzLmltYWdlcy5kZWNvZGVkU2l6ZSwgcy5pbWFnZXMubWFwcGVkU2l6ZSwgcy5pbWFnZXMuc2l6
ZSAtIHMuaW1hZ2VzLm1hcHBlZFNpemUpOworI2Vsc2UKICAgICBwcmludGYoIiUtMTNzICUtMTNz
ICUtMTNzICUtMTNzICUtMTNzXG4iLCAiIiwgIkNvdW50IiwgIlNpemUiLCAiTGl2ZVNpemUiLCAi
RGVjb2RlZFNpemUiKTsKICAgICBwcmludGYoIiUtMTNzICUtMTNzICUtMTNzICUtMTNzICUtMTNz
XG4iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0tLS0tLS0iLCAi
LS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIik7CiAgICAgcHJpbnRmKCIlLTEzcyAlMTNk
ICUxM2QgJTEzZCAlMTNkXG4iLCAiSW1hZ2VzIiwgcy5pbWFnZXMuY291bnQsIHMuaW1hZ2VzLnNp
emUsIHMuaW1hZ2VzLmxpdmVTaXplLCBzLmltYWdlcy5kZWNvZGVkU2l6ZSk7CisjZW5kaWYKICAg
ICBwcmludGYoIiUtMTNzICUxM2QgJTEzZCAlMTNkICUxM2RcbiIsICJDU1MiLCBzLmNzc1N0eWxl
U2hlZXRzLmNvdW50LCBzLmNzc1N0eWxlU2hlZXRzLnNpemUsIHMuY3NzU3R5bGVTaGVldHMubGl2
ZVNpemUsIHMuY3NzU3R5bGVTaGVldHMuZGVjb2RlZFNpemUpOwogI2lmIEVOQUJMRShYU0xUKQog
ICAgIHByaW50ZigiJS0xM3MgJTEzZCAlMTNkICUxM2QgJTEzZFxuIiwgIlhTTCIsIHMueHNsU3R5
bGVTaGVldHMuY291bnQsIHMueHNsU3R5bGVTaGVldHMuc2l6ZSwgcy54c2xTdHlsZVNoZWV0cy5s
aXZlU2l6ZSwgcy54c2xTdHlsZVNoZWV0cy5kZWNvZGVkU2l6ZSk7CkBAIC03OTEsMTQgKzg1OCwy
MiBAQCB2b2lkIE1lbW9yeUNhY2hlOjpkdW1wU3RhdHMoKQogCiB2b2lkIE1lbW9yeUNhY2hlOjpk
dW1wTFJVTGlzdHMoYm9vbCBpbmNsdWRlTGl2ZSkgY29uc3QKIHsKKyNpZiBFTkFCTEUoRElTS19J
TUFHRV9DQUNIRSkKKyAgICBwcmludGYoIkxSVS1TUCBsaXN0cyBpbiBldmljdGlvbiBvcmRlciAo
S2lsb2J5dGVzIGRlY29kZWQsIEtpbG9ieXRlcyBlbmNvZGVkLCBBY2Nlc3MgY291bnQsIFJlZmVy
ZW5jZWQsIGlzTWVtb3J5TWFwcGVkKTpcbiIpOworI2Vsc2UKICAgICBwcmludGYoIkxSVS1TUCBs
aXN0cyBpbiBldmljdGlvbiBvcmRlciAoS2lsb2J5dGVzIGRlY29kZWQsIEtpbG9ieXRlcyBlbmNv
ZGVkLCBBY2Nlc3MgY291bnQsIFJlZmVyZW5jZWQpOlxuIik7CisjZW5kaWYKIAogICAgIGludCBz
aXplID0gbV9hbGxSZXNvdXJjZXMuc2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSBzaXplIC0gMTsg
aSA+PSAwOyBpLS0pIHsKICAgICAgICAgcHJpbnRmKCJcblxuTGlzdCAlZDogIiwgaSk7CiAgICAg
ICAgIGZvciAoYXV0byogcmVzb3VyY2UgOiAqbV9hbGxSZXNvdXJjZXNbaV0pIHsKICAgICAgICAg
ICAgIGlmIChpbmNsdWRlTGl2ZSB8fCAhcmVzb3VyY2UtPmhhc0NsaWVudHMoKSkKKyNpZiBFTkFC
TEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAgICAgICAgICAgICBwcmludGYoIiglLjFmSywgJS4x
ZkssICV1QSwgJWRSLCAlZCk7ICIsIHJlc291cmNlLT5kZWNvZGVkU2l6ZSgpIC8gMTAyNC4wZiwg
KHJlc291cmNlLT5lbmNvZGVkU2l6ZSgpICsgcmVzb3VyY2UtPm92ZXJoZWFkU2l6ZSgpKSAvIDEw
MjQuMGYsIHJlc291cmNlLT5hY2Nlc3NDb3VudCgpLCByZXNvdXJjZS0+aGFzQ2xpZW50cygpLCBy
ZXNvdXJjZS0+aXNVc2luZ0Rpc2tJbWFnZUNhY2hlKCkpOworI2Vsc2UKICAgICAgICAgICAgICAg
ICBwcmludGYoIiglLjFmSywgJS4xZkssICV1QSwgJWRSKTsgIiwgcmVzb3VyY2UtPmRlY29kZWRT
aXplKCkgLyAxMDI0LjBmLCAocmVzb3VyY2UtPmVuY29kZWRTaXplKCkgKyByZXNvdXJjZS0+b3Zl
cmhlYWRTaXplKCkpIC8gMTAyNC4wZiwgcmVzb3VyY2UtPmFjY2Vzc0NvdW50KCksIHJlc291cmNl
LT5oYXNDbGllbnRzKCkpOworI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IDRhMDAyODUyNmRiMmMyNWU2NGFi
YWEwNzgzOWZmY2U4ZjM1MzExNDQuLjVmM2Y1NDEyYWE3YjVlNDAzNTZhZmNlOTdkMDNlZmU3MmYx
NDcwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCkBAIC03
MCwxMyArNzAsMTkgQEAgcHVibGljOgogICAgICAgICBpbnQgc2l6ZTsKICAgICAgICAgaW50IGxp
dmVTaXplOwogICAgICAgICBpbnQgZGVjb2RlZFNpemU7CisjaWYgRU5BQkxFKERJU0tfSU1BR0Vf
Q0FDSEUpCisgICAgICAgIGludCBtYXBwZWRTaXplOworI2VuZGlmCiAKICAgICAgICAgVHlwZVN0
YXRpc3RpYygpCiAgICAgICAgICAgICA6IGNvdW50KDApCiAgICAgICAgICAgICAsIHNpemUoMCkK
ICAgICAgICAgICAgICwgbGl2ZVNpemUoMCkKICAgICAgICAgICAgICwgZGVjb2RlZFNpemUoMCkK
LSAgICAgICAgeyAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAgICAgICAgICwg
bWFwcGVkU2l6ZSgwKQorI2VuZGlmCisgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIHZv
aWQgYWRkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKQEAgLTE0MCw2ICsxNDYsMTAgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlUmVxdWVzdEZyb21TZXNzaW9uQ2FjaGVzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKIAorI2lmIEVO
QUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2hDYWNo
ZWRJbWFnZXNUb0Rpc2soKTsgLy8gRmx1c2ggZW5jb2RlZCBkYXRhIGZyb20gcmVzb3VyY2VzIHN0
aWxsIHJlZmVyZW5jZWQgYnkgd2ViIHBhZ2VzLgorI2VuZGlmCisKICAgICAvLyBGdW5jdGlvbiB0
byBjb2xsZWN0IGNhY2hlIHN0YXRpc3RpY3MgZm9yIHRoZSBjYWNoZXMgd2luZG93IGluIHRoZSBT
YWZhcmkgRGVidWcgbWVudS4KICAgICBXRUJDT1JFX0VYUE9SVCBTdGF0aXN0aWNzIGdldFN0YXRp
c3RpY3MoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rpc2tJ
bWFnZUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJmNmM2NTQ2YjU2ZjQyM2ZkNGU4NDUyMjYzYzMwZWY2NzgzYmMzM2MKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VDYWNoZS5oCkBA
IC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBDb2xsYWJvcmEgTHRkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIERpc2tJbWFnZUNhY2hlX2gKKyNkZWZpbmUgRGlza0ltYWdlQ2Fj
aGVfaAorCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisKKyNpbmNsdWRlICJEaXNrSW1h
Z2VDYWNoZUNsaWVudC5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCit0eXBlZGVmIHVuc2lnbmVkIERpc2tJbWFnZUNhY2hlSWQ7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gR2xvYmFsIGRpc2sgaW1hZ2UgY2FjaGUgb2JqZWN0
LgorY2xhc3MgRGlza0ltYWdlQ2FjaGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2tJ
bWFnZUNhY2hlKTsKK3ByaXZhdGU6CisKKyAgICAvLyBMaWZldGltZSBvZiB0aGlzIEVudHJ5IGFu
ZCB0aGUgU2hhcmVkQnVmZmVyIGl0IHdyYXBzIGFyZSBtYW5hZ2VkIGluIHRoZSBtYWluIHRocmVh
ZC4KKyAgICBjbGFzcyBFbnRyeSA6IHB1YmxpYyBSZWZDb3VudGVkPEVudHJ5PiB7CisgICAgcHJp
dmF0ZToKKyAgICAgICAgRW50cnkoU2hhcmVkQnVmZmVyKiwgRGlza0ltYWdlQ2FjaGVJZCk7Cisg
ICAgICAgIEVudHJ5KHVuc2lnbmVkIHNpemUsIERpc2tJbWFnZUNhY2hlSWQpOworCisgICAgcHVi
bGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+IGNy
ZWF0ZShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGlza0ltYWdlQ2FjaGVJZCBpZCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXNrSW1hZ2VDYWNoZTo6RW50cnko
YnVmZmVyLCBpZCkpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlz
a0ltYWdlQ2FjaGU6OkVudHJ5PiBjcmVhdGUodW5zaWduZWQgc2l6ZSwgRGlza0ltYWdlQ2FjaGVJ
ZCBpZCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEaXNrSW1h
Z2VDYWNoZTo6RW50cnkoc2l6ZSwgaWQpKTsKKyAgICAgICAgfQorCisgICAgICAgIH5FbnRyeSgp
OworCisgICAgICAgIGJvb2wgc3luY2hyb25vdXNseU1hcCgpOworICAgICAgICB2b2lkIG1hcCgp
OworICAgICAgICB2b2lkIHVubWFwKCk7CisgICAgICAgIHZvaWQgcmVtb3ZlRmlsZSgpOworICAg
ICAgICB2b2lkIGNsZWFyRGF0YVdpdGhvdXRNYXBwaW5nKCk7CisKKyAgICAgICAgRGlza0ltYWdl
Q2FjaGVJZCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICAgICAgdW5zaWduZWQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgICAgICB2b2lkKiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9tYXBwaW5nOyB9CisgICAgICAgIGJvb2wgaXNNYXBwZWQoKSBjb25zdCB7IHJl
dHVybiBtX21hcHBpbmcgIT0gbnVsbHB0cjsgfQorICAgICAgICB2b2lkIHNldFRlbXBvcmFyeUZp
bGVQYXRoKGNvbnN0IFN0cmluZyYpOworCisgICAgICAgIHN0YXRpYyB2b2lkIG1hcFRocmVhZFN0
YXJ0KHZvaWQqKTsKKyAgICAgICAgc3RhdGljIHZvaWQgcmVtb3ZlRmlsZVRocmVhZFN0YXJ0KHZv
aWQqKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgbWFwSW50ZXJuYWwoKTsKKyAgICAg
ICAgdm9pZCBjYW5jZWxNYXAoKTsKKworI2lmIE9TKFVOSVgpCisgICAgICAgIGludCB3cml0ZVRv
RmlsZUludGVybmFsKGludCBmZCk7CisjZW5kaWYKKworICAgICAgICB2b2lkIGRpZEZhaWxNZW1v
cnlNYXAoKTsKKyAgICAgICAgdm9pZCBkaWRNYXBNZW1vcnkoKTsKKyAgICAgICAgdm9pZCBkaWRS
ZW1vdmVGaWxlKCk7CisKKyAgICAgICAgU2hhcmVkQnVmZmVyKiBtX2J1ZmZlcjsKKyAgICAgICAg
RGlza0ltYWdlQ2FjaGVJZCBtX2lkOworICAgICAgICB1bnNpZ25lZCBtX3NpemU7CisgICAgICAg
IHZvaWQqIG1fbWFwcGluZzsKKyAgICAgICAgU3RyaW5nIG1fcGF0aDsKKyAgICB9OworCitwdWJs
aWM6CisgICAgRGlza0ltYWdlQ2FjaGUoKTsKKyAgICBmcmllbmQgRGlza0ltYWdlQ2FjaGUmIGRp
c2tJbWFnZUNhY2hlKCk7CisgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPERpc2tJbWFn
ZUNhY2hlPjsKKyAgICBzdGF0aWMgY29uc3QgRGlza0ltYWdlQ2FjaGVJZCBpbnZhbGlkRGlza0Nh
Y2hlSWQgPSAwOworCisgICAgLy8gV3JpdGUgb3V0IGFuIGl0ZW0uCisgICAgRGlza0ltYWdlQ2Fj
aGVJZCBjcmVhdGVGaWxlQmFja2VkTWFwcGluZyh1bnNpZ25lZCBzaXplKTsKKyAgICBEaXNrSW1h
Z2VDYWNoZUlkIHdyaXRlSXRlbShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pOworCisgICAgLy8g
UmVtb3ZlIGl0ZW0uCisgICAgdm9pZCByZW1vdmVJdGVtKERpc2tJbWFnZUNhY2hlSWQpOworCisg
ICAgLy8gTWFwcGluZyBmb3IgYW4gaXRlbS4KKyAgICB2b2lkKiBkYXRhRm9ySXRlbShEaXNrSW1h
Z2VDYWNoZUlkKTsKKworICAgIC8vIFNldHVwIGEgY2xpZW50IGZvciBjYWxsYmFja3MuCisgICAg
dm9pZCBzZXRDbGllbnQoUGFzc1JlZlB0cjxEaXNrSW1hZ2VDYWNoZUNsaWVudD4gY2xpZW50KSB7
IG1fY2xpZW50ID0gY2xpZW50OyB9CisKKyAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9l
bmFibGVkID0gZW5hYmxlZDsgfQorCisgICAgdW5zaWduZWQgbWF4aW11bUNhY2hlU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWF4aW11bUNhY2hlU2l6ZTsgfQorICAgIHZvaWQgc2V0TWF4aW11bUNh
Y2hlU2l6ZSh1bnNpZ25lZCBtYXhpbXVtKSB7IG1fbWF4aW11bUNhY2hlU2l6ZSA9IG1heGltdW07
IH0KKworICAgIHVuc2lnbmVkIG1pbmltdW1JbWFnZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21p
bmltdW1JbWFnZVNpemU7IH0KKyAgICB2b2lkIHNldE1pbmltdW1JbWFnZVNpemUodW5zaWduZWQg
bWluaW11bSkgeyBtX21pbmltdW1JbWFnZVNpemUgPSBtaW5pbXVtOyB9CisKKyAgICBjb25zdCBT
dHJpbmcmIGNhY2hlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZURpcmVjdG9yeTsg
fQorCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJv
b2wgaXNGdWxsKCkgY29uc3QgeyByZXR1cm4gbV9zaXplID49IG1fbWF4aW11bUNhY2hlU2l6ZTsg
fQorCitwcml2YXRlOgorICAgIH5EaXNrSW1hZ2VDYWNoZSgpIHsgfQorCisgICAgYm9vbCBjcmVh
dGVEaXJlY3RvcnlJZk5lZWRlZCgpOworICAgIERpc2tJbWFnZUNhY2hlSWQgbmV4dEF2YWlsYWJs
ZUlkKCk7CisKKyAgICBTdHJpbmcgcHJlcGFyZUZpbGUoKTsKKyAgICBTdHJpbmcgdGVtcG9yYXJ5
RGlyZWN0b3J5KCk7CisgICAgU3RyaW5nIHRlbXBvcmFyeUZpbGUoKTsKKworICAgIHZvaWQgdXBk
YXRlU2l6ZSh1bnNpZ25lZCBkZWx0YSk7CisKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICB1bnNp
Z25lZCBtX3NpemU7CisgICAgdW5zaWduZWQgbV9tYXhpbXVtQ2FjaGVTaXplOworICAgIHVuc2ln
bmVkIG1fbWluaW11bUltYWdlU2l6ZTsKKyAgICBEaXNrSW1hZ2VDYWNoZUlkIG1fbmV4dEF2YWls
YWJsZUlkOworICAgIFN0cmluZyBtX2NhY2hlRGlyZWN0b3J5OworCisgICAgUmVmUHRyPERpc2tJ
bWFnZUNhY2hlQ2xpZW50PiBtX2NsaWVudDsKKyAgICBIYXNoTWFwPERpc2tJbWFnZUNhY2hlSWQs
IFJlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+PiBtX3RhYmxlOworCisgICAgTXV0ZXggbV9t
dXRleDsKK307CisKKy8vIEZ1bmN0aW9uIHRvIG9idGFpbiB0aGUgZ2xvYmFsIGRpc2sgaW1hZ2Ug
Y2FjaGUuCitEaXNrSW1hZ2VDYWNoZSYgZGlza0ltYWdlQ2FjaGUoKTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisKKyNlbmRp
ZiAvLyBEaXNrSW1hZ2VDYWNoZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EaXNrSW1hZ2VDYWNoZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlza0lt
YWdlQ2FjaGVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTdhM2EwZGExMjQ4ZWZiY2MwYjhjZmI0MzAz
MTc5MWI2NTU1MzQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGlza0ltYWdlQ2FjaGVDbGllbnQuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBEaXNrSW1hZ2VDYWNoZUNsaWVudF9oCisjZGVmaW5lIERpc2tJbWFnZUNhY2hlQ2xpZW50
X2gKKworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorCisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBEaXNrSW1hZ2VDYWNoZUNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVk
PERpc2tJbWFnZUNhY2hlQ2xpZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RGlza0ltYWdl
Q2FjaGVDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGlza0ltYWdlQ2Fj
aGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorCisj
ZW5kaWYgLy8gRGlza0ltYWdlQ2FjaGVDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5
c3RlbS5oCmluZGV4IDEzYWIyOWJiMmI5Yjk5NzljMTkzZmJiOTEzNWYzZTdlNWM3YmEzYjIuLjcz
YWI1OTExOTI4ODFjYWI1N2E5OWRiZjQzMmJmNGRmYzczNjBhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTE2NSw2ICsxNjUsOCBAQCBpbmxpbmUgZG91YmxlIGludmFs
aWRGaWxlVGltZSgpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRf
TmFOKAogaW5saW5lIGJvb2wgaXNWYWxpZEZpbGVUaW1lKGRvdWJsZSB0aW1lKSB7IHJldHVybiBz
dGQ6OmlzZmluaXRlKHRpbWUpOyB9CiAKIC8vIFByZWZpeCBpcyB3aGF0IHRoZSBmaWxlbmFtZSBz
aG91bGQgYmUgcHJlZml4ZWQgd2l0aCwgbm90IHRoZSBmdWxsIHBhdGguCitXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcHJlZml4KTsK
K1dFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYg
c3ViRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHByZWZpeCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhh
bmRsZSYpOwogV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xvc2VG
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpOwpAQCAtMTk1LDYgKzE5Nyw3IEBAIFN0cmluZyBmaWxl
bmFtZVRvU3RyaW5nKGNvbnN0IGNoYXIqKTsKIFN0cmluZyBmaWxlbmFtZUZvckRpc3BsYXkoY29u
c3QgU3RyaW5nJik7CiBDU3RyaW5nIGFwcGxpY2F0aW9uRGlyZWN0b3J5UGF0aCgpOwogQ1N0cmlu
ZyBzaGFyZWRSZXNvdXJjZXNQYXRoKCk7CitTdHJpbmcgY3JlYXRlVXNlckNhY2hlRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiB1aW50NjRfdCBnZXRWb2x1
bWVGcmVlU2l6ZUZvclBhdGgoY29uc3QgY2hhciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5o
CmluZGV4IDE5MjEyOTliMTk0Y2Q1MjRmY2EwZDRkZmYzMWExMGUxMjEyYmRmMDIuLjVhNzZmZjUx
ZGFjZmU1YzZkYWVhZjM4OTY0NzA0ZmFjNmZiOTk3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dn
aW5nLmgKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIE0oQ29tcG9z
aXRpbmcpIFwKICAgICBNKENvbnRlbnRGaWx0ZXJpbmcpIFwKICAgICBNKERPTVRpbWVycykgXAor
ICAgIE0oRGlza0ltYWdlQ2FjaGUpIFwKICAgICBNKEVkaXRpbmcpIFwKICAgICBNKEV2ZW50cykg
XAogICAgIE0oRlRQKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApp
bmRleCA1MzM5NjFmYTBkMWQzMDk1ODVmYWM4NWM0YzljYWE2MDcyNDdiMDM0Li4zNTMyYTM5ZGM2
M2QxNzkyNjU1MzdhMTgxYjk5OTQxYTMxOTcyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAorI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlLmgi
CisKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgog
CkBAIC02MywyMyArNjUsNDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZyZWVTZWdtZW50KGNoYXIq
IHApCiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKCkKICAgICA6IG1fYnVmZmVyKGFkb3B0
UmVmKG5ldyBEYXRhQnVmZmVyKSkKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAs
IG1faXNNZW1vcnlNYXBwZWQoZmFsc2UpCisgICAgLCBtX2Rpc2tJbWFnZUNhY2hlSWQoRGlza0lt
YWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZCkKKyAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVk
Q2FsbGJhY2sobnVsbHB0cikKKyAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2tEYXRh
KG51bGxwdHIpCisjZW5kaWYKIHsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIodW5z
aWduZWQgc2l6ZSkKICAgICA6IG1fc2l6ZShzaXplKQogICAgICwgbV9idWZmZXIoYWRvcHRSZWYo
bmV3IERhdGFCdWZmZXIpKQorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgICwgbV9p
c01lbW9yeU1hcHBlZChmYWxzZSkKKyAgICAsIG1fZGlza0ltYWdlQ2FjaGVJZChEaXNrSW1hZ2VD
YWNoZTo6aW52YWxpZERpc2tDYWNoZUlkKQorICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxs
YmFjayhudWxscHRyKQorICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGEobnVs
bHB0cikKKyNlbmRpZgogewogfQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCBj
aGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQogICAgIDogbV9idWZmZXIoYWRvcHRSZWYobmV3IERh
dGFCdWZmZXIpKQorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgICwgbV9pc01lbW9y
eU1hcHBlZChmYWxzZSkKKyAgICAsIG1fZGlza0ltYWdlQ2FjaGVJZChEaXNrSW1hZ2VDYWNoZTo6
aW52YWxpZERpc2tDYWNoZUlkKQorICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFjayhu
dWxscHRyKQorICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGEobnVsbHB0cikK
KyNlbmRpZgogewogICAgIGFwcGVuZChkYXRhLCBzaXplKTsKIH0KIAogU2hhcmVkQnVmZmVyOjpT
aGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAg
ICA6IG1fYnVmZmVyKGFkb3B0UmVmKG5ldyBEYXRhQnVmZmVyKSkKKyNpZiBFTkFCTEUoRElTS19J
TUFHRV9DQUNIRSkKKyAgICAsIG1faXNNZW1vcnlNYXBwZWQoZmFsc2UpCisgICAgLCBtX2Rpc2tJ
bWFnZUNhY2hlSWQoRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZCkKKyAgICAsIG1f
bm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2sobnVsbHB0cikKKyAgICAsIG1fbm90aWZ5TWVtb3J5
TWFwcGVkQ2FsbGJhY2tEYXRhKG51bGxwdHIpCisjZW5kaWYKIHsKICAgICBhcHBlbmQocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwogfQpAQCAtOTIsNiArMTE4LDEz
IEBAIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKE1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEp
CiAKIFNoYXJlZEJ1ZmZlcjo6flNoYXJlZEJ1ZmZlcigpCiB7CisjaWYgRU5BQkxFKERJU0tfSU1B
R0VfQ0FDSEUpCisgICAgaWYgKG1fZGlza0ltYWdlQ2FjaGVJZCkgeworICAgICAgICBkaXNrSW1h
Z2VDYWNoZSgpLnJlbW92ZUl0ZW0obV9kaXNrSW1hZ2VDYWNoZUlkKTsKKyAgICAgICAgbV9pc01l
bW9yeU1hcHBlZCA9IGZhbHNlOworICAgICAgICBtX2Rpc2tJbWFnZUNhY2hlSWQgPSBEaXNrSW1h
Z2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkOworICAgIH0KKyNlbmRpZgogICAgIGNsZWFyKCk7
CiB9CiAKQEAgLTEyNSw4ICsxNTgsNzggQEAgdW5zaWduZWQgU2hhcmVkQnVmZmVyOjpzaXplKCkg
Y29uc3QKICAgICByZXR1cm4gbV9zaXplOwogfQogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FD
SEUpCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNBbGxvd2VkVG9CZU1lbW9yeU1hcHBlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fZGlza0ltYWdlQ2FjaGVJZCAhPSBEaXNrSW1hZ2VDYWNoZTo6aW52
YWxpZERpc2tDYWNoZUlkOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6aXNVc2luZ0Rpc2tJbWFn
ZUNhY2hlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNBbGxvd2VkVG9CZU1lbW9yeU1hcHBlZCgp
OworfQorCitTaGFyZWRCdWZmZXI6Ok1lbW9yeU1hcHBpbmdTdGF0ZSBTaGFyZWRCdWZmZXI6OmFs
bG93VG9CZU1lbW9yeU1hcHBlZCgpCit7CisgICAgaWYgKGlzTWVtb3J5TWFwcGVkKCkpCisgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OlN1Y2Nlc3NBbHJlYWR5TWFwcGVkOworCisgICAgaWYg
KGlzQWxsb3dlZFRvQmVNZW1vcnlNYXBwZWQoKSkKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6UHJldmlvdXNseVF1ZXVlZEZvck1hcHBpbmc7CisKKyAgICBtX2Rpc2tJbWFnZUNhY2hlSWQg
PSBkaXNrSW1hZ2VDYWNoZSgpLndyaXRlSXRlbSh0aGlzKTsKKyAgICBpZiAobV9kaXNrSW1hZ2VD
YWNoZUlkID09IERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQpCisgICAgICAgIHJl
dHVybiBTaGFyZWRCdWZmZXI6OkZhaWx1cmVDYWNoZUZ1bGw7CisKKyAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpRdWV1ZWRGb3JNYXBwaW5nOworfQorCit2b2lkIFNoYXJlZEJ1ZmZlcjo6ZmFpbGVk
TWVtb3J5TWFwKCkKK3sKKyAgICBpZiAobV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFjaykKKyAg
ICAgICAgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFjayh0aGlzLCBTaGFyZWRCdWZmZXI6OkZh
aWxlZCwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGEpOworfQorCit2b2lkIFNoYXJl
ZEJ1ZmZlcjo6bWFya0FzTWVtb3J5TWFwcGVkKCkKK3sKKyAgICBBU1NFUlQoIWlzTWVtb3J5TWFw
cGVkKCkpOworCisgICAgbV9pc01lbW9yeU1hcHBlZCA9IHRydWU7CisgICAgdW5zaWduZWQgc2F2
ZWRTaXplID0gc2l6ZSgpOworICAgIGNsZWFyKCk7CisgICAgbV9zaXplID0gc2F2ZWRTaXplOwor
CisgICAgaWYgKG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2spCisgICAgICAgIG1fbm90aWZ5
TWVtb3J5TWFwcGVkQ2FsbGJhY2sodGhpcywgU2hhcmVkQnVmZmVyOjpTdWNjZWVkZWQsIG1fbm90
aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2tEYXRhKTsKK30KKworU2hhcmVkQnVmZmVyOjpNZW1vcnlN
YXBwZWROb3RpZnlDYWxsYmFja0RhdGEgU2hhcmVkQnVmZmVyOjptZW1vcnlNYXBwZWROb3RpZmlj
YXRpb25DYWxsYmFja0RhdGEoKSBjb25zdAoreworICAgIHJldHVybiBtX25vdGlmeU1lbW9yeU1h
cHBlZENhbGxiYWNrRGF0YTsKK30KKworU2hhcmVkQnVmZmVyOjpNZW1vcnlNYXBwZWROb3RpZnlD
YWxsYmFjayBTaGFyZWRCdWZmZXI6Om1lbW9yeU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFjazsKK30KKwor
dm9pZCBTaGFyZWRCdWZmZXI6OnNldE1lbW9yeU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKE1l
bW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNrIGNhbGxiYWNrLCBNZW1vcnlNYXBwZWROb3RpZnlDYWxs
YmFja0RhdGEgZGF0YSkKK3sKKyAgICBBU1NFUlQoIW1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJh
Y2sgfHwgIWNhbGxiYWNrKTsKKyAgICBBU1NFUlQoIW1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJh
Y2tEYXRhIHx8ICFkYXRhKTsKKworICAgIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2sgPSBj
YWxsYmFjazsKKyAgICBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrRGF0YSA9IGRhdGE7Cit9
CisjZW5kaWYKKwogY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKIHsKKyNp
ZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICBpZiAoaXNNZW1vcnlNYXBwZWQoKSkKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkaXNrSW1hZ2VDYWNoZSgpLmRh
dGFGb3JJdGVtKG1fZGlza0ltYWdlQ2FjaGVJZCkpOworI2VuZGlmCisKICAgICBpZiAoaGFzUGxh
dGZvcm1EYXRhKCkpCiAgICAgICAgIHJldHVybiBwbGF0Zm9ybURhdGEoKTsKIApAQCAtMTgwLDYg
KzI4Myw5IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoU2hhcmVkQnVmZmVyKiBkYXRhKQog
CiB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKIHsKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICBBU1NFUlQoIWlzTWVt
b3J5TWFwcGVkKCkpOworI2VuZGlmCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMzIwLDYgKzQyNiw5IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5QnVmZmVyQW5kQ2xl
YXIoY2hhciogZGVzdGluYXRpb24sIHVuc2lnbmVkIGJ5dGVzVG9Db3B5KSBjCiAKIGNvbnN0IFZl
Y3RvcjxjaGFyPiYgU2hhcmVkQnVmZmVyOjpidWZmZXIoKSBjb25zdAogeworI2lmIEVOQUJMRShE
SVNLX0lNQUdFX0NBQ0hFKQorICAgIEFTU0VSVCghaXNNZW1vcnlNYXBwZWQoKSk7CisjZW5kaWYK
ICAgICB1bnNpZ25lZCBidWZmZXJTaXplID0gbV9idWZmZXItPmRhdGEuc2l6ZSgpOwogICAgIGlm
IChtX3NpemUgPiBidWZmZXJTaXplKSB7CiAgICAgICAgIGR1cGxpY2F0ZURhdGFCdWZmZXJJZk5l
Y2Vzc2FyeSgpOwpAQCAtMzM3LDYgKzQ0NiwxNSBAQCB1bnNpZ25lZCBTaGFyZWRCdWZmZXI6Omdl
dFNvbWVEYXRhKGNvbnN0IGNoYXIqJiBzb21lRGF0YSwgdW5zaWduZWQgcG9zaXRpb24pIGNvbgog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkK
KyAgICBBU1NFUlQocG9zaXRpb24gPCBzaXplKCkpOworICAgIGlmIChpc01lbW9yeU1hcHBlZCgp
KSB7CisgICAgICAgIGNvbnN0IGNoYXIqIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
ZGlza0ltYWdlQ2FjaGUoKS5kYXRhRm9ySXRlbShtX2Rpc2tJbWFnZUNhY2hlSWQpKTsKKyAgICAg
ICAgc29tZURhdGEgPSBkYXRhICsgcG9zaXRpb247CisgICAgICAgIHJldHVybiBzaXplKCkgLSBw
b3NpdGlvbjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChoYXNQbGF0Zm9ybURhdGEoKSB8fCBt
X2ZpbGVEYXRhKSB7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHBv
c2l0aW9uIDwgc2l6ZSgpKTsKICAgICAgICAgc29tZURhdGEgPSBkYXRhKCkgKyBwb3NpdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggNDAzMGJkYTEzNjJmYjZk
YWQ0Y2M5YTAxMjQzNmIwOWYxYzc1MDVjMS4uOTI1Y2RhMDQzODMxYzBjYjAwOWU4ZGU2Zjg3YzYy
ZGFhODAwYTU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEx
OSw2ICsxMTksMzEgQEAgcHVibGljOgogICAgIC8vICAgICAgfQogICAgIFdFQkNPUkVfRVhQT1JU
IHVuc2lnbmVkIGdldFNvbWVEYXRhKGNvbnN0IGNoYXIqJiBkYXRhLCB1bnNpZ25lZCBwb3NpdGlv
biA9IDApIGNvbnN0OwogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgZW51bSBN
ZW1vcnlNYXBwaW5nU3RhdGUgeyBRdWV1ZWRGb3JNYXBwaW5nLCBQcmV2aW91c2x5UXVldWVkRm9y
TWFwcGluZywgU3VjY2Vzc0FscmVhZHlNYXBwZWQsIEZhaWx1cmVDYWNoZUZ1bGwgfTsKKworICAg
IC8vIENhbGxpbmcgdGhpcyB3aWxsIGNhdXNlIHRoaXMgYnVmZmVyIHRvIGJlIG1lbW9yeSBtYXBw
ZWQuCisgICAgV0VCQ09SRV9FWFBPUlQgTWVtb3J5TWFwcGluZ1N0YXRlIGFsbG93VG9CZU1lbW9y
eU1hcHBlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNBbGxvd2VkVG9CZU1lbW9yeU1h
cHBlZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNVc2luZ0Rpc2tJbWFnZUNh
Y2hlKCkgY29uc3Q7CisKKyAgICAvLyBUaGlzIGlzIGNhbGxlZCB0byBpbmRpY2F0ZSB0aGF0IHRo
ZSBtZW1vcnkgbWFwcGluZyBmYWlsZWQuCisgICAgdm9pZCBmYWlsZWRNZW1vcnlNYXAoKTsKKwor
ICAgIC8vIFRoaXMgaXMgY2FsbGVkIG9ubHkgb25jZSB0aGUgYnVmZmVyIGhhcyBiZWVuIGNvbXBs
ZXRlbHkgbWVtb3J5IG1hcHBlZC4KKyAgICB2b2lkIG1hcmtBc01lbW9yeU1hcHBlZCgpOworICAg
IGJvb2wgaXNNZW1vcnlNYXBwZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVtb3J5TWFwcGVkOyB9
CisKKyAgICAvLyBUaGlzIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gZWl0
aGVyIHRoZSBidWZmZXIgaGFzIGJlZW4gbWVtb3J5IG1hcHBlZCBvciBmYWlsZWQgdG8gYmUgbWVt
b3J5IG1hcHBlZC4KKyAgICBlbnVtIENvbXBsZXRpb25TdGF0dXMgeyBGYWlsZWQsIFN1Y2NlZWRl
ZCB9OworICAgIHR5cGVkZWYgdm9pZCogTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2tEYXRhOwor
ICAgIHR5cGVkZWYgdm9pZCAoKk1lbW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNrKShQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4sIENvbXBsZXRpb25TdGF0dXMsIE1lbW9yeU1hcHBlZE5vdGlmeUNhbGxi
YWNrRGF0YSk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFj
a0RhdGEgbWVtb3J5TWFwcGVkTm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2sgbWVtb3J5TWFwcGVkTm90
aWZpY2F0aW9uQ2FsbGJhY2soKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1l
bW9yeU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKE1lbW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNr
LCBNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFja0RhdGEpOworI2VuZGlmCisKICAgICB2b2lkIHRy
eVJlcGxhY2VDb250ZW50c1dpdGhQbGF0Zm9ybUJ1ZmZlcihTaGFyZWRCdWZmZXImKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGhhc1BsYXRmb3JtRGF0YSgpIGNvbnN0OwogCkBAIC0xNjUsNiAr
MTkwLDEzIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBWZWN0b3I8Y2hhcio+IG1fc2VnbWVudHM7
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGJvb2wgbV9pc01l
bW9yeU1hcHBlZDsKKyAgICB1bnNpZ25lZCBtX2Rpc2tJbWFnZUNhY2hlSWQ7IC8vIERpc2tJbWFn
ZUNhY2hlSWQgaXMgdW5zaWduZWQuCisgICAgTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2sgbV9u
b3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFjazsKKyAgICBNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFj
a0RhdGEgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGE7CisjZW5kaWYKKwogI2lmIFVT
RShDRikKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoQ0ZEYXRhUmVmKTsKICAgICBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBtX2NmRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1No
YXJlZEJ1ZmZlckNGLmNwcAppbmRleCAyYTc1ZTU2ZDUyZDBjYmRiMzQ0M2Q3ZDQzOTIzMzJhOWQy
NjgyYzUwLi45MzIyY2MxNjE4OWYxNGU1YmQ0MGRhNDc2YmUxYTBhODQ5MGJjYTgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0yOCwxMiAr
MjgsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
IAorI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlLmgiCisKICNpbmNsdWRlIDx3dGYvY2YvVHlwZUNh
c3RzQ0YuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihDRkRhdGFSZWYgY2ZEYXRhKQogICAgIDogbV9idWZmZXIoYWRvcHRSZWYobmV3IERhdGFC
dWZmZXIpKQorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgICwgbV9pc01lbW9yeU1h
cHBlZChmYWxzZSkKKyAgICAsIG1fZGlza0ltYWdlQ2FjaGVJZChEaXNrSW1hZ2VDYWNoZTo6aW52
YWxpZERpc2tDYWNoZUlkKQorICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFjayhudWxs
cHRyKQorICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGEobnVsbHB0cikKKyNl
bmRpZgogICAgICwgbV9jZkRhdGEoY2ZEYXRhKQogICAgICwgbV92bm9kZVRva2VuKFZOb2RlVHJh
Y2tlcjo6c2luZ2xldG9uKCkudG9rZW4oKSkKIHsKQEAgLTExNyw2ICsxMjUsMTIgQEAgUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YUFycmF5KENGQXJyYXlS
ZWYgY2ZEYXRhQXJyYXkpCiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKENGQXJyYXlSZWYg
Y2ZEYXRhQXJyYXkpCiAgICAgOiBtX2J1ZmZlcihhZG9wdFJlZihuZXcgRGF0YUJ1ZmZlcikpCisj
aWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgLCBtX2lzTWVtb3J5TWFwcGVkKGZhbHNl
KQorICAgICwgbV9kaXNrSW1hZ2VDYWNoZUlkKERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0Nh
Y2hlSWQpCisgICAgLCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrKG51bGxwdHIpCisgICAg
LCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrRGF0YShudWxscHRyKQorI2VuZGlmCiAgICAg
LCBtX2NmRGF0YShudWxscHRyKQogewogICAgIENGSW5kZXggZGF0YUFycmF5Q291bnQgPSBDRkFy
cmF5R2V0Q291bnQoY2ZEYXRhQXJyYXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGQ4ODk0ZmJkNjE3MGIyMjU2OTk5ZTc1OGMy
NTU0NDM4ZTVkZDM3MTcuLmNmNzU3OGQ2MTNhZmFjMzM1ZDYzYWQ3YThjYjE1ZjEwNjcxYTdmOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAKQEAgLTExOCw2ICsxMTgsMTcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6aGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKERJU0tf
SU1BR0VfQ0FDSEUpCitib29sIEJpdG1hcEltYWdlOjppc01lbW9yeU1hcHBlZCgpIGNvbnN0Cit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXplKCk7IGkrKykgeworICAg
ICAgICBpZiAoIW1fZnJhbWVzW2ldLm1faXNNZW1vcnlNYXBwZWQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKIHZvaWQgQml0
bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwpCiB7CiAgICAgdW5z
aWduZWQgZnJhbWVCeXRlc0NsZWFyZWQgPSAwOwpAQCAtMjA5LDYgKzIyMCw5IEBAIHZvaWQgQml0
bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsaW5nTGV2ZWwsIEltCiAgICAgICAgIG1fZnJhbWVzW2luZGV4XS5tX2R1cmF0aW9uID0gbV9z
b3VyY2UuZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpOwogCiAgICAgbV9mcmFtZXNbaW5kZXhd
Lm1faGFzQWxwaGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChpbmRleCk7CisjaWYg
RU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgbV9mcmFtZXNbaW5kZXhdLm1faXNNZW1vcnlN
YXBwZWQgPSBtX3NvdXJjZS5mcmFtZUlzTWVtb3J5TWFwcGVkQXRJbmRleChpbmRleCk7CisjZW5k
aWYKICAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzID0gbV9zb3VyY2UuZnJhbWVCeXRl
c0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogCiAgICAgY29uc3QgSW50U2l6ZSBm
cmFtZVNpemUoaW5kZXggPyBtX3NvdXJjZS5mcmFtZVNpemVBdEluZGV4KGluZGV4LCBzdWJzYW1w
bGluZ0xldmVsKSA6IG1fc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuaAppbmRleCAyYzcxY2ZjYjBlYWY1YWViMzc3ZGI1YWVmMDU3M2Y0YmUz
YzA2YmE0Li41YjkwNDA3Y2JiOTg0Njk3M2NhMzlmM2FkZGJjN2ZiOWZjN2I0ZGUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKQEAgLTc0LDcg
Kzc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2R1cmF0aW9uKDApCiAgICAgICAgICwgbV9o
YXZlTWV0YWRhdGEoZmFsc2UpCiAgICAgICAgICwgbV9pc0NvbXBsZXRlKGZhbHNlKQotICAgICAg
ICAsIG1faGFzQWxwaGEodHJ1ZSkgCisgICAgICAgICwgbV9oYXNBbHBoYSh0cnVlKQorI2lmIEVO
QUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgICAgICAsIG1faXNNZW1vcnlNYXBwZWQoZmFsc2Up
CisjZW5kaWYKICAgICAgICAgLCBtX2ZyYW1lQnl0ZXMoMCkKICAgICB7CiAgICAgfQpAQCAtOTUs
NiArOTgsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2hhdmVNZXRhZGF0YSA6IDE7CiAgICAgYm9v
bCBtX2lzQ29tcGxldGUgOiAxOwogICAgIGJvb2wgbV9oYXNBbHBoYSA6IDE7CisjaWYgRU5BQkxF
KERJU0tfSU1BR0VfQ0FDSEUpCisgICAgYm9vbCBtX2lzTWVtb3J5TWFwcGVkIDogMTsKKyNlbmRp
ZgogICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlczsKIH07CiAKQEAgLTIzMCw2ICsyMzYsMTMgQEAg
cHJvdGVjdGVkOgogICAgIC8vIENhbGxlZCBiZWZvcmUgYWNjZXNzaW5nIG1fZnJhbWVzW2luZGV4
XSBmb3IgaW5mbyB3aXRob3V0IGRlY29kaW5nLiBSZXR1cm5zIGZhbHNlIG9uIGluZGV4IG91dCBv
ZiBib3VuZHMuCiAgICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVfdCBpbmRleCwgSW1h
Z2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOwogCisjaWYgRU5BQkxFKERJ
U0tfSU1BR0VfQ0FDSEUpCisgICAgLy8gVXNlZCB0byBmaWd1cmUgb3V0IGlmIGRlc3Ryb3lpbmcg
dGhlIGRlY29kZWQgZGF0YSB3aWxsIHJlYWxseSBoZWxwIHdpdGgKKyAgICAvLyBtZW1vcnkgcHJl
c3N1cmUgYXQgYWxsLiBJZiBhbGwgZnJhbWVzIGFyZSBmaWxlLWJhY2tlZCB0aGVuIGRlc3Ryb3lp
bmcgdGhlbQorICAgIC8vIHdpbGwgbm90IGhlbHAsIGFuZCB3aWxsIGNhdXNlIGNodXJuIHdoZW4g
dGhlIGltYWdlIG5lZWRzIHRvIGJlIHJlcGFpbnRlZC4KKyAgICBib29sIGlzTWVtb3J5TWFwcGVk
KCkgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIC8vIENhbGxlZCB0byBpbnZhbGlkYXRl
IGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0cm95QWxsfCBpcyB0cnVlLCB3ZSB3aXBlIG91dAogICAg
IC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVmZmVyIGNhY2hlIGFuZCB0ZWxsIHRoZSBpbWFnZSBzb3Vy
Y2UgdG8gZGVzdHJveQogICAgIC8vIGV2ZXJ5dGhpbmc7IHRoaXMgaXMgdXNlZCB3aGVuIGUuZy4g
d2Ugd2FudCB0byBmcmVlIHNvbWUgcm9vbSBpbiB0aGUgaW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDU4YzBkOTVkOGM0MzdiYTE4MGFlZjFkN2ZkYjRm
ODI3N2NkNmRkNzIuLjY2MDQ0NDEwMzczNmM3YTU5ZjBiZTIzZjJkNjE1ZmZhMWI3YjYzMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTE1LDYgKzExNSwx
MCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24o
KSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmluZyBpZiB1bmtub3duCiAK
KyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZW1vcnlN
YXBwZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICB2aXJ0dWFsIHZv
aWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCA9IHRydWUpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgZGVjb2RlZERhdGFJc1B1cmdlYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcAppbmRleCA3NGVmMDUzYTMzM2ZmNWZjNTc4ZTgxODAwY2M2ZmM5NzU1ZWZiYWI4Li4zOTBi
NWJjM2RjOWNlZDRhZGM2ODJjYTIwNTk5ODNkMWUxMGI3ZWM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBAIC0yMDcsNiArMjA3LDE3
IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQogICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpG
cmFtZUNvbXBsZXRlOwogfQogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCitib29sIElt
YWdlU291cmNlOjpmcmFtZUlzTWVtb3J5TWFwcGVkQXRJbmRleChzaXplX3QgaW5kZXgpCit7Cisg
ICAgaWYgKCFtX2RlY29kZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEltYWdlRnJh
bWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKKyAgICBy
ZXR1cm4gYnVmZmVyICYmIGJ1ZmZlci0+aXNNZW1vcnlNYXBwZWQoKTsKK30KKyNlbmRpZgorCiB1
bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJz
YW1wbGluZ0xldmVsKSBjb25zdAogewogICAgIGlmICghbV9kZWNvZGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggYWNkZDFjZTRjZTMw
MGRlODFjOWUwNjJlZWU3NjA3YmY0NzJhNzBhZi4uMDUzN2M3ZGZiOGY4Yjc3Yzg0YTU3ZjlkNzZm
YTBjNDYzM2YzYzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5oCkBAIC0xNTEsNiArMTUxLDkgQEAgcHVibGljOgogICAgIGZsb2F0IGZyYW1l
RHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChz
aXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxw
aGEuCiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIg
b3Igbm90IHRoZSBmcmFtZSBpcyBjb21wbGV0ZWx5IGRlY29kZWQuCisjaWYgRU5BQkxFKERJU0tf
SU1BR0VfQ0FDSEUpCisgICAgYm9vbCBmcmFtZUlzTWVtb3J5TWFwcGVkQXRJbmRleChzaXplX3Qp
OyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgbWVtb3J5IG1hcHBlZCAoaW4gdGhlIGRp
c2sgaW1hZ2UgY2FjaGUpLgorI2VuZGlmCiAgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90KSBjb25zdDsgLy8gRVhJRiBpbWFnZSBvcmllbnRhdGlvbgogCiAgICAg
Ly8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRlY29kZWQgZnJhbWUuIElmIHRo
ZSBmcmFtZSBpcyBub3QgeWV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5
c3RlbUd0ay5jcHAKaW5kZXggOTE1ZWE2OWJiMTcwOTg2MTBjYzlmOGRkMjM5YjU4Mzc3Yzk1OGNi
MC4uMzFiM2EzNTgwZDQ2MjNhOWQwNGE4ZDZhNmMwYjIyOWNiNzgxNjJiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcApAQCAtMjcxLDYgKzI3MSw0
MSBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBmaWx0ZXIpCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAKK1N0cmluZyBjcmVh
dGVVc2VyQ2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IHBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAi
d2Via2l0Z3RrIiwgbmFtZS51dGY4KCkuZGF0YSgpLCBOVUxMKSk7CisgICAgR1JlZlB0cjxHRmls
ZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHBhdGguZ2V0KCkpKTsKKyAg
ICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisKKyAgICBpZiAoIWdfZmlsZV9tYWtlX2Rp
cmVjdG9yeV93aXRoX3BhcmVudHMoZmlsZS5nZXQoKSwgMCwgJmVycm9yLm91dFB0cigpKSAmJiBl
cnJvci0+Y29kZSAhPSBHX0lPX0VSUk9SX0VYSVNUUykKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aC5nZXQoKSk7Cit9CisKK1N0cmlu
ZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCit7CisgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4
LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dl
dF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1JlZlB0cjxHRmlsZT4g
ZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CisK
KyAgICBpZiAoIWdfZmlsZV9tYWtlX2RpcmVjdG9yeV93aXRoX3BhcmVudHMoZmlsZS5nZXQoKSwg
MCwgMCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9t
VVRGOCh0ZW1wUGF0aC5nZXQoKSk7Cit9CisKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlGaWxlKGNv
bnN0IFN0cmluZyYgbG9jYXRpb24sIGNvbnN0IFN0cmluZyYgcHJlZml4KQoreworICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4
KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwor
ICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUobG9jYXRpb24u
dXRmOCgpLmRhdGEoKSwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAgICBHUmVmUHRyPEdGaWxl
PiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVtcFBhdGguZ2V0KCkpKTsK
KworICAgIEdSZWZQdHI8R0ZpbGVPdXRwdXRTdHJlYW0+IG91dHB1dFN0cmVhbSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfY3JlYXRlKGZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgMCwgMCkpOwor
ICAgIGlmICghb3V0cHV0U3RyZWFtKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcFBhdGguZ2V0KCkpOworfQorCiBTdHJpbmcgb3BlblRl
bXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFu
ZGxlKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50Zigi
JXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYjk2NTY1NTJmMjdlMzY4MmY2YTE0
MzgwZmE1ZWQzM2M1NzE1NGQ2ZC4uYWFmOGUwYTBiN2RmN2EzOGIyNzEwMzJiNjAyZWQyYWM2NmNk
OWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQ29sbGFib3JhIEx0ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zMiw2ICszMyw4IEBACiAjaW5jbHVkZSAiV0VCUEltYWdlRGVjb2Rlci5oIgogI2VuZGlmCiAK
KyNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZS5oIgorCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPGNtYXRoPgogCkBAIC0xMjcsMTMgKzEzMCwzOSBAQCBJbWFnZURlY29kZXIqIEltYWdl
RGVjb2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgSW1hZ2VTb3VyY2U6OkFs
cGhhTwogfQogCiBJbWFnZUZyYW1lOjpJbWFnZUZyYW1lKCkKLSAgICA6IG1faGFzQWxwaGEoZmFs
c2UpCisgICAgOiBtX2J5dGVzKG51bGxwdHIpCisgICAgLCBtX2hhc0FscGhhKGZhbHNlKQorICAg
ICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkKKyAgICAsIG1fZHVyYXRpb24oMCkKKyAgICAsIG1fZGlz
cG9zYWxNZXRob2QoRGlzcG9zZU5vdFNwZWNpZmllZCkKKyAgICAsIG1fcHJlbXVsdGlwbHlBbHBo
YSh0cnVlKQorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgICwgbV9pc01lbW9yeU1h
cHBlZChmYWxzZSkKKyAgICAsIG1fZGlza0ltYWdlQ2FjaGVJZChEaXNrSW1hZ2VDYWNoZTo6aW52
YWxpZERpc2tDYWNoZUlkKQorI2VuZGlmCisgICAgLCBtX2RlcHRoKDQpCisgICAgLCBtX3N0cmlk
ZSgwKQorICAgICwgbV9hbGlnbm1lbnQoMCkKK3sKK30KKworSW1hZ2VGcmFtZTo6SW1hZ2VGcmFt
ZShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKKyAgICA6IG1fYnl0ZXMobnVsbHB0cikKKyAgICAs
IG1faGFzQWxwaGEoZmFsc2UpCiAgICAgLCBtX3N0YXR1cyhGcmFtZUVtcHR5KQogICAgICwgbV9k
dXJhdGlvbigwKQogICAgICwgbV9kaXNwb3NhbE1ldGhvZChEaXNwb3NlTm90U3BlY2lmaWVkKQog
ICAgICwgbV9wcmVtdWx0aXBseUFscGhhKHRydWUpCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FD
SEUpCisgICAgLCBtX2lzTWVtb3J5TWFwcGVkKGZhbHNlKQorICAgICwgbV9kaXNrSW1hZ2VDYWNo
ZUlkKERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQpCisjZW5kaWYKKyAgICAsIG1f
ZGVwdGgoNCkKKyAgICAsIG1fc3RyaWRlKDApCisgICAgLCBtX2FsaWdubWVudCgwKQogewotfSAK
KyAgICBvcGVyYXRvcj0ob3RoZXIpOworfQogCiBJbWFnZUZyYW1lJiBJbWFnZUZyYW1lOjpvcGVy
YXRvcj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiB7CkBAIC0xNDksOCArMTc4LDI0IEBAIElt
YWdlRnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikK
ICAgICByZXR1cm4gKnRoaXM7CiB9CiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKK0lt
YWdlRnJhbWU6On5JbWFnZUZyYW1lKCkKK3sKKyAgICBjbGVhclBpeGVsRGF0YSgpOworfQorI2Vu
ZGlmCisKIHZvaWQgSW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEoKQogeworI2lmIEVOQUJMRShE
SVNLX0lNQUdFX0NBQ0hFKQorICAgIGlmIChtX2Rpc2tJbWFnZUNhY2hlSWQpIHsKKyAgICAgICAg
QVNTRVJUKGlzTWVtb3J5TWFwcGVkKCkpOworICAgICAgICBkaXNrSW1hZ2VDYWNoZSgpLnJlbW92
ZUl0ZW0obV9kaXNrSW1hZ2VDYWNoZUlkKTsKKyAgICAgICAgbV9pc01lbW9yeU1hcHBlZCA9IGZh
bHNlOworICAgICAgICBtX2Rpc2tJbWFnZUNhY2hlSWQgPSBEaXNrSW1hZ2VDYWNoZTo6aW52YWxp
ZERpc2tDYWNoZUlkOworICAgIH0KKyNlbmRpZgorCiAgICAgbV9iYWNraW5nU3RvcmUuY2xlYXIo
KTsKICAgICBtX2J5dGVzID0gMDsKICAgICBtX3N0YXR1cyA9IEZyYW1lRW1wdHk7CkBAIC0xNjAs
MjQgKzIwNSw2MyBAQCB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKICAgICAvLyBs
YXRlci4KIH0KIAordW5zaWduZWQgSW1hZ2VGcmFtZTo6Y2FsY3VsYXRlUmVxdWlyZWRTaXplKGlu
dCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwgaW50IGFsaWdubWVudCkKK3sKKyAgICB1
bnNpZ25lZCByZXF1aXJlZFNpemU7CisKKyAgICBpZiAoIXN0cmlkZSkKKyAgICAgICAgc3RyaWRl
ID0gd2lkdGggKiBtX2RlcHRoOworCisgICAgaWYgKGFsaWdubWVudCA+IDAgJiYgaGVpZ2h0ICUg
YWxpZ25tZW50KQorICAgICAgICBoZWlnaHQgKz0gKGFsaWdubWVudCAtIGhlaWdodCAlIGFsaWdu
bWVudCk7CisKKyAgICByZXF1aXJlZFNpemUgPSBoZWlnaHQgKiBzdHJpZGU7CisKKyAgICBpZiAo
YWxpZ25tZW50ID4gMCAmJiByZXF1aXJlZFNpemUgJSBhbGlnbm1lbnQpCisgICAgICAgIHJlcXVp
cmVkU2l6ZSArPSBhbGlnbm1lbnQgLSAxOworCisgICAgcmV0dXJuIHJlcXVpcmVkU2l6ZTsKK30K
KworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQordm9pZCBJbWFnZUZyYW1lOjp0cnlNZW1v
cnlNYXBwaW5nKGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwgaW50IGFsaWdubWVu
dCkKK3sKKyAgICBBU1NFUlQoIWlzTWVtb3J5TWFwcGVkKCkpOworCisgICAgLy8gVXNlIG1hcHBp
bmdzIG9ubHkgZm9yIGJpZ2dlciBpbWFnZXMuCisgICAgdW5zaWduZWQgbWFwcGluZ1NpemUgPSBj
YWxjdWxhdGVSZXF1aXJlZFNpemUod2lkdGgsIGhlaWdodCwgc3RyaWRlLCBhbGlnbm1lbnQpOwor
ICAgIGlmIChtYXBwaW5nU2l6ZSA8IDIwICogMTAyNCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9kaXNrSW1hZ2VDYWNoZUlkID0gZGlza0ltYWdlQ2FjaGUoKS5jcmVhdGVGaWxlQmFja2VkTWFw
cGluZyhtYXBwaW5nU2l6ZSk7CisgICAgaWYgKG1fZGlza0ltYWdlQ2FjaGVJZCA9PSBEaXNrSW1h
Z2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2J5
dGVzID0gc3RhdGljX2Nhc3Q8UGl4ZWxEYXRhKj4oZGlza0ltYWdlQ2FjaGUoKS5kYXRhRm9ySXRl
bShtX2Rpc2tJbWFnZUNhY2hlSWQpKTsKKyAgICBtX2lzTWVtb3J5TWFwcGVkID0gdHJ1ZTsKK30K
KyNlbmRpZgorCiB2b2lkIEltYWdlRnJhbWU6Onplcm9GaWxsUGl4ZWxEYXRhKCkKIHsKLSAgICBt
ZW1zZXQobV9ieXRlcywgMCwgbV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCkgKiBzaXpl
b2YoUGl4ZWxEYXRhKSk7CisgICAgbWVtc2V0KG1fYnl0ZXMsIDAsIGNhbGN1bGF0ZVJlcXVpcmVk
U2l6ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBtX3N0cmlkZSwgbV9hbGlnbm1l
bnQpKTsKKwogICAgIG1faGFzQWxwaGEgPSB0cnVlOwogfQogCiB2b2lkIEltYWdlRnJhbWU6Onpl
cm9GaWxsRnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgQVNTRVJUKEludFJl
Y3QoSW50UG9pbnQoKSwgbV9zaXplKS5jb250YWlucyhyZWN0KSk7CisgICAgQVNTRVJUKCFtX3N0
cmlkZSAmJiAhbV9hbGlnbm1lbnQpOyAvLyBUT0RPCiAKICAgICBpZiAocmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHNpemVfdCByZWN0V2lkdGhJbkJ5dGVzID0gcmVjdC53
aWR0aCgpICogc2l6ZW9mKFBpeGVsRGF0YSk7Ci0gICAgUGl4ZWxEYXRhKiBzdGFydCA9IG1fYnl0
ZXMgKyAocmVjdC55KCkgKiB3aWR0aCgpKSArIHJlY3QueCgpOworICAgIHNpemVfdCByZWN0V2lk
dGhJbkJ5dGVzID0gcmVjdC53aWR0aCgpICogbV9kZXB0aDsKKyAgICBQaXhlbERhdGEqIHN0YXJ0
ID0gbV9ieXRlcyArIChyZWN0LnkoKSAqIHdpZHRoKCkgKiBtX2RlcHRoKSArIHJlY3QueCgpICog
bV9kZXB0aDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3QuaGVpZ2h0KCk7ICsraSkgewog
ICAgICAgICBtZW1zZXQoc3RhcnQsIDAsIHJlY3RXaWR0aEluQnl0ZXMpOwotICAgICAgICBzdGFy
dCArPSB3aWR0aCgpOworICAgICAgICBzdGFydCArPSB3aWR0aCgpICogbV9kZXB0aDsKICAgICB9
CiAKICAgICBzZXRIYXNBbHBoYSh0cnVlKTsKQEAgLTE4OCwyMiArMjcyLDY5IEBAIGJvb2wgSW1h
Z2VGcmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAgICAgaWYg
KHRoaXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG1fYmFja2luZ1N0
b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7Ci0gICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3Jl
LmRhdGEoKTsKICAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7CisgICAgbV9kZXB0aCA9IG90aGVy
Lm1fZGVwdGg7CisgICAgbV9zdHJpZGUgPSBvdGhlci5tX3N0cmlkZTsKKyAgICBtX2FsaWdubWVu
dCA9IG90aGVyLm1fYWxpZ25tZW50OwogICAgIHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEp
OworCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgaWYgKG90aGVyLm1faXNNZW1v
cnlNYXBwZWQpIHsKKyAgICAgICAgdHJ5TWVtb3J5TWFwcGluZyhtX3NpemUud2lkdGgoKSwgbV9z
aXplLmhlaWdodCgpLCBtX3N0cmlkZSwgbV9hbGlnbm1lbnQpOworICAgICAgICBpZiAoIW1faXNN
ZW1vcnlNYXBwZWQpIHsKKyAgICAgICAgICAgIG1fYnl0ZXMgPSBudWxscHRyOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IHNpemUgPSBjYWxj
dWxhdGVSZXF1aXJlZFNpemUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwKKyAgICAg
ICAgICAgIG1fc3RyaWRlLCBtX2FsaWdubWVudCk7CisgICAgICAgIG1lbWNweShtX2J5dGVzLCBv
dGhlci5tX2J5dGVzLCBzaXplKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
bV9pc01lbW9yeU1hcHBlZCA9IGZhbHNlOworICAgIG1fZGlza0ltYWdlQ2FjaGVJZCA9IERpc2tJ
bWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQ7CisjZW5kaWYKKworICAgIG1fYmFja2luZ1N0
b3JlID0gb3RoZXIubV9iYWNraW5nU3RvcmU7CisgICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3Jl
LmRhdGEoKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEltYWdlRnJhbWU6OnNldFNp
emUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQorYm9vbCBJbWFnZUZyYW1lOjpzZXRTaXpl
KGludCBuZXdXaWR0aCwgaW50IG5ld0hlaWdodCwgaW50IHN0cmlkZSwgaW50IGFsaWdubWVudCwg
Ym9vbCB1c2VEaXNrSW1hZ2VDYWNoZSkKIHsKICAgICBBU1NFUlQoIXdpZHRoKCkgJiYgIWhlaWdo
dCgpKTsKLSAgICBzaXplX3QgYmFja2luZ1N0b3JlU2l6ZSA9IG5ld1dpZHRoICogbmV3SGVpZ2h0
OworICAgIHNpemVfdCBiYWNraW5nU3RvcmVTaXplOworCisjaWYgRU5BQkxFKERJU0tfSU1BR0Vf
Q0FDSEUpCisgICAgaWYgKHVzZURpc2tJbWFnZUNhY2hlKQorICAgICAgICB0cnlNZW1vcnlNYXBw
aW5nKG5ld1dpZHRoLCBuZXdIZWlnaHQsIHN0cmlkZSwgYWxpZ25tZW50KTsKKworICAgIGlmIChp
c01lbW9yeU1hcHBlZCgpKSB7CisgICAgICAgIG1fc2l6ZSA9IEludFNpemUobmV3V2lkdGgsIG5l
d0hlaWdodCk7CisgICAgICAgIG1fc3RyaWRlID0gc3RyaWRlOworICAgICAgICBtX2FsaWdubWVu
dCA9IGFsaWdubWVudDsKKworICAgICAgICAvLyBtX2hhc0FscGhhIGlzIGFzc2luZ2VkIHRvIHRy
dWUgdGhyb3VnaCB6ZXJvRmlsbFBpeGVsRGF0YSgpIHdoZXJlIERJU0tfSU1BR0VfQ0FDSEUgaXMg
ZGlzYWJsZWQuCisgICAgICAgIC8vIEJ1dCBub3doZXJlIGRvaW5nIGEgc2ltaWxhciB3b3JrIHdo
ZW4gRElTS19JTUFHRV9DQUNIRSBpcyBlbmFibGVkLiBXZSBzaG91bGQgc2V0IG1faGFzQWxwaGEg
dG8gdHJ1ZQorICAgICAgICAvLyB3aGVuIGZpcnN0IHNldHRpbmcgc2l6ZSBvZiBJbWFnZUZyYW1l
LiBPdGhlcndpc2UgYWxwaGEgYmxlbmRpbmcgb2Ygc29tZSBpbWFnZXMgd291bGQgZ28gd3Jvbmcu
CisgICAgICAgIG1faGFzQWxwaGEgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh1c2VEaXNrSW1hZ2VDYWNoZSk7CisjZW5kaWYKKwor
ICAgIGJhY2tpbmdTdG9yZVNpemUgPSBjYWxjdWxhdGVSZXF1aXJlZFNpemUobmV3V2lkdGgsIG5l
d0hlaWdodCwgc3RyaWRlLCBhbGlnbm1lbnQpOworCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS50
cnlSZXNlcnZlQ2FwYWNpdHkoYmFja2luZ1N0b3JlU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBtX2JhY2tpbmdTdG9yZS5yZXNpemUoYmFja2luZ1N0b3JlU2l6ZSk7CiAgICAgbV9i
eXRlcyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKICAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dp
ZHRoLCBuZXdIZWlnaHQpOworICAgIG1fc3RyaWRlID0gc3RyaWRlOworICAgIG1fYWxpZ25tZW50
ID0gYWxpZ25tZW50OwogCiAgICAgemVyb0ZpbGxQaXhlbERhdGEoKTsKICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTI4NCw3ICs0MTUsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNp
emUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUg
ZGltZW5zaW9uIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUuCi0gICAgcmV0dXJuIG1fc2l6ZS5hcmVh
KCkgKiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKKyAgICByZXR1cm4gbV9zaXplLmFy
ZWEoKSAqIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uZGVwdGgoKTsKIH0KIAogdm9pZCBJbWFn
ZURlY29kZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDJj
MDFmZGQ4YTg2NmUyYmFhNGEyYjZhOGM1ZTcwMGM0ZDNjMmNmYzguLmI3MjA3MGU5YzllM2Q1MDdh
ZmQwZDU5OGVmM2M3YjU0ZTY4YWYwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0zLDYgKzMsNyBAQAogICog
Q29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDb2xsYWJvcmEgTHRkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSw2ICszMCw3IEBACiAjaWZuZGVm
IEltYWdlRGVjb2Rlcl9oCiAjZGVmaW5lIEltYWdlRGVjb2Rlcl9oCiAKKyNpbmNsdWRlICJEaXNr
SW1hZ2VDYWNoZS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbWFnZVNvdXJj
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCkBAIC02NCwxMSArNjYsMTUgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRGlzcG9zZU92ZXJ3cml0ZVByZXZpb3VzICAv
LyBDbGVhciBmcmFtZSB0byBwcmV2aW91cyBmcmFtZWJ1ZmZlcgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBjb250ZW50cwogICAgICAgICB9OwotICAgICAgICB0eXBl
ZGVmIHVuc2lnbmVkIFBpeGVsRGF0YTsKKyAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFBp
eGVsRGF0YTsKIAogICAgICAgICBJbWFnZUZyYW1lKCk7CiAKLSAgICAgICAgSW1hZ2VGcmFtZShj
b25zdCBJbWFnZUZyYW1lJiBvdGhlcikgeyBvcGVyYXRvcj0ob3RoZXIpOyB9CisjaWYgRU5BQkxF
KERJU0tfSU1BR0VfQ0FDSEUpCisgICAgICAgIH5JbWFnZUZyYW1lKCk7CisjZW5kaWYKKworICAg
ICAgICBJbWFnZUZyYW1lKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKTsKIAogICAgICAgICAvLyBG
b3IgYmFja2VuZHMgd2hpY2ggcmVmY291bnQgdGhlaXIgZGF0YSwgdGhpcyBvcGVyYXRvciBkb2Vz
bid0IG5lZWQgdG8KICAgICAgICAgLy8gY3JlYXRlIGEgbmV3IGNvcHkgb2YgdGhlIGltYWdlIGRh
dGEsIG9ubHkgaW5jcmVhc2UgdGhlIHJlZiBjb3VudC4KQEAgLTkzLDcgKzk5LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgQVNTRVJUKGVuZFggPD0gd2lkdGgoKSk7CiAgICAg
ICAgICAgICBBU1NFUlQoc3RhcnRZIDwgaGVpZ2h0KCkpOwogICAgICAgICAgICAgQVNTRVJUKGVu
ZFkgPD0gaGVpZ2h0KCkpOwotICAgICAgICAgICAgY29uc3QgaW50IHJvd0J5dGVzID0gKGVuZFgg
LSBzdGFydFgpICogc2l6ZW9mKFBpeGVsRGF0YSk7CisgICAgICAgICAgICBBU1NFUlQoIW1fc3Ry
aWRlICYmICFtX2FsaWdubWVudCk7IC8vIFRPRE8KKyAgICAgICAgICAgIGNvbnN0IGludCByb3dC
eXRlcyA9IChlbmRYIC0gc3RhcnRYKSAqIG1fZGVwdGg7CiAgICAgICAgICAgICBjb25zdCBQaXhl
bERhdGEqIGNvbnN0IHN0YXJ0QWRkciA9IGdldEFkZHIoc3RhcnRYLCBzdGFydFkpOwogICAgICAg
ICAgICAgZm9yIChpbnQgZGVzdFkgPSBzdGFydFkgKyAxOyBkZXN0WSA8IGVuZFk7ICsrZGVzdFkp
CiAgICAgICAgICAgICAgICAgbWVtY3B5KGdldEFkZHIoc3RhcnRYLCBkZXN0WSksIHN0YXJ0QWRk
ciwgcm93Qnl0ZXMpOwpAQCAtMTAyLDE5ICsxMDksMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBBbGxvY2F0ZXMgc3BhY2UgZm9yIHRoZSBwaXhlbCBkYXRhLiAgTXVzdCBiZSBj
YWxsZWQgYmVmb3JlIGFueSBwaXhlbHMKICAgICAgICAgLy8gYXJlIHdyaXR0ZW4uICBNdXN0IG9u
bHkgYmUgY2FsbGVkIG9uY2UuICBSZXR1cm5zIHdoZXRoZXIgYWxsb2NhdGlvbgogICAgICAgICAv
LyBzdWNjZWVkZWQuCi0gICAgICAgIGJvb2wgc2V0U2l6ZShpbnQgbmV3V2lkdGgsIGludCBuZXdI
ZWlnaHQpOworICAgICAgICBib29sIHNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0
LCBpbnQgc3RyaWRlID0gMCwgaW50IGFsaWdubWVudCA9IDAsIGJvb2wgdXNlRGlza0ltYWdlQ2Fj
aGUgPSB0cnVlKTsKIAogICAgICAgICAvLyBSZXR1cm5zIGEgY2FsbGVyLW93bmVkIHBvaW50ZXIg
dG8gdGhlIHVuZGVybHlpbmcgbmF0aXZlIGltYWdlIGRhdGEuCiAgICAgICAgIC8vIChBY3R1YWwg
dXNlOiBUaGlzIHBvaW50ZXIgd2lsbCBiZSBvd25lZCBieSBCaXRtYXBJbWFnZSBhbmQgZnJlZWQg
aW4KICAgICAgICAgLy8gRnJhbWVEYXRhOjpjbGVhcigpKS4KICAgICAgICAgUGFzc05hdGl2ZUlt
YWdlUHRyIGFzTmV3TmF0aXZlSW1hZ2UoKSBjb25zdDsKIAorICAgICAgICBpbnQgc3RyaWRlRm9y
V2lkdGgoaW50IGRlcHRoLCBpbnQgd2lkdGgpIGNvbnN0OworCiAgICAgICAgIGJvb2wgaGFzQWxw
aGEoKSBjb25zdDsKICAgICAgICAgY29uc3QgSW50UmVjdCYgb3JpZ2luYWxGcmFtZVJlY3QoKSBj
b25zdCB7IHJldHVybiBtX29yaWdpbmFsRnJhbWVSZWN0OyB9CiAgICAgICAgIEZyYW1lU3RhdHVz
IHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAgICAgICAgIHVuc2lnbmVkIGR1
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQogICAgICAgICBGcmFtZURpc3Bv
c2FsTWV0aG9kIGRpc3Bvc2FsTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwb3NhbE1ldGhv
ZDsgfQogICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3By
ZW11bHRpcGx5QWxwaGE7IH0KKyAgICAgICAgdW5zaWduZWQgZGVwdGgoKSBjb25zdCB7IHJldHVy
biBtX2RlcHRoOyB9CiAKICAgICAgICAgdm9pZCBzZXRIYXNBbHBoYShib29sIGFscGhhKTsKICAg
ICAgICAgdm9pZCBzZXRDb2xvclByb2ZpbGUoY29uc3QgQ29sb3JQcm9maWxlJik7CkBAIC0xMjMs
MTUgKzEzMywyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0RHVyYXRp
b24odW5zaWduZWQgZHVyYXRpb24pIHsgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOyB9CiAgICAgICAg
IHZvaWQgc2V0RGlzcG9zYWxNZXRob2QoRnJhbWVEaXNwb3NhbE1ldGhvZCBtZXRob2QpIHsgbV9k
aXNwb3NhbE1ldGhvZCA9IG1ldGhvZDsgfQogICAgICAgICB2b2lkIHNldFByZW11bHRpcGx5QWxw
aGEoYm9vbCBwcmVtdWx0aXBseUFscGhhKSB7IG1fcHJlbXVsdGlwbHlBbHBoYSA9IHByZW11bHRp
cGx5QWxwaGE7IH0KKyAgICAgICAgdm9pZCBzZXREZXB0aCh1bnNpZ25lZCBkZXB0aCkgeyBtX2Rl
cHRoID0gZGVwdGg7IH0KIAogICAgICAgICBpbmxpbmUgdm9pZCBzZXRSR0JBKGludCB4LCBpbnQg
eSwgdW5zaWduZWQgciwgdW5zaWduZWQgZywgdW5zaWduZWQgYiwgdW5zaWduZWQgYSkKICAgICAg
ICAgewogICAgICAgICAgICAgc2V0UkdCQShnZXRBZGRyKHgsIHkpLCByLCBnLCBiLCBhKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlubGluZSBQaXhlbERhdGEqIGdldEFkZHIoaW50IHgsIGludCB5
KQorICAgICAgICBpbmxpbmUgUGl4ZWxEYXRhKiBnZXRBZGRyKGludCB4LCBpbnQgeSkgY29uc3QK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXMgKyAoeSAqIHdpZHRoKCkpICsg
eDsKKyAgICAgICAgICAgIGludCBhbGlnbm1lbnRPZmZzZXQgPSAwOworICAgICAgICAgICAgaW50
IHN0cmlkZSA9IHdpZHRoKCkgKiBtX2RlcHRoOworCisgICAgICAgICAgICBpZiAobV9hbGlnbm1l
bnQpCisgICAgICAgICAgICAgICAgYWxpZ25tZW50T2Zmc2V0ID0gKHVpbnRwdHJfdCkgbV9ieXRl
cyAlIG1fYWxpZ25tZW50OworCisgICAgICAgICAgICBpZiAobV9zdHJpZGUpCisgICAgICAgICAg
ICAgICAgc3RyaWRlID0gbV9zdHJpZGU7CisKKyAgICAgICAgICAgIHJldHVybiBtX2J5dGVzICsg
YWxpZ25tZW50T2Zmc2V0ICsgKHkgKiBzdHJpZGUpICsgeCAqIG1fZGVwdGg7CiAgICAgICAgIH0K
IAogICAgICAgICBpbmxpbmUgYm9vbCBoYXNQaXhlbERhdGEoKSBjb25zdApAQCAtMTUzLDcgKzE3
MywyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICht
X3ByZW11bHRpcGx5QWxwaGEgJiYgYSA8IDI1NSkgewogICAgICAgICAgICAgICAgIGlmICghYSkg
ewotICAgICAgICAgICAgICAgICAgICAqZGVzdCA9IDA7CisKKyAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChtX2RlcHRoKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogeworICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzdFswXSA9IGRlc3RbMV0gPSAwOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSA0OiB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0WzBdID0gZGVzdFsxXSA9
IGRlc3RbMl0gPSBkZXN0WzNdID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9
CiAKQEAgLTE2Miw3ICsxOTUsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
ICAgIGcgPSBmaXhQb2ludFVuc2lnbmVkTXVsdGlwbHkoZywgYWxwaGFNdWx0KTsKICAgICAgICAg
ICAgICAgICBiID0gZml4UG9pbnRVbnNpZ25lZE11bHRpcGx5KGIsIGFscGhhTXVsdCk7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAqZGVzdCA9IChhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwg
OCB8IGIpOworICAgICAgICAgICAgc3dpdGNoIChtX2RlcHRoKSB7CisgICAgICAgICAgICBjYXNl
IDI6IHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBwaXhlbCA9ICgociA+PiAzKSA8PCAxMSB8
IChnID4+IDIpIDw8IDUgfCAoYiA+PiAzKSk7CisgICAgICAgICAgICAgICAgZGVzdFswXSA9IHBp
eGVsOworICAgICAgICAgICAgICAgIGRlc3RbMV0gPSBwaXhlbCA+PiA4OworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSA0OiB7CisgICAgICAg
ICAgICAgICAgZGVzdFswXSA9IGI7CisgICAgICAgICAgICAgICAgZGVzdFsxXSA9IGc7CisgICAg
ICAgICAgICAgICAgZGVzdFsyXSA9IHI7CisgICAgICAgICAgICAgICAgZGVzdFszXSA9IGE7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKICNpZiBFTkFCTEUoQVBORykKQEAgLTIwNyw2ICsyNTYsMTMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESVNLX0lNQUdF
X0NBQ0hFKQorICAgICAgICBib29sIGlzTWVtb3J5TWFwcGVkKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIG1faXNNZW1vcnlNYXBwZWQ7CisgICAgICAgIH0KKyNlbmRpZgor
CiAgICAgcHJpdmF0ZToKICAgICAgICAgaW50IHdpZHRoKCkgY29uc3QKICAgICAgICAgewpAQCAt
MjE4LDYgKzI3NCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4g
bV9zaXplLmhlaWdodCgpOwogICAgICAgICB9CiAKKyAgICAgICAgdW5zaWduZWQgY2FsY3VsYXRl
UmVxdWlyZWRTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwgaW50IGFsaWdu
bWVudCk7CisKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAgICAgdm9pZCB0cnlN
ZW1vcnlNYXBwaW5nKGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwgaW50IGFsaWdu
bWVudCk7CisjZW5kaWYKKwogICAgICAgICBWZWN0b3I8UGl4ZWxEYXRhPiBtX2JhY2tpbmdTdG9y
ZTsKICAgICAgICAgUGl4ZWxEYXRhKiBtX2J5dGVzOyAvLyBUaGUgbWVtb3J5IGlzIGJhY2tlZCBi
eSBtX2JhY2tpbmdTdG9yZS4KICAgICAgICAgSW50U2l6ZSBtX3NpemU7CkBAIC0yMzIsNiArMjk0
LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdW5zaWduZWQgbV9kdXJhdGlvbjsK
ICAgICAgICAgRnJhbWVEaXNwb3NhbE1ldGhvZCBtX2Rpc3Bvc2FsTWV0aG9kOwogICAgICAgICBi
b29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKKworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQor
ICAgICAgICBib29sIG1faXNNZW1vcnlNYXBwZWQ7CisgICAgICAgIERpc2tJbWFnZUNhY2hlSWQg
bV9kaXNrSW1hZ2VDYWNoZUlkOworI2VuZGlmCisKKyAgICAgICAgaW50IG1fZGVwdGg7CisgICAg
ICAgIGludCBtX3N0cmlkZTsKKyAgICAgICAgaW50IG1fYWxpZ25tZW50OwogICAgIH07CiAKICAg
ICAvLyBJbWFnZURlY29kZXIgaXMgYSBiYXNlIGZvciBhbGwgZm9ybWF0LXNwZWNpZmljIGRlY29k
ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9j
YWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKaW5kZXggM2ZlNzA0MDIzNDE5
ZDk3NTNiMTM5OWQ5ZjZjMDBiNjczOTQ1MTI5Ni4uOWUwMzBkOWU0ODEzNDIwMjZiOGM4YjFhOTYw
YzI3MDBiMjgzN2U0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcApAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDb2xsYWJvcmEgTHRkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw5ICszMyw1MyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFBhc3NOYXRpdmVJbWFnZVB0ciBJbWFnZUZyYW1lOjphc05ld05hdGl2ZUlt
YWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9j
cmVhdGVfZm9yX2RhdGEoCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+
KGNvbnN0X2Nhc3Q8UGl4ZWxEYXRhKj4obV9ieXRlcykpLAotICAgICAgICBDQUlST19GT1JNQVRf
QVJHQjMyLCB3aWR0aCgpLCBoZWlnaHQoKSwgd2lkdGgoKSAqIHNpemVvZihQaXhlbERhdGEpKSk7
CisgICAgaW50IHN0cmlkZSA9IG1fc3RyaWRlOworICAgIGNhaXJvX2Zvcm1hdF90IGZvcm1hdDsK
KyAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2U7CisKKyAgICBzd2l0Y2ggKG1fZGVwdGgpIHsK
KyAgICBjYXNlIDI6CisgICAgICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1BVF9SR0IxNl81NjU7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgZm9ybWF0ID0gQ0FJUk9fRk9STUFU
X0FSR0IzMjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICghc3RyaWRl
KQorICAgICAgICBzdHJpZGUgPSB3aWR0aCgpICogbV9kZXB0aDsKKworICAgIHN1cmZhY2UgPSBj
YWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShtX2J5dGVzLCBmb3JtYXQsCisgICAg
ICAgIHdpZHRoKCksIGhlaWdodCgpLCBzdHJpZGUpOworCisgICAgaWYgKGNhaXJvX3N1cmZhY2Vf
c3RhdHVzKHN1cmZhY2UpICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4g
YWRvcHRSZWYoc3VyZmFjZSk7Cit9CisKK2ludCBJbWFnZUZyYW1lOjpzdHJpZGVGb3JXaWR0aChp
bnQgZGVwdGgsIGludCB3aWR0aCkgY29uc3QKK3sKKyAgICBjYWlyb19mb3JtYXRfdCBmb3JtYXQ7
CisKKyAgICBzd2l0Y2ggKGRlcHRoKSB7CisgICAgY2FzZSAyOgorICAgICAgICBmb3JtYXQgPSBD
QUlST19GT1JNQVRfUkdCMTZfNTY1OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAg
ICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICByZXR1cm4gY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoZm9ybWF0
LCB3aWR0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5jcHAKaW5kZXggY2Q1NmU2N2ViOTE4YjE2OTNjNGVjY2Y3NDBhZjgwYzg1OTM2YTc5OC4u
NTc4ZGQwMWM4YjI0NTdjZjMxNjFlMTQyYWZiZmI1YWM0ZmVjYWI5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
Q29sbGFib3JhIEx0ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMxLDcg
KzIzMiw3IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnNpZ25lZCBm
cmFtZUluZGV4LCBjb25zdCBWZWN0b3I8dW5zaWduZWQKICAgICAgICAgICAgIGlmICh3cml0ZVRy
YW5zcGFyZW50UGl4ZWxzKQogICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKGN1cnJlbnRB
ZGRyZXNzLCAwLCAwLCAwLCAwKTsKICAgICAgICAgfQotICAgICAgICArK2N1cnJlbnRBZGRyZXNz
OworICAgICAgICBjdXJyZW50QWRkcmVzcyArPSBidWZmZXIuZGVwdGgoKTsKICAgICB9CiAKICAg
ICAvLyBUZWxsIHRoZSBmcmFtZSB0byBjb3B5IHRoZSByb3cgZGF0YSBpZiBuZWVkIGJlLgpAQCAt
MzU3LDcgKzM1OCw3IEBAIGJvb2wgR0lGSW1hZ2VEZWNvZGVyOjppbml0RnJhbWVCdWZmZXIodW5z
aWduZWQgZnJhbWVJbmRleCkKIAogICAgIGlmICghZnJhbWVJbmRleCkgewogICAgICAgICAvLyBU
aGlzIGlzIHRoZSBmaXJzdCBmcmFtZSwgc28gd2UncmUgbm90IHJlbHlpbmcgb24gYW55IHByZXZp
b3VzIGRhdGEuCi0gICAgICAgIGlmICghYnVmZmVyLT5zZXRTaXplKHNjYWxlZFNpemUoKS53aWR0
aCgpLCBzY2FsZWRTaXplKCkuaGVpZ2h0KCkpKQorICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6
ZShzY2FsZWRTaXplKCkud2lkdGgoKSwgc2NhbGVkU2l6ZSgpLmhlaWdodCgpLCAwLCAwLCBmYWxz
ZSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gVGhlIHN0YXJ0aW5nIHN0YXRlIGZvciB0aGlzIGZyYW1lIGRlcGVuZHMgb24gdGhlIHBy
ZXZpb3VzIGZyYW1lJ3MKQEAgLTM4OCw3ICszODksNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6
aW5pdEZyYW1lQnVmZmVyKHVuc2lnbmVkIGZyYW1lSW5kZXgpCiAgICAgICAgICAgICBpZiAoIWZy
YW1lSW5kZXggfHwgcHJldlJlY3QuY29udGFpbnMoSW50UmVjdChJbnRQb2ludCgpLCBzY2FsZWRT
aXplKCkpKSkgewogICAgICAgICAgICAgICAgIC8vIENsZWFyaW5nIHRoZSBmaXJzdCBmcmFtZSwg
b3IgYSBmcmFtZSB0aGUgc2l6ZSBvZiB0aGUgd2hvbGUKICAgICAgICAgICAgICAgICAvLyBpbWFn
ZSwgcmVzdWx0cyBpbiBhIGNvbXBsZXRlbHkgZW1wdHkgaW1hZ2UuCi0gICAgICAgICAgICAgICAg
aWYgKCFidWZmZXItPnNldFNpemUoYnVmZmVyU2l6ZS53aWR0aCgpLCBidWZmZXJTaXplLmhlaWdo
dCgpKSkKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShidWZmZXJTaXplLndp
ZHRoKCksIGJ1ZmZlclNpemUuaGVpZ2h0KCksIDAsIDAsIGZhbHNlKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAvLyBDb3B5IHRoZSB3aG9sZSBwcmV2aW91cyBidWZmZXIsIHRoZW4gY2xlYXIganVz
dCBpdHMgZnJhbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiYmU3MDlj
YmY5NjIyYTZjMDU1NTRjODI5OWYwNGUzNzAxYTA2NjIwLi5lZjI4ODMyZDY1MDg4MzMxNDFmZDcw
ZTA3MDUzZDQ2NzQ0YzlmOTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAg
LTcsNiArNyw3IEBACiAgKiAgIFN0dWFydCBQYXJtZW50ZXIgPHN0dWFydEBtb3ppbGxhLmNvbT4K
ICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KKyAqIENv
cHlyaWdodCAoQykgMjAxNSBDb2xsYWJvcmEgTHRkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTY4
Nyw3ICs2ODgsNyBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcyhJbWFn
ZUZyYW1lJiBidWZmZXIpCiAgICAgICAgIEltYWdlRnJhbWU6OlBpeGVsRGF0YSogY3VycmVudEFk
ZHJlc3MgPSBidWZmZXIuZ2V0QWRkcigwLCBkZXN0WSk7CiAgICAgICAgIGZvciAoaW50IHggPSAw
OyB4IDwgd2lkdGg7ICsreCkgewogICAgICAgICAgICAgc2V0UGl4ZWw8Y29sb3JTcGFjZT4oYnVm
ZmVyLCBjdXJyZW50QWRkcmVzcywgc2FtcGxlcywgaXNTY2FsZWQgPyBtX3NjYWxlZENvbHVtbnNb
eF0gOiB4KTsKLSAgICAgICAgICAgICsrY3VycmVudEFkZHJlc3M7CisgICAgICAgICAgICBjdXJy
ZW50QWRkcmVzcyArPSBidWZmZXIuZGVwdGgoKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTcwNCwxMCArNzA1LDI4IEBAIGJvb2wgSlBFR0ltYWdlRGVjb2Rlcjo6b3V0
cHV0U2NhbmxpbmVzKCkKICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAganBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbyA9
IG1fcmVhZGVyLT5pbmZvKCk7CisKICAgICAvLyBJbml0aWFsaXplIHRoZSBmcmFtZWJ1ZmZlciBp
ZiBuZWVkZWQuCiAgICAgSW1hZ2VGcmFtZSYgYnVmZmVyID0gbV9mcmFtZUJ1ZmZlckNhY2hlWzBd
OwogICAgIGlmIChidWZmZXIuc3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkgewot
ICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNjYWxlZFNpemUoKS53aWR0aCgpLCBzY2FsZWRT
aXplKCkuaGVpZ2h0KCkpKQorICAgICAgICBpbnQgc3RyaWRlOworICAgICAgICBpbnQgZGVwdGgg
PSA0OworCisgICAgICAgIGlmIChnZXRlbnYoIlJHQjU2NSIpKSB7CisjaWYgZGVmaW5lZChUVVJC
T19KUEVHX1JHQl9TV0laWkxFKQorICAgICAgICAgICAgLy8gVXBzdHJlYW0gbGlianBlZy10dXJi
byBjYW5ub3QgcmVuZGVyIHRvIFJHQjU2NSBhdG0KKyAgICAgICAgICAgIGlmIChtX3NjYWxlZCB8
fCAhdHVyYm9Td2l6emxlZChpbmZvLT5vdXRfY29sb3Jfc3BhY2UpKSB7CisjZWxzZQorICAgICAg
ICAgICAgeworI2VuZGlmCisgICAgICAgICAgICAgICAgZGVwdGggPSAyOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgYnVmZmVyLnNldERlcHRoKGRlcHRoKTsKKyAgICAgICAg
c3RyaWRlID0gYnVmZmVyLnN0cmlkZUZvcldpZHRoKGRlcHRoLCBzY2FsZWRTaXplKCkud2lkdGgo
KSk7CisgICAgICAgIGlmICghYnVmZmVyLnNldFNpemUoc2NhbGVkU2l6ZSgpLndpZHRoKCksIHNj
YWxlZFNpemUoKS5oZWlnaHQoKSwgc3RyaWRlKSkKICAgICAgICAgICAgIHJldHVybiBzZXRGYWls
ZWQoKTsKICAgICAgICAgYnVmZmVyLnNldFN0YXR1cyhJbWFnZUZyYW1lOjpGcmFtZVBhcnRpYWwp
OwogICAgICAgICAvLyBUaGUgYnVmZmVyIGlzIHRyYW5zcGFyZW50IG91dHNpZGUgdGhlIGRlY29k
ZWQgYXJlYSB3aGlsZSB0aGUgaW1hZ2UgaXMKQEAgLTcxOSwxMiArNzM4LDEwIEBAIGJvb2wgSlBF
R0ltYWdlRGVjb2Rlcjo6b3V0cHV0U2NhbmxpbmVzKCkKICAgICAgICAgYnVmZmVyLnNldE9yaWdp
bmFsRnJhbWVSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgc2l6ZSgpKSk7CiAgICAgfQogCi0gICAg
anBlZ19kZWNvbXByZXNzX3N0cnVjdCogaW5mbyA9IG1fcmVhZGVyLT5pbmZvKCk7Ci0KICNpZiBk
ZWZpbmVkKFRVUkJPX0pQRUdfUkdCX1NXSVpaTEUpCiAgICAgaWYgKCFtX3NjYWxlZCAmJiB0dXJi
b1N3aXp6bGVkKGluZm8tPm91dF9jb2xvcl9zcGFjZSkpIHsKICAgICAgICAgd2hpbGUgKGluZm8t
Pm91dHB1dF9zY2FubGluZSA8IGluZm8tPm91dHB1dF9oZWlnaHQpIHsKLSAgICAgICAgICAgIHVu
c2lnbmVkIGNoYXIqIHJvdyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGJ1ZmZl
ci5nZXRBZGRyKDAsIGluZm8tPm91dHB1dF9zY2FubGluZSkpOworICAgICAgICAgICAgdW5zaWdu
ZWQgY2hhciogcm93ID0gYnVmZmVyLmdldEFkZHIoMCwgaW5mby0+b3V0cHV0X3NjYW5saW5lKTsK
ICAgICAgICAgICAgIGlmIChqcGVnX3JlYWRfc2NhbmxpbmVzKGluZm8sICZyb3csIDEpICE9IDEp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIFVTRShRQ01TTElCKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA2ZDQ0MTU1OTRkYTJlZjE3MDdhNmY1YzY5ZGJlZWI0
MDc4OGRlOTE4Li45OTNlNjUxMWVjOGQxOWI4ZTliYzYxZDYzNzZiNDA2ODA4NjE5OGQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2Jp
bGUsIEluYy4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAw
OS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IENvbGxh
Ym9yYSBMdGQuCiAgKgogICogUG9ydGlvbnMgYXJlIENvcHlyaWdodCAoQykgMjAwMSBtb3ppbGxh
Lm9yZwogICoKQEAgLTUwMywxMyArNTA0LDE5IEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpoZWFk
ZXJBdmFpbGFibGUoKQogCiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4ZWxSR0IoSW1hZ2VGcmFt
ZTo6UGl4ZWxEYXRhKiBkZXN0LCBwbmdfYnl0ZXAgcGl4ZWwpCiB7Ci0gICAgKmRlc3QgPSAweEZG
MDAwMDAwVSB8IHBpeGVsWzBdIDw8IDE2IHwgcGl4ZWxbMV0gPDwgOCB8IHBpeGVsWzJdOworICAg
IGRlc3RbMF0gPSBwaXhlbFsyXTsKKyAgICBkZXN0WzFdID0gcGl4ZWxbMV07CisgICAgZGVzdFsy
XSA9IHBpeGVsWzBdOworICAgIGRlc3RbM10gPSAweEZGOwogfQogCiBzdGF0aWMgaW5saW5lIHZv
aWQgc2V0UGl4ZWxSR0JBKEltYWdlRnJhbWU6OlBpeGVsRGF0YSogZGVzdCwgcG5nX2J5dGVwIHBp
eGVsLCB1bnNpZ25lZCBjaGFyJiBub25Ucml2aWFsQWxwaGFNYXNrKQogewogICAgIHVuc2lnbmVk
IGNoYXIgYSA9IHBpeGVsWzNdOwotICAgICpkZXN0ID0gYSA8PCAyNCB8IHBpeGVsWzBdIDw8IDE2
IHwgcGl4ZWxbMV0gPDwgOCB8IHBpeGVsWzJdOworICAgIGRlc3RbMF0gPSBwaXhlbFsyXTsKKyAg
ICBkZXN0WzFdID0gcGl4ZWxbMV07CisgICAgZGVzdFsyXSA9IHBpeGVsWzBdOworICAgIGRlc3Rb
M10gPSBhOwogICAgIG5vblRyaXZpYWxBbHBoYU1hc2sgfD0gKDI1NSAtIGEpOwogfQogCkBAIC01
MjAsNyArNTI3LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRQaXhlbFByZW11bHRpcGxpZWRS
R0JBKEltYWdlRnJhbWU6OlBpeGVsRGF0YSogZGVzdCwgcG5nX2J5CiAgICAgdW5zaWduZWQgY2hh
ciBnID0gZmFzdERpdmlkZUJ5MjU1KHBpeGVsWzFdICogYSk7CiAgICAgdW5zaWduZWQgY2hhciBi
ID0gZmFzdERpdmlkZUJ5MjU1KHBpeGVsWzJdICogYSk7CiAKLSAgICAqZGVzdCA9IGEgPDwgMjQg
fCByIDw8IDE2IHwgZyA8PCA4IHwgYjsKKyAgICBkZXN0WzBdID0gYjsKKyAgICBkZXN0WzFdID0g
ZzsKKyAgICBkZXN0WzJdID0gcjsKKyAgICBkZXN0WzNdID0gYTsKICAgICBub25Ucml2aWFsQWxw
aGFNYXNrIHw9ICgyNTUgLSBhKTsKIH0KIApAQCAtNjQ3LDggKzY1Nyw5IEBAIHZvaWQgUE5HSW1h
Z2VEZWNvZGVyOjpyb3dBdmFpbGFibGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25l
ZCByb3dJbmRleCwKICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CiAg
ICAgICAgICAgICBwbmdfYnl0ZXAgcGl4ZWwgPSByb3cgKyBtX3NjYWxlZENvbHVtbnNbeF0gKiBj
b2xvckNoYW5uZWxzOwogICAgICAgICAgICAgdW5zaWduZWQgYWxwaGEgPSBoYXNBbHBoYSA/IHBp
eGVsWzNdIDogMjU1OwotICAgICAgICAgICAgYnVmZmVyLnNldFJHQkEoYWRkcmVzcysrLCBwaXhl
bFswXSwgcGl4ZWxbMV0sIHBpeGVsWzJdLCBhbHBoYSk7CisgICAgICAgICAgICBidWZmZXIuc2V0
UkdCQShhZGRyZXNzLCBwaXhlbFswXSwgcGl4ZWxbMV0sIHBpeGVsWzJdLCBhbHBoYSk7CiAgICAg
ICAgICAgICBub25Ucml2aWFsQWxwaGFNYXNrIHw9ICgyNTUgLSBhbHBoYSk7CisgICAgICAgICAg
ICBhZGRyZXNzICs9IGJ1ZmZlci5kZXB0aCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAjZW5k
aWYKQEAgLTY1NiwxNSArNjY3LDIxIEBAIHZvaWQgUE5HSW1hZ2VEZWNvZGVyOjpyb3dBdmFpbGFi
bGUodW5zaWduZWQgY2hhciogcm93QnVmZmVyLCB1bnNpZ25lZCByb3dJbmRleCwKICAgICAgICAg
cG5nX2J5dGVwIHBpeGVsID0gcm93OwogICAgICAgICBpZiAoaGFzQWxwaGEpIHsKICAgICAgICAg
ICAgIGlmIChidWZmZXIucHJlbXVsdGlwbHlBbHBoYSgpKSB7Ci0gICAgICAgICAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCB3aWR0aDsgKyt4LCBwaXhlbCArPSA0KQotICAgICAgICAgICAgICAg
ICAgICBzZXRQaXhlbFByZW11bHRpcGxpZWRSR0JBKGFkZHJlc3MrKywgcGl4ZWwsIG5vblRyaXZp
YWxBbHBoYU1hc2spOworICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7
ICsreCwgcGl4ZWwgKz0gNCkgeworICAgICAgICAgICAgICAgICAgICBzZXRQaXhlbFByZW11bHRp
cGxpZWRSR0JBKGFkZHJlc3MsIHBpeGVsLCBub25Ucml2aWFsQWxwaGFNYXNrKTsKKyAgICAgICAg
ICAgICAgICAgICAgYWRkcmVzcyArPSBidWZmZXIuZGVwdGgoKTsKKyAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4
IDwgd2lkdGg7ICsreCwgcGl4ZWwgKz0gNCkKLSAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxS
R0JBKGFkZHJlc3MrKywgcGl4ZWwsIG5vblRyaXZpYWxBbHBoYU1hc2spOworICAgICAgICAgICAg
ICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCwgcGl4ZWwgKz0gNCkgeworICAgICAg
ICAgICAgICAgICAgICBzZXRQaXhlbFJHQkEoYWRkcmVzcywgcGl4ZWwsIG5vblRyaXZpYWxBbHBo
YU1hc2spOworICAgICAgICAgICAgICAgICAgICBhZGRyZXNzICs9IGJ1ZmZlci5kZXB0aCgpOwor
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCwgcGl4ZWwgKz0gMykKLSAgICAg
ICAgICAgICAgICBzZXRQaXhlbFJHQihhZGRyZXNzKyssIHBpeGVsKTsKKyAgICAgICAgICAgIGZv
ciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCwgcGl4ZWwgKz0gMykgeworICAgICAgICAgICAg
ICAgIHNldFBpeGVsUkdCKGFkZHJlc3MsIHBpeGVsKTsKKyAgICAgICAgICAgICAgICBhZGRyZXNz
ICs9IGJ1ZmZlci5kZXB0aCgpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9EaXNrSW1hZ2VDYWNoZVBP
U0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0Rpc2tJbWFnZUNhY2hlUE9T
SVguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ5MmIxNDFmNDE3ODg0OWRlNTIwN2M5YWY4MjMzYzBmYmI4YjE0
MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9EaXNr
SW1hZ2VDYWNoZVBPU0lYLmNwcApAQCAtMCwwICsxLDQ1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRpc2tJbWFnZUNhY2hlLmgiCisKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkg
JiYgT1MoVU5JWCkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDxlcnJuby5oPgor
I2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxzeXMv
c3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitEaXNrSW1hZ2VDYWNoZSYgZGlza0ltYWdlQ2FjaGUoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxEaXNrSW1hZ2VDYWNoZT4gY2FjaGU7CisgICAgcmV0dXJuIGNhY2hlOworfQor
CitEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OkVudHJ5KFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBEaXNr
SW1hZ2VDYWNoZUlkIGlkKQorICAgIDogbV9idWZmZXIoYnVmZmVyKQorICAgICwgbV9pZChpZCkK
KyAgICAsIG1fc2l6ZSgwKQorICAgICwgbV9tYXBwaW5nKG51bGxwdHIpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9idWZmZXIpOworICAgIG1fYnVmZmVyLT5y
ZWYoKTsKKyAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJOZXcgQlVGRkVSIEVudHJ5OiBpZD0ldSIs
IG1faWQpOworfQorCitEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OkVudHJ5KHVuc2lnbmVkIHNpemUs
IERpc2tJbWFnZUNhY2hlSWQgaWQpCisgICAgOiBtX2J1ZmZlcihudWxscHRyKQorICAgICwgbV9p
ZChpZCkKKyAgICAsIG1fc2l6ZShzaXplKQorICAgICwgbV9tYXBwaW5nKG51bGxwdHIpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyKTsKKyAgICBB
U1NFUlQobV9zaXplKTsKKyAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJOZXcgKHNpemU6ICUuMmZL
KSBFbnRyeTogaWQ9JXUiLCBtX3NpemUgLyAxMDI0LiwgbV9pZCk7Cit9CisKK0Rpc2tJbWFnZUNh
Y2hlOjpFbnRyeTo6fkVudHJ5KCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVCghbV9idWZmZXIpOworICAgIEFTU0VSVCghbV9tYXBwaW5nKTsKKyAgICBMT0coRGlz
a0ltYWdlQ2FjaGUsICJEZXN0cm95aW5nIEVudHJ5OiBpZD0ldSIsIG1faWQpOworfQorCitib29s
IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6bWFwSW50ZXJuYWwoKQoreworICAgIEFTU0VSVChtX2J1
ZmZlciB8fCBtX3NpemUpOworICAgIEFTU0VSVCghbV9tYXBwaW5nKTsKKworICAgIGlmIChtX2J1
ZmZlcikKKyAgICAgICAgbV9zaXplID0gbV9idWZmZXItPnNpemUoKTsKKworICAgIExPRyhEaXNr
SW1hZ2VDYWNoZSwgIk1hcHBpbmcgRW50cnk6IGlkPSV1IiwgbV9pZCk7CisKKyAgICAvLyBPcGVu
IHRoZSBmaWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nLgorICAgIGludCBmZCA9IG9wZW4obV9w
YXRoLnV0ZjgoKS5kYXRhKCksIE9fQ1JFQVQgfCBPX1JEV1IgfCBPX1RSVU5DLCBzdGF0aWNfY2Fz
dDxtb2RlX3Q+KDA2MDApKTsKKyAgICBpZiAoZmQgPT0gLTEpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChtX2J1ZmZlcikgeworICAgICAgICAvLyBXcml0ZSB0aGUgZGF0YSB0byB0
aGUgZmlsZS4KKyAgICAgICAgaWYgKHdyaXRlVG9GaWxlSW50ZXJuYWwoZmQpID09IC0xKSB7Cisg
ICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICBkZWxldGVGaWxlKG1fcGF0aCk7Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBTZWVrIGJh
Y2sgdG8gdGhlIGJlZ2lubmluZy4KKyAgICAgICAgaWYgKGxzZWVrKGZkLCAwLCBTRUVLX1NFVCkg
PT0gLTEpIHsKKyAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgICAgIGRlbGV0ZUZpbGUo
bV9wYXRoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmIChwb3NpeF9mYWxsb2NhdGUoZmQsIDAsIG1fc2l6ZSkpIHsKKyAgICAg
ICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRoaXMgbXVz
dCBub3QgY29uZmxpY3Qgd2l0aCB0aGUgb3BlbigpIGFib3ZlLiBGb3IgZ2VuZXJpYyBmaWxlLWJh
Y2tlZCBtZW1vcnkgd2UgYWxsb3cKKyAgICAvLyB3cml0aW5nLCBzaW5jZSBpdCdzIGFjdHVhbGx5
IHN1cHBvc2VkIHRvIGJlIGEgYmxhbmsgc2xhdGUgdGhhdCB3aWxsIGJlIGZpbGxlZCBhbmQgZWRp
dGVkCisgICAgLy8gYnkgdGhlIGNhbGxlci4KKyAgICBpbnQgbW1hcEZsYWdzID0gbV9idWZmZXIg
PyBQUk9UX1JFQUQgOiBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFOworICAgIG1fbWFwcGluZyA9IG1t
YXAobnVsbHB0ciwgbV9zaXplLCBtbWFwRmxhZ3MsIE1BUF9TSEFSRUQsIGZkLCAwKTsKKyAgICBj
bG9zZShmZCk7CisgICAgaWYgKG1fbWFwcGluZyA9PSBNQVBfRkFJTEVEKSB7CisgICAgICAgIExP
RyhEaXNrSW1hZ2VDYWNoZSwgIkRpc2tJbWFnZUNhY2hlOiBtYXBwaW5nIGZhaWxlZCAoJWQpOiAo
JXMpIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIG1fbWFwcGluZyA9IG51bGxw
dHI7CisgICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRy
eTo6ZGlkRmFpbE1lbW9yeU1hcCgpCit7CisgICAgbV9idWZmZXItPmZhaWxlZE1lbW9yeU1hcCgp
OworICAgIG1fYnVmZmVyLT5kZXJlZigpOworICAgIG1fYnVmZmVyID0gMDsKKyAgICB0aGlzLT5k
ZXJlZigpOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkTWFwTWVtb3J5KCkK
K3sKKyAgICBtX2J1ZmZlci0+bWFya0FzTWVtb3J5TWFwcGVkKCk7CisgICAgbV9idWZmZXItPmRl
cmVmKCk7CisgICAgbV9idWZmZXIgPSAwOworICAgIHRoaXMtPmRlcmVmKCk7Cit9CisKK2Jvb2wg
RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpzeW5jaHJvbm91c2x5TWFwKCkKK3sKKyAgICBBU1NFUlQo
IW1fcGF0aC5pc0VtcHR5KCkpOworICAgIEFTU0VSVCghbV9idWZmZXIpOworICAgIEFTU0VSVCht
X3NpemUpOworICAgIEFTU0VSVCghbV9tYXBwaW5nKTsKKworICAgIHJldHVybiBtYXBJbnRlcm5h
bCgpOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6bWFwKCkKK3sKKyAgICBBU1NF
UlQoIW1fcGF0aC5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAgQVNTRVJU
KCFtX21hcHBpbmcpOworCisgICAgYm9vbCBmaWxlTWFwcGVkID0gbWFwSW50ZXJuYWwoKTsKKyAg
ICBpZiAoIWZpbGVNYXBwZWQpIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZEaXNr
SW1hZ2VDYWNoZTo6RW50cnk6OmRpZEZhaWxNZW1vcnlNYXAsIHRoaXMpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZCgmRGlza0ltYWdlQ2FjaGU6
OkVudHJ5OjpkaWRNYXBNZW1vcnksIHRoaXMpKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6
RW50cnk6OnVubWFwKCkKK3sKKyAgICBpZiAoIW1fbWFwcGluZykgeworICAgICAgICBBU1NFUlQo
IW1fc2l6ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMT0coRGlza0ltYWdlQ2Fj
aGUsICJVbk1hcHBpbmcgRW50cnk6IGlkPSV1IiwgbV9pZCk7CisKKyAgICBpZiAobXVubWFwKG1f
bWFwcGluZywgbV9zaXplKSA9PSAtMSkKKyAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNo
ZTogQ291bGQgbm90IG11bm1hcCBhIG1lbW9yeSBtYXBwZWQgZmlsZSB3aXRoIGlkICglZCkiLCBt
X2lkKTsKKworICAgIG1fbWFwcGluZyA9IG51bGxwdHI7CisgICAgbV9zaXplID0gMDsKK30KKwor
dm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnJlbW92ZUZpbGUoKQoreworICAgIEFTU0VSVCgh
bV9tYXBwaW5nKTsKKyAgICBBU1NFUlQoIW1fc2l6ZSk7CisKKyAgICBpZiAoIWRlbGV0ZUZpbGUo
bV9wYXRoKSkKKyAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogQ291bGQgbm90IGRl
bGV0ZSBtZW1vcnkgbWFwcGVkIGZpbGUgKCVzKSIsIG1fcGF0aC51dGY4KCkuZGF0YSgpKTsKK30K
Kwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmNsZWFyRGF0YVdpdGhvdXRNYXBwaW5nKCkK
K3sKKyAgICBBU1NFUlQoIW1fbWFwcGluZyk7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBt
X2J1ZmZlci0+ZGVyZWYoKTsKKyAgICBtX2J1ZmZlciA9IDA7CisgICAgTE9HKERpc2tJbWFnZUNh
Y2hlLCAiQ2xlYXIgZGF0YSB3aXRob3V0IG1hcHBpbmcgZm9yIEVudHJ5OiBpZD0ldSIsIG1faWQp
OworfQorCitpbnQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojp3cml0ZVRvRmlsZUludGVybmFsKGlu
dCBmZCkKK3sKKyAgICBBU1NFUlQobV9idWZmZXIpOworICAgIGludCB0b3RhbEJ5dGVzV3JpdHRl
biA9IDA7CisKKyAgICBjb25zdCBjaGFyKiBzZWdtZW50ID0gbnVsbHB0cjsKKyAgICB1bnNpZ25l
ZCBwb3NpdGlvbiA9IDA7CisgICAgd2hpbGUgKHVuc2lnbmVkIGxlbmd0aCA9IG1fYnVmZmVyLT5n
ZXRTb21lRGF0YShzZWdtZW50LCBwb3NpdGlvbikpIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRl
biA9IHdyaXRlKGZkLCBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oc2VnbWVudCksIGxlbmd0aCk7
CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7
CisKKyAgICAgICAgdG90YWxCeXRlc1dyaXR0ZW4gKz0gYnl0ZXNXcml0dGVuOworICAgICAgICBw
b3NpdGlvbiArPSBsZW5ndGg7CisgICAgfQorCisgICAgcmV0dXJuIHRvdGFsQnl0ZXNXcml0dGVu
OworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6c2V0VGVtcG9yYXJ5RmlsZVBhdGgo
Y29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIG1fcGF0aCA9IHBhdGg7Cit9CisKK3ZvaWQgRGlz
a0ltYWdlQ2FjaGU6OkVudHJ5OjpjYW5jZWxNYXAoKQoreworICAgIGNsZWFyRGF0YVdpdGhvdXRN
YXBwaW5nKCk7CisgICAgdGhpcy0+ZGVyZWYoKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6
RW50cnk6Om1hcFRocmVhZFN0YXJ0KHZvaWQqIGVudHJ5UHRyKQoreworICAgIERpc2tJbWFnZUNh
Y2hlOjpFbnRyeSogZW50cnkgPSBzdGF0aWNfY2FzdDxEaXNrSW1hZ2VDYWNoZTo6RW50cnkqPihl
bnRyeVB0cik7CisgICAgVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCA9IGN1cnJlbnRUaHJlYWQo
KTsKKworICAgIGlmIChkaXNrSW1hZ2VDYWNoZSgpLmlzRnVsbCgpKSB7CisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoYmluZCgmRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjYW5jZWxNYXAsIGVudHJ5
KSk7CisgICAgICAgIGRldGFjaFRocmVhZCh0aHJlYWRJRCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBlbnRyeS0+bWFwKCk7CisKKyAgICAvLyBVcGRhdGUgdGhlIHNpemUgb24gYSBz
dWNjZXNzZnVsIG1hcHBpbmcuCisgICAgaWYgKGVudHJ5LT5pc01hcHBlZCgpKQorICAgICAgICBk
aXNrSW1hZ2VDYWNoZSgpLnVwZGF0ZVNpemUoZW50cnktPnNpemUoKSk7CisKKyAgICBkZXRhY2hU
aHJlYWQodGhyZWFkSUQpOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkUmVt
b3ZlRmlsZSgpCit7CisgICAgZGVyZWYoKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50
cnk6OnJlbW92ZUZpbGVUaHJlYWRTdGFydCh2b2lkKiBlbnRyeVB0cikKK3sKKyAgICBEaXNrSW1h
Z2VDYWNoZTo6RW50cnkqIGVudHJ5ID0gc3RhdGljX2Nhc3Q8RGlza0ltYWdlQ2FjaGU6OkVudHJ5
Kj4oZW50cnlQdHIpOworCisgICAgZW50cnktPnVubWFwKCk7CisgICAgZW50cnktPnJlbW92ZUZp
bGUoKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZCgmRGlza0ltYWdlQ2FjaGU6OkVudHJ5
OjpkaWRSZW1vdmVGaWxlLCBlbnRyeSkpOworICAgIGRldGFjaFRocmVhZChjdXJyZW50VGhyZWFk
KCkpOworfQorCitEaXNrSW1hZ2VDYWNoZTo6RGlza0ltYWdlQ2FjaGUoKQorICAgIDogbV9lbmFi
bGVkKGZhbHNlKQorICAgICwgbV9zaXplKDApCisgICAgLCBtX21heGltdW1DYWNoZVNpemUoMTAw
ICogMTAyNCAqIDEwMjQpCisgICAgLCBtX21pbmltdW1JbWFnZVNpemUoMTAwICogMTAyNCkKKyAg
ICAsIG1fbmV4dEF2YWlsYWJsZUlkKERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQg
KyAxKQoreworfQorCitTdHJpbmcgRGlza0ltYWdlQ2FjaGU6OnByZXBhcmVGaWxlKCkKK3sKKyAg
ICBpZiAoIWlzRW5hYmxlZCgpIHx8ICFjcmVhdGVEaXJlY3RvcnlJZk5lZWRlZCgpKQorICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICAvLyBXZSBhcmUgYWxyZWFkeSBmdWxsLCBjYW5ub3Qg
YWRkIGFueXRoaW5nIHVudGlsIHNvbWV0aGluZyBpcyByZW1vdmVkLgorICAgIGlmIChpc0Z1bGwo
KSkgeworICAgICAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNrSW1hZ2VDYWNoZTogY291bGQg
bm90IHByb2Nlc3MgYW4gaXRlbSBiZWNhdXNlIHRoZSBjYWNoZSB3YXMgZnVsbCBhdCAoJWQpLiBU
aGUgXCJtYXhcIiBiZWluZyAoJWQpIiwgbV9zaXplLCBtX21heGltdW1DYWNoZVNpemUpOworICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5
IGZpbGUgcGF0aC4KKyAgICBTdHJpbmcgcGF0aCA9IHRlbXBvcmFyeUZpbGUoKTsKKyAgICBMT0co
RGlza0ltYWdlQ2FjaGUsICJEaXNrSW1hZ2VDYWNoZTogY3JlYXRpbmcgZW50cnkgYXQgKCVzKSIs
IHBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKHBhdGguaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBwYXRoOworfQorCitEaXNrSW1hZ2VDYWNoZUlk
IERpc2tJbWFnZUNhY2hlOjpjcmVhdGVGaWxlQmFja2VkTWFwcGluZyh1bnNpZ25lZCBzaXplKQor
eworICAgIEFTU0VSVChzaXplKTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiBEaXNr
SW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkOworCisgICAgU3RyaW5nIHBhdGggPSBwcmVw
YXJlRmlsZSgpOworICAgIGlmIChwYXRoLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gRGlza0lt
YWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKKworICAgIERpc2tJbWFnZUNhY2hlSWQgaWQg
PSBuZXh0QXZhaWxhYmxlSWQoKTsKKyAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBl
bnRyeSA9IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y3JlYXRlKHNpemUsIGlkKTsKKyAgICBtX3Rh
YmxlLmFkZChpZCwgZW50cnkpOworCisgICAgZW50cnktPnNldFRlbXBvcmFyeUZpbGVQYXRoKHBh
dGgpOworCisgICAgaWYgKCFlbnRyeS0+c3luY2hyb25vdXNseU1hcCgpKQorICAgICAgICByZXR1
cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKKworICAgIC8vIFVwZGF0ZSB0
aGUgc2l6ZSBvbiBhIHN1Y2Nlc3NmdWwgbWFwcGluZy4KKyAgICBpZiAoZW50cnktPmlzTWFwcGVk
KCkpCisgICAgICAgIHVwZGF0ZVNpemUoZW50cnktPnNpemUoKSk7CisKKyAgICByZXR1cm4gaWQ7
Cit9CisKK0Rpc2tJbWFnZUNhY2hlSWQgRGlza0ltYWdlQ2FjaGU6OndyaXRlSXRlbShQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gaXRlbSkKK3sKKyAgICBTdHJpbmcgcGF0aCA9IHByZXBhcmVGaWxl
KCk7CisgICAgaWYgKHBhdGguaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBEaXNrSW1hZ2VDYWNo
ZTo6aW52YWxpZERpc2tDYWNoZUlkOworCisgICAgLy8gQ3JlYXRlIGFuIGVudHJ5LgorICAgIERp
c2tJbWFnZUNhY2hlSWQgaWQgPSBuZXh0QXZhaWxhYmxlSWQoKTsKKyAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBpdGVtOworICAgIFJlZlB0cjxEaXNrSW1hZ2VDYWNoZTo6RW50cnk+
IGVudHJ5ID0gRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjcmVhdGUoYnVmZmVyLmdldCgpLCBpZCk7
CisgICAgbV90YWJsZS5hZGQoaWQsIGVudHJ5KTsKKworICAgIGVudHJ5LT5zZXRUZW1wb3JhcnlG
aWxlUGF0aChwYXRoKTsKKworICAgIC8vIFRoZSBsaWZldGltZSBvZiB0aGUgRW50cnkgaXMgaGFu
ZGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuIEJlZm9yZSB3ZSBzdGFydCBhIHRocmVhZCB3ZSBuZWVk
IHRvCisgICAgLy8gcmVmIHNvIHRoYXQgd2UgYXJlIHN1cmUgdGhlIG9iamVjdCBzdGlsbCBleGlz
dHMuIFRoaXMgY2FsbCBpcyBiYWxhbmNlZCBpbiB0aGUgY2FsbGJhY2tzCisgICAgLy8gY2FsbGVk
IGZyb20gRW50cnk6Om1hcC4KKyAgICBlbnRyeS0+cmVmKCk7CisKKyAgICAvLyBNYXAgdG8gZGlz
ayBhc3luY2hyb25vdXNseS4KKyAgICBjcmVhdGVUaHJlYWQoRGlza0ltYWdlQ2FjaGU6OkVudHJ5
OjptYXBUaHJlYWRTdGFydCwgZW50cnkuZ2V0KCksICJXZWJDb3JlOiBEaXNrSW1hZ2VDYWNoZTo6
bWFwIik7CisKKyAgICByZXR1cm4gaWQ7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OnVwZGF0
ZVNpemUodW5zaWduZWQgZGVsdGEpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsK
KyAgICBtX3NpemUgKz0gZGVsdGE7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OnJlbW92ZUl0
ZW0oRGlza0ltYWdlQ2FjaGVJZCBpZCkKK3sKKyAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNr
SW1hZ2VDYWNoZTogcmVtb3ZlSXRlbSAoJWQpIiwgaWQpOworICAgIFJlZlB0cjxEaXNrSW1hZ2VD
YWNoZTo6RW50cnk+IGVudHJ5ID0gbV90YWJsZS5nZXQoaWQpOworICAgIG1fdGFibGUucmVtb3Zl
KGlkKTsKKyAgICBpZiAoIWVudHJ5LT5pc01hcHBlZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICB1cGRhdGVTaXplKC0oZW50cnktPnNpemUoKSkpOworCisgICAgZW50cnktPnJlZigpOworCisg
ICAgY3JlYXRlVGhyZWFkKERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6cmVtb3ZlRmlsZVRocmVhZFN0
YXJ0LCBlbnRyeS5nZXQoKSwgIldlYkNvcmU6IERpc2tJbWFnZUNhY2hlOjpyZW1vdmVJdGVtIik7
Cit9CisKK3ZvaWQqIERpc2tJbWFnZUNhY2hlOjpkYXRhRm9ySXRlbShEaXNrSW1hZ2VDYWNoZUlk
IGlkKQoreworICAgIEFTU0VSVChpZCk7CisKKyAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVu
dHJ5PiBlbnRyeSA9IG1fdGFibGUuZ2V0KGlkKTsKKyAgICBBU1NFUlQoZW50cnktPmlzTWFwcGVk
KCkpOworICAgIHJldHVybiBlbnRyeS0+ZGF0YSgpOworfQorCitib29sIERpc2tJbWFnZUNhY2hl
OjpjcmVhdGVEaXJlY3RvcnlJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX2NhY2hlRGlyZWN0b3J5
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIG1fY2FjaGVEaXJlY3Rvcnkg
PSB0ZW1wb3JhcnlEaXJlY3RvcnkoKTsKKyAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNrSW1h
Z2VDYWNoZTogQ3JlYXRlZCB0ZW1wb3JhcnkgZGlyZWN0b3J5ICglcykiLCBtX2NhY2hlRGlyZWN0
b3J5LnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChtX2NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKSB7
CisgICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IGNvdWxkIG5vdCBjcmVhdGUgY2Fj
aGUgZGlyZWN0b3J5Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRDcmVhdGVEaXNrSW1hZ2VDYWNoZURpcmVj
dG9yeShtX2NhY2hlRGlyZWN0b3J5KTsKKworICAgIHJldHVybiB0cnVlOworfQorCitEaXNrSW1h
Z2VDYWNoZUlkIERpc2tJbWFnZUNhY2hlOjpuZXh0QXZhaWxhYmxlSWQoKQoreworICAgIHJldHVy
biBtX25leHRBdmFpbGFibGVJZCsrOworfQorCisjaWYgUExBVEZPUk0oR1RLKQorLy8gRm9yIEdU
Sysgd2UgdXNlIGEgd2VsbC1rbm93biBuYW1lIGluc2lkZSB0aGUgdXNlcidzIFhERyBjYWNoZSBk
aXJlY3RvcnksIHNvIHRoYXQgd2UgY2FuCisvLyBiZXR0ZXIgbWFuYWdlIGl0cyBjbGVhbnVwLgor
U3RyaW5nIERpc2tJbWFnZUNhY2hlOjp0ZW1wb3JhcnlEaXJlY3RvcnkoKQoreworICAgIFN0cmlu
ZyBwYXRoID0gY3JlYXRlVXNlckNhY2hlRGlyZWN0b3J5KCJkaXNrLWltYWdlLWNhY2hlIik7Cisg
ICAgaWYgKHBhdGguaXNFbXB0eSgpKQorICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNhY2hl
OiBDb3VsZCBub3QgY3JlYXRlIGNhY2hlIGRpcmVjdG9yeS4iKTsKKworICAgIC8vIENsZWFudXAg
dGhlIGRpcmVjdG9yeS4KKyAgICBWZWN0b3I8U3RyaW5nPiBpdGVtcyA9IGxpc3REaXJlY3Rvcnko
cGF0aCwgInRtcCoiKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsg
aSsrKQorICAgICAgICBkZWxldGVGaWxlKGl0ZW1zW2ldKTsKKworICAgIHJldHVybiBwYXRoOwor
fQorI2Vsc2UKK1N0cmluZyBEaXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5KCkKK3sK
KyAgICBTdHJpbmcgdGVtcERpc2tDYWNoZURpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVj
dG9yeSgiRGlza0ltYWdlQ2FjaGUiKTsKKyAgICBpZiAodGVtcERpc2tDYWNoZURpcmVjdG9yeS5p
c0VtcHR5KCkpCisgICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBj
cmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiIpOworCisgICAgcmV0dXJuIHRlbXBEaXNrQ2Fj
aGVEaXJlY3Rvcnk7Cit9CisjZW5kaWYKKworU3RyaW5nIERpc2tJbWFnZUNhY2hlOjp0ZW1wb3Jh
cnlGaWxlKCkKK3sKKyAgICBTdHJpbmcgdGVtcEZpbGUgPSBjcmVhdGVUZW1wb3JhcnlGaWxlKG1f
Y2FjaGVEaXJlY3RvcnksICJ0bXAiKTsKKyAgICBpZiAodGVtcEZpbGUuaXNFbXB0eSgpKQorICAg
ICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgY3JlYXRlIGEgdGVtcG9y
YXJ5IGZpbGUuIik7CisKKyAgICByZXR1cm4gdGVtcEZpbGU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBPUyhVTklY
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKaW5kZXggZmUyNzZiMGZmZDQ2NjAwZDA0ZDMxMjcyYjExNWZmZDI5MTRmNjI4ZC4uYjdlN2Zl
M2Q5M2FlMmIwZGU1Mzg4ODY5NTQ5YzkyNGNlMmZiZTkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0zMjMsNiArMzIzLDIz
IEBAIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIGZpbHRlcikKIH0KIAogI2lmICFPUyhEQVJXSU4pIHx8IFBMQVRGT1JNKEVGTCkg
fHwgUExBVEZPUk0oR1RLKQorU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHByZWZpeCkKK3sKKyAgICBjaGFyIGJ1ZmZlcltQQVRIX01BWF07CisgICAgY29uc3Qg
Y2hhciogdG1wRGlyID0gZ2V0ZW52KCJUTVBESVIiKTsKKworICAgIGlmICghdG1wRGlyKQorICAg
ICAgICB0bXBEaXIgPSAiL3RtcCI7CisKKyAgICBpZiAoc25wcmludGYoYnVmZmVyLCBQQVRIX01B
WCwgIiVzLyVzWFhYWFhYIiwgdG1wRGlyLCBwcmVmaXgudXRmOCgpLmRhdGEoKSkgPj0gUEFUSF9N
QVgpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGlmIChta2R0ZW1wKGJ1ZmZlcikp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4
KGJ1ZmZlcik7Cit9CisKIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHBy
ZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgY2hhciBidWZmZXJbUEFU
SF9NQVhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRC
dWZmZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVy
U291cC5jcHAKaW5kZXggY2JkYjMzNzYyM2MyOTA2ZjkzZjJiOTcyYTMzMGNlNTk2MGI5OWNhMy4u
YTlkMjBkZjdlNjYzNzY0OTU1YWVhM2MxYjhlZDk2ZjkwZWRkZGVlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwCkBAIC0yMiwxMiAr
MjIsMjAgQEAKIAogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCisjaW5jbHVkZSAiRGlza0lt
YWdlQ2FjaGUuaCIKKwogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFNvdXBCdWZmZXIqIHNvdXBCdWZm
ZXIpCiAgICAgOiBtX2J1ZmZlcihhZG9wdFJlZihuZXcgRGF0YUJ1ZmZlcikpCisjaWYgRU5BQkxF
KERJU0tfSU1BR0VfQ0FDSEUpCisgICAgLCBtX2lzTWVtb3J5TWFwcGVkKGZhbHNlKQorICAgICwg
bV9kaXNrSW1hZ2VDYWNoZUlkKERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQpCisg
ICAgLCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrKG51bGxwdHIpCisgICAgLCBtX25vdGlm
eU1lbW9yeU1hcHBlZENhbGxiYWNrRGF0YShudWxscHRyKQorI2VuZGlmCiAgICAgLCBtX3NvdXBC
dWZmZXIoc291cEJ1ZmZlcikKIHsKICAgICBBU1NFUlQoc291cEJ1ZmZlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
aW5kZXggNjI3MGQ4YzFmMDg3MTg3ZGNlYWUyNWVhZDFmNjFlZDNkZTJlM2I4Yi4uMTU4NWY2MDhm
MmIyNWUyNmNlNTg4OGVjNzBmZWZkYzkzZTc1ODMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTA4LDYg
KzEwOCw5IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6
QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hvdWxkVXNl
Rm9udFNtb290aGluZzsKICAgICBlbmNvZGVyIDw8IGZvbnRXaGl0ZWxpc3Q7CiAgICAgZW5jb2Rl
ciA8PCBpY29uRGF0YWJhc2VFbmFibGVkOworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQor
ICAgIGVuY29kZXIgPDwgZGlza0ltYWdlQ2FjaGVFbmFibGVkOworI2VuZGlmCiAgICAgZW5jb2Rl
ciA8PCB0ZXJtaW5hdGlvblRpbWVvdXQ7CiAgICAgZW5jb2RlciA8PCBsYW5ndWFnZXM7CiAgICAg
ZW5jb2RlciA8PCB0ZXh0Q2hlY2tlclN0YXRlOwpAQCAtMjQxLDYgKzI0NCwxMCBAQCBib29sIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYg
ZGVjb2RlciwgV2ViUHJvYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmRpc2tJbWFnZUNhY2hlRW5hYmxlZCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50ZXJtaW5h
dGlvblRpbWVvdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmxhbmd1YWdlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBlN2IxOGI5ZTI3MmFmODMy
MDc5NTI3MzM5OTVmZmI5ZDI4MzQ5NDA4Li43YzJhM2I0ZGVlMmFjY2YwNWFjNmMxNGU0MDQ0Yjhj
NGU2ZTdhY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTExOCw2ICsxMTgsMTAgQEAgc3RydWN0IFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgYm9vbCBpY29uRGF0YWJhc2VFbmFibGVkOwog
CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgYm9vbCBkaXNrSW1hZ2VDYWNoZUVu
YWJsZWQ7CisjZW5kaWYKKwogICAgIGRvdWJsZSB0ZXJtaW5hdGlvblRpbWVvdXQ7CiAKICAgICBW
ZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCmluZGV4IDE0YThjNzM3NGRjMTA3MjNlM2E1YTI4
OThmZTllMjRhODI3NzcxN2YuLjU0YTJjNGI1ODY1NzhmOGZiNTZiOWJmYzJkM2QzNzdkMzBiN2Qx
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bv
b2xHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bv
b2xHdGsuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYKICAg
ICAgICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24tPmRp
c2tDYWNoZURpcmVjdG9yeSgpOwogICAgIH0KIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hF
KQorICAgIC8vIFRPRE86IHJlYWQgdmFsdWUgZnJvbSBjb25maWcKKyAgICBwYXJhbWV0ZXJzLmRp
c2tJbWFnZUNhY2hlRW5hYmxlZCA9IHRydWU7CisjZW5kaWYKICAgICBwYXJhbWV0ZXJzLm1lbW9y
eUNhY2hlRGlzYWJsZWQgPSBtX21lbW9yeUNhY2hlRGlzYWJsZWQgfHwgY2FjaGVNb2RlbCgpID09
IENhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggNTg3ZTcxZGI3OWNiMDdmOGZiZWRkMzBjOTE2MzVhYzhkOGZk
MGQ0Yi4uMzU1MDBjY2Q2MTI4M2FhOWM0ODI2Yzg5NzcyNzUyZDFhNDM2OTk1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXIuaCIKKyNpbmNsdWRlICJE
aXNrSW1hZ2VDYWNoZS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCiAjaW5jbHVkZSAiRXZl
bnREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKQEAgLTI5Nyw2ICsy
OTgsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBtX2ljb25EYXRhYmFzZVByb3h5
LT5zZXRFbmFibGVkKHBhcmFtZXRlcnMuaWNvbkRhdGFiYXNlRW5hYmxlZCk7CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGRpc2tJbWFnZUNhY2hlKCkuc2V0RW5h
YmxlZChwYXJhbWV0ZXJzLmRpc2tJbWFnZUNhY2hlRW5hYmxlZCk7CisjZW5kaWYKKwogICAgIGlm
ICghcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAg
ICAgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNpbmdsZXRvbigpLnNldENhY2hlRGlyZWN0b3J5
KHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21h
a2UKaW5kZXggMWM4NzVhODA3MDU5MzA4MGFiODE1YzI1Y2QwNDFjNjVkOGZkNTE2OS4uYzhhOGU2
ODZjOTlhY2JjNmEzNDVkOTk3MDY5NjFjMDQzZmUzMWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL2Nt
YWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UK
QEAgLTE1NSw2ICsxNTUsNyBAQCBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQgUFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIgUFJJVkFURSBPRkYpCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfREFUQUJBU0VfUFJPQ0VTUyBQ
UklWQVRFIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RBVEFM
SVNUX0VMRU1FTlQgUFJJVkFURSBPRkYpCitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxV
RShFTkFCTEVfRElTS19JTUFHRV9DQUNIRSBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9ET1dOTE9BRF9BVFRSSUJVVEUgUFJJVkFURSBPRkYpCiBX
RUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRU5DUllQVEVEX01FRElBIFBS
SVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQV9WMiBQUklWQVRFIE9GRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJL
aXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRl
eCBmMjBkZjZiODM0NzRmMTk1MDRmZTM3ZTQzNzMyYjNlZmM4ODQyOTgyLi43Nzg3ZDY5NGM1YWE0
NWYyN2YxNzg4OGY1ODhiMGNlYzlhYTZhYjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2Vi
S2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtl
CkBAIC02Nyw2ICs2Nyw3IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCAiVG9nZ2xlIEhUTUw1IGRldGFp
bHMgc3VwcG9ydCIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
REVWSUNFX09SSUVOVEFUSU9OICJUb2dnbGUgRGV2aWNlT3JpZW50YXRpb24gc3VwcG9ydCIgUFJJ
VkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0RGR19KSVQgIlRvZ2ds
ZSBkYXRhIGZsb3cgZ3JhcGggSklUIHRpZXIiIFBSSVZBVEUgT04pCisgICAgV0VCS0lUX09QVElP
Tl9ERUZJTkUoRU5BQkxFX0RJU0tfSU1BR0VfQ0FDSEUgIlRvZ2dsZSBkaXNrIGltYWdlIGNhY2hl
IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9E
T000X0VWRU5UU19DT05TVFJVQ1RPUiAiVG9nZ2xlIERPTTQgRXZlbnRzIGNvbnN0cnVjdG9ycyIg
UFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0RPV05MT0FEX0FU
VFJJQlVURSAiVG9nZ2xlIGRvd25sb2FkIGF0dHJpYnV0ZSBzdXBwb3J0IiBQUklWQVRFIE9GRikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRFJBR19TVVBQT1JUICJUb2dnbGUgRHJh
ZyBTdXBwb3J0IiBQUklWQVRFIE9GRikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA5ZTJlZGRhNDQ3ODYzZTExZWFjNzk5ZGUxN2NkNzBlMTA5ODcy
Y2U0Li5iOGZkNTU1YWQyOTI2OWQ5MDRjMWE5OGRhYWFjYzBiMzExZjVjMWM5IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTUtMDgtMTQgIEFuZHJlIE1vcmVpcmEgTWFnYWxoYWVzICAgPGFuZHJlLm1hZ2FsaGFlc0Bj
b2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgW0dUS10gUmUtYWRkIERpc2tJbWFnZUNhY2hlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgwMjgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IHBhcnRpYWxseSByZXZlcnRzIHIxNzMyNjUgYW5kIGluY2x1ZGVzIGNyb3NzLXBsYXRmb3JtIHN1
cHBvcnQgYmFzZWQgb24gcGF0Y2ggZnJvbQorICAgICAgICBidWcgIzEyNDE2NyAodmlhIFBPU0lY
IGltcGwsIGFsdGhvdWdoIG9ubHkgR1RLIHN1cHBvcnQgaXMgZW5hYmxlZCksIGFwYXJ0IGZyb20g
Zm9sbG93aW5nCisgICAgICAgIGZlYXR1cmVzOgorCisgICAgICAgIC0gUG9ydGVkIGNoYW5nZXMg
dG8gbGF0ZXN0IHVwc3RyZWFtIG1hc3Rlci4KKyAgICAgICAgLSBSZW1vdmUgRUZML2lPUyBzdXBw
b3J0IGFuZCBlbmFibGUgR1RLIHN1cHBvcnQgb25seS4KKyAgICAgICAgLSBQb3J0IHRvIHdrMiBh
bmQgZHJvcCB3azEgc3VwcG9ydC4KKyAgICAgICAgLSBJbnRlZ3JhdGUgd2l0aCBjbWFrZS4KKyAg
ICAgICAgLSBQb3J0IEltYWdlRGVjb2RlciBpbXByb3ZlbWVudHMgcmVxdWlyZWQgYnkgdGhpcyBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLSBNZXJnZSBSZXNvdXJjZUJ1ZmZlciBjaGFuZ2VzIHRv
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlz
dC5wbToKKwogMjAxNS0wNy0zMSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtFRkxdIEZpeCBwaXhtYW4gYnVpbGQgb24gQVJNIHdpdGggR0NDIDQuOS4z
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0gYi9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggYzQ0OTA0N2NmYjc5
Mjk2Yzc4MzE5OTc3ZDAxMGM5N2NmNjFjMTFhMC4uMjkzZDA1NTAxOTlmOTQwNjI4MzUxNGViNzli
NzcxNWRjY2FhNTYyNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1
cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQpA
QCAtNzEsNiArNzEsNyBAQCBteSAoCiAgICAgJGRldGFpbHNFbGVtZW50U3VwcG9ydCwKICAgICAk
ZGV2aWNlT3JpZW50YXRpb25TdXBwb3J0LAogICAgICRkaXJlY3RvcnlVcGxvYWRTdXBwb3J0LAor
ICAgICRkaXNrSW1hZ2VDYWNoZSwKICAgICAkZG9tNEV2ZW50c0NvbnN0cnVjdG9yLAogICAgICRk
b3dubG9hZEF0dHJpYnV0ZVN1cHBvcnQsCiAgICAgJGZvbnRMb2FkRXZlbnRzU3VwcG9ydCwKQEAg
LTIzNiw2ICsyMzcsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gImRldmlj
ZS1vcmllbnRhdGlvbiIsIGRlc2MgPT4gIlRvZ2dsZSBEZXZpY2UgT3JpZW50YXRpb24gc3VwcG9y
dCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04iLCBkZWZhdWx0
ID0+IGlzSU9TV2ViS2l0KCksIHZhbHVlID0+IFwkZGV2aWNlT3JpZW50YXRpb25TdXBwb3J0IH0s
CiAKKyAgICB7IG9wdGlvbiA9PiAiZGlzay1pbWFnZS1jYWNoZSIsIGRlc2MgPT4gIlRvZ2dsZSBE
aXNrIEltYWdlIENhY2hlIHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRElTS19J
TUFHRV9DQUNIRSIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRkaXNrSW1hZ2VDYWNoZSB9LAor
CiAgICAgeyBvcHRpb24gPT4gImRvbTQtZXZlbnRzLWNvbnN0cnVjdG9yIiwgZGVzYyA9PiAiRXhw
b3NlIERPTTQgRXZlbnRzIGNvbnN0cnVjdG9ycyIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9E
T000X0VWRU5UU19DT05TVFJVQ1RPUiIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8fCBp
c0d0aygpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJGRvbTRFdmVudHNDb25zdHJ1Y3RvciB9LAog
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZThkYzJiMDY4NWJkYWRh
YWE2ZjViMmExZDRmN2E4YTI2ODc5MjZiYS4uZTczY2Q2ZTYwMzgyODBlMWNmODMzZjM1YWY1MzFh
ZTU2ZmRmNDIzNSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDE1LTA4LTE0ICBBbmRyZSBNb3JlaXJhIE1hZ2FsaGFlcyAgIDxhbmRyZS5t
YWdhbGhhZXNAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFtHVEtdIFJlLWFkZCBEaXNrSW1h
Z2VDYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ4MDI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBwYXJ0aWFsbHkgcmV2ZXJ0cyByMTczMjY1IGFuZCBpbmNsdWRlcyBjcm9zcy1w
bGF0Zm9ybSBzdXBwb3J0IGJhc2VkIG9uIHBhdGNoIGZyb20KKyAgICAgICAgYnVnICMxMjQxNjcg
KHZpYSBQT1NJWCBpbXBsLCBhbHRob3VnaCBvbmx5IEdUSyBzdXBwb3J0IGlzIGVuYWJsZWQpLCBh
cGFydCBmcm9tIGZvbGxvd2luZworICAgICAgICBmZWF0dXJlczoKKworICAgICAgICAtIFBvcnRl
ZCBjaGFuZ2VzIHRvIGxhdGVzdCB1cHN0cmVhbSBtYXN0ZXIuCisgICAgICAgIC0gUmVtb3ZlIEVG
TC9pT1Mgc3VwcG9ydCBhbmQgZW5hYmxlIEdUSyBzdXBwb3J0IG9ubHkuCisgICAgICAgIC0gUG9y
dCB0byB3azIgYW5kIGRyb3Agd2sxIHN1cHBvcnQuCisgICAgICAgIC0gSW50ZWdyYXRlIHdpdGgg
Y21ha2UuCisgICAgICAgIC0gUG9ydCBJbWFnZURlY29kZXIgaW1wcm92ZW1lbnRzIHJlcXVpcmVk
IGJ5IHRoaXMgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC0gTWVyZ2UgUmVzb3VyY2VCdWZmZXIg
Y2hhbmdlcyB0byBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9u
c0dUSy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2U6
CisgICAgICAgIEFkZCBvcHRpb24gdG8gZW5hYmxlIERpc2tJbWFnZUNhY2hlIGZlYXR1cmUgZm9y
IEdUSyBidWlsZHMuCisKIDIwMTUtMDctMzAgIEpvb25naHVuIFBhcmsgIDxqaDcxOC5wYXJrQHNh
bXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEVuYWJsZSBJbmRleGVkREIgYmFzZWQgb24gRGF0
YWJhc2VQcm9jZXNzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259009</attachid>
            <date>2015-08-14 11:20:51 -0700</date>
            <delta_ts>2015-08-14 12:20:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148028-20150814152027.patch</filename>
            <type>text/plain</type>
            <size>100036</size>
            <attacher name="Andre Moreira Magalhaes">andrunko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI2MTAxYzJlOWViOGEwMzIyZDE0Y2Qx
YTNjY2ZmOWNiZjMyNzY0YjYuLmNmYTc2Y2ViZjZkYmJjNTVkODZhNzdiMWM1MDI4ODNlOWRjZTg5
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDgtMTQgIEFuZHJlIE1vcmVpcmEgTWFnYWxo
YWVzICAgPGFuZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgW0dUS10g
UmUtYWRkIERpc2tJbWFnZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIHBhcnRpYWxseSByZXZlcnRzIHIxNzMyNjUgYW5kIGlu
Y2x1ZGVzIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQgYmFzZWQgb24gcGF0Y2ggZnJvbQorICAgICAg
ICBidWcgIzEyNDE2NyAodmlhIFBPU0lYIGltcGwsIGFsdGhvdWdoIG9ubHkgR1RLIHN1cHBvcnQg
aXMgZW5hYmxlZCksIGFwYXJ0IGZyb20gZm9sbG93aW5nCisgICAgICAgIGZlYXR1cmVzOgorCisg
ICAgICAgIC0gUG9ydGVkIGNoYW5nZXMgdG8gbGF0ZXN0IHVwc3RyZWFtIG1hc3Rlci4KKyAgICAg
ICAgLSBSZW1vdmUgRUZML2lPUyBzdXBwb3J0IGFuZCBlbmFibGUgR1RLIHN1cHBvcnQgb25seS4K
KyAgICAgICAgLSBQb3J0IHRvIHdrMiBhbmQgZHJvcCB3azEgc3VwcG9ydC4KKyAgICAgICAgLSBJ
bnRlZ3JhdGUgd2l0aCBjbWFrZS4KKyAgICAgICAgLSBQb3J0IEltYWdlRGVjb2RlciBpbXByb3Zl
bWVudHMgcmVxdWlyZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLSBNZXJnZSBS
ZXNvdXJjZUJ1ZmZlciBjaGFuZ2VzIHRvIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHd0Zi9G
ZWF0dXJlRGVmaW5lcy5oOgorCiAyMDE1LTA4LTE0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTg4NDQ0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDFkODNjZWE4ZGIwNjJjY2MxMDE3ZTgzZTg1MTY4OGUyZTViYWQ1OWEu
LjcwMDRhODhmNzFkYmMwNGVmY2Q3MTk2Yzg5ZTc4NWE2NDlhZjY0NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNjggQEAKKzIwMTUtMDgtMTQgIEFuZHJlIE1vcmVpcmEgTWFnYWxoYWVzICAgPGFu
ZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgW0dUS10gUmUtYWRkIERp
c2tJbWFnZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDgwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIHBhcnRpYWxseSByZXZlcnRzIHIxNzMyNjUgYW5kIGluY2x1ZGVzIGNy
b3NzLXBsYXRmb3JtIHN1cHBvcnQgYmFzZWQgb24gcGF0Y2ggZnJvbQorICAgICAgICBidWcgIzEy
NDE2NyAodmlhIFBPU0lYIGltcGwsIGFsdGhvdWdoIG9ubHkgR1RLIHN1cHBvcnQgaXMgZW5hYmxl
ZCksIGFwYXJ0IGZyb20gZm9sbG93aW5nCisgICAgICAgIGZlYXR1cmVzOgorCisgICAgICAgIC0g
UG9ydGVkIGNoYW5nZXMgdG8gbGF0ZXN0IHVwc3RyZWFtIG1hc3Rlci4KKyAgICAgICAgLSBSZW1v
dmUgRUZML2lPUyBzdXBwb3J0IGFuZCBlbmFibGUgR1RLIHN1cHBvcnQgb25seS4KKyAgICAgICAg
LSBQb3J0IHRvIHdrMiBhbmQgZHJvcCB3azEgc3VwcG9ydC4KKyAgICAgICAgLSBJbnRlZ3JhdGUg
d2l0aCBjbWFrZS4KKyAgICAgICAgLSBQb3J0IEltYWdlRGVjb2RlciBpbXByb3ZlbWVudHMgcmVx
dWlyZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLSBNZXJnZSBSZXNvdXJjZUJ1
ZmZlciBjaGFuZ2VzIHRvIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogSW5jbHVkZSBQT1NJWCBpbXBsZW1lbnRhdGlv
biBvZiBEaXNrSW1hZ2VDYWNoZS4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmlzRGVjb2RlZERhdGFNZW1vcnlN
YXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNhblVzZURpc2tJbWFnZUNh
Y2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1c2VEaXNrSW1hZ2VDYWNoZSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlOjppc1VzaW5nRGlza0ltYWdlQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmNhblVzZURp
c2tJbWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1c2VEaXNr
SW1hZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6aXNEZWNvZGVk
RGF0YU1lbW9yeU1hcHBlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpwcnVuZUxpdmVSZXNvdXJjZXNUb1Np
emUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmZsdXNoQ2FjaGVkSW1hZ2VzVG9E
aXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpUeXBlU3RhdGlzdGljOjphZGRS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6ZHVtcFN0YXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpkdW1wTFJVTGlzdHMpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6
OlR5cGVTdGF0aXN0aWM6OlR5cGVTdGF0aXN0aWMpOgorICAgICAgICAqIHBsYXRmb3JtL0Rpc2tJ
bWFnZUNhY2hlLmg6IEFkZGVkIC0gYmFzZWQgb24gRGlza0ltYWdlQ2FjaGUgaU9TIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjppZCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJ
bWFnZUNhY2hlOjpFbnRyeTo6aXNNYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdl
Q2FjaGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6aXNF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptYXhpbXVtQ2FjaGVTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNYXhpbXVtQ2FjaGVTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptaW5pbXVtSW1hZ2VTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNaW5pbXVtSW1hZ2VTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpjYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1h
Z2VDYWNoZTo6aXNGdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp+RGlz
a0ltYWdlQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL0Rpc2tJbWFnZUNhY2hlQ2xpZW50Lmg6
IEFkZGVkIC0gYmFzZWQgb24gRGlza0ltYWdlQ2FjaGUgaU9TIGltcGxlbWVudGF0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGVDbGllbnQ6On5EaXNrSW1hZ2VDYWNoZUNsaWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L0xvZ2dpbmcuaDogQWRkIGNhdGVnb3J5IGZvciBEaXNrSW1hZ2VDYWNoZS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp+U2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNBbGxvd2VkVG9CZU1l
bW9yeU1hcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzVXNpbmdEaXNr
SW1hZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFsbG93VG9CZU1l
bW9yeU1hcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmZhaWxlZE1lbW9y
eU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1hcmtBc01lbW9yeU1hcHBl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1lbW9yeU1hcHBlZE5vdGlmaWNh
dGlvbkNhbGxiYWNrRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1lbW9y
eU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6c2V0TWVtb3J5TWFwcGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpp
c01lbW9yeU1hcHBlZCk6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOiBJbml0aWFs
aXplIHRoZSBEaXNrSW1hZ2VDYWNoZSBtZW1iZXJzIG9uIGN1c3RvbQorICAgICAgICBjb25zdHJ1
Y3RvcnMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmlzTWVtb3J5TWFwcGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6aXNNZW1vcnlNYXBwZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUlz
TWVtb3J5TWFwcGVkQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVVc2VyQ2FjaGVEaXJlY3RvcnkpOiBHVEsrIGltcGxlbWVudGF0
aW9uIG9mIG5ldyBtZXRob2QgdXNlZCBieSB0aGUKKyAgICAgICAgRGlza0ltYWdlQ2FjaGUgdG8g
Y3JlYXRlIGEgY2FjaGUgZGlyZWN0b3J5IHRvIHNhdmUgZGF0YSBvbiBkaXNrLgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KTogZGl0dG8gYnV0IGNyZWF0ZXMgYSB0
ZW1wb3JhcnkgZGlyZWN0b3J5LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5Rmls
ZSk6IGRpdHRvIGJ1dCBjcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUuCisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDogSW1hZ2VEZWNvZGVyIGltcHJvdmVt
ZW50cyByZXF1aXJlZCBieQorICAgICAgICBEaXNrSW1hZ2VDYWNoZS4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWU6OkltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6fkltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhl
bERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2FsY3VsYXRlUmVxdWlyZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnRyeU1lbW9yeU1hcHBpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxGcmFtZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1l
Qnl0ZXNBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlSb3dOVGltZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6ZGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6c2V0RGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Z2V0
QWRkcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRSR0JBKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWU6OmlzTWVtb3J5TWFwcGVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKTogQ29uc2lkZXIgaW1hZ2UgZGVw
dGggdG8gZGVmaW5lIGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnN0cmlk
ZUZvcldpZHRoKTogTmV3IG1ldGhvZCB0byByZXRyaWV2ZSBhIHN0cmlkZSBnaXZlbiBhIGltYWdl
IGRlcHRoCisgICAgICAgIGFuZCB3aWR0aC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDogVGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gaW1h
Z2UgZGVwdGguCisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVk
Um93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1
dFNjYW5saW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHA6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWxSR0IpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWxSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBp
eGVsUHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVy
Ojpyb3dBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L0Rpc2tJbWFnZUNhY2hl
UE9TSVguY3BwOiBBZGRlZCAtIFBPU0lYIGltcGxlbWVudGF0aW9uIG9mIERpc2tJbWFnZUNhY2hl
LgorICAgICAgICAoV2ViQ29yZTo6ZGlza0ltYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1h
Z2VDYWNoZTo6RW50cnk6On5FbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNo
ZTo6RW50cnk6Om1hcEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6ZGlkRmFpbE1lbW9yeU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VD
YWNoZTo6RW50cnk6OmRpZE1hcE1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VD
YWNoZTo6RW50cnk6OnN5bmNocm9ub3VzbHlNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlza0lt
YWdlQ2FjaGU6OkVudHJ5OjptYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6
OkVudHJ5Ojp1bm1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6
OnJlbW92ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpj
bGVhckRhdGFXaXRob3V0TWFwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNo
ZTo6RW50cnk6OndyaXRlVG9GaWxlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0lt
YWdlQ2FjaGU6OkVudHJ5OjpzZXRUZW1wb3JhcnlGaWxlUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmNhbmNlbE1hcCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcFRocmVhZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkUmVtb3ZlRmlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnJlbW92ZUZpbGVUaHJlYWRTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RGlza0ltYWdlQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0ltYWdlQ2FjaGU6OnByZXBhcmVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c2tJbWFnZUNhY2hlOjpjcmVhdGVGaWxlQmFja2VkTWFwcGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNrSW1hZ2VDYWNoZTo6d3JpdGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFn
ZUNhY2hlOjp1cGRhdGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpy
ZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpkYXRhRm9ySXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6Y3JlYXRlRGlyZWN0b3J5SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6Om5leHRBdmFpbGFibGVJ
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp0ZW1wb3JhcnlGaWxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KTogUE9TSVggaW1wbGVtZW50YXRpb24gb2Yg
bmV3IG1ldGhvZCB1c2VkIGJ5IHRoZQorICAgICAgICBEaXNrSW1hZ2VDYWNoZSB0byBjcmVhdGUg
YSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgorICAgICAgICAqIHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVm
ZmVyU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cik6IEluaXRpYWxpemUgdGhlIERpc2tJbWFnZUNhY2hlIG1lbWJlcnMgb24gY3VzdG9tCisgICAg
ICAgIGNvbnN0cnVjdG9yLgorCiAyMDE1LTA4LTE0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgTWF2ZXJpY2tzIGJ1aWxkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDVhMjkwZWQ1YTBlZTY2ZTI4NGQzMTMwYjJmOWZkZGViNjJhYWZkNGYuLmFhMmUwYzA0
YTM0NWQ0MWFiODQ5OTE2OWUwMzEzZDQxZjEwM2ZlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAxNS0wOC0xNCAgQW5kcmUgTW9yZWlyYSBNYWdhbGhhZXMgICA8YW5kcmUubWFnYWxo
YWVzQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBbR1RLXSBSZS1hZGQgRGlza0ltYWdlQ2Fj
aGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODAy
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcGFydGlhbGx5IHJldmVydHMgcjE3MzI2NSBhbmQgaW5jbHVkZXMgY3Jvc3MtcGxhdGZv
cm0gc3VwcG9ydCBiYXNlZCBvbiBwYXRjaCBmcm9tCisgICAgICAgIGJ1ZyAjMTI0MTY3ICh2aWEg
UE9TSVggaW1wbCwgYWx0aG91Z2ggb25seSBHVEsgc3VwcG9ydCBpcyBlbmFibGVkKSwgYXBhcnQg
ZnJvbSBmb2xsb3dpbmcKKyAgICAgICAgZmVhdHVyZXM6CisKKyAgICAgICAgLSBQb3J0ZWQgY2hh
bmdlcyB0byBsYXRlc3QgdXBzdHJlYW0gbWFzdGVyLgorICAgICAgICAtIFJlbW92ZSBFRkwvaU9T
IHN1cHBvcnQgYW5kIGVuYWJsZSBHVEsgc3VwcG9ydCBvbmx5LgorICAgICAgICAtIFBvcnQgdG8g
d2syIGFuZCBkcm9wIHdrMSBzdXBwb3J0LgorICAgICAgICAtIEludGVncmF0ZSB3aXRoIGNtYWtl
LgorICAgICAgICAtIFBvcnQgSW1hZ2VEZWNvZGVyIGltcHJvdmVtZW50cyByZXF1aXJlZCBieSB0
aGlzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAtIE1lcmdlIFJlc291cmNlQnVmZmVyIGNoYW5n
ZXMgdG8gU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOiBBZGQgcGFyYW1ldGVyIHRvIGVuYWJsZSBEaXNrSW1hZ2VDYWNoZS4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6IFVuY29uZGl0
aW9uYWxseSBlbmFibGUKKyAgICAgICAgRGlza0ltYWdlQ2FjaGUgZm9yIEdUSyBpZiBlbmFibGVk
IGF0IGJ1aWxkIHRpbWUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDogRW5h
YmxlIERpc2tJbWFnZUNhY2hlIGJhc2VkIG9uIHBhcmFtZXRlcnMgcmVjZWl2ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAxNS0wOC0x
NCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVj
dWxhdGl2ZSBmaXggZm9yIGlPUyBidWlsZCBmYWlsdXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgK
aW5kZXggZThlZDhjZjUzZGIwY2NlNjY3N2JhZDViNmNiNmJkZjgzODhjMjVlYS4uNDAzZTI5YTU1
ZTVkYzg2YzJkYTJhZjliNGFiZjUyYzA3ZDkxMjEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5o
CkBAIC03NCw2ICs3NCwxMCBAQAogI2RlZmluZSBFTkFCTEVfQ1VSU09SX1NVUFBPUlQgMAogI2Vu
ZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfRElTS19JTUFHRV9DQUNIRSkKKyNkZWZpbmUgRU5B
QkxFX0RJU0tfSU1BR0VfQ0FDSEUgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfRFJB
R19TVVBQT1JUKQogI2RlZmluZSBFTkFCTEVfRFJBR19TVVBQT1JUIDAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCAyZTlkYWE5NmJlZjg3OGIwMmExZTNjMjU2ZTUyYzIxNzFi
YmI2NTc2Li5mMTQyNGFhOTM0M2UxYjJiNjMwY2MxYjVjMzU2ZDJkY2I5ZWNhNDU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTg4LDYgKzE4OCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9TeW5jaHJvbm91c0xvYWRlckNs
aWVudFNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0
R2VuZXJpYy5jcHAKIAorICAgIHBsYXRmb3JtL3Bvc2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3Bw
CisKICAgICBwbGF0Zm9ybS9zb3VwL1B1YmxpY1N1ZmZpeFNvdXAuY3BwCiAgICAgcGxhdGZvcm0v
c291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAogICAgIHBsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGRmMzM2
NzVjNjNiNWRiNGFmMDNlMzI5MzdjOTFhOWQ3MzQwNGE3MGEuLmJjMWEyNDVmZTNhYzZlMDc3NzIw
YWIzYzdhOGJmZWFhOWFhNTZiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNl
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXIuaCIKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC00NTQsNiArNDU1LDEzIEBAIHZvaWQgQ2FjaGVkSW1h
Z2U6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAg
ICAgQ2FjaGVkUmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwogfQogCisjaWYg
RU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCitib29sIENhY2hlZEltYWdlOjppc0RlY29kZWREYXRh
TWVtb3J5TWFwcGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbWFnZS0+aXNNZW1vcnlNYXBw
ZWQoKTsKK30KKyNlbmRpZgorCiB2b2lkIENhY2hlZEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEo
KQogewogICAgIGJvb2wgY2FuRGVsZXRlSW1hZ2UgPSAhbV9pbWFnZSB8fCAobV9pbWFnZS0+aGFz
T25lUmVmKCkgJiYgbV9pbWFnZS0+aXNCaXRtYXBJbWFnZSgpKTsKQEAgLTUwNiw2ICs1MTQsNDAg
QEAgYm9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyKQogICAgIHJldHVybiBpbWFnZS0+Y3VycmVudEZyYW1lS25v
d25Ub0JlT3BhcXVlKCk7CiB9CiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKK2Jvb2wg
Q2FjaGVkSW1hZ2U6OmNhblVzZURpc2tJbWFnZUNhY2hlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNM
b2FkaW5nKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIW1fZGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fZGF0YS0+
c2l6ZSgpIDwgZGlza0ltYWdlQ2FjaGUoKS5taW5pbXVtSW1hZ2VTaXplKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vICJDYWNoZS1Db250cm9sOiBuby1zdG9yZSIgcmVzb3VyY2Vz
IG1heSBiZSBtYXJrZWQgYXMgc3VjaCBiZWNhdXNlIHRoZXkgbWF5CisgICAgLy8gY29udGFpbiBz
ZW5zaXRpdmUgaW5mb3JtYXRpb24uIFdlIHNob3VsZCBub3Qgd3JpdGUgdGhlc2UgcmVzb3VyY2Vz
IHRvIGRpc2suCisgICAgaWYgKG1fcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3Jl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRlc3Rpbmcgc2hvd3MgdGhhdCBQ
REYgaW1hZ2VzIGRpZCBub3Qgd29yayB3aGVuIG1lbW9yeSBtYXBwZWQuCisgICAgLy8gSG93ZXZl
ciwgU1ZHIGltYWdlcyBhbmQgQml0bWFwIGltYWdlcyB3ZXJlIGZpbmUuIFNlZToKKyAgICAvLyA8
cmRhcjovL3Byb2JsZW0vODU5MTgzND4gRGlzayBJbWFnZSBDYWNoZSBzaG91bGQgc3VwcG9ydCBQ
REYgSW1hZ2VzCisgICAgaWYgKG1fcmVzcG9uc2UubWltZVR5cGUoKSA9PSAiYXBwbGljYXRpb24v
cGRmIikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgQ2FjaGVkSW1hZ2U6OnVzZURpc2tJbWFnZUNhY2hlKCkKK3sKKyAgICBBU1NFUlQoY2FuVXNl
RGlza0ltYWdlQ2FjaGUoKSk7CisgICAgQVNTRVJUKCFpc1VzaW5nRGlza0ltYWdlQ2FjaGUoKSk7
CisgICAgbV9kYXRhLT5hbGxvd1RvQmVNZW1vcnlNYXBwZWQoKTsKK30KKyNlbmRpZgorCiBib29s
IENhY2hlZEltYWdlOjppc09yaWdpbkNsZWFuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
bikKIHsKICAgICBpZiAoIWltYWdlKCktPmhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDg4NTkyNTIzMmI2M2Fi
NTkwZDQzODZkY2MyY2VmNjI2NThiZDI4NDMuLmE1NDZhZDhlYzdlZjE3MWQ3NmNiNGQzMTM1NTE4
NWE0Y2I5NTI1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CkBAIC04Nyw2ICs4NywxMiBAQCBwdWJsaWM6CiAgICAgUmV2YWxpZGF0aW9uRGVjaXNpb24gbWFr
ZVJldmFsaWRhdGlvbkRlY2lzaW9uKENhY2hlUG9saWN5KSBjb25zdCBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291cmNlTG9h
ZGVyT3B0aW9ucyYpIG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisg
ICAgdmlydHVhbCBib29sIGNhblVzZURpc2tJbWFnZUNhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHVzZURpc2tJbWFnZUNhY2hlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBib29sIGlzRGVjb2RlZERhdGFNZW1vcnlNYXBwZWQoKSBjb25zdCBvdmVycmlkZTsKKyNlbmRp
ZgorCiAgICAgYm9vbCBpc09yaWdpbkNsZWFuKFNlY3VyaXR5T3JpZ2luKik7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRl
eCBkYTQ0Y2M4M2ZlYzQwMGJiODBhMzAwMzI0YTZlMDNmNjUzNjZkY2M2Li45NTE1ZjkyM2FkYTQ3
NDgzNDVhNGYyMzAwODRiOTA3OGQ3ZDE1YTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTc3Niw4ICs3NzYsMTQgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQogICAgIG1fcmVzb3VyY2UuZGlkQWRk
Q2xpZW50KCZtX2NsaWVudCk7CiB9CiAKLSNpZiBVU0UoRk9VTkRBVElPTikgfHwgVVNFKFNPVVAp
CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCitib29sIENhY2hlZFJlc291cmNlOjppc1Vz
aW5nRGlza0ltYWdlQ2FjaGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2RhdGEgJiYgbV9kYXRh
LT5pc1VzaW5nRGlza0ltYWdlQ2FjaGUoKTsKK30KKyNlbmRpZgogCisjaWYgVVNFKEZPVU5EQVRJ
T04pIHx8IFVTRShTT1VQKQogdm9pZCBDYWNoZWRSZXNvdXJjZTo6dHJ5UmVwbGFjZUVuY29kZWRE
YXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAgIGlmICghbV9kYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCBiN2JmYTcxNzE5
MDQ4MTllMzI1YjM4Nzk4ZjEyYWNjNTFhOGUzMjcwLi5hOWJhNTNhNDViZDllYTY0MmVkMDZlMzBi
YWVlNmExYzFiY2JmNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaApAQCAtMjUyLDYgKzI1MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMb2Fk
RmluaXNoVGltZShkb3VibGUgZmluaXNoVGltZSkgeyBtX2xvYWRGaW5pc2hUaW1lID0gZmluaXNo
VGltZTsgfQogICAgIGRvdWJsZSBsb2FkRmluaXNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9h
ZEZpbmlzaFRpbWU7IH0KIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGJvb2wg
aXNVc2luZ0Rpc2tJbWFnZUNhY2hlKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblVzZURp
c2tJbWFnZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dXNlRGlza0ltYWdlQ2FjaGUoKSB7IEFTU0VSVChjYW5Vc2VEaXNrSW1hZ2VDYWNoZSgpKTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0RlY29kZWREYXRhTWVtb3J5TWFwcGVkKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH07CisjZW5kaWYKKwogI2lmIFVTRShGT1VOREFUSU9OKSB8fCBVU0UoU09VUCkK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VFbmNvZGVkRGF0YShTaGFyZWRCdWZm
ZXImKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5j
cHAKaW5kZXggNmZiOWU3MzY1YWM2NzZiYjUwODUwNWIxNmI4ZDQ4NzQzYTgyYzNlNS4uOGRjNGZj
OTdiZGYzMjQxMDZmMTcxNDAxM2NiMThhNDVkYTUzMWE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
Q2FjaGVkSW1hZ2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgpAQCAtNTAsNiArNTEsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQgY0RlZmF1bHRDYWNoZUNhcGFjaXR5ID0gODE5MiAqIDEw
MjQ7CiBzdGF0aWMgY29uc3QgZG91YmxlIGNNaW5EZWxheUJlZm9yZUxpdmVEZWNvZGVkUHJ1bmUg
PSAxOyAvLyBTZWNvbmRzLgorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorc3RhdGljIGNv
bnN0IGRvdWJsZSBjTWF4RGVsYXlCZWZvcmVMaXZlRGVjb2RlZFBydW5lID0gMTA7IC8vIFNlY29u
ZHMuCisjZW5kaWYKIHN0YXRpYyBjb25zdCBmbG9hdCBjVGFyZ2V0UHJ1bmVQZXJjZW50YWdlID0g
Ljk1ZjsgLy8gUGVyY2VudGFnZSBvZiBjYXBhY2l0eSB0b3dhcmQgd2hpY2ggd2UgcHJ1bmUsIHRv
IGF2b2lkIGltbWVkaWF0ZWx5IHBydW5pbmcgYWdhaW4uCiBzdGF0aWMgY29uc3QgYXV0byBkZWZh
dWx0RGVjb2RlZERhdGFEZWxldGlvbkludGVydmFsID0gc3RkOjpjaHJvbm86OnNlY29uZHMgeyAw
IH07CiAKQEAgLTMxNyw5ICszMjEsMTggQEAgdm9pZCBNZW1vcnlDYWNoZTo6cHJ1bmVMaXZlUmVz
b3VyY2VzVG9TaXplKHVuc2lnbmVkIHRhcmdldFNpemUsIGJvb2wgc2hvdWxkRGVzdHIKICAgICAg
ICAgICAgIGlmIChjdXJyZW50LT5kZWNvZGVkRGF0YUlzUHVyZ2VhYmxlKCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAgICAg
ICAgIC8vIFRocm93aW5nIGF3YXkgcmVzb3VyY2VzIGNhY2hlZCBpbiB0aGUgZGlzayBpbWFnZSBj
YWNoZSBkb2VzIG5vCisgICAgICAgICAgICAvLyBnb29kIGZvciBtZW1vcnkgY29uc3VtcHRpb24s
IHNvIHN0aWNrIHRvIHRoZW0uIFVubGVzcyB0aGUgY2FjaGUgaXMgZnVsbCwKKyAgICAgICAgICAg
IC8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byB0aHJvdyBhd2F5IGl0ZW1zIHRoYXQgaGF2ZSBu
b3QgYmVlbiBhY2Nlc3NlZAorICAgICAgICAgICAgLy8gZm9yIGEgd2hpbGUsIHRvIGdpdmUgcm9v
bSBmb3Igb3RoZXJzLgorICAgICAgICAgICAgaWYgKCFjdXJyZW50LT5pc0RlY29kZWREYXRhTWVt
b3J5TWFwcGVkKCkgfHwgKGRpc2tJbWFnZUNhY2hlKCkuaXNGdWxsKCkgJiYgZWxhcHNlZFRpbWUg
Pj0gY01heERlbGF5QmVmb3JlTGl2ZURlY29kZWRQcnVuZSkpCisgICAgICAgICAgICAgICAgY3Vy
cmVudC0+ZGVzdHJveURlY29kZWREYXRhKCk7CisjZWxzZQogICAgICAgICAgICAgLy8gRGVzdHJv
eSBvdXIgZGVjb2RlZCBkYXRhLiBUaGlzIHdpbGwgcmVtb3ZlIHVzIGZyb20gbV9saXZlRGVjb2Rl
ZFJlc291cmNlcywgYW5kIHBvc3NpYmx5IG1vdmUgdXMKICAgICAgICAgICAgIC8vIHRvIGEgZGlm
ZmVyZW50IExSVSBsaXN0IGluIG1fYWxsUmVzb3VyY2VzLgogICAgICAgICAgICAgY3VycmVudC0+
ZGVzdHJveURlY29kZWREYXRhKCk7CisjZW5kaWYKIAogICAgICAgICAgICAgaWYgKHRhcmdldFNp
emUgJiYgbV9saXZlU2l6ZSA8PSB0YXJnZXRTaXplKQogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTQwOCw2ICs0MjEsNTAgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2Vz
VG9TaXplKHVuc2lnbmVkIHRhcmdldFNpemUpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKERJU0tf
SU1BR0VfQ0FDSEUpCit2b2lkIE1lbW9yeUNhY2hlOjpmbHVzaENhY2hlZEltYWdlc1RvRGlzaygp
Cit7CisgICAgaWYgKCFkaXNrSW1hZ2VDYWNoZSgpLmlzRW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisKKyNpZm5kZWYgTkRFQlVHCisgICAgZG91YmxlIHN0YXJ0ID0gV1RGOjpjdXJyZW50VGlt
ZU1TKCk7CisgICAgdW5zaWduZWQgcmVzb3VyY2VDb3VudCA9IDA7CisgICAgdW5zaWduZWQgY2Fj
aGVkU2l6ZSA9IDA7CisjZW5kaWYKKworICAgIGZvciAoaW50IGkgPSBtX2FsbFJlc291cmNlcy5z
aXplKCkgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICBMUlVMaXN0JiBsaXN0ID0gKm1fYWxs
UmVzb3VyY2VzW2ldOworCisgICAgICAgIGF1dG8gaXQgPSBsaXN0LmJlZ2luKCk7CisgICAgICAg
IHdoaWxlIChpdCAhPSBsaXN0LmVuZCgpKSB7CisgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSYg
Y3VycmVudCA9ICoqaXQ7CisKKyAgICAgICAgICAgIC8vIEluY3JlbWVudCB0aGUgaXRlcmF0b3Ig
bm93IGFzIHRoZSBjYWxsIHRvIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGJlbG93IG1heQorICAgICAg
ICAgICAgLy8gaW52YWxpZGF0ZSB0aGUgY3VycmVudCBpdGVyYXRvci4KKyAgICAgICAgICAgICsr
aXQ7CisKKyAgICAgICAgICAgIC8vIFByb3RlY3QgJ25leHQnIHNvIGl0IGNhbid0IGdldCBkZWxl
dGVkIGR1cmluZyBkZXN0cm95RGVjb2RlZERhdGEoKS4KKyAgICAgICAgICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBuZXh0ID0gaXQgIT0gbGlzdC5lbmQoKSA/ICppdCA6
IG51bGxwdHI7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnQuaXNVc2luZ0Rpc2tJbWFnZUNhY2hl
KCkgJiYgY3VycmVudC5jYW5Vc2VEaXNrSW1hZ2VDYWNoZSgpKSB7CisgICAgICAgICAgICAgICAg
Y3VycmVudC51c2VEaXNrSW1hZ2VDYWNoZSgpOworICAgICAgICAgICAgICAgIGN1cnJlbnQuZGVz
dHJveURlY29kZWREYXRhKCk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAgICAgICAgIExPRyhE
aXNrSW1hZ2VDYWNoZSwgIkNhY2hlOjpkaXNrQ2FjaGVSZXNvdXJjZXMoKTogYXR0ZW1wdGluZyB0
byBzYXZlICglZCkgYnl0ZXMiLCBjdXJyZW50LnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgKytyZXNvdXJjZUNvdW50OworICAgICAgICAgICAgICAgIGNhY2hlZFNp
emUgKz0gY3VycmVudC5yZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCk7CisjZW5kaWYKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBkb3VibGUgZW5k
ID0gV1RGOjpjdXJyZW50VGltZU1TKCk7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0lt
YWdlQ2FjaGU6IHRvb2sgKCVmKSBtcyB0byBjYWNoZSAoJWQpIGJ5dGVzIGZvciAoJWQpIHJlc291
cmNlcyIsIGVuZCAtIHN0YXJ0LCBjYWNoZWRTaXplLCByZXNvdXJjZUNvdW50KTsKKyNlbmRpZgor
fQorI2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorCiB2b2lkIE1lbW9yeUNhY2hl
OjpzZXRDYXBhY2l0aWVzKHVuc2lnbmVkIG1pbkRlYWRCeXRlcywgdW5zaWduZWQgbWF4RGVhZEJ5
dGVzLCB1bnNpZ25lZCB0b3RhbEJ5dGVzKQogewogICAgIEFTU0VSVChtaW5EZWFkQnl0ZXMgPD0g
bWF4RGVhZEJ5dGVzKTsKQEAgLTY3MCw2ICs3MjcsMTAgQEAgdm9pZCBNZW1vcnlDYWNoZTo6VHlw
ZVN0YXRpc3RpYzo6YWRkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIHNp
emUgKz0gcmVzb3VyY2Uuc2l6ZSgpOwogICAgIGxpdmVTaXplICs9IHJlc291cmNlLmhhc0NsaWVu
dHMoKSA/IHJlc291cmNlLnNpemUoKSA6IDA7CiAgICAgZGVjb2RlZFNpemUgKz0gcmVzb3VyY2Uu
ZGVjb2RlZFNpemUoKTsKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAvLyBPbmx5
IHRoZSBkYXRhIGluc2lkZSB0aGUgcmVzb3VyY2Ugd2FzIG1hcHBlZCwgbm90IHRoZSBlbnRpcmUg
cmVzb3VyY2UuCisgICAgbWFwcGVkU2l6ZSArPSByZXNvdXJjZS5pc1VzaW5nRGlza0ltYWdlQ2Fj
aGUoKSA/IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCktPnNpemUoKSA6IDA7CisjZW5kaWYKIH0K
IAogTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3MgTWVtb3J5Q2FjaGU6OmdldFN0YXRpc3RpY3MoKQpA
QCAtNzcyLDkgKzgzMywxNSBAQCB2b2lkIE1lbW9yeUNhY2hlOjpwcnVuZVNvb24oKQogdm9pZCBN
ZW1vcnlDYWNoZTo6ZHVtcFN0YXRzKCkKIHsKICAgICBTdGF0aXN0aWNzIHMgPSBnZXRTdGF0aXN0
aWNzKCk7CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgcHJpbnRmKCIlLTEzcyAl
LTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzc1xuIiwgIiIsICJDb3VudCIsICJTaXpl
IiwgIkxpdmVTaXplIiwgIkRlY29kZWRTaXplIiwgIk1hcHBlZCIsICJcIlJlYWxcIiIpOworICAg
IHByaW50ZigiJS0xM3MgJS0xM3MgJS0xM3MgJS0xM3MgJS0xM3MgJS0xM3MgJS0xM3NcbiIsICIt
LS0tLS0tLS0tLS0tIiwgIi0tLS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0t
LS0tLS0tIiwgIi0tLS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0t
Iik7CisgICAgcHJpbnRmKCIlLTEzcyAlMTNkICUxM2QgJTEzZCAlMTNkICUxM2QgJTEzZFxuIiwg
IkltYWdlcyIsIHMuaW1hZ2VzLmNvdW50LCBzLmltYWdlcy5zaXplLCBzLmltYWdlcy5saXZlU2l6
ZSwgcy5pbWFnZXMuZGVjb2RlZFNpemUsIHMuaW1hZ2VzLm1hcHBlZFNpemUsIHMuaW1hZ2VzLnNp
emUgLSBzLmltYWdlcy5tYXBwZWRTaXplKTsKKyNlbHNlCiAgICAgcHJpbnRmKCIlLTEzcyAlLTEz
cyAlLTEzcyAlLTEzcyAlLTEzc1xuIiwgIiIsICJDb3VudCIsICJTaXplIiwgIkxpdmVTaXplIiwg
IkRlY29kZWRTaXplIik7CiAgICAgcHJpbnRmKCIlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEz
c1xuIiwgIi0tLS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwg
Ii0tLS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIpOwogICAgIHByaW50ZigiJS0xM3MgJTEz
ZCAlMTNkICUxM2QgJTEzZFxuIiwgIkltYWdlcyIsIHMuaW1hZ2VzLmNvdW50LCBzLmltYWdlcy5z
aXplLCBzLmltYWdlcy5saXZlU2l6ZSwgcy5pbWFnZXMuZGVjb2RlZFNpemUpOworI2VuZGlmCiAg
ICAgcHJpbnRmKCIlLTEzcyAlMTNkICUxM2QgJTEzZCAlMTNkXG4iLCAiQ1NTIiwgcy5jc3NTdHls
ZVNoZWV0cy5jb3VudCwgcy5jc3NTdHlsZVNoZWV0cy5zaXplLCBzLmNzc1N0eWxlU2hlZXRzLmxp
dmVTaXplLCBzLmNzc1N0eWxlU2hlZXRzLmRlY29kZWRTaXplKTsKICNpZiBFTkFCTEUoWFNMVCkK
ICAgICBwcmludGYoIiUtMTNzICUxM2QgJTEzZCAlMTNkICUxM2RcbiIsICJYU0wiLCBzLnhzbFN0
eWxlU2hlZXRzLmNvdW50LCBzLnhzbFN0eWxlU2hlZXRzLnNpemUsIHMueHNsU3R5bGVTaGVldHMu
bGl2ZVNpemUsIHMueHNsU3R5bGVTaGVldHMuZGVjb2RlZFNpemUpOwpAQCAtNzg2LDE0ICs4NTMs
MjIgQEAgdm9pZCBNZW1vcnlDYWNoZTo6ZHVtcFN0YXRzKCkKIAogdm9pZCBNZW1vcnlDYWNoZTo6
ZHVtcExSVUxpc3RzKGJvb2wgaW5jbHVkZUxpdmUpIGNvbnN0CiB7CisjaWYgRU5BQkxFKERJU0tf
SU1BR0VfQ0FDSEUpCisgICAgcHJpbnRmKCJMUlUtU1AgbGlzdHMgaW4gZXZpY3Rpb24gb3JkZXIg
KEtpbG9ieXRlcyBkZWNvZGVkLCBLaWxvYnl0ZXMgZW5jb2RlZCwgQWNjZXNzIGNvdW50LCBSZWZl
cmVuY2VkLCBpc01lbW9yeU1hcHBlZCk6XG4iKTsKKyNlbHNlCiAgICAgcHJpbnRmKCJMUlUtU1Ag
bGlzdHMgaW4gZXZpY3Rpb24gb3JkZXIgKEtpbG9ieXRlcyBkZWNvZGVkLCBLaWxvYnl0ZXMgZW5j
b2RlZCwgQWNjZXNzIGNvdW50LCBSZWZlcmVuY2VkKTpcbiIpOworI2VuZGlmCiAKICAgICBpbnQg
c2l6ZSA9IG1fYWxsUmVzb3VyY2VzLnNpemUoKTsKICAgICBmb3IgKGludCBpID0gc2l6ZSAtIDE7
IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgIHByaW50ZigiXG5cbkxpc3QgJWQ6ICIsIGkpOwogICAg
ICAgICBmb3IgKGF1dG8qIHJlc291cmNlIDogKm1fYWxsUmVzb3VyY2VzW2ldKSB7CiAgICAgICAg
ICAgICBpZiAoaW5jbHVkZUxpdmUgfHwgIXJlc291cmNlLT5oYXNDbGllbnRzKCkpCisjaWYgRU5B
QkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgICAgICAgICAgICAgcHJpbnRmKCIoJS4xZkssICUu
MWZLLCAldUEsICVkUiwgJWQpOyAiLCByZXNvdXJjZS0+ZGVjb2RlZFNpemUoKSAvIDEwMjQuMGYs
IChyZXNvdXJjZS0+ZW5jb2RlZFNpemUoKSArIHJlc291cmNlLT5vdmVyaGVhZFNpemUoKSkgLyAx
MDI0LjBmLCByZXNvdXJjZS0+YWNjZXNzQ291bnQoKSwgcmVzb3VyY2UtPmhhc0NsaWVudHMoKSwg
cmVzb3VyY2UtPmlzVXNpbmdEaXNrSW1hZ2VDYWNoZSgpKTsKKyNlbHNlCiAgICAgICAgICAgICAg
ICAgcHJpbnRmKCIoJS4xZkssICUuMWZLLCAldUEsICVkUik7ICIsIHJlc291cmNlLT5kZWNvZGVk
U2l6ZSgpIC8gMTAyNC4wZiwgKHJlc291cmNlLT5lbmNvZGVkU2l6ZSgpICsgcmVzb3VyY2UtPm92
ZXJoZWFkU2l6ZSgpKSAvIDEwMjQuMGYsIHJlc291cmNlLT5hY2Nlc3NDb3VudCgpLCByZXNvdXJj
ZS0+aGFzQ2xpZW50cygpKTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCA2ZDFhZWM3OTg5M2VlNmFmNjA3
MTM1ZGRmZmIxOWJiNDcwZWZhYTYwLi5lMjM4ZmJkNjRjZTE2NzJmN2YyMzVjZmM4MTkxZDI1YTY0
MWFiZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAt
NzAsMTMgKzcwLDE5IEBAIHB1YmxpYzoKICAgICAgICAgaW50IHNpemU7CiAgICAgICAgIGludCBs
aXZlU2l6ZTsKICAgICAgICAgaW50IGRlY29kZWRTaXplOworI2lmIEVOQUJMRShESVNLX0lNQUdF
X0NBQ0hFKQorICAgICAgICBpbnQgbWFwcGVkU2l6ZTsKKyNlbmRpZgogCiAgICAgICAgIFR5cGVT
dGF0aXN0aWMoKQogICAgICAgICAgICAgOiBjb3VudCgwKQogICAgICAgICAgICAgLCBzaXplKDAp
CiAgICAgICAgICAgICAsIGxpdmVTaXplKDApCiAgICAgICAgICAgICAsIGRlY29kZWRTaXplKDAp
Ci0gICAgICAgIHsgCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgICAgICAgICAs
IG1hcHBlZFNpemUoMCkKKyNlbmRpZgorICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2
b2lkIGFkZFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CkBAIC0xNDAsNiArMTQ2LDEwIEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKKyNpZiBF
TkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ2Fj
aGVkSW1hZ2VzVG9EaXNrKCk7IC8vIEZsdXNoIGVuY29kZWQgZGF0YSBmcm9tIHJlc291cmNlcyBz
dGlsbCByZWZlcmVuY2VkIGJ5IHdlYiBwYWdlcy4KKyNlbmRpZgorCiAgICAgLy8gRnVuY3Rpb24g
dG8gY29sbGVjdCBjYWNoZSBzdGF0aXN0aWNzIGZvciB0aGUgY2FjaGVzIHdpbmRvdyBpbiB0aGUg
U2FmYXJpIERlYnVnIG1lbnUuCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RhdGlzdGljcyBnZXRTdGF0
aXN0aWNzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNr
SW1hZ2VDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlza0ltYWdlQ2FjaGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yZjZjNjU0NmI1NmY0MjNmZDRlODQ1MjI2M2MzMGVmNjc4M2JjMzNjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlza0ltYWdlQ2FjaGUuaApA
QCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ29sbGFib3JhIEx0ZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBEaXNrSW1hZ2VDYWNoZV9oCisjZGVmaW5lIERpc2tJbWFnZUNh
Y2hlX2gKKworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorCisjaW5jbHVkZSAiRGlza0lt
YWdlQ2FjaGVDbGllbnQuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKwordHlwZWRlZiB1bnNpZ25lZCBEaXNrSW1hZ2VDYWNoZUlkOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEdsb2JhbCBkaXNrIGltYWdlIGNhY2hlIG9iamVj
dC4KK2NsYXNzIERpc2tJbWFnZUNhY2hlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNr
SW1hZ2VDYWNoZSk7Citwcml2YXRlOgorCisgICAgLy8gTGlmZXRpbWUgb2YgdGhpcyBFbnRyeSBh
bmQgdGhlIFNoYXJlZEJ1ZmZlciBpdCB3cmFwcyBhcmUgbWFuYWdlZCBpbiB0aGUgbWFpbiB0aHJl
YWQuCisgICAgY2xhc3MgRW50cnkgOiBwdWJsaWMgUmVmQ291bnRlZDxFbnRyeT4geworICAgIHBy
aXZhdGU6CisgICAgICAgIEVudHJ5KFNoYXJlZEJ1ZmZlciosIERpc2tJbWFnZUNhY2hlSWQpOwor
ICAgICAgICBFbnRyeSh1bnNpZ25lZCBzaXplLCBEaXNrSW1hZ2VDYWNoZUlkKTsKKworICAgIHB1
YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBj
cmVhdGUoU2hhcmVkQnVmZmVyKiBidWZmZXIsIERpc2tJbWFnZUNhY2hlSWQgaWQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlza0ltYWdlQ2FjaGU6OkVudHJ5
KGJ1ZmZlciwgaWQpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERp
c2tJbWFnZUNhY2hlOjpFbnRyeT4gY3JlYXRlKHVuc2lnbmVkIHNpemUsIERpc2tJbWFnZUNhY2hl
SWQgaWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlza0lt
YWdlQ2FjaGU6OkVudHJ5KHNpemUsIGlkKSk7CisgICAgICAgIH0KKworICAgICAgICB+RW50cnko
KTsKKworICAgICAgICBib29sIHN5bmNocm9ub3VzbHlNYXAoKTsKKyAgICAgICAgdm9pZCBtYXAo
KTsKKyAgICAgICAgdm9pZCB1bm1hcCgpOworICAgICAgICB2b2lkIHJlbW92ZUZpbGUoKTsKKyAg
ICAgICAgdm9pZCBjbGVhckRhdGFXaXRob3V0TWFwcGluZygpOworCisgICAgICAgIERpc2tJbWFn
ZUNhY2hlSWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgICAgIHVuc2lnbmVkIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICAgICAgdm9pZCogZGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWFwcGluZzsgfQorICAgICAgICBib29sIGlzTWFwcGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXBwaW5nICE9IG51bGxwdHI7IH0KKyAgICAgICAgdm9pZCBzZXRUZW1wb3JhcnlG
aWxlUGF0aChjb25zdCBTdHJpbmcmKTsKKworICAgICAgICBzdGF0aWMgdm9pZCBtYXBUaHJlYWRT
dGFydCh2b2lkKik7CisgICAgICAgIHN0YXRpYyB2b2lkIHJlbW92ZUZpbGVUaHJlYWRTdGFydCh2
b2lkKik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIG1hcEludGVybmFsKCk7CisgICAg
ICAgIHZvaWQgY2FuY2VsTWFwKCk7CisKKyNpZiBPUyhVTklYKQorICAgICAgICBpbnQgd3JpdGVU
b0ZpbGVJbnRlcm5hbChpbnQgZmQpOworI2VuZGlmCisKKyAgICAgICAgdm9pZCBkaWRGYWlsTWVt
b3J5TWFwKCk7CisgICAgICAgIHZvaWQgZGlkTWFwTWVtb3J5KCk7CisgICAgICAgIHZvaWQgZGlk
UmVtb3ZlRmlsZSgpOworCisgICAgICAgIFNoYXJlZEJ1ZmZlciogbV9idWZmZXI7CisgICAgICAg
IERpc2tJbWFnZUNhY2hlSWQgbV9pZDsKKyAgICAgICAgdW5zaWduZWQgbV9zaXplOworICAgICAg
ICB2b2lkKiBtX21hcHBpbmc7CisgICAgICAgIFN0cmluZyBtX3BhdGg7CisgICAgfTsKKworcHVi
bGljOgorICAgIERpc2tJbWFnZUNhY2hlKCk7CisgICAgZnJpZW5kIERpc2tJbWFnZUNhY2hlJiBk
aXNrSW1hZ2VDYWNoZSgpOworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxEaXNrSW1h
Z2VDYWNoZT47CisgICAgc3RhdGljIGNvbnN0IERpc2tJbWFnZUNhY2hlSWQgaW52YWxpZERpc2tD
YWNoZUlkID0gMDsKKworICAgIC8vIFdyaXRlIG91dCBhbiBpdGVtLgorICAgIERpc2tJbWFnZUNh
Y2hlSWQgY3JlYXRlRmlsZUJhY2tlZE1hcHBpbmcodW5zaWduZWQgc2l6ZSk7CisgICAgRGlza0lt
YWdlQ2FjaGVJZCB3cml0ZUl0ZW0oUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKKworICAgIC8v
IFJlbW92ZSBpdGVtLgorICAgIHZvaWQgcmVtb3ZlSXRlbShEaXNrSW1hZ2VDYWNoZUlkKTsKKwor
ICAgIC8vIE1hcHBpbmcgZm9yIGFuIGl0ZW0uCisgICAgdm9pZCogZGF0YUZvckl0ZW0oRGlza0lt
YWdlQ2FjaGVJZCk7CisKKyAgICAvLyBTZXR1cCBhIGNsaWVudCBmb3IgY2FsbGJhY2tzLgorICAg
IHZvaWQgc2V0Q2xpZW50KFBhc3NSZWZQdHI8RGlza0ltYWdlQ2FjaGVDbGllbnQ+IGNsaWVudCkg
eyBtX2NsaWVudCA9IGNsaWVudDsgfQorCisgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1f
ZW5hYmxlZCA9IGVuYWJsZWQ7IH0KKworICAgIHVuc2lnbmVkIG1heGltdW1DYWNoZVNpemUoKSBj
b25zdCB7IHJldHVybiBtX21heGltdW1DYWNoZVNpemU7IH0KKyAgICB2b2lkIHNldE1heGltdW1D
YWNoZVNpemUodW5zaWduZWQgbWF4aW11bSkgeyBtX21heGltdW1DYWNoZVNpemUgPSBtYXhpbXVt
OyB9CisKKyAgICB1bnNpZ25lZCBtaW5pbXVtSW1hZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9t
aW5pbXVtSW1hZ2VTaXplOyB9CisgICAgdm9pZCBzZXRNaW5pbXVtSW1hZ2VTaXplKHVuc2lnbmVk
IG1pbmltdW0pIHsgbV9taW5pbXVtSW1hZ2VTaXplID0gbWluaW11bTsgfQorCisgICAgY29uc3Qg
U3RyaW5nJiBjYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVEaXJlY3Rvcnk7
IH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBi
b29sIGlzRnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZSA+PSBtX21heGltdW1DYWNoZVNpemU7
IH0KKworcHJpdmF0ZToKKyAgICB+RGlza0ltYWdlQ2FjaGUoKSB7IH0KKworICAgIGJvb2wgY3Jl
YXRlRGlyZWN0b3J5SWZOZWVkZWQoKTsKKyAgICBEaXNrSW1hZ2VDYWNoZUlkIG5leHRBdmFpbGFi
bGVJZCgpOworCisgICAgU3RyaW5nIHByZXBhcmVGaWxlKCk7CisgICAgU3RyaW5nIHRlbXBvcmFy
eURpcmVjdG9yeSgpOworICAgIFN0cmluZyB0ZW1wb3JhcnlGaWxlKCk7CisKKyAgICB2b2lkIHVw
ZGF0ZVNpemUodW5zaWduZWQgZGVsdGEpOworCisgICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgdW5z
aWduZWQgbV9zaXplOworICAgIHVuc2lnbmVkIG1fbWF4aW11bUNhY2hlU2l6ZTsKKyAgICB1bnNp
Z25lZCBtX21pbmltdW1JbWFnZVNpemU7CisgICAgRGlza0ltYWdlQ2FjaGVJZCBtX25leHRBdmFp
bGFibGVJZDsKKyAgICBTdHJpbmcgbV9jYWNoZURpcmVjdG9yeTsKKworICAgIFJlZlB0cjxEaXNr
SW1hZ2VDYWNoZUNsaWVudD4gbV9jbGllbnQ7CisgICAgSGFzaE1hcDxEaXNrSW1hZ2VDYWNoZUlk
LCBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5Pj4gbV90YWJsZTsKKworICAgIE11dGV4IG1f
bXV0ZXg7Cit9OworCisvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBkaXNrIGltYWdl
IGNhY2hlLgorRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCk7CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorCisjZW5k
aWYgLy8gRGlza0ltYWdlQ2FjaGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRGlza0ltYWdlQ2FjaGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rpc2tJ
bWFnZUNhY2hlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE3YTNhMGRhMTI0OGVmYmNjMGI4Y2ZiNDMw
MzE3OTFiNjU1NTM0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0Rpc2tJbWFnZUNhY2hlQ2xpZW50LmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgRGlza0ltYWdlQ2FjaGVDbGllbnRfaAorI2RlZmluZSBEaXNrSW1hZ2VDYWNoZUNsaWVu
dF9oCisKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKworI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRGlza0ltYWdlQ2FjaGVDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxEaXNrSW1hZ2VDYWNoZUNsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgfkRpc2tJbWFn
ZUNhY2hlQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURpc2tJbWFnZUNh
Y2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KSA9IDA7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKwor
I2VuZGlmIC8vIERpc2tJbWFnZUNhY2hlQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
eXN0ZW0uaAppbmRleCAxM2FiMjliYjJiOWI5OTc5YzE5M2ZiYjkxMzVmM2U3ZTVjN2JhM2IyLi43
M2FiNTkxMTkyODgxY2FiNTdhOTlkYmY0MzJiZjRkZmM3MzYwYTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0xNjUsNiArMTY1LDggQEAgaW5saW5lIGRvdWJsZSBpbnZh
bGlkRmlsZVRpbWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0
X05hTigKIGlubGluZSBib29sIGlzVmFsaWRGaWxlVGltZShkb3VibGUgdGltZSkgeyByZXR1cm4g
c3RkOjppc2Zpbml0ZSh0aW1lKTsgfQogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUg
c2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgorV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHByZWZpeCk7
CitXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcm
IHN1YkRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwcmVmaXgpOwogV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3Nl
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKQEAgLTE5NSw2ICsxOTcsNyBAQCBTdHJpbmcgZmls
ZW5hbWVUb1N0cmluZyhjb25zdCBjaGFyKik7CiBTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNv
bnN0IFN0cmluZyYpOwogQ1N0cmluZyBhcHBsaWNhdGlvbkRpcmVjdG9yeVBhdGgoKTsKIENTdHJp
bmcgc2hhcmVkUmVzb3VyY2VzUGF0aCgpOworU3RyaW5nIGNyZWF0ZVVzZXJDYWNoZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogI2lmIFVTRShTT1VQKQogdWludDY0X3QgZ2V0Vm9s
dW1lRnJlZVNpemVGb3JQYXRoKGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcu
aAppbmRleCAxOTIxMjk5YjE5NGNkNTI0ZmNhMGQ0ZGZmMzFhMTBlMTIxMmJkZjAyLi41YTc2ZmY1
MWRhY2ZlNWM2ZGFlYWYzODk2NDcwNGZhYzZmYjk5NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9n
Z2luZy5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKENvbXBv
c2l0aW5nKSBcCiAgICAgTShDb250ZW50RmlsdGVyaW5nKSBcCiAgICAgTShET01UaW1lcnMpIFwK
KyAgICBNKERpc2tJbWFnZUNhY2hlKSBcCiAgICAgTShFZGl0aW5nKSBcCiAgICAgTShFdmVudHMp
IFwKICAgICBNKEZUUCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAK
aW5kZXggNTMzOTYxZmEwZDFkMzA5NTg1ZmFjODVjNGM5Y2FhNjA3MjQ3YjAzNC4uMzUzMmEzOWRj
NjNkMTc5MjY1NTM3YTE4MWI5OTk0MWEzMTk3MmE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKKyNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZS5o
IgorCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4K
IApAQCAtNjMsMjMgKzY1LDQ3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmcmVlU2VnbWVudChjaGFy
KiBwKQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcigpCiAgICAgOiBtX2J1ZmZlcihhZG9w
dFJlZihuZXcgRGF0YUJ1ZmZlcikpCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAg
LCBtX2lzTWVtb3J5TWFwcGVkKGZhbHNlKQorICAgICwgbV9kaXNrSW1hZ2VDYWNoZUlkKERpc2tJ
bWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQpCisgICAgLCBtX25vdGlmeU1lbW9yeU1hcHBl
ZENhbGxiYWNrKG51bGxwdHIpCisgICAgLCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrRGF0
YShudWxscHRyKQorI2VuZGlmCiB7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKHVu
c2lnbmVkIHNpemUpCiAgICAgOiBtX3NpemUoc2l6ZSkKICAgICAsIG1fYnVmZmVyKGFkb3B0UmVm
KG5ldyBEYXRhQnVmZmVyKSkKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAsIG1f
aXNNZW1vcnlNYXBwZWQoZmFsc2UpCisgICAgLCBtX2Rpc2tJbWFnZUNhY2hlSWQoRGlza0ltYWdl
Q2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZCkKKyAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2Fs
bGJhY2sobnVsbHB0cikKKyAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2tEYXRhKG51
bGxwdHIpCisjZW5kaWYKIHsKIH0KIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKICAgICA6IG1fYnVmZmVyKGFkb3B0UmVmKG5ldyBE
YXRhQnVmZmVyKSkKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAsIG1faXNNZW1v
cnlNYXBwZWQoZmFsc2UpCisgICAgLCBtX2Rpc2tJbWFnZUNhY2hlSWQoRGlza0ltYWdlQ2FjaGU6
OmludmFsaWREaXNrQ2FjaGVJZCkKKyAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2so
bnVsbHB0cikKKyAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2tEYXRhKG51bGxwdHIp
CisjZW5kaWYKIHsKICAgICBhcHBlbmQoZGF0YSwgc2l6ZSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAg
ICAgOiBtX2J1ZmZlcihhZG9wdFJlZihuZXcgRGF0YUJ1ZmZlcikpCisjaWYgRU5BQkxFKERJU0tf
SU1BR0VfQ0FDSEUpCisgICAgLCBtX2lzTWVtb3J5TWFwcGVkKGZhbHNlKQorICAgICwgbV9kaXNr
SW1hZ2VDYWNoZUlkKERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQpCisgICAgLCBt
X25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrKG51bGxwdHIpCisgICAgLCBtX25vdGlmeU1lbW9y
eU1hcHBlZENhbGxiYWNrRGF0YShudWxscHRyKQorI2VuZGlmCiB7CiAgICAgYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKIH0KQEAgLTkyLDYgKzExOCwx
MyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRh
KQogCiBTaGFyZWRCdWZmZXI6On5TaGFyZWRCdWZmZXIoKQogeworI2lmIEVOQUJMRShESVNLX0lN
QUdFX0NBQ0hFKQorICAgIGlmIChtX2Rpc2tJbWFnZUNhY2hlSWQpIHsKKyAgICAgICAgZGlza0lt
YWdlQ2FjaGUoKS5yZW1vdmVJdGVtKG1fZGlza0ltYWdlQ2FjaGVJZCk7CisgICAgICAgIG1faXNN
ZW1vcnlNYXBwZWQgPSBmYWxzZTsKKyAgICAgICAgbV9kaXNrSW1hZ2VDYWNoZUlkID0gRGlza0lt
YWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKKyAgICB9CisjZW5kaWYKICAgICBjbGVhcigp
OwogfQogCkBAIC0xMjUsOCArMTU4LDc4IEBAIHVuc2lnbmVkIFNoYXJlZEJ1ZmZlcjo6c2l6ZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6ZTsKIH0KIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NB
Q0hFKQorYm9vbCBTaGFyZWRCdWZmZXI6OmlzQWxsb3dlZFRvQmVNZW1vcnlNYXBwZWQoKSBjb25z
dAoreworICAgIHJldHVybiBtX2Rpc2tJbWFnZUNhY2hlSWQgIT0gRGlza0ltYWdlQ2FjaGU6Omlu
dmFsaWREaXNrQ2FjaGVJZDsKK30KKworYm9vbCBTaGFyZWRCdWZmZXI6OmlzVXNpbmdEaXNrSW1h
Z2VDYWNoZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzQWxsb3dlZFRvQmVNZW1vcnlNYXBwZWQo
KTsKK30KKworU2hhcmVkQnVmZmVyOjpNZW1vcnlNYXBwaW5nU3RhdGUgU2hhcmVkQnVmZmVyOjph
bGxvd1RvQmVNZW1vcnlNYXBwZWQoKQoreworICAgIGlmIChpc01lbW9yeU1hcHBlZCgpKQorICAg
ICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpTdWNjZXNzQWxyZWFkeU1hcHBlZDsKKworICAgIGlm
IChpc0FsbG93ZWRUb0JlTWVtb3J5TWFwcGVkKCkpCisgICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OlByZXZpb3VzbHlRdWV1ZWRGb3JNYXBwaW5nOworCisgICAgbV9kaXNrSW1hZ2VDYWNoZUlk
ID0gZGlza0ltYWdlQ2FjaGUoKS53cml0ZUl0ZW0odGhpcyk7CisgICAgaWYgKG1fZGlza0ltYWdl
Q2FjaGVJZCA9PSBEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkKQorICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpGYWlsdXJlQ2FjaGVGdWxsOworCisgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6UXVldWVkRm9yTWFwcGluZzsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6OmZhaWxl
ZE1lbW9yeU1hcCgpCit7CisgICAgaWYgKG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2spCisg
ICAgICAgIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2sodGhpcywgU2hhcmVkQnVmZmVyOjpG
YWlsZWQsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2tEYXRhKTsKK30KKwordm9pZCBTaGFy
ZWRCdWZmZXI6Om1hcmtBc01lbW9yeU1hcHBlZCgpCit7CisgICAgQVNTRVJUKCFpc01lbW9yeU1h
cHBlZCgpKTsKKworICAgIG1faXNNZW1vcnlNYXBwZWQgPSB0cnVlOworICAgIHVuc2lnbmVkIHNh
dmVkU2l6ZSA9IHNpemUoKTsKKyAgICBjbGVhcigpOworICAgIG1fc2l6ZSA9IHNhdmVkU2l6ZTsK
KworICAgIGlmIChtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrKQorICAgICAgICBtX25vdGlm
eU1lbW9yeU1hcHBlZENhbGxiYWNrKHRoaXMsIFNoYXJlZEJ1ZmZlcjo6U3VjY2VlZGVkLCBtX25v
dGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrRGF0YSk7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6TWVtb3J5
TWFwcGVkTm90aWZ5Q2FsbGJhY2tEYXRhIFNoYXJlZEJ1ZmZlcjo6bWVtb3J5TWFwcGVkTm90aWZp
Y2F0aW9uQ2FsbGJhY2tEYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ub3RpZnlNZW1vcnlN
YXBwZWRDYWxsYmFja0RhdGE7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6TWVtb3J5TWFwcGVkTm90aWZ5
Q2FsbGJhY2sgU2hhcmVkQnVmZmVyOjptZW1vcnlNYXBwZWROb3RpZmljYXRpb25DYWxsYmFjaygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2s7Cit9CisK
K3ZvaWQgU2hhcmVkQnVmZmVyOjpzZXRNZW1vcnlNYXBwZWROb3RpZmljYXRpb25DYWxsYmFjayhN
ZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFjayBjYWxsYmFjaywgTWVtb3J5TWFwcGVkTm90aWZ5Q2Fs
bGJhY2tEYXRhIGRhdGEpCit7CisgICAgQVNTRVJUKCFtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxi
YWNrIHx8ICFjYWxsYmFjayk7CisgICAgQVNTRVJUKCFtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxi
YWNrRGF0YSB8fCAhZGF0YSk7CisKKyAgICBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrID0g
Y2FsbGJhY2s7CisgICAgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGEgPSBkYXRhOwor
fQorI2VuZGlmCisKIGNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7Cisj
aWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgaWYgKGlzTWVtb3J5TWFwcGVkKCkpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGlza0ltYWdlQ2FjaGUoKS5k
YXRhRm9ySXRlbShtX2Rpc2tJbWFnZUNhY2hlSWQpKTsKKyNlbmRpZgorCiAgICAgaWYgKGhhc1Bs
YXRmb3JtRGF0YSgpKQogICAgICAgICByZXR1cm4gcGxhdGZvcm1EYXRhKCk7CiAKQEAgLTE4MCw2
ICsyODMsOSBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6YXBwZW5kKFNoYXJlZEJ1ZmZlciogZGF0YSkK
IAogdm9pZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBs
ZW5ndGgpCiB7CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgQVNTRVJUKCFpc01l
bW9yeU1hcHBlZCgpKTsKKyNlbmRpZgogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47
CiAKQEAgLTMyMCw2ICs0MjYsOSBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENs
ZWFyKGNoYXIqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgYwogCiBjb25zdCBW
ZWN0b3I8Y2hhcj4mIFNoYXJlZEJ1ZmZlcjo6YnVmZmVyKCkgY29uc3QKIHsKKyNpZiBFTkFCTEUo
RElTS19JTUFHRV9DQUNIRSkKKyAgICBBU1NFUlQoIWlzTWVtb3J5TWFwcGVkKCkpOworI2VuZGlm
CiAgICAgdW5zaWduZWQgYnVmZmVyU2l6ZSA9IG1fYnVmZmVyLT5kYXRhLnNpemUoKTsKICAgICBp
ZiAobV9zaXplID4gYnVmZmVyU2l6ZSkgewogICAgICAgICBkdXBsaWNhdGVEYXRhQnVmZmVySWZO
ZWNlc3NhcnkoKTsKQEAgLTMzNyw2ICs0NDYsMTUgQEAgdW5zaWduZWQgU2hhcmVkQnVmZmVyOjpn
ZXRTb21lRGF0YShjb25zdCBjaGFyKiYgc29tZURhdGEsIHVuc2lnbmVkIHBvc2l0aW9uKSBjb24K
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUp
CisgICAgQVNTRVJUKHBvc2l0aW9uIDwgc2l6ZSgpKTsKKyAgICBpZiAoaXNNZW1vcnlNYXBwZWQo
KSkgeworICAgICAgICBjb25zdCBjaGFyKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGRpc2tJbWFnZUNhY2hlKCkuZGF0YUZvckl0ZW0obV9kaXNrSW1hZ2VDYWNoZUlkKSk7CisgICAg
ICAgIHNvbWVEYXRhID0gZGF0YSArIHBvc2l0aW9uOworICAgICAgICByZXR1cm4gc2l6ZSgpIC0g
cG9zaXRpb247CisgICAgfQorI2VuZGlmCisKICAgICBpZiAoaGFzUGxhdGZvcm1EYXRhKCkgfHwg
bV9maWxlRGF0YSkgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihw
b3NpdGlvbiA8IHNpemUoKSk7CiAgICAgICAgIHNvbWVEYXRhID0gZGF0YSgpICsgcG9zaXRpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDQwMzBiZGExMzYyZmI2
ZGFkNGNjOWEwMTI0MzZiMDlmMWM3NTA1YzEuLjkyNWNkYTA0MzgzMWMwY2IwMDllOGRlNmY4N2M2
MmRhYTgwMGE1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0x
MTksNiArMTE5LDMxIEBAIHB1YmxpYzoKICAgICAvLyAgICAgIH0KICAgICBXRUJDT1JFX0VYUE9S
VCB1bnNpZ25lZCBnZXRTb21lRGF0YShjb25zdCBjaGFyKiYgZGF0YSwgdW5zaWduZWQgcG9zaXRp
b24gPSAwKSBjb25zdDsKIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGVudW0g
TWVtb3J5TWFwcGluZ1N0YXRlIHsgUXVldWVkRm9yTWFwcGluZywgUHJldmlvdXNseVF1ZXVlZEZv
ck1hcHBpbmcsIFN1Y2Nlc3NBbHJlYWR5TWFwcGVkLCBGYWlsdXJlQ2FjaGVGdWxsIH07CisKKyAg
ICAvLyBDYWxsaW5nIHRoaXMgd2lsbCBjYXVzZSB0aGlzIGJ1ZmZlciB0byBiZSBtZW1vcnkgbWFw
cGVkLgorICAgIFdFQkNPUkVfRVhQT1JUIE1lbW9yeU1hcHBpbmdTdGF0ZSBhbGxvd1RvQmVNZW1v
cnlNYXBwZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQWxsb3dlZFRvQmVNZW1vcnlN
YXBwZWQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVXNpbmdEaXNrSW1hZ2VD
YWNoZSgpIGNvbnN0OworCisgICAgLy8gVGhpcyBpcyBjYWxsZWQgdG8gaW5kaWNhdGUgdGhhdCB0
aGUgbWVtb3J5IG1hcHBpbmcgZmFpbGVkLgorICAgIHZvaWQgZmFpbGVkTWVtb3J5TWFwKCk7CisK
KyAgICAvLyBUaGlzIGlzIGNhbGxlZCBvbmx5IG9uY2UgdGhlIGJ1ZmZlciBoYXMgYmVlbiBjb21w
bGV0ZWx5IG1lbW9yeSBtYXBwZWQuCisgICAgdm9pZCBtYXJrQXNNZW1vcnlNYXBwZWQoKTsKKyAg
ICBib29sIGlzTWVtb3J5TWFwcGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01lbW9yeU1hcHBlZDsg
fQorCisgICAgLy8gVGhpcyBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIGVp
dGhlciB0aGUgYnVmZmVyIGhhcyBiZWVuIG1lbW9yeSBtYXBwZWQgb3IgZmFpbGVkIHRvIGJlIG1l
bW9yeSBtYXBwZWQuCisgICAgZW51bSBDb21wbGV0aW9uU3RhdHVzIHsgRmFpbGVkLCBTdWNjZWVk
ZWQgfTsKKyAgICB0eXBlZGVmIHZvaWQqIE1lbW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNrRGF0YTsK
KyAgICB0eXBlZGVmIHZvaWQgKCpNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFjaykoUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+LCBDb21wbGV0aW9uU3RhdHVzLCBNZW1vcnlNYXBwZWROb3RpZnlDYWxs
YmFja0RhdGEpOworCisgICAgV0VCQ09SRV9FWFBPUlQgTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJh
Y2tEYXRhIG1lbW9yeU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrRGF0YSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIE1lbW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNrIG1lbW9yeU1hcHBlZE5v
dGlmaWNhdGlvbkNhbGxiYWNrKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRN
ZW1vcnlNYXBwZWROb3RpZmljYXRpb25DYWxsYmFjayhNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFj
aywgTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2tEYXRhKTsKKyNlbmRpZgorCiAgICAgdm9pZCB0
cnlSZXBsYWNlQ29udGVudHNXaXRoUGxhdGZvcm1CdWZmZXIoU2hhcmVkQnVmZmVyJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNQbGF0Zm9ybURhdGEoKSBjb25zdDsKIApAQCAtMTY1LDYg
KzE5MCwxMyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgVmVjdG9yPGNoYXIqPiBtX3NlZ21lbnRz
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICBib29sIG1faXNN
ZW1vcnlNYXBwZWQ7CisgICAgdW5zaWduZWQgbV9kaXNrSW1hZ2VDYWNoZUlkOyAvLyBEaXNrSW1h
Z2VDYWNoZUlkIGlzIHVuc2lnbmVkLgorICAgIE1lbW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNrIG1f
bm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2s7CisgICAgTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJh
Y2tEYXRhIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2tEYXRhOworI2VuZGlmCisKICNpZiBV
U0UoQ0YpCiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAgICAgUmV0YWlu
UHRyPENGRGF0YVJlZj4gbV9jZkRhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9T
aGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggMmE3NWU1NmQ1MmQwY2JkYjM0NDNkN2Q0MzkyMzMyYTlk
MjY4MmM1MC4uOTMyMmNjMTYxODlmMTRlNWJkNDBkYTQ3NmJlMWEwYTg0OTBiY2E4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMjgsMTIg
KzI4LDIwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAKKyNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZS5oIgorCiAjaW5jbHVkZSA8d3RmL2NmL1R5cGVD
YXN0c0NGLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhcmVkQnVmZmVyOjpTaGFyZWRC
dWZmZXIoQ0ZEYXRhUmVmIGNmRGF0YSkKICAgICA6IG1fYnVmZmVyKGFkb3B0UmVmKG5ldyBEYXRh
QnVmZmVyKSkKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAsIG1faXNNZW1vcnlN
YXBwZWQoZmFsc2UpCisgICAgLCBtX2Rpc2tJbWFnZUNhY2hlSWQoRGlza0ltYWdlQ2FjaGU6Omlu
dmFsaWREaXNrQ2FjaGVJZCkKKyAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2sobnVs
bHB0cikKKyAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2tEYXRhKG51bGxwdHIpCisj
ZW5kaWYKICAgICAsIG1fY2ZEYXRhKGNmRGF0YSkKICAgICAsIG1fdm5vZGVUb2tlbihWTm9kZVRy
YWNrZXI6OnNpbmdsZXRvbigpLnRva2VuKCkpCiB7CkBAIC0xMTcsNiArMTI1LDEyIEBAIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OndyYXBDRkRhdGFBcnJheShDRkFycmF5
UmVmIGNmRGF0YUFycmF5KQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkFycmF5UmVm
IGNmRGF0YUFycmF5KQogICAgIDogbV9idWZmZXIoYWRvcHRSZWYobmV3IERhdGFCdWZmZXIpKQor
I2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgICwgbV9pc01lbW9yeU1hcHBlZChmYWxz
ZSkKKyAgICAsIG1fZGlza0ltYWdlQ2FjaGVJZChEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERpc2tD
YWNoZUlkKQorICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFjayhudWxscHRyKQorICAg
ICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGEobnVsbHB0cikKKyNlbmRpZgogICAg
ICwgbV9jZkRhdGEobnVsbHB0cikKIHsKICAgICBDRkluZGV4IGRhdGFBcnJheUNvdW50ID0gQ0ZB
cnJheUdldENvdW50KGNmRGF0YUFycmF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCBkODg5NGZiZDYxNzBiMjI1Njk5OWU3NThj
MjU1NDQzOGU1ZGQzNzE3Li5jZjc1NzhkNjEzYWZhYzMzNWQ2M2FkN2E4Y2IxNWYxMDY3MWE3Zjk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCkBAIC0xMTgsNiArMTE4LDE3IEBAIGJvb2wgQml0bWFwSW1hZ2U6Omhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShESVNL
X0lNQUdFX0NBQ0hFKQorYm9vbCBCaXRtYXBJbWFnZTo6aXNNZW1vcnlNYXBwZWQoKSBjb25zdAor
eworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmFtZXMuc2l6ZSgpOyBpKyspIHsKKyAg
ICAgICAgaWYgKCFtX2ZyYW1lc1tpXS5tX2lzTWVtb3J5TWFwcGVkKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiB2b2lkIEJp
dG1hcEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsKQogewogICAgIHVu
c2lnbmVkIGZyYW1lQnl0ZXNDbGVhcmVkID0gMDsKQEAgLTIwOSw2ICsyMjAsOSBAQCB2b2lkIEJp
dG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluZ0xldmVsLCBJbQogICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9kdXJhdGlvbiA9IG1f
c291cmNlLmZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsKIAogICAgIG1fZnJhbWVzW2luZGV4
XS5tX2hhc0FscGhhID0gbV9zb3VyY2UuZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOworI2lm
IEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIG1fZnJhbWVzW2luZGV4XS5tX2lzTWVtb3J5
TWFwcGVkID0gbV9zb3VyY2UuZnJhbWVJc01lbW9yeU1hcHBlZEF0SW5kZXgoaW5kZXgpOworI2Vu
ZGlmCiAgICAgbV9mcmFtZXNbaW5kZXhdLm1fZnJhbWVCeXRlcyA9IG1fc291cmNlLmZyYW1lQnl0
ZXNBdEluZGV4KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKTsKIAogICAgIGNvbnN0IEludFNpemUg
ZnJhbWVTaXplKGluZGV4ID8gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2Ft
cGxpbmdMZXZlbCkgOiBtX3NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmgKaW5kZXggMmM3MWNmY2IwZWFmNWFlYjM3N2RiNWFlZjA1NzNmNGJl
M2MwNmJhNC4uNWI5MDQwN2NiYjk4NDY5NzNjYTM5ZjNhZGRiYzdmYjlmYzdiNGRlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC03NCw3
ICs3NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9kdXJhdGlvbigwKQogICAgICAgICAsIG1f
aGF2ZU1ldGFkYXRhKGZhbHNlKQogICAgICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKLSAgICAg
ICAgLCBtX2hhc0FscGhhKHRydWUpIAorICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKKyNpZiBF
TkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAgICAgLCBtX2lzTWVtb3J5TWFwcGVkKGZhbHNl
KQorI2VuZGlmCiAgICAgICAgICwgbV9mcmFtZUJ5dGVzKDApCiAgICAgewogICAgIH0KQEAgLTk1
LDYgKzk4LDkgQEAgcHVibGljOgogICAgIGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOwogICAgIGJv
b2wgbV9pc0NvbXBsZXRlIDogMTsKICAgICBib29sIG1faGFzQWxwaGEgOiAxOworI2lmIEVOQUJM
RShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGJvb2wgbV9pc01lbW9yeU1hcHBlZCA6IDE7CisjZW5k
aWYKICAgICB1bnNpZ25lZCBtX2ZyYW1lQnl0ZXM7CiB9OwogCkBAIC0yMzAsNiArMjM2LDEzIEBA
IHByb3RlY3RlZDoKICAgICAvLyBDYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyBtX2ZyYW1lc1tpbmRl
eF0gZm9yIGluZm8gd2l0aG91dCBkZWNvZGluZy4gUmV0dXJucyBmYWxzZSBvbiBpbmRleCBvdXQg
b2YgYm91bmRzLgogICAgIGJvb2wgZW5zdXJlRnJhbWVJc0NhY2hlZChzaXplX3QgaW5kZXgsIElt
YWdlRnJhbWVDYWNoaW5nID0gQ2FjaGVNZXRhZGF0YUFuZEZyYW1lKTsKIAorI2lmIEVOQUJMRShE
SVNLX0lNQUdFX0NBQ0hFKQorICAgIC8vIFVzZWQgdG8gZmlndXJlIG91dCBpZiBkZXN0cm95aW5n
IHRoZSBkZWNvZGVkIGRhdGEgd2lsbCByZWFsbHkgaGVscCB3aXRoCisgICAgLy8gbWVtb3J5IHBy
ZXNzdXJlIGF0IGFsbC4gSWYgYWxsIGZyYW1lcyBhcmUgZmlsZS1iYWNrZWQgdGhlbiBkZXN0cm95
aW5nIHRoZW0KKyAgICAvLyB3aWxsIG5vdCBoZWxwLCBhbmQgd2lsbCBjYXVzZSBjaHVybiB3aGVu
IHRoZSBpbWFnZSBuZWVkcyB0byBiZSByZXBhaW50ZWQuCisgICAgYm9vbCBpc01lbW9yeU1hcHBl
ZCgpIGNvbnN0IG92ZXJyaWRlOworI2VuZGlmCisKICAgICAvLyBDYWxsZWQgdG8gaW52YWxpZGF0
ZSBjYWNoZWQgZGF0YS4gV2hlbiB8ZGVzdHJveUFsbHwgaXMgdHJ1ZSwgd2Ugd2lwZSBvdXQKICAg
ICAvLyB0aGUgZW50aXJlIGZyYW1lIGJ1ZmZlciBjYWNoZSBhbmQgdGVsbCB0aGUgaW1hZ2Ugc291
cmNlIHRvIGRlc3Ryb3kKICAgICAvLyBldmVyeXRoaW5nOyB0aGlzIGlzIHVzZWQgd2hlbiBlLmcu
IHdlIHdhbnQgdG8gZnJlZSBzb21lIHJvb20gaW4gdGhlIGltYWdlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA1OGMwZDk1ZDhjNDM3YmExODBhZWYxZDdmZGI0
ZjgyNzdjZDZkZDcyLi42NjA0NDQxMDM3MzZjN2E1OWYwYmUyM2YyZDYxNWZmYTFiN2I2MzJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTExNSw2ICsxMTUs
MTAgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gbnVsbCBzdHJpbmcgaWYgdW5rbm93bgog
CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgdmlydHVhbCBib29sIGlzTWVtb3J5
TWFwcGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB2
b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIGRlY29kZWREYXRhSXNQdXJnZWFibGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAKaW5kZXggNzRlZjA1M2EzMzNmZjVmYzU3OGU4MTgwMGNjNmZjOTc1NWVmYmFiOC4uMzkw
YjViYzNkYzljZWQ0YWRjNjgyY2EyMDU5OTgzZDFlMTBiN2VjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMjA3LDYgKzIwNywx
NyBAQCBib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRl
eCkKICAgICByZXR1cm4gYnVmZmVyICYmIGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6
RnJhbWVDb21wbGV0ZTsKIH0KIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorYm9vbCBJ
bWFnZVNvdXJjZTo6ZnJhbWVJc01lbW9yeU1hcHBlZEF0SW5kZXgoc2l6ZV90IGluZGV4KQorewor
ICAgIGlmICghbV9kZWNvZGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBJbWFnZUZy
YW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7CisgICAg
cmV0dXJuIGJ1ZmZlciAmJiBidWZmZXItPmlzTWVtb3J5TWFwcGVkKCk7Cit9CisjZW5kaWYKKwog
dW5zaWduZWQgSW1hZ2VTb3VyY2U6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCkgY29uc3QKIHsKICAgICBpZiAoIW1fZGVjb2RlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGFjZGQxY2U0Y2Uz
MDBkZTgxYzllMDYyZWVlNzYwN2JmNDcyYTcwYWYuLjA1MzdjN2RmYjhmOGI3N2M4NGE1N2Y5ZDc2
ZmEwYzQ2MzNmM2MwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaApAQCAtMTUxLDYgKzE1MSw5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBmcmFt
ZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOwogICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFs
cGhhLgogICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVy
IG9yIG5vdCB0aGUgZnJhbWUgaXMgY29tcGxldGVseSBkZWNvZGVkLgorI2lmIEVOQUJMRShESVNL
X0lNQUdFX0NBQ0hFKQorICAgIGJvb2wgZnJhbWVJc01lbW9yeU1hcHBlZEF0SW5kZXgoc2l6ZV90
KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGlzIG1lbW9yeSBtYXBwZWQgKGluIHRoZSBk
aXNrIGltYWdlIGNhY2hlKS4KKyNlbmRpZgogICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KIAogICAg
IC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lLiBJZiB0
aGUgZnJhbWUgaXMgbm90IHlldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0ZpbGVTeXN0ZW1HdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVT
eXN0ZW1HdGsuY3BwCmluZGV4IDkxNWVhNjliYjE3MDk4NjEwY2M5ZjhkZDIzOWI1ODM3N2M5NThj
YjAuLjMxYjNhMzU4MGQ0NjIzYTlkMDRhOGQ2YTZjMGIyMjljYjc4MTYyYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKQEAgLTI3MSw2ICsyNzEs
NDEgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgZmlsdGVyKQogICAgIHJldHVybiBlbnRyaWVzOwogfQogCitTdHJpbmcgY3Jl
YXRlVXNlckNhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBHVW5pcXVl
UHRyPGdjaGFyPiBwYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwg
IndlYmtpdGd0ayIsIG5hbWUudXRmOCgpLmRhdGEoKSwgTlVMTCkpOworICAgIEdSZWZQdHI8R0Zp
bGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChwYXRoLmdldCgpKSk7Cisg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworCisgICAgaWYgKCFnX2ZpbGVfbWFrZV9k
aXJlY3Rvcnlfd2l0aF9wYXJlbnRzKGZpbGUuZ2V0KCksIDAsICZlcnJvci5vdXRQdHIoKSkgJiYg
ZXJyb3ItPmNvZGUgIT0gR19JT19FUlJPUl9FWElTVFMpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHBhdGguZ2V0KCkpOworfQorCitTdHJp
bmcgY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcHJlZml4KQoreworICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZp
eC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19n
ZXRfdG1wX2RpcigpLCBmaWxlbmFtZS5nZXQoKSwgTlVMTCkpOworICAgIEdSZWZQdHI8R0ZpbGU+
IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkpOwor
CisgICAgaWYgKCFnX2ZpbGVfbWFrZV9kaXJlY3Rvcnlfd2l0aF9wYXJlbnRzKGZpbGUuZ2V0KCks
IDAsIDApKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgodGVtcFBhdGguZ2V0KCkpOworfQorCitTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RmlsZShj
b25zdCBTdHJpbmcmIGxvY2F0aW9uLCBjb25zdCBTdHJpbmcmIHByZWZpeCkKK3sKKyAgICBHVW5p
cXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzJXMiLCBwcmVmaXgudXRm
OCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsK
KyAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZW1wUGF0aChnX2J1aWxkX2ZpbGVuYW1lKGxvY2F0aW9u
LnV0ZjgoKS5kYXRhKCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAgR1JlZlB0cjxHRmls
ZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7
CisKKyAgICBHUmVmUHRyPEdGaWxlT3V0cHV0U3RyZWFtPiBvdXRwdXRTdHJlYW0gPSBhZG9wdEdS
ZWYoZ19maWxlX2NyZWF0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApKTsK
KyAgICBpZiAoIW91dHB1dFN0cmVhbSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHRlbXBQYXRoLmdldCgpKTsKK30KKwogU3RyaW5nIG9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhh
bmRsZSkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZShnX3N0cmR1cF9wcmludGYo
IiVzJXMiLCBwcmVmaXgudXRmOCgpLmRhdGEoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCmluZGV4IGI5NjU2NTUyZjI3ZTM2ODJmNmEx
NDM4MGZhNWVkMzNjNTcxNTRkNmQuLmFhZjhlMGEwYjdkZjdhMzhiMjcxMDMyYjYwMmVkMmFjNjZj
ZDllY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KICAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1IENvbGxhYm9yYSBMdGQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMzIsNiArMzMsOCBAQAogI2luY2x1ZGUgIldFQlBJbWFnZURlY29kZXIuaCIKICNlbmRpZgog
CisjaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGUuaCIKKwogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDxjbWF0aD4KIApAQCAtMTI3LDEzICsxMzAsMzkgQEAgSW1hZ2VEZWNvZGVyKiBJbWFn
ZURlY29kZXI6OmNyZWF0ZShjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIEltYWdlU291cmNlOjpB
bHBoYU8KIH0KIAogSW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZSgpCi0gICAgOiBtX2hhc0FscGhhKGZh
bHNlKQorICAgIDogbV9ieXRlcyhudWxscHRyKQorICAgICwgbV9oYXNBbHBoYShmYWxzZSkKKyAg
ICAsIG1fc3RhdHVzKEZyYW1lRW1wdHkpCisgICAgLCBtX2R1cmF0aW9uKDApCisgICAgLCBtX2Rp
c3Bvc2FsTWV0aG9kKERpc3Bvc2VOb3RTcGVjaWZpZWQpCisgICAgLCBtX3ByZW11bHRpcGx5QWxw
aGEodHJ1ZSkKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAsIG1faXNNZW1vcnlN
YXBwZWQoZmFsc2UpCisgICAgLCBtX2Rpc2tJbWFnZUNhY2hlSWQoRGlza0ltYWdlQ2FjaGU6Omlu
dmFsaWREaXNrQ2FjaGVJZCkKKyNlbmRpZgorICAgICwgbV9kZXB0aCg0KQorICAgICwgbV9zdHJp
ZGUoMCkKKyAgICAsIG1fYWxpZ25tZW50KDApCit7Cit9CisKK0ltYWdlRnJhbWU6OkltYWdlRnJh
bWUoY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCisgICAgOiBtX2J5dGVzKG51bGxwdHIpCisgICAg
LCBtX2hhc0FscGhhKGZhbHNlKQogICAgICwgbV9zdGF0dXMoRnJhbWVFbXB0eSkKICAgICAsIG1f
ZHVyYXRpb24oMCkKICAgICAsIG1fZGlzcG9zYWxNZXRob2QoRGlzcG9zZU5vdFNwZWNpZmllZCkK
ICAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYSh0cnVlKQorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NB
Q0hFKQorICAgICwgbV9pc01lbW9yeU1hcHBlZChmYWxzZSkKKyAgICAsIG1fZGlza0ltYWdlQ2Fj
aGVJZChEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkKQorI2VuZGlmCisgICAgLCBt
X2RlcHRoKDQpCisgICAgLCBtX3N0cmlkZSgwKQorICAgICwgbV9hbGlnbm1lbnQoMCkKIHsKLX0g
CisgICAgb3BlcmF0b3I9KG90aGVyKTsKK30KIAogSW1hZ2VGcmFtZSYgSW1hZ2VGcmFtZTo6b3Bl
cmF0b3I9KGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogewpAQCAtMTQ5LDggKzE3OCwyNCBAQCBJ
bWFnZUZyYW1lJiBJbWFnZUZyYW1lOjpvcGVyYXRvcj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIp
CiAgICAgcmV0dXJuICp0aGlzOwogfQogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCitJ
bWFnZUZyYW1lOjp+SW1hZ2VGcmFtZSgpCit7CisgICAgY2xlYXJQaXhlbERhdGEoKTsKK30KKyNl
bmRpZgorCiB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKIHsKKyNpZiBFTkFCTEUo
RElTS19JTUFHRV9DQUNIRSkKKyAgICBpZiAobV9kaXNrSW1hZ2VDYWNoZUlkKSB7CisgICAgICAg
IEFTU0VSVChpc01lbW9yeU1hcHBlZCgpKTsKKyAgICAgICAgZGlza0ltYWdlQ2FjaGUoKS5yZW1v
dmVJdGVtKG1fZGlza0ltYWdlQ2FjaGVJZCk7CisgICAgICAgIG1faXNNZW1vcnlNYXBwZWQgPSBm
YWxzZTsKKyAgICAgICAgbV9kaXNrSW1hZ2VDYWNoZUlkID0gRGlza0ltYWdlQ2FjaGU6OmludmFs
aWREaXNrQ2FjaGVJZDsKKyAgICB9CisjZW5kaWYKKwogICAgIG1fYmFja2luZ1N0b3JlLmNsZWFy
KCk7CiAgICAgbV9ieXRlcyA9IDA7CiAgICAgbV9zdGF0dXMgPSBGcmFtZUVtcHR5OwpAQCAtMTYw
LDI0ICsyMDUsNjMgQEAgdm9pZCBJbWFnZUZyYW1lOjpjbGVhclBpeGVsRGF0YSgpCiAgICAgLy8g
bGF0ZXIuCiB9CiAKK3Vuc2lnbmVkIEltYWdlRnJhbWU6OmNhbGN1bGF0ZVJlcXVpcmVkU2l6ZShp
bnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBzdHJpZGUsIGludCBhbGlnbm1lbnQpCit7CisgICAg
dW5zaWduZWQgcmVxdWlyZWRTaXplOworCisgICAgaWYgKCFzdHJpZGUpCisgICAgICAgIHN0cmlk
ZSA9IHdpZHRoICogbV9kZXB0aDsKKworICAgIGlmIChhbGlnbm1lbnQgPiAwICYmIGhlaWdodCAl
IGFsaWdubWVudCkKKyAgICAgICAgaGVpZ2h0ICs9IChhbGlnbm1lbnQgLSBoZWlnaHQgJSBhbGln
bm1lbnQpOworCisgICAgcmVxdWlyZWRTaXplID0gaGVpZ2h0ICogc3RyaWRlOworCisgICAgaWYg
KGFsaWdubWVudCA+IDAgJiYgcmVxdWlyZWRTaXplICUgYWxpZ25tZW50KQorICAgICAgICByZXF1
aXJlZFNpemUgKz0gYWxpZ25tZW50IC0gMTsKKworICAgIHJldHVybiByZXF1aXJlZFNpemU7Cit9
CisKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKK3ZvaWQgSW1hZ2VGcmFtZTo6dHJ5TWVt
b3J5TWFwcGluZyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBzdHJpZGUsIGludCBhbGlnbm1l
bnQpCit7CisgICAgQVNTRVJUKCFpc01lbW9yeU1hcHBlZCgpKTsKKworICAgIC8vIFVzZSBtYXBw
aW5ncyBvbmx5IGZvciBiaWdnZXIgaW1hZ2VzLgorICAgIHVuc2lnbmVkIG1hcHBpbmdTaXplID0g
Y2FsY3VsYXRlUmVxdWlyZWRTaXplKHdpZHRoLCBoZWlnaHQsIHN0cmlkZSwgYWxpZ25tZW50KTsK
KyAgICBpZiAobWFwcGluZ1NpemUgPCAyMCAqIDEwMjQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fZGlza0ltYWdlQ2FjaGVJZCA9IGRpc2tJbWFnZUNhY2hlKCkuY3JlYXRlRmlsZUJhY2tlZE1h
cHBpbmcobWFwcGluZ1NpemUpOworICAgIGlmIChtX2Rpc2tJbWFnZUNhY2hlSWQgPT0gRGlza0lt
YWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9i
eXRlcyA9IHN0YXRpY19jYXN0PFBpeGVsRGF0YSo+KGRpc2tJbWFnZUNhY2hlKCkuZGF0YUZvckl0
ZW0obV9kaXNrSW1hZ2VDYWNoZUlkKSk7CisgICAgbV9pc01lbW9yeU1hcHBlZCA9IHRydWU7Cit9
CisjZW5kaWYKKwogdm9pZCBJbWFnZUZyYW1lOjp6ZXJvRmlsbFBpeGVsRGF0YSgpCiB7Ci0gICAg
bWVtc2V0KG1fYnl0ZXMsIDAsIG1fc2l6ZS53aWR0aCgpICogbV9zaXplLmhlaWdodCgpICogc2l6
ZW9mKFBpeGVsRGF0YSkpOworICAgIG1lbXNldChtX2J5dGVzLCAwLCBjYWxjdWxhdGVSZXF1aXJl
ZFNpemUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgbV9zdHJpZGUsIG1fYWxpZ25t
ZW50KSk7CisKICAgICBtX2hhc0FscGhhID0gdHJ1ZTsKIH0KIAogdm9pZCBJbWFnZUZyYW1lOjp6
ZXJvRmlsbEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEFTU0VSVChJbnRS
ZWN0KEludFBvaW50KCksIG1fc2l6ZSkuY29udGFpbnMocmVjdCkpOworICAgIEFTU0VSVCghbV9z
dHJpZGUgJiYgIW1fYWxpZ25tZW50KTsgLy8gVE9ETwogCiAgICAgaWYgKHJlY3QuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzaXplX3QgcmVjdFdpZHRoSW5CeXRlcyA9IHJlY3Qu
d2lkdGgoKSAqIHNpemVvZihQaXhlbERhdGEpOwotICAgIFBpeGVsRGF0YSogc3RhcnQgPSBtX2J5
dGVzICsgKHJlY3QueSgpICogd2lkdGgoKSkgKyByZWN0LngoKTsKKyAgICBzaXplX3QgcmVjdFdp
ZHRoSW5CeXRlcyA9IHJlY3Qud2lkdGgoKSAqIG1fZGVwdGg7CisgICAgUGl4ZWxEYXRhKiBzdGFy
dCA9IG1fYnl0ZXMgKyAocmVjdC55KCkgKiB3aWR0aCgpICogbV9kZXB0aCkgKyByZWN0LngoKSAq
IG1fZGVwdGg7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZWN0LmhlaWdodCgpOyArK2kpIHsK
ICAgICAgICAgbWVtc2V0KHN0YXJ0LCAwLCByZWN0V2lkdGhJbkJ5dGVzKTsKLSAgICAgICAgc3Rh
cnQgKz0gd2lkdGgoKTsKKyAgICAgICAgc3RhcnQgKz0gd2lkdGgoKSAqIG1fZGVwdGg7CiAgICAg
fQogCiAgICAgc2V0SGFzQWxwaGEodHJ1ZSk7CkBAIC0xODgsMjIgKzI3Miw2OSBAQCBib29sIElt
YWdlRnJhbWU6OmNvcHlCaXRtYXBEYXRhKGNvbnN0IEltYWdlRnJhbWUmIG90aGVyKQogICAgIGlm
ICh0aGlzID09ICZvdGhlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX2JhY2tpbmdT
dG9yZSA9IG90aGVyLm1fYmFja2luZ1N0b3JlOwotICAgIG1fYnl0ZXMgPSBtX2JhY2tpbmdTdG9y
ZS5kYXRhKCk7CiAgICAgbV9zaXplID0gb3RoZXIubV9zaXplOworICAgIG1fZGVwdGggPSBvdGhl
ci5tX2RlcHRoOworICAgIG1fc3RyaWRlID0gb3RoZXIubV9zdHJpZGU7CisgICAgbV9hbGlnbm1l
bnQgPSBvdGhlci5tX2FsaWdubWVudDsKICAgICBzZXRIYXNBbHBoYShvdGhlci5tX2hhc0FscGhh
KTsKKworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGlmIChvdGhlci5tX2lzTWVt
b3J5TWFwcGVkKSB7CisgICAgICAgIHRyeU1lbW9yeU1hcHBpbmcobV9zaXplLndpZHRoKCksIG1f
c2l6ZS5oZWlnaHQoKSwgbV9zdHJpZGUsIG1fYWxpZ25tZW50KTsKKyAgICAgICAgaWYgKCFtX2lz
TWVtb3J5TWFwcGVkKSB7CisgICAgICAgICAgICBtX2J5dGVzID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBzaXplID0gY2Fs
Y3VsYXRlUmVxdWlyZWRTaXplKG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksCisgICAg
ICAgICAgICBtX3N0cmlkZSwgbV9hbGlnbm1lbnQpOworICAgICAgICBtZW1jcHkobV9ieXRlcywg
b3RoZXIubV9ieXRlcywgc2l6ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IG1faXNNZW1vcnlNYXBwZWQgPSBmYWxzZTsKKyAgICBtX2Rpc2tJbWFnZUNhY2hlSWQgPSBEaXNr
SW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkOworI2VuZGlmCisKKyAgICBtX2JhY2tpbmdT
dG9yZSA9IG90aGVyLm1fYmFja2luZ1N0b3JlOworICAgIG1fYnl0ZXMgPSBtX2JhY2tpbmdTdG9y
ZS5kYXRhKCk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbWFnZUZyYW1lOjpzZXRT
aXplKGludCBuZXdXaWR0aCwgaW50IG5ld0hlaWdodCkKK2Jvb2wgSW1hZ2VGcmFtZTo6c2V0U2l6
ZShpbnQgbmV3V2lkdGgsIGludCBuZXdIZWlnaHQsIGludCBzdHJpZGUsIGludCBhbGlnbm1lbnQs
IGJvb2wgdXNlRGlza0ltYWdlQ2FjaGUpCiB7CiAgICAgQVNTRVJUKCF3aWR0aCgpICYmICFoZWln
aHQoKSk7Ci0gICAgc2l6ZV90IGJhY2tpbmdTdG9yZVNpemUgPSBuZXdXaWR0aCAqIG5ld0hlaWdo
dDsKKyAgICBzaXplX3QgYmFja2luZ1N0b3JlU2l6ZTsKKworI2lmIEVOQUJMRShESVNLX0lNQUdF
X0NBQ0hFKQorICAgIGlmICh1c2VEaXNrSW1hZ2VDYWNoZSkKKyAgICAgICAgdHJ5TWVtb3J5TWFw
cGluZyhuZXdXaWR0aCwgbmV3SGVpZ2h0LCBzdHJpZGUsIGFsaWdubWVudCk7CisKKyAgICBpZiAo
aXNNZW1vcnlNYXBwZWQoKSkgeworICAgICAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRoLCBu
ZXdIZWlnaHQpOworICAgICAgICBtX3N0cmlkZSA9IHN0cmlkZTsKKyAgICAgICAgbV9hbGlnbm1l
bnQgPSBhbGlnbm1lbnQ7CisKKyAgICAgICAgLy8gbV9oYXNBbHBoYSBpcyBhc3NpbmdlZCB0byB0
cnVlIHRocm91Z2ggemVyb0ZpbGxQaXhlbERhdGEoKSB3aGVyZSBESVNLX0lNQUdFX0NBQ0hFIGlz
IGRpc2FibGVkLgorICAgICAgICAvLyBCdXQgbm93aGVyZSBkb2luZyBhIHNpbWlsYXIgd29yayB3
aGVuIERJU0tfSU1BR0VfQ0FDSEUgaXMgZW5hYmxlZC4gV2Ugc2hvdWxkIHNldCBtX2hhc0FscGhh
IHRvIHRydWUKKyAgICAgICAgLy8gd2hlbiBmaXJzdCBzZXR0aW5nIHNpemUgb2YgSW1hZ2VGcmFt
ZS4gT3RoZXJ3aXNlIGFscGhhIGJsZW5kaW5nIG9mIHNvbWUgaW1hZ2VzIHdvdWxkIGdvIHdyb25n
LgorICAgICAgICBtX2hhc0FscGhhID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odXNlRGlza0ltYWdlQ2FjaGUpOworI2VuZGlmCisK
KyAgICBiYWNraW5nU3RvcmVTaXplID0gY2FsY3VsYXRlUmVxdWlyZWRTaXplKG5ld1dpZHRoLCBu
ZXdIZWlnaHQsIHN0cmlkZSwgYWxpZ25tZW50KTsKKwogICAgIGlmICghbV9iYWNraW5nU3RvcmUu
dHJ5UmVzZXJ2ZUNhcGFjaXR5KGJhY2tpbmdTdG9yZVNpemUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgbV9iYWNraW5nU3RvcmUucmVzaXplKGJhY2tpbmdTdG9yZVNpemUpOwogICAgIG1f
Ynl0ZXMgPSBtX2JhY2tpbmdTdG9yZS5kYXRhKCk7CiAgICAgbV9zaXplID0gSW50U2l6ZShuZXdX
aWR0aCwgbmV3SGVpZ2h0KTsKKyAgICBtX3N0cmlkZSA9IHN0cmlkZTsKKyAgICBtX2FsaWdubWVu
dCA9IGFsaWdubWVudDsKIAogICAgIHplcm9GaWxsUGl4ZWxEYXRhKCk7CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yODQsNyArNDE1LDcgQEAgdW5zaWduZWQgSW1hZ2VEZWNvZGVyOjpmcmFtZUJ5dGVz
QXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5z
aXplKCkgPD0gaW5kZXgpCiAgICAgICAgIHJldHVybiAwOwogICAgIC8vIEZJWE1FOiBVc2UgdGhl
IGRpbWVuc2lvbiBvZiB0aGUgcmVxdWVzdGVkIGZyYW1lLgotICAgIHJldHVybiBtX3NpemUuYXJl
YSgpICogc2l6ZW9mKEltYWdlRnJhbWU6OlBpeGVsRGF0YSk7CisgICAgcmV0dXJuIG1fc2l6ZS5h
cmVhKCkgKiBtX2ZyYW1lQnVmZmVyQ2FjaGVbaW5kZXhdLmRlcHRoKCk7CiB9CiAKIHZvaWQgSW1h
Z2VEZWNvZGVyOjpwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAppbmRleCAy
YzAxZmRkOGE4NjZlMmJhYTRhMmI2YThjNWU3MDBjNGQzYzJjZmM4Li5iNzIwNzBlOWM5ZTNkNTA3
YWZkMGQ1OThlZjNjN2I1NGU2OGFmMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApAQCAtMyw2ICszLDcgQEAKICAq
IENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICogQ29weXJpZ2h0
IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ29sbGFib3JhIEx0ZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMzAsNyBAQAogI2lmbmRl
ZiBJbWFnZURlY29kZXJfaAogI2RlZmluZSBJbWFnZURlY29kZXJfaAogCisjaW5jbHVkZSAiRGlz
a0ltYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3Vy
Y2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgpAQCAtNjQsMTEgKzY2LDE1IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIERpc3Bvc2VPdmVyd3JpdGVQcmV2aW91cyAg
Ly8gQ2xlYXIgZnJhbWUgdG8gcHJldmlvdXMgZnJhbWVidWZmZXIKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudHMKICAgICAgICAgfTsKLSAgICAgICAgdHlw
ZWRlZiB1bnNpZ25lZCBQaXhlbERhdGE7CisgICAgICAgIHR5cGVkZWYgdW5zaWduZWQgY2hhciBQ
aXhlbERhdGE7CiAKICAgICAgICAgSW1hZ2VGcmFtZSgpOwogCi0gICAgICAgIEltYWdlRnJhbWUo
Y29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpIHsgb3BlcmF0b3I9KG90aGVyKTsgfQorI2lmIEVOQUJM
RShESVNLX0lNQUdFX0NBQ0hFKQorICAgICAgICB+SW1hZ2VGcmFtZSgpOworI2VuZGlmCisKKyAg
ICAgICAgSW1hZ2VGcmFtZShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcik7CiAKICAgICAgICAgLy8g
Rm9yIGJhY2tlbmRzIHdoaWNoIHJlZmNvdW50IHRoZWlyIGRhdGEsIHRoaXMgb3BlcmF0b3IgZG9l
c24ndCBuZWVkIHRvCiAgICAgICAgIC8vIGNyZWF0ZSBhIG5ldyBjb3B5IG9mIHRoZSBpbWFnZSBk
YXRhLCBvbmx5IGluY3JlYXNlIHRoZSByZWYgY291bnQuCkBAIC05Myw3ICs5OSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIEFTU0VSVChlbmRYIDw9IHdpZHRoKCkpOwogICAg
ICAgICAgICAgQVNTRVJUKHN0YXJ0WSA8IGhlaWdodCgpKTsKICAgICAgICAgICAgIEFTU0VSVChl
bmRZIDw9IGhlaWdodCgpKTsKLSAgICAgICAgICAgIGNvbnN0IGludCByb3dCeXRlcyA9IChlbmRY
IC0gc3RhcnRYKSAqIHNpemVvZihQaXhlbERhdGEpOworICAgICAgICAgICAgQVNTRVJUKCFtX3N0
cmlkZSAmJiAhbV9hbGlnbm1lbnQpOyAvLyBUT0RPCisgICAgICAgICAgICBjb25zdCBpbnQgcm93
Qnl0ZXMgPSAoZW5kWCAtIHN0YXJ0WCkgKiBtX2RlcHRoOwogICAgICAgICAgICAgY29uc3QgUGl4
ZWxEYXRhKiBjb25zdCBzdGFydEFkZHIgPSBnZXRBZGRyKHN0YXJ0WCwgc3RhcnRZKTsKICAgICAg
ICAgICAgIGZvciAoaW50IGRlc3RZID0gc3RhcnRZICsgMTsgZGVzdFkgPCBlbmRZOyArK2Rlc3RZ
KQogICAgICAgICAgICAgICAgIG1lbWNweShnZXRBZGRyKHN0YXJ0WCwgZGVzdFkpLCBzdGFydEFk
ZHIsIHJvd0J5dGVzKTsKQEAgLTEwMiwxOSArMTA5LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gQWxsb2NhdGVzIHNwYWNlIGZvciB0aGUgcGl4ZWwgZGF0YS4gIE11c3QgYmUg
Y2FsbGVkIGJlZm9yZSBhbnkgcGl4ZWxzCiAgICAgICAgIC8vIGFyZSB3cml0dGVuLiAgTXVzdCBv
bmx5IGJlIGNhbGxlZCBvbmNlLiAgUmV0dXJucyB3aGV0aGVyIGFsbG9jYXRpb24KICAgICAgICAg
Ly8gc3VjY2VlZGVkLgotICAgICAgICBib29sIHNldFNpemUoaW50IG5ld1dpZHRoLCBpbnQgbmV3
SGVpZ2h0KTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGludCBuZXdXaWR0aCwgaW50IG5ld0hlaWdo
dCwgaW50IHN0cmlkZSA9IDAsIGludCBhbGlnbm1lbnQgPSAwLCBib29sIHVzZURpc2tJbWFnZUNh
Y2hlID0gdHJ1ZSk7CiAKICAgICAgICAgLy8gUmV0dXJucyBhIGNhbGxlci1vd25lZCBwb2ludGVy
IHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBkYXRhLgogICAgICAgICAvLyAoQWN0dWFs
IHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQgYnkgQml0bWFwSW1hZ2UgYW5kIGZyZWVk
IGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIoKSkuCiAgICAgICAgIFBhc3NOYXRpdmVJ
bWFnZVB0ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3Q7CiAKKyAgICAgICAgaW50IHN0cmlkZUZv
cldpZHRoKGludCBkZXB0aCwgaW50IHdpZHRoKSBjb25zdDsKKwogICAgICAgICBib29sIGhhc0Fs
cGhhKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEludFJlY3QmIG9yaWdpbmFsRnJhbWVSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVjdDsgfQogICAgICAgICBGcmFtZVN0YXR1
cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogICAgICAgICB1bnNpZ25lZCBk
dXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KICAgICAgICAgRnJhbWVEaXNw
b3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcG9zYWxNZXRo
b2Q7IH0KICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9w
cmVtdWx0aXBseUFscGhhOyB9CisgICAgICAgIHVuc2lnbmVkIGRlcHRoKCkgY29uc3QgeyByZXR1
cm4gbV9kZXB0aDsgfQogCiAgICAgICAgIHZvaWQgc2V0SGFzQWxwaGEoYm9vbCBhbHBoYSk7CiAg
ICAgICAgIHZvaWQgc2V0Q29sb3JQcm9maWxlKGNvbnN0IENvbG9yUHJvZmlsZSYpOwpAQCAtMTIz
LDE1ICsxMzMsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldER1cmF0
aW9uKHVuc2lnbmVkIGR1cmF0aW9uKSB7IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsgfQogICAgICAg
ICB2b2lkIHNldERpc3Bvc2FsTWV0aG9kKEZyYW1lRGlzcG9zYWxNZXRob2QgbWV0aG9kKSB7IG1f
ZGlzcG9zYWxNZXRob2QgPSBtZXRob2Q7IH0KICAgICAgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFs
cGhhKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkgeyBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0
aXBseUFscGhhOyB9CisgICAgICAgIHZvaWQgc2V0RGVwdGgodW5zaWduZWQgZGVwdGgpIHsgbV9k
ZXB0aCA9IGRlcHRoOyB9CiAKICAgICAgICAgaW5saW5lIHZvaWQgc2V0UkdCQShpbnQgeCwgaW50
IHksIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2lnbmVkIGIsIHVuc2lnbmVkIGEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHNldFJHQkEoZ2V0QWRkcih4LCB5KSwgciwgZywgYiwgYSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBpbmxpbmUgUGl4ZWxEYXRhKiBnZXRBZGRyKGludCB4LCBpbnQg
eSkKKyAgICAgICAgaW5saW5lIFBpeGVsRGF0YSogZ2V0QWRkcihpbnQgeCwgaW50IHkpIGNvbnN0
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2J5dGVzICsgKHkgKiB3aWR0aCgpKSAr
IHg7CisgICAgICAgICAgICBpbnQgYWxpZ25tZW50T2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIGlu
dCBzdHJpZGUgPSB3aWR0aCgpICogbV9kZXB0aDsKKworICAgICAgICAgICAgaWYgKG1fYWxpZ25t
ZW50KQorICAgICAgICAgICAgICAgIGFsaWdubWVudE9mZnNldCA9ICh1aW50cHRyX3QpIG1fYnl0
ZXMgJSBtX2FsaWdubWVudDsKKworICAgICAgICAgICAgaWYgKG1fc3RyaWRlKQorICAgICAgICAg
ICAgICAgIHN0cmlkZSA9IG1fc3RyaWRlOworCisgICAgICAgICAgICByZXR1cm4gbV9ieXRlcyAr
IGFsaWdubWVudE9mZnNldCArICh5ICogc3RyaWRlKSArIHggKiBtX2RlcHRoOwogICAgICAgICB9
CiAKICAgICAgICAgaW5saW5lIGJvb2wgaGFzUGl4ZWxEYXRhKCkgY29uc3QKQEAgLTE1Myw3ICsx
NzMsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
bV9wcmVtdWx0aXBseUFscGhhICYmIGEgPCAyNTUpIHsKICAgICAgICAgICAgICAgICBpZiAoIWEp
IHsKLSAgICAgICAgICAgICAgICAgICAgKmRlc3QgPSAwOworCisgICAgICAgICAgICAgICAgICAg
IHN3aXRjaCAobV9kZXB0aCkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRlc3RbMF0gPSBkZXN0WzFdID0gMDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgNDogeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFswXSA9IGRlc3RbMV0g
PSBkZXN0WzJdID0gZGVzdFszXSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQogCkBAIC0xNjIsNyArMTk1LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
ICAgICBnID0gZml4UG9pbnRVbnNpZ25lZE11bHRpcGx5KGcsIGFscGhhTXVsdCk7CiAgICAgICAg
ICAgICAgICAgYiA9IGZpeFBvaW50VW5zaWduZWRNdWx0aXBseShiLCBhbHBoYU11bHQpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgKmRlc3QgPSAoYSA8PCAyNCB8IHIgPDwgMTYgfCBnIDw8
IDggfCBiKTsKKyAgICAgICAgICAgIHN3aXRjaCAobV9kZXB0aCkgeworICAgICAgICAgICAgY2Fz
ZSAyOiB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgcGl4ZWwgPSAoKHIgPj4gMykgPDwgMTEg
fCAoZyA+PiAyKSA8PCA1IHwgKGIgPj4gMykpOworICAgICAgICAgICAgICAgIGRlc3RbMF0gPSBw
aXhlbDsKKyAgICAgICAgICAgICAgICBkZXN0WzFdID0gcGl4ZWwgPj4gODsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgNDogeworICAgICAg
ICAgICAgICAgIGRlc3RbMF0gPSBiOworICAgICAgICAgICAgICAgIGRlc3RbMV0gPSBnOworICAg
ICAgICAgICAgICAgIGRlc3RbMl0gPSByOworICAgICAgICAgICAgICAgIGRlc3RbM10gPSBhOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCiAjaWYgRU5BQkxFKEFQTkcpCkBAIC0yMDcsNiArMjU2LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRElTS19JTUFH
RV9DQUNIRSkKKyAgICAgICAgYm9vbCBpc01lbW9yeU1hcHBlZCgpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBtX2lzTWVtb3J5TWFwcGVkOworICAgICAgICB9CisjZW5kaWYK
KwogICAgIHByaXZhdGU6CiAgICAgICAgIGludCB3aWR0aCgpIGNvbnN0CiAgICAgICAgIHsKQEAg
LTIxOCw2ICsyNzQsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJu
IG1fc2l6ZS5oZWlnaHQoKTsKICAgICAgICAgfQogCisgICAgICAgIHVuc2lnbmVkIGNhbGN1bGF0
ZVJlcXVpcmVkU2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBzdHJpZGUsIGludCBhbGln
bm1lbnQpOworCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgICAgIHZvaWQgdHJ5
TWVtb3J5TWFwcGluZyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBzdHJpZGUsIGludCBhbGln
bm1lbnQpOworI2VuZGlmCisKICAgICAgICAgVmVjdG9yPFBpeGVsRGF0YT4gbV9iYWNraW5nU3Rv
cmU7CiAgICAgICAgIFBpeGVsRGF0YSogbV9ieXRlczsgLy8gVGhlIG1lbW9yeSBpcyBiYWNrZWQg
YnkgbV9iYWNraW5nU3RvcmUuCiAgICAgICAgIEludFNpemUgbV9zaXplOwpAQCAtMjMyLDYgKzI5
NCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVuc2lnbmVkIG1fZHVyYXRpb247
CiAgICAgICAgIEZyYW1lRGlzcG9zYWxNZXRob2QgbV9kaXNwb3NhbE1ldGhvZDsKICAgICAgICAg
Ym9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CisKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkK
KyAgICAgICAgYm9vbCBtX2lzTWVtb3J5TWFwcGVkOworICAgICAgICBEaXNrSW1hZ2VDYWNoZUlk
IG1fZGlza0ltYWdlQ2FjaGVJZDsKKyNlbmRpZgorCisgICAgICAgIGludCBtX2RlcHRoOworICAg
ICAgICBpbnQgbV9zdHJpZGU7CisgICAgICAgIGludCBtX2FsaWdubWVudDsKICAgICB9OwogCiAg
ICAgLy8gSW1hZ2VEZWNvZGVyIGlzIGEgYmFzZSBmb3IgYWxsIGZvcm1hdC1zcGVjaWZpYyBkZWNv
ZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Y2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwCmluZGV4IDNmZTcwNDAyMzQx
OWQ5NzUzYjEzOTlkOWY2YzAwYjY3Mzk0NTEyOTYuLjllMDMwZDllNDgxMzQyMDI2YjhjOGIxYTk2
MGMyNzAwYjI4MzdlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHAKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ29sbGFib3JhIEx0ZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsOSArMzMsNTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBQYXNzTmF0aXZlSW1hZ2VQdHIgSW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJ
bWFnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Y3JlYXRlX2Zvcl9kYXRhKAotICAgICAgICByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIq
Pihjb25zdF9jYXN0PFBpeGVsRGF0YSo+KG1fYnl0ZXMpKSwKLSAgICAgICAgQ0FJUk9fRk9STUFU
X0FSR0IzMiwgd2lkdGgoKSwgaGVpZ2h0KCksIHdpZHRoKCkgKiBzaXplb2YoUGl4ZWxEYXRhKSkp
OworICAgIGludCBzdHJpZGUgPSBtX3N0cmlkZTsKKyAgICBjYWlyb19mb3JtYXRfdCBmb3JtYXQ7
CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlOworCisgICAgc3dpdGNoIChtX2RlcHRoKSB7
CisgICAgY2FzZSAyOgorICAgICAgICBmb3JtYXQgPSBDQUlST19GT1JNQVRfUkdCMTZfNTY1Owor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAgICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1B
VF9BUkdCMzI7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIXN0cmlk
ZSkKKyAgICAgICAgc3RyaWRlID0gd2lkdGgoKSAqIG1fZGVwdGg7CisKKyAgICBzdXJmYWNlID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEobV9ieXRlcywgZm9ybWF0LAorICAg
ICAgICB3aWR0aCgpLCBoZWlnaHQoKSwgc3RyaWRlKTsKKworICAgIGlmIChjYWlyb19zdXJmYWNl
X3N0YXR1cyhzdXJmYWNlKSAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykgeworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJu
IGFkb3B0UmVmKHN1cmZhY2UpOworfQorCitpbnQgSW1hZ2VGcmFtZTo6c3RyaWRlRm9yV2lkdGgo
aW50IGRlcHRoLCBpbnQgd2lkdGgpIGNvbnN0Cit7CisgICAgY2Fpcm9fZm9ybWF0X3QgZm9ybWF0
OworCisgICAgc3dpdGNoIChkZXB0aCkgeworICAgIGNhc2UgMjoKKyAgICAgICAgZm9ybWF0ID0g
Q0FJUk9fRk9STUFUX1JHQjE2XzU2NTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA0OgorICAg
ICAgICBmb3JtYXQgPSBDQUlST19GT1JNQVRfQVJHQjMyOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgcmV0dXJuIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKGZvcm1h
dCwgd2lkdGgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURl
Y29kZXIuY3BwCmluZGV4IGNkNTZlNjdlYjkxOGIxNjkzYzRlY2NmNzQwYWY4MGM4NTkzNmE3OTgu
LjU3OGRkMDFjOGIyNDU3Y2YzMTYxZTE0MmFmYmZiNWFjNGZlY2FiOTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJ
bWFnZURlY29kZXIuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
IENvbGxhYm9yYSBMdGQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzMSw3
ICsyMzIsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aGF2ZURlY29kZWRSb3codW5zaWduZWQg
ZnJhbWVJbmRleCwgY29uc3QgVmVjdG9yPHVuc2lnbmVkCiAgICAgICAgICAgICBpZiAod3JpdGVU
cmFuc3BhcmVudFBpeGVscykKICAgICAgICAgICAgICAgICBidWZmZXIuc2V0UkdCQShjdXJyZW50
QWRkcmVzcywgMCwgMCwgMCwgMCk7CiAgICAgICAgIH0KLSAgICAgICAgKytjdXJyZW50QWRkcmVz
czsKKyAgICAgICAgY3VycmVudEFkZHJlc3MgKz0gYnVmZmVyLmRlcHRoKCk7CiAgICAgfQogCiAg
ICAgLy8gVGVsbCB0aGUgZnJhbWUgdG8gY29weSB0aGUgcm93IGRhdGEgaWYgbmVlZCBiZS4KQEAg
LTM1Nyw3ICszNTgsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVu
c2lnbmVkIGZyYW1lSW5kZXgpCiAKICAgICBpZiAoIWZyYW1lSW5kZXgpIHsKICAgICAgICAgLy8g
VGhpcyBpcyB0aGUgZmlyc3QgZnJhbWUsIHNvIHdlJ3JlIG5vdCByZWx5aW5nIG9uIGFueSBwcmV2
aW91cyBkYXRhLgotICAgICAgICBpZiAoIWJ1ZmZlci0+c2V0U2l6ZShzY2FsZWRTaXplKCkud2lk
dGgoKSwgc2NhbGVkU2l6ZSgpLmhlaWdodCgpKSkKKyAgICAgICAgaWYgKCFidWZmZXItPnNldFNp
emUoc2NhbGVkU2l6ZSgpLndpZHRoKCksIHNjYWxlZFNpemUoKS5oZWlnaHQoKSwgMCwgMCwgZmFs
c2UpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIFRoZSBzdGFydGluZyBzdGF0ZSBmb3IgdGhpcyBmcmFtZSBkZXBlbmRzIG9uIHRoZSBw
cmV2aW91cyBmcmFtZSdzCkBAIC0zODgsNyArMzg5LDcgQEAgYm9vbCBHSUZJbWFnZURlY29kZXI6
OmluaXRGcmFtZUJ1ZmZlcih1bnNpZ25lZCBmcmFtZUluZGV4KQogICAgICAgICAgICAgaWYgKCFm
cmFtZUluZGV4IHx8IHByZXZSZWN0LmNvbnRhaW5zKEludFJlY3QoSW50UG9pbnQoKSwgc2NhbGVk
U2l6ZSgpKSkpIHsKICAgICAgICAgICAgICAgICAvLyBDbGVhcmluZyB0aGUgZmlyc3QgZnJhbWUs
IG9yIGEgZnJhbWUgdGhlIHNpemUgb2YgdGhlIHdob2xlCiAgICAgICAgICAgICAgICAgLy8gaW1h
Z2UsIHJlc3VsdHMgaW4gYSBjb21wbGV0ZWx5IGVtcHR5IGltYWdlLgotICAgICAgICAgICAgICAg
IGlmICghYnVmZmVyLT5zZXRTaXplKGJ1ZmZlclNpemUud2lkdGgoKSwgYnVmZmVyU2l6ZS5oZWln
aHQoKSkpCisgICAgICAgICAgICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoYnVmZmVyU2l6ZS53
aWR0aCgpLCBidWZmZXJTaXplLmhlaWdodCgpLCAwLCAwLCBmYWxzZSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgLy8gQ29weSB0aGUgd2hvbGUgcHJldmlvdXMgYnVmZmVyLCB0aGVuIGNsZWFyIGp1
c3QgaXRzIGZyYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYmJlNzA5
Y2JmOTYyMmE2YzA1NTU0YzgyOTlmMDRlMzcwMWEwNjYyMC4uZWYyODgzMmQ2NTA4ODMzMTQxZmQ3
MGUwNzA1M2Q0Njc0NGM5ZjkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBA
IC03LDYgKzcsNyBAQAogICogICBTdHVhcnQgUGFybWVudGVyIDxzdHVhcnRAbW96aWxsYS5jb20+
CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC02
ODcsNyArNjg4LDcgQEAgYm9vbCBKUEVHSW1hZ2VEZWNvZGVyOjpvdXRwdXRTY2FubGluZXMoSW1h
Z2VGcmFtZSYgYnVmZmVyKQogICAgICAgICBJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGN1cnJlbnRB
ZGRyZXNzID0gYnVmZmVyLmdldEFkZHIoMCwgZGVzdFkpOwogICAgICAgICBmb3IgKGludCB4ID0g
MDsgeCA8IHdpZHRoOyArK3gpIHsKICAgICAgICAgICAgIHNldFBpeGVsPGNvbG9yU3BhY2U+KGJ1
ZmZlciwgY3VycmVudEFkZHJlc3MsIHNhbXBsZXMsIGlzU2NhbGVkID8gbV9zY2FsZWRDb2x1bW5z
W3hdIDogeCk7Ci0gICAgICAgICAgICArK2N1cnJlbnRBZGRyZXNzOworICAgICAgICAgICAgY3Vy
cmVudEFkZHJlc3MgKz0gYnVmZmVyLmRlcHRoKCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0
dXJuIHRydWU7CkBAIC03MDQsMTAgKzcwNSwyOCBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91
dHB1dFNjYW5saW5lcygpCiAgICAgaWYgKG1fZnJhbWVCdWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8g
PSBtX3JlYWRlci0+aW5mbygpOworCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIg
aWYgbmVlZGVkLgogICAgIEltYWdlRnJhbWUmIGJ1ZmZlciA9IG1fZnJhbWVCdWZmZXJDYWNoZVsw
XTsKICAgICBpZiAoYnVmZmVyLnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsK
LSAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzY2FsZWRTaXplKCkud2lkdGgoKSwgc2NhbGVk
U2l6ZSgpLmhlaWdodCgpKSkKKyAgICAgICAgaW50IHN0cmlkZTsKKyAgICAgICAgaW50IGRlcHRo
ID0gNDsKKworICAgICAgICBpZiAoZ2V0ZW52KCJSR0I1NjUiKSkgeworI2lmIGRlZmluZWQoVFVS
Qk9fSlBFR19SR0JfU1dJWlpMRSkKKyAgICAgICAgICAgIC8vIFVwc3RyZWFtIGxpYmpwZWctdHVy
Ym8gY2Fubm90IHJlbmRlciB0byBSR0I1NjUgYXRtCisgICAgICAgICAgICBpZiAobV9zY2FsZWQg
fHwgIXR1cmJvU3dpenpsZWQoaW5mby0+b3V0X2NvbG9yX3NwYWNlKSkgeworI2Vsc2UKKyAgICAg
ICAgICAgIHsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGRlcHRoID0gMjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlci5zZXREZXB0aChkZXB0aCk7CisgICAgICAg
IHN0cmlkZSA9IGJ1ZmZlci5zdHJpZGVGb3JXaWR0aChkZXB0aCwgc2NhbGVkU2l6ZSgpLndpZHRo
KCkpOworICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXplKHNjYWxlZFNpemUoKS53aWR0aCgpLCBz
Y2FsZWRTaXplKCkuaGVpZ2h0KCksIHN0cmlkZSkpCiAgICAgICAgICAgICByZXR1cm4gc2V0RmFp
bGVkKCk7CiAgICAgICAgIGJ1ZmZlci5zZXRTdGF0dXMoSW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFs
KTsKICAgICAgICAgLy8gVGhlIGJ1ZmZlciBpcyB0cmFuc3BhcmVudCBvdXRzaWRlIHRoZSBkZWNv
ZGVkIGFyZWEgd2hpbGUgdGhlIGltYWdlIGlzCkBAIC03MTksMTIgKzczOCwxMCBAQCBib29sIEpQ
RUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAgICAgICAgIGJ1ZmZlci5zZXRPcmln
aW5hbEZyYW1lUmVjdChJbnRSZWN0KEludFBvaW50KCksIHNpemUoKSkpOwogICAgIH0KIAotICAg
IGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8gPSBtX3JlYWRlci0+aW5mbygpOwotCiAjaWYg
ZGVmaW5lZChUVVJCT19KUEVHX1JHQl9TV0laWkxFKQogICAgIGlmICghbV9zY2FsZWQgJiYgdHVy
Ym9Td2l6emxlZChpbmZvLT5vdXRfY29sb3Jfc3BhY2UpKSB7CiAgICAgICAgIHdoaWxlIChpbmZv
LT5vdXRwdXRfc2NhbmxpbmUgPCBpbmZvLT5vdXRwdXRfaGVpZ2h0KSB7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBjaGFyKiByb3cgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihidWZm
ZXIuZ2V0QWRkcigwLCBpbmZvLT5vdXRwdXRfc2NhbmxpbmUpKTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIqIHJvdyA9IGJ1ZmZlci5nZXRBZGRyKDAsIGluZm8tPm91dHB1dF9zY2FubGluZSk7
CiAgICAgICAgICAgICBpZiAoanBlZ19yZWFkX3NjYW5saW5lcyhpbmZvLCAmcm93LCAxKSAhPSAx
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICNpZiBVU0UoUUNNU0xJQikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5n
L1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNmQ0NDE1NTk0ZGEyZWYxNzA3YTZmNWM2OWRiZWVi
NDA3ODhkZTkxOC4uOTkzZTY1MTFlYzhkMTliOGU5YmM2MWQ2Mzc2YjQwNjgwODYxOThkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgQXBwbGUgSW5jLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9i
aWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDb2xs
YWJvcmEgTHRkLgogICoKICAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMpIDIwMDEgbW96aWxs
YS5vcmcKICAqCkBAIC01MDMsMTMgKzUwNCwxOSBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVh
ZGVyQXZhaWxhYmxlKCkKIAogc3RhdGljIGlubGluZSB2b2lkIHNldFBpeGVsUkdCKEltYWdlRnJh
bWU6OlBpeGVsRGF0YSogZGVzdCwgcG5nX2J5dGVwIHBpeGVsKQogewotICAgICpkZXN0ID0gMHhG
RjAwMDAwMFUgfCBwaXhlbFswXSA8PCAxNiB8IHBpeGVsWzFdIDw8IDggfCBwaXhlbFsyXTsKKyAg
ICBkZXN0WzBdID0gcGl4ZWxbMl07CisgICAgZGVzdFsxXSA9IHBpeGVsWzFdOworICAgIGRlc3Rb
Ml0gPSBwaXhlbFswXTsKKyAgICBkZXN0WzNdID0gMHhGRjsKIH0KIAogc3RhdGljIGlubGluZSB2
b2lkIHNldFBpeGVsUkdCQShJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGRlc3QsIHBuZ19ieXRlcCBw
aXhlbCwgdW5zaWduZWQgY2hhciYgbm9uVHJpdmlhbEFscGhhTWFzaykKIHsKICAgICB1bnNpZ25l
ZCBjaGFyIGEgPSBwaXhlbFszXTsKLSAgICAqZGVzdCA9IGEgPDwgMjQgfCBwaXhlbFswXSA8PCAx
NiB8IHBpeGVsWzFdIDw8IDggfCBwaXhlbFsyXTsKKyAgICBkZXN0WzBdID0gcGl4ZWxbMl07Cisg
ICAgZGVzdFsxXSA9IHBpeGVsWzFdOworICAgIGRlc3RbMl0gPSBwaXhlbFswXTsKKyAgICBkZXN0
WzNdID0gYTsKICAgICBub25Ucml2aWFsQWxwaGFNYXNrIHw9ICgyNTUgLSBhKTsKIH0KIApAQCAt
NTIwLDcgKzUyNywxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0UGl4ZWxQcmVtdWx0aXBsaWVk
UkdCQShJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGRlc3QsIHBuZ19ieQogICAgIHVuc2lnbmVkIGNo
YXIgZyA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsxXSAqIGEpOwogICAgIHVuc2lnbmVkIGNoYXIg
YiA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsyXSAqIGEpOwogCi0gICAgKmRlc3QgPSBhIDw8IDI0
IHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7CisgICAgZGVzdFswXSA9IGI7CisgICAgZGVzdFsxXSA9
IGc7CisgICAgZGVzdFsyXSA9IHI7CisgICAgZGVzdFszXSA9IGE7CiAgICAgbm9uVHJpdmlhbEFs
cGhhTWFzayB8PSAoMjU1IC0gYSk7CiB9CiAKQEAgLTY0Nyw4ICs2NTcsOSBAQCB2b2lkIFBOR0lt
YWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWdu
ZWQgcm93SW5kZXgsCiAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgewog
ICAgICAgICAgICAgcG5nX2J5dGVwIHBpeGVsID0gcm93ICsgbV9zY2FsZWRDb2x1bW5zW3hdICog
Y29sb3JDaGFubmVsczsKICAgICAgICAgICAgIHVuc2lnbmVkIGFscGhhID0gaGFzQWxwaGEgPyBw
aXhlbFszXSA6IDI1NTsKLSAgICAgICAgICAgIGJ1ZmZlci5zZXRSR0JBKGFkZHJlc3MrKywgcGl4
ZWxbMF0sIHBpeGVsWzFdLCBwaXhlbFsyXSwgYWxwaGEpOworICAgICAgICAgICAgYnVmZmVyLnNl
dFJHQkEoYWRkcmVzcywgcGl4ZWxbMF0sIHBpeGVsWzFdLCBwaXhlbFsyXSwgYWxwaGEpOwogICAg
ICAgICAgICAgbm9uVHJpdmlhbEFscGhhTWFzayB8PSAoMjU1IC0gYWxwaGEpOworICAgICAgICAg
ICAgYWRkcmVzcyArPSBidWZmZXIuZGVwdGgoKTsKICAgICAgICAgfQogICAgIH0gZWxzZQogI2Vu
ZGlmCkBAIC02NTYsMTUgKzY2NywyMSBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxh
YmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAgICAgICAg
IHBuZ19ieXRlcCBwaXhlbCA9IHJvdzsKICAgICAgICAgaWYgKGhhc0FscGhhKSB7CiAgICAgICAg
ICAgICBpZiAoYnVmZmVyLnByZW11bHRpcGx5QWxwaGEoKSkgewotICAgICAgICAgICAgICAgIGZv
ciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCwgcGl4ZWwgKz0gNCkKLSAgICAgICAgICAgICAg
ICAgICAgc2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQShhZGRyZXNzKyssIHBpeGVsLCBub25Ucml2
aWFsQWxwaGFNYXNrKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRo
OyArK3gsIHBpeGVsICs9IDQpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxQcmVtdWx0
aXBsaWVkUkdCQShhZGRyZXNzLCBwaXhlbCwgbm9uVHJpdmlhbEFscGhhTWFzayk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZHJlc3MgKz0gYnVmZmVyLmRlcHRoKCk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDQpCi0gICAgICAgICAgICAgICAgICAgIHNldFBpeGVs
UkdCQShhZGRyZXNzKyssIHBpeGVsLCBub25Ucml2aWFsQWxwaGFNYXNrKTsKKyAgICAgICAgICAg
ICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgc2V0UGl4ZWxSR0JBKGFkZHJlc3MsIHBpeGVsLCBub25Ucml2aWFsQWxw
aGFNYXNrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyArPSBidWZmZXIuZGVwdGgoKTsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDMpCi0gICAg
ICAgICAgICAgICAgc2V0UGl4ZWxSR0IoYWRkcmVzcysrLCBwaXhlbCk7CisgICAgICAgICAgICBm
b3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDMpIHsKKyAgICAgICAgICAg
ICAgICBzZXRQaXhlbFJHQihhZGRyZXNzLCBwaXhlbCk7CisgICAgICAgICAgICAgICAgYWRkcmVz
cyArPSBidWZmZXIuZGVwdGgoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRGlza0ltYWdlQ2FjaGVQ
T1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9EaXNrSW1hZ2VDYWNoZVBP
U0lYLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kOTJiMTQxZjQxNzg4NDlkZTUyMDdjOWFmODIzM2MwZmJiOGIx
NDA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRGlz
a0ltYWdlQ2FjaGVQT1NJWC5jcHAKQEAgLTAsMCArMSw0NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIENvbGxhYm9yYSBMdGQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJEaXNrSW1hZ2VDYWNoZS5oIgorCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUp
ICYmIE9TKFVOSVgpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8ZXJybm8uaD4K
KyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8c3lz
L3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8RGlza0ltYWdlQ2FjaGU+IGNhY2hlOworICAgIHJldHVybiBjYWNoZTsKK30K
KworRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpFbnRyeShTaGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGlz
a0ltYWdlQ2FjaGVJZCBpZCkKKyAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKKyAgICAsIG1faWQoaWQp
CisgICAgLCBtX3NpemUoMCkKKyAgICAsIG1fbWFwcGluZyhudWxscHRyKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBtX2J1ZmZlci0+
cmVmKCk7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiTmV3IEJVRkZFUiBFbnRyeTogaWQ9JXUi
LCBtX2lkKTsKK30KKworRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpFbnRyeSh1bnNpZ25lZCBzaXpl
LCBEaXNrSW1hZ2VDYWNoZUlkIGlkKQorICAgIDogbV9idWZmZXIobnVsbHB0cikKKyAgICAsIG1f
aWQoaWQpCisgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAsIG1fbWFwcGluZyhudWxscHRyKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFtX2J1ZmZlcik7CisgICAg
QVNTRVJUKG1fc2l6ZSk7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiTmV3IChzaXplOiAlLjJm
SykgRW50cnk6IGlkPSV1IiwgbV9zaXplIC8gMTAyNC4sIG1faWQpOworfQorCitEaXNrSW1hZ2VD
YWNoZTo6RW50cnk6On5FbnRyeSgpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAg
ICBBU1NFUlQoIW1fYnVmZmVyKTsKKyAgICBBU1NFUlQoIW1fbWFwcGluZyk7CisgICAgTE9HKERp
c2tJbWFnZUNhY2hlLCAiRGVzdHJveWluZyBFbnRyeTogaWQ9JXUiLCBtX2lkKTsKK30KKworYm9v
bCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcEludGVybmFsKCkKK3sKKyAgICBBU1NFUlQobV9i
dWZmZXIgfHwgbV9zaXplKTsKKyAgICBBU1NFUlQoIW1fbWFwcGluZyk7CisKKyAgICBpZiAobV9i
dWZmZXIpCisgICAgICAgIG1fc2l6ZSA9IG1fYnVmZmVyLT5zaXplKCk7CisKKyAgICBMT0coRGlz
a0ltYWdlQ2FjaGUsICJNYXBwaW5nIEVudHJ5OiBpZD0ldSIsIG1faWQpOworCisgICAgLy8gT3Bl
biB0aGUgZmlsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZy4KKyAgICBpbnQgZmQgPSBvcGVuKG1f
cGF0aC51dGY4KCkuZGF0YSgpLCBPX0NSRUFUIHwgT19SRFdSIHwgT19UUlVOQywgc3RhdGljX2Nh
c3Q8bW9kZV90PigwNjAwKSk7CisgICAgaWYgKGZkID09IC0xKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAgICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8g
dGhlIGZpbGUuCisgICAgICAgIGlmICh3cml0ZVRvRmlsZUludGVybmFsKGZkKSA9PSAtMSkgewor
ICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgZGVsZXRlRmlsZShtX3BhdGgpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gU2VlayBi
YWNrIHRvIHRoZSBiZWdpbm5pbmcuCisgICAgICAgIGlmIChsc2VlayhmZCwgMCwgU0VFS19TRVQp
ID09IC0xKSB7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICBkZWxldGVGaWxl
KG1fcGF0aCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAocG9zaXhfZmFsbG9jYXRlKGZkLCAwLCBtX3NpemUpKSB7CisgICAg
ICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICBkZWxldGVGaWxlKG1fcGF0aCk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGlzIG11
c3Qgbm90IGNvbmZsaWN0IHdpdGggdGhlIG9wZW4oKSBhYm92ZS4gRm9yIGdlbmVyaWMgZmlsZS1i
YWNrZWQgbWVtb3J5IHdlIGFsbG93CisgICAgLy8gd3JpdGluZywgc2luY2UgaXQncyBhY3R1YWxs
eSBzdXBwb3NlZCB0byBiZSBhIGJsYW5rIHNsYXRlIHRoYXQgd2lsbCBiZSBmaWxsZWQgYW5kIGVk
aXRlZAorICAgIC8vIGJ5IHRoZSBjYWxsZXIuCisgICAgaW50IG1tYXBGbGFncyA9IG1fYnVmZmVy
ID8gUFJPVF9SRUFEIDogUFJPVF9SRUFEIHwgUFJPVF9XUklURTsKKyAgICBtX21hcHBpbmcgPSBt
bWFwKG51bGxwdHIsIG1fc2l6ZSwgbW1hcEZsYWdzLCBNQVBfU0hBUkVELCBmZCwgMCk7CisgICAg
Y2xvc2UoZmQpOworICAgIGlmIChtX21hcHBpbmcgPT0gTUFQX0ZBSUxFRCkgeworICAgICAgICBM
T0coRGlza0ltYWdlQ2FjaGUsICJEaXNrSW1hZ2VDYWNoZTogbWFwcGluZyBmYWlsZWQgKCVkKTog
KCVzKSIsIGVycm5vLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBtX21hcHBpbmcgPSBudWxs
cHRyOworICAgICAgICBkZWxldGVGaWxlKG1fcGF0aCk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50
cnk6OmRpZEZhaWxNZW1vcnlNYXAoKQoreworICAgIG1fYnVmZmVyLT5mYWlsZWRNZW1vcnlNYXAo
KTsKKyAgICBtX2J1ZmZlci0+ZGVyZWYoKTsKKyAgICBtX2J1ZmZlciA9IDA7CisgICAgdGhpcy0+
ZGVyZWYoKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmRpZE1hcE1lbW9yeSgp
Cit7CisgICAgbV9idWZmZXItPm1hcmtBc01lbW9yeU1hcHBlZCgpOworICAgIG1fYnVmZmVyLT5k
ZXJlZigpOworICAgIG1fYnVmZmVyID0gMDsKKyAgICB0aGlzLT5kZXJlZigpOworfQorCitib29s
IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6c3luY2hyb25vdXNseU1hcCgpCit7CisgICAgQVNTRVJU
KCFtX3BhdGguaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyKTsKKyAgICBBU1NFUlQo
bV9zaXplKTsKKyAgICBBU1NFUlQoIW1fbWFwcGluZyk7CisKKyAgICByZXR1cm4gbWFwSW50ZXJu
YWwoKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcCgpCit7CisgICAgQVNT
RVJUKCFtX3BhdGguaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9idWZmZXIpOworICAgIEFTU0VS
VCghbV9tYXBwaW5nKTsKKworICAgIGJvb2wgZmlsZU1hcHBlZCA9IG1hcEludGVybmFsKCk7Cisg
ICAgaWYgKCFmaWxlTWFwcGVkKSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZCgmRGlz
a0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRGYWlsTWVtb3J5TWFwLCB0aGlzKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkRpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6ZGlkTWFwTWVtb3J5LCB0aGlzKSk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6
OkVudHJ5Ojp1bm1hcCgpCit7CisgICAgaWYgKCFtX21hcHBpbmcpIHsKKyAgICAgICAgQVNTRVJU
KCFtX3NpemUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTE9HKERpc2tJbWFnZUNh
Y2hlLCAiVW5NYXBwaW5nIEVudHJ5OiBpZD0ldSIsIG1faWQpOworCisgICAgaWYgKG11bm1hcCht
X21hcHBpbmcsIG1fc2l6ZSkgPT0gLTEpCisgICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2Fj
aGU6IENvdWxkIG5vdCBtdW5tYXAgYSBtZW1vcnkgbWFwcGVkIGZpbGUgd2l0aCBpZCAoJWQpIiwg
bV9pZCk7CisKKyAgICBtX21hcHBpbmcgPSBudWxscHRyOworICAgIG1fc2l6ZSA9IDA7Cit9CisK
K3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpyZW1vdmVGaWxlKCkKK3sKKyAgICBBU1NFUlQo
IW1fbWFwcGluZyk7CisgICAgQVNTRVJUKCFtX3NpemUpOworCisgICAgaWYgKCFkZWxldGVGaWxl
KG1fcGF0aCkpCisgICAgICAgIExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBk
ZWxldGUgbWVtb3J5IG1hcHBlZCBmaWxlICglcykiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSk7Cit9
CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjbGVhckRhdGFXaXRob3V0TWFwcGluZygp
Cit7CisgICAgQVNTRVJUKCFtX21hcHBpbmcpOworICAgIEFTU0VSVChtX2J1ZmZlcik7CisgICAg
bV9idWZmZXItPmRlcmVmKCk7CisgICAgbV9idWZmZXIgPSAwOworICAgIExPRyhEaXNrSW1hZ2VD
YWNoZSwgIkNsZWFyIGRhdGEgd2l0aG91dCBtYXBwaW5nIGZvciBFbnRyeTogaWQ9JXUiLCBtX2lk
KTsKK30KKworaW50IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6d3JpdGVUb0ZpbGVJbnRlcm5hbChp
bnQgZmQpCit7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsKKyAgICBpbnQgdG90YWxCeXRlc1dyaXR0
ZW4gPSAwOworCisgICAgY29uc3QgY2hhciogc2VnbWVudCA9IG51bGxwdHI7CisgICAgdW5zaWdu
ZWQgcG9zaXRpb24gPSAwOworICAgIHdoaWxlICh1bnNpZ25lZCBsZW5ndGggPSBtX2J1ZmZlci0+
Z2V0U29tZURhdGEoc2VnbWVudCwgcG9zaXRpb24pKSB7CisgICAgICAgIGludCBieXRlc1dyaXR0
ZW4gPSB3cml0ZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHNlZ21lbnQpLCBsZW5ndGgp
OworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0x
OworCisgICAgICAgIHRvdGFsQnl0ZXNXcml0dGVuICs9IGJ5dGVzV3JpdHRlbjsKKyAgICAgICAg
cG9zaXRpb24gKz0gbGVuZ3RoOworICAgIH0KKworICAgIHJldHVybiB0b3RhbEJ5dGVzV3JpdHRl
bjsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnNldFRlbXBvcmFyeUZpbGVQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBtX3BhdGggPSBwYXRoOworfQorCit2b2lkIERp
c2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2FuY2VsTWFwKCkKK3sKKyAgICBjbGVhckRhdGFXaXRob3V0
TWFwcGluZygpOworICAgIHRoaXMtPmRlcmVmKCk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6
OkVudHJ5OjptYXBUaHJlYWRTdGFydCh2b2lkKiBlbnRyeVB0cikKK3sKKyAgICBEaXNrSW1hZ2VD
YWNoZTo6RW50cnkqIGVudHJ5ID0gc3RhdGljX2Nhc3Q8RGlza0ltYWdlQ2FjaGU6OkVudHJ5Kj4o
ZW50cnlQdHIpOworICAgIFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQgPSBjdXJyZW50VGhyZWFk
KCk7CisKKyAgICBpZiAoZGlza0ltYWdlQ2FjaGUoKS5pc0Z1bGwoKSkgeworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKGJpbmQoJkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2FuY2VsTWFwLCBlbnRy
eSkpOworICAgICAgICBkZXRhY2hUaHJlYWQodGhyZWFkSUQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZW50cnktPm1hcCgpOworCisgICAgLy8gVXBkYXRlIHRoZSBzaXplIG9uIGEg
c3VjY2Vzc2Z1bCBtYXBwaW5nLgorICAgIGlmIChlbnRyeS0+aXNNYXBwZWQoKSkKKyAgICAgICAg
ZGlza0ltYWdlQ2FjaGUoKS51cGRhdGVTaXplKGVudHJ5LT5zaXplKCkpOworCisgICAgZGV0YWNo
VGhyZWFkKHRocmVhZElEKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmRpZFJl
bW92ZUZpbGUoKQoreworICAgIGRlcmVmKCk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVu
dHJ5OjpyZW1vdmVGaWxlVGhyZWFkU3RhcnQodm9pZCogZW50cnlQdHIpCit7CisgICAgRGlza0lt
YWdlQ2FjaGU6OkVudHJ5KiBlbnRyeSA9IHN0YXRpY19jYXN0PERpc2tJbWFnZUNhY2hlOjpFbnRy
eSo+KGVudHJ5UHRyKTsKKworICAgIGVudHJ5LT51bm1hcCgpOworICAgIGVudHJ5LT5yZW1vdmVG
aWxlKCk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkRpc2tJbWFnZUNhY2hlOjpFbnRy
eTo6ZGlkUmVtb3ZlRmlsZSwgZW50cnkpKTsKKyAgICBkZXRhY2hUaHJlYWQoY3VycmVudFRocmVh
ZCgpKTsKK30KKworRGlza0ltYWdlQ2FjaGU6OkRpc2tJbWFnZUNhY2hlKCkKKyAgICA6IG1fZW5h
YmxlZChmYWxzZSkKKyAgICAsIG1fc2l6ZSgwKQorICAgICwgbV9tYXhpbXVtQ2FjaGVTaXplKDEw
MCAqIDEwMjQgKiAxMDI0KQorICAgICwgbV9taW5pbXVtSW1hZ2VTaXplKDEwMCAqIDEwMjQpCisg
ICAgLCBtX25leHRBdmFpbGFibGVJZChEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlk
ICsgMSkKK3sKK30KKworU3RyaW5nIERpc2tJbWFnZUNhY2hlOjpwcmVwYXJlRmlsZSgpCit7Cisg
ICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhY3JlYXRlRGlyZWN0b3J5SWZOZWVkZWQoKSkKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworCisgICAgLy8gV2UgYXJlIGFscmVhZHkgZnVsbCwgY2Fubm90
IGFkZCBhbnl0aGluZyB1bnRpbCBzb21ldGhpbmcgaXMgcmVtb3ZlZC4KKyAgICBpZiAoaXNGdWxs
KCkpIHsKKyAgICAgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IGNvdWxk
IG5vdCBwcm9jZXNzIGFuIGl0ZW0gYmVjYXVzZSB0aGUgY2FjaGUgd2FzIGZ1bGwgYXQgKCVkKS4g
VGhlIFwibWF4XCIgYmVpbmcgKCVkKSIsIG1fc2l6ZSwgbV9tYXhpbXVtQ2FjaGVTaXplKTsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFy
eSBmaWxlIHBhdGguCisgICAgU3RyaW5nIHBhdGggPSB0ZW1wb3JhcnlGaWxlKCk7CisgICAgTE9H
KERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IGNyZWF0aW5nIGVudHJ5IGF0ICglcyki
LCBwYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChwYXRoLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gcGF0aDsKK30KKworRGlza0ltYWdlQ2FjaGVJ
ZCBEaXNrSW1hZ2VDYWNoZTo6Y3JlYXRlRmlsZUJhY2tlZE1hcHBpbmcodW5zaWduZWQgc2l6ZSkK
K3sKKyAgICBBU1NFUlQoc2l6ZSk7CisgICAgaWYgKCFzaXplKQorICAgICAgICByZXR1cm4gRGlz
a0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKKworICAgIFN0cmluZyBwYXRoID0gcHJl
cGFyZUZpbGUoKTsKKyAgICBpZiAocGF0aC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIERpc2tJ
bWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQ7CisKKyAgICBEaXNrSW1hZ2VDYWNoZUlkIGlk
ID0gbmV4dEF2YWlsYWJsZUlkKCk7CisgICAgUmVmUHRyPERpc2tJbWFnZUNhY2hlOjpFbnRyeT4g
ZW50cnkgPSBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmNyZWF0ZShzaXplLCBpZCk7CisgICAgbV90
YWJsZS5hZGQoaWQsIGVudHJ5KTsKKworICAgIGVudHJ5LT5zZXRUZW1wb3JhcnlGaWxlUGF0aChw
YXRoKTsKKworICAgIGlmICghZW50cnktPnN5bmNocm9ub3VzbHlNYXAoKSkKKyAgICAgICAgcmV0
dXJuIERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQ7CisKKyAgICAvLyBVcGRhdGUg
dGhlIHNpemUgb24gYSBzdWNjZXNzZnVsIG1hcHBpbmcuCisgICAgaWYgKGVudHJ5LT5pc01hcHBl
ZCgpKQorICAgICAgICB1cGRhdGVTaXplKGVudHJ5LT5zaXplKCkpOworCisgICAgcmV0dXJuIGlk
OworfQorCitEaXNrSW1hZ2VDYWNoZUlkIERpc2tJbWFnZUNhY2hlOjp3cml0ZUl0ZW0oUGFzc1Jl
ZlB0cjxTaGFyZWRCdWZmZXI+IGl0ZW0pCit7CisgICAgU3RyaW5nIHBhdGggPSBwcmVwYXJlRmls
ZSgpOworICAgIGlmIChwYXRoLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gRGlza0ltYWdlQ2Fj
aGU6OmludmFsaWREaXNrQ2FjaGVJZDsKKworICAgIC8vIENyZWF0ZSBhbiBlbnRyeS4KKyAgICBE
aXNrSW1hZ2VDYWNoZUlkIGlkID0gbmV4dEF2YWlsYWJsZUlkKCk7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gaXRlbTsKKyAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5
PiBlbnRyeSA9IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgaWQp
OworICAgIG1fdGFibGUuYWRkKGlkLCBlbnRyeSk7CisKKyAgICBlbnRyeS0+c2V0VGVtcG9yYXJ5
RmlsZVBhdGgocGF0aCk7CisKKyAgICAvLyBUaGUgbGlmZXRpbWUgb2YgdGhlIEVudHJ5IGlzIGhh
bmRsZWQgb24gdGhlIG1haW4gdGhyZWFkLiBCZWZvcmUgd2Ugc3RhcnQgYSB0aHJlYWQgd2UgbmVl
ZCB0bworICAgIC8vIHJlZiBzbyB0aGF0IHdlIGFyZSBzdXJlIHRoZSBvYmplY3Qgc3RpbGwgZXhp
c3RzLiBUaGlzIGNhbGwgaXMgYmFsYW5jZWQgaW4gdGhlIGNhbGxiYWNrcworICAgIC8vIGNhbGxl
ZCBmcm9tIEVudHJ5OjptYXAuCisgICAgZW50cnktPnJlZigpOworCisgICAgLy8gTWFwIHRvIGRp
c2sgYXN5bmNocm9ub3VzbHkuCisgICAgY3JlYXRlVGhyZWFkKERpc2tJbWFnZUNhY2hlOjpFbnRy
eTo6bWFwVGhyZWFkU3RhcnQsIGVudHJ5LmdldCgpLCAiV2ViQ29yZTogRGlza0ltYWdlQ2FjaGU6
Om1hcCIpOworCisgICAgcmV0dXJuIGlkOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjp1cGRh
dGVTaXplKHVuc2lnbmVkIGRlbHRhKQoreworICAgIE11dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7
CisgICAgbV9zaXplICs9IGRlbHRhOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpyZW1vdmVJ
dGVtKERpc2tJbWFnZUNhY2hlSWQgaWQpCit7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlz
a0ltYWdlQ2FjaGU6IHJlbW92ZUl0ZW0gKCVkKSIsIGlkKTsKKyAgICBSZWZQdHI8RGlza0ltYWdl
Q2FjaGU6OkVudHJ5PiBlbnRyeSA9IG1fdGFibGUuZ2V0KGlkKTsKKyAgICBtX3RhYmxlLnJlbW92
ZShpZCk7CisgICAgaWYgKCFlbnRyeS0+aXNNYXBwZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgdXBkYXRlU2l6ZSgtKGVudHJ5LT5zaXplKCkpKTsKKworICAgIGVudHJ5LT5yZWYoKTsKKwor
ICAgIGNyZWF0ZVRocmVhZChEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnJlbW92ZUZpbGVUaHJlYWRT
dGFydCwgZW50cnkuZ2V0KCksICJXZWJDb3JlOiBEaXNrSW1hZ2VDYWNoZTo6cmVtb3ZlSXRlbSIp
OworfQorCit2b2lkKiBEaXNrSW1hZ2VDYWNoZTo6ZGF0YUZvckl0ZW0oRGlza0ltYWdlQ2FjaGVJ
ZCBpZCkKK3sKKyAgICBBU1NFUlQoaWQpOworCisgICAgUmVmUHRyPERpc2tJbWFnZUNhY2hlOjpF
bnRyeT4gZW50cnkgPSBtX3RhYmxlLmdldChpZCk7CisgICAgQVNTRVJUKGVudHJ5LT5pc01hcHBl
ZCgpKTsKKyAgICByZXR1cm4gZW50cnktPmRhdGEoKTsKK30KKworYm9vbCBEaXNrSW1hZ2VDYWNo
ZTo6Y3JlYXRlRGlyZWN0b3J5SWZOZWVkZWQoKQoreworICAgIGlmICghbV9jYWNoZURpcmVjdG9y
eS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBtX2NhY2hlRGlyZWN0b3J5
ID0gdGVtcG9yYXJ5RGlyZWN0b3J5KCk7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0lt
YWdlQ2FjaGU6IENyZWF0ZWQgdGVtcG9yYXJ5IGRpcmVjdG9yeSAoJXMpIiwgbV9jYWNoZURpcmVj
dG9yeS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAobV9jYWNoZURpcmVjdG9yeS5pc051bGwoKSkg
eworICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNhY2hlOiBjb3VsZCBub3QgY3JlYXRlIGNh
Y2hlIGRpcmVjdG9yeSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkQ3JlYXRlRGlza0ltYWdlQ2FjaGVEaXJl
Y3RvcnkobV9jYWNoZURpcmVjdG9yeSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRGlza0lt
YWdlQ2FjaGVJZCBEaXNrSW1hZ2VDYWNoZTo6bmV4dEF2YWlsYWJsZUlkKCkKK3sKKyAgICByZXR1
cm4gbV9uZXh0QXZhaWxhYmxlSWQrKzsKK30KKworI2lmIFBMQVRGT1JNKEdUSykKKy8vIEZvciBH
VEsrIHdlIHVzZSBhIHdlbGwta25vd24gbmFtZSBpbnNpZGUgdGhlIHVzZXIncyBYREcgY2FjaGUg
ZGlyZWN0b3J5LCBzbyB0aGF0IHdlIGNhbgorLy8gYmV0dGVyIG1hbmFnZSBpdHMgY2xlYW51cC4K
K1N0cmluZyBEaXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5KCkKK3sKKyAgICBTdHJp
bmcgcGF0aCA9IGNyZWF0ZVVzZXJDYWNoZURpcmVjdG9yeSgiZGlzay1pbWFnZS1jYWNoZSIpOwor
ICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNo
ZTogQ291bGQgbm90IGNyZWF0ZSBjYWNoZSBkaXJlY3RvcnkuIik7CisKKyAgICAvLyBDbGVhbnVw
IHRoZSBkaXJlY3RvcnkuCisgICAgVmVjdG9yPFN0cmluZz4gaXRlbXMgPSBsaXN0RGlyZWN0b3J5
KHBhdGgsICJ0bXAqIik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7
IGkrKykKKyAgICAgICAgZGVsZXRlRmlsZShpdGVtc1tpXSk7CisKKyAgICByZXR1cm4gcGF0aDsK
K30KKyNlbHNlCitTdHJpbmcgRGlza0ltYWdlQ2FjaGU6OnRlbXBvcmFyeURpcmVjdG9yeSgpCit7
CisgICAgU3RyaW5nIHRlbXBEaXNrQ2FjaGVEaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJl
Y3RvcnkoIkRpc2tJbWFnZUNhY2hlIik7CisgICAgaWYgKHRlbXBEaXNrQ2FjaGVEaXJlY3Rvcnku
aXNFbXB0eSgpKQorICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNhY2hlOiBDb3VsZCBub3Qg
Y3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4iKTsKKworICAgIHJldHVybiB0ZW1wRGlza0Nh
Y2hlRGlyZWN0b3J5OworfQorI2VuZGlmCisKK1N0cmluZyBEaXNrSW1hZ2VDYWNoZTo6dGVtcG9y
YXJ5RmlsZSgpCit7CisgICAgU3RyaW5nIHRlbXBGaWxlID0gY3JlYXRlVGVtcG9yYXJ5RmlsZSht
X2NhY2hlRGlyZWN0b3J5LCAidG1wIik7CisgICAgaWYgKHRlbXBGaWxlLmlzRW1wdHkoKSkKKyAg
ICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogQ291bGQgbm90IGNyZWF0ZSBhIHRlbXBv
cmFyeSBmaWxlLiIpOworCisgICAgcmV0dXJuIHRlbXBGaWxlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkgJiYgT1MoVU5J
WCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1Q
T1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCmluZGV4IGZlMjc2YjBmZmQ0NjYwMGQwNGQzMTI3MmIxMTVmZmQyOTE0ZjYyOGQuLmI3ZTdm
ZTNkOTNhZTJiMGRlNTM4ODg2OTU0OWM5MjRjZTJmYmU5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMzIzLDYgKzMyMywy
MyBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29u
c3QgU3RyaW5nJiBmaWx0ZXIpCiB9CiAKICNpZiAhT1MoREFSV0lOKSB8fCBQTEFURk9STShFRkwp
IHx8IFBMQVRGT1JNKEdUSykKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwcmVmaXgpCit7CisgICAgY2hhciBidWZmZXJbUEFUSF9NQVhdOworICAgIGNvbnN0
IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7CisKKyAgICBpZiAoIXRtcERpcikKKyAg
ICAgICAgdG1wRGlyID0gIi90bXAiOworCisgICAgaWYgKHNucHJpbnRmKGJ1ZmZlciwgUEFUSF9N
QVgsICIlcy8lc1hYWFhYWCIsIHRtcERpciwgcHJlZml4LnV0ZjgoKS5kYXRhKCkpID49IFBBVEhf
TUFYKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpZiAobWtkdGVtcChidWZmZXIp
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRG
OChidWZmZXIpOworfQorCiBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBw
cmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogewogICAgIGNoYXIgYnVmZmVyW1BB
VEhfTUFYXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVk
QnVmZmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZl
clNvdXAuY3BwCmluZGV4IGNiZGIzMzc2MjNjMjkwNmY5M2YyYjk3MmEzMzBjZTU5NjBiOTljYTMu
LmE5ZDIwZGY3ZTY2Mzc2NDk1NWFlYTNjMWI4ZWQ5NmY5MGVkZGRlZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcApAQCAtMjIsMTIg
KzIyLDIwIEBACiAKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAorI2luY2x1ZGUgIkRpc2tJ
bWFnZUNhY2hlLmgiCisKICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihTb3VwQnVmZmVyKiBzb3VwQnVm
ZmVyKQogICAgIDogbV9idWZmZXIoYWRvcHRSZWYobmV3IERhdGFCdWZmZXIpKQorI2lmIEVOQUJM
RShESVNLX0lNQUdFX0NBQ0hFKQorICAgICwgbV9pc01lbW9yeU1hcHBlZChmYWxzZSkKKyAgICAs
IG1fZGlza0ltYWdlQ2FjaGVJZChEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkKQor
ICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFjayhudWxscHRyKQorICAgICwgbV9ub3Rp
ZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGEobnVsbHB0cikKKyNlbmRpZgogICAgICwgbV9zb3Vw
QnVmZmVyKHNvdXBCdWZmZXIpCiB7CiAgICAgQVNTRVJUKHNvdXBCdWZmZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CmluZGV4IDYyNzBkOGMxZjA4NzE4N2RjZWFlMjVlYWQxZjYxZWQzZGUyZTNiOGIuLjE1ODVmNjA4
ZjJiMjVlMjZjZTU4ODhlYzcwZmVmZGM5M2U3NTgzMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTEwOCw2
ICsxMDgsOSBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNob3VsZFVz
ZUZvbnRTbW9vdGhpbmc7CiAgICAgZW5jb2RlciA8PCBmb250V2hpdGVsaXN0OwogICAgIGVuY29k
ZXIgPDwgaWNvbkRhdGFiYXNlRW5hYmxlZDsKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkK
KyAgICBlbmNvZGVyIDw8IGRpc2tJbWFnZUNhY2hlRW5hYmxlZDsKKyNlbmRpZgogICAgIGVuY29k
ZXIgPDwgdGVybWluYXRpb25UaW1lb3V0OwogICAgIGVuY29kZXIgPDwgbGFuZ3VhZ2VzOwogICAg
IGVuY29kZXIgPDwgdGV4dENoZWNrZXJTdGF0ZTsKQEAgLTI0MSw2ICsyNDQsMTAgQEAgYm9vbCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIFdlYlByb2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5pY29uRGF0YWJhc2VFbmFibGVkKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5kaXNrSW1hZ2VDYWNoZUVuYWJsZWQpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudGVybWlu
YXRpb25UaW1lb3V0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy5sYW5ndWFnZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZTdiMThiOWUyNzJhZjgz
MjA3OTUyNzMzOTk1ZmZiOWQyODM0OTQwOC4uN2MyYTNiNGRlZTJhY2NmMDVhYzZjMTRlNDA0NGI4
YzRlNmU3YWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMTgsNiArMTE4LDEwIEBAIHN0cnVjdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIGJvb2wgaWNvbkRhdGFiYXNlRW5hYmxlZDsK
IAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGJvb2wgZGlza0ltYWdlQ2FjaGVF
bmFibGVkOworI2VuZGlmCisKICAgICBkb3VibGUgdGVybWluYXRpb25UaW1lb3V0OwogCiAgICAg
VmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAppbmRleCAxNGE4YzczNzRkYzEwNzIzZTNhNWEy
ODk4ZmU5ZTI0YTgyNzc3MTdmLi41NGEyYzRiNTg2NTc4ZjhmYjU2YjliZmMyZDNkMzc3ZDMwYjdk
MTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQ
b29sR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQ
b29sR3RrLmNwcApAQCAtMTA4LDYgKzEwOCwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmCiAg
ICAgICAgIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5k
aXNrQ2FjaGVEaXJlY3RvcnkoKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNI
RSkKKyAgICAvLyBUT0RPOiByZWFkIHZhbHVlIGZyb20gY29uZmlnCisgICAgcGFyYW1ldGVycy5k
aXNrSW1hZ2VDYWNoZUVuYWJsZWQgPSB0cnVlOworI2VuZGlmCiAgICAgcGFyYW1ldGVycy5tZW1v
cnlDYWNoZURpc2FibGVkID0gbV9tZW1vcnlDYWNoZURpc2FibGVkIHx8IGNhY2hlTW9kZWwoKSA9
PSBDYWNoZU1vZGVsRG9jdW1lbnRWaWV3ZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCmluZGV4IDcxYzkwM2JlZjYyMzNlNDQyOTYxNTE4ODA5ZTcwYzg0ODVh
MTA2MTIuLjNiNWFhY2UwM2Q0MTdhNmZmNWZmYWU1NGYxYTUyM2UyODUzMjdjZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgiCisjaW5jbHVkZSAi
RGlza0ltYWdlQ2FjaGUuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIkV2
ZW50RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCkBAIC0yOTksNiAr
MzAwLDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgbV9pY29uRGF0YWJhc2VQcm94
eS0+c2V0RW5hYmxlZChwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQpOwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICBkaXNrSW1hZ2VDYWNoZSgpLnNldEVu
YWJsZWQocGFyYW1ldGVycy5kaXNrSW1hZ2VDYWNoZUVuYWJsZWQpOworI2VuZGlmCisKICAgICBp
ZiAoIXBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzaW5nbGV0b24oKS5zZXRDYWNoZURpcmVjdG9y
eShwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNt
YWtlCmluZGV4IDU4Yzc1MzI4YjE3ZWUyMGM2OGUwM2YxMzkxOTE3MTJjM2Q3ZjVmOTguLmM2ZjBm
NDlkNzRjMTkxNTIzYzI2OTdlY2E5N2ExMjNjNTY3NzY1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9j
bWFrZS9PcHRpb25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtl
CkBAIC0xNTYsNiArMTU2LDcgQEAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0IFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSIFBSSVZBVEUgT0ZGKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RBVEFCQVNFX1BST0NFU1Mg
UFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EQVRB
TElTVF9FTEVNRU5UIFBSSVZBVEUgT0ZGKQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0RJU0tfSU1BR0VfQ0FDSEUgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRE9XTkxPQURfQVRUUklCVVRFIFBSSVZBVEUgT0ZGKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSBQ
UklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9FTkNS
WVBURURfTUVESUFfVjIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2Vi
S2l0RmVhdHVyZXMuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKaW5k
ZXggNTQ1OTg2ZjUwY2RhMDhmMmRmMTQ3MGVkYTVlY2JlZTlhOTE0YjRmOS4uZGM1NTBkNjY0MGM1
MmE2NmVmODYwMzU5YzFkMDg4YTVmYTIwYmFjYiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dl
YktpdEZlYXR1cmVzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFr
ZQpAQCAtNjgsNiArNjgsNyBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJ
VF9PUFRJT05fREVGSU5FKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQgIlRvZ2dsZSBIVE1MNSBkZXRh
aWxzIHN1cHBvcnQiIFBSSVZBVEUgT04pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0RFVklDRV9PUklFTlRBVElPTiAiVG9nZ2xlIERldmljZU9yaWVudGF0aW9uIHN1cHBvcnQiIFBS
SVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9ERkdfSklUICJUb2dn
bGUgZGF0YSBmbG93IGdyYXBoIEpJVCB0aWVyIiBQUklWQVRFIE9OKQorICAgIFdFQktJVF9PUFRJ
T05fREVGSU5FKEVOQUJMRV9ESVNLX0lNQUdFX0NBQ0hFICJUb2dnbGUgZGlzayBpbWFnZSBjYWNo
ZSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVf
RE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IgIlRvZ2dsZSBET000IEV2ZW50cyBjb25zdHJ1Y3RvcnMi
IFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9ET1dOTE9BRF9B
VFRSSUJVVEUgIlRvZ2dsZSBkb3dubG9hZCBhdHRyaWJ1dGUgc3VwcG9ydCIgUFJJVkFURSBPRkYp
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0RSQUdfU1VQUE9SVCAiVG9nZ2xlIERy
YWcgU3VwcG9ydCIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMjU0ZmIyMjhkNzAyZGMzY2Y4YmNlNmUwNjA4ZTM2NTY4MTc1
NTRmNi4uZjJjNDg0OWQwNjRjMjQ4ZjBjYjJmOTE3N2MxZWYzNWNiNjM2ODMyNCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBA
CisyMDE1LTA4LTE0ICBBbmRyZSBNb3JlaXJhIE1hZ2FsaGFlcyAgIDxhbmRyZS5tYWdhbGhhZXNA
Y29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFtHVEtdIFJlLWFkZCBEaXNrSW1hZ2VDYWNoZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDI4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBwYXJ0aWFsbHkgcmV2ZXJ0cyByMTczMjY1IGFuZCBpbmNsdWRlcyBjcm9zcy1wbGF0Zm9ybSBz
dXBwb3J0IGJhc2VkIG9uIHBhdGNoIGZyb20KKyAgICAgICAgYnVnICMxMjQxNjcgKHZpYSBQT1NJ
WCBpbXBsLCBhbHRob3VnaCBvbmx5IEdUSyBzdXBwb3J0IGlzIGVuYWJsZWQpLCBhcGFydCBmcm9t
IGZvbGxvd2luZworICAgICAgICBmZWF0dXJlczoKKworICAgICAgICAtIFBvcnRlZCBjaGFuZ2Vz
IHRvIGxhdGVzdCB1cHN0cmVhbSBtYXN0ZXIuCisgICAgICAgIC0gUmVtb3ZlIEVGTC9pT1Mgc3Vw
cG9ydCBhbmQgZW5hYmxlIEdUSyBzdXBwb3J0IG9ubHkuCisgICAgICAgIC0gUG9ydCB0byB3azIg
YW5kIGRyb3Agd2sxIHN1cHBvcnQuCisgICAgICAgIC0gSW50ZWdyYXRlIHdpdGggY21ha2UuCisg
ICAgICAgIC0gUG9ydCBJbWFnZURlY29kZXIgaW1wcm92ZW1lbnRzIHJlcXVpcmVkIGJ5IHRoaXMg
aW1wbGVtZW50YXRpb24uCisgICAgICAgIC0gTWVyZ2UgUmVzb3VyY2VCdWZmZXIgY2hhbmdlcyB0
byBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxp
c3QucG06CisKIDIwMTUtMDgtMTQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBzaG9ydGVuIGFub3RoZXIgdGVzdCB0aGF0IGlzIHRpbWluZyBv
dXQuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0g
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KaW5kZXggYzcxZjE0NjI1
YTIzNGQwMWE4MWEzNGFjODZmMzVlNDU5MjNmYjExMS4uNTllMWMzMWRmNTVhMmE2MmEzZjBhYmE4
NWFkYWViMWU4Y2IzZTI4YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0Zl
YXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5w
bQpAQCAtNzIsNiArNzIsNyBAQCBteSAoCiAgICAgJGRldGFpbHNFbGVtZW50U3VwcG9ydCwKICAg
ICAkZGV2aWNlT3JpZW50YXRpb25TdXBwb3J0LAogICAgICRkaXJlY3RvcnlVcGxvYWRTdXBwb3J0
LAorICAgICRkaXNrSW1hZ2VDYWNoZSwKICAgICAkZG9tNEV2ZW50c0NvbnN0cnVjdG9yLAogICAg
ICRkb3dubG9hZEF0dHJpYnV0ZVN1cHBvcnQsCiAgICAgJGZvbnRMb2FkRXZlbnRzU3VwcG9ydCwK
QEAgLTI0MCw2ICsyNDEsOSBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gImRl
dmljZS1vcmllbnRhdGlvbiIsIGRlc2MgPT4gIlRvZ2dsZSBEZXZpY2UgT3JpZW50YXRpb24gc3Vw
cG9ydCIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04iLCBkZWZh
dWx0ID0+IGlzSU9TV2ViS2l0KCksIHZhbHVlID0+IFwkZGV2aWNlT3JpZW50YXRpb25TdXBwb3J0
IH0sCiAKKyAgICB7IG9wdGlvbiA9PiAiZGlzay1pbWFnZS1jYWNoZSIsIGRlc2MgPT4gIlRvZ2ds
ZSBEaXNrIEltYWdlIENhY2hlIHN1cHBvcnQiLAorICAgICAgZGVmaW5lID0+ICJFTkFCTEVfRElT
S19JTUFHRV9DQUNIRSIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCRkaXNrSW1hZ2VDYWNoZSB9
LAorCiAgICAgeyBvcHRpb24gPT4gImRvbTQtZXZlbnRzLWNvbnN0cnVjdG9yIiwgZGVzYyA9PiAi
RXhwb3NlIERPTTQgRXZlbnRzIGNvbnN0cnVjdG9ycyIsCiAgICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9ET000X0VWRU5UU19DT05TVFJVQ1RPUiIsIGRlZmF1bHQgPT4gKGlzQXBwbGVXZWJLaXQoKSB8
fCBpc0d0aygpIHx8IGlzRWZsKCkpLCB2YWx1ZSA9PiBcJGRvbTRFdmVudHNDb25zdHJ1Y3RvciB9
LAogCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNTE4NWZmZjZlY2Nm
YzJkODMzMTlkYzYxZjM4NDhkNmVjYzNkMDc3ZS4uZWRjZGZjYTkxMzA1YzFlZjcwNDI4Yjk2OTA0
MmY3NWIwNmE3YmEwMCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDE1LTA4LTE0ICBBbmRyZSBNb3JlaXJhIE1hZ2FsaGFlcyAgIDxhbmRy
ZS5tYWdhbGhhZXNAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFtHVEtdIFJlLWFkZCBEaXNr
SW1hZ2VDYWNoZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ4MDI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBwYXJ0aWFsbHkgcmV2ZXJ0cyByMTczMjY1IGFuZCBpbmNsdWRlcyBjcm9z
cy1wbGF0Zm9ybSBzdXBwb3J0IGJhc2VkIG9uIHBhdGNoIGZyb20KKyAgICAgICAgYnVnICMxMjQx
NjcgKHZpYSBQT1NJWCBpbXBsLCBhbHRob3VnaCBvbmx5IEdUSyBzdXBwb3J0IGlzIGVuYWJsZWQp
LCBhcGFydCBmcm9tIGZvbGxvd2luZworICAgICAgICBmZWF0dXJlczoKKworICAgICAgICAtIFBv
cnRlZCBjaGFuZ2VzIHRvIGxhdGVzdCB1cHN0cmVhbSBtYXN0ZXIuCisgICAgICAgIC0gUmVtb3Zl
IEVGTC9pT1Mgc3VwcG9ydCBhbmQgZW5hYmxlIEdUSyBzdXBwb3J0IG9ubHkuCisgICAgICAgIC0g
UG9ydCB0byB3azIgYW5kIGRyb3Agd2sxIHN1cHBvcnQuCisgICAgICAgIC0gSW50ZWdyYXRlIHdp
dGggY21ha2UuCisgICAgICAgIC0gUG9ydCBJbWFnZURlY29kZXIgaW1wcm92ZW1lbnRzIHJlcXVp
cmVkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb24uCisgICAgICAgIC0gTWVyZ2UgUmVzb3VyY2VCdWZm
ZXIgY2hhbmdlcyB0byBTaGFyZWRCdWZmZXIuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0
aW9uc0dUSy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21h
a2U6CisgICAgICAgIEFkZCBvcHRpb24gdG8gZW5hYmxlIERpc2tJbWFnZUNhY2hlIGZlYXR1cmUg
Zm9yIEdUSyBidWlsZHMuCisKIDIwMTUtMDgtMTMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODg0Mjgu
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259022</attachid>
            <date>2015-08-14 12:20:34 -0700</date>
            <delta_ts>2015-12-31 14:56:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148028-20150814162014.patch</filename>
            <type>text/plain</type>
            <size>100068</size>
            <attacher name="Andre Moreira Magalhaes">andrunko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI2MTAxYzJlOWViOGEwMzIyZDE0Y2Qx
YTNjY2ZmOWNiZjMyNzY0YjYuLmNmYTc2Y2ViZjZkYmJjNTVkODZhNzdiMWM1MDI4ODNlOWRjZTg5
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDgtMTQgIEFuZHJlIE1vcmVpcmEgTWFnYWxo
YWVzICAgPGFuZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgW0dUS10g
UmUtYWRkIERpc2tJbWFnZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDgwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIHBhcnRpYWxseSByZXZlcnRzIHIxNzMyNjUgYW5kIGlu
Y2x1ZGVzIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQgYmFzZWQgb24gcGF0Y2ggZnJvbQorICAgICAg
ICBidWcgIzEyNDE2NyAodmlhIFBPU0lYIGltcGwsIGFsdGhvdWdoIG9ubHkgR1RLIHN1cHBvcnQg
aXMgZW5hYmxlZCksIGFwYXJ0IGZyb20gZm9sbG93aW5nCisgICAgICAgIGZlYXR1cmVzOgorCisg
ICAgICAgIC0gUG9ydGVkIGNoYW5nZXMgdG8gbGF0ZXN0IHVwc3RyZWFtIG1hc3Rlci4KKyAgICAg
ICAgLSBSZW1vdmUgRUZML2lPUyBzdXBwb3J0IGFuZCBlbmFibGUgR1RLIHN1cHBvcnQgb25seS4K
KyAgICAgICAgLSBQb3J0IHRvIHdrMiBhbmQgZHJvcCB3azEgc3VwcG9ydC4KKyAgICAgICAgLSBJ
bnRlZ3JhdGUgd2l0aCBjbWFrZS4KKyAgICAgICAgLSBQb3J0IEltYWdlRGVjb2RlciBpbXByb3Zl
bWVudHMgcmVxdWlyZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLSBNZXJnZSBS
ZXNvdXJjZUJ1ZmZlciBjaGFuZ2VzIHRvIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIHd0Zi9G
ZWF0dXJlRGVmaW5lcy5oOgorCiAyMDE1LTA4LTE0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTg4NDQ0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDFkODNjZWE4ZGIwNjJjY2MxMDE3ZTgzZTg1MTY4OGUyZTViYWQ1OWEu
LjcwMDRhODhmNzFkYmMwNGVmY2Q3MTk2Yzg5ZTc4NWE2NDlhZjY0NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNjggQEAKKzIwMTUtMDgtMTQgIEFuZHJlIE1vcmVpcmEgTWFnYWxoYWVzICAgPGFu
ZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgW0dUS10gUmUtYWRkIERp
c2tJbWFnZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDgwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIHBhcnRpYWxseSByZXZlcnRzIHIxNzMyNjUgYW5kIGluY2x1ZGVzIGNy
b3NzLXBsYXRmb3JtIHN1cHBvcnQgYmFzZWQgb24gcGF0Y2ggZnJvbQorICAgICAgICBidWcgIzEy
NDE2NyAodmlhIFBPU0lYIGltcGwsIGFsdGhvdWdoIG9ubHkgR1RLIHN1cHBvcnQgaXMgZW5hYmxl
ZCksIGFwYXJ0IGZyb20gZm9sbG93aW5nCisgICAgICAgIGZlYXR1cmVzOgorCisgICAgICAgIC0g
UG9ydGVkIGNoYW5nZXMgdG8gbGF0ZXN0IHVwc3RyZWFtIG1hc3Rlci4KKyAgICAgICAgLSBSZW1v
dmUgRUZML2lPUyBzdXBwb3J0IGFuZCBlbmFibGUgR1RLIHN1cHBvcnQgb25seS4KKyAgICAgICAg
LSBQb3J0IHRvIHdrMiBhbmQgZHJvcCB3azEgc3VwcG9ydC4KKyAgICAgICAgLSBJbnRlZ3JhdGUg
d2l0aCBjbWFrZS4KKyAgICAgICAgLSBQb3J0IEltYWdlRGVjb2RlciBpbXByb3ZlbWVudHMgcmVx
dWlyZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgLSBNZXJnZSBSZXNvdXJjZUJ1
ZmZlciBjaGFuZ2VzIHRvIFNoYXJlZEJ1ZmZlci4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisK
KyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogSW5jbHVkZSBQT1NJWCBpbXBsZW1lbnRhdGlv
biBvZiBEaXNrSW1hZ2VDYWNoZS4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmlzRGVjb2RlZERhdGFNZW1vcnlN
YXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNhblVzZURpc2tJbWFnZUNh
Y2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1c2VEaXNrSW1hZ2VDYWNoZSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlOjppc1VzaW5nRGlza0ltYWdlQ2FjaGUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmNhblVzZURp
c2tJbWFnZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjp1c2VEaXNr
SW1hZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6aXNEZWNvZGVk
RGF0YU1lbW9yeU1hcHBlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpwcnVuZUxpdmVSZXNvdXJjZXNUb1Np
emUpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmZsdXNoQ2FjaGVkSW1hZ2VzVG9E
aXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpUeXBlU3RhdGlzdGljOjphZGRS
ZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6ZHVtcFN0YXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpkdW1wTFJVTGlzdHMpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6
OlR5cGVTdGF0aXN0aWM6OlR5cGVTdGF0aXN0aWMpOgorICAgICAgICAqIHBsYXRmb3JtL0Rpc2tJ
bWFnZUNhY2hlLmg6IEFkZGVkIC0gYmFzZWQgb24gRGlza0ltYWdlQ2FjaGUgaU9TIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjppZCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJ
bWFnZUNhY2hlOjpFbnRyeTo6aXNNYXBwZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdl
Q2FjaGU6OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6aXNF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptYXhpbXVtQ2FjaGVTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNYXhpbXVtQ2FjaGVTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjptaW5pbXVtSW1hZ2VTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpzZXRNaW5pbXVtSW1hZ2VTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpjYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1h
Z2VDYWNoZTo6aXNGdWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp+RGlz
a0ltYWdlQ2FjaGUpOgorICAgICAgICAqIHBsYXRmb3JtL0Rpc2tJbWFnZUNhY2hlQ2xpZW50Lmg6
IEFkZGVkIC0gYmFzZWQgb24gRGlza0ltYWdlQ2FjaGUgaU9TIGltcGxlbWVudGF0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGVDbGllbnQ6On5EaXNrSW1hZ2VDYWNoZUNsaWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L0xvZ2dpbmcuaDogQWRkIGNhdGVnb3J5IGZvciBEaXNrSW1hZ2VDYWNoZS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjp+U2hhcmVk
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aXNBbGxvd2VkVG9CZU1l
bW9yeU1hcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmlzVXNpbmdEaXNr
SW1hZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmFsbG93VG9CZU1l
bW9yeU1hcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmZhaWxlZE1lbW9y
eU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1hcmtBc01lbW9yeU1hcHBl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1lbW9yeU1hcHBlZE5vdGlmaWNh
dGlvbkNhbGxiYWNrRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Om1lbW9y
eU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6c2V0TWVtb3J5TWFwcGVkTm90aWZpY2F0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkQnVmZmVyOjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6YnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpp
c01lbW9yeU1hcHBlZCk6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIpOiBJbml0aWFs
aXplIHRoZSBEaXNrSW1hZ2VDYWNoZSBtZW1iZXJzIG9uIGN1c3RvbQorICAgICAgICBjb25zdHJ1
Y3RvcnMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmlzTWVtb3J5TWFwcGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpGcmFtZURh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZTo6aXNNZW1vcnlNYXBwZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUlz
TWVtb3J5TWFwcGVkQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVVc2VyQ2FjaGVEaXJlY3RvcnkpOiBHVEsrIGltcGxlbWVudGF0
aW9uIG9mIG5ldyBtZXRob2QgdXNlZCBieSB0aGUKKyAgICAgICAgRGlza0ltYWdlQ2FjaGUgdG8g
Y3JlYXRlIGEgY2FjaGUgZGlyZWN0b3J5IHRvIHNhdmUgZGF0YSBvbiBkaXNrLgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KTogZGl0dG8gYnV0IGNyZWF0ZXMgYSB0
ZW1wb3JhcnkgZGlyZWN0b3J5LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5Rmls
ZSk6IGRpdHRvIGJ1dCBjcmVhdGVzIGEgdGVtcG9yYXJ5IGZpbGUuCisgICAgICAgICogcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcDogSW1hZ2VEZWNvZGVyIGltcHJvdmVt
ZW50cyByZXF1aXJlZCBieQorICAgICAgICBEaXNrSW1hZ2VDYWNoZS4KKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRnJhbWU6OkltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFt
ZTo6fkltYWdlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2xlYXJQaXhl
bERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Y2FsY3VsYXRlUmVxdWlyZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnRyeU1lbW9yeU1hcHBpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxQaXhlbERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6emVyb0ZpbGxGcmFtZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VGcmFtZTo6Y29weUJpdG1hcERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VGcmFtZTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1l
Qnl0ZXNBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OmNvcHlSb3dOVGltZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6ZGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6c2V0RGVwdGgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZTo6Z2V0
QWRkcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lOjpzZXRSR0JBKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRnJhbWU6OmlzTWVtb3J5TWFwcGVkKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9jYWlyby9JbWFnZURlY29kZXJDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUZyYW1lOjphc05ld05hdGl2ZUltYWdlKTogQ29uc2lkZXIgaW1hZ2UgZGVw
dGggdG8gZGVmaW5lIGZvcm1hdC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWU6OnN0cmlk
ZUZvcldpZHRoKTogTmV3IG1ldGhvZCB0byByZXRyaWV2ZSBhIHN0cmlkZSBnaXZlbiBhIGltYWdl
IGRlcHRoCisgICAgICAgIGFuZCB3aWR0aC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDogVGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gaW1h
Z2UgZGVwdGguCisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmhhdmVEZWNvZGVk
Um93KToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6aW5pdEZyYW1lQnVmZmVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29kZXI6Om91dHB1
dFNjYW5saW5lcyk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0lt
YWdlRGVjb2Rlci5jcHA6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWxSR0IpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0UGl4ZWxSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFBp
eGVsUHJlbXVsdGlwbGllZFJHQkEpOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VEZWNvZGVy
Ojpyb3dBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL3Bvc2l4L0Rpc2tJbWFnZUNhY2hl
UE9TSVguY3BwOiBBZGRlZCAtIFBPU0lYIGltcGxlbWVudGF0aW9uIG9mIERpc2tJbWFnZUNhY2hl
LgorICAgICAgICAoV2ViQ29yZTo6ZGlza0ltYWdlQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1h
Z2VDYWNoZTo6RW50cnk6On5FbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNo
ZTo6RW50cnk6Om1hcEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6ZGlkRmFpbE1lbW9yeU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VD
YWNoZTo6RW50cnk6OmRpZE1hcE1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VD
YWNoZTo6RW50cnk6OnN5bmNocm9ub3VzbHlNYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlza0lt
YWdlQ2FjaGU6OkVudHJ5OjptYXApOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6
OkVudHJ5Ojp1bm1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6
OnJlbW92ZUZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpj
bGVhckRhdGFXaXRob3V0TWFwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNo
ZTo6RW50cnk6OndyaXRlVG9GaWxlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0lt
YWdlQ2FjaGU6OkVudHJ5OjpzZXRUZW1wb3JhcnlGaWxlUGF0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmNhbmNlbE1hcCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcFRocmVhZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkUmVtb3ZlRmlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OnJlbW92ZUZpbGVUaHJlYWRTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6RGlza0ltYWdlQ2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlza0ltYWdlQ2FjaGU6OnByZXBhcmVGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c2tJbWFnZUNhY2hlOjpjcmVhdGVGaWxlQmFja2VkTWFwcGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNrSW1hZ2VDYWNoZTo6d3JpdGVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFn
ZUNhY2hlOjp1cGRhdGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpy
ZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjpkYXRhRm9ySXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6Y3JlYXRlRGlyZWN0b3J5SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGlza0ltYWdlQ2FjaGU6Om5leHRBdmFpbGFibGVJ
ZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RGlyZWN0b3J5
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc2tJbWFnZUNhY2hlOjp0ZW1wb3JhcnlGaWxlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KTogUE9TSVggaW1wbGVtZW50YXRpb24gb2Yg
bmV3IG1ldGhvZCB1c2VkIGJ5IHRoZQorICAgICAgICBEaXNrSW1hZ2VDYWNoZSB0byBjcmVhdGUg
YSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgorICAgICAgICAqIHBsYXRmb3JtL3NvdXAvU2hhcmVkQnVm
ZmVyU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZl
cik6IEluaXRpYWxpemUgdGhlIERpc2tJbWFnZUNhY2hlIG1lbWJlcnMgb24gY3VzdG9tCisgICAg
ICAgIGNvbnN0cnVjdG9yLgorCiAyMDE1LTA4LTE0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgTWF2ZXJpY2tzIGJ1aWxkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDVhMjkwZWQ1YTBlZTY2ZTI4NGQzMTMwYjJmOWZkZGViNjJhYWZkNGYuLmFhMmUwYzA0
YTM0NWQ0MWFiODQ5OTE2OWUwMzEzZDQxZjEwM2ZlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MSBAQAorMjAxNS0wOC0xNCAgQW5kcmUgTW9yZWlyYSBNYWdhbGhhZXMgICA8YW5kcmUubWFnYWxo
YWVzQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBbR1RLXSBSZS1hZGQgRGlza0ltYWdlQ2Fj
aGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODAy
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggcGFydGlhbGx5IHJldmVydHMgcjE3MzI2NSBhbmQgaW5jbHVkZXMgY3Jvc3MtcGxhdGZv
cm0gc3VwcG9ydCBiYXNlZCBvbiBwYXRjaCBmcm9tCisgICAgICAgIGJ1ZyAjMTI0MTY3ICh2aWEg
UE9TSVggaW1wbCwgYWx0aG91Z2ggb25seSBHVEsgc3VwcG9ydCBpcyBlbmFibGVkKSwgYXBhcnQg
ZnJvbSBmb2xsb3dpbmcKKyAgICAgICAgZmVhdHVyZXM6CisKKyAgICAgICAgLSBQb3J0ZWQgY2hh
bmdlcyB0byBsYXRlc3QgdXBzdHJlYW0gbWFzdGVyLgorICAgICAgICAtIFJlbW92ZSBFRkwvaU9T
IHN1cHBvcnQgYW5kIGVuYWJsZSBHVEsgc3VwcG9ydCBvbmx5LgorICAgICAgICAtIFBvcnQgdG8g
d2syIGFuZCBkcm9wIHdrMSBzdXBwb3J0LgorICAgICAgICAtIEludGVncmF0ZSB3aXRoIGNtYWtl
LgorICAgICAgICAtIFBvcnQgSW1hZ2VEZWNvZGVyIGltcHJvdmVtZW50cyByZXF1aXJlZCBieSB0
aGlzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAtIE1lcmdlIFJlc291cmNlQnVmZmVyIGNoYW5n
ZXMgdG8gU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwOiBBZGQgcGFyYW1ldGVyIHRvIGVuYWJsZSBEaXNrSW1hZ2VDYWNoZS4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6IFVuY29uZGl0
aW9uYWxseSBlbmFibGUKKyAgICAgICAgRGlza0ltYWdlQ2FjaGUgZm9yIEdUSyBpZiBlbmFibGVk
IGF0IGJ1aWxkIHRpbWUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDogRW5h
YmxlIERpc2tJbWFnZUNhY2hlIGJhc2VkIG9uIHBhcmFtZXRlcnMgcmVjZWl2ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKwogMjAxNS0wOC0x
NCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVj
dWxhdGl2ZSBmaXggZm9yIGlPUyBidWlsZCBmYWlsdXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVzLmgK
aW5kZXggZThlZDhjZjUzZGIwY2NlNjY3N2JhZDViNmNiNmJkZjgzODhjMjVlYS4uNDAzZTI5YTU1
ZTVkYzg2YzJkYTJhZjliNGFiZjUyYzA3ZDkxMjEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5lcy5o
CkBAIC03NCw2ICs3NCwxMCBAQAogI2RlZmluZSBFTkFCTEVfQ1VSU09SX1NVUFBPUlQgMAogI2Vu
ZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfRElTS19JTUFHRV9DQUNIRSkKKyNkZWZpbmUgRU5B
QkxFX0RJU0tfSU1BR0VfQ0FDSEUgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfRFJB
R19TVVBQT1JUKQogI2RlZmluZSBFTkFCTEVfRFJBR19TVVBQT1JUIDAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQppbmRleCAyZTlkYWE5NmJlZjg3OGIwMmExZTNjMjU2ZTUyYzIxNzFi
YmI2NTc2Li5mMTQyNGFhOTM0M2UxYjJiNjMwY2MxYjVjMzU2ZDJkY2I5ZWNhNDU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTg4LDYgKzE4OCw4IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9TeW5jaHJvbm91c0xvYWRlckNs
aWVudFNvdXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0
R2VuZXJpYy5jcHAKIAorICAgIHBsYXRmb3JtL3Bvc2l4L0Rpc2tJbWFnZUNhY2hlUE9TSVguY3Bw
CisKICAgICBwbGF0Zm9ybS9zb3VwL1B1YmxpY1N1ZmZpeFNvdXAuY3BwCiAgICAgcGxhdGZvcm0v
c291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcAogICAgIHBsYXRmb3JtL3NvdXAvVVJMU291cC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGRmMzM2
NzVjNjNiNWRiNGFmMDNlMzI5MzdjOTFhOWQ3MzQwNGE3MGEuLjQ0N2Q0NTcxMDM1MmQyZjAzMWVl
MTFmYmU4ODJlNDA0MWEyY2IwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcApAQCAtNDcsNiArNDcsMTAgQEAKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKERJU0tfSU1BR0Vf
Q0FDSEUpCisjaW5jbHVkZSAiRGlza0ltYWdlQ2FjaGUuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZP
Uk0oSU9TKQogI2luY2x1ZGUgIlN5c3RlbU1lbW9yeS5oIgogI2VuZGlmCkBAIC00NTQsNiArNDU4
LDEzIEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2ZWQo
cmVzcG9uc2UpOwogfQogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCitib29sIENhY2hl
ZEltYWdlOjppc0RlY29kZWREYXRhTWVtb3J5TWFwcGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pbWFnZS0+aXNNZW1vcnlNYXBwZWQoKTsKK30KKyNlbmRpZgorCiB2b2lkIENhY2hlZEltYWdl
OjpkZXN0cm95RGVjb2RlZERhdGEoKQogewogICAgIGJvb2wgY2FuRGVsZXRlSW1hZ2UgPSAhbV9p
bWFnZSB8fCAobV9pbWFnZS0+aGFzT25lUmVmKCkgJiYgbV9pbWFnZS0+aXNCaXRtYXBJbWFnZSgp
KTsKQEAgLTUwNiw2ICs1MTcsNDAgQEAgYm9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lS25v
d25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogICAgIHJldHVybiBp
bWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCk7CiB9CiAKKyNpZiBFTkFCTEUoRElT
S19JTUFHRV9DQUNIRSkKK2Jvb2wgQ2FjaGVkSW1hZ2U6OmNhblVzZURpc2tJbWFnZUNhY2hlKCkg
Y29uc3QKK3sKKyAgICBpZiAoaXNMb2FkaW5nKCkgfHwgZXJyb3JPY2N1cnJlZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fZGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKG1fZGF0YS0+c2l6ZSgpIDwgZGlza0ltYWdlQ2FjaGUoKS5taW5pbXVtSW1h
Z2VTaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJDYWNoZS1Db250cm9s
OiBuby1zdG9yZSIgcmVzb3VyY2VzIG1heSBiZSBtYXJrZWQgYXMgc3VjaCBiZWNhdXNlIHRoZXkg
bWF5CisgICAgLy8gY29udGFpbiBzZW5zaXRpdmUgaW5mb3JtYXRpb24uIFdlIHNob3VsZCBub3Qg
d3JpdGUgdGhlc2UgcmVzb3VyY2VzIHRvIGRpc2suCisgICAgaWYgKG1fcmVzcG9uc2UuY2FjaGVD
b250cm9sQ29udGFpbnNOb1N0b3JlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8v
IFRlc3Rpbmcgc2hvd3MgdGhhdCBQREYgaW1hZ2VzIGRpZCBub3Qgd29yayB3aGVuIG1lbW9yeSBt
YXBwZWQuCisgICAgLy8gSG93ZXZlciwgU1ZHIGltYWdlcyBhbmQgQml0bWFwIGltYWdlcyB3ZXJl
IGZpbmUuIFNlZToKKyAgICAvLyA8cmRhcjovL3Byb2JsZW0vODU5MTgzND4gRGlzayBJbWFnZSBD
YWNoZSBzaG91bGQgc3VwcG9ydCBQREYgSW1hZ2VzCisgICAgaWYgKG1fcmVzcG9uc2UubWltZVR5
cGUoKSA9PSAiYXBwbGljYXRpb24vcGRmIikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ2FjaGVkSW1hZ2U6OnVzZURpc2tJbWFnZUNhY2hlKCkK
K3sKKyAgICBBU1NFUlQoY2FuVXNlRGlza0ltYWdlQ2FjaGUoKSk7CisgICAgQVNTRVJUKCFpc1Vz
aW5nRGlza0ltYWdlQ2FjaGUoKSk7CisgICAgbV9kYXRhLT5hbGxvd1RvQmVNZW1vcnlNYXBwZWQo
KTsKK30KKyNlbmRpZgorCiBib29sIENhY2hlZEltYWdlOjppc09yaWdpbkNsZWFuKFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBpZiAoIWltYWdlKCktPmhhc1NpbmdsZVNl
Y3VyaXR5T3JpZ2luKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CmluZGV4IDg4NTkyNTIzMmI2M2FiNTkwZDQzODZkY2MyY2VmNjI2NThiZDI4NDMuLmE1NDZhZDhl
YzdlZjE3MWQ3NmNiNGQzMTM1NTE4NWE0Y2I5NTI1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC04Nyw2ICs4NywxMiBAQCBwdWJsaWM6CiAgICAgUmV2
YWxpZGF0aW9uRGVjaXNpb24gbWFrZVJldmFsaWRhdGlvbkRlY2lzaW9uKENhY2hlUG9saWN5KSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRl
ciYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpIG92ZXJyaWRlOwogCisjaWYgRU5BQkxF
KERJU0tfSU1BR0VfQ0FDSEUpCisgICAgdmlydHVhbCBib29sIGNhblVzZURpc2tJbWFnZUNhY2hl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVzZURpc2tJbWFnZUNhY2hlKCkg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzRGVjb2RlZERhdGFNZW1vcnlNYXBwZWQoKSBj
b25zdCBvdmVycmlkZTsKKyNlbmRpZgorCiAgICAgYm9vbCBpc09yaWdpbkNsZWFuKFNlY3VyaXR5
T3JpZ2luKik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAppbmRleCBkYTQ0Y2M4M2ZlYzQwMGJiODBhMzAwMzI0YTZlMDNmNjUz
NjZkY2M2Li45NTE1ZjkyM2FkYTQ3NDgzNDVhNGYyMzAwODRiOTA3OGQ3ZDE1YTg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTc3Niw4
ICs3NzYsMTQgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6Q2FsbGJhY2s6OnRpbWVyRmlyZWQoKQog
ICAgIG1fcmVzb3VyY2UuZGlkQWRkQ2xpZW50KCZtX2NsaWVudCk7CiB9CiAKLSNpZiBVU0UoRk9V
TkRBVElPTikgfHwgVVNFKFNPVVApCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCitib29s
IENhY2hlZFJlc291cmNlOjppc1VzaW5nRGlza0ltYWdlQ2FjaGUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2RhdGEgJiYgbV9kYXRhLT5pc1VzaW5nRGlza0ltYWdlQ2FjaGUoKTsKK30KKyNlbmRp
ZgogCisjaWYgVVNFKEZPVU5EQVRJT04pIHx8IFVTRShTT1VQKQogdm9pZCBDYWNoZWRSZXNvdXJj
ZTo6dHJ5UmVwbGFjZUVuY29kZWREYXRhKFNoYXJlZEJ1ZmZlciYgbmV3QnVmZmVyKQogewogICAg
IGlmICghbV9kYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuaAppbmRleCBiN2JmYTcxNzE5MDQ4MTllMzI1YjM4Nzk4ZjEyYWNjNTFhOGUzMjcwLi5hOWJh
NTNhNDViZDllYTY0MmVkMDZlMzBiYWVlNmExYzFiY2JmNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjUyLDYgKzI1MiwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRMb2FkRmluaXNoVGltZShkb3VibGUgZmluaXNoVGltZSkgeyBtX2xv
YWRGaW5pc2hUaW1lID0gZmluaXNoVGltZTsgfQogICAgIGRvdWJsZSBsb2FkRmluaXNoVGltZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG9hZEZpbmlzaFRpbWU7IH0KIAorI2lmIEVOQUJMRShESVNLX0lN
QUdFX0NBQ0hFKQorICAgIGJvb2wgaXNVc2luZ0Rpc2tJbWFnZUNhY2hlKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGNhblVzZURpc2tJbWFnZUNhY2hlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXNlRGlza0ltYWdlQ2FjaGUoKSB7IEFTU0VSVChjYW5Vc2VE
aXNrSW1hZ2VDYWNoZSgpKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0RlY29kZWREYXRhTWVtb3J5
TWFwcGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH07CisjZW5kaWYKKwogI2lmIFVTRShGT1VO
REFUSU9OKSB8fCBVU0UoU09VUCkKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRyeVJlcGxhY2VF
bmNvZGVkRGF0YShTaGFyZWRCdWZmZXImKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKaW5kZXggNmZiOWU3MzY1YWM2NzZiYjUwODUwNWIxNmI4
ZDQ4NzQzYTgyYzNlNS4uNWQ5Nzc1MzM4ZDg0YWFhY2IxOGExZmEwOTNiNThhMGE4ZjI0ODA0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCkBAIC00Niwx
MCArNDYsMTcgQEAKICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisjaW5j
bHVkZSAiRGlza0ltYWdlQ2FjaGUuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBjb25zdCBpbnQgY0RlZmF1bHRDYWNoZUNhcGFjaXR5ID0gODE5MiAqIDEwMjQ7CiBz
dGF0aWMgY29uc3QgZG91YmxlIGNNaW5EZWxheUJlZm9yZUxpdmVEZWNvZGVkUHJ1bmUgPSAxOyAv
LyBTZWNvbmRzLgorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorc3RhdGljIGNvbnN0IGRv
dWJsZSBjTWF4RGVsYXlCZWZvcmVMaXZlRGVjb2RlZFBydW5lID0gMTA7IC8vIFNlY29uZHMuCisj
ZW5kaWYKIHN0YXRpYyBjb25zdCBmbG9hdCBjVGFyZ2V0UHJ1bmVQZXJjZW50YWdlID0gLjk1Zjsg
Ly8gUGVyY2VudGFnZSBvZiBjYXBhY2l0eSB0b3dhcmQgd2hpY2ggd2UgcHJ1bmUsIHRvIGF2b2lk
IGltbWVkaWF0ZWx5IHBydW5pbmcgYWdhaW4uCiBzdGF0aWMgY29uc3QgYXV0byBkZWZhdWx0RGVj
b2RlZERhdGFEZWxldGlvbkludGVydmFsID0gc3RkOjpjaHJvbm86OnNlY29uZHMgeyAwIH07CiAK
QEAgLTMxNyw5ICszMjQsMTggQEAgdm9pZCBNZW1vcnlDYWNoZTo6cHJ1bmVMaXZlUmVzb3VyY2Vz
VG9TaXplKHVuc2lnbmVkIHRhcmdldFNpemUsIGJvb2wgc2hvdWxkRGVzdHIKICAgICAgICAgICAg
IGlmIChjdXJyZW50LT5kZWNvZGVkRGF0YUlzUHVyZ2VhYmxlKCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAgICAgICAgIC8v
IFRocm93aW5nIGF3YXkgcmVzb3VyY2VzIGNhY2hlZCBpbiB0aGUgZGlzayBpbWFnZSBjYWNoZSBk
b2VzIG5vCisgICAgICAgICAgICAvLyBnb29kIGZvciBtZW1vcnkgY29uc3VtcHRpb24sIHNvIHN0
aWNrIHRvIHRoZW0uIFVubGVzcyB0aGUgY2FjaGUgaXMgZnVsbCwKKyAgICAgICAgICAgIC8vIGlu
IHdoaWNoIGNhc2Ugd2Ugd2FudCB0byB0aHJvdyBhd2F5IGl0ZW1zIHRoYXQgaGF2ZSBub3QgYmVl
biBhY2Nlc3NlZAorICAgICAgICAgICAgLy8gZm9yIGEgd2hpbGUsIHRvIGdpdmUgcm9vbSBmb3Ig
b3RoZXJzLgorICAgICAgICAgICAgaWYgKCFjdXJyZW50LT5pc0RlY29kZWREYXRhTWVtb3J5TWFw
cGVkKCkgfHwgKGRpc2tJbWFnZUNhY2hlKCkuaXNGdWxsKCkgJiYgZWxhcHNlZFRpbWUgPj0gY01h
eERlbGF5QmVmb3JlTGl2ZURlY29kZWRQcnVuZSkpCisgICAgICAgICAgICAgICAgY3VycmVudC0+
ZGVzdHJveURlY29kZWREYXRhKCk7CisjZWxzZQogICAgICAgICAgICAgLy8gRGVzdHJveSBvdXIg
ZGVjb2RlZCBkYXRhLiBUaGlzIHdpbGwgcmVtb3ZlIHVzIGZyb20gbV9saXZlRGVjb2RlZFJlc291
cmNlcywgYW5kIHBvc3NpYmx5IG1vdmUgdXMKICAgICAgICAgICAgIC8vIHRvIGEgZGlmZmVyZW50
IExSVSBsaXN0IGluIG1fYWxsUmVzb3VyY2VzLgogICAgICAgICAgICAgY3VycmVudC0+ZGVzdHJv
eURlY29kZWREYXRhKCk7CisjZW5kaWYKIAogICAgICAgICAgICAgaWYgKHRhcmdldFNpemUgJiYg
bV9saXZlU2l6ZSA8PSB0YXJnZXRTaXplKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTQw
OCw2ICs0MjQsNTAgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cHJ1bmVEZWFkUmVzb3VyY2VzVG9TaXpl
KHVuc2lnbmVkIHRhcmdldFNpemUpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKERJU0tfSU1BR0Vf
Q0FDSEUpCit2b2lkIE1lbW9yeUNhY2hlOjpmbHVzaENhY2hlZEltYWdlc1RvRGlzaygpCit7Cisg
ICAgaWYgKCFkaXNrSW1hZ2VDYWNoZSgpLmlzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisK
KyNpZm5kZWYgTkRFQlVHCisgICAgZG91YmxlIHN0YXJ0ID0gV1RGOjpjdXJyZW50VGltZU1TKCk7
CisgICAgdW5zaWduZWQgcmVzb3VyY2VDb3VudCA9IDA7CisgICAgdW5zaWduZWQgY2FjaGVkU2l6
ZSA9IDA7CisjZW5kaWYKKworICAgIGZvciAoaW50IGkgPSBtX2FsbFJlc291cmNlcy5zaXplKCkg
LSAxOyBpID49IDA7IGktLSkgeworICAgICAgICBMUlVMaXN0JiBsaXN0ID0gKm1fYWxsUmVzb3Vy
Y2VzW2ldOworCisgICAgICAgIGF1dG8gaXQgPSBsaXN0LmJlZ2luKCk7CisgICAgICAgIHdoaWxl
IChpdCAhPSBsaXN0LmVuZCgpKSB7CisgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSYgY3VycmVu
dCA9ICoqaXQ7CisKKyAgICAgICAgICAgIC8vIEluY3JlbWVudCB0aGUgaXRlcmF0b3Igbm93IGFz
IHRoZSBjYWxsIHRvIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIGJlbG93IG1heQorICAgICAgICAgICAg
Ly8gaW52YWxpZGF0ZSB0aGUgY3VycmVudCBpdGVyYXRvci4KKyAgICAgICAgICAgICsraXQ7CisK
KyAgICAgICAgICAgIC8vIFByb3RlY3QgJ25leHQnIHNvIGl0IGNhbid0IGdldCBkZWxldGVkIGR1
cmluZyBkZXN0cm95RGVjb2RlZERhdGEoKS4KKyAgICAgICAgICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiBuZXh0ID0gaXQgIT0gbGlzdC5lbmQoKSA/ICppdCA6IG51bGxw
dHI7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnQuaXNVc2luZ0Rpc2tJbWFnZUNhY2hlKCkgJiYg
Y3VycmVudC5jYW5Vc2VEaXNrSW1hZ2VDYWNoZSgpKSB7CisgICAgICAgICAgICAgICAgY3VycmVu
dC51c2VEaXNrSW1hZ2VDYWNoZSgpOworICAgICAgICAgICAgICAgIGN1cnJlbnQuZGVzdHJveURl
Y29kZWREYXRhKCk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAgICAgICAgIExPRyhEaXNrSW1h
Z2VDYWNoZSwgIkNhY2hlOjpkaXNrQ2FjaGVSZXNvdXJjZXMoKTogYXR0ZW1wdGluZyB0byBzYXZl
ICglZCkgYnl0ZXMiLCBjdXJyZW50LnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7CisgICAgICAg
ICAgICAgICAgKytyZXNvdXJjZUNvdW50OworICAgICAgICAgICAgICAgIGNhY2hlZFNpemUgKz0g
Y3VycmVudC5yZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCk7CisjZW5kaWYKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBkb3VibGUgZW5kID0gV1RG
OjpjdXJyZW50VGltZU1TKCk7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2Fj
aGU6IHRvb2sgKCVmKSBtcyB0byBjYWNoZSAoJWQpIGJ5dGVzIGZvciAoJWQpIHJlc291cmNlcyIs
IGVuZCAtIHN0YXJ0LCBjYWNoZWRTaXplLCByZXNvdXJjZUNvdW50KTsKKyNlbmRpZgorfQorI2Vu
ZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorCiB2b2lkIE1lbW9yeUNhY2hlOjpzZXRD
YXBhY2l0aWVzKHVuc2lnbmVkIG1pbkRlYWRCeXRlcywgdW5zaWduZWQgbWF4RGVhZEJ5dGVzLCB1
bnNpZ25lZCB0b3RhbEJ5dGVzKQogewogICAgIEFTU0VSVChtaW5EZWFkQnl0ZXMgPD0gbWF4RGVh
ZEJ5dGVzKTsKQEAgLTY3MCw2ICs3MzAsMTAgQEAgdm9pZCBNZW1vcnlDYWNoZTo6VHlwZVN0YXRp
c3RpYzo6YWRkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNlKQogICAgIHNpemUgKz0g
cmVzb3VyY2Uuc2l6ZSgpOwogICAgIGxpdmVTaXplICs9IHJlc291cmNlLmhhc0NsaWVudHMoKSA/
IHJlc291cmNlLnNpemUoKSA6IDA7CiAgICAgZGVjb2RlZFNpemUgKz0gcmVzb3VyY2UuZGVjb2Rl
ZFNpemUoKTsKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAvLyBPbmx5IHRoZSBk
YXRhIGluc2lkZSB0aGUgcmVzb3VyY2Ugd2FzIG1hcHBlZCwgbm90IHRoZSBlbnRpcmUgcmVzb3Vy
Y2UuCisgICAgbWFwcGVkU2l6ZSArPSByZXNvdXJjZS5pc1VzaW5nRGlza0ltYWdlQ2FjaGUoKSA/
IHJlc291cmNlLnJlc291cmNlQnVmZmVyKCktPnNpemUoKSA6IDA7CisjZW5kaWYKIH0KIAogTWVt
b3J5Q2FjaGU6OlN0YXRpc3RpY3MgTWVtb3J5Q2FjaGU6OmdldFN0YXRpc3RpY3MoKQpAQCAtNzcy
LDkgKzgzNiwxNSBAQCB2b2lkIE1lbW9yeUNhY2hlOjpwcnVuZVNvb24oKQogdm9pZCBNZW1vcnlD
YWNoZTo6ZHVtcFN0YXRzKCkKIHsKICAgICBTdGF0aXN0aWNzIHMgPSBnZXRTdGF0aXN0aWNzKCk7
CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgcHJpbnRmKCIlLTEzcyAlLTEzcyAl
LTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzc1xuIiwgIiIsICJDb3VudCIsICJTaXplIiwgIkxp
dmVTaXplIiwgIkRlY29kZWRTaXplIiwgIk1hcHBlZCIsICJcIlJlYWxcIiIpOworICAgIHByaW50
ZigiJS0xM3MgJS0xM3MgJS0xM3MgJS0xM3MgJS0xM3MgJS0xM3MgJS0xM3NcbiIsICItLS0tLS0t
LS0tLS0tIiwgIi0tLS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0t
IiwgIi0tLS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIik7Cisg
ICAgcHJpbnRmKCIlLTEzcyAlMTNkICUxM2QgJTEzZCAlMTNkICUxM2QgJTEzZFxuIiwgIkltYWdl
cyIsIHMuaW1hZ2VzLmNvdW50LCBzLmltYWdlcy5zaXplLCBzLmltYWdlcy5saXZlU2l6ZSwgcy5p
bWFnZXMuZGVjb2RlZFNpemUsIHMuaW1hZ2VzLm1hcHBlZFNpemUsIHMuaW1hZ2VzLnNpemUgLSBz
LmltYWdlcy5tYXBwZWRTaXplKTsKKyNlbHNlCiAgICAgcHJpbnRmKCIlLTEzcyAlLTEzcyAlLTEz
cyAlLTEzcyAlLTEzc1xuIiwgIiIsICJDb3VudCIsICJTaXplIiwgIkxpdmVTaXplIiwgIkRlY29k
ZWRTaXplIik7CiAgICAgcHJpbnRmKCIlLTEzcyAlLTEzcyAlLTEzcyAlLTEzcyAlLTEzc1xuIiwg
Ii0tLS0tLS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIsICItLS0tLS0tLS0tLS0tIiwgIi0tLS0t
LS0tLS0tLS0iLCAiLS0tLS0tLS0tLS0tLSIpOwogICAgIHByaW50ZigiJS0xM3MgJTEzZCAlMTNk
ICUxM2QgJTEzZFxuIiwgIkltYWdlcyIsIHMuaW1hZ2VzLmNvdW50LCBzLmltYWdlcy5zaXplLCBz
LmltYWdlcy5saXZlU2l6ZSwgcy5pbWFnZXMuZGVjb2RlZFNpemUpOworI2VuZGlmCiAgICAgcHJp
bnRmKCIlLTEzcyAlMTNkICUxM2QgJTEzZCAlMTNkXG4iLCAiQ1NTIiwgcy5jc3NTdHlsZVNoZWV0
cy5jb3VudCwgcy5jc3NTdHlsZVNoZWV0cy5zaXplLCBzLmNzc1N0eWxlU2hlZXRzLmxpdmVTaXpl
LCBzLmNzc1N0eWxlU2hlZXRzLmRlY29kZWRTaXplKTsKICNpZiBFTkFCTEUoWFNMVCkKICAgICBw
cmludGYoIiUtMTNzICUxM2QgJTEzZCAlMTNkICUxM2RcbiIsICJYU0wiLCBzLnhzbFN0eWxlU2hl
ZXRzLmNvdW50LCBzLnhzbFN0eWxlU2hlZXRzLnNpemUsIHMueHNsU3R5bGVTaGVldHMubGl2ZVNp
emUsIHMueHNsU3R5bGVTaGVldHMuZGVjb2RlZFNpemUpOwpAQCAtNzg2LDE0ICs4NTYsMjIgQEAg
dm9pZCBNZW1vcnlDYWNoZTo6ZHVtcFN0YXRzKCkKIAogdm9pZCBNZW1vcnlDYWNoZTo6ZHVtcExS
VUxpc3RzKGJvb2wgaW5jbHVkZUxpdmUpIGNvbnN0CiB7CisjaWYgRU5BQkxFKERJU0tfSU1BR0Vf
Q0FDSEUpCisgICAgcHJpbnRmKCJMUlUtU1AgbGlzdHMgaW4gZXZpY3Rpb24gb3JkZXIgKEtpbG9i
eXRlcyBkZWNvZGVkLCBLaWxvYnl0ZXMgZW5jb2RlZCwgQWNjZXNzIGNvdW50LCBSZWZlcmVuY2Vk
LCBpc01lbW9yeU1hcHBlZCk6XG4iKTsKKyNlbHNlCiAgICAgcHJpbnRmKCJMUlUtU1AgbGlzdHMg
aW4gZXZpY3Rpb24gb3JkZXIgKEtpbG9ieXRlcyBkZWNvZGVkLCBLaWxvYnl0ZXMgZW5jb2RlZCwg
QWNjZXNzIGNvdW50LCBSZWZlcmVuY2VkKTpcbiIpOworI2VuZGlmCiAKICAgICBpbnQgc2l6ZSA9
IG1fYWxsUmVzb3VyY2VzLnNpemUoKTsKICAgICBmb3IgKGludCBpID0gc2l6ZSAtIDE7IGkgPj0g
MDsgaS0tKSB7CiAgICAgICAgIHByaW50ZigiXG5cbkxpc3QgJWQ6ICIsIGkpOwogICAgICAgICBm
b3IgKGF1dG8qIHJlc291cmNlIDogKm1fYWxsUmVzb3VyY2VzW2ldKSB7CiAgICAgICAgICAgICBp
ZiAoaW5jbHVkZUxpdmUgfHwgIXJlc291cmNlLT5oYXNDbGllbnRzKCkpCisjaWYgRU5BQkxFKERJ
U0tfSU1BR0VfQ0FDSEUpCisgICAgICAgICAgICAgICAgcHJpbnRmKCIoJS4xZkssICUuMWZLLCAl
dUEsICVkUiwgJWQpOyAiLCByZXNvdXJjZS0+ZGVjb2RlZFNpemUoKSAvIDEwMjQuMGYsIChyZXNv
dXJjZS0+ZW5jb2RlZFNpemUoKSArIHJlc291cmNlLT5vdmVyaGVhZFNpemUoKSkgLyAxMDI0LjBm
LCByZXNvdXJjZS0+YWNjZXNzQ291bnQoKSwgcmVzb3VyY2UtPmhhc0NsaWVudHMoKSwgcmVzb3Vy
Y2UtPmlzVXNpbmdEaXNrSW1hZ2VDYWNoZSgpKTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgcHJp
bnRmKCIoJS4xZkssICUuMWZLLCAldUEsICVkUik7ICIsIHJlc291cmNlLT5kZWNvZGVkU2l6ZSgp
IC8gMTAyNC4wZiwgKHJlc291cmNlLT5lbmNvZGVkU2l6ZSgpICsgcmVzb3VyY2UtPm92ZXJoZWFk
U2l6ZSgpKSAvIDEwMjQuMGYsIHJlc291cmNlLT5hY2Nlc3NDb3VudCgpLCByZXNvdXJjZS0+aGFz
Q2xpZW50cygpKTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCA2ZDFhZWM3OTg5M2VlNmFmNjA3MTM1ZGRm
ZmIxOWJiNDcwZWZhYTYwLi5lMjM4ZmJkNjRjZTE2NzJmN2YyMzVjZmM4MTkxZDI1YTY0MWFiZjBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaApAQCAtNzAsMTMg
KzcwLDE5IEBAIHB1YmxpYzoKICAgICAgICAgaW50IHNpemU7CiAgICAgICAgIGludCBsaXZlU2l6
ZTsKICAgICAgICAgaW50IGRlY29kZWRTaXplOworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hF
KQorICAgICAgICBpbnQgbWFwcGVkU2l6ZTsKKyNlbmRpZgogCiAgICAgICAgIFR5cGVTdGF0aXN0
aWMoKQogICAgICAgICAgICAgOiBjb3VudCgwKQogICAgICAgICAgICAgLCBzaXplKDApCiAgICAg
ICAgICAgICAsIGxpdmVTaXplKDApCiAgICAgICAgICAgICAsIGRlY29kZWRTaXplKDApCi0gICAg
ICAgIHsgCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgICAgICAgICAsIG1hcHBl
ZFNpemUoMCkKKyNlbmRpZgorICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGFk
ZFJlc291cmNlKENhY2hlZFJlc291cmNlJik7CkBAIC0xNDAsNiArMTQ2LDEwIEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIHJlbW92ZVJlcXVlc3RGcm9tU2Vzc2lvbkNhY2hlcyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKKyNpZiBFTkFCTEUo
RElTS19JTUFHRV9DQUNIRSkKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ2FjaGVkSW1h
Z2VzVG9EaXNrKCk7IC8vIEZsdXNoIGVuY29kZWQgZGF0YSBmcm9tIHJlc291cmNlcyBzdGlsbCBy
ZWZlcmVuY2VkIGJ5IHdlYiBwYWdlcy4KKyNlbmRpZgorCiAgICAgLy8gRnVuY3Rpb24gdG8gY29s
bGVjdCBjYWNoZSBzdGF0aXN0aWNzIGZvciB0aGUgY2FjaGVzIHdpbmRvdyBpbiB0aGUgU2FmYXJp
IERlYnVnIG1lbnUuCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RhdGlzdGljcyBnZXRTdGF0aXN0aWNz
KCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EaXNrSW1hZ2VD
YWNoZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlza0ltYWdlQ2FjaGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZjZjNjU0NmI1NmY0MjNmZDRlODQ1MjI2M2MzMGVmNjc4M2JjMzNjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlza0ltYWdlQ2FjaGUuaApAQCAtMCww
ICsxLDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ29sbGFib3JhIEx0ZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBEaXNrSW1hZ2VDYWNoZV9oCisjZGVmaW5lIERpc2tJbWFnZUNhY2hlX2gK
KworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorCisjaW5jbHVkZSAiRGlza0ltYWdlQ2Fj
aGVDbGllbnQuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKwordHlwZWRlZiB1bnNpZ25lZCBEaXNrSW1hZ2VDYWNoZUlkOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIEdsb2JhbCBkaXNrIGltYWdlIGNhY2hlIG9iamVjdC4KK2Ns
YXNzIERpc2tJbWFnZUNhY2hlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEaXNrSW1hZ2VD
YWNoZSk7Citwcml2YXRlOgorCisgICAgLy8gTGlmZXRpbWUgb2YgdGhpcyBFbnRyeSBhbmQgdGhl
IFNoYXJlZEJ1ZmZlciBpdCB3cmFwcyBhcmUgbWFuYWdlZCBpbiB0aGUgbWFpbiB0aHJlYWQuCisg
ICAgY2xhc3MgRW50cnkgOiBwdWJsaWMgUmVmQ291bnRlZDxFbnRyeT4geworICAgIHByaXZhdGU6
CisgICAgICAgIEVudHJ5KFNoYXJlZEJ1ZmZlciosIERpc2tJbWFnZUNhY2hlSWQpOworICAgICAg
ICBFbnRyeSh1bnNpZ25lZCBzaXplLCBEaXNrSW1hZ2VDYWNoZUlkKTsKKworICAgIHB1YmxpYzoK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBjcmVhdGUo
U2hhcmVkQnVmZmVyKiBidWZmZXIsIERpc2tJbWFnZUNhY2hlSWQgaWQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlza0ltYWdlQ2FjaGU6OkVudHJ5KGJ1ZmZl
ciwgaWQpKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERpc2tJbWFn
ZUNhY2hlOjpFbnRyeT4gY3JlYXRlKHVuc2lnbmVkIHNpemUsIERpc2tJbWFnZUNhY2hlSWQgaWQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlza0ltYWdlQ2Fj
aGU6OkVudHJ5KHNpemUsIGlkKSk7CisgICAgICAgIH0KKworICAgICAgICB+RW50cnkoKTsKKwor
ICAgICAgICBib29sIHN5bmNocm9ub3VzbHlNYXAoKTsKKyAgICAgICAgdm9pZCBtYXAoKTsKKyAg
ICAgICAgdm9pZCB1bm1hcCgpOworICAgICAgICB2b2lkIHJlbW92ZUZpbGUoKTsKKyAgICAgICAg
dm9pZCBjbGVhckRhdGFXaXRob3V0TWFwcGluZygpOworCisgICAgICAgIERpc2tJbWFnZUNhY2hl
SWQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgICAgIHVuc2lnbmVkIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICAgICAgdm9pZCogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWFwcGluZzsgfQorICAgICAgICBib29sIGlzTWFwcGVkKCkgY29uc3QgeyByZXR1cm4g
bV9tYXBwaW5nICE9IG51bGxwdHI7IH0KKyAgICAgICAgdm9pZCBzZXRUZW1wb3JhcnlGaWxlUGF0
aChjb25zdCBTdHJpbmcmKTsKKworICAgICAgICBzdGF0aWMgdm9pZCBtYXBUaHJlYWRTdGFydCh2
b2lkKik7CisgICAgICAgIHN0YXRpYyB2b2lkIHJlbW92ZUZpbGVUaHJlYWRTdGFydCh2b2lkKik7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIG1hcEludGVybmFsKCk7CisgICAgICAgIHZv
aWQgY2FuY2VsTWFwKCk7CisKKyNpZiBPUyhVTklYKQorICAgICAgICBpbnQgd3JpdGVUb0ZpbGVJ
bnRlcm5hbChpbnQgZmQpOworI2VuZGlmCisKKyAgICAgICAgdm9pZCBkaWRGYWlsTWVtb3J5TWFw
KCk7CisgICAgICAgIHZvaWQgZGlkTWFwTWVtb3J5KCk7CisgICAgICAgIHZvaWQgZGlkUmVtb3Zl
RmlsZSgpOworCisgICAgICAgIFNoYXJlZEJ1ZmZlciogbV9idWZmZXI7CisgICAgICAgIERpc2tJ
bWFnZUNhY2hlSWQgbV9pZDsKKyAgICAgICAgdW5zaWduZWQgbV9zaXplOworICAgICAgICB2b2lk
KiBtX21hcHBpbmc7CisgICAgICAgIFN0cmluZyBtX3BhdGg7CisgICAgfTsKKworcHVibGljOgor
ICAgIERpc2tJbWFnZUNhY2hlKCk7CisgICAgZnJpZW5kIERpc2tJbWFnZUNhY2hlJiBkaXNrSW1h
Z2VDYWNoZSgpOworICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxEaXNrSW1hZ2VDYWNo
ZT47CisgICAgc3RhdGljIGNvbnN0IERpc2tJbWFnZUNhY2hlSWQgaW52YWxpZERpc2tDYWNoZUlk
ID0gMDsKKworICAgIC8vIFdyaXRlIG91dCBhbiBpdGVtLgorICAgIERpc2tJbWFnZUNhY2hlSWQg
Y3JlYXRlRmlsZUJhY2tlZE1hcHBpbmcodW5zaWduZWQgc2l6ZSk7CisgICAgRGlza0ltYWdlQ2Fj
aGVJZCB3cml0ZUl0ZW0oUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKKworICAgIC8vIFJlbW92
ZSBpdGVtLgorICAgIHZvaWQgcmVtb3ZlSXRlbShEaXNrSW1hZ2VDYWNoZUlkKTsKKworICAgIC8v
IE1hcHBpbmcgZm9yIGFuIGl0ZW0uCisgICAgdm9pZCogZGF0YUZvckl0ZW0oRGlza0ltYWdlQ2Fj
aGVJZCk7CisKKyAgICAvLyBTZXR1cCBhIGNsaWVudCBmb3IgY2FsbGJhY2tzLgorICAgIHZvaWQg
c2V0Q2xpZW50KFBhc3NSZWZQdHI8RGlza0ltYWdlQ2FjaGVDbGllbnQ+IGNsaWVudCkgeyBtX2Ns
aWVudCA9IGNsaWVudDsgfQorCisgICAgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fZW5hYmxl
ZCA9IGVuYWJsZWQ7IH0KKworICAgIHVuc2lnbmVkIG1heGltdW1DYWNoZVNpemUoKSBjb25zdCB7
IHJldHVybiBtX21heGltdW1DYWNoZVNpemU7IH0KKyAgICB2b2lkIHNldE1heGltdW1DYWNoZVNp
emUodW5zaWduZWQgbWF4aW11bSkgeyBtX21heGltdW1DYWNoZVNpemUgPSBtYXhpbXVtOyB9CisK
KyAgICB1bnNpZ25lZCBtaW5pbXVtSW1hZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9taW5pbXVt
SW1hZ2VTaXplOyB9CisgICAgdm9pZCBzZXRNaW5pbXVtSW1hZ2VTaXplKHVuc2lnbmVkIG1pbmlt
dW0pIHsgbV9taW5pbXVtSW1hZ2VTaXplID0gbWluaW11bTsgfQorCisgICAgY29uc3QgU3RyaW5n
JiBjYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVEaXJlY3Rvcnk7IH0KKwor
ICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBib29sIGlz
RnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZSA+PSBtX21heGltdW1DYWNoZVNpemU7IH0KKwor
cHJpdmF0ZToKKyAgICB+RGlza0ltYWdlQ2FjaGUoKSB7IH0KKworICAgIGJvb2wgY3JlYXRlRGly
ZWN0b3J5SWZOZWVkZWQoKTsKKyAgICBEaXNrSW1hZ2VDYWNoZUlkIG5leHRBdmFpbGFibGVJZCgp
OworCisgICAgU3RyaW5nIHByZXBhcmVGaWxlKCk7CisgICAgU3RyaW5nIHRlbXBvcmFyeURpcmVj
dG9yeSgpOworICAgIFN0cmluZyB0ZW1wb3JhcnlGaWxlKCk7CisKKyAgICB2b2lkIHVwZGF0ZVNp
emUodW5zaWduZWQgZGVsdGEpOworCisgICAgYm9vbCBtX2VuYWJsZWQ7CisgICAgdW5zaWduZWQg
bV9zaXplOworICAgIHVuc2lnbmVkIG1fbWF4aW11bUNhY2hlU2l6ZTsKKyAgICB1bnNpZ25lZCBt
X21pbmltdW1JbWFnZVNpemU7CisgICAgRGlza0ltYWdlQ2FjaGVJZCBtX25leHRBdmFpbGFibGVJ
ZDsKKyAgICBTdHJpbmcgbV9jYWNoZURpcmVjdG9yeTsKKworICAgIFJlZlB0cjxEaXNrSW1hZ2VD
YWNoZUNsaWVudD4gbV9jbGllbnQ7CisgICAgSGFzaE1hcDxEaXNrSW1hZ2VDYWNoZUlkLCBSZWZQ
dHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5Pj4gbV90YWJsZTsKKworICAgIE11dGV4IG1fbXV0ZXg7
Cit9OworCisvLyBGdW5jdGlvbiB0byBvYnRhaW4gdGhlIGdsb2JhbCBkaXNrIGltYWdlIGNhY2hl
LgorRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNhY2hlKCk7CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorCisjZW5kaWYgLy8g
RGlza0ltYWdlQ2FjaGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGlz
a0ltYWdlQ2FjaGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rpc2tJbWFnZUNh
Y2hlQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE3YTNhMGRhMTI0OGVmYmNjMGI4Y2ZiNDMwMzE3OTFi
NjU1NTM0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Rpc2tJ
bWFnZUNhY2hlQ2xpZW50LmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
RGlza0ltYWdlQ2FjaGVDbGllbnRfaAorI2RlZmluZSBEaXNrSW1hZ2VDYWNoZUNsaWVudF9oCisK
KyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRGlza0ltYWdlQ2FjaGVDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxEaXNr
SW1hZ2VDYWNoZUNsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgfkRpc2tJbWFnZUNhY2hl
Q2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURpc2tJbWFnZUNhY2hlRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKworI2VuZGlm
IC8vIERpc2tJbWFnZUNhY2hlQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0u
aAppbmRleCAxM2FiMjliYjJiOWI5OTc5YzE5M2ZiYjkxMzVmM2U3ZTVjN2JhM2IyLi43M2FiNTkx
MTkyODgxY2FiNTdhOTlkYmY0MzJiZjRkZmM3MzYwYTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5oCkBAIC0xNjUsNiArMTY1LDggQEAgaW5saW5lIGRvdWJsZSBpbnZhbGlkRmls
ZVRpbWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigK
IGlubGluZSBib29sIGlzVmFsaWRGaWxlVGltZShkb3VibGUgdGltZSkgeyByZXR1cm4gc3RkOjpp
c2Zpbml0ZSh0aW1lKTsgfQogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxk
IGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgorV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHByZWZpeCk7CitXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHN1YkRp
cmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwcmVmaXgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9w
ZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUm
KTsKIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsb3NlRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUmKTsKQEAgLTE5NSw2ICsxOTcsNyBAQCBTdHJpbmcgZmlsZW5hbWVU
b1N0cmluZyhjb25zdCBjaGFyKik7CiBTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5KGNvbnN0IFN0
cmluZyYpOwogQ1N0cmluZyBhcHBsaWNhdGlvbkRpcmVjdG9yeVBhdGgoKTsKIENTdHJpbmcgc2hh
cmVkUmVzb3VyY2VzUGF0aCgpOworU3RyaW5nIGNyZWF0ZVVzZXJDYWNoZURpcmVjdG9yeShjb25z
dCBTdHJpbmcmKTsKICNlbmRpZgogI2lmIFVTRShTT1VQKQogdWludDY0X3QgZ2V0Vm9sdW1lRnJl
ZVNpemVGb3JQYXRoKGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRl
eCAxOTIxMjk5YjE5NGNkNTI0ZmNhMGQ0ZGZmMzFhMTBlMTIxMmJkZjAyLi41YTc2ZmY1MWRhY2Zl
NWM2ZGFlYWYzODk2NDcwNGZhYzZmYjk5NzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5o
CkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKENvbXBvc2l0aW5n
KSBcCiAgICAgTShDb250ZW50RmlsdGVyaW5nKSBcCiAgICAgTShET01UaW1lcnMpIFwKKyAgICBN
KERpc2tJbWFnZUNhY2hlKSBcCiAgICAgTShFZGl0aW5nKSBcCiAgICAgTShFdmVudHMpIFwKICAg
ICBNKEZUUCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXgg
NTMzOTYxZmEwZDFkMzA5NTg1ZmFjODVjNGM5Y2FhNjA3MjQ3YjAzNC4uMTQ5NWQ1NjkxZThlMjk1
OTk5MDI0OTE2YWJhYWQ4MjU2NDYyNTFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC0yOCw2ICsyOCwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisj
aW5jbHVkZSAiRGlza0ltYWdlQ2FjaGUuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KIApAQCAtNjMsMjMgKzY3LDQ3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBmcmVlU2VnbWVudChjaGFyKiBwKQogCiBTaGFyZWRCdWZmZXI6OlNo
YXJlZEJ1ZmZlcigpCiAgICAgOiBtX2J1ZmZlcihhZG9wdFJlZihuZXcgRGF0YUJ1ZmZlcikpCisj
aWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgLCBtX2lzTWVtb3J5TWFwcGVkKGZhbHNl
KQorICAgICwgbV9kaXNrSW1hZ2VDYWNoZUlkKERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0Nh
Y2hlSWQpCisgICAgLCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrKG51bGxwdHIpCisgICAg
LCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrRGF0YShudWxscHRyKQorI2VuZGlmCiB7CiB9
CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKHVuc2lnbmVkIHNpemUpCiAgICAgOiBtX3Np
emUoc2l6ZSkKICAgICAsIG1fYnVmZmVyKGFkb3B0UmVmKG5ldyBEYXRhQnVmZmVyKSkKKyNpZiBF
TkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAsIG1faXNNZW1vcnlNYXBwZWQoZmFsc2UpCisg
ICAgLCBtX2Rpc2tJbWFnZUNhY2hlSWQoRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJ
ZCkKKyAgICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2sobnVsbHB0cikKKyAgICAsIG1f
bm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2tEYXRhKG51bGxwdHIpCisjZW5kaWYKIHsKIH0KIAog
U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6
ZSkKICAgICA6IG1fYnVmZmVyKGFkb3B0UmVmKG5ldyBEYXRhQnVmZmVyKSkKKyNpZiBFTkFCTEUo
RElTS19JTUFHRV9DQUNIRSkKKyAgICAsIG1faXNNZW1vcnlNYXBwZWQoZmFsc2UpCisgICAgLCBt
X2Rpc2tJbWFnZUNhY2hlSWQoRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZCkKKyAg
ICAsIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2sobnVsbHB0cikKKyAgICAsIG1fbm90aWZ5
TWVtb3J5TWFwcGVkQ2FsbGJhY2tEYXRhKG51bGxwdHIpCisjZW5kaWYKIHsKICAgICBhcHBlbmQo
ZGF0YSwgc2l6ZSk7CiB9CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKGNvbnN0IHVuc2ln
bmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIHNpemUpCiAgICAgOiBtX2J1ZmZlcihhZG9wdFJlZihu
ZXcgRGF0YUJ1ZmZlcikpCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgLCBtX2lz
TWVtb3J5TWFwcGVkKGZhbHNlKQorICAgICwgbV9kaXNrSW1hZ2VDYWNoZUlkKERpc2tJbWFnZUNh
Y2hlOjppbnZhbGlkRGlza0NhY2hlSWQpCisgICAgLCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxi
YWNrKG51bGxwdHIpCisgICAgLCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrRGF0YShudWxs
cHRyKQorI2VuZGlmCiB7CiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEpLCBzaXplKTsKIH0KQEAgLTkyLDYgKzEyMCwxMyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJl
ZEJ1ZmZlcihNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogCiBTaGFyZWRCdWZmZXI6On5TaGFy
ZWRCdWZmZXIoKQogeworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGlmIChtX2Rp
c2tJbWFnZUNhY2hlSWQpIHsKKyAgICAgICAgZGlza0ltYWdlQ2FjaGUoKS5yZW1vdmVJdGVtKG1f
ZGlza0ltYWdlQ2FjaGVJZCk7CisgICAgICAgIG1faXNNZW1vcnlNYXBwZWQgPSBmYWxzZTsKKyAg
ICAgICAgbV9kaXNrSW1hZ2VDYWNoZUlkID0gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2Fj
aGVJZDsKKyAgICB9CisjZW5kaWYKICAgICBjbGVhcigpOwogfQogCkBAIC0xMjUsOCArMTYwLDc4
IEBAIHVuc2lnbmVkIFNoYXJlZEJ1ZmZlcjo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2l6
ZTsKIH0KIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorYm9vbCBTaGFyZWRCdWZmZXI6
OmlzQWxsb3dlZFRvQmVNZW1vcnlNYXBwZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rpc2tJ
bWFnZUNhY2hlSWQgIT0gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKK30KKwor
Ym9vbCBTaGFyZWRCdWZmZXI6OmlzVXNpbmdEaXNrSW1hZ2VDYWNoZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGlzQWxsb3dlZFRvQmVNZW1vcnlNYXBwZWQoKTsKK30KKworU2hhcmVkQnVmZmVyOjpN
ZW1vcnlNYXBwaW5nU3RhdGUgU2hhcmVkQnVmZmVyOjphbGxvd1RvQmVNZW1vcnlNYXBwZWQoKQor
eworICAgIGlmIChpc01lbW9yeU1hcHBlZCgpKQorICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpTdWNjZXNzQWxyZWFkeU1hcHBlZDsKKworICAgIGlmIChpc0FsbG93ZWRUb0JlTWVtb3J5TWFw
cGVkKCkpCisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OlByZXZpb3VzbHlRdWV1ZWRGb3JN
YXBwaW5nOworCisgICAgbV9kaXNrSW1hZ2VDYWNoZUlkID0gZGlza0ltYWdlQ2FjaGUoKS53cml0
ZUl0ZW0odGhpcyk7CisgICAgaWYgKG1fZGlza0ltYWdlQ2FjaGVJZCA9PSBEaXNrSW1hZ2VDYWNo
ZTo6aW52YWxpZERpc2tDYWNoZUlkKQorICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpGYWls
dXJlQ2FjaGVGdWxsOworCisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6UXVldWVkRm9yTWFwcGlu
ZzsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6OmZhaWxlZE1lbW9yeU1hcCgpCit7CisgICAgaWYg
KG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2spCisgICAgICAgIG1fbm90aWZ5TWVtb3J5TWFw
cGVkQ2FsbGJhY2sodGhpcywgU2hhcmVkQnVmZmVyOjpGYWlsZWQsIG1fbm90aWZ5TWVtb3J5TWFw
cGVkQ2FsbGJhY2tEYXRhKTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6Om1hcmtBc01lbW9yeU1h
cHBlZCgpCit7CisgICAgQVNTRVJUKCFpc01lbW9yeU1hcHBlZCgpKTsKKworICAgIG1faXNNZW1v
cnlNYXBwZWQgPSB0cnVlOworICAgIHVuc2lnbmVkIHNhdmVkU2l6ZSA9IHNpemUoKTsKKyAgICBj
bGVhcigpOworICAgIG1fc2l6ZSA9IHNhdmVkU2l6ZTsKKworICAgIGlmIChtX25vdGlmeU1lbW9y
eU1hcHBlZENhbGxiYWNrKQorICAgICAgICBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrKHRo
aXMsIFNoYXJlZEJ1ZmZlcjo6U3VjY2VlZGVkLCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNr
RGF0YSk7Cit9CisKK1NoYXJlZEJ1ZmZlcjo6TWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2tEYXRh
IFNoYXJlZEJ1ZmZlcjo6bWVtb3J5TWFwcGVkTm90aWZpY2F0aW9uQ2FsbGJhY2tEYXRhKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0RhdGE7Cit9CisK
K1NoYXJlZEJ1ZmZlcjo6TWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2sgU2hhcmVkQnVmZmVyOjpt
ZW1vcnlNYXBwZWROb3RpZmljYXRpb25DYWxsYmFjaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJhY2s7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyOjpzZXRN
ZW1vcnlNYXBwZWROb3RpZmljYXRpb25DYWxsYmFjayhNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFj
ayBjYWxsYmFjaywgTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2tEYXRhIGRhdGEpCit7CisgICAg
QVNTRVJUKCFtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrIHx8ICFjYWxsYmFjayk7CisgICAg
QVNTRVJUKCFtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrRGF0YSB8fCAhZGF0YSk7CisKKyAg
ICBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgbV9ub3RpZnlN
ZW1vcnlNYXBwZWRDYWxsYmFja0RhdGEgPSBkYXRhOworfQorI2VuZGlmCisKIGNvbnN0IGNoYXIq
IFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FD
SEUpCisgICAgaWYgKGlzTWVtb3J5TWFwcGVkKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oZGlza0ltYWdlQ2FjaGUoKS5kYXRhRm9ySXRlbShtX2Rpc2tJbWFnZUNh
Y2hlSWQpKTsKKyNlbmRpZgorCiAgICAgaWYgKGhhc1BsYXRmb3JtRGF0YSgpKQogICAgICAgICBy
ZXR1cm4gcGxhdGZvcm1EYXRhKCk7CiAKQEAgLTE4MCw2ICsyODUsOSBAQCB2b2lkIFNoYXJlZEJ1
ZmZlcjo6YXBwZW5kKFNoYXJlZEJ1ZmZlciogZGF0YSkKIAogdm9pZCBTaGFyZWRCdWZmZXI6OmFw
cGVuZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiB7CisjaWYgRU5BQkxFKERJ
U0tfSU1BR0VfQ0FDSEUpCisgICAgQVNTRVJUKCFpc01lbW9yeU1hcHBlZCgpKTsKKyNlbmRpZgog
ICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKQEAgLTMyMCw2ICs0MjgsOSBAQCB2
b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENsZWFyKGNoYXIqIGRlc3RpbmF0aW9uLCB1
bnNpZ25lZCBieXRlc1RvQ29weSkgYwogCiBjb25zdCBWZWN0b3I8Y2hhcj4mIFNoYXJlZEJ1ZmZl
cjo6YnVmZmVyKCkgY29uc3QKIHsKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICBB
U1NFUlQoIWlzTWVtb3J5TWFwcGVkKCkpOworI2VuZGlmCiAgICAgdW5zaWduZWQgYnVmZmVyU2l6
ZSA9IG1fYnVmZmVyLT5kYXRhLnNpemUoKTsKICAgICBpZiAobV9zaXplID4gYnVmZmVyU2l6ZSkg
ewogICAgICAgICBkdXBsaWNhdGVEYXRhQnVmZmVySWZOZWNlc3NhcnkoKTsKQEAgLTMzNyw2ICs0
NDgsMTUgQEAgdW5zaWduZWQgU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShjb25zdCBjaGFyKiYg
c29tZURhdGEsIHVuc2lnbmVkIHBvc2l0aW9uKSBjb24KICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgQVNTRVJUKHBvc2l0aW9uIDwg
c2l6ZSgpKTsKKyAgICBpZiAoaXNNZW1vcnlNYXBwZWQoKSkgeworICAgICAgICBjb25zdCBjaGFy
KiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRpc2tJbWFnZUNhY2hlKCkuZGF0YUZv
ckl0ZW0obV9kaXNrSW1hZ2VDYWNoZUlkKSk7CisgICAgICAgIHNvbWVEYXRhID0gZGF0YSArIHBv
c2l0aW9uOworICAgICAgICByZXR1cm4gc2l6ZSgpIC0gcG9zaXRpb247CisgICAgfQorI2VuZGlm
CisKICAgICBpZiAoaGFzUGxhdGZvcm1EYXRhKCkgfHwgbV9maWxlRGF0YSkgewogICAgICAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihwb3NpdGlvbiA8IHNpemUoKSk7CiAgICAg
ICAgIHNvbWVEYXRhID0gZGF0YSgpICsgcG9zaXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCmluZGV4IDQwMzBiZGExMzYyZmI2ZGFkNGNjOWEwMTI0MzZiMDlmMWM3NTA1
YzEuLjkyNWNkYTA0MzgzMWMwY2IwMDllOGRlNmY4N2M2MmRhYTgwMGE1NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xMTksNiArMTE5LDMxIEBAIHB1YmxpYzoK
ICAgICAvLyAgICAgIH0KICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBnZXRTb21lRGF0YShj
b25zdCBjaGFyKiYgZGF0YSwgdW5zaWduZWQgcG9zaXRpb24gPSAwKSBjb25zdDsKIAorI2lmIEVO
QUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgIGVudW0gTWVtb3J5TWFwcGluZ1N0YXRlIHsgUXVl
dWVkRm9yTWFwcGluZywgUHJldmlvdXNseVF1ZXVlZEZvck1hcHBpbmcsIFN1Y2Nlc3NBbHJlYWR5
TWFwcGVkLCBGYWlsdXJlQ2FjaGVGdWxsIH07CisKKyAgICAvLyBDYWxsaW5nIHRoaXMgd2lsbCBj
YXVzZSB0aGlzIGJ1ZmZlciB0byBiZSBtZW1vcnkgbWFwcGVkLgorICAgIFdFQkNPUkVfRVhQT1JU
IE1lbW9yeU1hcHBpbmdTdGF0ZSBhbGxvd1RvQmVNZW1vcnlNYXBwZWQoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGlzQWxsb3dlZFRvQmVNZW1vcnlNYXBwZWQoKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGlzVXNpbmdEaXNrSW1hZ2VDYWNoZSgpIGNvbnN0OworCisgICAgLy8g
VGhpcyBpcyBjYWxsZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbWVtb3J5IG1hcHBpbmcgZmFpbGVk
LgorICAgIHZvaWQgZmFpbGVkTWVtb3J5TWFwKCk7CisKKyAgICAvLyBUaGlzIGlzIGNhbGxlZCBv
bmx5IG9uY2UgdGhlIGJ1ZmZlciBoYXMgYmVlbiBjb21wbGV0ZWx5IG1lbW9yeSBtYXBwZWQuCisg
ICAgdm9pZCBtYXJrQXNNZW1vcnlNYXBwZWQoKTsKKyAgICBib29sIGlzTWVtb3J5TWFwcGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc01lbW9yeU1hcHBlZDsgfQorCisgICAgLy8gVGhpcyBjYWxsYmFj
ayBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIGVpdGhlciB0aGUgYnVmZmVyIGhhcyBiZWVu
IG1lbW9yeSBtYXBwZWQgb3IgZmFpbGVkIHRvIGJlIG1lbW9yeSBtYXBwZWQuCisgICAgZW51bSBD
b21wbGV0aW9uU3RhdHVzIHsgRmFpbGVkLCBTdWNjZWVkZWQgfTsKKyAgICB0eXBlZGVmIHZvaWQq
IE1lbW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNrRGF0YTsKKyAgICB0eXBlZGVmIHZvaWQgKCpNZW1v
cnlNYXBwZWROb3RpZnlDYWxsYmFjaykoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBDb21wbGV0
aW9uU3RhdHVzLCBNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFja0RhdGEpOworCisgICAgV0VCQ09S
RV9FWFBPUlQgTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2tEYXRhIG1lbW9yeU1hcHBlZE5vdGlm
aWNhdGlvbkNhbGxiYWNrRGF0YSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE1lbW9yeU1h
cHBlZE5vdGlmeUNhbGxiYWNrIG1lbW9yeU1hcHBlZE5vdGlmaWNhdGlvbkNhbGxiYWNrKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZW1vcnlNYXBwZWROb3RpZmljYXRpb25D
YWxsYmFjayhNZW1vcnlNYXBwZWROb3RpZnlDYWxsYmFjaywgTWVtb3J5TWFwcGVkTm90aWZ5Q2Fs
bGJhY2tEYXRhKTsKKyNlbmRpZgorCiAgICAgdm9pZCB0cnlSZXBsYWNlQ29udGVudHNXaXRoUGxh
dGZvcm1CdWZmZXIoU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNQ
bGF0Zm9ybURhdGEoKSBjb25zdDsKIApAQCAtMTY1LDYgKzE5MCwxMyBAQCBwcml2YXRlOgogICAg
IG11dGFibGUgVmVjdG9yPGNoYXIqPiBtX3NlZ21lbnRzOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
RElTS19JTUFHRV9DQUNIRSkKKyAgICBib29sIG1faXNNZW1vcnlNYXBwZWQ7CisgICAgdW5zaWdu
ZWQgbV9kaXNrSW1hZ2VDYWNoZUlkOyAvLyBEaXNrSW1hZ2VDYWNoZUlkIGlzIHVuc2lnbmVkLgor
ICAgIE1lbW9yeU1hcHBlZE5vdGlmeUNhbGxiYWNrIG1fbm90aWZ5TWVtb3J5TWFwcGVkQ2FsbGJh
Y2s7CisgICAgTWVtb3J5TWFwcGVkTm90aWZ5Q2FsbGJhY2tEYXRhIG1fbm90aWZ5TWVtb3J5TWFw
cGVkQ2FsbGJhY2tEYXRhOworI2VuZGlmCisKICNpZiBVU0UoQ0YpCiAgICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyKENGRGF0YVJlZik7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gbV9jZkRhdGE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXgg
MmE3NWU1NmQ1MmQwY2JkYjM0NDNkN2Q0MzkyMzMyYTlkMjY4MmM1MC4uOWE0YzlhNDQxNTUyZTgy
ZWIzNDdlNWM0YzZlNmI1MTI0MzFiZTc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMjgsMTIgKzI4LDIyIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKKyNpZiBFTkFCTEUoRElTS19JTUFH
RV9DQUNIRSkKKyNpbmNsdWRlICJEaXNrSW1hZ2VDYWNoZS5oIgorI2VuZGlmCisKICNpbmNsdWRl
IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFyZWRC
dWZmZXI6OlNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYgY2ZEYXRhKQogICAgIDogbV9idWZmZXIoYWRv
cHRSZWYobmV3IERhdGFCdWZmZXIpKQorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAg
ICwgbV9pc01lbW9yeU1hcHBlZChmYWxzZSkKKyAgICAsIG1fZGlza0ltYWdlQ2FjaGVJZChEaXNr
SW1hZ2VDYWNoZTo6aW52YWxpZERpc2tDYWNoZUlkKQorICAgICwgbV9ub3RpZnlNZW1vcnlNYXBw
ZWRDYWxsYmFjayhudWxscHRyKQorICAgICwgbV9ub3RpZnlNZW1vcnlNYXBwZWRDYWxsYmFja0Rh
dGEobnVsbHB0cikKKyNlbmRpZgogICAgICwgbV9jZkRhdGEoY2ZEYXRhKQogICAgICwgbV92bm9k
ZVRva2VuKFZOb2RlVHJhY2tlcjo6c2luZ2xldG9uKCkudG9rZW4oKSkKIHsKQEAgLTExNyw2ICsx
MjcsMTIgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0
YUFycmF5KENGQXJyYXlSZWYgY2ZEYXRhQXJyYXkpCiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVm
ZmVyKENGQXJyYXlSZWYgY2ZEYXRhQXJyYXkpCiAgICAgOiBtX2J1ZmZlcihhZG9wdFJlZihuZXcg
RGF0YUJ1ZmZlcikpCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgLCBtX2lzTWVt
b3J5TWFwcGVkKGZhbHNlKQorICAgICwgbV9kaXNrSW1hZ2VDYWNoZUlkKERpc2tJbWFnZUNhY2hl
OjppbnZhbGlkRGlza0NhY2hlSWQpCisgICAgLCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNr
KG51bGxwdHIpCisgICAgLCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrRGF0YShudWxscHRy
KQorI2VuZGlmCiAgICAgLCBtX2NmRGF0YShudWxscHRyKQogewogICAgIENGSW5kZXggZGF0YUFy
cmF5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoY2ZEYXRhQXJyYXkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IGQ4ODk0ZmJkNjE3
MGIyMjU2OTk5ZTc1OGMyNTU0NDM4ZTVkZDM3MTcuLmNmNzU3OGQ2MTNhZmFjMzM1ZDYzYWQ3YThj
YjE1ZjEwNjcxYTdmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKQEAgLTExOCw2ICsxMTgsMTcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6
aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCisj
aWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCitib29sIEJpdG1hcEltYWdlOjppc01lbW9yeU1h
cHBlZCgpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2ZyYW1lcy5zaXpl
KCk7IGkrKykgeworICAgICAgICBpZiAoIW1fZnJhbWVzW2ldLm1faXNNZW1vcnlNYXBwZWQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorI2Vu
ZGlmCisKIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lB
bGwpCiB7CiAgICAgdW5zaWduZWQgZnJhbWVCeXRlc0NsZWFyZWQgPSAwOwpAQCAtMjA5LDYgKzIy
MCw5IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIEltCiAgICAgICAgIG1fZnJhbWVzW2luZGV4XS5t
X2R1cmF0aW9uID0gbV9zb3VyY2UuZnJhbWVEdXJhdGlvbkF0SW5kZXgoaW5kZXgpOwogCiAgICAg
bV9mcmFtZXNbaW5kZXhdLm1faGFzQWxwaGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRl
eChpbmRleCk7CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgbV9mcmFtZXNbaW5k
ZXhdLm1faXNNZW1vcnlNYXBwZWQgPSBtX3NvdXJjZS5mcmFtZUlzTWVtb3J5TWFwcGVkQXRJbmRl
eChpbmRleCk7CisjZW5kaWYKICAgICBtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZUJ5dGVzID0gbV9z
b3VyY2UuZnJhbWVCeXRlc0F0SW5kZXgoaW5kZXgsIHN1YnNhbXBsaW5nTGV2ZWwpOwogCiAgICAg
Y29uc3QgSW50U2l6ZSBmcmFtZVNpemUoaW5kZXggPyBtX3NvdXJjZS5mcmFtZVNpemVBdEluZGV4
KGluZGV4LCBzdWJzYW1wbGluZ0xldmVsKSA6IG1fc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAppbmRleCAyYzcxY2ZjYjBlYWY1YWViMzc3
ZGI1YWVmMDU3M2Y0YmUzYzA2YmE0Li41YjkwNDA3Y2JiOTg0Njk3M2NhMzlmM2FkZGJjN2ZiOWZj
N2I0ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgKQEAgLTc0LDcgKzc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2R1cmF0aW9uKDAp
CiAgICAgICAgICwgbV9oYXZlTWV0YWRhdGEoZmFsc2UpCiAgICAgICAgICwgbV9pc0NvbXBsZXRl
KGZhbHNlKQotICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkgCisgICAgICAgICwgbV9oYXNBbHBo
YSh0cnVlKQorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgICAgICAsIG1faXNNZW1v
cnlNYXBwZWQoZmFsc2UpCisjZW5kaWYKICAgICAgICAgLCBtX2ZyYW1lQnl0ZXMoMCkKICAgICB7
CiAgICAgfQpAQCAtOTUsNiArOTgsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2hhdmVNZXRhZGF0
YSA6IDE7CiAgICAgYm9vbCBtX2lzQ29tcGxldGUgOiAxOwogICAgIGJvb2wgbV9oYXNBbHBoYSA6
IDE7CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgYm9vbCBtX2lzTWVtb3J5TWFw
cGVkIDogMTsKKyNlbmRpZgogICAgIHVuc2lnbmVkIG1fZnJhbWVCeXRlczsKIH07CiAKQEAgLTIz
MCw2ICsyMzYsMTMgQEAgcHJvdGVjdGVkOgogICAgIC8vIENhbGxlZCBiZWZvcmUgYWNjZXNzaW5n
IG1fZnJhbWVzW2luZGV4XSBmb3IgaW5mbyB3aXRob3V0IGRlY29kaW5nLiBSZXR1cm5zIGZhbHNl
IG9uIGluZGV4IG91dCBvZiBib3VuZHMuCiAgICAgYm9vbCBlbnN1cmVGcmFtZUlzQ2FjaGVkKHNp
emVfdCBpbmRleCwgSW1hZ2VGcmFtZUNhY2hpbmcgPSBDYWNoZU1ldGFkYXRhQW5kRnJhbWUpOwog
CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgLy8gVXNlZCB0byBmaWd1cmUgb3V0
IGlmIGRlc3Ryb3lpbmcgdGhlIGRlY29kZWQgZGF0YSB3aWxsIHJlYWxseSBoZWxwIHdpdGgKKyAg
ICAvLyBtZW1vcnkgcHJlc3N1cmUgYXQgYWxsLiBJZiBhbGwgZnJhbWVzIGFyZSBmaWxlLWJhY2tl
ZCB0aGVuIGRlc3Ryb3lpbmcgdGhlbQorICAgIC8vIHdpbGwgbm90IGhlbHAsIGFuZCB3aWxsIGNh
dXNlIGNodXJuIHdoZW4gdGhlIGltYWdlIG5lZWRzIHRvIGJlIHJlcGFpbnRlZC4KKyAgICBib29s
IGlzTWVtb3J5TWFwcGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisjZW5kaWYKKwogICAgIC8vIENhbGxl
ZCB0byBpbnZhbGlkYXRlIGNhY2hlZCBkYXRhLiBXaGVuIHxkZXN0cm95QWxsfCBpcyB0cnVlLCB3
ZSB3aXBlIG91dAogICAgIC8vIHRoZSBlbnRpcmUgZnJhbWUgYnVmZmVyIGNhY2hlIGFuZCB0ZWxs
IHRoZSBpbWFnZSBzb3VyY2UgdG8gZGVzdHJveQogICAgIC8vIGV2ZXJ5dGhpbmc7IHRoaXMgaXMg
dXNlZCB3aGVuIGUuZy4gd2Ugd2FudCB0byBmcmVlIHNvbWUgcm9vbSBpbiB0aGUgaW1hZ2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDU4YzBkOTVkOGM0Mzdi
YTE4MGFlZjFkN2ZkYjRmODI3N2NkNmRkNzIuLjY2MDQ0NDEwMzczNmM3YTU5ZjBiZTIzZjJkNjE1
ZmZhMWI3YjYzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApA
QCAtMTE1LDYgKzExNSwxMCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBudWxsIHN0cmlu
ZyBpZiB1bmtub3duCiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNZW1vcnlNYXBwZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisK
ICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKGJvb2wgZGVzdHJveUFsbCA9IHRy
dWUpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZGVjb2RlZERhdGFJc1B1cmdlYWJsZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAppbmRleCA3NGVmMDUzYTMzM2ZmNWZjNTc4ZTgxODAwY2M2ZmM5
NzU1ZWZiYWI4Li4zOTBiNWJjM2RjOWNlZDRhZGM2ODJjYTIwNTk5ODNkMWUxMGI3ZWM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCkBA
IC0yMDcsNiArMjA3LDE3IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoc2l6ZV90IGluZGV4KQogICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVyLT5zdGF0dXMoKSA9
PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOwogfQogCisjaWYgRU5BQkxFKERJU0tfSU1BR0Vf
Q0FDSEUpCitib29sIEltYWdlU291cmNlOjpmcmFtZUlzTWVtb3J5TWFwcGVkQXRJbmRleChzaXpl
X3QgaW5kZXgpCit7CisgICAgaWYgKCFtX2RlY29kZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIEltYWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4
KGluZGV4KTsKKyAgICByZXR1cm4gYnVmZmVyICYmIGJ1ZmZlci0+aXNNZW1vcnlNYXBwZWQoKTsK
K30KKyNlbmRpZgorCiB1bnNpZ25lZCBJbWFnZVNvdXJjZTo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAogewogICAgIGlmICghbV9kZWNvZGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5k
ZXggYWNkZDFjZTRjZTMwMGRlODFjOWUwNjJlZWU3NjA3YmY0NzJhNzBhZi4uMDUzN2M3ZGZiOGY4
Yjc3Yzg0YTU3ZjlkNzZmYTBjNDYzM2YzYzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xNTEsNiArMTUxLDkgQEAgcHVibGljOgog
ICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7CiAgICAgYm9vbCBmcmFtZUhh
c0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFs
bHkgdXNlZCBhbnkgYWxwaGEuCiAgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVf
dCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBpcyBjb21wbGV0ZWx5IGRlY29kZWQuCisj
aWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgYm9vbCBmcmFtZUlzTWVtb3J5TWFwcGVk
QXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgbWVtb3J5IG1h
cHBlZCAoaW4gdGhlIGRpc2sgaW1hZ2UgY2FjaGUpLgorI2VuZGlmCiAgICAgSW1hZ2VPcmllbnRh
dGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsgLy8gRVhJRiBpbWFnZSBvcmll
bnRhdGlvbgogCiAgICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGRlY29k
ZWQgZnJhbWUuIElmIHRoZSBmcmFtZSBpcyBub3QgeWV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvRmlsZVN5c3RlbUd0ay5jcHAKaW5kZXggOTE1ZWE2OWJiMTcwOTg2MTBjYzlmOGRk
MjM5YjU4Mzc3Yzk1OGNiMC4uMzFiM2EzNTgwZDQ2MjNhOWQwNGE4ZDZhNmMwYjIyOWNiNzgxNjJi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0ZpbGVTeXN0ZW1HdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlU3lzdGVtR3RrLmNwcApA
QCAtMjcxLDYgKzI3MSw0MSBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiAgICAgcmV0dXJuIGVudHJpZXM7CiB9
CiAKK1N0cmluZyBjcmVhdGVVc2VyQ2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBuYW1lKQor
eworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2Vy
X2NhY2hlX2RpcigpLCAid2Via2l0Z3RrIiwgbmFtZS51dGY4KCkuZGF0YSgpLCBOVUxMKSk7Cisg
ICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHBh
dGguZ2V0KCkpKTsKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisKKyAgICBpZiAo
IWdfZmlsZV9tYWtlX2RpcmVjdG9yeV93aXRoX3BhcmVudHMoZmlsZS5nZXQoKSwgMCwgJmVycm9y
Lm91dFB0cigpKSAmJiBlcnJvci0+Y29kZSAhPSBHX0lPX0VSUk9SX0VYSVNUUykKKyAgICAgICAg
cmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aC5nZXQo
KSk7Cit9CisKK1N0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBw
cmVmaXgpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRm
KCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KS51dGY4KCkuZGF0YSgpKSk7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVtcFBhdGgoZ19idWls
ZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1lLmdldCgpLCBOVUxMKSk7CisgICAg
R1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHRlbXBQ
YXRoLmdldCgpKSk7CisKKyAgICBpZiAoIWdfZmlsZV9tYWtlX2RpcmVjdG9yeV93aXRoX3BhcmVu
dHMoZmlsZS5nZXQoKSwgMCwgMCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wUGF0aC5nZXQoKSk7Cit9CisKK1N0cmluZyBjcmVhdGVU
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgbG9jYXRpb24sIGNvbnN0IFN0cmluZyYgcHJlZml4
KQoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMl
cyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSkpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmls
ZW5hbWUobG9jYXRpb24udXRmOCgpLmRhdGEoKSwgZmlsZW5hbWUuZ2V0KCksIE5VTEwpKTsKKyAg
ICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgodGVt
cFBhdGguZ2V0KCkpKTsKKworICAgIEdSZWZQdHI8R0ZpbGVPdXRwdXRTdHJlYW0+IG91dHB1dFN0
cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfY3JlYXRlKGZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVf
Tk9ORSwgMCwgMCkpOworICAgIGlmICghb3V0cHV0U3RyZWFtKQorICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcFBhdGguZ2V0KCkpOworfQor
CiBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYgaGFuZGxlKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lKGdf
c3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggYjk2NTY1
NTJmMjdlMzY4MmY2YTE0MzgwZmE1ZWQzM2M1NzE1NGQ2ZC4uOWEzY2E1NDNjYTQwZTMzMGZhNTRh
YTMwMmM3ODQ3Y2Q2MjA4OTNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0xLDYgKzEsNyBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LTIwMTAuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ29sbGFib3JhIEx0ZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0zMiw2ICszMywxMCBAQAogI2luY2x1ZGUgIldFQlBJbWFnZURlY29k
ZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisjaW5jbHVkZSAi
RGlza0ltYWdlQ2FjaGUuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1
ZGUgPGNtYXRoPgogCkBAIC0xMjcsMTMgKzEzMiwzOSBAQCBJbWFnZURlY29kZXIqIEltYWdlRGVj
b2Rlcjo6Y3JlYXRlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSwgSW1hZ2VTb3VyY2U6OkFscGhh
TwogfQogCiBJbWFnZUZyYW1lOjpJbWFnZUZyYW1lKCkKLSAgICA6IG1faGFzQWxwaGEoZmFsc2Up
CisgICAgOiBtX2J5dGVzKG51bGxwdHIpCisgICAgLCBtX2hhc0FscGhhKGZhbHNlKQorICAgICwg
bV9zdGF0dXMoRnJhbWVFbXB0eSkKKyAgICAsIG1fZHVyYXRpb24oMCkKKyAgICAsIG1fZGlzcG9z
YWxNZXRob2QoRGlzcG9zZU5vdFNwZWNpZmllZCkKKyAgICAsIG1fcHJlbXVsdGlwbHlBbHBoYSh0
cnVlKQorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorICAgICwgbV9pc01lbW9yeU1hcHBl
ZChmYWxzZSkKKyAgICAsIG1fZGlza0ltYWdlQ2FjaGVJZChEaXNrSW1hZ2VDYWNoZTo6aW52YWxp
ZERpc2tDYWNoZUlkKQorI2VuZGlmCisgICAgLCBtX2RlcHRoKDQpCisgICAgLCBtX3N0cmlkZSgw
KQorICAgICwgbV9hbGlnbm1lbnQoMCkKK3sKK30KKworSW1hZ2VGcmFtZTo6SW1hZ2VGcmFtZShj
b25zdCBJbWFnZUZyYW1lJiBvdGhlcikKKyAgICA6IG1fYnl0ZXMobnVsbHB0cikKKyAgICAsIG1f
aGFzQWxwaGEoZmFsc2UpCiAgICAgLCBtX3N0YXR1cyhGcmFtZUVtcHR5KQogICAgICwgbV9kdXJh
dGlvbigwKQogICAgICwgbV9kaXNwb3NhbE1ldGhvZChEaXNwb3NlTm90U3BlY2lmaWVkKQogICAg
ICwgbV9wcmVtdWx0aXBseUFscGhhKHRydWUpCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUp
CisgICAgLCBtX2lzTWVtb3J5TWFwcGVkKGZhbHNlKQorICAgICwgbV9kaXNrSW1hZ2VDYWNoZUlk
KERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQpCisjZW5kaWYKKyAgICAsIG1fZGVw
dGgoNCkKKyAgICAsIG1fc3RyaWRlKDApCisgICAgLCBtX2FsaWdubWVudCgwKQogewotfSAKKyAg
ICBvcGVyYXRvcj0ob3RoZXIpOworfQogCiBJbWFnZUZyYW1lJiBJbWFnZUZyYW1lOjpvcGVyYXRv
cj0oY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiB7CkBAIC0xNDksOCArMTgwLDI0IEBAIEltYWdl
RnJhbWUmIEltYWdlRnJhbWU6Om9wZXJhdG9yPShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikKICAg
ICByZXR1cm4gKnRoaXM7CiB9CiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKK0ltYWdl
RnJhbWU6On5JbWFnZUZyYW1lKCkKK3sKKyAgICBjbGVhclBpeGVsRGF0YSgpOworfQorI2VuZGlm
CisKIHZvaWQgSW1hZ2VGcmFtZTo6Y2xlYXJQaXhlbERhdGEoKQogeworI2lmIEVOQUJMRShESVNL
X0lNQUdFX0NBQ0hFKQorICAgIGlmIChtX2Rpc2tJbWFnZUNhY2hlSWQpIHsKKyAgICAgICAgQVNT
RVJUKGlzTWVtb3J5TWFwcGVkKCkpOworICAgICAgICBkaXNrSW1hZ2VDYWNoZSgpLnJlbW92ZUl0
ZW0obV9kaXNrSW1hZ2VDYWNoZUlkKTsKKyAgICAgICAgbV9pc01lbW9yeU1hcHBlZCA9IGZhbHNl
OworICAgICAgICBtX2Rpc2tJbWFnZUNhY2hlSWQgPSBEaXNrSW1hZ2VDYWNoZTo6aW52YWxpZERp
c2tDYWNoZUlkOworICAgIH0KKyNlbmRpZgorCiAgICAgbV9iYWNraW5nU3RvcmUuY2xlYXIoKTsK
ICAgICBtX2J5dGVzID0gMDsKICAgICBtX3N0YXR1cyA9IEZyYW1lRW1wdHk7CkBAIC0xNjAsMjQg
KzIwNyw2MyBAQCB2b2lkIEltYWdlRnJhbWU6OmNsZWFyUGl4ZWxEYXRhKCkKICAgICAvLyBsYXRl
ci4KIH0KIAordW5zaWduZWQgSW1hZ2VGcmFtZTo6Y2FsY3VsYXRlUmVxdWlyZWRTaXplKGludCB3
aWR0aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwgaW50IGFsaWdubWVudCkKK3sKKyAgICB1bnNp
Z25lZCByZXF1aXJlZFNpemU7CisKKyAgICBpZiAoIXN0cmlkZSkKKyAgICAgICAgc3RyaWRlID0g
d2lkdGggKiBtX2RlcHRoOworCisgICAgaWYgKGFsaWdubWVudCA+IDAgJiYgaGVpZ2h0ICUgYWxp
Z25tZW50KQorICAgICAgICBoZWlnaHQgKz0gKGFsaWdubWVudCAtIGhlaWdodCAlIGFsaWdubWVu
dCk7CisKKyAgICByZXF1aXJlZFNpemUgPSBoZWlnaHQgKiBzdHJpZGU7CisKKyAgICBpZiAoYWxp
Z25tZW50ID4gMCAmJiByZXF1aXJlZFNpemUgJSBhbGlnbm1lbnQpCisgICAgICAgIHJlcXVpcmVk
U2l6ZSArPSBhbGlnbm1lbnQgLSAxOworCisgICAgcmV0dXJuIHJlcXVpcmVkU2l6ZTsKK30KKwor
I2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQordm9pZCBJbWFnZUZyYW1lOjp0cnlNZW1vcnlN
YXBwaW5nKGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwgaW50IGFsaWdubWVudCkK
K3sKKyAgICBBU1NFUlQoIWlzTWVtb3J5TWFwcGVkKCkpOworCisgICAgLy8gVXNlIG1hcHBpbmdz
IG9ubHkgZm9yIGJpZ2dlciBpbWFnZXMuCisgICAgdW5zaWduZWQgbWFwcGluZ1NpemUgPSBjYWxj
dWxhdGVSZXF1aXJlZFNpemUod2lkdGgsIGhlaWdodCwgc3RyaWRlLCBhbGlnbm1lbnQpOworICAg
IGlmIChtYXBwaW5nU2l6ZSA8IDIwICogMTAyNCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9k
aXNrSW1hZ2VDYWNoZUlkID0gZGlza0ltYWdlQ2FjaGUoKS5jcmVhdGVGaWxlQmFja2VkTWFwcGlu
ZyhtYXBwaW5nU2l6ZSk7CisgICAgaWYgKG1fZGlza0ltYWdlQ2FjaGVJZCA9PSBEaXNrSW1hZ2VD
YWNoZTo6aW52YWxpZERpc2tDYWNoZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2J5dGVz
ID0gc3RhdGljX2Nhc3Q8UGl4ZWxEYXRhKj4oZGlza0ltYWdlQ2FjaGUoKS5kYXRhRm9ySXRlbSht
X2Rpc2tJbWFnZUNhY2hlSWQpKTsKKyAgICBtX2lzTWVtb3J5TWFwcGVkID0gdHJ1ZTsKK30KKyNl
bmRpZgorCiB2b2lkIEltYWdlRnJhbWU6Onplcm9GaWxsUGl4ZWxEYXRhKCkKIHsKLSAgICBtZW1z
ZXQobV9ieXRlcywgMCwgbV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0KCkgKiBzaXplb2Yo
UGl4ZWxEYXRhKSk7CisgICAgbWVtc2V0KG1fYnl0ZXMsIDAsIGNhbGN1bGF0ZVJlcXVpcmVkU2l6
ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBtX3N0cmlkZSwgbV9hbGlnbm1lbnQp
KTsKKwogICAgIG1faGFzQWxwaGEgPSB0cnVlOwogfQogCiB2b2lkIEltYWdlRnJhbWU6Onplcm9G
aWxsRnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgQVNTRVJUKEludFJlY3Qo
SW50UG9pbnQoKSwgbV9zaXplKS5jb250YWlucyhyZWN0KSk7CisgICAgQVNTRVJUKCFtX3N0cmlk
ZSAmJiAhbV9hbGlnbm1lbnQpOyAvLyBUT0RPCiAKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHNpemVfdCByZWN0V2lkdGhJbkJ5dGVzID0gcmVjdC53aWR0
aCgpICogc2l6ZW9mKFBpeGVsRGF0YSk7Ci0gICAgUGl4ZWxEYXRhKiBzdGFydCA9IG1fYnl0ZXMg
KyAocmVjdC55KCkgKiB3aWR0aCgpKSArIHJlY3QueCgpOworICAgIHNpemVfdCByZWN0V2lkdGhJ
bkJ5dGVzID0gcmVjdC53aWR0aCgpICogbV9kZXB0aDsKKyAgICBQaXhlbERhdGEqIHN0YXJ0ID0g
bV9ieXRlcyArIChyZWN0LnkoKSAqIHdpZHRoKCkgKiBtX2RlcHRoKSArIHJlY3QueCgpICogbV9k
ZXB0aDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY3QuaGVpZ2h0KCk7ICsraSkgewogICAg
ICAgICBtZW1zZXQoc3RhcnQsIDAsIHJlY3RXaWR0aEluQnl0ZXMpOwotICAgICAgICBzdGFydCAr
PSB3aWR0aCgpOworICAgICAgICBzdGFydCArPSB3aWR0aCgpICogbV9kZXB0aDsKICAgICB9CiAK
ICAgICBzZXRIYXNBbHBoYSh0cnVlKTsKQEAgLTE4OCwyMiArMjc0LDY5IEBAIGJvb2wgSW1hZ2VG
cmFtZTo6Y29weUJpdG1hcERhdGEoY29uc3QgSW1hZ2VGcmFtZSYgb3RoZXIpCiAgICAgaWYgKHRo
aXMgPT0gJm90aGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG1fYmFja2luZ1N0b3Jl
ID0gb3RoZXIubV9iYWNraW5nU3RvcmU7Ci0gICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRh
dGEoKTsKICAgICBtX3NpemUgPSBvdGhlci5tX3NpemU7CisgICAgbV9kZXB0aCA9IG90aGVyLm1f
ZGVwdGg7CisgICAgbV9zdHJpZGUgPSBvdGhlci5tX3N0cmlkZTsKKyAgICBtX2FsaWdubWVudCA9
IG90aGVyLm1fYWxpZ25tZW50OwogICAgIHNldEhhc0FscGhhKG90aGVyLm1faGFzQWxwaGEpOwor
CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgaWYgKG90aGVyLm1faXNNZW1vcnlN
YXBwZWQpIHsKKyAgICAgICAgdHJ5TWVtb3J5TWFwcGluZyhtX3NpemUud2lkdGgoKSwgbV9zaXpl
LmhlaWdodCgpLCBtX3N0cmlkZSwgbV9hbGlnbm1lbnQpOworICAgICAgICBpZiAoIW1faXNNZW1v
cnlNYXBwZWQpIHsKKyAgICAgICAgICAgIG1fYnl0ZXMgPSBudWxscHRyOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IHNpemUgPSBjYWxjdWxh
dGVSZXF1aXJlZFNpemUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwKKyAgICAgICAg
ICAgIG1fc3RyaWRlLCBtX2FsaWdubWVudCk7CisgICAgICAgIG1lbWNweShtX2J5dGVzLCBvdGhl
ci5tX2J5dGVzLCBzaXplKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgbV9p
c01lbW9yeU1hcHBlZCA9IGZhbHNlOworICAgIG1fZGlza0ltYWdlQ2FjaGVJZCA9IERpc2tJbWFn
ZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQ7CisjZW5kaWYKKworICAgIG1fYmFja2luZ1N0b3Jl
ID0gb3RoZXIubV9iYWNraW5nU3RvcmU7CisgICAgbV9ieXRlcyA9IG1fYmFja2luZ1N0b3JlLmRh
dGEoKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEltYWdlRnJhbWU6OnNldFNpemUo
aW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KQorYm9vbCBJbWFnZUZyYW1lOjpzZXRTaXplKGlu
dCBuZXdXaWR0aCwgaW50IG5ld0hlaWdodCwgaW50IHN0cmlkZSwgaW50IGFsaWdubWVudCwgYm9v
bCB1c2VEaXNrSW1hZ2VDYWNoZSkKIHsKICAgICBBU1NFUlQoIXdpZHRoKCkgJiYgIWhlaWdodCgp
KTsKLSAgICBzaXplX3QgYmFja2luZ1N0b3JlU2l6ZSA9IG5ld1dpZHRoICogbmV3SGVpZ2h0Owor
ICAgIHNpemVfdCBiYWNraW5nU3RvcmVTaXplOworCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FD
SEUpCisgICAgaWYgKHVzZURpc2tJbWFnZUNhY2hlKQorICAgICAgICB0cnlNZW1vcnlNYXBwaW5n
KG5ld1dpZHRoLCBuZXdIZWlnaHQsIHN0cmlkZSwgYWxpZ25tZW50KTsKKworICAgIGlmIChpc01l
bW9yeU1hcHBlZCgpKSB7CisgICAgICAgIG1fc2l6ZSA9IEludFNpemUobmV3V2lkdGgsIG5ld0hl
aWdodCk7CisgICAgICAgIG1fc3RyaWRlID0gc3RyaWRlOworICAgICAgICBtX2FsaWdubWVudCA9
IGFsaWdubWVudDsKKworICAgICAgICAvLyBtX2hhc0FscGhhIGlzIGFzc2luZ2VkIHRvIHRydWUg
dGhyb3VnaCB6ZXJvRmlsbFBpeGVsRGF0YSgpIHdoZXJlIERJU0tfSU1BR0VfQ0FDSEUgaXMgZGlz
YWJsZWQuCisgICAgICAgIC8vIEJ1dCBub3doZXJlIGRvaW5nIGEgc2ltaWxhciB3b3JrIHdoZW4g
RElTS19JTUFHRV9DQUNIRSBpcyBlbmFibGVkLiBXZSBzaG91bGQgc2V0IG1faGFzQWxwaGEgdG8g
dHJ1ZQorICAgICAgICAvLyB3aGVuIGZpcnN0IHNldHRpbmcgc2l6ZSBvZiBJbWFnZUZyYW1lLiBP
dGhlcndpc2UgYWxwaGEgYmxlbmRpbmcgb2Ygc29tZSBpbWFnZXMgd291bGQgZ28gd3JvbmcuCisg
ICAgICAgIG1faGFzQWxwaGEgPSB0cnVlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTSh1c2VEaXNrSW1hZ2VDYWNoZSk7CisjZW5kaWYKKworICAg
IGJhY2tpbmdTdG9yZVNpemUgPSBjYWxjdWxhdGVSZXF1aXJlZFNpemUobmV3V2lkdGgsIG5ld0hl
aWdodCwgc3RyaWRlLCBhbGlnbm1lbnQpOworCiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS50cnlS
ZXNlcnZlQ2FwYWNpdHkoYmFja2luZ1N0b3JlU2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBtX2JhY2tpbmdTdG9yZS5yZXNpemUoYmFja2luZ1N0b3JlU2l6ZSk7CiAgICAgbV9ieXRl
cyA9IG1fYmFja2luZ1N0b3JlLmRhdGEoKTsKICAgICBtX3NpemUgPSBJbnRTaXplKG5ld1dpZHRo
LCBuZXdIZWlnaHQpOworICAgIG1fc3RyaWRlID0gc3RyaWRlOworICAgIG1fYWxpZ25tZW50ID0g
YWxpZ25tZW50OwogCiAgICAgemVyb0ZpbGxQaXhlbERhdGEoKTsKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTI4NCw3ICs0MTcsNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdElu
ZGV4KHNpemVfdCBpbmRleCkgY29uc3QKICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUo
KSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgZGlt
ZW5zaW9uIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUuCi0gICAgcmV0dXJuIG1fc2l6ZS5hcmVhKCkg
KiBzaXplb2YoSW1hZ2VGcmFtZTo6UGl4ZWxEYXRhKTsKKyAgICByZXR1cm4gbV9zaXplLmFyZWEo
KSAqIG1fZnJhbWVCdWZmZXJDYWNoZVtpbmRleF0uZGVwdGgoKTsKIH0KIAogdm9pZCBJbWFnZURl
Y29kZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmluZGV4IDJjMDFm
ZGQ4YTg2NmUyYmFhNGEyYjZhOGM1ZTcwMGM0ZDNjMmNmYzguLjU3MzE0ODE1ZWNiZDkwYzM1NTZh
NTNjZDQ3N2IxZjI2MWMwOGY4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCkBAIC0zLDYgKzMsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxNSBDb2xsYWJvcmEgTHRkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOSwxMCBAQAogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVO
QUJMRShESVNLX0lNQUdFX0NBQ0hFKQorI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlLmgiCisjZW5k
aWYKKwogI2lmIFVTRShRQ01TTElCKQogI2luY2x1ZGUgInFjbXMuaCIKICNpZiBPUyhEQVJXSU4p
CkBAIC02NCwxMSArNjksMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRGlz
cG9zZU92ZXJ3cml0ZVByZXZpb3VzICAvLyBDbGVhciBmcmFtZSB0byBwcmV2aW91cyBmcmFtZWJ1
ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZW50cwog
ICAgICAgICB9OwotICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIFBpeGVsRGF0YTsKKyAgICAgICAg
dHlwZWRlZiB1bnNpZ25lZCBjaGFyIFBpeGVsRGF0YTsKIAogICAgICAgICBJbWFnZUZyYW1lKCk7
CiAKLSAgICAgICAgSW1hZ2VGcmFtZShjb25zdCBJbWFnZUZyYW1lJiBvdGhlcikgeyBvcGVyYXRv
cj0ob3RoZXIpOyB9CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgICAgIH5JbWFn
ZUZyYW1lKCk7CisjZW5kaWYKKworICAgICAgICBJbWFnZUZyYW1lKGNvbnN0IEltYWdlRnJhbWUm
IG90aGVyKTsKIAogICAgICAgICAvLyBGb3IgYmFja2VuZHMgd2hpY2ggcmVmY291bnQgdGhlaXIg
ZGF0YSwgdGhpcyBvcGVyYXRvciBkb2Vzbid0IG5lZWQgdG8KICAgICAgICAgLy8gY3JlYXRlIGEg
bmV3IGNvcHkgb2YgdGhlIGltYWdlIGRhdGEsIG9ubHkgaW5jcmVhc2UgdGhlIHJlZiBjb3VudC4K
QEAgLTkzLDcgKzEwMiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIEFTU0VS
VChlbmRYIDw9IHdpZHRoKCkpOwogICAgICAgICAgICAgQVNTRVJUKHN0YXJ0WSA8IGhlaWdodCgp
KTsKICAgICAgICAgICAgIEFTU0VSVChlbmRZIDw9IGhlaWdodCgpKTsKLSAgICAgICAgICAgIGNv
bnN0IGludCByb3dCeXRlcyA9IChlbmRYIC0gc3RhcnRYKSAqIHNpemVvZihQaXhlbERhdGEpOwor
ICAgICAgICAgICAgQVNTRVJUKCFtX3N0cmlkZSAmJiAhbV9hbGlnbm1lbnQpOyAvLyBUT0RPCisg
ICAgICAgICAgICBjb25zdCBpbnQgcm93Qnl0ZXMgPSAoZW5kWCAtIHN0YXJ0WCkgKiBtX2RlcHRo
OwogICAgICAgICAgICAgY29uc3QgUGl4ZWxEYXRhKiBjb25zdCBzdGFydEFkZHIgPSBnZXRBZGRy
KHN0YXJ0WCwgc3RhcnRZKTsKICAgICAgICAgICAgIGZvciAoaW50IGRlc3RZID0gc3RhcnRZICsg
MTsgZGVzdFkgPCBlbmRZOyArK2Rlc3RZKQogICAgICAgICAgICAgICAgIG1lbWNweShnZXRBZGRy
KHN0YXJ0WCwgZGVzdFkpLCBzdGFydEFkZHIsIHJvd0J5dGVzKTsKQEAgLTEwMiwxOSArMTEyLDIy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gQWxsb2NhdGVzIHNwYWNlIGZvciB0
aGUgcGl4ZWwgZGF0YS4gIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgcGl4ZWxzCiAgICAgICAg
IC8vIGFyZSB3cml0dGVuLiAgTXVzdCBvbmx5IGJlIGNhbGxlZCBvbmNlLiAgUmV0dXJucyB3aGV0
aGVyIGFsbG9jYXRpb24KICAgICAgICAgLy8gc3VjY2VlZGVkLgotICAgICAgICBib29sIHNldFNp
emUoaW50IG5ld1dpZHRoLCBpbnQgbmV3SGVpZ2h0KTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGlu
dCBuZXdXaWR0aCwgaW50IG5ld0hlaWdodCwgaW50IHN0cmlkZSA9IDAsIGludCBhbGlnbm1lbnQg
PSAwLCBib29sIHVzZURpc2tJbWFnZUNhY2hlID0gdHJ1ZSk7CiAKICAgICAgICAgLy8gUmV0dXJu
cyBhIGNhbGxlci1vd25lZCBwb2ludGVyIHRvIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBpbWFnZSBk
YXRhLgogICAgICAgICAvLyAoQWN0dWFsIHVzZTogVGhpcyBwb2ludGVyIHdpbGwgYmUgb3duZWQg
YnkgQml0bWFwSW1hZ2UgYW5kIGZyZWVkIGluCiAgICAgICAgIC8vIEZyYW1lRGF0YTo6Y2xlYXIo
KSkuCiAgICAgICAgIFBhc3NOYXRpdmVJbWFnZVB0ciBhc05ld05hdGl2ZUltYWdlKCkgY29uc3Q7
CiAKKyAgICAgICAgaW50IHN0cmlkZUZvcldpZHRoKGludCBkZXB0aCwgaW50IHdpZHRoKSBjb25z
dDsKKwogICAgICAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IEludFJl
Y3QmIG9yaWdpbmFsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbEZyYW1lUmVj
dDsgfQogICAgICAgICBGcmFtZVN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1
czsgfQogICAgICAgICB1bnNpZ25lZCBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRp
b247IH0KICAgICAgICAgRnJhbWVEaXNwb3NhbE1ldGhvZCBkaXNwb3NhbE1ldGhvZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlzcG9zYWxNZXRob2Q7IH0KICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFs
cGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CisgICAgICAgIHVuc2ln
bmVkIGRlcHRoKCkgY29uc3QgeyByZXR1cm4gbV9kZXB0aDsgfQogCiAgICAgICAgIHZvaWQgc2V0
SGFzQWxwaGEoYm9vbCBhbHBoYSk7CiAgICAgICAgIHZvaWQgc2V0Q29sb3JQcm9maWxlKGNvbnN0
IENvbG9yUHJvZmlsZSYpOwpAQCAtMTIzLDE1ICsxMzYsMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIHNldER1cmF0aW9uKHVuc2lnbmVkIGR1cmF0aW9uKSB7IG1fZHVyYXRp
b24gPSBkdXJhdGlvbjsgfQogICAgICAgICB2b2lkIHNldERpc3Bvc2FsTWV0aG9kKEZyYW1lRGlz
cG9zYWxNZXRob2QgbWV0aG9kKSB7IG1fZGlzcG9zYWxNZXRob2QgPSBtZXRob2Q7IH0KICAgICAg
ICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhhKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkgeyBtX3By
ZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBseUFscGhhOyB9CisgICAgICAgIHZvaWQgc2V0RGVw
dGgodW5zaWduZWQgZGVwdGgpIHsgbV9kZXB0aCA9IGRlcHRoOyB9CiAKICAgICAgICAgaW5saW5l
IHZvaWQgc2V0UkdCQShpbnQgeCwgaW50IHksIHVuc2lnbmVkIHIsIHVuc2lnbmVkIGcsIHVuc2ln
bmVkIGIsIHVuc2lnbmVkIGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIHNldFJHQkEoZ2V0QWRk
cih4LCB5KSwgciwgZywgYiwgYSk7CiAgICAgICAgIH0KIAotICAgICAgICBpbmxpbmUgUGl4ZWxE
YXRhKiBnZXRBZGRyKGludCB4LCBpbnQgeSkKKyAgICAgICAgaW5saW5lIFBpeGVsRGF0YSogZ2V0
QWRkcihpbnQgeCwgaW50IHkpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBt
X2J5dGVzICsgKHkgKiB3aWR0aCgpKSArIHg7CisgICAgICAgICAgICBpbnQgYWxpZ25tZW50T2Zm
c2V0ID0gMDsKKyAgICAgICAgICAgIGludCBzdHJpZGUgPSB3aWR0aCgpICogbV9kZXB0aDsKKwor
ICAgICAgICAgICAgaWYgKG1fYWxpZ25tZW50KQorICAgICAgICAgICAgICAgIGFsaWdubWVudE9m
ZnNldCA9ICh1aW50cHRyX3QpIG1fYnl0ZXMgJSBtX2FsaWdubWVudDsKKworICAgICAgICAgICAg
aWYgKG1fc3RyaWRlKQorICAgICAgICAgICAgICAgIHN0cmlkZSA9IG1fc3RyaWRlOworCisgICAg
ICAgICAgICByZXR1cm4gbV9ieXRlcyArIGFsaWdubWVudE9mZnNldCArICh5ICogc3RyaWRlKSAr
IHggKiBtX2RlcHRoOwogICAgICAgICB9CiAKICAgICAgICAgaW5saW5lIGJvb2wgaGFzUGl4ZWxE
YXRhKCkgY29uc3QKQEAgLTE1Myw3ICsxNzYsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAobV9wcmVtdWx0aXBseUFscGhhICYmIGEgPCAyNTUpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIWEpIHsKLSAgICAgICAgICAgICAgICAgICAgKmRlc3QgPSAw
OworCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobV9kZXB0aCkgeworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbMF0gPSBkZXN0
WzFdID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogeworICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdFswXSA9IGRlc3RbMV0gPSBkZXN0WzJdID0gZGVzdFszXSA9IDA7CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xNjIsNyArMTk4LDIzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICBnID0gZml4UG9pbnRVbnNpZ25lZE11bHRpcGx5
KGcsIGFscGhhTXVsdCk7CiAgICAgICAgICAgICAgICAgYiA9IGZpeFBvaW50VW5zaWduZWRNdWx0
aXBseShiLCBhbHBoYU11bHQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKmRlc3QgPSAo
YSA8PCAyNCB8IHIgPDwgMTYgfCBnIDw8IDggfCBiKTsKKyAgICAgICAgICAgIHN3aXRjaCAobV9k
ZXB0aCkgeworICAgICAgICAgICAgY2FzZSAyOiB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQg
cGl4ZWwgPSAoKHIgPj4gMykgPDwgMTEgfCAoZyA+PiAyKSA8PCA1IHwgKGIgPj4gMykpOworICAg
ICAgICAgICAgICAgIGRlc3RbMF0gPSBwaXhlbDsKKyAgICAgICAgICAgICAgICBkZXN0WzFdID0g
cGl4ZWwgPj4gODsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNhc2UgNDogeworICAgICAgICAgICAgICAgIGRlc3RbMF0gPSBiOworICAgICAgICAg
ICAgICAgIGRlc3RbMV0gPSBnOworICAgICAgICAgICAgICAgIGRlc3RbMl0gPSByOworICAgICAg
ICAgICAgICAgIGRlc3RbM10gPSBhOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAjaWYgRU5BQkxFKEFQTkcpCkBA
IC0yMDcsNiArMjU5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAgICAgYm9vbCBpc01lbW9yeU1h
cHBlZCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2lzTWVtb3J5TWFw
cGVkOworICAgICAgICB9CisjZW5kaWYKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGludCB3aWR0
aCgpIGNvbnN0CiAgICAgICAgIHsKQEAgLTIxOCw2ICsyNzcsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgcmV0dXJuIG1fc2l6ZS5oZWlnaHQoKTsKICAgICAgICAgfQogCisg
ICAgICAgIHVuc2lnbmVkIGNhbGN1bGF0ZVJlcXVpcmVkU2l6ZShpbnQgd2lkdGgsIGludCBoZWln
aHQsIGludCBzdHJpZGUsIGludCBhbGlnbm1lbnQpOworCisjaWYgRU5BQkxFKERJU0tfSU1BR0Vf
Q0FDSEUpCisgICAgICAgIHZvaWQgdHJ5TWVtb3J5TWFwcGluZyhpbnQgd2lkdGgsIGludCBoZWln
aHQsIGludCBzdHJpZGUsIGludCBhbGlnbm1lbnQpOworI2VuZGlmCisKICAgICAgICAgVmVjdG9y
PFBpeGVsRGF0YT4gbV9iYWNraW5nU3RvcmU7CiAgICAgICAgIFBpeGVsRGF0YSogbV9ieXRlczsg
Ly8gVGhlIG1lbW9yeSBpcyBiYWNrZWQgYnkgbV9iYWNraW5nU3RvcmUuCiAgICAgICAgIEludFNp
emUgbV9zaXplOwpAQCAtMjMyLDYgKzI5NywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHVuc2lnbmVkIG1fZHVyYXRpb247CiAgICAgICAgIEZyYW1lRGlzcG9zYWxNZXRob2QgbV9k
aXNwb3NhbE1ldGhvZDsKICAgICAgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CisKKyNpZiBF
TkFCTEUoRElTS19JTUFHRV9DQUNIRSkKKyAgICAgICAgYm9vbCBtX2lzTWVtb3J5TWFwcGVkOwor
ICAgICAgICBEaXNrSW1hZ2VDYWNoZUlkIG1fZGlza0ltYWdlQ2FjaGVJZDsKKyNlbmRpZgorCisg
ICAgICAgIGludCBtX2RlcHRoOworICAgICAgICBpbnQgbV9zdHJpZGU7CisgICAgICAgIGludCBt
X2FsaWdubWVudDsKICAgICB9OwogCiAgICAgLy8gSW1hZ2VEZWNvZGVyIGlzIGEgYmFzZSBmb3Ig
YWxsIGZvcm1hdC1zcGVjaWZpYyBkZWNvZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvY2Fpcm8vSW1hZ2VEZWNvZGVyQ2Fp
cm8uY3BwCmluZGV4IDNmZTcwNDAyMzQxOWQ5NzUzYjEzOTlkOWY2YzAwYjY3Mzk0NTEyOTYuLjll
MDMwZDllNDgxMzQyMDI2YjhjOGIxYTk2MGMyNzAwYjI4MzdlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2NhaXJvL0ltYWdlRGVjb2RlckNhaXJv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9jYWlyby9J
bWFnZURlY29kZXJDYWlyby5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQ29sbGFib3JhIEx0ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzIsOSArMzMsNTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VGcmFtZTo6YXNOZXdOYXRpdmVJbWFnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKAotICAgICAgICByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPihjb25zdF9jYXN0PFBpeGVsRGF0YSo+KG1fYnl0ZXMp
KSwKLSAgICAgICAgQ0FJUk9fRk9STUFUX0FSR0IzMiwgd2lkdGgoKSwgaGVpZ2h0KCksIHdpZHRo
KCkgKiBzaXplb2YoUGl4ZWxEYXRhKSkpOworICAgIGludCBzdHJpZGUgPSBtX3N0cmlkZTsKKyAg
ICBjYWlyb19mb3JtYXRfdCBmb3JtYXQ7CisgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlOwor
CisgICAgc3dpdGNoIChtX2RlcHRoKSB7CisgICAgY2FzZSAyOgorICAgICAgICBmb3JtYXQgPSBD
QUlST19GT1JNQVRfUkdCMTZfNTY1OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAg
ICAgIGZvcm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICBpZiAoIXN0cmlkZSkKKyAgICAgICAgc3RyaWRlID0gd2lkdGgoKSAqIG1f
ZGVwdGg7CisKKyAgICBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2Rh
dGEobV9ieXRlcywgZm9ybWF0LAorICAgICAgICB3aWR0aCgpLCBoZWlnaHQoKSwgc3RyaWRlKTsK
KworICAgIGlmIChjYWlyb19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlKSAhPSBDQUlST19TVEFUVVNf
U1VDQ0VTUykgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgcmV0dXJuIGFkb3B0UmVmKHN1cmZhY2UpOworfQorCitpbnQgSW1h
Z2VGcmFtZTo6c3RyaWRlRm9yV2lkdGgoaW50IGRlcHRoLCBpbnQgd2lkdGgpIGNvbnN0Cit7Cisg
ICAgY2Fpcm9fZm9ybWF0X3QgZm9ybWF0OworCisgICAgc3dpdGNoIChkZXB0aCkgeworICAgIGNh
c2UgMjoKKyAgICAgICAgZm9ybWF0ID0gQ0FJUk9fRk9STUFUX1JHQjE2XzU2NTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSA0OgorICAgICAgICBmb3JtYXQgPSBDQUlST19GT1JNQVRfQVJHQjMy
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIGNhaXJvX2Zvcm1h
dF9zdHJpZGVfZm9yX3dpZHRoKGZvcm1hdCwgd2lkdGgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCmluZGV4IGNkNTZlNjdlYjkxOGIxNjkz
YzRlY2NmNzQwYWY4MGM4NTkzNmE3OTguLjU3OGRkMDFjOGIyNDU3Y2YzMTYxZTE0MmFmYmZiNWFj
NGZlY2FiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1IENvbGxhYm9yYSBMdGQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIzMSw3ICsyMzIsNyBAQCBib29sIEdJRkltYWdlRGVjb2Rlcjo6
aGF2ZURlY29kZWRSb3codW5zaWduZWQgZnJhbWVJbmRleCwgY29uc3QgVmVjdG9yPHVuc2lnbmVk
CiAgICAgICAgICAgICBpZiAod3JpdGVUcmFuc3BhcmVudFBpeGVscykKICAgICAgICAgICAgICAg
ICBidWZmZXIuc2V0UkdCQShjdXJyZW50QWRkcmVzcywgMCwgMCwgMCwgMCk7CiAgICAgICAgIH0K
LSAgICAgICAgKytjdXJyZW50QWRkcmVzczsKKyAgICAgICAgY3VycmVudEFkZHJlc3MgKz0gYnVm
ZmVyLmRlcHRoKCk7CiAgICAgfQogCiAgICAgLy8gVGVsbCB0aGUgZnJhbWUgdG8gY29weSB0aGUg
cm93IGRhdGEgaWYgbmVlZCBiZS4KQEAgLTM1Nyw3ICszNTgsNyBAQCBib29sIEdJRkltYWdlRGVj
b2Rlcjo6aW5pdEZyYW1lQnVmZmVyKHVuc2lnbmVkIGZyYW1lSW5kZXgpCiAKICAgICBpZiAoIWZy
YW1lSW5kZXgpIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgZnJhbWUsIHNvIHdlJ3Jl
IG5vdCByZWx5aW5nIG9uIGFueSBwcmV2aW91cyBkYXRhLgotICAgICAgICBpZiAoIWJ1ZmZlci0+
c2V0U2l6ZShzY2FsZWRTaXplKCkud2lkdGgoKSwgc2NhbGVkU2l6ZSgpLmhlaWdodCgpKSkKKyAg
ICAgICAgaWYgKCFidWZmZXItPnNldFNpemUoc2NhbGVkU2l6ZSgpLndpZHRoKCksIHNjYWxlZFNp
emUoKS5oZWlnaHQoKSwgMCwgMCwgZmFsc2UpKQogICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxl
ZCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoZSBzdGFydGluZyBzdGF0ZSBmb3IgdGhp
cyBmcmFtZSBkZXBlbmRzIG9uIHRoZSBwcmV2aW91cyBmcmFtZSdzCkBAIC0zODgsNyArMzg5LDcg
QEAgYm9vbCBHSUZJbWFnZURlY29kZXI6OmluaXRGcmFtZUJ1ZmZlcih1bnNpZ25lZCBmcmFtZUlu
ZGV4KQogICAgICAgICAgICAgaWYgKCFmcmFtZUluZGV4IHx8IHByZXZSZWN0LmNvbnRhaW5zKElu
dFJlY3QoSW50UG9pbnQoKSwgc2NhbGVkU2l6ZSgpKSkpIHsKICAgICAgICAgICAgICAgICAvLyBD
bGVhcmluZyB0aGUgZmlyc3QgZnJhbWUsIG9yIGEgZnJhbWUgdGhlIHNpemUgb2YgdGhlIHdob2xl
CiAgICAgICAgICAgICAgICAgLy8gaW1hZ2UsIHJlc3VsdHMgaW4gYSBjb21wbGV0ZWx5IGVtcHR5
IGltYWdlLgotICAgICAgICAgICAgICAgIGlmICghYnVmZmVyLT5zZXRTaXplKGJ1ZmZlclNpemUu
d2lkdGgoKSwgYnVmZmVyU2l6ZS5oZWlnaHQoKSkpCisgICAgICAgICAgICAgICAgaWYgKCFidWZm
ZXItPnNldFNpemUoYnVmZmVyU2l6ZS53aWR0aCgpLCBidWZmZXJTaXplLmhlaWdodCgpLCAwLCAw
LCBmYWxzZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgd2hvbGUgcHJldmlv
dXMgYnVmZmVyLCB0aGVuIGNsZWFyIGp1c3QgaXRzIGZyYW1lLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5jcHAKaW5kZXggYmJlNzA5Y2JmOTYyMmE2YzA1NTU0YzgyOTlmMDRlMzcwMWEwNjYy
MC4uZWYyODgzMmQ2NTA4ODMzMTQxZmQ3MGUwNzA1M2Q0Njc0NGM5ZjkyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC03LDYgKzcsNyBAQAogICogICBTdHVhcnQgUGFybWVu
dGVyIDxzdHVhcnRAbW96aWxsYS5jb20+CiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkg
VG9yY2ggTW9iaWxlLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ29sbGFib3JhIEx0ZC4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCkBAIC02ODcsNyArNjg4LDcgQEAgYm9vbCBKUEVHSW1hZ2VEZWNv
ZGVyOjpvdXRwdXRTY2FubGluZXMoSW1hZ2VGcmFtZSYgYnVmZmVyKQogICAgICAgICBJbWFnZUZy
YW1lOjpQaXhlbERhdGEqIGN1cnJlbnRBZGRyZXNzID0gYnVmZmVyLmdldEFkZHIoMCwgZGVzdFkp
OwogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gpIHsKICAgICAgICAgICAg
IHNldFBpeGVsPGNvbG9yU3BhY2U+KGJ1ZmZlciwgY3VycmVudEFkZHJlc3MsIHNhbXBsZXMsIGlz
U2NhbGVkID8gbV9zY2FsZWRDb2x1bW5zW3hdIDogeCk7Ci0gICAgICAgICAgICArK2N1cnJlbnRB
ZGRyZXNzOworICAgICAgICAgICAgY3VycmVudEFkZHJlc3MgKz0gYnVmZmVyLmRlcHRoKCk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC03MDQsMTAgKzcwNSwyOCBAQCBi
b29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygpCiAgICAgaWYgKG1fZnJhbWVC
dWZmZXJDYWNoZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGpwZWdf
ZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8gPSBtX3JlYWRlci0+aW5mbygpOworCiAgICAgLy8gSW5p
dGlhbGl6ZSB0aGUgZnJhbWVidWZmZXIgaWYgbmVlZGVkLgogICAgIEltYWdlRnJhbWUmIGJ1ZmZl
ciA9IG1fZnJhbWVCdWZmZXJDYWNoZVswXTsKICAgICBpZiAoYnVmZmVyLnN0YXR1cygpID09IElt
YWdlRnJhbWU6OkZyYW1lRW1wdHkpIHsKLSAgICAgICAgaWYgKCFidWZmZXIuc2V0U2l6ZShzY2Fs
ZWRTaXplKCkud2lkdGgoKSwgc2NhbGVkU2l6ZSgpLmhlaWdodCgpKSkKKyAgICAgICAgaW50IHN0
cmlkZTsKKyAgICAgICAgaW50IGRlcHRoID0gNDsKKworICAgICAgICBpZiAoZ2V0ZW52KCJSR0I1
NjUiKSkgeworI2lmIGRlZmluZWQoVFVSQk9fSlBFR19SR0JfU1dJWlpMRSkKKyAgICAgICAgICAg
IC8vIFVwc3RyZWFtIGxpYmpwZWctdHVyYm8gY2Fubm90IHJlbmRlciB0byBSR0I1NjUgYXRtCisg
ICAgICAgICAgICBpZiAobV9zY2FsZWQgfHwgIXR1cmJvU3dpenpsZWQoaW5mby0+b3V0X2NvbG9y
X3NwYWNlKSkgeworI2Vsc2UKKyAgICAgICAgICAgIHsKKyNlbmRpZgorICAgICAgICAgICAgICAg
IGRlcHRoID0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlci5z
ZXREZXB0aChkZXB0aCk7CisgICAgICAgIHN0cmlkZSA9IGJ1ZmZlci5zdHJpZGVGb3JXaWR0aChk
ZXB0aCwgc2NhbGVkU2l6ZSgpLndpZHRoKCkpOworICAgICAgICBpZiAoIWJ1ZmZlci5zZXRTaXpl
KHNjYWxlZFNpemUoKS53aWR0aCgpLCBzY2FsZWRTaXplKCkuaGVpZ2h0KCksIHN0cmlkZSkpCiAg
ICAgICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CiAgICAgICAgIGJ1ZmZlci5zZXRTdGF0dXMo
SW1hZ2VGcmFtZTo6RnJhbWVQYXJ0aWFsKTsKICAgICAgICAgLy8gVGhlIGJ1ZmZlciBpcyB0cmFu
c3BhcmVudCBvdXRzaWRlIHRoZSBkZWNvZGVkIGFyZWEgd2hpbGUgdGhlIGltYWdlIGlzCkBAIC03
MTksMTIgKzczOCwxMCBAQCBib29sIEpQRUdJbWFnZURlY29kZXI6Om91dHB1dFNjYW5saW5lcygp
CiAgICAgICAgIGJ1ZmZlci5zZXRPcmlnaW5hbEZyYW1lUmVjdChJbnRSZWN0KEludFBvaW50KCks
IHNpemUoKSkpOwogICAgIH0KIAotICAgIGpwZWdfZGVjb21wcmVzc19zdHJ1Y3QqIGluZm8gPSBt
X3JlYWRlci0+aW5mbygpOwotCiAjaWYgZGVmaW5lZChUVVJCT19KUEVHX1JHQl9TV0laWkxFKQog
ICAgIGlmICghbV9zY2FsZWQgJiYgdHVyYm9Td2l6emxlZChpbmZvLT5vdXRfY29sb3Jfc3BhY2Up
KSB7CiAgICAgICAgIHdoaWxlIChpbmZvLT5vdXRwdXRfc2NhbmxpbmUgPCBpbmZvLT5vdXRwdXRf
aGVpZ2h0KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiByb3cgPSByZWludGVycHJldF9j
YXN0PHVuc2lnbmVkIGNoYXIqPihidWZmZXIuZ2V0QWRkcigwLCBpbmZvLT5vdXRwdXRfc2Nhbmxp
bmUpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHJvdyA9IGJ1ZmZlci5nZXRBZGRyKDAs
IGluZm8tPm91dHB1dF9zY2FubGluZSk7CiAgICAgICAgICAgICBpZiAoanBlZ19yZWFkX3NjYW5s
aW5lcyhpbmZvLCAmcm93LCAxKSAhPSAxKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICNpZiBVU0UoUUNNU0xJQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNmQ0NDE1
NTk0ZGEyZWYxNzA3YTZmNWM2OWRiZWViNDA3ODhkZTkxOC4uOTkzZTY1MTFlYzhkMTliOGU5YmM2
MWQ2Mzc2YjQwNjgwODYxOThkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIs
NiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5jLgogICogQ29weXJpZ2h0
IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNSBDb2xsYWJvcmEgTHRkLgogICoKICAqIFBvcnRpb25zIGFyZSBD
b3B5cmlnaHQgKEMpIDIwMDEgbW96aWxsYS5vcmcKICAqCkBAIC01MDMsMTMgKzUwNCwxOSBAQCB2
b2lkIFBOR0ltYWdlRGVjb2Rlcjo6aGVhZGVyQXZhaWxhYmxlKCkKIAogc3RhdGljIGlubGluZSB2
b2lkIHNldFBpeGVsUkdCKEltYWdlRnJhbWU6OlBpeGVsRGF0YSogZGVzdCwgcG5nX2J5dGVwIHBp
eGVsKQogewotICAgICpkZXN0ID0gMHhGRjAwMDAwMFUgfCBwaXhlbFswXSA8PCAxNiB8IHBpeGVs
WzFdIDw8IDggfCBwaXhlbFsyXTsKKyAgICBkZXN0WzBdID0gcGl4ZWxbMl07CisgICAgZGVzdFsx
XSA9IHBpeGVsWzFdOworICAgIGRlc3RbMl0gPSBwaXhlbFswXTsKKyAgICBkZXN0WzNdID0gMHhG
RjsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHNldFBpeGVsUkdCQShJbWFnZUZyYW1lOjpQaXhl
bERhdGEqIGRlc3QsIHBuZ19ieXRlcCBwaXhlbCwgdW5zaWduZWQgY2hhciYgbm9uVHJpdmlhbEFs
cGhhTWFzaykKIHsKICAgICB1bnNpZ25lZCBjaGFyIGEgPSBwaXhlbFszXTsKLSAgICAqZGVzdCA9
IGEgPDwgMjQgfCBwaXhlbFswXSA8PCAxNiB8IHBpeGVsWzFdIDw8IDggfCBwaXhlbFsyXTsKKyAg
ICBkZXN0WzBdID0gcGl4ZWxbMl07CisgICAgZGVzdFsxXSA9IHBpeGVsWzFdOworICAgIGRlc3Rb
Ml0gPSBwaXhlbFswXTsKKyAgICBkZXN0WzNdID0gYTsKICAgICBub25Ucml2aWFsQWxwaGFNYXNr
IHw9ICgyNTUgLSBhKTsKIH0KIApAQCAtNTIwLDcgKzUyNywxMCBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgc2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQShJbWFnZUZyYW1lOjpQaXhlbERhdGEqIGRlc3Qs
IHBuZ19ieQogICAgIHVuc2lnbmVkIGNoYXIgZyA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsxXSAq
IGEpOwogICAgIHVuc2lnbmVkIGNoYXIgYiA9IGZhc3REaXZpZGVCeTI1NShwaXhlbFsyXSAqIGEp
OwogCi0gICAgKmRlc3QgPSBhIDw8IDI0IHwgciA8PCAxNiB8IGcgPDwgOCB8IGI7CisgICAgZGVz
dFswXSA9IGI7CisgICAgZGVzdFsxXSA9IGc7CisgICAgZGVzdFsyXSA9IHI7CisgICAgZGVzdFsz
XSA9IGE7CiAgICAgbm9uVHJpdmlhbEFscGhhTWFzayB8PSAoMjU1IC0gYSk7CiB9CiAKQEAgLTY0
Nyw4ICs2NTcsOSBAQCB2b2lkIFBOR0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVk
IGNoYXIqIHJvd0J1ZmZlciwgdW5zaWduZWQgcm93SW5kZXgsCiAgICAgICAgIGZvciAoaW50IHgg
PSAwOyB4IDwgd2lkdGg7ICsreCkgewogICAgICAgICAgICAgcG5nX2J5dGVwIHBpeGVsID0gcm93
ICsgbV9zY2FsZWRDb2x1bW5zW3hdICogY29sb3JDaGFubmVsczsKICAgICAgICAgICAgIHVuc2ln
bmVkIGFscGhhID0gaGFzQWxwaGEgPyBwaXhlbFszXSA6IDI1NTsKLSAgICAgICAgICAgIGJ1ZmZl
ci5zZXRSR0JBKGFkZHJlc3MrKywgcGl4ZWxbMF0sIHBpeGVsWzFdLCBwaXhlbFsyXSwgYWxwaGEp
OworICAgICAgICAgICAgYnVmZmVyLnNldFJHQkEoYWRkcmVzcywgcGl4ZWxbMF0sIHBpeGVsWzFd
LCBwaXhlbFsyXSwgYWxwaGEpOwogICAgICAgICAgICAgbm9uVHJpdmlhbEFscGhhTWFzayB8PSAo
MjU1IC0gYWxwaGEpOworICAgICAgICAgICAgYWRkcmVzcyArPSBidWZmZXIuZGVwdGgoKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZQogI2VuZGlmCkBAIC02NTYsMTUgKzY2NywyMSBAQCB2b2lkIFBO
R0ltYWdlRGVjb2Rlcjo6cm93QXZhaWxhYmxlKHVuc2lnbmVkIGNoYXIqIHJvd0J1ZmZlciwgdW5z
aWduZWQgcm93SW5kZXgsCiAgICAgICAgIHBuZ19ieXRlcCBwaXhlbCA9IHJvdzsKICAgICAgICAg
aWYgKGhhc0FscGhhKSB7CiAgICAgICAgICAgICBpZiAoYnVmZmVyLnByZW11bHRpcGx5QWxwaGEo
KSkgewotICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7ICsreCwgcGl4
ZWwgKz0gNCkKLSAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQShh
ZGRyZXNzKyssIHBpeGVsLCBub25Ucml2aWFsQWxwaGFNYXNrKTsKKyAgICAgICAgICAgICAgICBm
b3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgc2V0UGl4ZWxQcmVtdWx0aXBsaWVkUkdCQShhZGRyZXNzLCBwaXhlbCwgbm9uVHJp
dmlhbEFscGhhTWFzayk7CisgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgKz0gYnVmZmVyLmRl
cHRoKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsIHBpeGVsICs9IDQpCi0gICAg
ICAgICAgICAgICAgICAgIHNldFBpeGVsUkdCQShhZGRyZXNzKyssIHBpeGVsLCBub25Ucml2aWFs
QWxwaGFNYXNrKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyAr
K3gsIHBpeGVsICs9IDQpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0UGl4ZWxSR0JBKGFkZHJl
c3MsIHBpeGVsLCBub25Ucml2aWFsQWxwaGFNYXNrKTsKKyAgICAgICAgICAgICAgICAgICAgYWRk
cmVzcyArPSBidWZmZXIuZGVwdGgoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRo
OyArK3gsIHBpeGVsICs9IDMpCi0gICAgICAgICAgICAgICAgc2V0UGl4ZWxSR0IoYWRkcmVzcysr
LCBwaXhlbCk7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHdpZHRoOyArK3gsIHBp
eGVsICs9IDMpIHsKKyAgICAgICAgICAgICAgICBzZXRQaXhlbFJHQihhZGRyZXNzLCBwaXhlbCk7
CisgICAgICAgICAgICAgICAgYWRkcmVzcyArPSBidWZmZXIuZGVwdGgoKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcG9zaXgvRGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9wb3NpeC9EaXNrSW1hZ2VDYWNoZVBPU0lYLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YWFlNDkxZWY2MDg4
MGJkMzllYzI4ODczNWI2MGNkNzBiMjY5NmMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcG9zaXgvRGlza0ltYWdlQ2FjaGVQT1NJWC5jcHAKQEAgLTAsMCArMSw0
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIENvbGxhYm9yYSBMdGQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKSAmJiBP
UyhVTklYKQorI2luY2x1ZGUgIkRpc2tJbWFnZUNhY2hlLmgiCisKKyNpbmNsdWRlICJMb2dnaW5n
LmgiCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5
cy9tbWFuLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K
KyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGlza0ltYWdlQ2FjaGUmIGRpc2tJbWFnZUNh
Y2hlKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGlza0ltYWdlQ2FjaGU+IGNhY2hl
OworICAgIHJldHVybiBjYWNoZTsKK30KKworRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpFbnRyeShT
aGFyZWRCdWZmZXIqIGJ1ZmZlciwgRGlza0ltYWdlQ2FjaGVJZCBpZCkKKyAgICA6IG1fYnVmZmVy
KGJ1ZmZlcikKKyAgICAsIG1faWQoaWQpCisgICAgLCBtX3NpemUoMCkKKyAgICAsIG1fbWFwcGlu
ZyhudWxscHRyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1f
YnVmZmVyKTsKKyAgICBtX2J1ZmZlci0+cmVmKCk7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAi
TmV3IEJVRkZFUiBFbnRyeTogaWQ9JXUiLCBtX2lkKTsKK30KKworRGlza0ltYWdlQ2FjaGU6OkVu
dHJ5OjpFbnRyeSh1bnNpZ25lZCBzaXplLCBEaXNrSW1hZ2VDYWNoZUlkIGlkKQorICAgIDogbV9i
dWZmZXIobnVsbHB0cikKKyAgICAsIG1faWQoaWQpCisgICAgLCBtX3NpemUoc2l6ZSkKKyAgICAs
IG1fbWFwcGluZyhudWxscHRyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKCFtX2J1ZmZlcik7CisgICAgQVNTRVJUKG1fc2l6ZSk7CisgICAgTE9HKERpc2tJbWFn
ZUNhY2hlLCAiTmV3IChzaXplOiAlLjJmSykgRW50cnk6IGlkPSV1IiwgbV9zaXplIC8gMTAyNC4s
IG1faWQpOworfQorCitEaXNrSW1hZ2VDYWNoZTo6RW50cnk6On5FbnRyeSgpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIW1fYnVmZmVyKTsKKyAgICBBU1NFUlQo
IW1fbWFwcGluZyk7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGVzdHJveWluZyBFbnRyeTog
aWQ9JXUiLCBtX2lkKTsKK30KKworYm9vbCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6Om1hcEludGVy
bmFsKCkKK3sKKyAgICBBU1NFUlQobV9idWZmZXIgfHwgbV9zaXplKTsKKyAgICBBU1NFUlQoIW1f
bWFwcGluZyk7CisKKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIG1fc2l6ZSA9IG1fYnVmZmVy
LT5zaXplKCk7CisKKyAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJNYXBwaW5nIEVudHJ5OiBpZD0l
dSIsIG1faWQpOworCisgICAgLy8gT3BlbiB0aGUgZmlsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGlu
Zy4KKyAgICBpbnQgZmQgPSBvcGVuKG1fcGF0aC51dGY4KCkuZGF0YSgpLCBPX0NSRUFUIHwgT19S
RFdSIHwgT19UUlVOQywgc3RhdGljX2Nhc3Q8bW9kZV90PigwNjAwKSk7CisgICAgaWYgKGZkID09
IC0xKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9idWZmZXIpIHsKKyAgICAg
ICAgLy8gV3JpdGUgdGhlIGRhdGEgdG8gdGhlIGZpbGUuCisgICAgICAgIGlmICh3cml0ZVRvRmls
ZUludGVybmFsKGZkKSA9PSAtMSkgeworICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAg
ICAgZGVsZXRlRmlsZShtX3BhdGgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gU2VlayBiYWNrIHRvIHRoZSBiZWdpbm5pbmcuCisgICAgICAgIGlm
IChsc2VlayhmZCwgMCwgU0VFS19TRVQpID09IC0xKSB7CisgICAgICAgICAgICBjbG9zZShmZCk7
CisgICAgICAgICAgICBkZWxldGVGaWxlKG1fcGF0aCk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAocG9zaXhfZmFsbG9jYXRl
KGZkLCAwLCBtX3NpemUpKSB7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICBk
ZWxldGVGaWxlKG1fcGF0aCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBUaGlzIG11c3Qgbm90IGNvbmZsaWN0IHdpdGggdGhlIG9wZW4oKSBh
Ym92ZS4gRm9yIGdlbmVyaWMgZmlsZS1iYWNrZWQgbWVtb3J5IHdlIGFsbG93CisgICAgLy8gd3Jp
dGluZywgc2luY2UgaXQncyBhY3R1YWxseSBzdXBwb3NlZCB0byBiZSBhIGJsYW5rIHNsYXRlIHRo
YXQgd2lsbCBiZSBmaWxsZWQgYW5kIGVkaXRlZAorICAgIC8vIGJ5IHRoZSBjYWxsZXIuCisgICAg
aW50IG1tYXBGbGFncyA9IG1fYnVmZmVyID8gUFJPVF9SRUFEIDogUFJPVF9SRUFEIHwgUFJPVF9X
UklURTsKKyAgICBtX21hcHBpbmcgPSBtbWFwKG51bGxwdHIsIG1fc2l6ZSwgbW1hcEZsYWdzLCBN
QVBfU0hBUkVELCBmZCwgMCk7CisgICAgY2xvc2UoZmQpOworICAgIGlmIChtX21hcHBpbmcgPT0g
TUFQX0ZBSUxFRCkgeworICAgICAgICBMT0coRGlza0ltYWdlQ2FjaGUsICJEaXNrSW1hZ2VDYWNo
ZTogbWFwcGluZyBmYWlsZWQgKCVkKTogKCVzKSIsIGVycm5vLCBzdHJlcnJvcihlcnJubykpOwor
ICAgICAgICBtX21hcHBpbmcgPSBudWxscHRyOworICAgICAgICBkZWxldGVGaWxlKG1fcGF0aCk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmRpZEZhaWxNZW1vcnlNYXAoKQoreworICAgIG1f
YnVmZmVyLT5mYWlsZWRNZW1vcnlNYXAoKTsKKyAgICBtX2J1ZmZlci0+ZGVyZWYoKTsKKyAgICBt
X2J1ZmZlciA9IDA7CisgICAgdGhpcy0+ZGVyZWYoKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNo
ZTo6RW50cnk6OmRpZE1hcE1lbW9yeSgpCit7CisgICAgbV9idWZmZXItPm1hcmtBc01lbW9yeU1h
cHBlZCgpOworICAgIG1fYnVmZmVyLT5kZXJlZigpOworICAgIG1fYnVmZmVyID0gMDsKKyAgICB0
aGlzLT5kZXJlZigpOworfQorCitib29sIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6c3luY2hyb25v
dXNseU1hcCgpCit7CisgICAgQVNTRVJUKCFtX3BhdGguaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQo
IW1fYnVmZmVyKTsKKyAgICBBU1NFUlQobV9zaXplKTsKKyAgICBBU1NFUlQoIW1fbWFwcGluZyk7
CisKKyAgICByZXR1cm4gbWFwSW50ZXJuYWwoKTsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6
RW50cnk6Om1hcCgpCit7CisgICAgQVNTRVJUKCFtX3BhdGguaXNFbXB0eSgpKTsKKyAgICBBU1NF
UlQobV9idWZmZXIpOworICAgIEFTU0VSVCghbV9tYXBwaW5nKTsKKworICAgIGJvb2wgZmlsZU1h
cHBlZCA9IG1hcEludGVybmFsKCk7CisgICAgaWYgKCFmaWxlTWFwcGVkKSB7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoYmluZCgmRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpkaWRGYWlsTWVtb3J5
TWFwLCB0aGlzKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYWxsT25NYWluVGhy
ZWFkKGJpbmQoJkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkTWFwTWVtb3J5LCB0aGlzKSk7Cit9
CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojp1bm1hcCgpCit7CisgICAgaWYgKCFtX21h
cHBpbmcpIHsKKyAgICAgICAgQVNTRVJUKCFtX3NpemUpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiVW5NYXBwaW5nIEVudHJ5OiBpZD0ldSIsIG1f
aWQpOworCisgICAgaWYgKG11bm1hcChtX21hcHBpbmcsIG1fc2l6ZSkgPT0gLTEpCisgICAgICAg
IExPR19FUlJPUigiRGlza0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBtdW5tYXAgYSBtZW1vcnkgbWFw
cGVkIGZpbGUgd2l0aCBpZCAoJWQpIiwgbV9pZCk7CisKKyAgICBtX21hcHBpbmcgPSBudWxscHRy
OworICAgIG1fc2l6ZSA9IDA7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpyZW1v
dmVGaWxlKCkKK3sKKyAgICBBU1NFUlQoIW1fbWFwcGluZyk7CisgICAgQVNTRVJUKCFtX3NpemUp
OworCisgICAgaWYgKCFkZWxldGVGaWxlKG1fcGF0aCkpCisgICAgICAgIExPR19FUlJPUigiRGlz
a0ltYWdlQ2FjaGU6IENvdWxkIG5vdCBkZWxldGUgbWVtb3J5IG1hcHBlZCBmaWxlICglcykiLCBt
X3BhdGgudXRmOCgpLmRhdGEoKSk7Cit9CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5Ojpj
bGVhckRhdGFXaXRob3V0TWFwcGluZygpCit7CisgICAgQVNTRVJUKCFtX21hcHBpbmcpOworICAg
IEFTU0VSVChtX2J1ZmZlcik7CisgICAgbV9idWZmZXItPmRlcmVmKCk7CisgICAgbV9idWZmZXIg
PSAwOworICAgIExPRyhEaXNrSW1hZ2VDYWNoZSwgIkNsZWFyIGRhdGEgd2l0aG91dCBtYXBwaW5n
IGZvciBFbnRyeTogaWQ9JXUiLCBtX2lkKTsKK30KKworaW50IERpc2tJbWFnZUNhY2hlOjpFbnRy
eTo6d3JpdGVUb0ZpbGVJbnRlcm5hbChpbnQgZmQpCit7CisgICAgQVNTRVJUKG1fYnVmZmVyKTsK
KyAgICBpbnQgdG90YWxCeXRlc1dyaXR0ZW4gPSAwOworCisgICAgY29uc3QgY2hhciogc2VnbWVu
dCA9IG51bGxwdHI7CisgICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOworICAgIHdoaWxlICh1bnNp
Z25lZCBsZW5ndGggPSBtX2J1ZmZlci0+Z2V0U29tZURhdGEoc2VnbWVudCwgcG9zaXRpb24pKSB7
CisgICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZShmZCwgc3RhdGljX2Nhc3Q8Y29uc3Qg
dm9pZCo+KHNlZ21lbnQpLCBsZW5ndGgpOworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IC0x
KQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIHRvdGFsQnl0ZXNXcml0dGVuICs9
IGJ5dGVzV3JpdHRlbjsKKyAgICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOworICAgIH0KKworICAg
IHJldHVybiB0b3RhbEJ5dGVzV3JpdHRlbjsKK30KKwordm9pZCBEaXNrSW1hZ2VDYWNoZTo6RW50
cnk6OnNldFRlbXBvcmFyeUZpbGVQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBtX3Bh
dGggPSBwYXRoOworfQorCit2b2lkIERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6Y2FuY2VsTWFwKCkK
K3sKKyAgICBjbGVhckRhdGFXaXRob3V0TWFwcGluZygpOworICAgIHRoaXMtPmRlcmVmKCk7Cit9
CisKK3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjptYXBUaHJlYWRTdGFydCh2b2lkKiBlbnRy
eVB0cikKK3sKKyAgICBEaXNrSW1hZ2VDYWNoZTo6RW50cnkqIGVudHJ5ID0gc3RhdGljX2Nhc3Q8
RGlza0ltYWdlQ2FjaGU6OkVudHJ5Kj4oZW50cnlQdHIpOworICAgIFRocmVhZElkZW50aWZpZXIg
dGhyZWFkSUQgPSBjdXJyZW50VGhyZWFkKCk7CisKKyAgICBpZiAoZGlza0ltYWdlQ2FjaGUoKS5p
c0Z1bGwoKSkgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJkRpc2tJbWFnZUNhY2hl
OjpFbnRyeTo6Y2FuY2VsTWFwLCBlbnRyeSkpOworICAgICAgICBkZXRhY2hUaHJlYWQodGhyZWFk
SUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZW50cnktPm1hcCgpOworCisgICAg
Ly8gVXBkYXRlIHRoZSBzaXplIG9uIGEgc3VjY2Vzc2Z1bCBtYXBwaW5nLgorICAgIGlmIChlbnRy
eS0+aXNNYXBwZWQoKSkKKyAgICAgICAgZGlza0ltYWdlQ2FjaGUoKS51cGRhdGVTaXplKGVudHJ5
LT5zaXplKCkpOworCisgICAgZGV0YWNoVGhyZWFkKHRocmVhZElEKTsKK30KKwordm9pZCBEaXNr
SW1hZ2VDYWNoZTo6RW50cnk6OmRpZFJlbW92ZUZpbGUoKQoreworICAgIGRlcmVmKCk7Cit9CisK
K3ZvaWQgRGlza0ltYWdlQ2FjaGU6OkVudHJ5OjpyZW1vdmVGaWxlVGhyZWFkU3RhcnQodm9pZCog
ZW50cnlQdHIpCit7CisgICAgRGlza0ltYWdlQ2FjaGU6OkVudHJ5KiBlbnRyeSA9IHN0YXRpY19j
YXN0PERpc2tJbWFnZUNhY2hlOjpFbnRyeSo+KGVudHJ5UHRyKTsKKworICAgIGVudHJ5LT51bm1h
cCgpOworICAgIGVudHJ5LT5yZW1vdmVGaWxlKCk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKGJp
bmQoJkRpc2tJbWFnZUNhY2hlOjpFbnRyeTo6ZGlkUmVtb3ZlRmlsZSwgZW50cnkpKTsKKyAgICBk
ZXRhY2hUaHJlYWQoY3VycmVudFRocmVhZCgpKTsKK30KKworRGlza0ltYWdlQ2FjaGU6OkRpc2tJ
bWFnZUNhY2hlKCkKKyAgICA6IG1fZW5hYmxlZChmYWxzZSkKKyAgICAsIG1fc2l6ZSgwKQorICAg
ICwgbV9tYXhpbXVtQ2FjaGVTaXplKDEwMCAqIDEwMjQgKiAxMDI0KQorICAgICwgbV9taW5pbXVt
SW1hZ2VTaXplKDEwMCAqIDEwMjQpCisgICAgLCBtX25leHRBdmFpbGFibGVJZChEaXNrSW1hZ2VD
YWNoZTo6aW52YWxpZERpc2tDYWNoZUlkICsgMSkKK3sKK30KKworU3RyaW5nIERpc2tJbWFnZUNh
Y2hlOjpwcmVwYXJlRmlsZSgpCit7CisgICAgaWYgKCFpc0VuYWJsZWQoKSB8fCAhY3JlYXRlRGly
ZWN0b3J5SWZOZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgLy8gV2Ug
YXJlIGFscmVhZHkgZnVsbCwgY2Fubm90IGFkZCBhbnl0aGluZyB1bnRpbCBzb21ldGhpbmcgaXMg
cmVtb3ZlZC4KKyAgICBpZiAoaXNGdWxsKCkpIHsKKyAgICAgICAgTE9HKERpc2tJbWFnZUNhY2hl
LCAiRGlza0ltYWdlQ2FjaGU6IGNvdWxkIG5vdCBwcm9jZXNzIGFuIGl0ZW0gYmVjYXVzZSB0aGUg
Y2FjaGUgd2FzIGZ1bGwgYXQgKCVkKS4gVGhlIFwibWF4XCIgYmVpbmcgKCVkKSIsIG1fc2l6ZSwg
bV9tYXhpbXVtQ2FjaGVTaXplKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKwor
ICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIHBhdGguCisgICAgU3RyaW5nIHBhdGggPSB0
ZW1wb3JhcnlGaWxlKCk7CisgICAgTE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6
IGNyZWF0aW5nIGVudHJ5IGF0ICglcykiLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmIChw
YXRoLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4gcGF0
aDsKK30KKworRGlza0ltYWdlQ2FjaGVJZCBEaXNrSW1hZ2VDYWNoZTo6Y3JlYXRlRmlsZUJhY2tl
ZE1hcHBpbmcodW5zaWduZWQgc2l6ZSkKK3sKKyAgICBBU1NFUlQoc2l6ZSk7CisgICAgaWYgKCFz
aXplKQorICAgICAgICByZXR1cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsK
KworICAgIFN0cmluZyBwYXRoID0gcHJlcGFyZUZpbGUoKTsKKyAgICBpZiAocGF0aC5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hlSWQ7CisK
KyAgICBEaXNrSW1hZ2VDYWNoZUlkIGlkID0gbmV4dEF2YWlsYWJsZUlkKCk7CisgICAgUmVmUHRy
PERpc2tJbWFnZUNhY2hlOjpFbnRyeT4gZW50cnkgPSBEaXNrSW1hZ2VDYWNoZTo6RW50cnk6OmNy
ZWF0ZShzaXplLCBpZCk7CisgICAgbV90YWJsZS5hZGQoaWQsIGVudHJ5KTsKKworICAgIGVudHJ5
LT5zZXRUZW1wb3JhcnlGaWxlUGF0aChwYXRoKTsKKworICAgIGlmICghZW50cnktPnN5bmNocm9u
b3VzbHlNYXAoKSkKKyAgICAgICAgcmV0dXJuIERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0Nh
Y2hlSWQ7CisKKyAgICAvLyBVcGRhdGUgdGhlIHNpemUgb24gYSBzdWNjZXNzZnVsIG1hcHBpbmcu
CisgICAgaWYgKGVudHJ5LT5pc01hcHBlZCgpKQorICAgICAgICB1cGRhdGVTaXplKGVudHJ5LT5z
aXplKCkpOworCisgICAgcmV0dXJuIGlkOworfQorCitEaXNrSW1hZ2VDYWNoZUlkIERpc2tJbWFn
ZUNhY2hlOjp3cml0ZUl0ZW0oUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGl0ZW0pCit7CisgICAg
U3RyaW5nIHBhdGggPSBwcmVwYXJlRmlsZSgpOworICAgIGlmIChwYXRoLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gRGlza0ltYWdlQ2FjaGU6OmludmFsaWREaXNrQ2FjaGVJZDsKKworICAgIC8v
IENyZWF0ZSBhbiBlbnRyeS4KKyAgICBEaXNrSW1hZ2VDYWNoZUlkIGlkID0gbmV4dEF2YWlsYWJs
ZUlkKCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaXRlbTsKKyAgICBSZWZQ
dHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBlbnRyeSA9IERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6
Y3JlYXRlKGJ1ZmZlci5nZXQoKSwgaWQpOworICAgIG1fdGFibGUuYWRkKGlkLCBlbnRyeSk7CisK
KyAgICBlbnRyeS0+c2V0VGVtcG9yYXJ5RmlsZVBhdGgocGF0aCk7CisKKyAgICAvLyBUaGUgbGlm
ZXRpbWUgb2YgdGhlIEVudHJ5IGlzIGhhbmRsZWQgb24gdGhlIG1haW4gdGhyZWFkLiBCZWZvcmUg
d2Ugc3RhcnQgYSB0aHJlYWQgd2UgbmVlZCB0bworICAgIC8vIHJlZiBzbyB0aGF0IHdlIGFyZSBz
dXJlIHRoZSBvYmplY3Qgc3RpbGwgZXhpc3RzLiBUaGlzIGNhbGwgaXMgYmFsYW5jZWQgaW4gdGhl
IGNhbGxiYWNrcworICAgIC8vIGNhbGxlZCBmcm9tIEVudHJ5OjptYXAuCisgICAgZW50cnktPnJl
ZigpOworCisgICAgLy8gTWFwIHRvIGRpc2sgYXN5bmNocm9ub3VzbHkuCisgICAgY3JlYXRlVGhy
ZWFkKERpc2tJbWFnZUNhY2hlOjpFbnRyeTo6bWFwVGhyZWFkU3RhcnQsIGVudHJ5LmdldCgpLCAi
V2ViQ29yZTogRGlza0ltYWdlQ2FjaGU6Om1hcCIpOworCisgICAgcmV0dXJuIGlkOworfQorCit2
b2lkIERpc2tJbWFnZUNhY2hlOjp1cGRhdGVTaXplKHVuc2lnbmVkIGRlbHRhKQoreworICAgIE11
dGV4TG9ja2VyIGxvY2sobV9tdXRleCk7CisgICAgbV9zaXplICs9IGRlbHRhOworfQorCit2b2lk
IERpc2tJbWFnZUNhY2hlOjpyZW1vdmVJdGVtKERpc2tJbWFnZUNhY2hlSWQgaWQpCit7CisgICAg
TE9HKERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IHJlbW92ZUl0ZW0gKCVkKSIsIGlk
KTsKKyAgICBSZWZQdHI8RGlza0ltYWdlQ2FjaGU6OkVudHJ5PiBlbnRyeSA9IG1fdGFibGUuZ2V0
KGlkKTsKKyAgICBtX3RhYmxlLnJlbW92ZShpZCk7CisgICAgaWYgKCFlbnRyeS0+aXNNYXBwZWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlU2l6ZSgtKGVudHJ5LT5zaXplKCkpKTsK
KworICAgIGVudHJ5LT5yZWYoKTsKKworICAgIGNyZWF0ZVRocmVhZChEaXNrSW1hZ2VDYWNoZTo6
RW50cnk6OnJlbW92ZUZpbGVUaHJlYWRTdGFydCwgZW50cnkuZ2V0KCksICJXZWJDb3JlOiBEaXNr
SW1hZ2VDYWNoZTo6cmVtb3ZlSXRlbSIpOworfQorCit2b2lkKiBEaXNrSW1hZ2VDYWNoZTo6ZGF0
YUZvckl0ZW0oRGlza0ltYWdlQ2FjaGVJZCBpZCkKK3sKKyAgICBBU1NFUlQoaWQpOworCisgICAg
UmVmUHRyPERpc2tJbWFnZUNhY2hlOjpFbnRyeT4gZW50cnkgPSBtX3RhYmxlLmdldChpZCk7Cisg
ICAgQVNTRVJUKGVudHJ5LT5pc01hcHBlZCgpKTsKKyAgICByZXR1cm4gZW50cnktPmRhdGEoKTsK
K30KKworYm9vbCBEaXNrSW1hZ2VDYWNoZTo6Y3JlYXRlRGlyZWN0b3J5SWZOZWVkZWQoKQorewor
ICAgIGlmICghbV9jYWNoZURpcmVjdG9yeS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBtX2NhY2hlRGlyZWN0b3J5ID0gdGVtcG9yYXJ5RGlyZWN0b3J5KCk7CisgICAgTE9H
KERpc2tJbWFnZUNhY2hlLCAiRGlza0ltYWdlQ2FjaGU6IENyZWF0ZWQgdGVtcG9yYXJ5IGRpcmVj
dG9yeSAoJXMpIiwgbV9jYWNoZURpcmVjdG9yeS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAobV9j
YWNoZURpcmVjdG9yeS5pc051bGwoKSkgeworICAgICAgICBMT0dfRVJST1IoIkRpc2tJbWFnZUNh
Y2hlOiBjb3VsZCBub3QgY3JlYXRlIGNhY2hlIGRpcmVjdG9yeSIpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlk
Q3JlYXRlRGlza0ltYWdlQ2FjaGVEaXJlY3RvcnkobV9jYWNoZURpcmVjdG9yeSk7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworRGlza0ltYWdlQ2FjaGVJZCBEaXNrSW1hZ2VDYWNoZTo6bmV4dEF2
YWlsYWJsZUlkKCkKK3sKKyAgICByZXR1cm4gbV9uZXh0QXZhaWxhYmxlSWQrKzsKK30KKworI2lm
IFBMQVRGT1JNKEdUSykKKy8vIEZvciBHVEsrIHdlIHVzZSBhIHdlbGwta25vd24gbmFtZSBpbnNp
ZGUgdGhlIHVzZXIncyBYREcgY2FjaGUgZGlyZWN0b3J5LCBzbyB0aGF0IHdlIGNhbgorLy8gYmV0
dGVyIG1hbmFnZSBpdHMgY2xlYW51cC4KK1N0cmluZyBEaXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5
RGlyZWN0b3J5KCkKK3sKKyAgICBTdHJpbmcgcGF0aCA9IGNyZWF0ZVVzZXJDYWNoZURpcmVjdG9y
eSgiZGlzay1pbWFnZS1jYWNoZSIpOworICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKKyAgICAgICAg
TE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTogQ291bGQgbm90IGNyZWF0ZSBjYWNoZSBkaXJlY3Rv
cnkuIik7CisKKyAgICAvLyBDbGVhbnVwIHRoZSBkaXJlY3RvcnkuCisgICAgVmVjdG9yPFN0cmlu
Zz4gaXRlbXMgPSBsaXN0RGlyZWN0b3J5KHBhdGgsICJ0bXAqIik7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7IGkrKykKKyAgICAgICAgZGVsZXRlRmlsZShpdGVtc1tp
XSk7CisKKyAgICByZXR1cm4gcGF0aDsKK30KKyNlbHNlCitTdHJpbmcgRGlza0ltYWdlQ2FjaGU6
OnRlbXBvcmFyeURpcmVjdG9yeSgpCit7CisgICAgU3RyaW5nIHRlbXBEaXNrQ2FjaGVEaXJlY3Rv
cnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoIkRpc2tJbWFnZUNhY2hlIik7CisgICAgaWYg
KHRlbXBEaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBMT0dfRVJST1IoIkRp
c2tJbWFnZUNhY2hlOiBDb3VsZCBub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4iKTsK
KworICAgIHJldHVybiB0ZW1wRGlza0NhY2hlRGlyZWN0b3J5OworfQorI2VuZGlmCisKK1N0cmlu
ZyBEaXNrSW1hZ2VDYWNoZTo6dGVtcG9yYXJ5RmlsZSgpCit7CisgICAgU3RyaW5nIHRlbXBGaWxl
ID0gY3JlYXRlVGVtcG9yYXJ5RmlsZShtX2NhY2hlRGlyZWN0b3J5LCAidG1wIik7CisgICAgaWYg
KHRlbXBGaWxlLmlzRW1wdHkoKSkKKyAgICAgICAgTE9HX0VSUk9SKCJEaXNrSW1hZ2VDYWNoZTog
Q291bGQgbm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLiIpOworCisgICAgcmV0dXJuIHRlbXBG
aWxlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRElT
S19JTUFHRV9DQUNIRSkgJiYgT1MoVU5JWCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCmluZGV4IGZlMjc2YjBmZmQ0NjYwMGQwNGQzMTI3
MmIxMTVmZmQyOTE0ZjYyOGQuLmI3ZTdmZTNkOTNhZTJiMGRlNTM4ODg2OTU0OWM5MjRjZTJmYmU5
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1Q
T1NJWC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBP
U0lYLmNwcApAQCAtMzIzLDYgKzMyMywyMyBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiB9CiAKICNpZiAhT1Mo
REFSV0lOKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEdUSykKK1N0cmluZyBjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCit7CisgICAgY2hhciBidWZm
ZXJbUEFUSF9NQVhdOworICAgIGNvbnN0IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElSIik7
CisKKyAgICBpZiAoIXRtcERpcikKKyAgICAgICAgdG1wRGlyID0gIi90bXAiOworCisgICAgaWYg
KHNucHJpbnRmKGJ1ZmZlciwgUEFUSF9NQVgsICIlcy8lc1hYWFhYWCIsIHRtcERpciwgcHJlZml4
LnV0ZjgoKS5kYXRhKCkpID49IFBBVEhfTUFYKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisK
KyAgICBpZiAobWtkdGVtcChidWZmZXIpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAg
ICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIpOworfQorCiBTdHJpbmcgb3BlblRlbXBv
cmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
KQogewogICAgIGNoYXIgYnVmZmVyW1BBVEhfTUFYXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zb3VwL1NoYXJlZEJ1ZmZlclNvdXAuY3BwCmluZGV4IGNiZGIzMzc2MjNjMjkwNmY5
M2YyYjk3MmEzMzBjZTU5NjBiOTljYTMuLmJjZjZmZjFjYTZiNjcyMjNhYjgyNjdhN2ZiZDU2NTlk
YTg0OGYyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVk
QnVmZmVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRC
dWZmZXJTb3VwLmNwcApAQCAtMjIsMTIgKzIyLDIyIEBACiAKICNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQorI2luY2x1ZGUgIkRpc2tJbWFn
ZUNhY2hlLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKFNvdXBCdWZmZXIqIHNv
dXBCdWZmZXIpCiAgICAgOiBtX2J1ZmZlcihhZG9wdFJlZihuZXcgRGF0YUJ1ZmZlcikpCisjaWYg
RU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgLCBtX2lzTWVtb3J5TWFwcGVkKGZhbHNlKQor
ICAgICwgbV9kaXNrSW1hZ2VDYWNoZUlkKERpc2tJbWFnZUNhY2hlOjppbnZhbGlkRGlza0NhY2hl
SWQpCisgICAgLCBtX25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrKG51bGxwdHIpCisgICAgLCBt
X25vdGlmeU1lbW9yeU1hcHBlZENhbGxiYWNrRGF0YShudWxscHRyKQorI2VuZGlmCiAgICAgLCBt
X3NvdXBCdWZmZXIoc291cEJ1ZmZlcikKIHsKICAgICBBU1NFUlQoc291cEJ1ZmZlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKaW5kZXggNjI3MGQ4YzFmMDg3MTg3ZGNlYWUyNWVhZDFmNjFlZDNkZTJlM2I4Yi4uMTU4
NWY2MDhmMmIyNWUyNmNlNTg4OGVjNzBmZWZkYzkzZTc1ODMyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
MTA4LDYgKzEwOCw5IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hv
dWxkVXNlRm9udFNtb290aGluZzsKICAgICBlbmNvZGVyIDw8IGZvbnRXaGl0ZWxpc3Q7CiAgICAg
ZW5jb2RlciA8PCBpY29uRGF0YWJhc2VFbmFibGVkOworI2lmIEVOQUJMRShESVNLX0lNQUdFX0NB
Q0hFKQorICAgIGVuY29kZXIgPDwgZGlza0ltYWdlQ2FjaGVFbmFibGVkOworI2VuZGlmCiAgICAg
ZW5jb2RlciA8PCB0ZXJtaW5hdGlvblRpbWVvdXQ7CiAgICAgZW5jb2RlciA8PCBsYW5ndWFnZXM7
CiAgICAgZW5jb2RlciA8PCB0ZXh0Q2hlY2tlclN0YXRlOwpAQCAtMjQxLDYgKzI0NCwxMCBAQCBi
b29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgV2ViUHJvYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmRpc2tJbWFnZUNhY2hlRW5hYmxlZCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy50
ZXJtaW5hdGlvblRpbWVvdXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmxhbmd1YWdlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBlN2IxOGI5ZTI3
MmFmODMyMDc5NTI3MzM5OTVmZmI5ZDI4MzQ5NDA4Li43YzJhM2I0ZGVlMmFjY2YwNWFjNmMxNGU0
MDQ0YjhjNGU2ZTdhY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTExOCw2ICsxMTgsMTAgQEAgc3RydWN0IFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgYm9vbCBpY29uRGF0YWJhc2VFbmFi
bGVkOwogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisgICAgYm9vbCBkaXNrSW1hZ2VD
YWNoZUVuYWJsZWQ7CisjZW5kaWYKKwogICAgIGRvdWJsZSB0ZXJtaW5hdGlvblRpbWVvdXQ7CiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCmluZGV4IDE0YThjNzM3NGRjMTA3MjNl
M2E1YTI4OThmZTllMjRhODI3NzcxN2YuLjU0YTJjNGI1ODY1NzhmOGZiNTZiOWJmYzJkM2QzNzdk
MzBiN2QxNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJv
Y2Vzc1Bvb2xHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJv
Y2Vzc1Bvb2xHdGsuY3BwCkBAIC0xMDgsNiArMTA4LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYKICAgICAgICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRp
b24tPmRpc2tDYWNoZURpcmVjdG9yeSgpOwogICAgIH0KIAorI2lmIEVOQUJMRShESVNLX0lNQUdF
X0NBQ0hFKQorICAgIC8vIFRPRE86IHJlYWQgdmFsdWUgZnJvbSBjb25maWcKKyAgICBwYXJhbWV0
ZXJzLmRpc2tJbWFnZUNhY2hlRW5hYmxlZCA9IHRydWU7CisjZW5kaWYKICAgICBwYXJhbWV0ZXJz
Lm1lbW9yeUNhY2hlRGlzYWJsZWQgPSBtX21lbW9yeUNhY2hlRGlzYWJsZWQgfHwgY2FjaGVNb2Rl
bCgpID09IENhY2hlTW9kZWxEb2N1bWVudFZpZXdlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNzFjOTAzYmVmNjIzM2U0NDI5NjE1MTg4MDllNzBj
ODQ4NWExMDYxMi4uYzA2ZWU3OWQ3NTYzNDhlZDgwMzg0NTY2NmY3ODMzNjdiNDZlYWY3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC05Nyw2ICs5NywxMCBA
QAogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgogCisjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCisjaW5jbHVkZSAiRGlza0ltYWdl
Q2FjaGUuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiT2JqQ09i
amVjdEdyYXBoLmgiCiAjZW5kaWYKQEAgLTI5OSw2ICszMDMsMTAgQEAgdm9pZCBXZWJQcm9jZXNz
Ojppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKICAgICBtX2ljb25EYXRhYmFzZVByb3h5LT5zZXRFbmFibGVkKHBhcmFtZXRlcnMu
aWNvbkRhdGFiYXNlRW5hYmxlZCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShESVNLX0lNQUdFX0NB
Q0hFKQorICAgIGRpc2tJbWFnZUNhY2hlKCkuc2V0RW5hYmxlZChwYXJhbWV0ZXJzLmRpc2tJbWFn
ZUNhY2hlRW5hYmxlZCk7CisjZW5kaWYKKwogICAgIGlmICghcGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6OnNpbmdsZXRvbigpLnNldENhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMuYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNt
YWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggNThjNzUzMjhiMTdlZTIw
YzY4ZTAzZjEzOTE5MTcxMmMzZDdmNWY5OC4uYzZmMGY0OWQ3NGMxOTE1MjNjMjY5N2VjYTk3YTEy
M2M1Njc3NjU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysr
IGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTE1Niw2ICsxNTYsNyBAQCBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQg
UFJJVkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DVVNU
T01fU0NIRU1FX0hBTkRMRVIgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfREFUQUJBU0VfUFJPQ0VTUyBQUklWQVRFIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0RBVEFMSVNUX0VMRU1FTlQgUFJJVkFURSBPRkYp
CitXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRElTS19JTUFHRV9DQUNI
RSBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9E
T1dOTE9BRF9BVFRSSUJVVEUgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9S
VF9WQUxVRShFTkFCTEVfRU5DUllQVEVEX01FRElBIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQV9WMiBQUklWQVRFIE9G
RikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZSBiL1NvdXJj
ZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCA1NDU5ODZmNTBjZGEwOGYyZGYxNDcw
ZWRhNWVjYmVlOWE5MTRiNGY5Li5kYzU1MGQ2NjQwYzUyYTY2ZWY4NjAzNTljMWQwODhhNWZhMjBi
YWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIv
U291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC02OCw2ICs2OCw3IEBAIG1hY3Jv
KFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0RF
VEFJTFNfRUxFTUVOVCAiVG9nZ2xlIEhUTUw1IGRldGFpbHMgc3VwcG9ydCIgUFJJVkFURSBPTikK
ICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OICJUb2dn
bGUgRGV2aWNlT3JpZW50YXRpb24gc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09Q
VElPTl9ERUZJTkUoRU5BQkxFX0RGR19KSVQgIlRvZ2dsZSBkYXRhIGZsb3cgZ3JhcGggSklUIHRp
ZXIiIFBSSVZBVEUgT04pCisgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0RJU0tfSU1B
R0VfQ0FDSEUgIlRvZ2dsZSBkaXNrIGltYWdlIGNhY2hlIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQog
ICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9ET000X0VWRU5UU19DT05TVFJVQ1RPUiAi
VG9nZ2xlIERPTTQgRXZlbnRzIGNvbnN0cnVjdG9ycyIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX0RPV05MT0FEX0FUVFJJQlVURSAiVG9nZ2xlIGRvd25sb2Fk
IGF0dHJpYnV0ZSBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklO
RShFTkFCTEVfRFJBR19TVVBQT1JUICJUb2dnbGUgRHJhZyBTdXBwb3J0IiBQUklWQVRFIE9GRikK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyNTRm
YjIyOGQ3MDJkYzNjZjhiY2U2ZTA2MDhlMzY1NjgxNzU1NGY2Li5mMmM0ODQ5ZDA2NGMyNDhmMGNi
MmY5MTc3YzFlZjM1Y2I2MzY4MzI0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDgtMTQgIEFuZHJlIE1vcmVp
cmEgTWFnYWxoYWVzICAgPGFuZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28udWs+CisKKyAgICAg
ICAgW0dUS10gUmUtYWRkIERpc2tJbWFnZUNhY2hlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHBhcnRpYWxseSByZXZlcnRzIHIxNzMy
NjUgYW5kIGluY2x1ZGVzIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQgYmFzZWQgb24gcGF0Y2ggZnJv
bQorICAgICAgICBidWcgIzEyNDE2NyAodmlhIFBPU0lYIGltcGwsIGFsdGhvdWdoIG9ubHkgR1RL
IHN1cHBvcnQgaXMgZW5hYmxlZCksIGFwYXJ0IGZyb20gZm9sbG93aW5nCisgICAgICAgIGZlYXR1
cmVzOgorCisgICAgICAgIC0gUG9ydGVkIGNoYW5nZXMgdG8gbGF0ZXN0IHVwc3RyZWFtIG1hc3Rl
ci4KKyAgICAgICAgLSBSZW1vdmUgRUZML2lPUyBzdXBwb3J0IGFuZCBlbmFibGUgR1RLIHN1cHBv
cnQgb25seS4KKyAgICAgICAgLSBQb3J0IHRvIHdrMiBhbmQgZHJvcCB3azEgc3VwcG9ydC4KKyAg
ICAgICAgLSBJbnRlZ3JhdGUgd2l0aCBjbWFrZS4KKyAgICAgICAgLSBQb3J0IEltYWdlRGVjb2Rl
ciBpbXByb3ZlbWVudHMgcmVxdWlyZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
LSBNZXJnZSBSZXNvdXJjZUJ1ZmZlciBjaGFuZ2VzIHRvIFNoYXJlZEJ1ZmZlci4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbToKKwogMjAxNS0wOC0xNCAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHNob3J0
ZW4gYW5vdGhlciB0ZXN0IHRoYXQgaXMgdGltaW5nIG91dC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9GZWF0dXJlTGlzdC5wbQppbmRleCBjNzFmMTQ2MjVhMjM0ZDAxYTgxYTM0YWM4NmYzNWU0NTky
M2ZiMTExLi41OWUxYzMxZGY1NWEyYTYyYTNmMGFiYTg1YWRhZWIxZThjYjNlMjhiIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC03Miw2ICs3Miw3IEBAIG15ICgK
ICAgICAkZGV0YWlsc0VsZW1lbnRTdXBwb3J0LAogICAgICRkZXZpY2VPcmllbnRhdGlvblN1cHBv
cnQsCiAgICAgJGRpcmVjdG9yeVVwbG9hZFN1cHBvcnQsCisgICAgJGRpc2tJbWFnZUNhY2hlLAog
ICAgICRkb200RXZlbnRzQ29uc3RydWN0b3IsCiAgICAgJGRvd25sb2FkQXR0cmlidXRlU3VwcG9y
dCwKICAgICAkZm9udExvYWRFdmVudHNTdXBwb3J0LApAQCAtMjQwLDYgKzI0MSw5IEBAIG15IEBm
ZWF0dXJlcyA9ICgKICAgICB7IG9wdGlvbiA9PiAiZGV2aWNlLW9yaWVudGF0aW9uIiwgZGVzYyA9
PiAiVG9nZ2xlIERldmljZSBPcmllbnRhdGlvbiBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAi
RU5BQkxFX0RFVklDRV9PUklFTlRBVElPTiIsIGRlZmF1bHQgPT4gaXNJT1NXZWJLaXQoKSwgdmFs
dWUgPT4gXCRkZXZpY2VPcmllbnRhdGlvblN1cHBvcnQgfSwKIAorICAgIHsgb3B0aW9uID0+ICJk
aXNrLWltYWdlLWNhY2hlIiwgZGVzYyA9PiAiVG9nZ2xlIERpc2sgSW1hZ2UgQ2FjaGUgc3VwcG9y
dCIsCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9ESVNLX0lNQUdFX0NBQ0hFIiwgZGVmYXVsdCA9
PiAwLCB2YWx1ZSA9PiBcJGRpc2tJbWFnZUNhY2hlIH0sCisKICAgICB7IG9wdGlvbiA9PiAiZG9t
NC1ldmVudHMtY29uc3RydWN0b3IiLCBkZXNjID0+ICJFeHBvc2UgRE9NNCBFdmVudHMgY29uc3Ry
dWN0b3JzIiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX0RPTTRfRVZFTlRTX0NPTlNUUlVDVE9S
IiwgZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkgfHwgaXNFZmwoKSksIHZh
bHVlID0+IFwkZG9tNEV2ZW50c0NvbnN0cnVjdG9yIH0sCiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxv
ZyBiL0NoYW5nZUxvZwppbmRleCA1MTg1ZmZmNmVjY2ZjMmQ4MzMxOWRjNjFmMzg0OGQ2ZWNjM2Qw
NzdlLi5lZGNkZmNhOTEzMDVjMWVmNzA0MjhiOTY5MDQyZjc1YjA2YTdiYTAwIDEwMDY0NAotLS0g
YS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMDgtMTQg
IEFuZHJlIE1vcmVpcmEgTWFnYWxoYWVzICAgPGFuZHJlLm1hZ2FsaGFlc0Bjb2xsYWJvcmEuY28u
dWs+CisKKyAgICAgICAgW0dUS10gUmUtYWRkIERpc2tJbWFnZUNhY2hlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDgwMjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHBhcnRpYWxseSBy
ZXZlcnRzIHIxNzMyNjUgYW5kIGluY2x1ZGVzIGNyb3NzLXBsYXRmb3JtIHN1cHBvcnQgYmFzZWQg
b24gcGF0Y2ggZnJvbQorICAgICAgICBidWcgIzEyNDE2NyAodmlhIFBPU0lYIGltcGwsIGFsdGhv
dWdoIG9ubHkgR1RLIHN1cHBvcnQgaXMgZW5hYmxlZCksIGFwYXJ0IGZyb20gZm9sbG93aW5nCisg
ICAgICAgIGZlYXR1cmVzOgorCisgICAgICAgIC0gUG9ydGVkIGNoYW5nZXMgdG8gbGF0ZXN0IHVw
c3RyZWFtIG1hc3Rlci4KKyAgICAgICAgLSBSZW1vdmUgRUZML2lPUyBzdXBwb3J0IGFuZCBlbmFi
bGUgR1RLIHN1cHBvcnQgb25seS4KKyAgICAgICAgLSBQb3J0IHRvIHdrMiBhbmQgZHJvcCB3azEg
c3VwcG9ydC4KKyAgICAgICAgLSBJbnRlZ3JhdGUgd2l0aCBjbWFrZS4KKyAgICAgICAgLSBQb3J0
IEltYWdlRGVjb2RlciBpbXByb3ZlbWVudHMgcmVxdWlyZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgLSBNZXJnZSBSZXNvdXJjZUJ1ZmZlciBjaGFuZ2VzIHRvIFNoYXJlZEJ1ZmZl
ci4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZToKKyAgICAgICAgQWRkIG9wdGlvbiB0
byBlbmFibGUgRGlza0ltYWdlQ2FjaGUgZmVhdHVyZSBmb3IgR1RLIGJ1aWxkcy4KKwogMjAxNS0w
OC0xMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4ODQyOC4K
</data>
<flag name="review"
          id="284222"
          type_id="1"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>