<?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>235018</bug_id>
          
          <creation_ts>2022-01-09 09:42:38 -0800</creation_ts>
          <short_desc>Start taking advantage of C++20 default comparisons</short_desc>
          <delta_ts>2024-09-28 12:57:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>233963</dependson>
    
    <dependson>256078</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jfernandez</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>rego</cc>
    
    <cc>saam</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1829323</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-09 09:42:38 -0800</bug_when>
    <thetext>Lets us delete quite a bit of code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829363</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-09 14:06:34 -0800</bug_when>
    <thetext>My first patch probably contains too much for one bug; should be landed in pieces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829364</commentid>
    <comment_count>2</comment_count>
      <attachid>448719</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-09 14:12:13 -0800</bug_when>
    <thetext>Created attachment 448719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829946</commentid>
    <comment_count>3</comment_count>
      <attachid>448885</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-11 15:59:14 -0800</bug_when>
    <thetext>Created attachment 448885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829960</commentid>
    <comment_count>4</comment_count>
      <attachid>448891</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-11 16:42:09 -0800</bug_when>
    <thetext>Created attachment 448891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829961</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-11 16:46:06 -0800</bug_when>
    <thetext>Unfortunately, our current GCC baseline is GCC 8.3.0, and I think default value comparisons are not supported in that GCC version...
According to the https://trac.webkit.org/wiki/WebKitGTK/GCCRequirement, we can upgrade our GCC to 9 at April. So, we can start many features we strongly wanted!

https://en.cppreference.com/w/cpp/compiler_support/20</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829964</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-11 16:54:11 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #5)
&gt; Unfortunately, our current GCC baseline is GCC 8.3.0, and I think default
&gt; value comparisons are not supported in that GCC version...
&gt; According to the https://trac.webkit.org/wiki/WebKitGTK/GCCRequirement, we
&gt; can upgrade our GCC to 9 at April. So, we can start many features we
&gt; strongly wanted!
&gt; 
&gt; https://en.cppreference.com/w/cpp/compiler_support/20

Looks like three way comparison is not in GCC until GCC 10, so I really wasted my time on that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829967</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-11 17:14:54 -0800</bug_when>
    <thetext>Probably, right now, the best feature we can use is bitfield initializer :)
https://en.cppreference.com/w/cpp/language/bit_field#Cpp20_Default_member_initializers_for_bit_fields</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831304</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-16 09:43:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/87654218&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1953431</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2023-05-06 12:18:52 -0700</bug_when>
    <thetext>@Darin Now, GCC gets 10.2, so this patch is unlocked :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1953432</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2023-05-06 12:42:23 -0700</bug_when>
    <thetext>Yes, I hope we can do everything from this patch, but probably not all at once!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2064024</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2024-09-28 12:57:02 -0700</bug_when>
    <thetext>*** Bug 256434 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448719</attachid>
            <date>2022-01-09 14:12:13 -0800</date>
            <delta_ts>2022-01-11 15:59:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235018-20220109141212.patch</filename>
            <type>text/plain</type>
            <size>600868</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
YTk1Mjk2NjYwNDRkYjc2NzNkNzk2Zjk0YWZkZDI4MTAxMzRlZmEyLi5jODQ1ZjRjODVhMjQ1NGY4
YmYxOTI3NWI2MGFjNDY0YmJiNmQ0ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4IEBACisyMDIyLTAxLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIEMrKzIwIGRlZmF1bHQgY29tcGFyaXNv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAx
OAorCiAyMDIyLTAxLTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgU3RhcnQgdXNpbmcgQysrMjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggM2U5MDBlY2EyNGFhNmY0NGNm
OWQwNDkyMTM0ZTg5ZTM5ZTkxMGZkMi4uNTM3MzhhMjMzYzIxODEyNjE4NmU1NzMyMDk5Yzg3ODkx
ODJlMTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4IEBACisyMDIyLTAxLTA5ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIEMrKzIw
IGRlZmF1bHQgY29tcGFyaXNvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTAxOAorCiAyMDIyLTAxLTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IHJl
dHVybnMgdGhlIHZhbHVlIG9mIGEgc3RkOjpvcHRpb25hbDxUPiBvciBjb25zdHJ1Y3RzIFQgaWYg
bmVlZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggYWIyOWE3N2ZhOGMzMjIyMDRhYTBmZGRjODE3OGI2MTA0YjEz
NWVmOS4uOTIzMTEwODI0YzMyMTg1OTBiMDM2MDJjY2EzYWM5NTFlYjE5MTYyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDggQEAKKzIwMjItMDEtMDkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2YgQysrMjAgZGVmYXVsdCBj
b21wYXJpc29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1MDE4CisKIDIwMjItMDEtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUg
dmFsdWUgb2YgYSBzdGQ6Om9wdGlvbmFsPFQ+IG9yIGNvbnN0cnVjdHMgVCBpZiBuZWVkZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCmluZGV4IDNlZjI0YmQ3NDU2ZTI0YjQ2YmE2YjViMDhjNTk5MWYyZjQ0MmUx
ZGUuLmExNWZhNTA0MjVjODA4NTU0MmI5MDlhNzA2MGRhNTM0NWFiMGZiZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwpAQCAtMSwzICsxLDggQEAKKzIwMjItMDEtMDkgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIFN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2YgQysrMjAgZGVm
YXVsdCBjb21wYXJpc29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM1MDE4CisKIDIwMjItMDEtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJu
cyB0aGUgdmFsdWUgb2YgYSBzdGQ6Om9wdGlvbmFsPFQ+IG9yIGNvbnN0cnVjdHMgVCBpZiBuZWVk
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYzE0ZWJkYzEwODhjZDk0NzlmMDdjZmE3MjVmNjhhNzI4NWViZmYxMC4u
YjYxMjUzNmI2YTM3ZDYxYjYxNWY0MzE1MWYyMWEwY2I2ZmJiMWY1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4IEBACisyMDIyLTAxLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIEMrKzIwIGRlZmF1bHQgY29tcGFyaXNv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAx
OAorCiAyMDIyLTAxLTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIG9m
IGEgc3RkOjpvcHRpb25hbDxUPiBvciBjb25zdHJ1Y3RzIFQgaWYgbmVlZGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggMjZjNjZkNTY0NDM2ZWIxMDBhNDRlMTVmMjJlMDExZDliMTAx
MTM5MC4uZjhjZGM1ZmFlNDQ4N2Q0MWQ3ODU0YmI1YmY0NzkyZGUxZWM2OTUxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDggQEAKKzIwMjItMDEtMDkgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ug
b2YgQysrMjAgZGVmYXVsdCBjb21wYXJpc29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDE4CisKIDIwMjItMDEtMDYgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBTdGFydCB1c2luZyBDKysy
MApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nIGIvU291cmNlL2JtYWxsb2Mv
Q2hhbmdlTG9nCmluZGV4IDM4NmQ5NjM4ZWU1NWYwMzhkNjMzNjZkNjU0MWQ4MzBiOWNjNWZiZDAu
LmI2OTU1MGJiZjhjYWZkNmUyN2QxNTkyZWVmOTgwMWQ0ZGUyM2Q3MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw4IEBACisyMDIyLTAxLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBTdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIEMrKzIwIGRlZmF1bHQgY29tcGFy
aXNvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTAxOAorCiAyMDIyLTAxLTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgU3RhcnQgdXNpbmcgQysrMjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNSZXRhaW5QdHIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNSZXRhaW5QdHIuaAppbmRleCAwNzZkMTM5MDlhMzgxZDVhMjlkYTg5OGJiN2JjYWNmMmMz
ODJlZjk0Li44NmJmOGRlZmQxMGNjZmJhNTAzMmQzMTkzMzZmYTFmZWIwOWVkNDFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUmV0YWluUHRyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1JldGFpblB0ci5oCkBAIC0xNzUsMTggKzE3NSwzIEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oVCog
YSwgY29uc3QgSlNSZXRhaW5QdHI8CiB7CiAgICAgcmV0dXJuIGEgPT0gYi5nZXQoKTsgCiB9Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgSlNSZXRhaW5QdHI8VD4mIGEsIGNvbnN0IEpTUmV0YWluUHRyPFU+JiBiKQoteyAKLSAg
ICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU1JldGFpblB0cjxUPiYg
YSwgVSogYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBK
U1JldGFpblB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsgCi19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3Nl
bWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlci5oCmluZGV4IDg5N2M1M2Y2NDMwYWEyNWVkNjhmMjVmMGJkN2RkNTk2YmM1ZDg4MjAu
LjEzMDEzNTgwZGI5MzhhYjY0NmNiNDU5M2IzMmQ4N2ZhMmU5MTZiODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCkBAIC00MjAsNyArNDIwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbWFzbS0+aW52YWxp
ZGF0ZUFsbFRlbXBSZWdpc3RlcnMoKTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBMYWJlbCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWwgPT0gb3RoZXIu
bV9sYWJlbDsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGFiZWwmKSBjb25zdCA9
IGRlZmF1bHQ7CiAKICAgICAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFiZWwu
aXNTZXQoKTsgfQogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAppbmRleCA3MGNhMzhjMmI4ODE2M2I2ZjgyYWZiZmE4
NjQwN2NiYjAxOThjODUzLi4wMjA2ZDA1Mjk3OGFhOTdlNDQ5Yjc5OGY5YWRmNDU5OGViNmIxYWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVm
ZmVyLmgKQEAgLTUzLDI0ICs1MywyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBERUNMQVJFX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihBc3NlbWJsZXJEYXRhKTsKIAogICAgIHN0cnVj
dCBBc3NlbWJsZXJMYWJlbCB7Ci0gICAgICAgIGlubGluZSBBc3NlbWJsZXJMYWJlbCgpIHsgc2V0
T2Zmc2V0KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7IH0KLSAgICAgICAg
aW5saW5lIEFzc2VtYmxlckxhYmVsKGNvbnN0IEFzc2VtYmxlckxhYmVsJiBvdGhlcikgeyBzZXRP
ZmZzZXQob3RoZXIub2Zmc2V0KCkpOyB9Ci0gICAgICAgIGlubGluZSBBc3NlbWJsZXJMYWJlbChB
c3NlbWJsZXJMYWJlbCYmIG90aGVyKSB7IHNldE9mZnNldChvdGhlci5vZmZzZXQoKSk7IH0KLSAg
ICAgICAgaW5saW5lIGV4cGxpY2l0IEFzc2VtYmxlckxhYmVsKHVpbnQzMl90IG9mZnNldCkgeyBz
ZXRPZmZzZXQob2Zmc2V0KTsgfQorICAgICAgICBBc3NlbWJsZXJMYWJlbCgpIHsgc2V0T2Zmc2V0
KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7IH0KKyAgICAgICAgQXNzZW1i
bGVyTGFiZWwoY29uc3QgQXNzZW1ibGVyTGFiZWwmIG90aGVyKSB7IHNldE9mZnNldChvdGhlci5v
ZmZzZXQoKSk7IH0KKyAgICAgICAgQXNzZW1ibGVyTGFiZWwoQXNzZW1ibGVyTGFiZWwmJiBvdGhl
cikgeyBzZXRPZmZzZXQob3RoZXIub2Zmc2V0KCkpOyB9CisgICAgICAgIGV4cGxpY2l0IEFzc2Vt
YmxlckxhYmVsKHVpbnQzMl90IG9mZnNldCkgeyBzZXRPZmZzZXQob2Zmc2V0KTsgfQogCiAgICAg
ICAgIEFzc2VtYmxlckxhYmVsJiBvcGVyYXRvcj0oY29uc3QgQXNzZW1ibGVyTGFiZWwmIG90aGVy
KSB7IHNldE9mZnNldChvdGhlci5vZmZzZXQoKSk7IHJldHVybiAqdGhpczsgfQogICAgICAgICBB
c3NlbWJsZXJMYWJlbCYgb3BlcmF0b3I9KEFzc2VtYmxlckxhYmVsJiYgb3RoZXIpIHsgc2V0T2Zm
c2V0KG90aGVyLm9mZnNldCgpKTsgcmV0dXJuICp0aGlzOyB9CiAKICAgICAgICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuIChvZmZzZXQoKSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCkpOyB9CiAKLSAgICAgICAgaW5saW5lIEFzc2VtYmxlckxhYmVsIGxhYmVsQXRP
ZmZzZXQoaW50IG9mZnNldCkgY29uc3QKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxBdE9m
ZnNldChpbnQgb2Zmc2V0KSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gQXNz
ZW1ibGVyTGFiZWwodGhpcy0+b2Zmc2V0KCkgKyBvZmZzZXQpOwogICAgICAgICB9CiAKLSAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFzc2VtYmxlckxhYmVsJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gb2Zmc2V0KCkgPT0gb3RoZXIub2Zmc2V0KCk7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEFzc2VtYmxlckxhYmVsJikgY29uc3QgPSBkZWZhdWx0OwogCi0gICAgICAgIGlu
bGluZSB1aW50MzJfdCBvZmZzZXQoKSBjb25zdAorICAgICAgICB1aW50MzJfdCBvZmZzZXQoKSBj
b25zdAogICAgICAgICB7CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1aW50MzJfdD4odW50YWdJbnQobV9vZmZzZXQsIGJpdHdpc2VfY2FzdDxQdHJUYWc+
KHRoaXMpKSk7CkBAIC04MCw3ICs4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBpbmxpbmUgdm9pZCBzZXRPZmZzZXQodWludDMyX3Qgb2Zm
c2V0KQorICAgICAgICB2b2lkIHNldE9mZnNldCh1aW50MzJfdCBvZmZzZXQpCiAgICAgICAgIHsK
ICNpZiBDUFUoQVJNNjRFKQogICAgICAgICAgICAgbV9vZmZzZXQgPSB0YWdJbnQoc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG9mZnNldCksIGJpdHdpc2VfY2FzdDxQdHJUYWc+KHRoaXMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oCmluZGV4IDFlYTMyNDU0MTVhYjA4YTQ1YzdkM2U1OTU5NjBjNDQ1YjE5ZmY3NTEuLjk2
MzNiNWNmZDhkNmIzOTQzY2RlZDlhZmE2NWNjYzJjOGRjMjcyMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaApA
QCAtMTIwLDggKzEyMCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gISFtX3B0cjsgfQogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyBy
ZXR1cm4gIW1fcHRyOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ0Z1bmN0aW9uUHRy
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gb3RoZXIubV9wdHI7IH0KLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgQ0Z1bmN0aW9uUHRyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9w
dHIgIT0gb3RoZXIubV9wdHI7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ0Z1bmN0aW9u
UHRyJikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIFB0ciBtX3B0ciB7IG51bGxw
dHIgfTsKQEAgLTIwNyw4ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV92YWx1ZTsgfQogICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gIW1fdmFsdWU7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
dW5jdGlvblB0ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1
ZTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGdW5jdGlvblB0ciYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWUgIT0gb3RoZXIubV92YWx1ZTsgfQorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBGdW5jdGlvblB0ciYpIGNvbnN0ID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICB0
ZW1wbGF0ZTxQdHJUYWcgb3RoZXJUYWc+CkBAIC0yNzYsMjQgKzI3NCw0NSBAQCBwcml2YXRlOgog
Ly8KIC8vIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBzaG91bGQgYmUgdXNlZCB0byB3cmFwIHBvaW50
ZXJzIHRvIEpJVCBnZW5lcmF0ZWQgY29kZS4KIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0ckJh
c2UgeworcHVibGljOgorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fdmFs
dWU7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISEqdGhp
czsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ckJh
c2UmKSBjb25zdCA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWUgPT0gZW1wdHlWYWx1ZSgpOyB9CisgICAgYm9vbCBpc0RlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gZGVsZXRlZFZhbHVlKCk7IH0KKworICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBQdHJIYXNoPGNvbnN0IHZvaWQqPjo6aGFzaCht
X3ZhbHVlKTsgfQorCiBwcm90ZWN0ZWQ6CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyQmFzZShj
b25zdCB2b2lkKiB2YWx1ZSA9IG51bGxwdHIpCisgICAgICAgIDogbV92YWx1ZSB7IHZhbHVlIH0K
KyAgICB7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgZHVtcFdpdGhOYW1lKHZvaWQqIGV4ZWN1
dGFibGVBZGRyZXNzLCB2b2lkKiBkYXRhTG9jYXRpb24sIGNvbnN0IGNoYXIqIG5hbWUsIFByaW50
U3RyZWFtJiBvdXQpOworCisgICAgc3RhdGljIGNvbnN0IHZvaWQqIGVtcHR5VmFsdWUoKSB7IHJl
dHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigxKSk7IH0KKyAg
ICBzdGF0aWMgY29uc3Qgdm9pZCogZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0
PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMikpOyB9CisKKyAgICBjb25zdCB2b2lkKiBt
X3ZhbHVlIHsgbnVsbHB0ciB9OwogfTsKIAotLy8gRklYTUU6IE1ha2UgSlNDIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBpbmplcml0IGZyb20gTWV0YUFsbG9jYXRvclB0ci4KKy8vIEZJWE1FOiBNYWtl
IEpTQyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgaW5oZXJpdCBmcm9tIE1ldGFBbGxvY2F0b3JQdHIu
CiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg1MTQ1CiB0ZW1w
bGF0ZTxQdHJUYWcgdGFnPgotY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIDogcHJpdmF0ZSBN
YWNyb0Fzc2VtYmxlckNvZGVQdHJCYXNlIHsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciA6
IHB1YmxpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHJCYXNlIHsKIHB1YmxpYzoKICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoKSA9IGRlZmF1bHQ7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKHN0
ZDo6bnVsbHB0cl90KSA6IG1fdmFsdWUobnVsbHB0cikgeyB9CisgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKHN0ZDo6bnVsbHB0cl90KSB7IH0KIAogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVy
Q29kZVB0cihjb25zdCB2b2lkKiB2YWx1ZSkKICNpZiBDUFUoQVJNX1RIVU1CMikKICAgICAgICAg
Ly8gRGVjb3JhdGUgdGhlIHBvaW50ZXIgYXMgYSB0aHVtYiBjb2RlIHBvaW50ZXIuCi0gICAgICAg
IDogbV92YWx1ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPih2YWx1ZSkgKyAxKQorICAg
ICAgICA6IE1hY3JvQXNzZW1ibGVyQ29kZVB0ckJhc2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4odmFsdWUpICsgMSkKICNlbHNlCi0gICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAg
ICAgOiBNYWNyb0Fzc2VtYmxlckNvZGVQdHJCYXNlKHZhbHVlKQogI2VuZGlmCiAgICAgewogICAg
ICAgICBhc3NlcnRJc1RhZ2dlZFdpdGg8dGFnPih2YWx1ZSk7CkBAIC0zMTUsNyArMzM0LDcgQEAg
cHVibGljOgogICAgIH0KIAogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1
cm5BZGRyZXNzUHRyIHJhKQotICAgICAgICA6IG1fdmFsdWUocmV0YWdDb2RlUHRyPFJldHVybkFk
ZHJlc3NQdHJUYWcsIHRhZz4ocmEudmFsdWUoKSkpCisgICAgICAgIDogTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyQmFzZShyZXRhZ0NvZGVQdHI8UmV0dXJuQWRkcmVzc1B0clRhZywgdGFnPihyYS52YWx1
ZSgpKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChyYS51bnRhZ2dlZFZhbHVlKCkpOwogICAgICAg
ICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwpAQCAtMzY0LDE3ICszODMsNiBA
QCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gIW1fdmFsdWU7Ci0gICAgfQotICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhKCEqdGhpcyk7IH0KLSAgICAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBvdGhlcikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7Ci0gICAgfQotCiAgICAg
Ly8gRGlzYWxsb3cgYW55IGNhc3Rpbmcgb3BlcmF0aW9ucyAoZXhjZXB0IGZvciBib29sZWFucyku
IEluc3RlYWQsIHRoZSBjbGllbnQKICAgICAvLyBzaG91bGQgYmUgYXNraW5nIGV4ZWN1dGFibGVB
ZGRyZXNzKCkgZXhwbGljaXRseS4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9
IHN0ZDo6ZW5hYmxlX2lmX3Q8IXN0ZDo6aXNfc2FtZTxULCBib29sPjo6dmFsdWU+PgpAQCAtMzk0
LDI1ICs0MDIsMTQgQEAgcHVibGljOgogICAgIGVudW0gRGVsZXRlZFZhbHVlVGFnIHsgRGVsZXRl
ZFZhbHVlIH07CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKEVtcHR5VmFsdWVUYWcp
Ci0gICAgICAgIDogbV92YWx1ZShlbXB0eVZhbHVlKCkpCisgICAgICAgIDogTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyQmFzZShlbXB0eVZhbHVlKCkpCiAgICAgeyB9CiAgICAgCiAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKERlbGV0ZWRWYWx1ZVRhZykKLSAgICAgICAgOiBtX3ZhbHVlKGRlbGV0ZWRW
YWx1ZSgpKQorICAgICAgICA6IE1hY3JvQXNzZW1ibGVyQ29kZVB0ckJhc2UoZGVsZXRlZFZhbHVl
KCkpCiAgICAgeyB9CiAgICAgCi0gICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlID09IGVtcHR5VmFsdWUoKTsgfQotICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlID09IGRlbGV0ZWRWYWx1ZSgpOyB9Ci0KLSAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gUHRySGFzaDxjb25zdCB2b2lkKj46Omhhc2gobV92YWx1
ZSk7IH0KLQogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKLQotcHJpdmF0ZToKLSAgICBz
dGF0aWMgY29uc3Qgdm9pZCogZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KDEpKTsgfQotICAgIHN0YXRpYyBjb25zdCB2b2lkKiBk
ZWxldGVkVmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGlu
dHB0cl90PigyKSk7IH0KLQotICAgIGNvbnN0IHZvaWQqIG1fdmFsdWUgeyBudWxscHRyIH07CiB9
OwogCiB0ZW1wbGF0ZTxQdHJUYWcgdGFnPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ2FzZUNvbGxlY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nh
c2VDb2xsZWN0aW9uLmgKaW5kZXggYzQ1Y2M2NDFkODBlYTU2MWQ5OTBkYjdlYzZkMTFhN2Q5MjJl
YmE3OC4uNjdkMTY5NDI0OWZmZjk0YjkwZDBhZGQ2OWRiZDQ0ODAyNmM0ZGQ5MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2FzZUNvbGxlY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYXNlQ29sbGVjdGlvbi5oCkBAIC04OSwxMSArODksNiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4Owog
ICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhl
cikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwotICAgICAgICB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBjb25zdCBDYXNlQ29sbGVjdGlv
biogbV9jb2xsZWN0aW9uOwogICAgICAgICB1bnNpZ25lZCBtX2luZGV4OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuaAppbmRleCA4MGRmMDA0MzUzYTZhYjQ5YjRhYmFi
MWE2N2UxZjlmMTcwNjlmNTUwLi5hMDc0OTIwMDBkNjYyYTNlZjY0NDBmOGE2ZWYxYjdkMzgyZjQ4
YWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuaApAQCAtNjgs
MTcgKzY4LDcgQEAgcHVibGljOgogCiAgICAgICAgIGV4cGxpY2l0IEtleShjb25zdCBBaXI6Oklu
c3QmKTsKIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JiBvdGhlcikgY29uc3QK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKLSAg
ICAgICAgICAgICAgICAmJiBtX251bUFyZ3MgPT0gb3RoZXIubV9udW1BcmdzCi0gICAgICAgICAg
ICAgICAgJiYgbV9zdGFja21hcFJvbGUgPT0gb3RoZXIubV9zdGFja21hcFJvbGU7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgS2V5JiBvdGhlcikgY29uc3QKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9
CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXkmKSBjb25zdCA9IGRlZmF1bHQ7CiAK
ICAgICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9
IEtleSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVj
dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5jcHAKaW5kZXggZTBk
YmZhNzI0YzgwYTNjZTE3ODFjYWMyYTkzZmVkYjM2NjNhMmE2NS4uY2NkMTJkYzRlYzczMTAzMTEw
Njg5MzI5ZTU3ZDVmNDA4YmFmN2UzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzRWZmZWN0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0
cy5jcHAKQEAgLTg1LDI1ICs4NSw2IEBAIGJvb2wgRWZmZWN0czo6aW50ZXJmZXJlcyhjb25zdCBF
ZmZlY3RzJiBvdGhlcikgY29uc3QKICAgICAgICAgfHwgKGZlbmNlICYmIG90aGVyLmZlbmNlKTsK
IH0KIAotYm9vbCBFZmZlY3RzOjpvcGVyYXRvcj09KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25z
dAotewotICAgIHJldHVybiB0ZXJtaW5hbCA9PSBvdGhlci50ZXJtaW5hbAotICAgICAgICAmJiBl
eGl0c1NpZGV3YXlzID09IG90aGVyLmV4aXRzU2lkZXdheXMKLSAgICAgICAgJiYgY29udHJvbERl
cGVuZGVudCA9PSBvdGhlci5jb250cm9sRGVwZW5kZW50Ci0gICAgICAgICYmIHdyaXRlc0xvY2Fs
U3RhdGUgPT0gb3RoZXIud3JpdGVzTG9jYWxTdGF0ZQotICAgICAgICAmJiByZWFkc0xvY2FsU3Rh
dGUgPT0gb3RoZXIucmVhZHNMb2NhbFN0YXRlCi0gICAgICAgICYmIHdyaXRlc1Bpbm5lZCA9PSBv
dGhlci53cml0ZXNQaW5uZWQKLSAgICAgICAgJiYgcmVhZHNQaW5uZWQgPT0gb3RoZXIucmVhZHNQ
aW5uZWQKLSAgICAgICAgJiYgd3JpdGVzID09IG90aGVyLndyaXRlcwotICAgICAgICAmJiByZWFk
cyA9PSBvdGhlci5yZWFkcwotICAgICAgICAmJiBmZW5jZSA9PSBvdGhlci5mZW5jZTsKLX0KLQot
Ym9vbCBFZmZlY3RzOjpvcGVyYXRvciE9KGNvbnN0IEVmZmVjdHMmIG90aGVyKSBjb25zdAotewot
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0KLQogdm9pZCBFZmZlY3RzOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgQ29tbWFQcmludGVyIGNvbW1hKCJ8Iik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmgKaW5kZXggYTViNjQwMTljMGFmNjQzMDNkMjc0
YjIxYTdhOWQwYzhjMzljYjU5Ny4uMmE5ODc1OWQ0NWUwYTNhZDEwNTkxZWU2YzZlZmEzNTBkZjJm
ZWRkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaApAQCAtMTE4LDggKzExOCw3
IEBAIHN0cnVjdCBFZmZlY3RzIHsKICAgICAvLyBiZWhhdmlvciBpbiBhbiBvYnNlcnZhYmxlIHdh
eS4KICAgICBib29sIGludGVyZmVyZXMoY29uc3QgRWZmZWN0cyYpIGNvbnN0OwogICAgIAotICAg
IEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFZmZlY3RzJikgY29uc3Q7
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVmZmVjdHMmKSBj
b25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYpIGNvbnN0ID0gZGVmYXVs
dDsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmlj
RnJlcXVlbnRlZEJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNHZW5lcmljRnJl
cXVlbnRlZEJsb2NrLmgKaW5kZXggMWM1ZTc1Y2ZlOGI2M2YzYzczOTQ1OGM4YzU1MzExYTM0ZTVm
ZWRkZS4uNmRmZmMxMTRmMTI0ZGFhYjcwN2FjNDhjYzRjOWQwYzE5NmQyMDNlOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaApA
QCAtNDUsMTYgKzQ1LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jayYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9ibG9jayA9PSBvdGhlci5tX2Jsb2NrCi0gICAgICAgICAgICAmJiBt
X2ZyZXF1ZW5jeSA9PSBvdGhlci5tX2ZyZXF1ZW5jeTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jayYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBHZW5lcmljRnJlcXVlbnRlZEJsb2NrJikgY29uc3QgPSBkZWZhdWx0OwogCiAg
ICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzS2luZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzS2luZC5oCmluZGV4IDY5MmFmNDg5YjczZjU4MDZkNzA4NmVlZDVjNzU1ZWRhYTRiYzI4NGYu
LmI3YjhhYzAzZTgwZjAyYjFiYzZlNGRlYzk5Yzc5ZjcyOTk3MmZkNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0tpbmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNLaW5kLmgKQEAgLTY5LDEyICs2OSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIDogS2lu
ZChPb3BzKQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBPcGNvZGUgb3Bjb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9vcGNvZGU7IH0KICAgICB2b2lkIHNldE9wY29kZShPcGNvZGUgb3Bjb2RlKSB7
IG1fb3Bjb2RlID0gb3Bjb2RlOyB9Ci0gICAgCisKICAgICBib29sIGhhc0V4dHJhQml0cygpIGNv
bnN0IHsgcmV0dXJuIG1faXNDaGlsbCB8fCBtX3RyYXBzOyB9Ci0gICAgCisKICAgICAvLyBDaGls
bCBiaXQuIFRoaXMgYXBwbGllcyB0byBkaXZpc2lvbi1iYXNlZCBhcml0aG1ldGljIG9wcywgd2hp
Y2ggbWF5IHRyYXAgb24gc29tZQogICAgIC8vIHBsYXRmb3JtcyBvciBleGhpYml0IGJpemFycmUg
YmVoYXZpb3Igd2hlbiBwYXNzZWQgY2VydGFpbiBpbnB1dHMuIFRoZSBub24tY2hpbGwKICAgICAv
LyB2ZXJzaW9uIHdpbGwgYmVoYXZlIGFzIHVucHJlZGljdGFibHkgYXMgaXQgd2FudHMuIEZvciBl
eGFtcGxlLCBpdCdzIGxlZ2FsIHRvCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQoaGFzSXNDaGlsbCgpKTsKICAgICAgICAgbV9pc0NoaWxsID0gaXNDaGlsbDsKICAg
ICB9Ci0gICAgCisKICAgICAvLyBUcmFwcyBiaXQuIFRoaXMgYXBwbGllcyB0byBtZW1vcnkgYWNj
ZXNzIG9wcy4gSXQgbWVhbnMgdGhhdCB0aGUgaW5zdHJ1Y3Rpb24gY291bGQKICAgICAvLyB0cmFw
IGFzIHBhcnQgb2Ygc29tZSBjaGVjayBpdCBwZXJmb3JtcywgYW5kIHRoYXQgd2UgbWVhbiB0byBt
YWtlIHRoaXMgb2JzZXJ2YWJsZS4gVGhpcwogICAgIC8vIGN1cnJlbnRseSBvbmx5IGFwcGxpZXMg
dG8gbWVtb3J5IGFjY2Vzc2VzIChsb2FkcyBhbmQgc3RvcmVzKS4gWW91IGRvbid0IGdldCB0byBm
aW5kIG91dCB3aGVyZQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJU
KGhhc1RyYXBzKCkpOwogICAgICAgICBtX3RyYXBzID0gdHJhcHM7CiAgICAgfQotICAgIAorCiAg
ICAgLy8gUnVsZXMgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllczoKICAgICAvLyAtIFB1dCB0aGUg
YWNjZXNzb3JzIGhlcmUuCiAgICAgLy8gLSBoYXNCbGFoKCkgc2hvdWxkIGNoZWNrIGlmIHRoZSBv
cGNvZGUgYWxsb3dzIGZvciB5b3VyIHByb3BlcnR5LgpAQCAtMTU3LDM5ICsxNTcsMjkgQEAgcHVi
bGljOgogICAgIC8vIC0gVHJ5IG5vdCB0byBpbmNyZWFzZSB0aGUgc2l6ZSBvZiBLaW5kIHRvbyBt
dWNoLiBCdXQgaXQgd291bGRuJ3QgYmUgdGhlIGVuZCBvZiB0aGUKICAgICAvLyAgIHdvcmxkIGlm
IGl0IGJsb2F0ZWQgdG8gNjQgYml0cy4KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
S2luZCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9vcGNvZGUgPT0gb3Ro
ZXIubV9vcGNvZGUKLSAgICAgICAgICAgICYmIG1faXNDaGlsbCA9PSBvdGhlci5tX2lzQ2hpbGwK
LSAgICAgICAgICAgICYmIG1fdHJhcHMgPT0gb3RoZXIubV90cmFwczsKLSAgICB9Ci0gICAgCi0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtpbmQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLSAgICAKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgS2luZCYpIGNvbnN0ID0gZGVmYXVsdDsKKwogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwotICAgIAorCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAg
ewogICAgICAgICAvLyBJdCdzIGFsbW9zdCBjZXJ0YWlubHkgbW9yZSBpbXBvcnRhbnQgdGhhdCB0
aGlzIGhhc2ggZnVuY3Rpb24gaXMgY2hlYXAgdG8gY29tcHV0ZSB0aGFuCiAgICAgICAgIC8vIGFu
eXRoaW5nIGVsc2UuIFdlIGNhbiBsaXZlIHdpdGggc29tZSBraW5kIGhhc2ggY29sbGlzaW9ucy4K
ICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlICsgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lzQ2hp
bGwpIDw8IDE2KSArIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV90cmFwcykgPDwgNyk7CiAgICAg
fQotICAgIAorCiAgICAgS2luZChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAg
ICAgIDogbV9vcGNvZGUoT29wcykKICAgICAgICAgLCBtX2lzQ2hpbGwodHJ1ZSkKICAgICAgICAg
LCBtX3RyYXBzKGZhbHNlKQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAqdGhpcyA9PSBL
aW5kKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsKICAgICB9Ci0gICAgCisKIHByaXZhdGU6
CiAgICAgT3Bjb2RlIG1fb3Bjb2RlOwogICAgIGJvb2wgbV9pc0NoaWxsIDogMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BoaUNoaWxkcmVuLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNQaGlDaGlsZHJlbi5oCmluZGV4IDk1MjA1NTRiNjk4YWFkOTZmYjgz
ZTc0Yjg2YzQyMTNkMzkzYTkyY2IuLmJlYTk0MWI4YTM1ZGQ1ZThhYzZjZGQ3ODNmY2NkNzYxNTY2
MWY5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BoaUNoaWxkcmVu
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGhpQ2hpbGRyZW4uaApAQCAtODUs
MTEgKzg1LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBtX2luZGV4ID09IG90
aGVyLm1faW5kZXg7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICAgICAgfQotCiAgICAgICAg
IHByaXZhdGU6CiAgICAgICAgICAgICBWZWN0b3I8VXBzaWxvblZhbHVlKj4qIG1fdmFsdWVzOwog
ICAgICAgICAgICAgdW5zaWduZWQgbV9pbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1NwYXJzZUNvbGxlY3Rpb24uaAppbmRleCA0OTViOTRkYjljNTcwNmYzZThjMDcxNjYyZTA0
M2JlNGE2NzI1MWVkLi44N2VlMDM2YWE2MTI3YmQ5YWQyZTNkYTExMGUwNWZiNzFjOWIzMzZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCkBAIC0x
NTQsMTEgKzE1NCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBtX2luZGV4ID09IG90
aGVyLm1faW5kZXg7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
aXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBTcGFyc2VDb2xsZWN0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNTdGFja21hcFZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNT
dGFja21hcFZhbHVlLmgKaW5kZXggODdmMDA5ZDQ5MDExZTc4YWNiMDA3MjIyMzM4ZmQ3ZjBjYjU0
M2E4OS4uNzEzMTA2NTQ0OTkwNjA2ZjA4NzY3YjUyNGRiOTk3YzRlYjlkMTRhZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuaApAQCAtMjczLDExICsyNzMsNiBA
QCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRl
eDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0
ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKICAgICAg
ICAgcHJpdmF0ZToKICAgICAgICAgICAgIGNvbnN0IENvbnN0cmFpbmVkVmFsdWVDb2xsZWN0aW9u
KiBtX2NvbGxlY3Rpb247CiAgICAgICAgICAgICB1bnNpZ25lZCBtX2luZGV4OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3VjY2Vzc29yQ29sbGVjdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3VjY2Vzc29yQ29sbGVjdGlvbi5oCmluZGV4IDBhN2Rm
MjQ3YjBiOGVlMmNkMTFkM2U2YjkyNTdjOGJhOTZmZTUzMzguLmI5MzYxNDAyMjNkZjY3ZTA5ZjRm
ZmIyYjg5NzJjOTBjOTE0YTNmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNTdWNjZXNzb3JDb2xsZWN0aW9uLmgKQEAgLTc2LDExICs3Niw2IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CiAgICAgICAgIH0KIAotICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLQog
ICAgIHByaXZhdGU6CiAgICAgICAgIFN1Y2Nlc3NvckNvbGxlY3Rpb24qIG1fY29sbGVjdGlvbjsK
ICAgICAgICAgc2l6ZV90IG1faW5kZXg7CkBAIC0xMjAsMTEgKzExNSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CiAgICAgICAgIH0KIAot
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG90aGVyKSBjb25z
dAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAg
ICAgIH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IFN1Y2Nlc3NvckNvbGxlY3Rpb24q
IG1fY29sbGVjdGlvbjsKICAgICAgICAgc2l6ZV90IG1faW5kZXg7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNUeXBlLmgKaW5kZXggOTMyMmY4OGVkOWI5Nzg0N2ZkNGFhNzBlN2U1OTM1NDc3MDU5ZjU1MC4u
Y2M5ZWM3MzZhYjIzZmE1NzZkMTJhOTU4YWFkYjdlNmMzMjYwNDc2NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1R5cGUuaApAQCAtNzEsMTAgKzcxLDggQEAgcHVibGljOgogICAgIGlubGluZSBib29s
IGlzTnVtZXJpYygpIGNvbnN0OwogICAgIGlubGluZSBib29sIGlzVHVwbGUoKSBjb25zdDsKIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUeXBlS2luZCYgb3RoZXJLaW5kKSBjb25zdCB7IHJl
dHVybiBraW5kKCkgPT0gb3RoZXJLaW5kOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFR5
cGUmIHR5cGUpIGNvbnN0IHsgcmV0dXJuIG1fa2luZCA9PSB0eXBlLm1fa2luZDsgfQotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBUeXBlS2luZCYgb3RoZXJLaW5kKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG90aGVyS2luZCk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVHlwZSYg
dHlwZSkgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSB0eXBlKTsgfQorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUeXBlJikgY29uc3QgPSBkZWZhdWx0OworICAgIGJvb2wgb3BlcmF0b3I9PShU
eXBlS2luZCBvdGhlcktpbmQpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBvdGhlcktpbmQ7IH0K
IAogcHJpdmF0ZToKICAgICBUeXBlS2luZCBtX2tpbmQgeyBWb2lkIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWVLZXkuaAppbmRleCA0NmY0NDBjNTJmZDRlMGNlOWRmMDk2NTk4Y2Q1Y2Mw
NmYzOTk1MWExLi4xODU3ZWUzNjUxZDE5MjhmMGI5ZTI1MzA1MDc0NWY4YzNlZmVkMGNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmgKQEAgLTk3LDE3ICs5Nyw3IEBAIHB1Ymxp
YzoKICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiB1LmRvdWJsZVZhbHVl
OyB9CiAgICAgZmxvYXQgZmxvYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHUuZmxvYXRWYWx1ZTsg
fQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZhbHVlS2V5JiBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2tpbmQgPT0gb3RoZXIubV9raW5kCi0gICAgICAgICAgICAm
JiBtX3R5cGUgPT0gb3RoZXIubV90eXBlCi0gICAgICAgICAgICAmJiB1ID09IG90aGVyLnU7Ci0g
ICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZhbHVlS2V5JiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFZhbHVlS2V5JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgdW5z
aWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWVSZXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVw
LmgKaW5kZXggMTU3YmM4ODY4MjMxMmIxYTFlOWRhNzM5YzA4MmMwZDZjNDc3ZDMyNi4uNTEzMDRi
NjIzYjg3Mjg3YmUwZTQzY2IzYTg3MDE5MmI1YzZiM2IzNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZVJlcC5oCkBAIC0yMTEsMTEgKzIxMSw2IEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWYWx1ZVJlcCYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGtpbmQoKSAhPSBXYXJtQW55
OyB9CiAKICAgICBib29sIGlzQW55KCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IFdhcm1Bbnkg
fHwga2luZCgpID09IENvbGRBbnkgfHwga2luZCgpID09IExhdGVDb2xkQW55OyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlH
cmFwaENvbG9yaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2Nh
dGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwCmluZGV4IGIwZDI1ZDE2YWU2YTE5MGY0NWIx
YjMzYWRmNjg4NDI5ODNhZWY3Y2EuLmJlNjc5ZTc0NTEwYmY1YmY4ZDJmZjI1YmQyYTg1MDIzMmZj
ODk5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2Nh
dGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQWxsb2NhdGVSZWdpc3RlcnNCeUdyYXBoQ29sb3JpbmcuY3BwCkBAIC0xNDI3
LDE1ICsxNDI3LDcgQEAgcHVibGljOgogICAgICAgICBUbXAgb3BlcmF0b3IqKCkgY29uc3QgeyBy
ZXR1cm4gVG1wTWFwcGVyOjp0bXBGcm9tQWJzb2x1dGVJbmRleCgqbV9pbmRleEl0ZXJhdG9yKTsg
fQogICAgICAgICBJbmRleFRvVG1wSXRlcmF0b3JBZGFwdG9yJiBvcGVyYXRvcisrKCkgeyArK21f
aW5kZXhJdGVyYXRvcjsgcmV0dXJuICp0aGlzOyB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEluZGV4VG9UbXBJdGVyYXRvckFkYXB0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gbV9pbmRleEl0ZXJhdG9yID09IG90aGVyLm1faW5kZXhJdGVy
YXRvcjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmRleFRv
VG1wSXRlcmF0b3JBZGFwdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBJbmRleFRvVG1wSXRlcmF0b3JBZGFwdG9yJikgY29uc3QgPSBkZWZhdWx0Owog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgSW5kZXhJdGVyYXRvciBtX2luZGV4SXRlcmF0b3I7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tC
eUdyYXBoQ29sb3JpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxv
Y2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcAppbmRleCBjMmYxYWVmMjhhODMwY2ZiNTI0YTcx
ZjUyZTAyZjMzZDU1MWNhZWQ0Li5lY2VmODg2ZmQ1YWIzMTZmYzk3MzlmYmVjMGQwZGM4ZTZkNzUx
NDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRl
U3RhY2tCeUdyYXBoQ29sb3JpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmluZy5jcHAKQEAgLTMxMywxNyArMzEzLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENvYWxlc2NhYmxlTW92ZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBzcmMgPT0gb3RoZXIuc3JjCi0gICAgICAgICAgICAgICAgJiYgZHN0ID09
IG90aGVyLmRzdAotICAgICAgICAgICAgICAgICYmIGZyZXF1ZW5jeSA9PSBvdGhlci5mcmVxdWVu
Y3k7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29hbGVzY2Fi
bGVNb3ZlJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
b2FsZXNjYWJsZU1vdmUmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICAgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQXJnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckFyZy5oCmluZGV4IGZiZjY2MzdiMjg2MDcyOWQ1NDc4ZmYzY2RkMDQ1MzY4NWFiYTRjOTUuLmVm
Y2UzYTg4MDY3MjkxMjU4NWNkZjFmYTE3MDZlM2FmN2E5MmJlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBcmcuaApAQCAtNzMzLDYgKzczMyw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBcmcmIG90aGVyKSBjb25zdAogICAgIHsKKyAgICAgICAgLy8g
RklYTUU6IFRoaXMgaWdub3JlcyBtX2V4dGVuZC4gSXMgdGhhdCBpbnRlbnRpb25hbD8gSWYgbm90
LCB3ZSBjb3VsZCB1c2UgZGVmYXVsdCBpbnN0ZWFkIG9mIHdyaXRpbmcgdGhpcyBvdXQuCiAgICAg
ICAgIHJldHVybiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldAogICAgICAgICAgICAgJiYgbV9r
aW5kID09IG90aGVyLm1fa2luZAogICAgICAgICAgICAgJiYgbV9iYXNlID09IG90aGVyLm1fYmFz
ZQpAQCAtNzQwLDExICs3NDEsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAmJiBtX3NjYWxlID09
IG90aGVyLm1fc2NhbGU7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFyZyYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgfQotCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlz
ICE9IEFyZygpOyB9CiAKICAgICBLaW5kIGtpbmQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckNvZGUuaAppbmRleCBlYjEyOTNiYzgyMGRlM2NlMGEyNmI0ZjA2ZjliMTkxYzk4
YTM5NzYxLi4yNzY2ZjZkNGI3N2Y5YzY0NmQ4OGM1ZjE5MTAzMzUxZmZlNjViNmFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaApAQCAtMjgxLDExICsyODEsNiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgICAg
ICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29u
c3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAg
ICAgICB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBjb25zdCBDb2RlKiBtX2NvZGU7CiAgICAg
ICAgIHVuc2lnbmVkIG1faW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAppbmRleCA3N2FmZDg4NTNiNmI3MTdlN2RlNjNi
OWRiNmI0OTdiZGVjOTI1NmU4Li5iOWFiNTlmYTA3NTA4YTVkYjc3ZmIxYzY0ZWZmZDU0OWQyMzc0
Y2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlv
dXNTcGlsbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2
aW91c1NwaWxscy5jcHAKQEAgLTM0OSwxNiArMzQ5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybiAhIXJlZzsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFJlZ0NvbnN0JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIHJlZyA9PSBvdGhlci5yZWcKLSAgICAgICAgICAgICAgICAmJiBjb25zdGFudCA9PSBv
dGhlci5jb25zdGFudDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0
IFJlZ0NvbnN0JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJl
ZyA8IG90aGVyLnJlZyB8fCAocmVnID09IG90aGVyLnJlZyAmJiBjb25zdGFudCA8IG90aGVyLmNv
bnN0YW50KTsKLSAgICAgICAgfQorICAgICAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihSZWdD
b25zdCwgUmVnQ29uc3QpID0gZGVmYXVsdDsKIAogICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKICAgICAgICAgewpAQCAtMzkyLDEyICszODMsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgcmV0dXJuIHNsb3QgJiYgcmVnOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnU2xvdCYgb3RoZXIpIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBzbG90ID09IG90aGVyLnNsb3QKLSAgICAgICAgICAgICAg
ICAmJiByZWcgPT0gb3RoZXIucmVnCi0gICAgICAgICAgICAgICAgJiYgbW9kZSA9PSBvdGhlci5t
b2RlOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWdTbG90Jikg
Y29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFJlZ1Nsb3Qm
IG90aGVyKSBjb25zdAogICAgICAgICB7CkBAIC00NDIsMTYgKzQyOCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm4gc2xvdDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNsb3RDb25zdCYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBzbG90ID09IG90aGVyLnNsb3QKLSAgICAgICAgICAgICAgICAmJiBj
b25zdGFudCA9PSBvdGhlci5jb25zdGFudDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3Bl
cmF0b3I8KGNvbnN0IFNsb3RDb25zdCYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBzbG90IDwgb3RoZXIuc2xvdCB8fCAoc2xvdCA9PSBvdGhlci5zbG90ICYmIGNv
bnN0YW50IDwgb3RoZXIuY29uc3RhbnQpOwotICAgICAgICB9CisgICAgICAgIGZyaWVuZCBhdXRv
IG9wZXJhdG9yPD0+KFNsb3RDb25zdCwgU2xvdENvbnN0KSA9IGRlZmF1bHQ7CiAKICAgICAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyS2luZC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJLaW5kLmgKaW5kZXggMTI1OGQ0ZWUxMzU4ZDgyNDdmNjdiMmQ3ZTE4
YmE1NGYxNzM4ZmY0Yi4uNjBkNGQ1ODVkYjM1YTBhYTIwODM0MmI4OWMxMTUwYjMyYTUyN2YwMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJLaW5kLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJLaW5kLmgKQEAgLTUxLDE2ICs1MSw3IEBA
IHN0cnVjdCBLaW5kIHsKICAgICB7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBLaW5kJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcGNvZGUgPT0g
b3RoZXIub3Bjb2RlCi0gICAgICAgICAgICAmJiBlZmZlY3RzID09IG90aGVyLmVmZmVjdHM7Ci0g
ICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBLaW5kJiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEtpbmQmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgCiAgICAgdW5z
aWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJUbXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1w
LmgKaW5kZXggMWVjMGYzNjIyNDE5MGZjOTYwYzNjZGRmZGI3NzZlNTk1NmI5ZWEyNy4uNmZkNTRh
NGVjMDI1M2FlNTBlYjFkM2ZmMTVlNWUxZThkMzNkOGIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclRtcC5oCkBAIC0xODUsMTUgKzE4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuICEhKnRoaXM7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRtcCYgb3Ro
ZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVl
OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUbXAmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgVG1wJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpclRtcFNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJUbXBTZXQuaAppbmRleCAxNmRkNWM5YzdiZTUzZTU1YTg2OGIwMWJiNGE3NmQyNTM4ODkwNWU0
Li5kZTQ1ZmNkMjk3MjRmMGUwZGMxMmM5Yjk2ZGJlZDM3OWNiNjVkYTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcFNldC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wU2V0LmgKQEAgLTk4LDE2ICs5OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1fZ3BJdGVyID09IG90aGVyLm1fZ3BJdGVyCi0gICAgICAgICAg
ICAgICAgJiYgbV9mcEl0ZXIgPT0gb3RoZXIubV9mcEl0ZXI7Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAg
fQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImKSBjb25zdCA9IGRlZmF1
bHQ7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdFZlY3Rvcjo6aXRlcmF0b3Ig
bV9ncEl0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNj
ZXNzQ2FzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaApp
bmRleCBmZTFjZmZiYzY1OTg1ZThjMTQ3OWEyY2I1MzRhMmYzODg4Zjc1M2E2Li4yZWU5YWQ2YjFi
YzA0M2I1MDQxM2FkZjlkODdmNmY0MWMzYWYzMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKQEAgLTM4MiwxNiArMzgyLDcgQEAgcHVibGljOgogCiAg
ICAgICAgICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV93cmFwcGVkID09IGJpdHdpc2VfY2FzdDxQb2x5bW9ycGhpY0FjY2Vzc0pJVFN0dWJSb3V0aW5l
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSk7IH0KIAotICAgICAgICAgICAgZnJpZW5kIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gYS5tX3dyYXBwZWQgPT0gYi5tX3dyYXBwZWQKLSAgICAg
ICAgICAgICAgICAgICAgJiYgYS5tX2Jhc2VHUFIgPT0gYi5tX2Jhc2VHUFIKLSAgICAgICAgICAg
ICAgICAgICAgJiYgYS5tX3ZhbHVlR1BSID09IGIubV92YWx1ZUdQUgotICAgICAgICAgICAgICAg
ICAgICAmJiBhLm1fZXh0cmFHUFIgPT0gYi5tX2V4dHJhR1BSCi0gICAgICAgICAgICAgICAgICAg
ICYmIGEubV9zdHViSW5mb0dQUiA9PSBiLm1fc3R1YkluZm9HUFIKLSAgICAgICAgICAgICAgICAg
ICAgJiYgYS5tX2FycmF5UHJvZmlsZUdQUiA9PSBiLm1fYXJyYXlQcm9maWxlR1BSCi0gICAgICAg
ICAgICAgICAgICAgICYmIGEubV91c2VkUmVnaXN0ZXJzID09IGIubV91c2VkUmVnaXN0ZXJzOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleSYpIGNv
bnN0ID0gZGVmYXVsdDsKIAogICAgICAgICAgICAgUG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91
dGluZSogbV93cmFwcGVkIHsgbnVsbHB0ciB9OwogICAgICAgICAgICAgR1BSUmVnIG1fYmFzZUdQ
UjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUlu
ZGV4LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbmRleC5oCmlu
ZGV4IGE4NGJkYTE2ZWZiN2NiN2MzMjVhYzZjMjA3YjA5MDczYzE4MjMwODMuLjhlMjRlNjc2MmQz
ZDQ4MmY4OTFjNzQxYmFiNDJmNDAwM2FiNWNmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUluZGV4LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW5kZXguaApAQCAtNjksMTQgKzY5LDcgQEAgcHVibGljOgog
CiAgICAgLy8gQ29tcGFyaXNvbiBvcGVyYXRvcnMuCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFja2VkQml0cyAhPSBpbnZhbGlkT2Zmc2V0ICYmIG1fcGFj
a2VkQml0cyAhPSBkZWxldGVkVmFsdWUoKS5vZmZzZXQoKTsgfQotICAgIGJvb2wgb3BlcmF0b3Ig
PT0oY29uc3QgQnl0ZWNvZGVJbmRleCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGFzQml0cygpID09
IG90aGVyLmFzQml0cygpOyB9Ci0gICAgYm9vbCBvcGVyYXRvciAhPShjb25zdCBCeXRlY29kZUlu
ZGV4JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLQotICAgIGJv
b2wgb3BlcmF0b3IgPChjb25zdCBCeXRlY29kZUluZGV4JiBvdGhlcikgY29uc3QgeyByZXR1cm4g
YXNCaXRzKCkgPCBvdGhlci5hc0JpdHMoKTsgfQotICAgIGJvb2wgb3BlcmF0b3IgPihjb25zdCBC
eXRlY29kZUluZGV4JiBvdGhlcikgY29uc3QgeyByZXR1cm4gYXNCaXRzKCkgPiBvdGhlci5hc0Jp
dHMoKTsgfQotICAgIGJvb2wgb3BlcmF0b3IgPD0oY29uc3QgQnl0ZWNvZGVJbmRleCYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIGFzQml0cygpIDw9IG90aGVyLmFzQml0cygpOyB9Ci0gICAgYm9vbCBv
cGVyYXRvciA+PShjb25zdCBCeXRlY29kZUluZGV4JiBvdGhlcikgY29uc3QgeyByZXR1cm4gYXNC
aXRzKCkgPj0gb3RoZXIuYXNCaXRzKCk7IH0KLQorICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+
KEJ5dGVjb2RlSW5kZXgsIEJ5dGVjb2RlSW5kZXgpID0gZGVmYXVsdDsKIAogICAgIHZvaWQgZHVt
cChXVEY6OlByaW50U3RyZWFtJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oCmluZGV4IDg5MGFiMjNjMDAwZGFkYmFhZDhk
YjRjNjNlZWUyNWFlNTViOGRiMDcuLmE3ZThkYTI5MjA0ZGQ4YTJjYjdiMmFiMTM5NzFkODVjMGI5
OWY2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVJld3JpdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
UmV3cml0ZXIuaApAQCAtOTUsMjYgKzk1LDkgQEAgcHVibGljOgogICAgIH07CiAKICAgICBzdHJ1
Y3QgSW5zZXJ0aW9uUG9pbnQgewotICAgICAgICBpbnQzMl90IGJ5dGVjb2RlT2Zmc2V0OworICAg
ICAgICB1aW50MzJfdCBieXRlY29kZU9mZnNldDsKICAgICAgICAgUG9zaXRpb24gcG9zaXRpb247
Ci0KLSAgICAgICAgSW5zZXJ0aW9uUG9pbnQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvZmZz
ZXQsIFBvc2l0aW9uIHBvcykKLSAgICAgICAgICAgIDogYnl0ZWNvZGVPZmZzZXQob2Zmc2V0KQot
ICAgICAgICAgICAgLCBwb3NpdGlvbihwb3MpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEluc2VydGlvblBvaW50JiBvdGhlcikgY29uc3QKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0ID09IG90aGVyLmJ5dGVjb2Rl
T2Zmc2V0KQotICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbiA8IG90aGVyLnBvc2l0aW9u
OwotICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0IDwgb3RoZXIuYnl0ZWNvZGVPZmZz
ZXQ7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5zZXJ0aW9u
UG9pbnQmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYnl0ZWNv
ZGVPZmZzZXQgPT0gb3RoZXIuYnl0ZWNvZGVPZmZzZXQgJiYgcG9zaXRpb24gPT0gb3RoZXIucG9z
aXRpb247Ci0gICAgICAgIH0KKyAgICAgICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oSW5zZXJ0
aW9uUG9pbnQsIEluc2VydGlvblBvaW50KSA9IGRlZmF1bHQ7CiAgICAgfTsKIAogcHJpdmF0ZToK
QEAgLTE4OSw3ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KG1f
Ynl0ZWNvZGVHZW5lcmF0b3IsIHdyaXRlciwgaW5jbHVkZUJyYW5jaCk7CiAgICAgICAgIGZ1bmN0
aW9uKGZyYWdtZW50KTsKICAgICAgICAgZnJhZ21lbnQuYWxpZ24oKTsKLSAgICAgICAgaW5zZXJ0
SW1wbChJbnNlcnRpb25Qb2ludChpbnN0cnVjdGlvbi5vZmZzZXQoKSwgUG9zaXRpb246OkJlZm9y
ZSksIGluY2x1ZGVCcmFuY2gsIFdURk1vdmUod3JpdGVyKSk7CisgICAgICAgIGluc2VydEltcGwo
eyBpbnN0cnVjdGlvbi5vZmZzZXQoKSwgUG9zaXRpb246OkJlZm9yZSB9LCBpbmNsdWRlQnJhbmNo
LCBXVEZNb3ZlKHdyaXRlcikpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0aW9u
PgpAQCAtMjAwLDEyICsxODMsMTIgQEAgcHVibGljOgogICAgICAgICBGcmFnbWVudCBmcmFnbWVu
dChtX2J5dGVjb2RlR2VuZXJhdG9yLCB3cml0ZXIsIGluY2x1ZGVCcmFuY2gpOwogICAgICAgICBm
dW5jdGlvbihmcmFnbWVudCk7CiAgICAgICAgIGZyYWdtZW50LmFsaWduKCk7Ci0gICAgICAgIGlu
c2VydEltcGwoSW5zZXJ0aW9uUG9pbnQoaW5zdHJ1Y3Rpb24ub2Zmc2V0KCksIFBvc2l0aW9uOjpB
ZnRlciksIGluY2x1ZGVCcmFuY2gsIFdURk1vdmUod3JpdGVyKSk7CisgICAgICAgIGluc2VydElt
cGwoeyBpbnN0cnVjdGlvbi5vZmZzZXQoKSwgUG9zaXRpb246OkFmdGVyIH0sIGluY2x1ZGVCcmFu
Y2gsIFdURk1vdmUod3JpdGVyKSk7CiAgICAgfQogCiAgICAgdm9pZCByZW1vdmVCeXRlY29kZShj
b25zdCBJbnN0cnVjdGlvblN0cmVhbTo6UmVmJiBpbnN0cnVjdGlvbikKICAgICB7Ci0gICAgICAg
IG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uIHsgSW5zZXJ0aW9uUG9pbnQoaW5zdHJ1Y3Rp
b24ub2Zmc2V0KCksIFBvc2l0aW9uOjpPcmlnaW5hbEJ5dGVjb2RlUG9pbnQpLCBJbnNlcnRpb246
OlR5cGU6OlJlbW92ZSwgSW5jbHVkZUJyYW5jaDo6Tm8sIGluc3RydWN0aW9uLT5zaXplKCksIHsg
fSB9KTsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24geyB7IGluc3RydWN0
aW9uLm9mZnNldCgpLCBQb3NpdGlvbjo6T3JpZ2luYWxCeXRlY29kZVBvaW50IH0sIEluc2VydGlv
bjo6VHlwZTo6UmVtb3ZlLCBJbmNsdWRlQnJhbmNoOjpObywgaW5zdHJ1Y3Rpb24tPnNpemUoKSwg
eyB9IH0pOwogICAgIH0KIAogICAgIHZvaWQgZXhlY3V0ZSgpOwpAQCAtMjE0LDEyICsxOTcsMTIg
QEAgcHVibGljOgogCiAgICAgaW50MzJfdCBhZGp1c3RBYnNvbHV0ZU9mZnNldChJbnN0cnVjdGlv
blN0cmVhbTo6T2Zmc2V0IGFic29sdXRlT2Zmc2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
anVzdEp1bXBUYXJnZXQoSW5zZXJ0aW9uUG9pbnQoMCwgUG9zaXRpb246OkVudHJ5UG9pbnQpLCBJ
bnNlcnRpb25Qb2ludChhYnNvbHV0ZU9mZnNldCwgUG9zaXRpb246OkxhYmVsUG9pbnQpKTsKKyAg
ICAgICAgcmV0dXJuIGFkanVzdEp1bXBUYXJnZXQoeyAwLCBQb3NpdGlvbjo6RW50cnlQb2ludCB9
LCB7IGFic29sdXRlT2Zmc2V0LCBQb3NpdGlvbjo6TGFiZWxQb2ludCB9KTsKICAgICB9CiAKLSAg
ICBpbnQzMl90IGFkanVzdEp1bXBUYXJnZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvcmln
aW5hbEJ5dGVjb2RlT2Zmc2V0LCBpbnQzMl90IG9yaWdpbmFsSnVtcFRhcmdldCkKKyAgICBpbnQz
Ml90IGFkanVzdEp1bXBUYXJnZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBvcmlnaW5hbEJ5
dGVjb2RlT2Zmc2V0LCB1aW50MzJfdCBvcmlnaW5hbEp1bXBUYXJnZXQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Qb2ludChvcmlnaW5hbEJ5dGVjb2Rl
T2Zmc2V0LCBQb3NpdGlvbjo6TGFiZWxQb2ludCksIEluc2VydGlvblBvaW50KG9yaWdpbmFsSnVt
cFRhcmdldCwgUG9zaXRpb246OkxhYmVsUG9pbnQpKTsKKyAgICAgICAgcmV0dXJuIGFkanVzdEp1
bXBUYXJnZXQoeyBvcmlnaW5hbEJ5dGVjb2RlT2Zmc2V0LCBQb3NpdGlvbjo6TGFiZWxQb2ludCB9
LCB7IG9yaWdpbmFsSnVtcFRhcmdldCwgUG9zaXRpb246OkxhYmVsUG9pbnQgfSk7CiAgICAgfQog
CiAgICAgdm9pZCBhZGp1c3RKdW1wVGFyZ2V0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAppbmRleCAzOTI4MGU5ZmFmY2MxM2FiODg5ZmM1ODZjZTMw
MDNiZTYwZGZkNWNhLi45MDM3YWRmNDAwYjFiNzkxMzFkOTI3OTNlY2ZkM2Q2NWMwZjFkZDI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaApAQCAtNjcs
MTQgKzY3LDE0IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2NhbGxlZShjYWxsZWUpCiAgICAgewog
ICAgIH0KLSAgICAKKwogICAgIENhbGxWYXJpYW50KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVl
VHlwZSkKICAgICAgICAgOiBtX2NhbGxlZShkZWxldGVkVG9rZW4oKSkKICAgICB7CiAgICAgfQot
ICAgIAorCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9j
YWxsZWU7IH0KLSAgICAKKwogICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5j
dGlvbiwgY2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19J
TkxJTkUgQ2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKICAgICB7CkBAIC04
Miw0MSArODIsNDEgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIENhbGxWYXJpYW50KGpz
Q2FzdDxKU0Z1bmN0aW9uKj4obV9jYWxsZWUpLT5leGVjdXRhYmxlKCkpOwogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQotICAgIAorCiAgICAgSlNDZWxsKiByYXdDYWxsZWVDZWxsKCkgY29u
c3QgeyByZXR1cm4gbV9jYWxsZWU7IH0KLSAgICAKKwogICAgIEludGVybmFsRnVuY3Rpb24qIGlu
dGVybmFsRnVuY3Rpb24oKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SW50ZXJuYWxGdW5jdGlvbio+KG1fY2FsbGVlLT52bSgpLCBtX2NhbGxlZSk7CiAgICAgfQot
ICAgIAorCiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24oKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2FsbGVlLT52bSgpLCBtX2NhbGxl
ZSk7CiAgICAgfQotICAgIAorCiAgICAgYm9vbCBpc0Nsb3N1cmVDYWxsKCkgY29uc3QgeyByZXR1
cm4gISFqc0R5bmFtaWNDYXN0PEV4ZWN1dGFibGVCYXNlKj4obV9jYWxsZWUtPnZtKCksIG1fY2Fs
bGVlKTsgfQotICAgIAorCiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUoKSBjb25zdAog
ICAgIHsKICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gdGhpcy0+ZnVuY3Rpb24o
KSkKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpOwogICAgICAgICBy
ZXR1cm4ganNEeW5hbWljQ2FzdDxFeGVjdXRhYmxlQmFzZSo+KG1fY2FsbGVlLT52bSgpLCBtX2Nh
bGxlZSk7CiAgICAgfQotICAgIAorCiAgICAgSlNDZWxsKiBub25FeGVjdXRhYmxlQ2FsbGVlKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFpc0Nsb3N1cmVDYWxsKCkpOwog
ICAgICAgICByZXR1cm4gbV9jYWxsZWU7CiAgICAgfQotICAgIAorCiAgICAgSW50cmluc2ljIGlu
dHJpbnNpY0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB0aGlzLT5leGVjdXRhYmxlKCkp
CiAgICAgICAgICAgICByZXR1cm4gZXhlY3V0YWJsZS0+aW50cmluc2ljRm9yKGtpbmQpOwogICAg
ICAgICByZXR1cm4gTm9JbnRyaW5zaWM7CiAgICAgfQotICAgIAorCiAgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQpAQCAtMTM3LDUw
ICsxMzcsMjIgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZUV4ZWN1dGFibGUt
PnNpZ25hdHVyZUZvcihraW5kKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAg
IAorCiAgICAgYm9vbCBmaW5hbGl6ZShWTSYpOwotICAgIAorCiAgICAgYm9vbCBtZXJnZShjb25z
dCBDYWxsVmFyaWFudCYpOwotICAgIAorCiAgICAgdm9pZCBmaWx0ZXIoVk0mLCBKU1ZhbHVlKTsK
LSAgICAKKwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLSAgICAKKwog
ICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fY2FsbGVlID09IGRlbGV0ZWRUb2tlbigpOwogICAgIH0KLSAgICAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fY2FsbGVlID09IG90aGVyLm1fY2FsbGVlOwotICAgIH0KLSAgICAKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLSAgICAKLSAgICBib29sIG9w
ZXJhdG9yPChjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9jYWxsZWUgPCBvdGhlci5tX2NhbGxlZTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBv
cGVyYXRvcj4oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG90aGVyIDwgKnRoaXM7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgq
dGhpcyA8IG90aGVyKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IENh
bGxWYXJpYW50JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBvdGhlciA8PSAq
dGhpczsKLSAgICB9Ci0gICAgCisKKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihDYWxsVmFy
aWFudCwgQ2FsbFZhcmlhbnQpID0gZGVmYXVsdDsKKwogICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFzaChtX2Nh
bGxlZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrSGFzaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0hhc2gu
aAppbmRleCBiODI4ZmU4MDhiNWQ2Yjc2YWQwMGUzNzYzNTBhNDIzMTMxNGQ4NjI2Li5jMTljMTlh
ZTg1ZWM2NjU4ZjNiMGFjNDc3NTIwMjlhYTE0OTg0NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmgKQEAgLTQyLDM1ICs0MiwyNSBAQCBjbGFz
cyBTb3VyY2VDb2RlOwogCiBjbGFzcyBDb2RlQmxvY2tIYXNoIHsKIHB1YmxpYzoKLSAgICBDb2Rl
QmxvY2tIYXNoKCkKLSAgICAgICAgOiBtX2hhc2goMCkKLSAgICB7Ci0gICAgfQotICAgIAotICAg
IGV4cGxpY2l0IENvZGVCbG9ja0hhc2godW5zaWduZWQgaGFzaCkKKyAgICBleHBsaWNpdCBDb2Rl
QmxvY2tIYXNoKHVuc2lnbmVkIGhhc2ggPSAwKQogICAgICAgICA6IG1faGFzaChoYXNoKQogICAg
IHsKICAgICB9Ci0gICAgCisKICAgICBDb2RlQmxvY2tIYXNoKGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICAKKwogICAgIGV4cGxpY2l0IENvZGVCbG9ja0hh
c2goY29uc3QgY2hhciopOwogCiAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9o
YXNoOyB9CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQot
ICAgIAorCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzaDsgfQotICAg
IAorCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0gICAgLy8gQ29t
cGFyaXNvbiBtZXRob2RzIHVzZWZ1bCBmb3IgYmlzZWN0aW9uLgotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDb2RlQmxvY2tIYXNoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gaGFzaCgpID09IG90
aGVyLmhhc2goKTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2RlQmxvY2tIYXNoJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gaGFzaCgpICE9IG90aGVyLmhhc2goKTsgfQotICAgIGJvb2wg
b3BlcmF0b3I8KGNvbnN0IENvZGVCbG9ja0hhc2gmIG90aGVyKSBjb25zdCB7IHJldHVybiBoYXNo
KCkgPCBvdGhlci5oYXNoKCk7IH0KLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBDb2RlQmxvY2tI
YXNoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gaGFzaCgpID4gb3RoZXIuaGFzaCgpOyB9Ci0gICAg
Ym9vbCBvcGVyYXRvcjw9KGNvbnN0IENvZGVCbG9ja0hhc2gmIG90aGVyKSBjb25zdCB7IHJldHVy
biBoYXNoKCkgPD0gb3RoZXIuaGFzaCgpOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IENv
ZGVCbG9ja0hhc2gmIG90aGVyKSBjb25zdCB7IHJldHVybiBoYXNoKCkgPj0gb3RoZXIuaGFzaCgp
OyB9Ci0gICAgCisKKyAgICAvLyBDb21wYXJpc29uIGZ1bmN0aW9ucyB1c2VmdWwgZm9yIGJpc2Vj
dGlvbi4KKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihDb2RlQmxvY2tIYXNoLCBDb2RlQmxv
Y2tIYXNoKSA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9oYXNoOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCmluZGV4IDM0OTcx
MzgxNGEzZWE2NGY1NjRiNTBjM2EyYjFkZGFlZmY3OTYxZTguLjliOTUzY2FjZjg5NTFmMGM3MGEw
OGEwZGMzMWNjNjgxYmU4YWYzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlT3JpZ2luLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVPcmlnaW4uaApAQCAtMTU1LDggKzE1NSw3IEBAIHB1YmxpYzoKICAgICBpbnQgc3RhY2tP
ZmZzZXQoKSBjb25zdDsKICAgICAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQ29kZU9yaWdpbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvZGVPcmlnaW4mKSBjb25z
dDsKICAgICAKICAgICAvLyBUaGlzIGNoZWNrcyBpZiB0aGUgdHdvIGNvZGUgb3JpZ2lucyBjb3Jy
ZXNwb25kIHRvIHRoZSBzYW1lIHN0YWNrIHRyYWNlIHNuaXBwZXRzLAogICAgIC8vIGJ1dCBpZ25v
cmUgd2hldGhlciB0aGUgSW5saW5lQ2FsbEZyYW1lJ3MgYXJlIGlkZW50aWNhbC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0LmgKaW5kZXggMjRkZTU2ZmQ3YTkzNWFmYzRjMjkzYzQ5ZDFlNGY4MWVlY2Y1Njhl
OS4uZWVlY2Y5NGRjODQzMjcxYWFmMzVhZjNhMjY3MjdmZWQyMTAwNzQ3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0LmgKQEAgLTExNSwxMSArMTE1LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0JiBsaHMsIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
JiByaHMpCi0gICAgewotICAgICAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsKLSAgICB9Ci0gICAg
CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9yT2JqZWN0KEpTT2JqZWN0KikgY29uc3Q7
CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gZm9yQ29uZGl0aW9uS2luZChQcm9wZXJ0eUNv
bmRpdGlvbjo6S2luZCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGVyYW5kcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
ZXJhbmRzLmgKaW5kZXggMDRjNTFlNWUxMTE3MWVkY2IxODVlMmY5NzlmNTk0MzA5MGUyMzkxYi4u
NDVkODQ0MzJiOWZkMWVlNzYyMjk2NzFlNGVkZjg1ZGU4N2E5OGM5OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wZXJhbmRzLmgKQEAgLTQwMSwxMSArNDAxLDYgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV92YWx1ZXMgPT0gb3RoZXIubV92YWx1ZXM7CiAgICAgfQogCi0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9wZXJhbmRzJiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgCiAgICAgdm9pZCBk
dW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25z
dDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5o
CmluZGV4IGEyOWI0YmY2OWRhNzQ3MTNiMWM2Mjg0YjUwM2E2NDFlOTYzYzdjNzkuLmNiYTg1OGYx
ZjJiOTA2ZjU2NmQ4ZjU1NGUwMzlmMmFlZWRlMGI2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCkBAIC00OCwxMSAr
NDgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXAoU3RydWN0dXJlKiBiYXNlU3RydWN0dXJl
LCBQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQ
b2x5UHJvdG9BY2Nlc3NDaGFpbiYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBQb2x5UHJvdG9BY2Nlc3NDaGFpbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBQb2x5UHJvdG9BY2Nlc3NDaGFpbiYpIGNvbnN0OwogCiAgICAgYm9vbCBuZWVkSW1wdXJlUHJv
cGVydHlXYXRjaHBvaW50KFZNJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNjZXNzLmgKaW5kZXggNjE3YWYwMGYyMjM4NDEzZDk3
NDU1OWM0ZWNkNzBmNDc3ODVkMDA0OS4uNGQwZmNjMGRhNzQ4MDkxZWQ5ZmRiNGIxYmViMjIzMGIw
MWNmMGYxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlt
b3JwaGljQWNjZXNzLmgKQEAgLTU4LDE5ICs1OCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIEdlbmVy
YXRlZEZpbmFsQ29kZSwgLy8gR2VuZXJhdGVkIHNvIG11Y2ggY29kZSB0aGF0IHdlIG5ldmVyIHdh
bnQgdG8gZ2VuZXJhdGUgY29kZSBhZ2Fpbi4KICAgICAgICAgUmVzZXRTdHViQW5kRmlyZVdhdGNo
cG9pbnRzIC8vIFdlIGZvdW5kIG91dCBzb21lIGRhdGEgdGhhdCBtYWtlcyB1cyB3YW50IHRvIHN0
YXJ0IG92ZXIgZnJlc2ggd2l0aCB0aGlzIHN0dWIuIEN1cnJlbnRseSwgdGhpcyBoYXBwZW5zIHdo
ZW4gd2UgZGV0ZWN0IHBvbHkgcHJvdG8uCiAgICAgfTsKLSAgICAKIAogICAgIEFjY2Vzc0dlbmVy
YXRpb25SZXN1bHQoKSA9IGRlZmF1bHQ7CiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdChBY2Nl
c3NHZW5lcmF0aW9uUmVzdWx0JiYpID0gZGVmYXVsdDsKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVz
dWx0JiBvcGVyYXRvcj0oQWNjZXNzR2VuZXJhdGlvblJlc3VsdCYmKSA9IGRlZmF1bHQ7Ci0gICAg
CisKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KEtpbmQga2luZCkKICAgICAgICAgOiBtX2tp
bmQoa2luZCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgIT0gR2VuZXJhdGVk
TmV3Q29kZSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGtpbmQgIT0gR2VuZXJhdGVkRmluYWxD
b2RlKTsKICAgICB9Ci0gICAgCisKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KEtpbmQga2lu
ZCwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiBjb2RlKQogICAg
ICAgICA6IG1fa2luZChraW5kKQogICAgICAgICAsIG1fY29kZShjb2RlKQpAQCAtNzgsMjIgKzc3
LDE3IEBAIHB1YmxpYzoKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoa2luZCA9PSBHZW5lcmF0ZWRO
ZXdDb2RlIHx8IGtpbmQgPT0gR2VuZXJhdGVkRmluYWxDb2RlKTsKICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoY29kZSk7CiAgICAgfQotICAgIAorCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFj
Y2Vzc0dlbmVyYXRpb25SZXN1bHQmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fa2luZCA9PSBvdGhlci5tX2tpbmQgJiYgbV9jb2RlID09IG90aGVyLm1fY29kZTsKICAgICB9
Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQm
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwot
ICAgIH0KLSAgICAKKwogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuICp0aGlzICE9IEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQoKTsKICAgICB9
Ci0gICAgCisKICAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICAK
ICAgICBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SklUU3R1YlJvdXRpbmVQdHJUYWc+JiBj
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCmluZGV4IDI0MzUxOWFlMTBjNTU4NzVi
NTAzY2Q2NWFjYzE2N2M3NWU0ZGU4NTguLmQxMWZjNTA0MTQ0NTNlM2Y3MjgxZjcxYjBhODU3Zjgy
OGViYTgxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oCkBAIC0zMTUsMTUgKzMxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICByZXR1cm4gaGFzaDsKICAgICAgICAgfQogCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
PT0oY29uc3QgQnVmZmVyZWRTdHJ1Y3R1cmUmIGEsIGNvbnN0IEJ1ZmZlcmVkU3RydWN0dXJlJiBi
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYS5tX3N0cnVjdHVyZSA9PSBiLm1fc3Ry
dWN0dXJlICYmIGEubV9ieVZhbElkID09IGIubV9ieVZhbElkOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCdWZmZXJlZFN0cnVjdHVyZSYgYSwgY29u
c3QgQnVmZmVyZWRTdHJ1Y3R1cmUmIGIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAh
KGEgPT0gYik7Ci0gICAgICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJ1ZmZl
cmVkU3RydWN0dXJlJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIHN0cnVjdCBIYXNoIHsK
ICAgICAgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEJ1ZmZlcmVkU3RydWN0dXJl
JiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJT
YW1wbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIu
Y3BwCmluZGV4IDVmNjYzYjJmZjVhNWUzY2UwOGNlNDEyOTViODBhOWI3MTA2Yzg5NzkuLjU0NmNh
ZDc2ZWM4OGQ3MTA1NDFlNmEzZTU5ODVmYTY0OTVmYjRmOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdXBlclNhbXBsZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+CiAjaW5jbHVkZSA8
d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKaW5kZXggZmI5MWFmMTkwMmIxNjE3ODRjYWNmYWFi
YmYzNDY2NjJkZGZhNjQ3NS4uZjZhMjkzZGExZWU5NzhlMzZhYTBjNmQwZGRhMWJhOGNhMmVkM2Fh
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdp
c3Rlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0
ZXIuaApAQCAtNzgsMTIgKzc4LDcgQEAgcHVibGljOgogICAgIGludCBvZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlcjsgfQogICAgIGludCBvZmZzZXRJbkJ5dGVzKCkgY29u
c3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgKiBzaXplb2YoUmVnaXN0ZXIpOyB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oVmlydHVhbFJlZ2lzdGVyIG90aGVyKSBjb25zdCB7IHJldHVybiBt
X3ZpcnR1YWxSZWdpc3RlciA9PSBvdGhlci5tX3ZpcnR1YWxSZWdpc3RlcjsgfQotICAgIGJvb2wg
b3BlcmF0b3IhPShWaXJ0dWFsUmVnaXN0ZXIgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmlydHVh
bFJlZ2lzdGVyICE9IG90aGVyLm1fdmlydHVhbFJlZ2lzdGVyOyB9Ci0gICAgYm9vbCBvcGVyYXRv
cjwoVmlydHVhbFJlZ2lzdGVyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rl
ciA8IG90aGVyLm1fdmlydHVhbFJlZ2lzdGVyOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj4oVmlydHVh
bFJlZ2lzdGVyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA+IG90aGVy
Lm1fdmlydHVhbFJlZ2lzdGVyOyB9Ci0gICAgYm9vbCBvcGVyYXRvcjw9KFZpcnR1YWxSZWdpc3Rl
ciBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPD0gb3RoZXIubV92aXJ0
dWFsUmVnaXN0ZXI7IH0KLSAgICBib29sIG9wZXJhdG9yPj0oVmlydHVhbFJlZ2lzdGVyIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciA+PSBvdGhlci5tX3ZpcnR1YWxSZWdp
c3RlcjsgfQorICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KFZpcnR1YWxSZWdpc3RlciwgVmly
dHVhbFJlZ2lzdGVyKSA9IGRlZmF1bHQ7CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJh
dG9yKyhpbnQgdmFsdWUpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKaW5kZXggMmU5MDUyMDE2MjIwZjA5NjFkOTk2MGEyYzhi
ZjY2MzAyZDBkN2IwNS4uMDI2NzRiNzUzOTc2MjIzYzg4MDM3NDFkNDEwMWVlYTYzNjA1YjExNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBA
IC03MCw4ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7
IG1fbm9kZSA9IG1fbm9kZS0+bmV4dCgpOyByZXR1cm4gKnRoaXM7IH0KICAgICAgICAgLy8gcG9z
dGZpeCArKyBpbnRlbnRpb25hbGx5IG9taXR0ZWQKIAotICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9u
b2RlOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG1fbm9kZSAhPSBvdGhlci5tX25vZGU7IH0KKyAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgRGVidWdnZXJTY29wZSogbV9ub2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RIZWFwLmgKaW5kZXggZmY4NGY2YjdjMGQ5MGZjNGNiMTRjNzg3Y2QwZjFi
NDNlN2RiZGNhOS4uYTZmMWI4MjJkOTJmNWI2YjYwZmJiOTk2MDFjZDAyOGUzZTE2Mzk4MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCkBAIC0xNTMsMTYg
KzE1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90
Pih2YWx1ZSgpKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFBheWxvYWQmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbV9pc1RvcCA9PSBvdGhlci5tX2lzVG9wCi0gICAgICAgICAgICAgICAgJiYgbV92YWx1ZSA9
PSBvdGhlci5tX3ZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgUGF5bG9hZCYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgUGF5bG9hZCYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAgICAgCiAgICAgICAg
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IFBheWxvYWQmIG90aGVyKSBjb25zdAogICAgICAgICB7CkBA
IC0yOTEsMTUgKzI4Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFdURjo6SW50SGFzaDxp
bnQ2NF90Pjo6aGFzaChtX3ZhbHVlKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEFic3RyYWN0SGVhcCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgQWJzdHJhY3RIZWFwJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFi
c3RyYWN0SGVhcCYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAKICAgICBib29sIG9wZXJhdG9yPChj
b25zdCBBYnN0cmFjdEhlYXAmIG90aGVyKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKaW5kZXggZTg2OWExYjJlYzFjMmU5YWI5OTky
NWVjYjNlMmQ5NjE5ZWI3ZDY0MC4uNjNjYjE1NTg3MDZmM2M2NjQ1YjdjZGU4ZTM3MjlhNjg2MTI2
YzI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgK
QEAgLTI3MywxMCArMjczLDYgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAgICAg
JiYgbV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmUKICAgICAgICAgICAgICYmIG1fdmFs
dWUgPT0gb3RoZXIubV92YWx1ZTsKICAgICB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFi
c3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOwotICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWVyZ2UoY29u
c3QgQWJzdHJhY3RWYWx1ZSYgb3RoZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlQ2xvYmJlckVwb2NoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2guaAppbmRleCA0MDIx
MDU5ZGM0MmZlYmM3NDlhY2VmYTlhNGRlNjQ0ZjUxYTc4YmJmLi4wYWVhOTczY2YxZjc4ZTgzMzM1
YTM3YmFmMDZmYzZlZWFjMzY2MDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2guaApAQCAtNjQsMTUgKzY0LDcg
QEAgcHVibGljOgogICAgICAgICBtX3ZhbHVlIHw9IHdhdGNoZWRGbGFnOwogICAgIH0KICAgICAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWJzdHJhY3RWYWx1ZUNsb2JiZXJFcG9jaCYgb3Ro
ZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVl
OwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQWJzdHJhY3RWYWx1ZUNs
b2JiZXJFcG9jaCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBYnN0cmFjdFZhbHVl
Q2xvYmJlckVwb2NoJikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAgIFN0cnVjdHVyZUNsb2Ji
ZXJTdGF0ZSBzdHJ1Y3R1cmVDbG9iYmVyU3RhdGUoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCmluZGV4IGRmNzVjNzg5MGQ2NGFiZjJmYTczOTg4
Y2I5M2JlNWEzNmE4ZmM1MjQuLmFhZjkyMmI5ODA4Y2VjMGU5ZDBmM2UwYmMxODg2OTZkNzU2OGRm
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaApAQCAtNTQwLDEw
ICs1NDAsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAmJiBtYXlCZUxhcmdlVHlwZWRBcnJheSgp
ID09IG90aGVyLm1heUJlTGFyZ2VUeXBlZEFycmF5KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBBcnJheU1vZGUmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
QXJyYXlNb2RlKHVuc2lnbmVkIHdvcmQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXZhaWxhYmlsaXR5LmgKaW5kZXggNmFiZjRjZGU4MjI0MTQ4NGVkNjNkNTU1MmM1ZTc2
NGQxYTlmMWQ3Zi4uYjljNGZhYzVjYTNkZmYwY2U0YTQ4ODM2Njg2YzczYWYzNGE5NTRlMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5oCkBAIC0xMTgsMTYg
KzExOCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuIG5vZGVJc1VuYXZhaWxhYmxlKCkgJiYgZmx1c2hlZEF0KCkuZm9ybWF0KCkgPT0gQ29uZmxp
Y3RpbmdGbHVzaDsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF2YWlsYWJpbGl0eSYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9k
ZQotICAgICAgICAgICAgJiYgbV9mbHVzaGVkQXQgPT0gb3RoZXIubV9mbHVzaGVkQXQ7Ci0gICAg
fQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdmFpbGFiaWxpdHkmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXZhaWxhYmlsaXR5JikgY29uc3QgPSBkZWZhdWx0Owog
ICAgIAogICAgIEF2YWlsYWJpbGl0eSBtZXJnZShjb25zdCBBdmFpbGFiaWxpdHkmIG90aGVyKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxv
Y2tTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tTZXQuaAppbmRleCA2
MGI0NDk2ZDA4NGI5N2Q3ODY1OWZhNWFhNDQ3N2FiNmRlZWZhZTg5Li40YWY2YjVhYWY0MjRiNjJi
NTEwNzI4ZGRmNGYxNjg4MzU5MWZjNzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jsb2NrU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
bG9ja1NldC5oCkBAIC03OSwxMSArNzksNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
bV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KLSAgICAgICAg
CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIEJsb2NrU2V0OwogICAgICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFBy
b3BlcnR5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9w
ZXJ0eS5oCmluZGV4IDFhNTI4MDY4YzZiZDA4YTgzMjdiOTI1Mjc4ZjU2Yjc3NjFlYWI2OTQuLjY0
YzlhZjFlOTUyMjE4MjFlYjAxYjg4ODgwZDAzYTY2YzdkMzJmZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnR5LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydHkuaApAQCAtNTYs
MTUgKzU2LDcgQEAgcHVibGljOgogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBj
b25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdDsgfQogICAgIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXJOdW1iZXI7IH0KIAotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBEZXNpcmVkR2xvYmFsUHJvcGVydHkmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0ID09IG90aGVyLm1fZ2xvYmFsT2JqZWN0
ICYmIG1faWRlbnRpZmllck51bWJlciA9PSBvdGhlci5tX2lkZW50aWZpZXJOdW1iZXI7Ci0gICAg
fQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERlc2lyZWRHbG9iYWxQcm9wZXJ0eSYgb3Ro
ZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAg
fQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEZXNpcmVkR2xvYmFsUHJvcGVydHkmKSBjb25z
dCA9IGRlZmF1bHQ7CiAKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCmluZGV4IDRhMjU1YjA2MDg2MTcy
N2ZmYzIzYjkyM2FjZTAyNDkxMTIwMjczMjQuLjQ2NmNjMTFjMjE4OTYwZGVlMDk5ZmUzN2JlMjgx
MWRjNjE3MzZlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRn
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCkBAIC0xNjgsMTAg
KzE2OCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbm9kZSA9PSBvdGhlci5tX25vZGUg
JiYgbV9lbmNvZGVkV29yZCA9PSBvdGhlci5tX2VuY29kZWRXb3JkOwogI2VuZGlmCiAgICAgfQot
ICAgIGJvb2wgb3BlcmF0b3IhPShFZGdlIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKICAgICAKQEAgLTIzMSwxOCArMjI3LDYgQEAgaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShFZGdlIGVkZ2UsIE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIGVkZ2Uubm9kZSgp
ID09IG5vZGU7CiB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KE5vZGUqIG5vZGUsIEVkZ2UgZWRn
ZSkKLXsKLSAgICByZXR1cm4gZWRnZS5ub2RlKCkgPT0gbm9kZTsKLX0KLWlubGluZSBib29sIG9w
ZXJhdG9yIT0oRWRnZSBlZGdlLCBOb2RlKiBub2RlKQotewotICAgIHJldHVybiBlZGdlLm5vZGUo
KSAhPSBub2RlOwotfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShOb2RlKiBub2RlLCBFZGdlIGVk
Z2UpCi17Ci0gICAgcmV0dXJuIGVkZ2Uubm9kZSgpICE9IG5vZGU7Ci19CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdFcG9jaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFcG9jaC5oCmluZGV4IDY4
ODIzNDAxODc3YzZkY2RlOGIwNGM0ZmRhNzE2MWM3ZWJlOGFkY2MuLmMxZmRkZmY2MTViMjc1Mzdj
MjNkZGM3YzBjMDNmYzkxODg4N2FmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRXBvY2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Vwb2No
LmgKQEAgLTM5LDg0ICszOSw1NiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9lcG9jaChzX25vbmUp
CiAgICAgewogICAgIH0KLSAgICAKKwogICAgIHN0YXRpYyBFcG9jaCBmcm9tVW5zaWduZWQodW5z
aWduZWQgdmFsdWUpCiAgICAgewogICAgICAgICBFcG9jaCByZXN1bHQ7CiAgICAgICAgIHJlc3Vs
dC5tX2Vwb2NoID0gdmFsdWU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAor
CiAgICAgdW5zaWduZWQgdG9VbnNpZ25lZCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
bV9lcG9jaDsKICAgICB9Ci0gICAgCisKICAgICBzdGF0aWMgRXBvY2ggZmlyc3QoKQogICAgIHsK
ICAgICAgICAgRXBvY2ggcmVzdWx0OwogICAgICAgICByZXN1bHQubV9lcG9jaCA9IHNfZmlyc3Q7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCiAgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZXBvY2ggPT0gc19ub25lOwogICAg
IH0KLSAgICAKKwogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuICEhKnRoaXM7CiAgICAgfQotICAgIAorCiAgICAgRXBvY2ggbmV4dCgpIGNv
bnN0CiAgICAgewogICAgICAgICBFcG9jaCByZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5tX2Vwb2No
ID0gbV9lcG9jaCArIDE7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCiAg
ICAgdm9pZCBidW1wKCkKICAgICB7CiAgICAgICAgICp0aGlzID0gbmV4dCgpOwogICAgIH0KLSAg
ICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXBvY2gmIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fZXBvY2ggPT0gb3RoZXIubV9lcG9jaDsKLSAgICB9Ci0gICAgCi0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVwb2NoJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVy
YXRvcjwoY29uc3QgRXBvY2gmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
ZXBvY2ggPCBvdGhlci5tX2Vwb2NoOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPihj
b25zdCBFcG9jaCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gb3RoZXIgPCAq
dGhpczsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IEVwb2NoJiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID4gb3RoZXIpOwotICAgIH0K
LSAgICAKLSAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgRXBvY2gmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPCBvdGhlcik7Ci0gICAgfQotICAgIAorCisgICAg
ZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oRXBvY2gsIEVwb2NoKSA9IGRlZmF1bHQ7CisKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLSAgICAKKwogcHJpdmF0ZToKICAgICBzdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHNfbm9uZSA9IDA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBzX2ZpcnN0ID0gMTsKLSAgICAKKwogICAgIHVuc2lnbmVkIG1fZXBvY2g7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoZWRBdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaGVkQXQuaAppbmRleCAxMWFjZTQ1NDll
NDk0ZWZhNmMwN2E4NmQxYTI5YjdiNmQxNjA3NmZjLi5lNzI3OGIxNmQ0MjE5OTEzN2MwN2Y1Y2Qy
MjhiMTc2Mjc2MTYyODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZsdXNoZWRBdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hlZEF0
LmgKQEAgLTM4LDEzICszOCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9mb3JtYXQoRGVhZEZs
dXNoKQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBleHBsaWNpdCBGbHVzaGVkQXQoRmx1c2hG
b3JtYXQgZm9ybWF0KQogICAgICAgICA6IG1fZm9ybWF0KGZvcm1hdCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChmb3JtYXQgPT0gRGVhZEZsdXNoIHx8IGZvcm1hdCA9PSBDb25mbGljdGluZ0ZsdXNo
KTsKICAgICB9Ci0gICAgCisKICAgICBGbHVzaGVkQXQoRmx1c2hGb3JtYXQgZm9ybWF0LCBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogICAgICAgICA6IG1fZm9ybWF0KGZvcm1hdCkK
ICAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXIpCkBAIC01MiwyMCAr
NTIsMTQgQEAgcHVibGljOgogICAgICAgICBpZiAoZm9ybWF0ID09IERlYWRGbHVzaCkKICAgICAg
ICAgICAgIEFTU0VSVCghdmlydHVhbFJlZ2lzdGVyLmlzVmFsaWQoKSk7CiAgICAgfQotICAgIAor
CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdCA9PSBEZWFkRmx1
c2g7IH0KLSAgICAKKwogICAgIEZsdXNoRm9ybWF0IGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9ybWF0OyB9CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcigpIGNvbnN0IHsg
cmV0dXJuIG1fdmlydHVhbFJlZ2lzdGVyOyB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZsdXNoZWRBdCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9mb3Jt
YXQgPT0gb3RoZXIubV9mb3JtYXQKLSAgICAgICAgICAgICYmIG1fdmlydHVhbFJlZ2lzdGVyID09
IG90aGVyLm1fdmlydHVhbFJlZ2lzdGVyOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgRmx1c2hlZEF0JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7IH0KLSAgICAKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbHVzaGVkQXQmKSBjb25z
dCA9IGRlZmF1bHQ7CisKICAgICBGbHVzaGVkQXQgbWVyZ2UoY29uc3QgRmx1c2hlZEF0JiBvdGhl
cikgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghKnRoaXMpCkBAIC03NiwxMCArNzAsMTAgQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgICByZXR1cm4gRmx1c2hl
ZEF0KENvbmZsaWN0aW5nRmx1c2gpOwogICAgIH0KLSAgICAKKwogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1
bXBDb250ZXh0KikgY29uc3Q7Ci0gICAgCisKIHByaXZhdGU6CiAgICAgRmx1c2hGb3JtYXQgbV9m
b3JtYXQ7CiAgICAgVmlydHVhbFJlZ2lzdGVyIG1fdmlydHVhbFJlZ2lzdGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDFiZWM4ZGVlZDlkYmRiYTUwN2Q5YTNmYjFiMDM5
ZTI2ZWUxYWRkNzcuLjQwYjk3YWQ2YmEwOTZmZTk2ZmY3ZWFlYTI5MTU4NzRjNzMxNWI3MjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTcyMSwxMSArNzIxLDYgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
CiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBCbG9ja0luZGV4IGZpbmROZXh0KEJsb2Nr
SW5kZXggaW5kZXgpCiAgICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCmlu
ZGV4IGQ4NmRlMGU4MDUxMzE1ZTk1N2ZmYTQzYWYzZDRkMWEzZGFkNzMxMTQuLjA5Y2UyOTYwMDRj
MWI3MDhkYzNhNzc5OTY3MWQ5NmI2MDQ0ZGNjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50ZWdlclJhbmdlT3B0aW1pemF0aW9uUGhhc2Uu
Y3BwCkBAIC0yNDIsMjggKzI0Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVsYXRpb25zaGlwJiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzYW1lTm9kZXNBcyhvdGhlcikKLSAgICAg
ICAgICAgICYmIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYmIG1fb2Zmc2V0
ID09IG90aGVyLm1fb2Zmc2V0OwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgUmVsYXRpb25zaGlwJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUmVs
YXRpb25zaGlwJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChtX2xlZnQgIT0gb3Ro
ZXIubV9sZWZ0KQotICAgICAgICAgICAgcmV0dXJuIG1fbGVmdCA8IG90aGVyLm1fbGVmdDsKLSAg
ICAgICAgaWYgKG1fcmlnaHQgIT0gb3RoZXIubV9yaWdodCkKLSAgICAgICAgICAgIHJldHVybiBt
X3JpZ2h0IDwgb3RoZXIubV9yaWdodDsKLSAgICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5tX2tp
bmQpCi0gICAgICAgICAgICByZXR1cm4gbV9raW5kIDwgb3RoZXIubV9raW5kOwotICAgICAgICBy
ZXR1cm4gbV9vZmZzZXQgPCBvdGhlci5tX29mZnNldDsKLSAgICB9CisgICAgZnJpZW5kIGF1dG8g
b3BlcmF0b3I8PT4oUmVsYXRpb25zaGlwLCBSZWxhdGlvbnNoaXApID0gZGVmYXVsdDsKICAgICAK
ICAgICAvLyBJZiBwb3NzaWJsZSwgcmV0dXJucyBhIGZvcm0gb2YgdGhpcyByZWxhdGlvbnNoaXAg
d2hlcmUgdGhlIGdpdmVuIG5vZGUgaXMgdGhlIGxlZnQKICAgICAvLyBzaWRlLiBSZXR1cm5zIGEg
bnVsbCByZWxhdGlvbnNoaXAgaWYgdGhpcyByZWxhdGlvbnNoaXAgY2Fubm90IHNheSBhbnl0aGlu
ZyBhYm91dCB0aGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xh
enlOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlOb2RlLmgKaW5kZXgg
YjNmZmY5NjU4YTVkZWYyMGI5MDAwYTE2NzI1ZjExMmQzOTU0YTA3Ny4uYzUzY2Q0NjM3ZWMxMTM3
OWEyMTA4MzhjYjVhMzc1YWU4NzI3ZjRkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMYXp5Tm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TGF6eU5vZGUuaApAQCAtMTIyLDExICsxMjIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X25vZGUgPT0gb3RoZXIubV9ub2RlOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBMYXp5Tm9kZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Ci0gICAgfQotCiAgICAgTm9kZSogZW5zdXJlSXNOb2RlKEluc2VydGlvblNldCYg
aW5zZXJ0aW9uU2V0LCBCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgbm9kZUluZGV4KQogICAg
IHsKICAgICAgICAgaWYgKCFtX25vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR01pbmlmaWVkSUQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWlu
aWZpZWRJRC5oCmluZGV4IDE2NzI4NjEwMjcwMGJjN2I2NzQ2YzY0NzE4ZGI1ZTM5NzI0NzMyNTgu
LjgxNTgyYzVmNzEyYTE5N2RjZWFhMGJkYzFlMzBkNjYxZjNlMzQ5ZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWRJRC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWluaWZpZWRJRC5oCkBAIC00NSwxMiArNDUsNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2luZGV4LmdldCgp
ID09IGludmFsaWRJbmRleCgpOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1p
bmlmaWVkSUQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2luZGV4LmdldCgpID09IG90aGVyLm1f
aW5kZXguZ2V0KCk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTWluaWZpZWRJRCYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXguZ2V0KCkgIT0gb3RoZXIubV9pbmRleC5nZXQoKTsg
fQotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IE1pbmlmaWVkSUQmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX2luZGV4LmdldCgpIDwgb3RoZXIubV9pbmRleC5nZXQoKTsgfQotICAgIGJvb2wgb3Bl
cmF0b3I+KGNvbnN0IE1pbmlmaWVkSUQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2luZGV4Lmdl
dCgpID4gb3RoZXIubV9pbmRleC5nZXQoKTsgfQotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBN
aW5pZmllZElEJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmRleC5nZXQoKSA8PSBvdGhlci5t
X2luZGV4LmdldCgpOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IE1pbmlmaWVkSUQmIG90
aGVyKSBjb25zdCB7IHJldHVybiBtX2luZGV4LmdldCgpID49IG90aGVyLm1faW5kZXguZ2V0KCk7
IH0KKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihNaW5pZmllZElELCBNaW5pZmllZElEKSA9
IGRlZmF1bHQ7CiAgICAgCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6
SW50SGFzaDx1bnNpZ25lZD46Omhhc2gobV9pbmRleC5nZXQoKSk7IH0KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggODY2ZjYzZGIzZGYwODBmZmFhNzAyNDIwNGIyYjUx
ZjI1YjBlNzE2OC4uODBhZWFkYzJjOTFiMzMwODYzZWMxZDYxMGU3ZDQxMWE5Y2ZmMjQzNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTE3MjEsMTAgKzE3MjEsNiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgICAgICB9CiAgICAgICAgIHByaXZh
dGU6CiAgICAgICAgICAgICBOb2RlKiBtX3Rlcm1pbmFsOwogICAgICAgICAgICAgdW5zaWduZWQg
bV9pbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZs
b3dQcm9qZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbG93UHJv
amVjdGlvbi5oCmluZGV4IDM0OTcxZWFiZTNmOTY1ZjQ3YzI2ZTU2YTliNWEzMWIwNzk0YTliZGUu
LjgxOTdjM2M5MzExNzllMjFiMjdjYjAwOTE1NjQyMjQ0MWQ3YjEzYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZsb3dQcm9qZWN0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxvd1Byb2plY3Rpb24uaApAQCAtNzIsMzgg
KzcyLDE2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fd29yZDsKICAgICB9CiAgICAgCi0g
ICAgYm9vbCBvcGVyYXRvcj09KE5vZGVGbG93UHJvamVjdGlvbiBvdGhlcikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3dvcmQgPT0gb3RoZXIubV93b3JkOwotICAgIH0KLSAgICAKLSAg
ICBib29sIG9wZXJhdG9yIT0oTm9kZUZsb3dQcm9qZWN0aW9uIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLSAgICAKLSAgICBib29s
IG9wZXJhdG9yPChOb2RlRmxvd1Byb2plY3Rpb24gb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICBpZiAoa2luZCgpICE9IG90aGVyLmtpbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBraW5kKCkg
PCBvdGhlci5raW5kKCk7Ci0gICAgICAgIHJldHVybiBub2RlKCkgPCBvdGhlci5ub2RlKCk7Ci0g
ICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I+KE5vZGVGbG93UHJvamVjdGlvbiBvdGhlcikg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBvdGhlciA8ICp0aGlzOwotICAgIH0KLSAgICAK
LSAgICBib29sIG9wZXJhdG9yPD0oTm9kZUZsb3dQcm9qZWN0aW9uIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPiBvdGhlcik7Ci0gICAgfQotICAgIAotICAgIGJv
b2wgb3BlcmF0b3I+PShOb2RlRmxvd1Byb2plY3Rpb24gb3RoZXIpIGNvbnN0CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE5vZGVGbG93UHJvamVjdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKKwor
ICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KE5vZGVGbG93UHJvamVjdGlvbiBhLCBOb2RlRmxv
d1Byb2plY3Rpb24gYikKICAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzIDwgb3RoZXIpOwor
ICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBpbnRlbnRpb25hbGx5IHNvcnRzIGJ5IHRoZSBhZGRy
ZXNzIG9mIHRoZSBub2RlIHBvaW50ZXIuCisgICAgICAgIGlmIChhLmtpbmQoKSAhPSBiLmtpbmQo
KSkKKyAgICAgICAgICAgIHJldHVybiBhLmtpbmQoKSA8PT4gYi5raW5kKCk7CisgICAgICAgIHJl
dHVybiBhLm5vZGUoKSA8PT4gYi5ub2RlKCk7CiAgICAgfQotICAgIAorCiAgICAgYm9vbCBpc0hh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gKnRoaXMg
PT0gTm9kZUZsb3dQcm9qZWN0aW9uKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZU9yaWdpbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlT3JpZ2luLmgKaW5kZXggNzZiNzQ3ZTNjZDdkMzhi
YjJmYTYxZjM5MGFlNmNmN2IyNjVkYTIyMy4uMTIxZTNlZjZjNDg4N2Q5ZGZmZjI2NjE2ZWUzOTZh
ODU3NjE1YjcyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
T3JpZ2luLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlT3JpZ2luLmgK
QEAgLTExMywxMSArMTEzLDYgQEAgc3RydWN0IE5vZGVPcmlnaW4gewogICAgICAgICAgICAgJiYg
ZXhpdE9LID09IG90aGVyLmV4aXRPSzsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgTm9kZU9yaWdpbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7Ci0gICAgfQotCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CiAKICAgICAvLyBVc2VkIGZvciBkZXRlcm1pbmluZyB3aGF0IGJ5dGVjb2RlIHRoaXMgY2FtZSBm
cm9tLiBUaGlzIGlzIGltcG9ydGFudCBmb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCmluZGV4
IDFmNDE4MzE4YTRjMGRlYzZkMmU5OWQ0MDlmNzFkYWZhNDY5N2IyZDEuLjIyOWZiMWUzYTQ1Nzhi
ODk1MmQ1YjVkYjk3MGUxYjc1YjkwMjA4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcApA
QCAtMjY4LDE5ICsyNjgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2tpbmQgPT0gS2lu
ZDo6UmVnRXhwT2JqZWN0OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbGxv
Y2F0aW9uJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkZW50aWZpZXIg
PT0gb3RoZXIubV9pZGVudGlmaWVyCi0gICAgICAgICAgICAmJiBtX2tpbmQgPT0gb3RoZXIubV9r
aW5kCi0gICAgICAgICAgICAmJiBtX2ZpZWxkcyA9PSBvdGhlci5tX2ZpZWxkcwotICAgICAgICAg
ICAgJiYgbV9zdHJ1Y3R1cmVzID09IG90aGVyLm1fc3RydWN0dXJlcwotICAgICAgICAgICAgJiYg
bV9zdHJ1Y3R1cmVzRm9yTWF0ZXJpYWxpemF0aW9uID09IG90aGVyLm1fc3RydWN0dXJlc0Zvck1h
dGVyaWFsaXphdGlvbjsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQWxsb2Nh
dGlvbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbGxvY2F0aW9uJikgY29uc3Qg
PSBkZWZhdWx0OwogCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAg
ewpAQCAtNjQzLDExICs2MzEsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAmJiBtX3BvaW50ZXJz
ID09IG90aGVyLm1fcG9pbnRlcnM7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IExvY2FsSGVhcCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Ci0gICAgfQotCiAgICAgY29uc3QgSGFzaE1hcDxOb2RlKiwgQWxsb2NhdGlvbj4m
IGFsbG9jYXRpb25zKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25z
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBM
b2NhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9tb3RlZEhlYXBMb2Nh
dGlvbi5oCmluZGV4IDRmMTI1MjMzODQyMTUxNDk3NjEyZWExOGY3YmY1NWU0MzhiMTViMDIuLjY1
MDAxMTI3M2NjNTgyMDdlZDQ2MjZmMDUwYzQ0ZmIxNTZmNThlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmgKQEAgLTg3LDI4
ICs4NywxOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBt
X2tpbmQgPT0gSW52YWxpZFByb21vdGVkTG9jYXRpb25LaW5kOyB9CiAKICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISEqdGhpczsgfQotICAgIAorCiAgICAgUHJv
bW90ZWRMb2NhdGlvbktpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIHVu
c2lnbmVkIGluZm8oKSBjb25zdCB7IHJldHVybiBtX2luZm87IH0KLSAgICAKKwogICAgIHVuc2ln
bmVkIGltbTEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9raW5kKTsg
fQogICAgIHVuc2lnbmVkIGltbTIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50MzJf
dD4obV9pbmZvKTsgfQotICAgIAorCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gbV9raW5kICsgbV9pbmZvOwogICAgIH0KLSAgICAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3ImIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAg
ICYmIG1faW5mbyA9PSBvdGhlci5tX2luZm87Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yJikgY29uc3QgPSBkZWZh
dWx0OwogCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wZXJ0eVR5cGVLZXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGVydHlUeXBlS2V5LmgKaW5kZXgg
Nzg3OTNiOGU5MjUzMDY3OTliMDFjZDBiODdkOTE1YjE4NTdhZTM1MS4uMmRjODc5OWY5ODY4Mjlj
YTZlMGFjNDYyNWNlYWE4Njc3MjE1MzE2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcm9wZXJ0eVR5cGVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1Byb3BlcnR5VHlwZUtleS5oCkBAIC01OSwxNiArNTksNyBAQCBwdWJsaWM6CiAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQogICAg
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQoKSBjb25zdCB7IHJldHVybiBtX3VpZDsgfQogCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3BlcnR5VHlwZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmUKLSAgICAg
ICAgICAgICYmIG1fdWlkID09IG90aGVyLm1fdWlkOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBQcm9wZXJ0eVR5cGVLZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUHJvcGVydHlUeXBlS2V5JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgdW5zaWduZWQgaGFz
aCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdSZWdpc3RlcmVkU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Jl
Z2lzdGVyZWRTdHJ1Y3R1cmUuaAppbmRleCA1Y2IyMTdiM2MzY2NhNGRmMzYyOThhMGIzYWY2ZThh
ZThjY2Y5MDRlLi4xYjMzOTMxMDRmOGU0NGY4ZmQwMTgyZGFlNmExMzVmMDUwNjVjOTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUu
aApAQCAtNDUsMTEgKzQ1LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZ2V0KCkgPT0gb3Ro
ZXIuZ2V0KCk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwotICAgIH0KLQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuICEhZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rv
bWppdC9ET01KSVRIZWFwUmFuZ2UuaAppbmRleCBhYWIwMmJmMDE2NTM5ZGU4ZTIyNWU3ODQwZGY5
ZDc1MWFjMTYzZTAwLi45MGU4ZGE4ZmQxY2E5MDkwYjhkNTYwOTQ3OTRiMDUzODUwYzMyODFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgKQEAg
LTc3LDExICs3Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIu
bV9iZWdpbiAmJiBtX2VuZCA9PSBvdGhlci5tX2VuZDsKICAgICB9CiAKLSAgICBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEhlYXBSYW5nZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOwotICAgIH0KLQogICAgIHRlbXBsYXRlPHVp
bnQxNl90IGJlZ2luLCB1aW50MTZfdCBlbmQ+CiAgICAgc3RhdGljIGNvbnN0ZXhwciBIZWFwUmFu
Z2UgZnJvbUNvbnN0YW50KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9BbGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRv
ci5oCmluZGV4IDcyMzlkMjI5ZmNlOTJiYmEwNDU0MDAzZTQ5ZDUyOGYwN2UzMjdjZjcuLjE3ODFm
YzJkYTc4ODFjODcxYTYyMzZmYzgxZTdjMDhiMDFmNjlmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0FsbG9jYXRvci5oCkBAIC01Miw4ICs1Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICBM
b2NhbEFsbG9jYXRvciogbG9jYWxBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsQWxs
b2NhdG9yOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFsbG9jYXRvciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxBbGxvY2F0b3IgPT0gb3RoZXIubG9jYWxBbGxvY2F0
b3IoKTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBbGxvY2F0b3ImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBBbGxvY2F0b3ImKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IEFsbG9jYXRvcigpOyB9CiAgICAgCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJh
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5oCmluZGV4
IDBiNDg3MjlmYjM3MjI5ZTRiZWNmNWExNzIxMjYwNWY1MThmYjdmYmMuLmI5YjRkZTJiNDcyNTNm
ODE1OGRjZWI0YjI5MGQ2NDQzOGI3ZmJmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ1NlZ21lbnRlZEFycmF5LmgKQEAgLTEzMiwxMSArMTMyLDYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbV9jdXJyZW50U2VnbWVudCA9PSBvdGhlci5tX2N1cnJlbnRTZWdtZW50ICYm
IG1fY3VycmVudE9mZnNldCA9PSBvdGhlci5tX2N1cnJlbnRPZmZzZXQ7CiAgICAgfQogCi0gICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEdDU2VnbWVudGVkQXJyYXlJdGVyYXRvciYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCiAg
ICAgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChtX2N1cnJlbnRTZWdtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hhbmRsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgK
aW5kZXggY2U2NWRkNjJlYWI4OGI1NjAyZWFjNDUwNmU1OWQ0NzhiMjJlYTI1My4uM2RhZGQ0M2Ew
NWE4ZGZiOTgwZDgyNjI3Y2E0ZGUxOTk1OTVhNDk4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGFuZGxlLmgKQEAgLTE1MCwzNCArMTUwLDQgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBVKgogICAg
IHJldHVybiBhLmdldCgpID09IGI7IAogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUKiBhLCBjb25zdCBIYW5kbGU8VT4mIGIpIAot
ewotICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYW5kbGU8VD4mIGEsIGNv
bnN0IEhhbmRsZTxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCi19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEhhbmRsZTxUPiYgYSwgVSogYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBi
OyAKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9w
ZXJhdG9yIT0oVCogYSwgY29uc3QgSGFuZGxlPFU+JiBiKQoteyAKLSAgICByZXR1cm4gYSAhPSBi
LmdldCgpOyAKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBKU1ZhbHVlIGIpCi17Ci0gICAgcmV0
dXJuIGEuZ2V0KCkgIT0gYjsgCi19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KEpTVmFsdWUgYSwgY29uc3QgSGFuZGxlPFU+JiBiKQot
eyAKLSAgICByZXR1cm4gYSAhPSBiLmdldCgpOyAKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwRmluYWxpemVyQ2FsbGJh
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBGaW5hbGl6ZXJDYWxsYmFjay5o
CmluZGV4IGJkNmEzODY2OTQxMWRkNDA2NTMwOTNjMzlmYzJkMTljOGExMGNmZTcuLmI0NDQ0NmFj
NzczMTNhMzc4MGZlZjg2YmM3Yjk5NjEwZDcyZTY5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBGaW5hbGl6ZXJDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBGaW5hbGl6ZXJDYWxsYmFjay5oCkBAIC00MCwxNiArNDAsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
SGVhcEZpbmFsaXplckNhbGxiYWNrJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2ZpbmFsaXplciA9PSBvdGhlci5tX2ZpbmFsaXplcgotICAgICAgICAgICAgJiYgbV91c2Vy
RGF0YSA9PSBvdGhlci5tX3VzZXJEYXRhOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgSGVhcEZpbmFsaXplckNhbGxiYWNrJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEhlYXBGaW5hbGl6ZXJDYWxsYmFjayYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAKICAg
ICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WaXNpdFJhY2VLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1Zpc2l0UmFjZUtleS5oCmluZGV4IDFmNTk4N2NmZTI1ZjcxYzIzNDgzNjYyOGY2
Njg5YjA3NmY2NzBjMjkuLjdkZWMxOGVhNjU0MDk3N2RhM2RlMTEzMDZlZmI3MjliMDFjNzc3MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Zpc2l0UmFjZUtleS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Zpc2l0UmFjZUtleS5oCkBAIC0zNSw0NCAr
MzUsMzUgQEAgY2xhc3MgSlNDZWxsOwogY2xhc3MgVmlzaXRSYWNlS2V5IHsKIHB1YmxpYzoKICAg
ICBWaXNpdFJhY2VLZXkoKSB7IH0KLSAgICAKKwogICAgIFZpc2l0UmFjZUtleShKU0NlbGwqIGNl
bGwsIGNvbnN0IGNoYXIqIHJhY2VOYW1lKQogICAgICAgICA6IG1fY2VsbChjZWxsKQogICAgICAg
ICAsIG1fcmFjZU5hbWUocmFjZU5hbWUpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIFZpc2l0
UmFjZUtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAgICAgIDogbV9yYWNl
TmFtZShtX2RlbGV0ZWRWYWx1ZVJhY2VOYW1lKQogICAgIHsKICAgICB9Ci0gICAgCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFZpc2l0UmFjZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9jZWxsID09IG90aGVyLm1fY2VsbAotICAgICAgICAgICAgJiYgbV9yYWNl
TmFtZSA9PSBvdGhlci5tX3JhY2VOYW1lOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgVmlzaXRSYWNlS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgCisKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVmlzaXRSYWNlS2V5JikgY29uc3QgPSBkZWZhdWx0OworCiAgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gKnRoaXMgIT0gVmlzaXRS
YWNlS2V5KCk7CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0OwotICAgIAorCiAgICAgSlNDZWxsKiBjZWxsKCkgY29uc3QgeyByZXR1cm4gbV9jZWxs
OyB9CiAgICAgY29uc3QgY2hhciogcmFjZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3JhY2VOYW1l
OyB9Ci0gICAgCisKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiAqdGhpcyA9PSBWaXNpdFJhY2VLZXkoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWUpOwogICAgIH0KLSAgICAKKwogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFzaChtX2NlbGwp
IF4gV1RGOjpQdHJIYXNoPGNvbnN0IGNoYXIqPjo6aGFzaChtX3JhY2VOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5oCmluZGV4IGEx
MDc0NjM5ZjM3MDlhODQwNGQ0OGY0Mzk5NzNmMjAzYjdhMGFlNjYuLjRlMDU0NTEwYjkxNWVlMDli
NjUwOTcxMzRjODU0OWNiMDdkODk2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uaApAQCAtMTUxLDIxICsxNTEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEZyYW1lJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGNhbGxlZSA9PSBvdGhlci5jYWxsZWUKLSAgICAgICAgICAgICAgICAmJiBmcmFtZSA9PSBvdGhl
ci5mcmFtZQotICAgICAgICAgICAgICAgICYmIHRoaXNWYWx1ZSA9PSBvdGhlci50aGlzVmFsdWUK
LSAgICAgICAgICAgICAgICAmJiBzY29wZSA9PSBvdGhlci5zY29wZQotICAgICAgICAgICAgICAg
ICYmIGNvZGVCbG9jayA9PSBvdGhlci5jb2RlQmxvY2sKLSAgICAgICAgICAgICAgICAmJiBjYWxs
U2l0ZUluZGV4LmJpdHMoKSA9PSBvdGhlci5jYWxsU2l0ZUluZGV4LmJpdHMoKQotICAgICAgICAg
ICAgICAgICYmIGlzVGFpbERlbGV0ZWQgPT0gb3RoZXIuaXNUYWlsRGVsZXRlZDsKLSAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZyYW1lJiBvdGhlcikg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwot
ICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFtZSYpIGNvbnN0ID0g
ZGVmYXVsdDsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5m
by5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKaW5kZXggNTJhMTNhYWFm
Yjc3YjZlNDRmYTdlYjE5MmIwNjg0M2MyY2NiOTIyNi4uMDljZjA1NjFmMDNhYTcxZWZlM2IxNTQw
MGE4ODBmMDQ3YjEwNjY4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9H
UFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKQEAgLTY5
LDggKzY5LDcgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4g
bV9ncHIgPT0gSW52YWxpZEdQUlJlZzsgfQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiBtX2dwciAhPSBJbnZhbGlkR1BSUmVnOyB9CiAKLSAgICBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KEpTVmFsdWVSZWdzIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2dwciA9
PSBvdGhlci5tX2dwcjsgfQotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oSlNWYWx1ZVJl
Z3Mgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEpTVmFsdWVSZWdzJikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAg
IEdQUlJlZyBncHIoKSBjb25zdCB7IHJldHVybiBtX2dwcjsgfQogICAgIGNvbnN0ZXhwciBHUFJS
ZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gSW52YWxpZEdQUlJlZzsgfQpAQCAtMTk1LDEyICsx
OTQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICB8fCBzdGF0aWNfY2FzdDxHUFJSZWc+KG1fcGF5
bG9hZEdQUikgIT0gSW52YWxpZEdQUlJlZzsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KEpTVmFsdWVSZWdzIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fdGFnR1BSID09IG90aGVyLm1fdGFnR1BSCi0gICAgICAgICAgICAmJiBtX3BheWxvYWRHUFIg
PT0gb3RoZXIubV9wYXlsb2FkR1BSOwotICAgIH0KLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
ciE9KEpTVmFsdWVSZWdzIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQorICAgIGJvb2wgb3BlcmF0b3I9PShKU1ZhbHVlUmVncykgY29uc3QgPSBkZWZhdWx0OwogICAg
IAogICAgIGNvbnN0ZXhwciBHUFJSZWcgdGFnR1BSKCkgY29uc3QgeyByZXR1cm4gbV90YWdHUFI7
IH0KICAgICBjb25zdGV4cHIgR1BSUmVnIHBheWxvYWRHUFIoKSBjb25zdCB7IHJldHVybiBtX3Bh
eWxvYWRHUFI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKaW5kZXggOTFiM2IzMTU1
MTBkYTY4MjRiM2M5NjM0MTBlMzM2ZDk1ODlhYmM3Yy4uYTg0NGZlYzBkMzU2MTlmY2MxM2EzZGZm
M2IwMzM0NGNhODc5NWY5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9J
Q1N0YXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9JQ1N0YXRzLmgKQEAgLTEy
OCwxMSArMTI4LDYgQEAgcHVibGljOgogICAgICAgICAgICAgJiYgbV9wcm9wZXJ0eU5hbWUgPT0g
b3RoZXIubV9wcm9wZXJ0eU5hbWU7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBJQ0V2ZW50JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKLSAgICB9Ci0gICAgCiAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgSUNFdmVu
dCYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IElDRXZlbnQmIG90aGVy
KSBjb25zdCB7IHJldHVybiBvdGhlciA8ICp0aGlzOyB9CiAgICAgYm9vbCBvcGVyYXRvcjw9KGNv
bnN0IElDRXZlbnQmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID4gb3RoZXIpOyB9CkBA
IC0xNjQsNyArMTU5LDYgQEAgcHVibGljOgogICAgIHZvaWQgbG9nKCkgY29uc3Q7CiAgICAgCiBw
cml2YXRlOgotICAgIAogICAgIEtpbmQgbV9raW5kIHsgSW52YWxpZEtpbmQgfTsKICAgICBjb25z
dCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvIHsgbnVsbHB0ciB9OwogICAgIElkZW50aWZpZXIgbV9w
cm9wZXJ0eU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFs
bG9jYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBbGxvY2F0b3IuaAppbmRl
eCAwNTFjNzZlYWQ3MDc4MWVkNzc0YjI3Y2I2ODkwYWRhNGY1YWJjNDQ3Li44YWNjZWI1MTM1YjFi
OGNiNzhjMWQ5OTViY2NmMzhiZGM3ZWM1MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQWxsb2NhdG9yLmgKQEAgLTUzLDE3ICs1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpJVEFsbG9j
YXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9raW5kID09IG90aGVy
Lm1fa2luZAotICAgICAgICAgICAgJiYgbV9hbGxvY2F0b3IgPT0gb3RoZXIubV9hbGxvY2F0b3I7
Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKSVRBbGxvY2F0b3ImIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAg
IH0KLSAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSklUQWxsb2NhdG9yJikgY29uc3Qg
PSBkZWZhdWx0OworCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gKnRoaXMgIT0gSklUQWxsb2NhdG9yKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWcuaAppbmRleCAwYjIyOWFhMGZhMzQwNWI5Y2YzZTI1ZDc0NzI0NmU1ZDhkMGE1NDg2Li5hNmYx
ZWZhMTFhOGIyNGFlNTE4NmNmNDc5ZTRmOGI5ODVjMzAxYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnLmgKQEAgLTEzNiwzNSArMTM2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpICsgKG1faW5kZXggLSBNYWNyb0Fzc2VtYmxlcjo6bnVt
YmVyT2ZSZWdpc3RlcnMoKSkpOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVnJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2luZGV4ID09IG90
aGVyLm1faW5kZXg7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWcm
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW5kZXggIT0gb3RoZXIubV9p
bmRleDsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUmVnJiBvdGhlcikg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2luZGV4IDwgb3RoZXIubV9pbmRleDsKLSAg
ICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUmVnJiBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2luZGV4ID4gb3RoZXIubV9pbmRleDsKLSAgICB9Ci0gICAg
Ci0gICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9pbmRleCA8PSBvdGhlci5tX2luZGV4OwotICAgIH0KLSAgICAKLSAgICBi
b29sIG9wZXJhdG9yPj0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2luZGV4ID49IG90aGVyLm1faW5kZXg7Ci0gICAgfQorICAgIGZyaWVuZCBhdXRvIG9w
ZXJhdG9yPD0+KFJlZywgUmVnKSA9IGRlZmF1bHQ7CiAgICAgCiAgICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0CiAgICAgewpAQCAtMTk1LDE1ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHJldHVybiBtX3JlZ0luZGV4ID09IG90aGVyLm1fcmVnSW5kZXg7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IGl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIHByaXZhdGU6CiAgICAg
ICAgICAgICB1bnNpZ25lZCBtX3JlZ0luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdp
c3RlclNldC5oCmluZGV4IGM5ZTM3ZjQ5NDc0Y2Y3NTgyNmQ0YzE1YzM5MTlmY2M1YjZlMDhiODMu
LjdhZjI3Nzk4MDUwOWY2ZDQyZWFhZmZiZjg5NDc1NjVmODZjY2Q4ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgKQEAgLTEzMyw4ICsxMzMsNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7
CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9iaXRzID09IG90aGVyLm1fYml0czsgfQotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAhPSBvdGhl
ci5tX2JpdHM7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJTZXQmKSBjb25z
dCA9IGRlZmF1bHQ7CiAgICAgCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cy5oYXNoKCk7IH0KICAgICAKQEAgLTE2NiwxNiArMTY1LDggQEAgcHVibGljOgogICAgICAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9
Ci0gICAgICAgIAorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImKSBjb25z
dCA9IGRlZmF1bHQ7CisKICAgICBwcml2YXRlOgogICAgICAgICBSZWdpc3RlckJpdG1hcDo6aXRl
cmF0b3IgbV9pdGVyOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5k
ZXggMWFkNTU4ZDIwODg0ZDNkYWVjM2MyOTQxODhkMTQ3YjcyMzE1Mjc3Mi4uYTBkOTZiNDJlMDBl
YjQ0NzA1YjQ4ZmY3ZmJmOTc4ZjJkMTg2YWFlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaApAQCAtMjIyNywxMCArMjIyNyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1
bnNpZ25lZCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmU7IH0KIAogICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnVuY3Rpb25NZXRhZGF0YU5vZGUmKSBjb25zdDsKLSAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZ1bmN0aW9uTWV0YWRhdGFOb2RlJiBvdGhlcikg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwot
ICAgICAgICB9CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHVuc2lnbmVkIG1fbGV4aWNhbFNjb3Bl
RmVhdHVyZXMgOiA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNDRh
MmViYTA5MjA2NWE5MGEzYmM4YTExZmVlZGRjM2RhZmM2NTg3YS4uOTUzY2EzMTVmMzczMmNiODg2
NTc4YjcwM2RiYjJmNTQ2ZTJmNDhjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCkBAIC05NTYsMTEgKzk1Niw2IEBAIHN0cnVjdCBTY29wZVJlZiB7CiAgICAgICAgIHJldHVy
biBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFNjb3BlUmVmJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgU2NvcGVTdGFjayogbV9zY29w
ZVN0YWNrOwogICAgIHVuc2lnbmVkIG1faW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCBhZDJhMGNkMzIyMmFhM2UxOWQxZDU1M2NkZDk0OTZh
NTE5NmQ4YTA3Li44MmQ0ODIzZDI5ODliNmE3YzQwMjYxYTk1ODg1NGQxMjE1MDQzZTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTIxOSwxNiAr
MjE5LDcgQEAgc3RydWN0IEpTVGV4dFBvc2l0aW9uIHsKIAogICAgIG9wZXJhdG9yIGludCgpIGNv
bnN0IHsgcmV0dXJuIG9mZnNldDsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBsaW5lID09IG90
aGVyLmxpbmUKLSAgICAgICAgICAgICYmIG9mZnNldCA9PSBvdGhlci5vZmZzZXQKLSAgICAgICAg
ICAgICYmIGxpbmVTdGFydE9mZnNldCA9PSBvdGhlci5saW5lU3RhcnRPZmZzZXQ7Ci0gICAgfQot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBKU1RleHRQb3NpdGlvbiYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBKU1RleHRQb3NpdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAg
IGludCBjb2x1bW4oKSBjb25zdCB7IHJldHVybiBvZmZzZXQgLSBsaW5lU3RhcnRPZmZzZXQ7IH0K
ICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZUNvZGUuaAppbmRleCA4NmZlMTI0YTg3M2NlNzUxYzYwYWVlYzhkNzkwNzM5NjM5YTRj
MzYxLi44ZDNiNWIwMDVjY2U4ZWNjZWQxYjgzOTk0MTUzNjcyMzNlMGYwMzkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaApAQCAtODYsMTEgKzg2LDYgQEAgcHVi
bGljOgogICAgICAgICAgICAgJiYgbV9lbmRPZmZzZXQgPT0gb3RoZXIubV9lbmRPZmZzZXQ7CiAg
ICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNvdXJjZUNvZGUmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogcHJp
dmF0ZToKICAgICBPcmRpbmFsTnVtYmVyIG1fZmlyc3RMaW5lOwogICAgIE9yZGluYWxOdW1iZXIg
bV9zdGFydENvbHVtbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlQ29kZUtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2Rl
S2V5LmgKaW5kZXggMDBkM2FmOTRkMzFjMzJhYTcxNTBkY2YyMzdiNDBhNDhiNDBjNjlhNi4uYTlm
MDRlMzE2OTJhOWFjZWRhZTdlZmQwYTAwMTcwMzcyNjAyNTgwMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmgKQEAgLTExOSwxMSArMTE5LDYgQEAgcHVi
bGljOgogICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7CiAgICAgfQog
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNvdXJjZUNvZGVLZXkmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAgIHN0
cnVjdCBIYXNoIHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU291cmNlQ29k
ZUtleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CiAgICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGEsIGNvbnN0IFNvdXJjZUNvZGVLZXkmIGIpIHsgcmV0
dXJuIGEgPT0gYjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyT3JpZ2luLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJPcmlnaW4uaAppbmRleCAxZWVhYmU3MGRiZDM1ZDcxYTU0MjdiNWZiZjY4ZDk1NjI1NDllNGZm
Li40ZGQ3ZDg3NmE2NWU3NjBmMmQyMWUzY2UyZDViZTEyOGY4ZWUyYmVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW4uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW4uaApAQCAtNjEsNyArNjEs
NiBAQCBwdWJsaWM6CiAgICAgQnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9ieXRlY29kZUluZGV4OyB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE9yaWdpbiYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcmlnaW4mIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIHVuc2lnbmVkIGhhc2go
KSBjb25zdDsKICAgICAKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclVJRC5oCmluZGV4IDBl
NDIzMjRjZjJhOWIwZDA1ZDhlMzRkM2ZiOGQ0YzYwNjg3YWRlYWUuLmIyMzE2ZmI0OWM1ODU4ZmFh
ZDI3MGNiMDE0NmU0NmQ1OTQyYWRmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlclVJRC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlclVJRC5oCkBAIC02MSwxMSArNjEsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX3VpZCA9PSBvdGhlci5tX3VpZDsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFVJRCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7Ci0gICAgfQotICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICp0aGlzICE9IFVJRCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllci5oCmluZGV4IDEx
ZmZiODk4MzFkZTcxNzkzM2UyZTQ5NjQyZTU1Nzc3NjliOGI3ZGYuLjUxYTcyMzgzMDg4ZjZjMTgx
OTMyYjUwOGY3YzVjY2EzZmQ0ZDVkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVyLmgKQEAgLTU1LDkgKzU1LDYgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBpbmxpbmUgQ2FjaGVhYmxlSWRlbnRpZmllciBjcmVhdGVGcm9tSW1tb3J0
YWxJZGVudGlmaWVyKFVuaXF1ZWRTdHJpbmdJbXBsKik7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBD
YWNoZWFibGVJZGVudGlmaWVyIGNyZWF0ZUZyb21SYXdCaXRzKHVpbnRwdHJfdCByYXdCaXRzKSB7
IHJldHVybiBDYWNoZWFibGVJZGVudGlmaWVyKHJhd0JpdHMpOyB9CiAKLSAgICBDYWNoZWFibGVJ
ZGVudGlmaWVyKGNvbnN0IENhY2hlYWJsZUlkZW50aWZpZXImKSA9IGRlZmF1bHQ7Ci0gICAgQ2Fj
aGVhYmxlSWRlbnRpZmllcihDYWNoZWFibGVJZGVudGlmaWVyJiYpID0gZGVmYXVsdDsKLQogICAg
IENhY2hlYWJsZUlkZW50aWZpZXIoc3RkOjpudWxscHRyX3QpCiAgICAgICAgIDogbV9iaXRzKDAp
CiAgICAgeyB9CkBAIC03NiwxMiArNzMsOCBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QgeyByZXR1cm4gdWlkKCktPnN5bWJvbEF3YXJlSGFzaCgpOyB9CiAKLSAgICBDYWNo
ZWFibGVJZGVudGlmaWVyJiBvcGVyYXRvcj0oY29uc3QgQ2FjaGVhYmxlSWRlbnRpZmllciYpID0g
ZGVmYXVsdDsKLSAgICBDYWNoZWFibGVJZGVudGlmaWVyJiBvcGVyYXRvcj0oQ2FjaGVhYmxlSWRl
bnRpZmllciYmKSA9IGRlZmF1bHQ7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FjaGVh
YmxlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBD
YWNoZWFibGVJZGVudGlmaWVyJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IElkZW50aWZpZXImIG90aGVyKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q2FjaGVhYmxlSWRlbnRpZmllciYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
ZGVudGlmaWVyJikgY29uc3Q7CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXNDYWNoZWFibGVJ
ZGVudGlmaWVyQ2VsbChKU0NlbGwqKTsKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgaXNDYWNoZWFi
bGVJZGVudGlmaWVyQ2VsbChKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlmaWVySW5saW5lcy5oCmluZGV4IGZhOTFi
Y2Y4OWMwMDBkOWFlMDg4NTliM2YyY2NjN2U3NTEzOTlhZWYuLmFlNTJlYzQ4Nzk3NDdjYzIzZDll
NjE3YjViZjZlZjJkYTA2ODYzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRlbnRpZmllcklubGluZXMuaApAQCAtMTM1LDE3ICsx
MzUsMTEgQEAgaW5saW5lIHZvaWQgQ2FjaGVhYmxlSWRlbnRpZmllcjo6dmlzaXRBZ2dyZWdhdGUo
VmlzaXRvciYgdmlzaXRvcikgY29uc3QKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJl
ZChjZWxsKCkpOwogfQogCi0KIGlubGluZSBib29sIENhY2hlYWJsZUlkZW50aWZpZXI6Om9wZXJh
dG9yPT0oY29uc3QgQ2FjaGVhYmxlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHVpZCgpID09IG90aGVyLnVpZCgpOwogfQogCi1pbmxpbmUgYm9vbCBDYWNoZWFibGVJZGVu
dGlmaWVyOjpvcGVyYXRvciE9KGNvbnN0IENhY2hlYWJsZUlkZW50aWZpZXImIG90aGVyKSBjb25z
dAotewotICAgIHJldHVybiB1aWQoKSAhPSBvdGhlci51aWQoKTsKLX0KLQogaW5saW5lIGJvb2wg
Q2FjaGVhYmxlSWRlbnRpZmllcjo6b3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiBvdGhlcikg
Y29uc3QKIHsKICAgICByZXR1cm4gdWlkKCkgPT0gb3RoZXIuaW1wbCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FnZWRCYXJyaWVyUHRyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWdlZEJhcnJpZXJQdHIuaAppbmRleCAzOGJlZjUwNmVk
OTE3YmVhYjZlY2FmZjQ3NzEyMWNiOWIyNmE0MWQ2Li5lNjBhMmJjMzkyMDJkN2U0MjlhODBiYTAy
MmU3MDRiZTA1NTYzZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWdlZEJhcnJpZXJQdHIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWdlZEJhcnJpZXJQdHIuaApAQCAtNzIsMTEgKzcyLDYgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV9iYXJyaWVyLmdldCgpID09IG90aGVyLm1fYmFycmllci5nZXQoKTsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhZ2VkQmFycmllclB0ciYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotICAgIAog
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
ICEhbV9iYXJyaWVyLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRE9NQW5ub3RhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRE9N
QW5ub3RhdGlvbi5oCmluZGV4IDA3ZTEyZWRlYjg4YmI0MTVjZmViNmFjNWFkM2E4NmFjZWIzOGY3
MDcuLjU2OTU4NzQ5MmVkZGNkNTQ4OWRhYjVjOTE5ZTA2N2ZkNDdhZmU1NDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUFubm90YXRpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9ET01Bbm5vdGF0aW9uLmgKQEAgLTM2LDIwICszNiwx
MCBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiB9CiAKIHN0cnVjdCBET01BdHRyaWJ1dGVBbm5vdGF0
aW9uIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm87
CiAgICAgY29uc3QgRE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVDsKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKIH07
CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiYg
bGVmdCwgY29uc3QgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiYgcmlnaHQpCi17Ci0gICAgcmV0dXJu
IGxlZnQuY2xhc3NJbmZvID09IHJpZ2h0LmNsYXNzSW5mbyAmJiBsZWZ0LmRvbUpJVCA9PSByaWdo
dC5kb21KSVQ7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRE9NQXR0cmlidXRl
QW5ub3RhdGlvbiYgbGVmdCwgY29uc3QgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiYgcmlnaHQpCi17
Ci0gICAgcmV0dXJuICEobGVmdCA9PSByaWdodCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY09mZnNldC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY09mZnNldC5oCmluZGV4IDE0
MTNiNTE0MTI4ZDMzZmZlMjhlMzEyMzExMDYzMzg4NWIxNDQwZDkuLmVmZjQxZDZkYjIyNjA5NTA4
YmIzMjA0ZTk4ZDk3NzUxZDdkNDE5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyaWNPZmZzZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmljT2Zmc2V0LmgKQEAgLTYwLDMwICs2MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1fb2Zmc2V0OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
R2VuZXJpY09mZnNldCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9vZmZz
ZXQgPT0gb3RoZXIubV9vZmZzZXQ7Ci0gICAgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBH
ZW5lcmljT2Zmc2V0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX29mZnNl
dCAhPSBvdGhlci5tX29mZnNldDsKLSAgICB9Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgR2Vu
ZXJpY09mZnNldCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9vZmZzZXQg
PCBvdGhlci5tX29mZnNldDsKLSAgICB9Ci0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgR2VuZXJp
Y09mZnNldCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9vZmZzZXQgPiBv
dGhlci5tX29mZnNldDsKLSAgICB9Ci0gICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IEdlbmVyaWNP
ZmZzZXQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0IDw9IG90
aGVyLm1fb2Zmc2V0OwotICAgIH0KLSAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgR2VuZXJpY09m
ZnNldCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9vZmZzZXQgPj0gb3Ro
ZXIubV9vZmZzZXQ7Ci0gICAgfQorICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KEdlbmVyaWNP
ZmZzZXQsIEdlbmVyaWNPZmZzZXQpID0gZGVmYXVsdDsKICAgICAKICAgICBUIG9wZXJhdG9yKyhp
bnQgdmFsdWUpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSVNPODYwMS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYw
MS5oCmluZGV4IGMwN2U3N2U0MTMzYjk1Zjg2NmNmMDczMDQyYTI1MzMzOTQ5YjEzOTAuLjZiODgz
ZDAxNDA1NzRmN2ZjMzliM2JhM2Q2MTMzM2ExNzU5Y2I0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JU084NjAxLmgKQEAgLTE0NSwzMCArMTQ1LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9lcG9jaE5hbm9zZWNvbmRzID49IEV4YWN0VGltZTo6bWluVmFsdWUgJiYgbV9l
cG9jaE5hbm9zZWNvbmRzIDw9IEV4YWN0VGltZTo6bWF4VmFsdWU7CiAgICAgfQogCi0gICAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3I8KEV4YWN0VGltZSBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPCBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7
Ci0gICAgfQotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oRXhhY3RUaW1lIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA8PSBvdGhlci5t
X2Vwb2NoTmFub3NlY29uZHM7Ci0gICAgfQotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0o
RXhhY3RUaW1lIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5v
c2Vjb25kcyA9PSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7Ci0gICAgfQotICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oRXhhY3RUaW1lIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyAhPSBvdGhlci5tX2Vwb2NoTmFub3NlY29uZHM7Ci0g
ICAgfQotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oRXhhY3RUaW1lIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA+PSBvdGhlci5tX2Vw
b2NoTmFub3NlY29uZHM7Ci0gICAgfQotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihFeGFj
dFRpbWUgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9zZWNv
bmRzID4gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwotICAgIH0KKyAgICBmcmllbmQgYXV0byBv
cGVyYXRvcjw9PihFeGFjdFRpbWUsIEV4YWN0VGltZSkgPSBkZWZhdWx0OwogCiAgICAgc3RkOjpv
cHRpb25hbDxFeGFjdFRpbWU+IGFkZChEdXJhdGlvbikgY29uc3Q7CiAgICAgSW50MTI4IGRpZmZl
cmVuY2UoRXhhY3RUaW1lIG90aGVyLCB1bnNpZ25lZCBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwg
Um91bmRpbmdNb2RlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuaAppbmRleCAxYzlmZTU1NjUwMWYwYTJhN2NmMGQwOGUxMTgyYjY1OTdjMDFjMGZmLi43
YTQ5ZGI0NjljYjE0YTVlZjY0OGQzNmEyYzRjYmMxN2M4N2ExZjMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0xNDYsMTIgKzE0Niw5IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzUHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBpc1N5bWJvbCgpICYm
IHN0YXRpY19jYXN0PGNvbnN0IFN5bWJvbEltcGwqPihpbXBsKCkpLT5pc1ByaXZhdGUoKTsgfQog
CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSWRl
bnRpZmllciYpOwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IExDaGFyKik7CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgY2hhciopOwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
IT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IExDaGFyKik7Ci0gICAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgY2hhciopOwogCiAgICAgc3RhdGljIGJv
b2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKik7CiAgICAgc3RhdGljIGlu
bGluZSBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0ltcGwqYSwgY29uc3QgY2hhcipiKSB7IHJldHVy
biBJZGVudGlmaWVyOjplcXVhbChhLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikp
OyB9OwpAQCAtMjM1LDExICsyMzIsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElk
ZW50aWZpZXImIGEsIGNvbnN0IElkZW50aWZpZXImIGIpCiAgICAgcmV0dXJuIElkZW50aWZpZXI6
OmVxdWFsKGEsIGIpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElkZW50aWZp
ZXImIGEsIGNvbnN0IElkZW50aWZpZXImIGIpCi17Ci0gICAgcmV0dXJuICFJZGVudGlmaWVyOjpl
cXVhbChhLCBiKTsKLX0KLQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVy
JiBhLCBjb25zdCBMQ2hhciogYikKIHsKICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZXF1YWwoYSwg
Yik7CkBAIC0yNTAsMTYgKzI0Miw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRl
bnRpZmllciYgYSwgY29uc3QgY2hhciogYikKICAgICByZXR1cm4gSWRlbnRpZmllcjo6ZXF1YWwo
YSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsKIH0KIAotaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBMQ2hhciogYikKLXsKLSAgICBy
ZXR1cm4gIUlkZW50aWZpZXI6OmVxdWFsKGEsIGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IGNoYXIqIGIpCi17Ci0gICAgcmV0dXJuICFJ
ZGVudGlmaWVyOjplcXVhbChhLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOwot
fQotCiBpbmxpbmUgYm9vbCBJZGVudGlmaWVyOjplcXVhbChjb25zdCBTdHJpbmdJbXBsKiByLCBj
b25zdCBMQ2hhciogcykKIHsKICAgICByZXR1cm4gV1RGOjplcXVhbChyLCBzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCBlOGE0ZTdhNjIzMzlkMzZi
ZWEwZjcyNTdiNDE3MzVlYzgyNDNlZjU3Li5iMTcxYmQzY2U4MWU4NjM1ZDhmMTc3MWQ0MDJhZmU1
ZTRkYTQzODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
CkBAIC0yMTAsNyArMjEwLDYgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29u
c3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUmIG90aGVyKSBjb25zdDsKIAog
ICAgIGJvb2wgaXNJbnQzMigpIGNvbnN0OwogICAgIGJvb2wgaXNVSW50MzIoKSBjb25zdDsKQEAg
LTY3MywxMCArNjcyLDYgQEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSlNW
YWx1ZSgpCiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSBhLCBjb25z
dCBKU0NlbGwqIGIpIHsgcmV0dXJuIGEgPT0gSlNWYWx1ZShiKTsgfQotaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBKU0NlbGwqIGEsIGNvbnN0IEpTVmFsdWUgYikgeyByZXR1cm4gSlNWYWx1
ZShhKSA9PSBiOyB9Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNWYWx1ZSBhLCBj
b25zdCBKU0NlbGwqIGIpIHsgcmV0dXJuIGEgIT0gSlNWYWx1ZShiKTsgfQotaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBKU0NlbGwqIGEsIGNvbnN0IEpTVmFsdWUgYikgeyByZXR1cm4gSlNW
YWx1ZShhKSAhPSBiOyB9CiAKIAogYm9vbCBpc1RoaXNWYWx1ZUFsdGVyZWQoY29uc3QgUHV0UHJv
cGVydHlTbG90JiwgSlNPYmplY3QqIGJhc2VPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggOGY1YzA3MTk4ODZmNTI0
ZjJjYTJiNmU3Y2Y0YmY1YTE1MDQzOTU1Mi4uYzYxNmE0MjM5YWU2Njc4NWZkOGE2MjY2OTk1ZDg4
MGU5ODBkYWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NK
U1ZhbHVlSW5saW5lcy5oCkBAIC0zMjUsMTEgKzMyNSw2IEBAIGlubGluZSBib29sIEpTVmFsdWU6
Om9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHUuYXNJ
bnQ2NCA9PSBvdGhlci51LmFzSW50NjQ7CiB9CiAKLWlubGluZSBib29sIEpTVmFsdWU6Om9wZXJh
dG9yIT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHUuYXNJbnQ2
NCAhPSBvdGhlci51LmFzSW50NjQ7Ci19Ci0KIGlubGluZSBib29sIEpTVmFsdWU6OmlzRW1wdHko
KSBjb25zdAogewogICAgIHJldHVybiB0YWcoKSA9PSBFbXB0eVZhbHVlVGFnOwpAQCAtNDc3LDEx
ICs0NzIsNiBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUm
IG90aGVyKSBjb25zdAogICAgIHJldHVybiB1LmFzSW50NjQgPT0gb3RoZXIudS5hc0ludDY0Owog
fQogCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUmIG90aGVy
KSBjb25zdAotewotICAgIHJldHVybiB1LmFzSW50NjQgIT0gb3RoZXIudS5hc0ludDY0OwotfQot
CiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0VtcHR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gdS5h
c0ludDY0ID09IFZhbHVlRW1wdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3Bl
LmgKaW5kZXggODRmN2E5OTcyMmE1YjhkMDRhYWMwOTIxZGQ5OThlMGU4ZGM4Y2JiMi4uMzdlMTUw
MzIwZGQxYjQ0ZTNhZGJjZmIxZDFjMDE2ZTQ3OTk4OWUwNCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU2NvcGUuaApAQCAtMTE2LDcgKzExNiw2IEBAIHB1YmxpYzoKICAgICAvLyBw
b3N0Zml4ICsrIGludGVudGlvbmFsbHkgb21pdHRlZAogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNjb3BlQ2hhaW5JdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZSA9PSBv
dGhlci5tX25vZGU7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2NvcGVDaGFpbkl0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9ub2RlICE9IG90aGVyLm1fbm9kZTsgfQogCiBw
cml2YXRlOgogICAgIEpTU2NvcGUqIG1fbm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVGdW5jdGlvbi5oCmluZGV4IGNlMDcxMTNlMmFiMTgxNTA3NWU1NDRmMjgz
ODNiMTFkYzY5MjI1MjEuLmUyZmU5ZDRmZDNhMjhlY2NhNTE1OTY3YjY3OTMwMDhjNDIwMDEyOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24uaApA
QCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9wdHI7IH0KICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFtX3B0cjsgfQogICAgIGJvb2wgb3BlcmF0b3I9PShOYXRpdmVGdW5jdGlvbiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9wdHIgPT0gb3RoZXIubV9wdHI7IH0KLSAgICBib29sIG9wZXJhdG9y
IT0oTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09IG90aGVyLm1f
cHRyOyB9CiAKICAgICBFbmNvZGVkSlNWYWx1ZSBvcGVyYXRvcigpKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSB7IHJldHVybiBtX3B0cihnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZSk7IH0KIApAQCAtNzksNyArNzgsNiBAQCBwdWJsaWM6CiAgICAgZXhw
bGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wdHI7IH0KICAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQogICAgIGJvb2wgb3BlcmF0b3I9
PShUYWdnZWROYXRpdmVGdW5jdGlvbiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gb3Ro
ZXIubV9wdHI7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oVGFnZ2VkTmF0aXZlRnVuY3Rpb24gb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyICE9IG90aGVyLm1fcHRyOyB9CiAKICAgICBFbmNvZGVk
SlNWYWx1ZSBvcGVyYXRvcigpKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSB7IHJldHVybiBOYXRpdmVGdW5jdGlvbigqdGhpcykoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAKaW5kZXggODFhNWM5MDk2NWM2ZmRlNDI0YTZhMTZjZTAwNDQ3MmZjYjE3ZGEwMy4uMzZmZWFh
ODkxYzY5NzI2YjZmNWRkOGVhZjY1YTE1MzBmNDAwY2ExNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTk0OSw4ICs5NDksNyBAQCBzdHJ1Y3QgT3B0aW9u
UmVhZGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZvaWQgZHVtcChTdHJpbmdCdWlsZGVyJikg
Y29uc3Q7CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNv
bnN0OwotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3B0aW9uJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE9wdGlvbiYpIGNvbnN0OwogCiAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7
IHJldHVybiBPcHRpb25zOjpzX2NvbnN0TWV0YURhdGFbbV9pZF0ubmFtZTsgfQogICAgICAgICBj
b25zdCBjaGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbnM6OnNfY29uc3RN
ZXRhRGF0YVttX2lkXS5kZXNjcmlwdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ByaXZhdGVOYW1lLmgKaW5kZXggZjcwMGI1ZDdiM2MxMmRkMTM4ZGQzNjkwMzkwOGYyZWEy
YzNkNWIzZS4uOTg3ZWZiMWYzZjU3ZTYzNjRiMzFlYWU3NmVlZWZlMjFhOTA1MDIwMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJpdmF0ZU5hbWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCkBAIC02NCw3ICs2NCw2
IEBAIHB1YmxpYzoKICAgICBTeW1ib2xJbXBsJiB1aWQoKSBjb25zdCB7IHJldHVybiBtX3VpZDsg
fQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByaXZhdGVOYW1lJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gJnVpZCgpID09ICZvdGhlci51aWQoKTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICZ1aWQoKSAhPSAmb3RoZXIu
dWlkKCk7IH0KIAogcHJpdmF0ZToKICAgICBSZWY8U3ltYm9sSW1wbD4gbV91aWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TmFtZS5oCmluZGV4IDRlODJkMDk4YmEy
YTliOGEzZjM4NDdjYWU2MzkwM2Q4ZjFjNmQ1MTQuLmUwMGVhNmNmMmVhNTgxOGNhMTAxMGQ2YTk1
ZDVmYWY4YjJhMDEyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TmFtZS5oCkBAIC0xMDYsMjEgKzEwNiw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oUHJv
cGVydHlOYW1lIGEsIGNvbnN0IGNoYXIqIGIpCiAgICAgcmV0dXJuIGVxdWFsKGEudWlkKCksIGIp
OwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KFByb3BlcnR5TmFtZSBhLCBjb25zdCBJZGVu
dGlmaWVyJiBiKQotewotICAgIHJldHVybiBhLnVpZCgpICE9IGIuaW1wbCgpOwotfQotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElkZW50aWZpZXImIGEsIFByb3BlcnR5TmFtZSBiKQot
ewotICAgIHJldHVybiBhLmltcGwoKSAhPSBiLnVpZCgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KFByb3BlcnR5TmFtZSBhLCBQcm9wZXJ0eU5hbWUgYikKLXsKLSAgICByZXR1cm4gYS51
aWQoKSAhPSBiLnVpZCgpOwotfQotCiBBTFdBWVNfSU5MSU5FIHN0ZDo6b3B0aW9uYWw8dWludDMy
X3Q+IHBhcnNlSW5kZXgoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAgICBhdXRvIHVp
ZCA9IHByb3BlcnR5TmFtZS51aWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5VGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3BlcnR5VGFibGUuaAppbmRleCA3OTkwZWI2MDgxZGE0MjYyZjhkMDNhYjI4MmNlOTliZjQy
OWEyNDE1Li5lZWU2N2Y4NGU0MDM5ZjMxNTU0ODNjZjJkYTcwZDUxYzg4ZTlkMGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCkBAIC05NiwxMSAr
OTYsNiBAQCBjbGFzcyBQcm9wZXJ0eVRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
ICAgICAgICByZXR1cm4gbV92YWx1ZVB0ciA9PSBvdGhlci5tX3ZhbHVlUHRyOwogICAgICAgICB9
CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IG9yZGVyZWRfaXRlcmF0b3I8VD4mIG90
aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV92YWx1ZVB0ciAhPSBv
dGhlci5tX3ZhbHVlUHRyOwotICAgICAgICB9Ci0KICAgICAgICAgVCYgb3BlcmF0b3IqKCkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuICptX3ZhbHVlUHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVLZXkuaAppbmRleCBhN2Y5NDcwZjE5NDJhOTk1ZmM0
OTFjYTQyN2QxYTMwOWFkZjg1YjJhLi4wYWNhNjk0YTZkMTQ2ZmE3MzI5ZDE1NDU2YjRiM2I4YjJi
NTM0ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5
cGVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVLZXku
aApAQCAtNTcsMTYgKzU3LDggQEAgcHVibGljOgogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0luZm87IH0KICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxPYmplY3Q7IH0KICAgICAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvdG90eXBlS2V5JiBvdGhlcikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3Byb3RvdHlwZSA9PSBvdGhlci5tX3Byb3RvdHlwZQotICAgICAg
ICAgICAgJiYgbV9leGVjdXRhYmxlID09IG90aGVyLm1fZXhlY3V0YWJsZQotICAgICAgICAgICAg
JiYgbV9pbmxpbmVDYXBhY2l0eSA9PSBvdGhlci5tX2lubGluZUNhcGFjaXR5Ci0gICAgICAgICAg
ICAmJiBtX2NsYXNzSW5mbyA9PSBvdGhlci5tX2NsYXNzSW5mbwotICAgICAgICAgICAgJiYgbV9n
bG9iYWxPYmplY3QgPT0gb3RoZXIubV9nbG9iYWxPYmplY3Q7Ci0gICAgfQorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBQcm90b3R5cGVLZXkmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgCi0gICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFByb3RvdHlwZUtleSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0
IHsgcmV0dXJuICp0aGlzICE9IFByb3RvdHlwZUtleSgpOyB9CiAgICAgYm9vbCBpc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICp0aGlzID09IFByb3RvdHlwZUtleShXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKaW5kZXggODA2
MmMyYzc4N2MzZjVhOGJkNmIyYmFjN2UzODhhMmM2M2I0NmZhMS4uYmI3M2UwYzk1NGNhMzQzMzFl
MDdmMmY5NWI3ZmQwYzZjNjM4ODE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlLmgKQEAgLTE4NiwxNSArMTg2
LDcgQEAgY2xhc3MgU3RydWN0dXJlVHJhbnNpdGlvblRhYmxlIHsKICAgICAgICAgICAgIFRyYW5z
aXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMgYXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIChtX2Vu
Y29kZWREYXRhID4+IGF0dHJpYnV0ZXNTaGlmdCkgJiBVSU5UOF9NQVg7IH0KICAgICAgICAgICAg
IFRyYW5zaXRpb25LaW5kIHRyYW5zaXRpb25LaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8VHJhbnNpdGlvbktpbmQ+KG1fZW5jb2RlZERhdGEgPj4gdHJhbnNpdGlvbktpbmRTaGlmdCk7
IH0KIAotICAgICAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXkmIGEsIGNv
bnN0IEtleSYgYikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYS5tX2Vu
Y29kZWREYXRhID09IGIubV9lbmNvZGVkRGF0YTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBLZXkmIGEsIGNvbnN0IEtleSYgYikKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYS5tX2VuY29kZWREYXRhICE9IGIu
bV9lbmNvZGVkRGF0YTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBLZXkmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICAgICAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHVpbnRwdHJfdCBtX2VuY29kZWREYXRhIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaAppbmRl
eCBjY2Y5MDRmODg4Yzg0NGRiZjlmMjM2YWI5N2Y3ZjE4YzFiNjI0MmMyLi44ZjQ4NDIzNjIyZWEw
ZDcyYmE1NzU1OTY1NzkxYzg3ZmJiN2QwNzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IuaApAQCAtNTUsNyAr
NTUsNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgT3B0aW9uYWxTdHJpbmdWZWN0b3ImIGNvb2tlZFN0
cmluZ3MoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tlZFN0cmluZ3M7IH0KIAogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3ImIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX2hhc2ggPT0gb3RoZXIubV9oYXNoICYmIG1fcmF3U3RyaW5ncyA9PSBvdGhlci5tX3Jh
d1N0cmluZ3M7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9oYXNoICE9IG90aGVyLm1faGFzaCB8fCBt
X3Jhd1N0cmluZ3MgIT0gb3RoZXIubV9yYXdTdHJpbmdzOyB9CiAKICAgICBzdHJ1Y3QgSGFzaGVy
IHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Zhck9mZnNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVmFyT2Zmc2V0LmgKaW5kZXggNDJjMzdjMTFhMWFjZTQyNDRkZjdkMzgxZTQ2NTVj
ZWVmYzk2MjE5ZS4uMGE0Y2FjMWIzYzFmN2U2N2RjYzk0ODNmMjQzNzI1ODZmNzdjOWMxZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVmFyT2Zmc2V0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVmFyT2Zmc2V0LmgKQEAgLTE5MCwxNiArMTkw
LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZhck9mZnNldCYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9raW5kID09IG90aGVyLm1fa2luZAotICAgICAgICAgICAgJiYg
bV9vZmZzZXQgPT0gb3RoZXIubV9vZmZzZXQ7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBWYXJPZmZzZXQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVmFy
T2Zmc2V0JikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3IuY3BwCmluZGV4IGI2OWVhNjE1ZjdhZWRmMzdlZDIyNWRmYzZiNmZkZGZhMzA1NDEyYWEu
LmNjYjlmNjRmZTBkYmUzZjY2YzQzZjcxZjNkZmRlOWU1MWZhYWRjYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcApAQCAtOTQsMTkg
Kzk0LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAgIHsgfQogCi0gICAg
VHlwZWRUbXAoY29uc3QgVHlwZWRUbXAmKSA9IGRlZmF1bHQ7Ci0gICAgVHlwZWRUbXAoVHlwZWRU
bXAmJikgPSBkZWZhdWx0OwotICAgIFR5cGVkVG1wJiBvcGVyYXRvcj0oVHlwZWRUbXAmJikgPSBk
ZWZhdWx0OwotICAgIFR5cGVkVG1wJiBvcGVyYXRvcj0oY29uc3QgVHlwZWRUbXAmKSA9IGRlZmF1
bHQ7Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHlwZWRUbXAmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdG1wID09IG90aGVyLm1fdG1wICYmIG1fdHlwZSA9PSBv
dGhlci5tX3R5cGU7Ci0gICAgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUeXBlZFRtcCYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUeXBlZFRtcCYpIGNvbnN0ID0gZGVmYXVs
dDsKIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIXRtcCgp
OyB9CiAKQEAgLTEyMSw3ICsxMDksNiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotCiAg
ICAgVG1wIG1fdG1wOwogICAgIFR5cGUgbV90eXBlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21QYWdlQ291bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21QYWdlQ291bnQuaAppbmRleCBiN2Q4YzlmY2Y3MmIxNDc5YzNhM2YxMjNiZmEy
YjRkMmQyNDdjY2UyLi4zY2FmMWI0NTkyYjlhOGRmNDNkM2FlZjZhOWM3ODE0N2QyYjNiNTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCkBAIC04Myw5ICs4
Myw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcGFnZUNvdW50ICE9IFVJTlRfTUFYOwog
ICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFBhZ2VDb3VudCYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZUNvdW50IDwgb3RoZXIubV9wYWdlQ291bnQ7IH0KLSAgICBib29sIG9w
ZXJhdG9yPihjb25zdCBQYWdlQ291bnQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDb3Vu
dCA+IG90aGVyLm1fcGFnZUNvdW50OyB9Ci0gICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFBhZ2VD
b3VudCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUNvdW50ID49IG90aGVyLm1fcGFnZUNv
dW50OyB9CisgICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oUGFnZUNvdW50LCBQYWdlQ291bnQp
ID0gZGVmYXVsdDsKKwogICAgIFBhZ2VDb3VudCBvcGVyYXRvcisoY29uc3QgUGFnZUNvdW50JiBv
dGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChzdW1PdmVyZmxvd3M8dWludDMyX3Q+KG1f
cGFnZUNvdW50LCBvdGhlci5tX3BhZ2VDb3VudCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtVGFnLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
VGFnLmgKaW5kZXggYmRmY2ZiNjg4ZTJkMWU5NzlhZDBjY2Y0YzFhYWYwNmY5OTI0MDUyNC4uNWVm
N2Q2ZTc3ZjQwNDUwNjk5YzI3ZTQyMDNiM2NlZWRiNmM0YjMwZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21UYWcuaApAQCAtNDMsNyArNDMsNiBAQCBwdWJsaWM6CiAgICAgLy8gU2luY2Ug
KDEpIHdlIGRvIG5vdCBjb3B5IFdhc206OlRhZyBhbmQgKDIpIHdlIGFsd2F5cyBhbGxvY2F0ZSBX
YXNtOjpUYWcgZnJvbSBoZWFwLCB3ZSBjYW4gdXNlCiAgICAgLy8gcG9pbnRlciBjb21wYXJpc29u
IGZvciBpZGVudGl0eSBjaGVjay4KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGFnJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gdGhpcyA9PSAmb3RoZXI7IH0KLSAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgVGFnJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdGhpcyAhPSAmb3RoZXI7IH0KIAogICAg
IGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zaWduYXR1cmUu
Z2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFkLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKaW5kZXggZjRlYTc4ZDEzZTFj
ZGRiNjE5YjgyMjg2OGQzM2M3MjdjOWYyZjk4Yi4uODgyN2I1MDkxZmQxM2ZjZWU5NDYyYTM0OTE4
MzM2MGUxOThmMjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXV0b21hdGljVGhyZWFk
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRvbWF0aWNUaHJlYWQuY3BwCkBAIC0yNDUsNCAr
MjQ1LDMgQEAgdm9pZCBBdXRvbWF0aWNUaHJlYWQ6OnRocmVhZElzU3RvcHBpbmcoY29uc3QgQWJz
dHJhY3RMb2NrZXImKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvQmFnLmggYi9Tb3VyY2UvV1RGL3d0Zi9CYWcuaAppbmRleCA1MDQyYTRkZGQx
ZWNiMGM3YjZiOWViMzM4ZmY3OGEzMTgxMmU2NmU3Li43NmNmYWMyMGI1YzYxNWFkMTRkYTdiZTYx
Yzc4YTRhY2IxZTk1ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9CYWcuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9CYWcuaApAQCAtMTI0LDE1ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9CisgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNs
YXNzIFdURjo6QmFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmggYi9T
b3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuaAppbmRleCAxOWJlNDcyNjI4Y2ZmYjgzZjk3OTgwYWNj
M2ZhNjYwMDdhYjllMjRhLi43NDI1ZmNkYmQ1ZjFkZTNhMDEyNjRkY2E1NmVlYTA5Y2U4YjI5MmE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9CaXRWZWN0b3IuaApAQCAtMzM3LDEwICszMzcsNiBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0K
ICAgICBwcml2YXRlOgogICAgICAgICBjb25zdCBCaXRWZWN0b3IqIG1fYml0VmVjdG9yOwogICAg
ICAgICBzaXplX3QgbV9pbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5o
IGIvU291cmNlL1dURi93dGYvQml0bWFwLmgKaW5kZXggYmRiMzkwOGJhNjFlNDNhZTg4MjRiYmYx
ZGU2NTBmNGU4NDYzN2ZkMy4uMTIyNDliZjQxOGQ5MjBlZjQxNGNmODFkODU1ZGZkZTA4M2FkM2E0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQml0bWFwLmgKKysrIGIvU291cmNlL1dURi93
dGYvQml0bWFwLmgKQEAgLTEwNSwxMSArMTA1LDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0KICAg
ICBwcml2YXRlOgogICAgICAgICBjb25zdCBCaXRtYXAqIG1fYml0bWFwOwogICAgICAgICBzaXpl
X3QgbV9pbmRleDsKQEAgLTEyNCw4ICsxMTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEVh
Y2hOdGhCaXQoc2l6ZV90IG4sIHNpemVfdCBzdGFydCA9IDAsIHNpemVfdCBlbmQgPSBiaXRtYXBT
aXplKTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCaXRtYXAmKSBjb25zdDsKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgQml0bWFwJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEJpdG1hcCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHZvaWQgb3BlcmF0b3J8PShj
b25zdCBCaXRtYXAmKTsKICAgICB2b2lkIG9wZXJhdG9yJj0oY29uc3QgQml0bWFwJik7CkBAIC00
NjcsMjIgKzQ2MSw2IEBAIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46
OnNldEVhY2hOdGhCaXQoc2l6ZV90IG4sIHNpemVfdCBzdGFydCwKICAgICB9CiB9CiAKLXRlbXBs
YXRlPHNpemVfdCBiaXRtYXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJp
dG1hcDxiaXRtYXBTaXplLCBXb3JkVHlwZT46Om9wZXJhdG9yPT0oY29uc3QgQml0bWFwJiBvdGhl
cikgY29uc3QKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdvcmRzOyArK2kpIHsKLSAg
ICAgICAgaWYgKGJpdHNbaV0gIT0gb3RoZXIuYml0c1tpXSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBiaXRt
YXBTaXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KLWlubGluZSBib29sIEJpdG1hcDxiaXRtYXBTaXpl
LCBXb3JkVHlwZT46Om9wZXJhdG9yIT0oY29uc3QgQml0bWFwJiBvdGhlcikgY29uc3QKLXsKLSAg
ICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0KIHRlbXBsYXRlPHNpemVfdCBiaXRtYXBT
aXplLCB0eXBlbmFtZSBXb3JkVHlwZT4KIGlubGluZSB2b2lkIEJpdG1hcDxiaXRtYXBTaXplLCBX
b3JkVHlwZT46Om9wZXJhdG9yfD0oY29uc3QgQml0bWFwJiBvdGhlcikKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0JveFB0ci5oIGIvU291cmNlL1dURi93dGYvQm94UHRyLmgKaW5kZXgg
OTg0ODgwMmQxMDc3YzkxZTVlYWVjMzg5ZmIyYzU4OWJjOWMyNmMzNC4uMTU5MGFlZTM4ZjUwMzA0
NTVkYTVmNjc1ZWM1YTM0MmU5OWUyNTgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQm94
UHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvQm94UHRyLmgKQEAgLTY4LDExICs2OCw2IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3hQdHI8VD4mIGxocywg
Y29uc3QgQm94UHRyPFQ+JiByaHMpCiAgICAgcmV0dXJuICpsaHMgPT0gKnJoczsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJveFB0cjxUPiYgbGhzLCBj
b25zdCBCb3hQdHI8VD4mIHJocykKLXsKLSAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YWRvcHRJbkJveFB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NhZ2VkUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9DYWdlZFB0ci5o
CmluZGV4IDY0YThjMDE4NjQwNTgwMDhhNWU1ZTk5MzkyZGY0NDg3N2YxODk3MWYuLmUyNzc3ODky
Y2Y3MjlhY2VjODBiYWU0Yjk5OWIyNDQwOGRhNTQ0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0NhZ2VkUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ2FnZWRQdHIuaApAQCAtMTI0LDEx
ICsxMjQsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDYWdlZFB0ciYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotICAgIAogICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGdldFVuc2Fm
ZSgpICE9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRleCA5YzFhNWZj
NzQyNDE4NWRkMjk3YTAxYmVkYmZjYTAyY2JlZjE5NTU5Li5mMDNjOWFhYWFmOGIzY2I3ODAyMjQ3
ZjVhMmMzZjM3NDMyODhiZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkQXJp
dGhtZXRpYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRBcml0aG1ldGljLmgKQEAgLTg0
MSw0OCArODQxLDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzICo9IHJocy5tX3Zh
bHVlOwogICAgIH0KIAotICAgIC8vIEVxdWFsaXR5IGNvbXBhcmlzb25zCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFY+IGJvb2wgb3BlcmF0b3I9PShDaGVja2VkPFQsIFY+IHJocykKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihDaGVja2VkIGEsIFUgYikK
ICAgICB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSgpID09IHJocy52YWx1ZSgpOworICAgICAgICBy
ZXR1cm4gYS52YWx1ZSgpIDw9PiBiOwogICAgIH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBV
PiBib29sIG9wZXJhdG9yPT0oVSByaHMpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBv
cGVyYXRvcj09KFUgcmhzKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKHRoaXMtPmhhc092ZXJm
bG93ZWQoKSkKLSAgICAgICAgICAgIHRoaXMtPmNyYXNoKCk7Ci0gICAgICAgIHJldHVybiBzYWZl
RXF1YWxzKG1fdmFsdWUsIHJocyk7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWPiBib29sIG9wZXJhdG9yPT0oQ2hlY2tlZDxVLCBWPiByaHMpCi0gICAg
ewotICAgICAgICByZXR1cm4gdmFsdWUoKSA9PSBDaGVja2VkKHJocy52YWx1ZSgpKTsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvciE9KFUgcmhzKQotICAg
IHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gcmhzKTsKLSAgICB9Ci0KLSAgICAvLyBPdGhl
ciBjb21wYXJpc29ucwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPiBib29sIG9wZXJhdG9yPChD
aGVja2VkPFQsIFY+IHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSgpIDwg
cmhzLnZhbHVlKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+IGJvb2wgb3Bl
cmF0b3I8PShDaGVja2VkPFQsIFY+IHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB2
YWx1ZSgpIDw9IHJocy52YWx1ZSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBW
PiBib29sIG9wZXJhdG9yPihDaGVja2VkPFQsIFY+IHJocykgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiB2YWx1ZSgpID4gcmhzLnZhbHVlKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFY+IGJvb2wgb3BlcmF0b3I+PShDaGVja2VkPFQsIFY+IHJocykgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiB2YWx1ZSgpID49IHJocy52YWx1ZSgpOworICAgICAgICByZXR1cm4g
c2FmZUVxdWFscyh2YWx1ZSgpLCByaHMpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRQdHIu
aAppbmRleCBhMWNmMTYzMWZkY2E5YzJmYThkOTg5YWM3OGQ5NTA5YTNiNzg4M2JmLi4wYTdiMDZh
MjI4NjkzNThhNmRjMmJmMzdmNDAxM2Q1NWU1NDVmMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9DaGVja2VkUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvQ2hlY2tlZFB0ci5oCkBAIC0x
MTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUKiBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV9wdHIgPT0gb3RoZXI7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBib29sIG9wZXJhdG9yPT0oVSogb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09IG90
aGVyOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2hlY2tlZFB0ciYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG1fcHRyID09IG90aGVyLm1fcHRyOyB9CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENoZWNrZWRQdHImKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lIE90aGVyUHRyVHJhaXRzPgogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDaGVja2VkUHRyPE90aGVyVHlwZSwgT3RoZXJQdHJUcmFpdHM+JiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9wdHIgPT0gb3RoZXIubV9wdHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRW
ZWN0b3IuaAppbmRleCA4ODRlZDczMjMzNzYxYTI5ZmI0OTZmMGFkMDk4OTY3NTQ1ZTcwMzQ4Li5m
MWU3ZmY3Y2IyM2U3NWNkODEwZGMyOTVlYzZmZmYyMGY1OThiMzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvQ29uY3Vy
cmVudFZlY3Rvci5oCkBAIC01OSwxMSArNTksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X2luZGV4ID09IG90aGVyLm1faW5kZXggJiYgJm1fdmVjdG9yID09ICZvdGhlci5tX3ZlY3RvcjsK
ICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW5kZXggIT0gb3RoZXIubV9pbmRleCB8fCAmbV92
ZWN0b3IgIT0gJm90aGVyLm1fdmVjdG9yOwotICAgIH0KLQogICAgIENvbmN1cnJlbnRWZWN0b3JJ
dGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IENvbmN1cnJlbnRWZWN0b3JJdGVyYXRvcjxULCBTZWdt
ZW50U2l6ZT4mIG90aGVyKQogICAgIHsKICAgICAgICAgbV92ZWN0b3IgPSBvdGhlci5tX3ZlY3Rv
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvdW50aW5nTG9jay5oIGIvU291cmNlL1dU
Ri93dGYvQ291bnRpbmdMb2NrLmgKaW5kZXggYzdkYjA1ZTExYTY4OTA2OWIyNTY2OWI5YjQ5NzMw
MTM1OTM2MWMxNy4uNTE5M2NiMDM2MjU5NTE1MjA4N2RhODgxZjAyYTIwZGJhYzA3NjAyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ291bnRpbmdMb2NrLmgKKysrIGIvU291cmNlL1dURi93
dGYvQ291bnRpbmdMb2NrLmgKQEAgLTExNSw4ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgcHVibGlj
OgogICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3Zh
bHVlOyB9CiAgICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ291bnQmIG90
aGVyKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7IH0KLSAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENvdW50JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92YWx1
ZSAhPSBvdGhlci5tX3ZhbHVlOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3Vu
dCYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJp
ZW5kIGNsYXNzIENvdW50aW5nTG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGFS
ZWYuaCBiL1NvdXJjZS9XVEYvd3RmL0RhdGFSZWYuaAppbmRleCBhMjRmMmYyOGQ1OTM4NDM1YTdh
ZjI1OTM3ZmY0OTUwNGNlMDA5NTY5Li45NGU1MmQ1ZWRhMDY1NDJhOWQwMjg2YjUyZTE2NDA1YjYw
NmFmNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRhUmVmLmgKKysrIGIvU291cmNl
L1dURi93dGYvRGF0YVJlZi5oCkBAIC04OCwxMSArODgsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX2RhdGEucHRyKCkgPT0gb3RoZXIubV9kYXRhLnB0cigpIHx8IG1fZGF0YS5nZXQoKSA9
PSBvdGhlci5tX2RhdGEuZ2V0KCk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IERhdGFSZWYmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBSZWY8VD4gbV9kYXRhOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmggYi9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0
aC5oCmluZGV4IDA3ZGRmMzg1NDYzM2NiNWU0Y2E5Njc5MzU5YzA0OGYxMzM5NWU0YWIuLjBkN2E2
YjEwN2VhZDY2M2Q1MmViN2Q4NjIxMzdiY2UyZTEwYWZiYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0RhdGVNYXRoLmgKKysrIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaApAQCAtNjYs
MTUgKzY2LDcgQEAgc3RydWN0IExvY2FsVGltZU9mZnNldCB7CiAgICAgewogICAgIH0KIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBMb2NhbFRpbWVPZmZzZXQmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGlzRFNUID09IG90aGVyLmlzRFNUICYmIG9mZnNldCA9PSBvdGhl
ci5vZmZzZXQ7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExvY2FsVGltZU9m
ZnNldCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNEU1QgIT0gb3RoZXIu
aXNEU1QgfHwgb2Zmc2V0ICE9IG90aGVyLm9mZnNldDsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IExvY2FsVGltZU9mZnNldCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGJvb2wg
aXNEU1QgeyBmYWxzZSB9OwogICAgIGludCBvZmZzZXQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9EZXF1ZS5oIGIvU291cmNlL1dURi93dGYvRGVxdWUuaAppbmRleCBjOTUyNDJi
NTg4ZmY2MWEwZTBjYTFmMjQ0ZjcyN2I1YWU3NjkwZDhlLi40M2RlZTA3YmVhMzc3YzEzZWM1OWI1
MWI1Y2FlYWExM2FhYjhlOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EZXF1ZS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0RlcXVlLmgKQEAgLTIwMSw3ICsyMDEsNiBAQCBwdWJsaWM6CiAg
ICAgVCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIEJhc2U6OmFmdGVyKCk7IH0KIAogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIEJh
c2U6OmlzRXF1YWwob3RoZXIpOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9y
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gIUJhc2U6OmlzRXF1YWwob3RoZXIpOyB9CiAKICAgICBJ
dGVyYXRvciYgb3BlcmF0b3IrKygpIHsgQmFzZTo6aW5jcmVtZW50KCk7IHJldHVybiAqdGhpczsg
fQogICAgIC8vIHBvc3RmaXggKysgaW50ZW50aW9uYWxseSBvbWl0dGVkCkBAIC0yMzYsNyArMjM1
LDYgQEAgcHVibGljOgogICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBC
YXNlOjphZnRlcigpOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90
aGVyKSBjb25zdCB7IHJldHVybiBCYXNlOjppc0VxdWFsKG90aGVyKTsgfQotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFCYXNlOjppc0Vx
dWFsKG90aGVyKTsgfQogCiAgICAgSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IEJhc2U6OmluY3Jl
bWVudCgpOyByZXR1cm4gKnRoaXM7IH0KICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlvbmFsbHkg
b21pdHRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5o
IGIvU291cmNlL1dURi93dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oCmluZGV4IDRkZmI3OTYzNGJk
ODY2YjQ0NDhhMjFkODc2YjIxZDg1OWU5N2ViMzAuLjVhMDY0OGEwZTU4NzEyMTk2NmZhNWIzNjBm
Y2YyNDRhNGFhOTc5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0VtYmVkZGVkRml4ZWRW
ZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmgKQEAgLTcy
LDExICs3Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNyZWF0ZShCYXNlOjpiZWdpbigp
LCBCYXNlOjplbmQoKSk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVtYmVk
ZGVkRml4ZWRWZWN0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbWJlZGRl
ZEZpeGVkVmVjdG9yJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChCYXNlOjpzaXpl
KCkgIT0gb3RoZXIuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRXhwZWN0ZWQu
aCBiL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVkLmgKaW5kZXggNzQ3MmZmYWEyMjJjZGNmYTU0NDkx
NDNjMzM2YjQ3ODFkY2QwNGE3ZC4uMWUwNDFiNGYzNDlhM2MyNzQwYmE5MWVhYmY5YzE0ZmI3MzEw
NGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9FeHBlY3RlZC5oCkBAIC01NTksMTkgKzU1OSw5IEBAIHB1YmxpYzoKIH07CiAKIHRl
bXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qg
ZXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiBib29s
KHgpID09IGJvb2woeSkgJiYgKHggPyB4LnZhbHVlKCkgPT0geS52YWx1ZSgpIDogeC5lcnJvcigp
ID09IHkuZXJyb3IoKSk7IH0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yIT0oY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHgsIGNvbnN0IGV4cGVjdGVkPFQs
IEU+JiB5KSB7IHJldHVybiAhKHggPT0geSk7IH0KLQogdGVtcGxhdGU8Y2xhc3MgRT4gY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3RlZDx2b2lkLCBFPiYgeCwgY29uc3QgZXhw
ZWN0ZWQ8dm9pZCwgRT4mIHkpIHsgcmV0dXJuIGJvb2woeCkgPT0gYm9vbCh5KSAmJiAoeCA/IHRy
dWUgOiB4LmVycm9yKCkgPT0geS5lcnJvcigpKTsgfQotCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFz
cyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBj
b25zdCBUJiB5KSB7IHJldHVybiB4ID8gKnggPT0geSA6IGZhbHNlOyB9Ci10ZW1wbGF0ZTxjbGFz
cyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHgsIGNvbnN0
IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiB5ID8geCA9PSAqeSA6IGZhbHNlOyB9Ci10ZW1w
bGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGV4
cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiB4ID8gKnggIT0geSA6IHRydWU7
IH0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0o
Y29uc3QgVCYgeCwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0dXJuIHkgPyB4ICE9ICp5
IDogdHJ1ZTsgfQotCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCB1bmV4cGVjdGVkPEU+JiB5
KSB7IHJldHVybiB4ID8gZmFsc2UgOiB4LmVycm9yKCkgPT0geS52YWx1ZSgpOyB9Ci10ZW1wbGF0
ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHVuZXhw
ZWN0ZWQ8RT4mIHgsIGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiB5ID8gZmFsc2Ug
OiB4LnZhbHVlKCkgPT0geS5lcnJvcigpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25zdCB1
bmV4cGVjdGVkPEU+JiB5KSB7IHJldHVybiB4ID8gdHJ1ZSA6IHguZXJyb3IoKSAhPSB5LnZhbHVl
KCk7IH0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
IT0oY29uc3QgdW5leHBlY3RlZDxFPiYgeCwgY29uc3QgZXhwZWN0ZWQ8VCwgRT4mIHkpIHsgcmV0
dXJuIHkgPyB0cnVlIDogeC52YWx1ZSgpICE9IHkuZXJyb3IoKTsgfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBFPiB2b2lkIHN3YXAoZXhwZWN0ZWQ8VCwgRT4mIHgsIGV4cGVjdGVk
PFQsIEU+JiB5KSB7IHguc3dhcCh5KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9G
YXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggYjUx
ZTdjZGY4YmI1NDQxNDE4NmVkNDAwOGI2ZThkZWYwMTc2YjU4ZC4uYTU0YjkwMjQyMmJmOWI1ODZm
MjU0MmM4MWM1NzYwMDY4NTI4NjkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJp
dFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtMjkyLDEx
ICsyOTIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmFzdEJpdFZlY3RvckltcGwmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLSAgICAKICAg
ICBib29sIGF0KHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBhdElt
cGwoaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oIGIvU291
cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCmluZGV4IDEyNjUyNjZkMTk1ZDFmODg5YmFiODcwMzU0
MDY0Yzc4MTc2ZmY0ZTMuLjk0M2NmZDc1NDc0MDgzNjg5OTNiZjY0ZTlmMWMyZjcxZDMxMDljNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmgKQEAgLTIxMyw3ICsyMTMsNiBAQCBwdWJsaWM6CiB9OwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZhc3RBbGxvY2F0b3I8VD4mLCBjb25zdCBGYXN0QWxsb2NhdG9yPFU+JikgeyByZXR1cm4gdHJ1
ZTsgfQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBGYXN0QWxsb2NhdG9yPFQ+JiwgY29uc3QgRmFzdEFsbG9jYXRvcjxVPiYpIHsg
cmV0dXJuIGZhbHNlOyB9CiAKIHN0cnVjdCBGYXN0TWFsbG9jIHsKICAgICBzdGF0aWMgdm9pZCog
bWFsbG9jKHNpemVfdCBzaXplKSB7IHJldHVybiBmYXN0TWFsbG9jKHNpemUpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRml4ZWRW
ZWN0b3IuaAppbmRleCBiM2FhZGExMjFiNjczNTExNzczNDcyZWVlY2FkNGJkMGEwZDA0ZDNmLi40
NDk5N2E1YzY2MDJiNmE1MzhhNzIwY2VkNGIxZGE1Y2Y3YzFhNjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9y
LmgKQEAgLTEzNCwxMSArMTM0LDYgQEAgcHVibGljOgogICAgICAgICBtX3N0b3JhZ2UtPmZpbGwo
dmFsKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRml4ZWRWZWN0b3I8VD4m
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwot
ICAgIH0KLQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaXhlZFZlY3RvcjxUPiYgb3RoZXIp
IGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1fc3RvcmFnZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRm9yd2FyZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IDNj
ZTc2MTI0MmMzMmVjMTY5NGM2NWE3N2U3NDBlOWM2NjkzYzNiYjQuLjM2NDg3MmEyMDFjNmRiZWZm
Yzk3ZTRjOTBjNjU2MWJmNTlkMDc0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zvcndh
cmQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKQEAgLTE0OSw2ICsxNDksNyBAQCB1
c2luZyBXVEY6OlJlZlB0cjsKIHVzaW5nIFdURjo6UmV0YWluUHRyOwogdXNpbmcgV1RGOjpTSEEx
OwogdXNpbmcgV1RGOjpTY29wZWRMYW1iZGE7Cit1c2luZyBXVEY6OlNlY29uZHM7CiB1c2luZyBX
VEY6OlN0cmluZzsKIHVzaW5nIFdURjo6U3RyaW5nQnVmZmVyOwogdXNpbmcgV1RGOjpTdHJpbmdC
dWlsZGVyOwpAQCAtMTYxLDYgKzE2Miw3IEBAIHVzaW5nIFdURjo6VGV4dFN0cmVhbTsKIHVzaW5n
IFdURjo6VVJMOwogdXNpbmcgV1RGOjpVbmlxdWVSZWY7CiB1c2luZyBXVEY6OlZlY3RvcjsKK3Vz
aW5nIFdURjo6V2FsbFRpbWU7CiB1c2luZyBXVEY6OldlYWtQdHI7CiAKIHRlbXBsYXRlPGNsYXNz
IFQsIGNsYXNzIEU+IHVzaW5nIEV4cGVjdGVkID0gc3RkOjpleHBlcmltZW50YWw6OmV4cGVjdGVk
PFQsIEU+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvR2VuZXJpY1RpbWVNaXhpbi5oIGIv
U291cmNlL1dURi93dGYvR2VuZXJpY1RpbWVNaXhpbi5oCmluZGV4IDQxMjA5NGI1N2MwZTRkNTNi
NGE2ZTMyMmVhNzQ0ODVhMDc2NmFjOGYuLjk0NjY5YzkzZWM0NzI4NzYzODNiOTE5ODUxNDNlNjk2
ODlkOTQ1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0dlbmVyaWNUaW1lTWl4aW4uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9HZW5lcmljVGltZU1peGluLmgKQEAgLTg0LDM1ICs4NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFNlY29uZHMobV92YWx1ZSAtIG90aGVyLm1fdmFsdWUp
OwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgR2VuZXJpY1Rp
bWVNaXhpbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA9PSBv
dGhlci5tX3ZhbHVlOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29u
c3QgR2VuZXJpY1RpbWVNaXhpbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV92YWx1ZSAhPSBvdGhlci5tX3ZhbHVlOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPChjb25zdCBHZW5lcmljVGltZU1peGluJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX3ZhbHVlIDwgb3RoZXIubV92YWx1ZTsKLSAgICB9Ci0KLSAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj4oY29uc3QgR2VuZXJpY1RpbWVNaXhpbiYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA+IG90aGVyLm1fdmFsdWU7Ci0gICAgfQotCi0g
ICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShjb25zdCBHZW5lcmljVGltZU1peGluJiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlIDw9IG90aGVyLm1fdmFsdWU7
Ci0gICAgfQotCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShjb25zdCBHZW5lcmljVGlt
ZU1peGluJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlID49IG90
aGVyLm1fdmFsdWU7Ci0gICAgfQorICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KGNvbnN0IEdl
bmVyaWNUaW1lTWl4aW4mLCBjb25zdCBHZW5lcmljVGltZU1peGluJikgPSBkZWZhdWx0OwogCiAg
ICAgRGVyaXZlZFRpbWUgaXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9IYXNoSXRlcmF0b3JzLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoSXRlcmF0
b3JzLmgKaW5kZXggNmFhMDIxYTU0OTFjNTlhNjc5NjcxOTdlZjI5OGNhZGI4YmNhOTZlMS4uNjMy
NjYwY2NkZjdkMjQ2NWRiY2VjY2IyNWU0ZWEwMzcxMjgyNTg4YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvSGFzaEl0ZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hJdGVyYXRv
cnMuaApAQCAtMjksMTcgKzI5LDEzIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgS2V5VHlwZUFyZywgdHlwZW5hbWUgVmFsdWVUeXBlQXJnPgotICAgIHN0cnVj
dCBLZXlWYWx1ZVBhaXI7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZUFyZywgdHlwZW5h
bWUgVmFsdWVUeXBlQXJnPiBzdHJ1Y3QgS2V5VmFsdWVQYWlyOwogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlw
ZT4gc3RydWN0IEhhc2hUYWJsZUNvbnN0S2V5c0l0ZXJhdG9yOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+
IHN0cnVjdCBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+
IHN0cnVjdCBIYXNoVGFibGVLZXlzSXRlcmF0b3I7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFz
aFRhYmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFwcGVkVHlwZT4gc3RydWN0
IEhhc2hUYWJsZVZhbHVlc0l0ZXJhdG9yOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRh
YmxlVHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRv
ckFkYXB0ZXI7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUg
VmFsdWVUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyOwotCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSGFzaFRhYmxlVHlwZSwgdHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgTWFw
cGVkVHlwZT4gc3RydWN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5
cGUsIEtleVZhbHVlUGFpcjxLZXlUeXBlLCBNYXBwZWRUeXBlPj4gewogICAgIHB1YmxpYzoKICAg
ICAgICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkgPSBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFn
OwpAQCAtOTQsNyArOTAsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgSGFzaFRhYmxlSXRl
cmF0b3JBZGFwdGVyJiBvcGVyYXRvcisrKCkgeyArK21faW1wbDsgcmV0dXJuICp0aGlzOyB9CiAg
ICAgICAgIC8vIHBvc3RmaXggKysgaW50ZW50aW9uYWxseSBvbWl0dGVkCiAKLSAgICAgICAgb3Bl
cmF0b3IgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVU
eXBlPigpIHsKKyAgICAgICAgb3BlcmF0b3IgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8
SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPigpIGNvbnN0CisgICAgICAgIHsKICAgICAgICAgICAg
IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX2ltcGw7CiAgICAg
ICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfQpAQCAtMTc1LDcgKzE3Miw4IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICBIYXNoVGFibGVLZXlzSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7ICsr
bV9pbXBsOyByZXR1cm4gKnRoaXM7IH0KICAgICAgICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25h
bGx5IG9taXR0ZWQKIAotICAgICAgICBvcGVyYXRvciBIYXNoVGFibGVDb25zdEtleXNJdGVyYXRv
cjxIYXNoVGFibGVUeXBlLCBLZXlUeXBlLCBNYXBwZWRUeXBlPigpIHsKKyAgICAgICAgb3BlcmF0
b3IgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3I8SGFzaFRhYmxlVHlwZSwgS2V5VHlwZSwgTWFw
cGVkVHlwZT4oKSBjb25zdAorICAgICAgICB7CiAgICAgICAgICAgICBDb25zdEl0ZXJhdG9yIGkg
PSBtX2ltcGw7CiAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfQpAQCAtMjA1LDcgKzIw
Myw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvciYg
b3BlcmF0b3IrKygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsgfQogICAgICAgICAvLyBwb3N0
Zml4ICsrIGludGVudGlvbmFsbHkgb21pdHRlZAogCi0gICAgICAgIG9wZXJhdG9yIEhhc2hUYWJs
ZUNvbnN0VmFsdWVzSXRlcmF0b3I8SGFzaFRhYmxlVHlwZSwgS2V5VHlwZSwgTWFwcGVkVHlwZT4o
KSB7CisgICAgICAgIG9wZXJhdG9yIEhhc2hUYWJsZUNvbnN0VmFsdWVzSXRlcmF0b3I8SGFzaFRh
YmxlVHlwZSwgS2V5VHlwZSwgTWFwcGVkVHlwZT4oKSBjb25zdAorICAgICAgICB7CiAgICAgICAg
ICAgICBDb25zdEl0ZXJhdG9yIGkgPSBtX2ltcGw7CiAgICAgICAgICAgICByZXR1cm4gaTsKICAg
ICAgICAgfQpAQCAtMjE5LDQ2ICsyMTgsMjIgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJl
dHVybiBhLm1faW1wbCA9PSBiLm1faW1wbDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEhhc2hUYWJsZUNvbnN0S2V5c0l0ZXJhdG9yPFQsIFUsIFY+JiBhLCBjb25zdCBI
YXNoVGFibGVDb25zdEtleXNJdGVyYXRvcjxULCBVLCBWPiYgYikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgogICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEhhc2hUYWJsZUNvbnN0VmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGEsIGNvbnN0
IEhhc2hUYWJsZUNvbnN0VmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGIpCiAgICAgewogICAgICAg
ICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICAgICAgaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yPFQsIFUsIFY+JiBhLCBj
b25zdCBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yPFQsIFUsIFY+JiBiKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGEubV9pbXBsICE9IGIubV9pbXBsOwotICAgIH0KLQogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiAgICAgICAgIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgSGFzaFRhYmxlS2V5c0l0ZXJhdG9yPFQsIFUsIFY+JiBhLCBjb25z
dCBIYXNoVGFibGVLZXlzSXRlcmF0b3I8VCwgVSwgVj4mIGIpCiAgICAgewogICAgICAgICByZXR1
cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBIYXNoVGFibGVLZXlzSXRlcmF0b3I8VCwgVSwgVj4mIGEsIGNvbnN0IEhhc2hUYWJs
ZUtleXNJdGVyYXRvcjxULCBVLCBWPiYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLm1faW1w
bCAhPSBiLm1faW1wbDsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWPgogICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhh
c2hUYWJsZVZhbHVlc0l0ZXJhdG9yPFQsIFUsIFY+JiBhLCBjb25zdCBIYXNoVGFibGVWYWx1ZXNJ
dGVyYXRvcjxULCBVLCBWPiYgYikKICAgICB7CiAgICAgICAgIHJldHVybiBhLm1faW1wbCA9PSBi
Lm1faW1wbDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJs
ZVZhbHVlc0l0ZXJhdG9yPFQsIFUsIFY+JiBhLCBjb25zdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRv
cjxULCBVLCBWPiYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1w
bDsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvSGFzaE1hcC5oIGIvU291cmNlL1dURi93dGYvSGFzaE1hcC5oCmluZGV4IDI2YWRkYzQxZTQ3
NTE2OGI4MTE4NzU1YTY0MzRiMWUwNjNmMGQ4YTkuLmUyYWExYTI4MTNiM2E2NTg0MGUxYmMxZGE1
ZTY2Yzc1MDE5OTc1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKQEAgLTYwNiwxMiArNjA2LDYgQEAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT4mIGEsIGNvbnN0IEhhc2hNYXA8
VCwgVSwgViwgVywgWCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWCwgdHlwZW5h
bWUgWT4KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBY
LCBZPiYgYSwgY29uc3QgSGFzaE1hcDxULCBVLCBWLCBXLCBYLCBZPiYgYikKLXsKLSAgICByZXR1
cm4gIShhID09IGIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpIYXNo
TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFNldC5oIGIvU291cmNlL1dURi93
dGYvSGFzaFNldC5oCmluZGV4IDQ2ZTViYjk1YjhhMTYyYTkzM2ExZTI1NzNlZGRlNjcwZDQ0NTAy
MTguLjU2N2MxNzc1YjU2MzdhNDYyY2Y4OGJlOGFjZDFlYmZjYjFkMjhlZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgK
QEAgLTE0Miw5ICsxNDIsNiBAQCBwdWJsaWM6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhl
ckNvbGxlY3Rpb24+CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE90aGVyQ29sbGVjdGlvbiYp
IGNvbnN0OwotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQ29sbGVjdGlvbj4KLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3RoZXJDb2xsZWN0aW9uJikgY29uc3Q7CiAKICAgICB2
b2lkIGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdDsKIApAQCAtNDIyLDEzICs0MTksNiBAQCBpbmxp
bmUgYm9vbCBIYXNoU2V0PFQsIFUsIFYsIFc+OjpvcGVyYXRvcj09KGNvbnN0IE90aGVyQ29sbGVj
dGlvbiYgb3RoZXJDb2xsZWN0aQogICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXPgotdGVtcGxhdGU8dHlw
ZW5hbWUgT3RoZXJDb2xsZWN0aW9uPgotaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWLCBXPjo6
b3BlcmF0b3IhPShjb25zdCBPdGhlckNvbGxlY3Rpb24mIG90aGVyQ29sbGVjdGlvbikgY29uc3QK
LXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlckNvbGxlY3Rpb24pOwotfQotCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXPgogdm9pZCBI
YXNoU2V0PFQsIFUsIFYsIFc+OjphZGQoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cmVmZXJl
bmNlX3dyYXBwZXI8Y29uc3QgVmFsdWVUeXBlPj4gbGlzdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKaW5kZXgg
MmU2NDQxNGY3YWMwNjNiMWM5YzJmYjU0MDdmZjFhYjVjZjlkMzU0MS4uMTYxMzc5ZjI3OWNlZDlk
NDU2MGEwMGZkMDFhMjc4ODVmMDhjZjRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFz
aFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTIwNSwxOSArMjA1
LDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7
CiAgICAgICAgICAgICBjaGVja1ZhbGlkaXR5KG90aGVyKTsKICAgICAgICAgICAgIHJldHVybiBt
X3Bvc2l0aW9uID09IG90aGVyLm1fcG9zaXRpb247CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7Ci0gICAgICAgICAgICByZXR1cm4gbV9w
b3NpdGlvbiAhPSBvdGhlci5tX3Bvc2l0aW9uOwotICAgICAgICB9CiAgICAgICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiAqdGhpcyA9PSBzdGF0aWNfY2FzdDxjb25zdF9pdGVyYXRvcj4ob3RoZXIpOwog
ICAgICAgICB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIp
IGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAqdGhpcyAhPSBzdGF0aWNfY2Fz
dDxjb25zdF9pdGVyYXRvcj4ob3RoZXIpOwotICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2b2lkIGNoZWNrVmFsaWRpdHkoKSBjb25zdApAQCAtMjkwLDkgKzI4MSw3IEBAIERFQ0xB
UkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAKICAgICAgICAg
Ly8gQ29tcGFyaXNvbi4KICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciA9PSBvdGhlci5tX2l0ZXJhdG9yOyB9Ci0g
ICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1faXRlcmF0b3IgIT0gb3RoZXIubV9pdGVyYXRvcjsgfQogICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJh
dG9yID09IG90aGVyOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjb25zdF9pdGVy
YXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3IgIT0gb3RoZXI7IH0KIAogICAg
ICAgICBvcGVyYXRvciBjb25zdF9pdGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3I7
IH0KIApAQCAtMzA1LDggKzI5NCw4IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVO
VElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1
bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6aGFzaChr
ZXkpOyB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBi
b29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6
OmVxdWFsKGEsIGIpOyB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFY+IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgY29uc3QgVSYs
IFYmJiB2YWx1ZSkKLSAgICAgICAgeyAKLSAgICAgICAgICAgIFZhbHVlVHJhaXRzOjphc3NpZ25U
b0VtcHR5KGxvY2F0aW9uLCBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpKTsgCisgICAgICAgIHsKKyAg
ICAgICAgICAgIFZhbHVlVHJhaXRzOjphc3NpZ25Ub0VtcHR5KGxvY2F0aW9uLCBzdGQ6OmZvcndh
cmQ8Vj4odmFsdWUpKTsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTQyMiw5ICs0MTEsOSBAQCBE
RUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogI2VuZGlm
CiAKICAgICAgICAgSGFzaFRhYmxlKCk7Ci0gICAgICAgIH5IYXNoVGFibGUoKSAKKyAgICAgICAg
fkhhc2hUYWJsZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMo
dGhpcyk7IAorICAgICAgICAgICAgaW52YWxpZGF0ZUl0ZXJhdG9ycyh0aGlzKTsKICAgICAgICAg
ICAgIGlmIChtX3RhYmxlKQogICAgICAgICAgICAgICAgIGRlYWxsb2NhdGVUYWJsZShtX3RhYmxl
KTsKICNpZiBDSEVDS19IQVNIVEFCTEVfVVNFX0FGVEVSX0RFU1RSVUNUSU9OCkBAIC0xMDc4LDcg
KzEwNjcsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFi
bGUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUs
IHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJh
aXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFu
c2xhdG9yLCB0eXBlbmFtZSBUPiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRyYW5zbGF0
b3IsIHR5cGVuYW1lIFQ+CiAgICAgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmZpbmQoY29uc3QgVCYga2V5KSAt
PiBpdGVyYXRvcgogICAgIHsKICAgICAgICAgaWYgKCFtX3RhYmxlKQpAQCAtMTA5Miw3ICsxMDgx
LDcgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBl
bmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywg
dHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoVHJhbnNsYXRv
ciwgdHlwZW5hbWUgVD4gCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0
eXBlbmFtZSBUPgogICAgIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IFQmIGtleSkgY29uc3Qg
LT4gY29uc3RfaXRlcmF0b3IKICAgICB7CiAgICAgICAgIGlmICghbV90YWJsZSkKQEAgLTExMDYs
NyArMTA5NSw3IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hU
YWJsZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1
ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBU
cmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRy
YW5zbGF0b3IsIHR5cGVuYW1lIFQ+IAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoVHJhbnNs
YXRvciwgdHlwZW5hbWUgVD4KICAgICBib29sIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0
b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5VHJhaXRzPjo6Y29udGFpbnMoY29uc3QgVCYg
a2V5KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX3RhYmxlKQpAQCAtMTYxNyw3ICsxNjA2
LDggQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsK
ICAgICAgICAgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyJiBvcGVyYXRvcisrKCkgeyArK21faW1w
bDsgcmV0dXJuICp0aGlzOyB9CiAgICAgICAgIC8vIHBvc3RmaXggKysgaW50ZW50aW9uYWxseSBv
bWl0dGVkCiAKLSAgICAgICAgb3BlcmF0b3IgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8
SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPigpIHsKKyAgICAgICAgb3BlcmF0b3IgSGFzaFRhYmxl
Q29uc3RJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPigpIGNvbnN0Cisg
ICAgICAgIHsKICAgICAgICAgICAgIHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OmNvbnN0X2l0ZXJh
dG9yIGkgPSBtX2ltcGw7CiAgICAgICAgICAgICByZXR1cm4gaTsKICAgICAgICAgfQpAQCAtMTYz
MSw0OSArMTYyMSwxOCBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihI
YXNoVGFibGUpOwogICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgICBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBj
b25zdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
SGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFibGVJdGVyYXRv
ckFkYXB0ZXI8VCwgVT4mIGIpCiAgICAgewogICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5t
X2ltcGw7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAg
ICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxU
LCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBiKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGEubV9pbXBsICE9IGIubV9pbXBsOwotICAgIH0KLQotICAgIC8vIEFs
bCA0IGNvbWJpbmF0aW9ucyBvZiA9PSwgIT0gYW5kIENvbnN0LG5vbiBjb25zdC4KICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hU
YWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikKICAgICB7CiAgICAgICAgIHJldHVybiBhLm1f
aW1wbCA9PSBiLm1faW1wbDsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPgotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxlQ29uc3RJ
dGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxU
LCBVPiYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1wbDsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBj
b25zdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhLm1faW1wbCA9PSBiLm1faW1wbDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFibGVDb25zdEl0
ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLm1faW1wbCAh
PSBiLm1faW1wbDsKLSAgICB9Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjaW5jbHVkZSA8d3Rm
L0hhc2hJdGVyYXRvcnMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0luZGV4U2V0Lmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9JbmRleFNldC5oCmluZGV4IDE2MzY1Mjc2ZjQ5ZTg1MTRhNjU0N2M2
NGRkZDIzNDVlYTY0YjNhMzUuLmE2MjAxYTEyYzVjYzhmNzNkYWFhNTQyMzNiZDI0M2EzZWI0MTIw
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0luZGV4U2V0LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvSW5kZXhTZXQuaApAQCAtMTIwLDExICsxMjAsNiBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1faXRlciA9PSBvdGhlci5tX2l0ZXI7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwot
ICAgICAgICAgICAgfQotCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBjb25zdCBDb2xs
ZWN0aW9uVHlwZSogbV9jb2xsZWN0aW9uOwogICAgICAgICAgICAgQml0VmVjdG9yOjppdGVyYXRv
ciBtX2l0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkQ29udGFpbmVySXRl
cmF0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5oCmluZGV4
IGQ3YTEyYmM4N2Q1NTEyNzdjZGNlNjdkMWE4MjkzMWM4N2FkOWEwMDEuLjk1NjFlN2VhNzEyZTM1
ZjQ3MzBhNGZkMzA3ZTkyZWZiMjE2NGI3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0lu
ZGV4ZWRDb250YWluZXJJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0luZGV4ZWRDb250
YWluZXJJdGVyYXRvci5oCkBAIC02MiwxMSArNjIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEluZGV4ZWRDb250YWluZXJJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCiBwcml2YXRlOgogICAgIHVu
c2lnbmVkIGZpbmROZXh0KHVuc2lnbmVkIGluZGV4KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0luc2VydGlvbi5oIGIvU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgKaW5kZXgg
NGYxZDM3NGRmZDQ0OTE3ZmE2YWU5ZTM0MjRmZDdjZTFiYTk2NDJhOS4uZjRjYmI5NmFhOGZiYzVk
MDAyMzI5MTc0NWQ5NjYxNjE0MmIzMmNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSW5z
ZXJ0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmgKQEAgLTQ0LDEwICs0NCw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBUJiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVt
ZW50OyB9CiAgICAgVCYgZWxlbWVudCgpIHsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgIAotICAg
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IEluc2VydGlvbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9pbmRleCA8IG90aGVyLm1faW5kZXg7Ci0gICAgfQorICAgIGZyaWVuZCBh
dXRvIG9wZXJhdG9yPD0+KGNvbnN0IEluc2VydGlvbiYgYSwgY29uc3QgSW5zZXJ0aW9uJiBiKSB7
IHJldHVybiBhLm1faW5kZXggPD0+IGIubV9pbmRleDsgfQogICAgIAogcHJpdmF0ZToKICAgICBz
aXplX3QgbV9pbmRleCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ludDEyOC5o
IGIvU291cmNlL1dURi93dGYvSW50MTI4LmgKaW5kZXggMWFmZGM5Y2UxNmUyOWFiZjZiNjFlYzM1
OWY1MmE3ZTVmODNkYTJlNS4uNTQzYmQ2NDI0NmIyNDY3YTUxY2Y4YzgyZWM4NWZkNmIzMjM0YTRj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSW50MTI4LmgKKysrIGIvU291cmNlL1dURi93
dGYvSW50MTI4LmgKQEAgLTY4NCw4ICs2ODQsNiBAQCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KFVJbnQxMjhJbXBsIGxocywgVUludDEyOEltcGwgcmhzKSB7CiAgICAgICAgICAgVUludDEyOEhp
Z2g2NChsaHMpID09IFVJbnQxMjhIaWdoNjQocmhzKSk7CiB9CiAKLWNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yIT0oVUludDEyOEltcGwgbGhzLCBVSW50MTI4SW1wbCByaHMpIHsgcmV0dXJuICEobGhz
ID09IHJocyk7IH0KLQogY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KFVJbnQxMjhJbXBsIGxocywg
VUludDEyOEltcGwgcmhzKSB7CiAgIHJldHVybiAoVUludDEyOEhpZ2g2NChsaHMpID09IFVJbnQx
MjhIaWdoNjQocmhzKSkKICAgICAgICAgICAgICA/IChVSW50MTI4TG93NjQobGhzKSA8IFVJbnQx
MjhMb3c2NChyaHMpKQpAQCAtOTQxLDkgKzkzOSw2IEBAIGlubGluZSBJbnQxMjhJbXBsJiBJbnQx
MjhJbXBsOjpvcGVyYXRvcj4+PShpbnQgYW1vdW50KSB7CiAgIHJldHVybiAqdGhpczsKIH0KIAot
Ly8gRm9yd2FyZCBkZWNsYXJhdGlvbiBmb3IgY29tcGFyaXNvbiBvcGVyYXRvcnMuCi1jb25zdGV4
cHIgYm9vbCBvcGVyYXRvciE9KEludDEyOEltcGwgbGhzLCBJbnQxMjhJbXBsIHJocyk7Ci0KIG5h
bWVzcGFjZSBpbnQxMjhfaW50ZXJuYWwgewogCiAvLyBDYXN0cyBmcm9tIHVuc2lnbmVkIHRvIHNp
Z25lZCB3aGlsZSBwcmVzZXJ2aW5nIHRoZSB1bmRlcmx5aW5nIGJpbmFyeQpAQCAtMTExNSwyNCAr
MTExMCwxMiBAQCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KEludDEyOEltcGwgbGhzLCBJbnQx
MjhJbXBsIHJocykgewogICAgICAgICAgIEludDEyOEhpZ2g2NChsaHMpID09IEludDEyOEhpZ2g2
NChyaHMpKTsKIH0KIAotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShJbnQxMjhJbXBsIGxocywg
SW50MTI4SW1wbCByaHMpIHsgcmV0dXJuICEobGhzID09IHJocyk7IH0KLQotY29uc3RleHByIGJv
b2wgb3BlcmF0b3I8KEludDEyOEltcGwgbGhzLCBJbnQxMjhJbXBsIHJocykgewotICByZXR1cm4g
KEludDEyOEhpZ2g2NChsaHMpID09IEludDEyOEhpZ2g2NChyaHMpKQotICAgICAgICAgICAgID8g
KEludDEyOExvdzY0KGxocykgPCBJbnQxMjhMb3c2NChyaHMpKQotICAgICAgICAgICAgIDogKElu
dDEyOEhpZ2g2NChsaHMpIDwgSW50MTI4SGlnaDY0KHJocykpOwotfQotCi1jb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj4oSW50MTI4SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKSB7Citjb25zdGV4cHIg
YXV0byBvcGVyYXRvcjw9PihJbnQxMjhJbXBsIGxocywgSW50MTI4SW1wbCByaHMpIHsKICAgcmV0
dXJuIChJbnQxMjhIaWdoNjQobGhzKSA9PSBJbnQxMjhIaWdoNjQocmhzKSkKLSAgICAgICAgICAg
ICA/IChJbnQxMjhMb3c2NChsaHMpID4gSW50MTI4TG93NjQocmhzKSkKLSAgICAgICAgICAgICA6
IChJbnQxMjhIaWdoNjQobGhzKSA+IEludDEyOEhpZ2g2NChyaHMpKTsKKyAgICAgICAgICAgICA/
IChJbnQxMjhMb3c2NChsaHMpIDw9PiBJbnQxMjhMb3c2NChyaHMpKQorICAgICAgICAgICAgIDog
KEludDEyOEhpZ2g2NChsaHMpIDw9PiBJbnQxMjhIaWdoNjQocmhzKSk7CiB9CiAKLWNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPD0oSW50MTI4SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKSB7IHJldHVy
biAhKGxocyA+IHJocyk7IH0KLQotY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShJbnQxMjhJbXBs
IGxocywgSW50MTI4SW1wbCByaHMpIHsgcmV0dXJuICEobGhzIDwgcmhzKTsgfQotCiAvLyBVbmFy
eSBvcGVyYXRvcnMuCiAKIGNvbnN0ZXhwciBJbnQxMjhJbXBsIG9wZXJhdG9yLShJbnQxMjhJbXBs
IHYpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ludGVyZmVyZW5jZUdyYXBoLmggYi9T
b3VyY2UvV1RGL3d0Zi9JbnRlcmZlcmVuY2VHcmFwaC5oCmluZGV4IDA0MmZhZGE5YjYwN2Q0OTMy
YmQ3NGRiYTJmY2EyYjYxZjAzN2FhNzUuLmRkYjlkZDJjZjc5MDE3YTU4NjcxYzI1ZWM5Yzk3MTZm
YTlkMGE5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ludGVyZmVyZW5jZUdyYXBoLmgK
KysrIGIvU291cmNlL1dURi93dGYvSW50ZXJmZXJlbmNlR3JhcGguaApAQCAtMTM0LDExICsxMzQs
NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9p
bmRleDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGNv
bnN0IEl0ZXJhYmxlJiBtX2l0ZXJhYmxlOwogICAgICAgICAgICAgdW5zaWduZWQgbV9pbmRleDsK
ICAgICAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yQWRhcHRvcnMu
aCBiL1NvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yQWRhcHRvcnMuaAppbmRleCBhNGUwN2ViYTI4Yjg2
M2FiZWI0NjkzNzI1YzliMjMzYTIyZjIzYjQ3Li4yMzk4NWQ1MDg0ZWMxODBkMDczYzQyMmY5ZmZl
MGIzOTQ3ZTQ3M2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JdGVyYXRvckFkYXB0b3Jz
LmgKKysrIGIvU291cmNlL1dURi93dGYvSXRlcmF0b3JBZGFwdG9ycy5oCkBAIC05NSw4ICs5NSw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fdHJhbnNmb3JtKCptX2l0ZXIpOwogICAgIH0K
IAotICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtSXRlcmF0b3ImIG90
aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXIgPT0gb3RoZXIubV9pdGVyOyB9Ci0gICAgaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBUcmFuc2Zvcm1JdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG1faXRlciAhPSBvdGhlci5tX2l0ZXI7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVHJhbnNmb3JtSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXIgPT0gb3Ro
ZXIubV9pdGVyOyB9CiAKIHByaXZhdGU6CiAgICAgY29uc3QgVHJhbnNmb3JtIG1fdHJhbnNmb3Jt
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvS2V5VmFsdWVQYWlyLmggYi9Tb3VyY2UvV1RG
L3d0Zi9LZXlWYWx1ZVBhaXIuaAppbmRleCBmZmViNTdmMzlmMGQwNWJlZTRlNmU2ZTgzOWFlNTY0
YWEzNDJiZGFkLi5lNjczZjEzZWJhYzNiNTEyZmY4M2U1MWExYzMxN2EyMmI0NTNkZDJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9LZXlWYWx1ZVBhaXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9LZXlWYWx1ZVBhaXIuaApAQCAtNjAsNiArNjAsOCBAQCBzdHJ1Y3QgS2V5VmFsdWVQYWlyIHsK
ICAgICB7CiAgICAgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleVZhbHVlUGFpciYp
IGNvbnN0ID0gZGVmYXVsdDsKKwogICAgIEtleVR5cGUga2V5OwogICAgIFZhbHVlVHlwZSB2YWx1
ZSB7IH07CiB9OwpAQCAtNzAsMTEgKzcyLDYgQEAgaW5saW5lIEtleVZhbHVlUGFpcjx0eXBlbmFt
ZSBzdGQ6OmRlY2F5PEs+Ojp0eXBlLCB0eXBlbmFtZSBzdGQ6OmRlY2F5PFY+Ojp0eXBlPgogICAg
IHJldHVybiBLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgc3RkOjpkZWNheTxLPjo6dHlwZSwgdHlwZW5h
bWUgc3RkOjpkZWNheTxWPjo6dHlwZT4geyBzdGQ6OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3
YXJkPFY+KHZhbHVlKSB9OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXlUeXBlLCB0eXBlbmFt
ZSBWYWx1ZVR5cGU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5VmFsdWVQYWly
PEtleVR5cGUsIFZhbHVlVHlwZT4mIGEsIGNvbnN0IEtleVZhbHVlUGFpcjxLZXlUeXBlLCBWYWx1
ZVR5cGU+JiBiKQotewotICAgIHJldHVybiBhLmtleSA9PSBiLmtleSAmJiBhLnZhbHVlID09IGIu
dmFsdWU7Ci19Ci0KIH0KIAogdXNpbmcgV1RGOjpLZXlWYWx1ZVBhaXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9MaWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5oIGIvU291cmNlL1dU
Ri93dGYvTGlrZWx5RGVuc2VVbnNpZ25lZEludGVnZXJTZXQuaAppbmRleCA1MTQxNmNlZmVhODhl
NDk5YTdiODU3Y2U1ZTQ4MzE3N2I1ZDcxZWM3Li4zZjVjODY1MGRlNmJmZjMwNDFiOTNjMTU2MDE0
MTNlOThjOWNiNzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9MaWtlbHlEZW5zZVVuc2ln
bmVkSW50ZWdlclNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xpa2VseURlbnNlVW5zaWduZWRJ
bnRlZ2VyU2V0LmgKQEAgLTIwOSwxNCArMjA5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IFtdKGNvbnN0IHR5cGVuYW1lIFNldDo6aXRlcmF0b3ImIGl0KSAtPiBJbmRleFR5cGUgeyByZXR1
cm4gKml0OyB9KTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBp
dGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX3Vu
ZGVybHlpbmcgPT0gb3RoZXIubV91bmRlcmx5aW5nICYmIG1fc2hpZnQgPT0gb3RoZXIubV9zaGlm
dDsKLSAgICAgICAgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90
aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV91bmRlcmx5aW5nICE9
IG90aGVyLm1fdW5kZXJseWluZyB8fCBtX3NoaWZ0ICE9IG90aGVyLm1fc2hpZnQ7Ci0gICAgICAg
IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJikgY29uc3QgPSBkZWZh
dWx0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RkOjp2YXJpYW50PEJpdFZlY3Rvcjo6aXRl
cmF0b3IsIHR5cGVuYW1lIFNldDo6aXRlcmF0b3I+IG1fdW5kZXJseWluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNl
dC5oCmluZGV4IDkxNjQ1NjZjZDIzN2QwZmEyZjcxZWNjMGYzNjg4NjY4ODFkODdmZDkuLjQ1MGYx
ZjQzYmEwZmQ1YzUwN2YxMjJmMmRmNDRlNjRmMDgyMjI4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0xpc3RIYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaApA
QCAtMjMxLDkgKzIzMSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIHBvc3RmaXggLS0gaW50ZW50aW9u
YWxseSBvbWl0dGVkCiAKLSAgICAvLyBDb21wYXJpc29uLgotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3IgPT0gb3RoZXIu
bV9pdGVyYXRvcjsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3IgIT0gb3RoZXIubV9pdGVyYXRvcjsgfQorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIG9w
ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQogCkBA
IC0zMjYsMTAgKzMyNCw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Bvc2l0
aW9uID09IG90aGVyLm1fcG9zaXRpb247CiAgICAgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBjb25zdF9pdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9w
b3NpdGlvbiAhPSBvdGhlci5tX3Bvc2l0aW9uOwotICAgIH0KIAogcHJpdmF0ZToKICAgICBOb2Rl
KiBub2RlKCkgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvTGl2ZW5lc3MuaCBiL1NvdXJjZS9XVEYvd3RmL0xpdmVuZXNzLmgKaW5kZXggYzJmOGY5NjI2
YjhiYTM1NjE3MzY4MTg4YmFkNGVkNzFiMWIyNzNkNS4uMWQyZGU0ZDZkYjRjZjVmOTJlNTU3OTk4
MzQ1MDI1N2EyODIzNDBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTGl2ZW5lc3MuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9MaXZlbmVzcy5oCkBAIC03NywyOSArNzcsMjggQEAgcHVibGlj
OgogICAgICAgICAgICAgY2xhc3MgaXRlcmF0b3IgewogICAgICAgICAgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgICAgIGl0
ZXJhdG9yKEFkYXB0ZXImIGFkYXB0ZXIsIFdvcmtzZXQ6OmNvbnN0X2l0ZXJhdG9yIHNwYXJjZVNl
dEl0ZXJhdG9yKQorICAgICAgICAgICAgICAgIGl0ZXJhdG9yKEFkYXB0ZXImIGFkYXB0ZXIsIFdv
cmtzZXQ6OmNvbnN0X2l0ZXJhdG9yIHNwYXJzZVNldEl0ZXJhdG9yKQogICAgICAgICAgICAgICAg
ICAgICA6IG1fYWRhcHRlcihhZGFwdGVyKQotICAgICAgICAgICAgICAgICAgICAsIG1fc3BhcmNl
U2V0SXRlcmF0b3Ioc3BhcmNlU2V0SXRlcmF0b3IpCisgICAgICAgICAgICAgICAgICAgICwgbV9z
cGFyc2VTZXRJdGVyYXRvcihzcGFyc2VTZXRJdGVyYXRvcikKICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKyso
KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgKyttX3NwYXJjZVNldEl0
ZXJhdG9yOworICAgICAgICAgICAgICAgICAgICArK21fc3BhcnNlU2V0SXRlcmF0b3I7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgICAgICB0eXBlbmFtZSBBZGFwdGVyOjpUaGluZyBvcGVyYXRvciooKSBjb25zdAogICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fYWRhcHRlci5pbmRl
eFRvVmFsdWUoKm1fc3BhcmNlU2V0SXRlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbV9hZGFwdGVyLmluZGV4VG9WYWx1ZSgqbV9zcGFyc2VTZXRJdGVyYXRvcik7CiAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9zcGFyY2VTZXRJdGVyYXRvciA9PSBvdGhlci5t
X3NwYXJjZVNldEl0ZXJhdG9yOyB9Ci0gICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9zcGFyY2VTZXRJdGVyYXRvciAh
PSBvdGhlci5tX3NwYXJjZVNldEl0ZXJhdG9yOyB9CisgICAgICAgICAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9zcGFyc2VTZXRJ
dGVyYXRvciA9PSBvdGhlci5tX3NwYXJzZVNldEl0ZXJhdG9yOyB9CiAKICAgICAgICAgICAgIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgQWRhcHRlciYgbV9hZGFwdGVyOwotICAgICAgICAgICAg
ICAgIFdvcmtzZXQ6OmNvbnN0X2l0ZXJhdG9yIG1fc3BhcmNlU2V0SXRlcmF0b3I7CisgICAgICAg
ICAgICAgICAgV29ya3NldDo6Y29uc3RfaXRlcmF0b3IgbV9zcGFyc2VTZXRJdGVyYXRvcjsKICAg
ICAgICAgICAgIH07CiAKICAgICAgICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1
cm4gaXRlcmF0b3IobV9saXZlbmVzcywgbV9saXZlbmVzcy5tX3dvcmtzZXQuYmVnaW4oKSk7IH0K
QEAgLTE5OSwxMSArMTk4LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBtX2l0
ZXIgPT0gb3RoZXIubV9pdGVyOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgICAgIH0KLQog
ICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgTGl2ZW5lc3MqIG1fbGl2ZW5lc3M7CiAgICAg
ICAgICAgICB0eXBlbmFtZSBVbmRlcmx5aW5nSXRlcmFibGU6OmNvbnN0X2l0ZXJhdG9yIG1faXRl
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xvY2suaCBiL1NvdXJjZS9XVEYvd3RmL0xv
Y2suaAppbmRleCA0MmU0YWFjMGM5YTRhYWU1OWU3MWI1ZTkzNThjYjg2MDE4ZDdlNDNhLi5jOGY2
YzMwZDJmMDcwZDMxNjkwYzY0MmViYjdiYjc2ZWE3Njk5MDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Mb2NrLmgKKysrIGIvU291cmNlL1dURi93dGYvTG9jay5oCkBAIC0yNiwxMCArMjYs
MTAgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9ja0FsZ29yaXRobS5oPgogI2luY2x1ZGUgPHd0Zi9M
b2NrZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvU2Vj
b25kcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZldHlBbmFseXNpcy5oPgogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2dnaW5nSGFz
aFNldC5oIGIvU291cmNlL1dURi93dGYvTG9nZ2luZ0hhc2hTZXQuaAppbmRleCAwNzAwZDUxNjQ0
NmZhNjBiNzllYTM2NGM1YTY5ZjM5NDg1MGJjMjQ3Li41NmRjN2IwZGViNjBmOGJlZmViMTM3YmY4
ZmRiZGZiNzQ1OTI2ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Mb2dnaW5nSGFzaFNl
dC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dpbmdIYXNoU2V0LmgKQEAgLTIzNSwxMiArMjM1
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3RoZXJDb2xsZWN0aW9uPgotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBPdGhlckNvbGxlY3Rpb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLSAgICAKIHByaXZhdGU6CiAgICAgSGFzaFNldCBtX3Nl
dDsKICAgICBMb2dnaW5nSGFzaElEIG1faWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9N
YXJrYWJsZS5oIGIvU291cmNlL1dURi93dGYvTWFya2FibGUuaAppbmRleCAxMGVlY2MzYTIyZmUy
ZGU4MzdjY2ZkNzkxMWQ0MTc1ZTI3YWM3MzJlLi45OTI4NTFmMzk2NDk5MjdkYzM5NTUxOGE5ZTE3
ZTMzYzY2NWQ2MzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYXJrYWJsZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL01hcmthYmxlLmgKQEAgLTE2MCwxMSArMTYwLDYgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBNYXJrYWJsZTwKICAgICByZXR1cm4geC52YWx1ZSgpID09IHkudmFsdWUoKTsKIH0KIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPT0oY29uc3QgTWFya2FibGU8VCwgVHJhaXRzPiYgeCwgY29uc3QgVCYgdikgeyByZXR1cm4g
Ym9vbCh4KSAmJiB4LnZhbHVlKCkgPT0gdjsgfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFRyYWl0cz4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB2LCBjb25zdCBN
YXJrYWJsZTxULCBUcmFpdHM+JiB4KSB7IHJldHVybiBib29sKHgpICYmIHYgPT0geC52YWx1ZSgp
OyB9Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTWFya2FibGU8VCwgVHJhaXRzPiYgeCwgY29uc3QgTWFya2Fi
bGU8VCwgVHJhaXRzPiYgeSkgeyByZXR1cm4gISh4ID09IHkpOyB9Ci10ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVHJhaXRzPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1h
cmthYmxlPFQsIFRyYWl0cz4mIHgsIGNvbnN0IFQmIHYpIHsgcmV0dXJuICEoeCA9PSB2KTsgfQot
dGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBUJiB2LCBjb25zdCBNYXJrYWJsZTxULCBUcmFpdHM+JiB4KSB7IHJldHVy
biAhKHYgPT0geCk7IH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL01lZGlhVGltZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCmlu
ZGV4IDIyNGU3NzQ5NWZiOTM4MzRmNThmOWNmMzIzNDM3ZjM5MTY5Mzk0MmYuLjI0YWZiM2NhZTkx
ZjQ2Mjk1N2NiZjZkMjJhYWM5ZWEzN2VlMWYxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L01lZGlhVGltZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcApAQCAtNzIs
OSArNzIsOSBAQCBzdGF0aWMgaW50NjRfdCBzaWdudW0oaW50NjRfdCB2YWwpCiAKIGNvbnN0IHVp
bnQzMl90IE1lZGlhVGltZTo6TWF4aW11bVRpbWVTY2FsZSA9IDEwMDAwMDAwMDA7CiAKLU1lZGlh
VGltZTo6TWVkaWFUaW1lKGNvbnN0IE1lZGlhVGltZSYgcmhzKQorY29uc3RleHByIE1lZGlhVGlt
ZTo6TWVkaWFUaW1lKFVzZURvdWJsZUZsYWcsIGRvdWJsZSB2YWx1ZSkKKyAgICA6IG1fdmFsdWVB
c0RvdWJsZSh2YWx1ZSkKIHsKLSAgICAqdGhpcyA9IHJoczsKIH0KIAogTWVkaWFUaW1lIE1lZGlh
VGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSkKQEAgLTg0LDU3ICs4NCw1MSBA
QCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lKQog
ICAgIGlmIChzdGQ6OmlzaW5mKGZsb2F0VGltZSkpCiAgICAgICAgIHJldHVybiBzdGQ6OnNpZ25i
aXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRl
VGltZSgpOwogCi0gICAgTWVkaWFUaW1lIHZhbHVlKDAsIERlZmF1bHRUaW1lU2NhbGUsIFZhbGlk
IHwgRG91YmxlVmFsdWUpOwotICAgIHZhbHVlLm1fdGltZVZhbHVlQXNEb3VibGUgPSBmbG9hdFRp
bWU7Ci0gICAgcmV0dXJuIHZhbHVlOworICAgIGRvdWJsZSB2YWx1ZSA9IGZsb2F0VGltZTsKKyAg
ICByZXR1cm4geyBVc2VEb3VibGUsIHZhbHVlIH07CiB9CiAKLU1lZGlhVGltZSBNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSkKK01l
ZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChmbG9hdCB2YWx1ZSwgdWludDMyX3Qg
dGltZVNjYWxlKQogewotICAgIGlmIChmbG9hdFRpbWUgIT0gZmxvYXRUaW1lKQorICAgIGlmIChz
dGQ6OmlzbmFuKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7Ci0gICAgaWYg
KHN0ZDo6aXNpbmYoZmxvYXRUaW1lKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChmbG9h
dFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7
Ci0gICAgaWYgKGZsb2F0VGltZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQorICAgIGlmICh2YWx1
ZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICByZXR1cm4gcG9zaXRpdmVJbmZpbml0
ZVRpbWUoKTsKLSAgICBpZiAoZmxvYXRUaW1lIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWluKCkpCisgICAgaWYgKHZhbHVlIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6
bWluKCkpCiAgICAgICAgIHJldHVybiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwogICAgIGlmICgh
dGltZVNjYWxlKQotICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGZsb2F0VGltZSkgPyBuZWdh
dGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRp
dmVJbmZpbml0ZVRpbWUoKTsKIAotICAgIHdoaWxlIChmbG9hdFRpbWUgKiB0aW1lU2NhbGUgPj0g
bWF4UGx1c09uZTxpbnQ2NF90PikKKyAgICB3aGlsZSAodmFsdWUgKiB0aW1lU2NhbGUgPj0gbWF4
UGx1c09uZTxpbnQ2NF90PikKICAgICAgICAgdGltZVNjYWxlIC89IDI7Ci0gICAgcmV0dXJuIE1l
ZGlhVGltZShzdGF0aWNfY2FzdDxpbnQ2NF90PihmbG9hdFRpbWUgKiB0aW1lU2NhbGUpLCB0aW1l
U2NhbGUsIFZhbGlkKTsKKyAgICBpbnQ2NF90IHNjYWxlZFZhbHVlID0gdmFsdWUgKiB0aW1lU2Nh
bGU7CisgICAgcmV0dXJuIHsgc2NhbGVkVmFsdWUsIHRpbWVTY2FsZSB9OwogfQogCi1NZWRpYVRp
bWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lKQorTWVkaWFU
aW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkb3VibGUgdmFsdWUpCiB7Ci0gICAgaWYg
KGRvdWJsZVRpbWUgIT0gZG91YmxlVGltZSkKKyAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCiAg
ICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwotICAgIGlmIChzdGQ6OmlzaW5mKGRvdWJsZVRp
bWUpKQotICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGRvdWJsZVRpbWUpID8gbmVnYXRpdmVJ
bmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0KLSAgICBNZWRpYVRpbWUg
dmFsdWUoMCwgRGVmYXVsdFRpbWVTY2FsZSwgVmFsaWQgfCBEb3VibGVWYWx1ZSk7Ci0gICAgdmFs
dWUubV90aW1lVmFsdWVBc0RvdWJsZSA9IGRvdWJsZVRpbWU7Ci0gICAgcmV0dXJuIHZhbHVlOwor
ICAgIGlmIChzdGQ6OmlzaW5mKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh2
YWx1ZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsK
KyAgICByZXR1cm4geyBVc2VEb3VibGUsIHZhbHVlIH07CiB9CiAKLU1lZGlhVGltZSBNZWRpYVRp
bWU6OmNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUsIHVpbnQzMl90IHRpbWVTY2Fs
ZSkKK01lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIHZhbHVlLCB1
aW50MzJfdCB0aW1lU2NhbGUpCiB7Ci0gICAgaWYgKGRvdWJsZVRpbWUgIT0gZG91YmxlVGltZSkK
KyAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgp
OwotICAgIGlmIChzdGQ6OmlzaW5mKGRvdWJsZVRpbWUpKQotICAgICAgICByZXR1cm4gc3RkOjpz
aWduYml0KGRvdWJsZVRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5m
aW5pdGVUaW1lKCk7Ci0gICAgaWYgKGRvdWJsZVRpbWUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikK
KyAgICBpZiAodmFsdWUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKICAgICAgICAgcmV0dXJuIHBv
c2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgaWYgKGRvdWJsZVRpbWUgPCBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDY0X3Q+OjptaW4oKSkKKyAgICBpZiAodmFsdWUgPCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDY0X3Q+OjptaW4oKSkKICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlSW5maW5pdGVUaW1l
KCk7CiAgICAgaWYgKCF0aW1lU2NhbGUpCi0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZG91
YmxlVGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUo
KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdCh2YWx1ZSkgPyBuZWdhdGl2ZUluZmluaXRl
VGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKIAotICAgIHdoaWxlIChkb3VibGVUaW1l
ICogdGltZVNjYWxlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCisgICAgd2hpbGUgKHZhbHVlICog
dGltZVNjYWxlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAgICAgIHRpbWVTY2FsZSAvPSAy
OwotICAgIHJldHVybiBNZWRpYVRpbWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4oc3RkOjpyb3VuZChk
b3VibGVUaW1lICogdGltZVNjYWxlKSksIHRpbWVTY2FsZSwgVmFsaWQpOworICAgIGludDY0X3Qg
c2NhbGVkVmFsdWUgPSBzdGQ6OnJvdW5kKHZhbHVlICogdGltZVNjYWxlKTsKKyAgICByZXR1cm4g
eyBzY2FsZWRWYWx1ZSwgdGltZVNjYWxlIH07CiB9CiAKIGZsb2F0IE1lZGlhVGltZTo6dG9GbG9h
dCgpIGNvbnN0CkBAIC0xNDYsOCArMTQwLDkgQEAgZmxvYXQgTWVkaWFUaW1lOjp0b0Zsb2F0KCkg
Y29uc3QKICAgICBpZiAoaXNOZWdhdGl2ZUluZmluaXRlKCkpCiAgICAgICAgIHJldHVybiAtc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CiAgICAgaWYgKGhhc0RvdWJsZVZh
bHVlKCkpCi0gICAgICAgIHJldHVybiBtX3RpbWVWYWx1ZUFzRG91YmxlOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxmbG9hdD4obV90aW1lVmFsdWUpIC8gbV90aW1lU2NhbGU7CisgICAgICAgIHJl
dHVybiBtX3ZhbHVlQXNEb3VibGU7CisgICAgZmxvYXQgdmFsdWUgPSBtX3ZhbHVlOworICAgIHJl
dHVybiB2YWx1ZSAvIG1fc2NhbGU7CiB9CiAKIGRvdWJsZSBNZWRpYVRpbWU6OnRvRG91YmxlKCkg
Y29uc3QKQEAgLTE1OSwxOSArMTU0LDEyIEBAIGRvdWJsZSBNZWRpYVRpbWU6OnRvRG91YmxlKCkg
Y29uc3QKICAgICBpZiAoaXNOZWdhdGl2ZUluZmluaXRlKCkpCiAgICAgICAgIHJldHVybiAtc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwogICAgIGlmIChoYXNEb3VibGVW
YWx1ZSgpKQotICAgICAgICByZXR1cm4gbV90aW1lVmFsdWVBc0RvdWJsZTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8ZG91YmxlPihtX3RpbWVWYWx1ZSkgLyBtX3RpbWVTY2FsZTsKKyAgICAgICAg
cmV0dXJuIG1fdmFsdWVBc0RvdWJsZTsKKyAgICBkb3VibGUgdmFsdWUgPSBtX3ZhbHVlOworICAg
IHJldHVybiB2YWx1ZSAvIG1fc2NhbGU7CiB9CiAKLU1lZGlhVGltZSYgTWVkaWFUaW1lOjpvcGVy
YXRvcj0oY29uc3QgTWVkaWFUaW1lJiByaHMpCi17Ci0gICAgbV90aW1lVmFsdWUgPSByaHMubV90
aW1lVmFsdWU7Ci0gICAgbV90aW1lU2NhbGUgPSByaHMubV90aW1lU2NhbGU7Ci0gICAgbV90aW1l
RmxhZ3MgPSByaHMubV90aW1lRmxhZ3M7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1NZWRpYVRp
bWUgTWVkaWFUaW1lOjpvcGVyYXRvcisoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CitNZWRp
YVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvcisoTWVkaWFUaW1lIHJocykgY29uc3QKIHsKICAgICBp
ZiAocmhzLmlzSW52YWxpZCgpIHx8IGlzSW52YWxpZCgpKQogICAgICAgICByZXR1cm4gaW52YWxp
ZFRpbWUoKTsKQEAgLTE5Miw3ICsxODAsNyBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRv
cisoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CiAgICAgICAgIHJldHVybiBuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpOwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgJiYgcmhzLmhhc0RvdWJs
ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV90
aW1lVmFsdWVBc0RvdWJsZSArIHJocy5tX3RpbWVWYWx1ZUFzRG91YmxlKTsKKyAgICAgICAgcmV0
dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3ZhbHVlQXNEb3VibGUgKyByaHMubV92
YWx1ZUFzRG91YmxlKTsKIAogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpIHx8IHJocy5oYXNEb3Vi
bGVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHRv
RG91YmxlKCkgKyByaHMudG9Eb3VibGUoKSk7CkBAIC0yMDEsMTMgKzE4OSwxMyBAQCBNZWRpYVRp
bWUgTWVkaWFUaW1lOjpvcGVyYXRvcisoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CiAgICAg
TWVkaWFUaW1lIGIgPSByaHM7CiAKICAgICB1aW50MzJfdCBjb21tb25UaW1lU2NhbGU7Ci0gICAg
aWYgKCFsZWFzdENvbW1vbk11bHRpcGxlKGEubV90aW1lU2NhbGUsIGIubV90aW1lU2NhbGUsIGNv
bW1vblRpbWVTY2FsZSkgfHwgY29tbW9uVGltZVNjYWxlID4gTWF4aW11bVRpbWVTY2FsZSkKKyAg
ICBpZiAoIWxlYXN0Q29tbW9uTXVsdGlwbGUoYS5tX3NjYWxlLCBiLm1fc2NhbGUsIGNvbW1vblRp
bWVTY2FsZSkgfHwgY29tbW9uVGltZVNjYWxlID4gTWF4aW11bVRpbWVTY2FsZSkKICAgICAgICAg
Y29tbW9uVGltZVNjYWxlID0gTWF4aW11bVRpbWVTY2FsZTsKICAgICBhLnNldFRpbWVTY2FsZShj
b21tb25UaW1lU2NhbGUpOwogICAgIGIuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7Ci0g
ICAgd2hpbGUgKCFzYWZlQWRkKGEubV90aW1lVmFsdWUsIGIubV90aW1lVmFsdWUsIGEubV90aW1l
VmFsdWUpKSB7CisgICAgd2hpbGUgKCFzYWZlQWRkKGEubV92YWx1ZSwgYi5tX3ZhbHVlLCBhLm1f
dmFsdWUpKSB7CiAgICAgICAgIGlmIChjb21tb25UaW1lU2NhbGUgPT0gMSkKLSAgICAgICAgICAg
IHJldHVybiBhLm1fdGltZVZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdh
dGl2ZUluZmluaXRlVGltZSgpOworICAgICAgICAgICAgcmV0dXJuIGEubV92YWx1ZSA+IDAgPyBw
b3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICAgICAg
Y29tbW9uVGltZVNjYWxlIC89IDI7CiAgICAgICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVT
Y2FsZSk7CiAgICAgICAgIGIuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CkBAIC0yMTUs
NyArMjAzLDcgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IrKGNvbnN0IE1lZGlhVGlt
ZSYgcmhzKSBjb25zdAogICAgIHJldHVybiBhOwogfQogCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjpv
cGVyYXRvci0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CitNZWRpYVRpbWUgTWVkaWFUaW1l
OjpvcGVyYXRvci0oTWVkaWFUaW1lIHJocykgY29uc3QKIHsKICAgICBpZiAocmhzLmlzSW52YWxp
ZCgpIHx8IGlzSW52YWxpZCgpKQogICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKQEAgLTIz
Niw3ICsyMjQsNyBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvci0oY29uc3QgTWVkaWFU
aW1lJiByaHMpIGNvbnN0CiAgICAgICAgIHJldHVybiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwog
CiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkgJiYgcmhzLmhhc0RvdWJsZVZhbHVlKCkpCi0gICAg
ICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV90aW1lVmFsdWVBc0RvdWJs
ZSAtIHJocy5tX3RpbWVWYWx1ZUFzRG91YmxlKTsKKyAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6
Y3JlYXRlV2l0aERvdWJsZShtX3ZhbHVlQXNEb3VibGUgLSByaHMubV92YWx1ZUFzRG91YmxlKTsK
IAogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpIHx8IHJocy5oYXNEb3VibGVWYWx1ZSgpKQogICAg
ICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHRvRG91YmxlKCkgLSByaHMu
dG9Eb3VibGUoKSk7CkBAIC0yNDUsMTMgKzIzMywxMyBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpv
cGVyYXRvci0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CiAgICAgTWVkaWFUaW1lIGIgPSBy
aHM7CiAKICAgICB1aW50MzJfdCBjb21tb25UaW1lU2NhbGU7Ci0gICAgaWYgKCFsZWFzdENvbW1v
bk11bHRpcGxlKHRoaXMtPm1fdGltZVNjYWxlLCByaHMubV90aW1lU2NhbGUsIGNvbW1vblRpbWVT
Y2FsZSkgfHwgY29tbW9uVGltZVNjYWxlID4gTWF4aW11bVRpbWVTY2FsZSkKKyAgICBpZiAoIWxl
YXN0Q29tbW9uTXVsdGlwbGUodGhpcy0+bV9zY2FsZSwgcmhzLm1fc2NhbGUsIGNvbW1vblRpbWVT
Y2FsZSkgfHwgY29tbW9uVGltZVNjYWxlID4gTWF4aW11bVRpbWVTY2FsZSkKICAgICAgICAgY29t
bW9uVGltZVNjYWxlID0gTWF4aW11bVRpbWVTY2FsZTsKICAgICBhLnNldFRpbWVTY2FsZShjb21t
b25UaW1lU2NhbGUpOwogICAgIGIuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7Ci0gICAg
d2hpbGUgKCFzYWZlU3ViKGEubV90aW1lVmFsdWUsIGIubV90aW1lVmFsdWUsIGEubV90aW1lVmFs
dWUpKSB7CisgICAgd2hpbGUgKCFzYWZlU3ViKGEubV92YWx1ZSwgYi5tX3ZhbHVlLCBhLm1fdmFs
dWUpKSB7CiAgICAgICAgIGlmIChjb21tb25UaW1lU2NhbGUgPT0gMSkKLSAgICAgICAgICAgIHJl
dHVybiBhLm1fdGltZVZhbHVlID4gMCA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2
ZUluZmluaXRlVGltZSgpOworICAgICAgICAgICAgcmV0dXJuIGEubV92YWx1ZSA+IDAgPyBwb3Np
dGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICAgICAgY29t
bW9uVGltZVNjYWxlIC89IDI7CiAgICAgICAgIGEuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2Fs
ZSk7CiAgICAgICAgIGIuc2V0VGltZVNjYWxlKGNvbW1vblRpbWVTY2FsZSk7CkBAIC0yNzUsOSAr
MjYzLDkgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKCkgY29uc3QKIAogICAgIE1l
ZGlhVGltZSBuZWdhdGl2ZVRpbWUgPSAqdGhpczsKICAgICBpZiAobmVnYXRpdmVUaW1lLmhhc0Rv
dWJsZVZhbHVlKCkpCi0gICAgICAgIG5lZ2F0aXZlVGltZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0g
LW5lZ2F0aXZlVGltZS5tX3RpbWVWYWx1ZUFzRG91YmxlOworICAgICAgICBuZWdhdGl2ZVRpbWUu
bV92YWx1ZUFzRG91YmxlID0gLW5lZ2F0aXZlVGltZS5tX3ZhbHVlQXNEb3VibGU7CiAgICAgZWxz
ZQotICAgICAgICBuZWdhdGl2ZVRpbWUubV90aW1lVmFsdWUgPSAtbmVnYXRpdmVUaW1lLm1fdGlt
ZVZhbHVlOworICAgICAgICBuZWdhdGl2ZVRpbWUubV92YWx1ZSA9IC1uZWdhdGl2ZVRpbWUubV92
YWx1ZTsKICAgICByZXR1cm4gbmVnYXRpdmVUaW1lOwogfQogCkBAIC0zMDcsMTQgKzI5NSwxNCBA
QCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVyYXRvciooaW50MzJfdCByaHMpIGNvbnN0CiAgICAg
TWVkaWFUaW1lIGEgPSAqdGhpczsKIAogICAgIGlmIChhLmhhc0RvdWJsZVZhbHVlKCkpIHsKLSAg
ICAgICAgYS5tX3RpbWVWYWx1ZUFzRG91YmxlICo9IHJoczsKKyAgICAgICAgYS5tX3ZhbHVlQXNE
b3VibGUgKj0gcmhzOwogICAgICAgICByZXR1cm4gYTsKICAgICB9CiAKLSAgICB3aGlsZSAoIXNh
ZmVNdWx0aXBseShhLm1fdGltZVZhbHVlLCByaHMsIGEubV90aW1lVmFsdWUpKSB7Ci0gICAgICAg
IGlmIChhLm1fdGltZVNjYWxlID09IDEpCi0gICAgICAgICAgICByZXR1cm4gc2lnbnVtKGEubV90
aW1lVmFsdWUpID09IHNpZ251bShyaHMpID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0
aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgICAgIGEuc2V0VGltZVNjYWxlKGEubV90aW1lU2NhbGUg
LyAyKTsKKyAgICB3aGlsZSAoIXNhZmVNdWx0aXBseShhLm1fdmFsdWUsIHJocywgYS5tX3ZhbHVl
KSkgeworICAgICAgICBpZiAoYS5tX3NjYWxlID09IDEpCisgICAgICAgICAgICByZXR1cm4gc2ln
bnVtKGEubV92YWx1ZSkgPT0gc2lnbnVtKHJocykgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDog
bmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAgYS5zZXRUaW1lU2NhbGUoYS5tX3NjYWxl
IC8gMik7CiAgICAgfQogCiAgICAgcmV0dXJuIGE7CkBAIC0zMjIsMTc2ICszMTAsMTEwIEBAIE1l
ZGlhVGltZSBNZWRpYVRpbWU6Om9wZXJhdG9yKihpbnQzMl90IHJocykgY29uc3QKIAogYm9vbCBN
ZWRpYVRpbWU6Om9wZXJhdG9yISgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX3RpbWVGbGFncyA9
PSBWYWxpZCAmJiAhbV90aW1lVmFsdWUpCi0gICAgICAgIHx8IChtX3RpbWVGbGFncyA9PSAoVmFs
aWQgfCBEb3VibGVWYWx1ZSkgJiYgIW1fdGltZVZhbHVlQXNEb3VibGUpCi0gICAgICAgIHx8IGlz
SW52YWxpZCgpOworICAgIHJldHVybiBpc0ludmFsaWQoKSB8fCAoaGFzRG91YmxlVmFsdWUoKSA/
ICFtX3ZhbHVlQXNEb3VibGUgOiAhbV92YWx1ZSk7CiB9CiAKIE1lZGlhVGltZTo6b3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICEobV90aW1lRmxhZ3MgPT0gVmFsaWQgJiYgIW1f
dGltZVZhbHVlKQotICAgICAgICAmJiAhKG1fdGltZUZsYWdzID09IChWYWxpZCB8IERvdWJsZVZh
bHVlKSAmJiAhbV90aW1lVmFsdWVBc0RvdWJsZSkKLSAgICAgICAgJiYgIWlzSW52YWxpZCgpOwor
ICAgIHJldHVybiAhISp0aGlzOwogfQogCi1NZWRpYVRpbWU6OkNvbXBhcmlzb25GbGFncyBNZWRp
YVRpbWU6OmNvbXBhcmUoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0CitzdGF0aWMgc3RkOjp3
ZWFrX29yZGVyaW5nIGFzc2VydE5vdFVub3JkZXJlZChzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgb3Jk
ZXIpCiB7Ci0gICAgYXV0byBhbmRGbGFncyA9IG1fdGltZUZsYWdzICYgcmhzLm1fdGltZUZsYWdz
OwotICAgIGlmIChhbmRGbGFncyAmIChQb3NpdGl2ZUluZmluaXRlIHwgTmVnYXRpdmVJbmZpbml0
ZSB8IEluZGVmaW5pdGUpKQotICAgICAgICByZXR1cm4gRXF1YWxUbzsKLQotICAgIGF1dG8gb3JG
bGFncyA9IG1fdGltZUZsYWdzIHwgcmhzLm1fdGltZUZsYWdzOwotICAgIGlmICghKG9yRmxhZ3Mg
JiBWYWxpZCkpCi0gICAgICAgIHJldHVybiBFcXVhbFRvOwotCi0gICAgaWYgKCEoYW5kRmxhZ3Mg
JiBWYWxpZCkpCi0gICAgICAgIHJldHVybiBpc0ludmFsaWQoKSA/IEdyZWF0ZXJUaGFuIDogTGVz
c1RoYW47Ci0KLSAgICBpZiAob3JGbGFncyAmIE5lZ2F0aXZlSW5maW5pdGUpCi0gICAgICAgIHJl
dHVybiBpc05lZ2F0aXZlSW5maW5pdGUoKSA/IExlc3NUaGFuIDogR3JlYXRlclRoYW47Ci0KLSAg
ICBpZiAob3JGbGFncyAmIFBvc2l0aXZlSW5maW5pdGUpCi0gICAgICAgIHJldHVybiBpc1Bvc2l0
aXZlSW5maW5pdGUoKSA/IEdyZWF0ZXJUaGFuIDogTGVzc1RoYW47Ci0KLSAgICBpZiAob3JGbGFn
cyAmIEluZGVmaW5pdGUpCi0gICAgICAgIHJldHVybiBpc0luZGVmaW5pdGUoKSA/IEdyZWF0ZXJU
aGFuIDogTGVzc1RoYW47Ci0KLSAgICBpZiAoYW5kRmxhZ3MgJiBEb3VibGVWYWx1ZSkgewotICAg
ICAgICBpZiAobV90aW1lVmFsdWVBc0RvdWJsZSA9PSByaHMubV90aW1lVmFsdWVBc0RvdWJsZSkK
LSAgICAgICAgICAgIHJldHVybiBFcXVhbFRvOwotCi0gICAgICAgIHJldHVybiBtX3RpbWVWYWx1
ZUFzRG91YmxlIDwgcmhzLm1fdGltZVZhbHVlQXNEb3VibGUgPyBMZXNzVGhhbiA6IEdyZWF0ZXJU
aGFuOwotICAgIH0KLQotICAgIGlmIChvckZsYWdzICYgRG91YmxlVmFsdWUpIHsKLSAgICAgICAg
ZG91YmxlIGEgPSB0b0RvdWJsZSgpOwotICAgICAgICBkb3VibGUgYiA9IHJocy50b0RvdWJsZSgp
OwotICAgICAgICBpZiAoYSA+IGIpCi0gICAgICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47Ci0g
ICAgICAgIGlmIChhIDwgYikKLSAgICAgICAgICAgIHJldHVybiBMZXNzVGhhbjsKLSAgICAgICAg
cmV0dXJuIEVxdWFsVG87Ci0gICAgfQotCi0gICAgaWYgKChtX3RpbWVWYWx1ZSA8IDApICE9IChy
aHMubV90aW1lVmFsdWUgPCAwKSkKLSAgICAgICAgcmV0dXJuIG1fdGltZVZhbHVlIDwgMCA/IExl
c3NUaGFuIDogR3JlYXRlclRoYW47CisgICAgQVNTRVJUKG9yZGVyICE9IHN0ZDo6cGFydGlhbF9v
cmRlcmluZzo6dW5vcmRlcmVkKTsKKyAgICByZXR1cm4gaXNfbHQob3JkZXIpID8gc3RkOjp3ZWFr
X29yZGVyaW5nOjpsZXNzIDogaXNfZ3Qob3JkZXIpID8gc3RkOjp3ZWFrX29yZGVyaW5nOjpsZXNz
IDogc3RkOjp3ZWFrX29yZGVyaW5nOjplcXVpdmFsZW50OworfQogCi0gICAgaWYgKCFtX3RpbWVW
YWx1ZSAmJiAhcmhzLm1fdGltZVZhbHVlKQotICAgICAgICByZXR1cm4gRXF1YWxUbzsKK3N0ZDo6
d2Vha19vcmRlcmluZyBvcGVyYXRvcjw9PihNZWRpYVRpbWUgYSwgTWVkaWFUaW1lIGIpCit7Cisg
ICAgYXV0byBvcmRlcmluZ0NsYXNzID0gW10oTWVkaWFUaW1lIHRpbWUpIHsKKyAgICAgICAgaWYg
KHRpbWUuaXNOZWdhdGl2ZUluZmluaXRlKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAg
ICAgIGlmICh0aW1lLmlzSW5kZWZpbml0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAg
ICAgIGlmICh0aW1lLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIDI7
CisgICAgICAgIGlmICh0aW1lLmlzSW52YWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIDM7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH07CisgICAgYXV0byBhQ2xhc3MgPSBvcmRlcmluZ0NsYXNz
KGEpOworICAgIGF1dG8gYkNsYXNzID0gb3JkZXJpbmdDbGFzcyhiKTsKKyAgICBpZiAoYUNsYXNz
IHx8IGJDbGFzcykKKyAgICAgICAgcmV0dXJuIGFDbGFzcyA8PT4gYkNsYXNzOwogCi0gICAgaWYg
KG1fdGltZVNjYWxlID09IHJocy5tX3RpbWVTY2FsZSkgewotICAgICAgICBpZiAobV90aW1lVmFs
dWUgPT0gcmhzLm1fdGltZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAg
ICAgIHJldHVybiBtX3RpbWVWYWx1ZSA8IHJocy5tX3RpbWVWYWx1ZSA/IExlc3NUaGFuIDogR3Jl
YXRlclRoYW47Ci0gICAgfQorICAgIGlmIChhLmhhc0RvdWJsZVZhbHVlKCkgfHwgYi5oYXNEb3Vi
bGVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gYXNzZXJ0Tm90VW5vcmRlcmVkKGEudG9Eb3VibGUo
KSA8PT4gYi50b0RvdWJsZSgpKTsKIAotICAgIGlmIChtX3RpbWVWYWx1ZSA9PSByaHMubV90aW1l
VmFsdWUpCi0gICAgICAgIHJldHVybiBtX3RpbWVTY2FsZSA8IHJocy5tX3RpbWVTY2FsZSA/IEdy
ZWF0ZXJUaGFuIDogTGVzc1RoYW47CisgICAgaWYgKChhLm1fdmFsdWUgPCAwKSAhPSAoYi5tX3Zh
bHVlIDwgMCkgfHwgIWEubV92YWx1ZSB8fCAhYi5tX3ZhbHVlIHx8IGEubV9zY2FsZSA9PSBiLm1f
c2NhbGUpCisgICAgICAgIHJldHVybiBhLm1fdmFsdWUgPD0+IGIubV92YWx1ZTsKIAotICAgIGlm
IChtX3RpbWVWYWx1ZSA+PSAwKSB7Ci0gICAgICAgIGlmIChtX3RpbWVWYWx1ZSA8IHJocy5tX3Rp
bWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA+IHJocy5tX3RpbWVTY2FsZSkKLSAgICAgICAgICAgIHJl
dHVybiBMZXNzVGhhbjsKKyAgICBpZiAoYS5tX3ZhbHVlID09IGIubV92YWx1ZSkKKyAgICAgICAg
cmV0dXJuIGIubV9zY2FsZSA8PT4gYS5tX3NjYWxlOwogCi0gICAgICAgIGlmIChtX3RpbWVWYWx1
ZSA+IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA8IHJocy5tX3RpbWVTY2FsZSkKLSAg
ICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKyAgICBpZiAoYS5tX3ZhbHVlID49IDApIHsK
KyAgICAgICAgaWYgKGEubV92YWx1ZSA8IGIubV92YWx1ZSAmJiBhLm1fc2NhbGUgPiBiLm1fc2Nh
bGUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjp3ZWFrX29yZGVyaW5nOjpsZXNzOworICAgICAg
ICBpZiAoYS5tX3ZhbHVlID4gYi5tX3ZhbHVlICYmIGEubV9zY2FsZSA8IGIubV9zY2FsZSkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6OndlYWtfb3JkZXJpbmc6OmdyZWF0ZXI7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVlIDwgcmhzLm1fdGltZVZhbHVlICYmIG1fdGltZVNj
YWxlIDwgcmhzLm1fdGltZVNjYWxlKQotICAgICAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotCi0g
ICAgICAgIGlmIChtX3RpbWVWYWx1ZSA+IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA+
IHJocy5tX3RpbWVTY2FsZSkKLSAgICAgICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKKyAgICAg
ICAgaWYgKGEubV92YWx1ZSA8IGIubV92YWx1ZSAmJiBhLm1fc2NhbGUgPCBiLm1fc2NhbGUpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjp3ZWFrX29yZGVyaW5nOjpsZXNzOworICAgICAgICBpZiAo
YS5tX3ZhbHVlID4gYi5tX3ZhbHVlICYmIGEubV9zY2FsZSA+IGIubV9zY2FsZSkKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6OndlYWtfb3JkZXJpbmc6OmdyZWF0ZXI7CiAgICAgfQogCi0gICAgaW50
NjRfdCBsaHNGYWN0b3I7Ci0gICAgaW50NjRfdCByaHNGYWN0b3I7Ci0gICAgaWYgKHNhZmVNdWx0
aXBseShtX3RpbWVWYWx1ZSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmhzLm1fdGltZVNjYWxlKSwg
bGhzRmFjdG9yKQotICAgICAgICAmJiBzYWZlTXVsdGlwbHkocmhzLm1fdGltZVZhbHVlLCBzdGF0
aWNfY2FzdDxpbnQ2NF90PihtX3RpbWVTY2FsZSksIHJoc0ZhY3RvcikpIHsKLSAgICAgICAgaWYg
KGxoc0ZhY3RvciA9PSByaHNGYWN0b3IpCi0gICAgICAgICAgICByZXR1cm4gRXF1YWxUbzsKLSAg
ICAgICAgcmV0dXJuIGxoc0ZhY3RvciA8IHJoc0ZhY3RvciA/IExlc3NUaGFuIDogR3JlYXRlclRo
YW47Ci0gICAgfQorICAgIGludDY0X3QgYVByb2R1Y3Q7CisgICAgaW50NjRfdCBiUHJvZHVjdDsK
KyAgICBpbnQ2NF90IGFUaW1lU2NhbGUgPSBhLm1fc2NhbGU7CisgICAgaW50NjRfdCBiVGltZVNj
YWxlID0gYi5tX3NjYWxlOworICAgIGlmIChzYWZlTXVsdGlwbHkoYS5tX3ZhbHVlLCBhVGltZVNj
YWxlLCBhUHJvZHVjdCkgJiYgc2FmZU11bHRpcGx5KGIubV92YWx1ZSwgYlRpbWVTY2FsZSwgYlBy
b2R1Y3QpKQorICAgICAgICByZXR1cm4gYVByb2R1Y3QgPD0+IGJQcm9kdWN0OworCisgICAgYXV0
byBhUXVvdGllbnQgPSBhLm1fdmFsdWUgLyBhLm1fc2NhbGU7CisgICAgYXV0byBiUXVvdGllbnQg
PSBiLm1fdmFsdWUgLyBiLm1fc2NhbGU7CisgICAgaWYgKGFRdW90aWVudCAhPSBiUXVvdGllbnQp
CisgICAgICAgIHJldHVybiBhUXVvdGllbnQgPD0+IGJRdW90aWVudDsKIAotICAgIGludDY0X3Qg
cmhzV2hvbGUgPSByaHMubV90aW1lVmFsdWUgLyByaHMubV90aW1lU2NhbGU7Ci0gICAgaW50NjRf
dCBsaHNXaG9sZSA9IG1fdGltZVZhbHVlIC8gbV90aW1lU2NhbGU7Ci0gICAgaWYgKGxoc1dob2xl
ID4gcmhzV2hvbGUpCi0gICAgICAgIHJldHVybiBHcmVhdGVyVGhhbjsKLSAgICBpZiAobGhzV2hv
bGUgPCByaHNXaG9sZSkKLSAgICAgICAgcmV0dXJuIExlc3NUaGFuOwotCi0gICAgaW50NjRfdCBy
aHNSZW1haW4gPSByaHMubV90aW1lVmFsdWUgJSByaHMubV90aW1lU2NhbGU7Ci0gICAgaW50NjRf
dCBsaHNSZW1haW4gPSBtX3RpbWVWYWx1ZSAlIG1fdGltZVNjYWxlOwotICAgIGxoc0ZhY3RvciA9
IGxoc1JlbWFpbiAqIHJocy5tX3RpbWVTY2FsZTsKLSAgICByaHNGYWN0b3IgPSByaHNSZW1haW4g
KiBtX3RpbWVTY2FsZTsKLQotICAgIGlmIChsaHNGYWN0b3IgPT0gcmhzRmFjdG9yKQotICAgICAg
ICByZXR1cm4gRXF1YWxUbzsKLSAgICByZXR1cm4gbGhzRmFjdG9yID4gcmhzRmFjdG9yID8gR3Jl
YXRlclRoYW4gOiBMZXNzVGhhbjsKKyAgICBhdXRvIGFSZW1haW5kZXIgPSBhLm1fdmFsdWUgJSBh
Lm1fc2NhbGUgKiBhLm1fc2NhbGU7CisgICAgYXV0byBiUmVtYWluZGVyID0gYi5tX3ZhbHVlICUg
Yi5tX3NjYWxlICogYi5tX3NjYWxlOworICAgIHJldHVybiBhUmVtYWluZGVyIDw9PiBiUmVtYWlu
ZGVyOwogfQogCi1ib29sIE1lZGlhVGltZTo6aXNCZXR3ZWVuKGNvbnN0IE1lZGlhVGltZSYgYSwg
Y29uc3QgTWVkaWFUaW1lJiBiKSBjb25zdAorYm9vbCBNZWRpYVRpbWU6OmlzQmV0d2VlbihNZWRp
YVRpbWUgYSwgTWVkaWFUaW1lIGIpIGNvbnN0CiB7CiAgICAgaWYgKGEgPiBiKQogICAgICAgICBy
ZXR1cm4gKnRoaXMgPiBiICYmICp0aGlzIDwgYTsKICAgICByZXR1cm4gKnRoaXMgPiBhICYmICp0
aGlzIDwgYjsKIH0KIAotY29uc3QgTWVkaWFUaW1lJiBNZWRpYVRpbWU6Onplcm9UaW1lKCkKLXsK
LSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lIHRpbWUoMCwgMSwgVmFsaWQpOwotICAgIHJldHVy
biB0aW1lOwotfQotCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKQot
ewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgtMSwgMSwgMCk7Ci0gICAgcmV0dXJu
IHRpbWU7Ci19Ci0KLWNvbnN0IE1lZGlhVGltZSYgTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRl
VGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSB0aW1lKDAsIDEsIFBvc2l0aXZl
SW5maW5pdGUgfCBWYWxpZCk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19Ci0KLWNvbnN0IE1lZGlhVGlt
ZSYgTWVkaWFUaW1lOjpuZWdhdGl2ZUluZmluaXRlVGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0
IE1lZGlhVGltZSB0aW1lKC0xLCAxLCBOZWdhdGl2ZUluZmluaXRlIHwgVmFsaWQpOwotICAgIHJl
dHVybiB0aW1lOwotfQotCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6aW5kZWZpbml0ZVRp
bWUoKQotewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgwLCAxLCBJbmRlZmluaXRl
IHwgVmFsaWQpOwotICAgIHJldHVybiB0aW1lOwotfQotCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjp0
b1RpbWVTY2FsZSh1aW50MzJfdCB0aW1lU2NhbGUsIFJvdW5kaW5nRmxhZ3MgZmxhZ3MpIGNvbnN0
CitNZWRpYVRpbWUgTWVkaWFUaW1lOjp0b1RpbWVTY2FsZSh1aW50MzJfdCB0aW1lU2NhbGUsIFJv
dW5kaW5nTW9kZSBtb2RlKSBjb25zdAogewogICAgIE1lZGlhVGltZSByZXN1bHQgPSAqdGhpczsK
LSAgICByZXN1bHQuc2V0VGltZVNjYWxlKHRpbWVTY2FsZSwgZmxhZ3MpOworICAgIHJlc3VsdC5z
ZXRUaW1lU2NhbGUodGltZVNjYWxlLCBtb2RlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12
b2lkIE1lZGlhVGltZTo6c2V0VGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdG
bGFncyBmbGFncykKK3ZvaWQgTWVkaWFUaW1lOjpzZXRUaW1lU2NhbGUodWludDMyX3QgdGltZVNj
YWxlLCBSb3VuZGluZ01vZGUgbW9kZSkKIHsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkgewot
ICAgICAgICAqdGhpcyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShtX3RpbWVWYWx1ZUFz
RG91YmxlLCB0aW1lU2NhbGUpOworICAgICAgICAqdGhpcyA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShtX3ZhbHVlQXNEb3VibGUsIHRpbWVTY2FsZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAoIXRpbWVTY2FsZSkgewotICAgICAgICAqdGhpcyA9IG1fdGltZVZhbHVl
IDwgMCA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwor
ICAgICAgICAqdGhpcyA9IG1fdmFsdWUgPCAwID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBv
c2l0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
dGltZVNjYWxlID09IG1fdGltZVNjYWxlKQorICAgIGlmICh0aW1lU2NhbGUgPT0gbV9zY2FsZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgdGltZVNjYWxlID0gc3RkOjptaW4oTWF4aW11bVRpbWVT
Y2FsZSwgdGltZVNjYWxlKTsKIAotICAgIEludDEyOCBuZXdWYWx1ZSA9IHN0YXRpY19jYXN0PElu
dDEyOD4obV90aW1lVmFsdWUpICogdGltZVNjYWxlOwotICAgIGludDY0X3QgcmVtYWluZGVyID0g
c3RhdGljX2Nhc3Q8aW50NjRfdD4obmV3VmFsdWUgJSBtX3RpbWVTY2FsZSk7Ci0gICAgbmV3VmFs
dWUgPSBuZXdWYWx1ZSAvIG1fdGltZVNjYWxlOworICAgIEludDEyOCBuZXdWYWx1ZSA9IHN0YXRp
Y19jYXN0PEludDEyOD4obV92YWx1ZSkgKiB0aW1lU2NhbGU7CisgICAgaW50NjRfdCByZW1haW5k
ZXIgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihuZXdWYWx1ZSAlIG1fc2NhbGUpOworICAgIG5ld1Zh
bHVlID0gbmV3VmFsdWUgLyBtX3NjYWxlOwogCiAgICAgaWYgKG5ld1ZhbHVlIDwgc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpIHsKICAgICAgICAgKnRoaXMgPSBuZWdhdGl2ZUlu
ZmluaXRlVGltZSgpOwpAQCAtNTAzLDQyICs0MjUsNDIgQEAgdm9pZCBNZWRpYVRpbWU6OnNldFRp
bWVTY2FsZSh1aW50MzJfdCB0aW1lU2NhbGUsIFJvdW5kaW5nRmxhZ3MgZmxhZ3MpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX3RpbWVWYWx1ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+
KG5ld1ZhbHVlKTsKLSAgICBzdGQ6OnN3YXAobV90aW1lU2NhbGUsIHRpbWVTY2FsZSk7CisgICAg
bV92YWx1ZSA9IG5ld1ZhbHVlOworICAgIGF1dG8gb2xkVGltZVNjYWxlID0gc3RkOjpleGNoYW5n
ZShtX3NjYWxlLCB0aW1lU2NhbGUpOwogCiAgICAgaWYgKCFyZW1haW5kZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fdGltZUZsYWdzIHw9IEhhc0JlZW5Sb3VuZGVkOwotICAgIHN3aXRjaCAo
ZmxhZ3MpIHsKLSAgICBjYXNlIFJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm86Ci0gICAg
ICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ2NF90PihsbGFicyhyZW1haW5kZXIpKSAqIDIgPj0gc3Rh
dGljX2Nhc3Q8aW50NjRfdD4odGltZVNjYWxlKSkgeworICAgIG1fZmxhZ3MuYWRkKEhhc0JlZW5S
b3VuZGVkKTsKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6SGFs
ZkF3YXlGcm9tWmVybzoKKyAgICAgICAgaWYgKHN0ZDo6YWJzKHJlbWFpbmRlcikgKiAyID49IG9s
ZFRpbWVTY2FsZSkgewogICAgICAgICAgICAgLy8gcm91bmQgdXAgKGF3YXkgZnJvbSB6ZXJvKQog
ICAgICAgICAgICAgaWYgKHJlbWFpbmRlciA8IDApCi0gICAgICAgICAgICAgICAgbV90aW1lVmFs
dWUtLTsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLS07CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlKys7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFJvdW5kaW5nRmxhZ3M6OlRvd2Fy
ZFplcm86CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OlRvd2FyZFplcm86CiAgICAgICAgIGJyZWFr
OwogCi0gICAgY2FzZSBSb3VuZGluZ0ZsYWdzOjpBd2F5RnJvbVplcm86CisgICAgY2FzZSBSb3Vu
ZGluZ01vZGU6OkF3YXlGcm9tWmVybzoKICAgICAgICAgaWYgKHJlbWFpbmRlciA8IDApCi0gICAg
ICAgICAgICBtX3RpbWVWYWx1ZS0tOworICAgICAgICAgICAgbV92YWx1ZS0tOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3RpbWVWYWx1ZSsrOworICAgICAgICAgICAgbV92YWx1ZSsrOwog
ICAgICAgICBicmVhazsKIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6VG93YXJkUG9zaXRpdmVJ
bmZpbml0eToKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VG93YXJkUG9zaXRpdmVJbmZpbml0eToK
ICAgICAgICAgaWYgKHJlbWFpbmRlciA+IDApCi0gICAgICAgICAgICBtX3RpbWVWYWx1ZSsrOwor
ICAgICAgICAgICAgbV92YWx1ZSsrOwogICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgY2Fz
ZSBSb3VuZGluZ0ZsYWdzOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5OgorICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpUb3dhcmROZWdhdGl2ZUluZmluaXR5OgogICAgICAgICBpZiAocmVtYWluZGVyIDwg
MCkKLSAgICAgICAgICAgIG1fdGltZVZhbHVlLS07CisgICAgICAgICAgICBtX3ZhbHVlLS07CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTU0Nyw3ICs0NjksNyBAQCB2b2lkIE1lZGlhVGlt
ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91dC5wcmludCgieyIpOwog
ICAgIGlmICghaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgb3V0LnByaW50KG1fdGltZVZhbHVl
LCAiLyIsIG1fdGltZVNjYWxlLCAiID0gIik7CisgICAgICAgIG91dC5wcmludChtX3ZhbHVlLCAi
LyIsIG1fc2NhbGUsICIgPSAiKTsKICAgICBvdXQucHJpbnQodG9Eb3VibGUoKSwgIn0iKTsKIH0K
IApAQCAtNTU2LDcgKzQ3OCw3IEBAIFN0cmluZyBNZWRpYVRpbWU6OnRvU3RyaW5nKCkgY29uc3QK
ICAgICBjb25zdCBjaGFyKiBpbnZhbGlkID0gaXNJbnZhbGlkKCkgPyAiLCBpbnZhbGlkIiA6ICIi
OwogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygn
eycsIHRvRG91YmxlKCksIGludmFsaWQsICd9Jyk7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3sn
LCBtX3RpbWVWYWx1ZSwgJy8nLCBtX3RpbWVTY2FsZSwgIiA9ICIsIHRvRG91YmxlKCksIGludmFs
aWQsICd9Jyk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCBtX3ZhbHVlLCAnLycsIG1fc2Nh
bGUsICIgPSAiLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOwogfQogCiBSZWY8SlNPTjo6T2Jq
ZWN0PiBNZWRpYVRpbWU6OnRvSlNPTk9iamVjdCgpIGNvbnN0CkBAIC01NzksOSArNTAxLDkgQEAg
UmVmPEpTT046Ok9iamVjdD4gTWVkaWFUaW1lOjp0b0pTT05PYmplY3QoKSBjb25zdAogICAgIGVs
c2UKICAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoInZhbHVlIl9zLCB0b0RvdWJsZSgpKTsKIAot
ICAgIG9iamVjdC0+c2V0RG91YmxlKCJudW1lcmF0b3IiX3MsIHN0YXRpY19jYXN0PGRvdWJsZT4o
bV90aW1lVmFsdWUpKTsKLSAgICBvYmplY3QtPnNldEludGVnZXIoImRlbm9taW5hdG9yIl9zLCBt
X3RpbWVTY2FsZSk7Ci0gICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJmbGFncyJfcywgbV90aW1lRmxh
Z3MpOworICAgIG9iamVjdC0+c2V0RG91YmxlKCJudW1lcmF0b3IiX3MsIG1fdmFsdWUpOworICAg
IG9iamVjdC0+c2V0SW50ZWdlcigiZGVub21pbmF0b3IiX3MsIG1fc2NhbGUpOworICAgIG9iamVj
dC0+c2V0SW50ZWdlcigiZmxhZ3MiX3MsIG1fZmxhZ3MudG9SYXcoKSk7CiAKICAgICByZXR1cm4g
b2JqZWN0OwogfQpAQCAtNTkxLDMzICs1MTMsMjggQEAgU3RyaW5nIE1lZGlhVGltZTo6dG9KU09O
U3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gdG9KU09OT2JqZWN0KCktPnRvSlNPTlN0cmluZygp
OwogfQogCi1NZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhzKQorTWVkaWFUaW1lIGFi
cyhNZWRpYVRpbWUgdGltZSkKIHsKLSAgICBpZiAocmhzLmlzSW52YWxpZCgpKQotICAgICAgICBy
ZXR1cm4gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOwotICAgIGlmIChyaHMuaXNOZWdhdGl2ZUlu
ZmluaXRlKCkgfHwgcmhzLmlzUG9zaXRpdmVJbmZpbml0ZSgpKQorICAgIGlmICh0aW1lLmlzTmVn
YXRpdmVJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmlu
aXRlVGltZSgpOwotICAgIGlmIChyaHMuaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJu
IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShmYWJzKHJocy5tX3RpbWVWYWx1ZUFzRG91Ymxl
KSk7Ci0KLSAgICBNZWRpYVRpbWUgdmFsID0gcmhzOwotICAgIHZhbC5tX3RpbWVWYWx1ZSA9IHN0
ZDo6YWJzKHJocy5tX3RpbWVWYWx1ZSk7Ci0gICAgcmV0dXJuIHZhbDsKKyAgICBpZiAodGltZS5o
YXNEb3VibGVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91
YmxlKHN0ZDo6YWJzKHRpbWUubV92YWx1ZUFzRG91YmxlKSk7CisgICAgTWVkaWFUaW1lIHJlc3Vs
dCA9IHRpbWU7CisgICAgcmVzdWx0Lm1fdmFsdWUgPSBzdGQ6OmFicyhyZXN1bHQubV92YWx1ZSk7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogU3RyaW5nIE1lZGlhVGltZVJhbmdlOjp0b0pTT05T
dHJpbmcoKSBjb25zdAogewogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKLQogICAgIG9iamVjdC0+c2V0T2JqZWN0KCJzdGFydCJfcywgc3RhcnQudG9KU09OT2JqZWN0
KCkpOwogICAgIG9iamVjdC0+c2V0T2JqZWN0KCJlbmQiX3MsIGVuZC50b0pTT05PYmplY3QoKSk7
Ci0KICAgICByZXR1cm4gb2JqZWN0LT50b0pTT05TdHJpbmcoKTsKIH0KIAogI2lmbmRlZiBOREVC
VUcKIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IE1l
ZGlhVGltZSYgdGltZSkKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFt
LCBNZWRpYVRpbWUgdGltZSkKIHsKICAgICByZXR1cm4gc3RyZWFtIDw8IHRpbWUudG9KU09OU3Ry
aW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaCBiL1NvdXJj
ZS9XVEYvd3RmL01lZGlhVGltZS5oCmluZGV4IDcxYWNmMzI5ZWIzOTg5MzM1MTJmZDdmM2Y1OGQ2
MGJlY2ZmMjNjNTAuLjVkYTc1MmViY2VhNDRiNWFlY2Y1YzRkYzAyNjUxYjU4NGI1ZjhhNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L01lZGlhVGltZS5oCkBAIC0zMCwyMSArMzAsMTYgQEAKIAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CiAjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotI2luY2x1ZGUgPGNtYXRoPgotI2luY2x1ZGUgPGxpbWl0cz4KLSNpbmNs
dWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNl
dC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUHJpbnRTdHJlYW07CiAKLWNsYXNzIFdU
Rl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgZmluYWwgeworY2xhc3MgTWVkaWFUaW1lIGZpbmFs
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBlbnVtIHsKKyAg
ICBlbnVtIEZsYWcgOiB1aW50OF90IHsKICAgICAgICAgVmFsaWQgPSAxIDw8IDAsCiAgICAgICAg
IEhhc0JlZW5Sb3VuZGVkID0gMSA8PCAxLAogICAgICAgICBQb3NpdGl2ZUluZmluaXRlID0gMSA8
PCAyLApAQCAtNTIsNjQgKzQ3LDUwIEBAIHB1YmxpYzoKICAgICAgICAgSW5kZWZpbml0ZSA9IDEg
PDwgNCwKICAgICAgICAgRG91YmxlVmFsdWUgPSAxIDw8IDUsCiAgICAgfTsKKyAgICBjb25zdGV4
cHIgTWVkaWFUaW1lKCkgOiBNZWRpYVRpbWUgeyBpbnQ2NF90IHsgfSwgRGVmYXVsdFRpbWVTY2Fs
ZSB9IHsgfQorICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUoaW50NjRfdCB2YWx1ZSwgdWludDMyX3Qg
c2NhbGUsIE9wdGlvblNldDxGbGFnPiA9IHsgVmFsaWQgfSk7CiAKLSAgICBjb25zdGV4cHIgTWVk
aWFUaW1lKCk7Ci0gICAgY29uc3RleHByIE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJf
dCBzY2FsZSwgdWludDhfdCBmbGFncyA9IFZhbGlkKTsKLSAgICBNZWRpYVRpbWUoY29uc3QgTWVk
aWFUaW1lJiByaHMpOwotCi0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxv
YXQgZmxvYXRUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9h
dCBmbG9hdFRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7Ci0gICAgc3RhdGljIE1lZGlhVGltZSBj
cmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1l
IGNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7
CisgICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgdmFsdWUpOworICAg
IHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZhbHVlLCB1aW50MzJfdCBz
Y2FsZSk7CisgICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSB2YWx1
ZSk7CisgICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSB2YWx1ZSwg
dWludDMyX3Qgc2NhbGUpOwogCiAgICAgZmxvYXQgdG9GbG9hdCgpIGNvbnN0OwogICAgIGRvdWJs
ZSB0b0RvdWJsZSgpIGNvbnN0OwogCi0gICAgTWVkaWFUaW1lJiBvcGVyYXRvcj0oY29uc3QgTWVk
aWFUaW1lJiByaHMpOwotICAgIE1lZGlhVGltZSYgb3BlcmF0b3IrPShjb25zdCBNZWRpYVRpbWUm
IHJocykgeyByZXR1cm4gKnRoaXMgPSAqdGhpcyArIHJoczsgfQotICAgIE1lZGlhVGltZSYgb3Bl
cmF0b3ItPShjb25zdCBNZWRpYVRpbWUmIHJocykgeyByZXR1cm4gKnRoaXMgPSAqdGhpcyAtIHJo
czsgfQotICAgIE1lZGlhVGltZSBvcGVyYXRvcisoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0
OwotICAgIE1lZGlhVGltZSBvcGVyYXRvci0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0Owor
ICAgIE1lZGlhVGltZSYgb3BlcmF0b3IrPShNZWRpYVRpbWUgcmhzKSB7IHJldHVybiAqdGhpcyA9
ICp0aGlzICsgcmhzOyB9CisgICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KE1lZGlhVGltZSByaHMp
IHsgcmV0dXJuICp0aGlzID0gKnRoaXMgLSByaHM7IH0KKyAgICBNZWRpYVRpbWUgb3BlcmF0b3Ir
KE1lZGlhVGltZSkgY29uc3Q7CisgICAgTWVkaWFUaW1lIG9wZXJhdG9yLShNZWRpYVRpbWUpIGNv
bnN0OwogICAgIE1lZGlhVGltZSBvcGVyYXRvci0oKSBjb25zdDsKICAgICBNZWRpYVRpbWUgb3Bl
cmF0b3IqKGludDMyX3QpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IE1lZGlhVGlt
ZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gTGVzc1RoYW47IH0KLSAgICBi
b29sIG9wZXJhdG9yPihjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFy
ZShyaHMpID09IEdyZWF0ZXJUaGFuOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1lZGlh
VGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgIT0gRXF1YWxUbzsgfQotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29t
cGFyZShyaHMpID09IEVxdWFsVG87IH0KLSAgICBib29sIG9wZXJhdG9yPj0oY29uc3QgTWVkaWFU
aW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA+PSBFcXVhbFRvOyB9Ci0gICAg
Ym9vbCBvcGVyYXRvcjw9KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdCB7IHJldHVybiBjb21w
YXJlKHJocykgPD0gRXF1YWxUbzsgfQogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Q7CiAgICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OwogCi0gICAgdHlwZWRlZiBlbnVtIHsKLSAg
ICAgICAgTGVzc1RoYW4gPSAtMSwKLSAgICAgICAgRXF1YWxUbyA9IDAsCi0gICAgICAgIEdyZWF0
ZXJUaGFuID0gMSwKLSAgICB9IENvbXBhcmlzb25GbGFnczsKLQotICAgIENvbXBhcmlzb25GbGFn
cyBjb21wYXJlKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdDsKLSAgICBib29sIGlzQmV0d2Vl
bihjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKSBjb25zdDsKKyAgICBmcmllbmQg
V1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6d2Vha19vcmRlcmluZyBvcGVyYXRvcjw9PihNZWRpYVRp
bWUsIE1lZGlhVGltZSk7CisgICAgYm9vbCBvcGVyYXRvcj09KE1lZGlhVGltZSBvdGhlcikgY29u
c3QgeyByZXR1cm4gaXNfZXEoKnRoaXMgPD0+IG90aGVyKTsgfQorICAgIGJvb2wgaXNCZXR3ZWVu
KE1lZGlhVGltZSwgTWVkaWFUaW1lKSBjb25zdDsKIAotICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgVmFsaWQ7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKFZhbGlkKTsgfQogICAgIGJvb2wgaXNJbnZhbGlk
KCkgY29uc3QgeyByZXR1cm4gIWlzVmFsaWQoKTsgfQotICAgIGJvb2wgaGFzQmVlblJvdW5kZWQo
KSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIEhhc0JlZW5Sb3VuZGVkOyB9Ci0gICAgYm9v
bCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIFBvc2l0
aXZlSW5maW5pdGU7IH0KLSAgICBib29sIGlzTmVnYXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGltZUZsYWdzICYgTmVnYXRpdmVJbmZpbml0ZTsgfQotICAgIGJvb2wgaXNJbmRlZmlu
aXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3MgJiBJbmRlZmluaXRlOyB9CisgICAgYm9v
bCBoYXNCZWVuUm91bmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoSGFzQmVl
blJvdW5kZWQpOyB9CisgICAgYm9vbCBpc1Bvc2l0aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzLmNvbnRhaW5zKFBvc2l0aXZlSW5maW5pdGUpOyB9CisgICAgYm9vbCBpc05lZ2F0
aXZlSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKE5lZ2F0aXZlSW5m
aW5pdGUpOyB9CisgICAgYm9vbCBpc0luZGVmaW5pdGUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdz
LmNvbnRhaW5zKEluZGVmaW5pdGUpOyB9CiAgICAgYm9vbCBpc0Zpbml0ZSgpIGNvbnN0IHsgcmV0
dXJuICFpc0ludmFsaWQoKSAmJiAhaXNJbmRlZmluaXRlKCkgJiYgIWlzUG9zaXRpdmVJbmZpbml0
ZSgpICYmICFpc05lZ2F0aXZlSW5maW5pdGUoKTsgfQotICAgIGJvb2wgaGFzRG91YmxlVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIERvdWJsZVZhbHVlOyB9Ci0gICAgdWludDhf
dCB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFnczsgfQorICAgIGJvb2wgaGFz
RG91YmxlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzLmNvbnRhaW5zKERvdWJsZVZhbHVl
KTsgfQorICAgIE9wdGlvblNldDxGbGFnPiB0aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2Zs
YWdzOyB9CiAKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFUaW1lJiB6ZXJvVGltZSgpOwotICAgIHN0
YXRpYyBjb25zdCBNZWRpYVRpbWUmIGludmFsaWRUaW1lKCk7Ci0gICAgc3RhdGljIGNvbnN0IE1l
ZGlhVGltZSYgcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFU
aW1lJiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUm
IGluZGVmaW5pdGVUaW1lKCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgemVyb1Rp
bWUoKSB7IHJldHVybiB7IDAsIDEsIFZhbGlkIH07IH0KKyAgICBzdGF0aWMgY29uc3RleHByIE1l
ZGlhVGltZSBpbnZhbGlkVGltZSgpIHsgcmV0dXJuIHsgLTEsIDEsIHsgfSB9OyB9CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBNZWRpYVRpbWUgcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJldHVybiB7
IDAsIDEsIHsgUG9zaXRpdmVJbmZpbml0ZSwgVmFsaWQgfSB9OyB9CisgICAgc3RhdGljIGNvbnN0
ZXhwciBNZWRpYVRpbWUgbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSB7IHJldHVybiB7IC0xLCAxLCB7
IE5lZ2F0aXZlSW5maW5pdGUsIFZhbGlkIH0gfTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgTWVk
aWFUaW1lIGluZGVmaW5pdGVUaW1lKCkgeyByZXR1cm4geyAwLCAxLCB7IEluZGVmaW5pdGUsIFZh
bGlkIH0gfTsgfQogCi0gICAgY29uc3QgaW50NjRfdCYgdGltZVZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV90aW1lVmFsdWU7IH0KLSAgICBjb25zdCB1aW50MzJfdCYgdGltZVNjYWxlKCkgY29uc3Qg
eyByZXR1cm4gbV90aW1lU2NhbGU7IH0KKyAgICBpbnQ2NF90IHRpbWVWYWx1ZSgpIGNvbnN0IHsg
QVNTRVJUKCFoYXNEb3VibGVWYWx1ZSgpKTsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICB1aW50MzJf
dCB0aW1lU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAKLSAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgU3RyaW5nIHRvSlNPTlN0cmlu
ZygpIGNvbnN0OwogICAgIFJlZjxKU09OOjpPYmplY3Q+IHRvSlNPTk9iamVjdCgpIGNvbnN0OwpA
QCAtMTIwLDkxICsxMDEsODUgQEAgcHVibGljOgogICAgIG9wZXJhdG9yIGludCgpIGNvbnN0ID0g
ZGVsZXRlOwogICAgIE1lZGlhVGltZShpbnQpID0gZGVsZXRlOwogCi0gICAgZnJpZW5kIFdURl9F
WFBPUlRfUFJJVkFURSBNZWRpYVRpbWUgYWJzKGNvbnN0IE1lZGlhVGltZSYgcmhzKTsKKyAgICBm
cmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBhYnMoTWVkaWFUaW1lKTsKIAotICAg
IHN0YXRpYyBjb25zdCB1aW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDAwMDA7CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDAwMDA7CiAg
ICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE1heGltdW1UaW1lU2NhbGU7CiAKLSAgICBlbnVtIGNs
YXNzIFJvdW5kaW5nRmxhZ3MgewotICAgICAgICBIYWxmQXdheUZyb21aZXJvID0gMCwKKyAgICBl
bnVtIGNsYXNzIFJvdW5kaW5nTW9kZSA6IHVpbnQzMl90IHsKKyAgICAgICAgSGFsZkF3YXlGcm9t
WmVybywKICAgICAgICAgVG93YXJkWmVybywKICAgICAgICAgQXdheUZyb21aZXJvLAogICAgICAg
ICBUb3dhcmRQb3NpdGl2ZUluZmluaXR5LAogICAgICAgICBUb3dhcmROZWdhdGl2ZUluZmluaXR5
LAogICAgIH07Ci0KLSAgICBNZWRpYVRpbWUgdG9UaW1lU2NhbGUodWludDMyX3QsIFJvdW5kaW5n
RmxhZ3MgPSBSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKSBjb25zdDsKKyAgICBNZWRp
YVRpbWUgdG9UaW1lU2NhbGUodWludDMyX3Qgc2NhbGUsIFJvdW5kaW5nTW9kZSA9IFJvdW5kaW5n
TW9kZTo6SGFsZkF3YXlGcm9tWmVybykgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgTWVk
aWFUaW1lJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRUaW1lU2NhbGUodWludDMyX3QsIFJv
dW5kaW5nRmxhZ3MgPSBSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvKTsKKyAgICBlbnVt
IFVzZURvdWJsZUZsYWcgeyBVc2VEb3VibGUgfTsKKyAgICBjb25zdGV4cHIgTWVkaWFUaW1lKFVz
ZURvdWJsZUZsYWcsIGRvdWJsZSB2YWx1ZSk7CisKKyAgICB2b2lkIHNldFRpbWVTY2FsZSh1aW50
MzJfdCwgUm91bmRpbmdNb2RlID0gUm91bmRpbmdNb2RlOjpIYWxmQXdheUZyb21aZXJvKTsKIAog
ICAgIHVuaW9uIHsKLSAgICAgICAgaW50NjRfdCBtX3RpbWVWYWx1ZTsKLSAgICAgICAgZG91Ymxl
IG1fdGltZVZhbHVlQXNEb3VibGU7CisgICAgICAgIGludDY0X3QgbV92YWx1ZTsKKyAgICAgICAg
ZG91YmxlIG1fdmFsdWVBc0RvdWJsZTsKICAgICB9OwotICAgIHVpbnQzMl90IG1fdGltZVNjYWxl
OwotICAgIHVpbnQ4X3QgbV90aW1lRmxhZ3M7CisgICAgdWludDMyX3QgbV9zY2FsZSB7IERlZmF1
bHRUaW1lU2NhbGUgfTsKKyAgICBPcHRpb25TZXQ8RmxhZz4gbV9mbGFncyB7IFZhbGlkIH07CiB9
OwogCi1jb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoKQotICAgIDogbV90aW1lVmFsdWUo
MCkKLSAgICAsIG1fdGltZVNjYWxlKERlZmF1bHRUaW1lU2NhbGUpCi0gICAgLCBtX3RpbWVGbGFn
cyhWYWxpZCkKLXsKLX0KLQotY29uc3RleHByIE1lZGlhVGltZTo6TWVkaWFUaW1lKGludDY0X3Qg
dmFsdWUsIHVpbnQzMl90IHNjYWxlLCB1aW50OF90IGZsYWdzKQotICAgIDogbV90aW1lVmFsdWUo
dmFsdWUpCi0gICAgLCBtX3RpbWVTY2FsZShzY2FsZSkKLSAgICAsIG1fdGltZUZsYWdzKGZsYWdz
KQotewotICAgIGlmIChzY2FsZSB8fCAhKGZsYWdzICYgVmFsaWQpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAqdGhpcyA9IHZhbHVlIDwgMCA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3Np
dGl2ZUluZmluaXRlVGltZSgpOwotfQotCi1pbmxpbmUgTWVkaWFUaW1lIG9wZXJhdG9yKihpbnQz
Ml90IGxocywgY29uc3QgTWVkaWFUaW1lJiByaHMpIHsgcmV0dXJuIHJocy5vcGVyYXRvcioobGhz
KTsgfQotCi1XVEZfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIE1lZGlhVGltZSBhYnMoY29uc3QgTWVk
aWFUaW1lJiByaHMpOworV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBhYnMoTWVkaWFUaW1l
KTsKIAogc3RydWN0IFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWVSYW5nZSB7CiAgICAgV1RG
X01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygp
IGNvbnN0OwogCi0gICAgY29uc3QgTWVkaWFUaW1lIHN0YXJ0OwotICAgIGNvbnN0IE1lZGlhVGlt
ZSBlbmQ7CisgICAgTWVkaWFUaW1lIHN0YXJ0OworICAgIE1lZGlhVGltZSBlbmQ7CiB9OwogCi10
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBNZWRpYVRpbWU6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAorY29uc3RleHByIE1lZGlhVGltZTo6TWVkaWFUaW1lKGludDY0X3QgdmFs
dWUsIHVpbnQzMl90IHNjYWxlLCBPcHRpb25TZXQ8RmxhZz4gZmxhZ3MpCisgICAgOiBtX3ZhbHVl
KHZhbHVlKQorICAgICwgbV9zY2FsZShzY2FsZSkKKyAgICAsIG1fZmxhZ3MoZmxhZ3MpCit7Cisg
ICAgaWYgKCEoc2NhbGUgfHwgIShmbGFncyAmIFZhbGlkKSkpCisgICAgICAgICp0aGlzID0gdmFs
dWUgPCAwID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBNZWRpYVRpbWUgb3BlcmF0b3IqKGNv
bnN0IFQmIGEsIE1lZGlhVGltZSBiKQoreworICAgIHJldHVybiBiICogYTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBNZWRpYVRpbWU6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgbV90aW1lVmFsdWUgPDwgbV90aW1lU2NhbGUg
PDwgbV90aW1lRmxhZ3M7CisgICAgZW5jb2RlciA8PCBtX3ZhbHVlIDw8IG1fc2NhbGUgPDwgbV9m
bGFnczsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLWJvb2wgTWVkaWFUaW1lOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFUaW1lJiB0aW1lKQordGVtcGxhdGU8dHlwZW5hbWUg
RGVjb2Rlcj4gYm9vbCBNZWRpYVRpbWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVRp
bWUmIHRpbWUpCiB7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lVmFsdWUp
Ci0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lU2NhbGUpCi0gICAgICAgICYm
IGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lRmxhZ3MpOworICAgIHJldHVybiBkZWNvZGVyLmRl
Y29kZSh0aW1lLm1fdmFsdWUpCisgICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV9zY2Fs
ZSkKKyAgICAgICAgJiYgZGVjb2Rlci5kZWNvZGUodGltZS5tX2ZsYWdzKTsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9n
QXJndW1lbnQ8TWVkaWFUaW1lPiB7Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBN
ZWRpYVRpbWUmIHRpbWUpIHsgcmV0dXJuIHRpbWUudG9KU09OU3RyaW5nKCk7IH0KKyAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKE1lZGlhVGltZSB0aW1lKSB7IHJldHVybiB0aW1lLnRvSlNPTlN0
cmluZygpOyB9CiB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFUaW1lUmFu
Z2U+IHsKICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IE1lZGlhVGltZVJhbmdlJiBy
YW5nZSkgeyByZXR1cm4gcmFuZ2UudG9KU09OU3RyaW5nKCk7IH0KIH07CiAKICNpZm5kZWYgTkRF
QlVHCi1XVEZfRVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiwgY29uc3QgTWVkaWFUaW1lJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgTWVkaWFUaW1lKTsKICNlbmRpZgogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9yUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZXRh
QWxsb2NhdG9yUHRyLmgKaW5kZXggNTUwYzFiMWUwZTgxYmJiYWYwZjhiZTYyOWQ2ODA5NmRmN2E4
Nzk4MC4uZjA3MzdjNTRjODI3Y2NhN2U2NDg4NWMyNjRmOTM2YWNkYWE3MDJkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvclB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L01ldGFBbGxvY2F0b3JQdHIuaApAQCAtNjEsOCArNjEsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wdHI7IH0KICAgICBib29sIG9w
ZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09
KE1ldGFBbGxvY2F0b3JQdHIgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09IG90aGVyLm1f
cHRyOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KE1ldGFBbGxvY2F0b3JQdHIgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fcHRyICE9IG90aGVyLm1fcHRyOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE1ldGFBbGxvY2F0b3JQdHImKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBNZXRhQWxsb2Nh
dG9yUHRyIG9wZXJhdG9yKyhzaXplX3Qgc2l6ZUluQnl0ZXMpIGNvbnN0IHsgcmV0dXJuIE1ldGFB
bGxvY2F0b3JQdHIodW50YWdnZWRQdHI8dWludDhfdCo+KCkgKyBzaXplSW5CeXRlcyk7IH0KICAg
ICBNZXRhQWxsb2NhdG9yUHRyIG9wZXJhdG9yLShzaXplX3Qgc2l6ZUluQnl0ZXMpIGNvbnN0IHsg
cmV0dXJuIE1ldGFBbGxvY2F0b3JQdHIodW50YWdnZWRQdHI8dWludDhfdCo+KCkgLSBzaXplSW5C
eXRlcyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA5MWUyZmJmODgwNGYwZmEx
NDdhYTkyYjBjOTUwZGNjNGQyOWQyOTQ0Li5mNmUzOTBjM2Q5MTkzNzNkMjI1Y2U3ZTdhMDAxMzli
OGZmOGFlYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCkBAIC04NSwxMSArODUsNiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2lkZW50aWZpZXIgPT0gb3RoZXIubV9pZGVudGlm
aWVyOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPYmplY3RJZGVudGlmaWVy
JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkZW50aWZpZXIgIT0gb3Ro
ZXIubV9pZGVudGlmaWVyOwotICAgIH0KLQogICAgIHVpbnQ2NF90IHRvVUludDY0KCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9PcHRpb25TZXQuaCBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCmluZGV4IDZlNjQ5M2Yw
YWQ0MmEwOTdmZDYzMmQwYzY0ZmUwZDUzM2YzMWUwMmIuLmEyNTIzMWQ4MjZjNWRmODVhNDBmYzVk
OTY3MGM2ZDhhNzY4MDU1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCkBAIC0xMjMsOCArMTIzLDcgQEAgcHVi
bGljOgogCiAgICAgICAgIEl0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkgPSBkZWxldGU7CiAKLSAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgIT0gb3RoZXIubV92
YWx1ZTsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImKSBjb25zdCA9
IGRlZmF1bHQ7CiAKICAgICBwcml2YXRlOgogICAgICAgICBJdGVyYXRvcihTdG9yYWdlVHlwZSB2
YWx1ZSkgOiBtX3ZhbHVlKHZhbHVlKSB7IH0KQEAgLTIxMiwxNSArMjExLDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gaGFzRXhhY3RseU9uZUJpdFNldCgpID8gc3RkOjpvcHRpb25hbDxFPihz
dGF0aWNfY2FzdDxFPihtX3N0b3JhZ2UpKSA6IHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAgICBj
b25zdGV4cHIgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQg
cmhzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGxocy5tX3N0b3JhZ2UgPT0gcmhzLm1fc3RvcmFn
ZTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShPcHRpb25T
ZXQgbGhzLCBPcHRpb25TZXQgcmhzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGxocy5tX3N0b3Jh
Z2UgIT0gcmhzLm1fc3RvcmFnZTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9w
dGlvblNldCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGNvbnN0ZXhwciBmcmllbmQgT3B0aW9u
U2V0IG9wZXJhdG9yfChPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL09yZGVyTWFrZXIuaCBiL1NvdXJjZS9XVEYvd3RmL09yZGVy
TWFrZXIuaAppbmRleCBmNmYyYzk5MjAyZTcyZGZkM2MwYzExNjA4YWVmMjhjOTdmMjFkN2IwLi5j
NjVmY2JmZjM5NjQwYzMzODE3YjFjYTQzY2FjNjEzNjE4MWU5ZWY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9PcmRlck1ha2VyLmgKKysrIGIvU291cmNlL1dURi93dGYvT3JkZXJNYWtlci5o
CkBAIC04NCwxMSArODQsNyBAQCBwdWJsaWM6CiAKICAgICBjbGFzcyBpdGVyYXRvciB7CiAgICAg
cHVibGljOgotICAgICAgICBpdGVyYXRvcigpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIGl0ZXJhdG9yKE5vZGUqIG5vZGUpCisgICAgICAgIGl0ZXJhdG9yKE5vZGUqIG5vZGUgPSBu
dWxscHRyKQogICAgICAgICAgICAgOiBtX25vZGUobm9kZSkKICAgICAgICAgewogICAgICAgICB9
CkBAIC0xMDQsMTUgKzEwMCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIu
bV9ub2RlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJh
dG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVy
YXRvciYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAg
Tm9kZSogbV9ub2RlIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFj
a2VkLmggYi9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWQuaAppbmRleCAwZDk0Zjg5MGVhZWM1YWEwMTUw
MjYxZmMxOTFjNzlmZTg1Y2YzYjQyLi5mZDZjNDRkZDU3Y2I3Y2I1NDU1NDFhNGI5YTcwMDM2N2Ji
YjllZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYWNrZWQuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9QYWNrZWQuaApAQCAtMTAwLDYgKzEwMCw5IEBAIHB1YmxpYzoKICAgICAgICAgc2V0
KHQxKTsKICAgICB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oUGFja2VkIG90aGVyKSBjb25zdCB7
IHJldHVybiBnZXQoKSA9PSBvdGhlci5nZXQoKTsgfQorICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9y
PD0+KFBhY2tlZCBhLCBQYWNrZWQgYikgeyByZXR1cm4gYS5nZXQoKSA8PT4gYi5nZXQoKTsgfQor
CiBwcml2YXRlOgogICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgc2l6ZW9mKFQpPiBtX3N0b3JhZ2U7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmFuZ2UuaCBiL1NvdXJjZS9XVEYvd3Rm
L1JhbmdlLmgKaW5kZXggYTk2YmY5YTA2MWM3MTJmYjNjZmE2MzFiYTRjOThiM2ExMDg2ZmExYS4u
ZjM0NzFjZTllNWE2MzkxZTYzMjlkN2I2ZDRkNzZhOWUzM2Q4ZDQ5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUmFuZ2UuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SYW5nZS5oCkBAIC03Mywx
NiArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBSYW5nZShzdGQ6Om51bWVyaWNfbGlt
aXRzPFR5cGU+OjptaW4oKSwgc3RkOjpudW1lcmljX2xpbWl0czxUeXBlPjo6bWF4KCkpOwogICAg
IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSYW5nZSYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9iZWdpbiA9PSBvdGhlci5tX2JlZ2luCi0gICAgICAgICAgICAm
JiBtX2VuZCA9PSBvdGhlci5tX2VuZDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgUmFuZ2UmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmFuZ2UmKSBjb25zdCA9
IGRlZmF1bHQ7CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuIG1fYmVnaW4gIT0gbV9lbmQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVm
LmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWYuaAppbmRleCA1NzQ5OWFkOWEwOTQ1YjVhNjE3ZjEwZTBj
Mjc1ZjAyYzA0MDVjNmJlLi42ZTg4MWU1MGQzMjIxNGI3ZTA3NWZiMDJlMmVmM2Y2YmRiYzY0Njdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9S
ZWYuaApAQCAtMjk0LDMwICsyOTQsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
ZjxULCBVPiYgYSwgViYgYikKICAgICByZXR1cm4gYS5wdHIoKSA9PSAmYjsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLWlubGluZSBib29sIG9wZXJh
dG9yPT0oVCYgYSwgY29uc3QgUmVmPFUsIFY+JiBiKQotewotICAgIHJldHVybiAmYSA9PSBiLnB0
cigpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXPgotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWY8VCwgVT4mIGEsIGNv
bnN0IFJlZjxWLCBXPiYgYikKLXsKLSAgICByZXR1cm4gYS5wdHIoKSAhPSBiLnB0cigpOwotfQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBSZWY8VCwgVT4mIGEsIFYmIGIpCi17Ci0gICAgcmV0dXJuIGEu
cHRyKCkgIT0gJmI7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVu
YW1lIFY+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQmIGEsIGNvbnN0IFJlZjxVLCBWPiYgYikK
LXsKLSAgICByZXR1cm4gJmEgIT0gYi5wdHIoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
IHVzaW5nIFdURjo6UmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEZp
eGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkRml4ZWRWZWN0b3IuaAppbmRl
eCBjYmU3MjNiNzFjMDJlZmEzMjRlYWVkYzUwOTg5YmNjOWFlNmU0NTNjLi4xZGJlNTQ0ZDQ5NDM0
Y2FiMWM5NDk1M2EwNjkwMjlkY2I5N2NjODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9S
ZWZDb3VudGVkRml4ZWRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkRml4
ZWRWZWN0b3IuaApAQCAtNzAsMTEgKzcwLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY3Jl
YXRlKEJhc2U6OmJlZ2luKCksIEJhc2U6OmVuZCgpKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgUmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZSYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2UmIG90aGVyKSBjb25zdAog
ICAgIHsKICAgICAgICAgaWYgKEJhc2U6OnNpemUoKSAhPSBvdGhlci5zaXplKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCmlu
ZGV4IDBhZWMxMGMzZGU2MDY1YWIxMGQ1ZTk0MDUzMTNiMzI1ZTUzYTM0YmIuLjA2ZWViOGEzMWVj
MTRhNWFmZmM1YjcxMWI4NTg2MDkxZTU3Zjg1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCkBAIC0yMTIsMzAgKzIxMiw2
IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVmUHRyPFQsIFUsIFY+JiBhLCBYKiBi
KQogICAgIHJldHVybiBhLmdldCgpID09IGI7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSBaPgotaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShUKiBhLCBjb25zdCBSZWZQdHI8WCwgWSwgWj4mIGIpCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5n
ZXQoKTsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFgsIHR5cGVuYW1lIFksIHR5cGVuYW1lIFo+Ci1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFJlZlB0cjxULCBVLCBWPiYgYSwgY29uc3QgUmVmUHRyPFgsIFksIFo+JiBiKQot
eyAKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgWD4KLWlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgUmVmUHRyPFQsIFUsIFY+JiBhLCBYKiBiKQotewotICAgIHJldHVybiBh
LmdldCgpICE9IGI7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBYLCB0eXBl
bmFtZSBZLCB0eXBlbmFtZSBaPgotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBS
ZWZQdHI8WCwgWSwgWj4mIGIpCi17IAotICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAotfQotCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVID0gUmF3UHRyVHJhaXRzPFQ+LCB0eXBlbmFt
ZSBWID0gRGVmYXVsdFJlZkRlcmVmVHJhaXRzPFQ+LCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0
eXBlbmFtZSBaPgogaW5saW5lIFJlZlB0cjxULCBVLCBWPiBzdGF0aWNfcG9pbnRlcl9jYXN0KGNv
bnN0IFJlZlB0cjxYLCBZLCBaPiYgcCkKIHsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9S
ZXRhaW5QdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1JldGFpblB0ci5oCmluZGV4IGRkNDc3OWJmYTU4
YTBhNzg4YTEwMjdhZDQ2ZDlkOTc2OGI5MTNkMzIuLjlkNmM5YWY4YWNhMzVjNzM1MmVkZDMwYjQz
MWU5YmM1YWI1ZGUxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JldGFpblB0ci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1JldGFpblB0ci5oCkBAIC0yOTIsMjYgKzI5Miw2IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgUmV0YWluUHRyPFQ+JiBhCiAgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsgCiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oVCog
YSwgY29uc3QgUmV0YWluUHRyPFU+JiBiKQotewotICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFJldGFpblB0cjxUPiYgYSwgY29uc3QgUmV0YWluUHRyPFU+JiBiKQoteyAK
LSAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXRhaW5QdHI8
VD4mIGEsIFUqIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYjsgCi19Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oVCogYSwg
Y29uc3QgUmV0YWluUHRyPFU+JiBiKQoteyAKLSAgICByZXR1cm4gYSAhPSBiLmdldCgpOyAKLX0K
LQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIFJldGFpblB0cjxUPiBhZG9wdENGKFQg
Q0ZfUkVMRUFTRVNfQVJHVU1FTlQgcHRyKQogewogI2lmZGVmIF9fT0JKQ19fCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKaW5k
ZXggZDI4MmRiYmY3MTViZTc0Mjc4OWVhMTBmMWNjYjI5YWQxNDUzNTY0Zi4uM2JhNTQyZWNlNWJi
NjI2ZWY4MDc5MWJiYTU3MDEwOTc5Zjc3NWU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
U2Vjb25kcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewpAQCAtMTg4LDM1ICsxODksNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIEFwcHJveGltYXRlVGltZSBvcGVyYXRvci0oQXBwcm94aW1hdGVUaW1lKSBjb25z
dDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIG9wZXJh
dG9yLShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmKSBjb25zdDsKICAgICAKLSAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KFNlY29uZHMgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOwotICAgIH0KLSAgICAKLSAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KFNlY29uZHMgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV92YWx1ZSAhPSBvdGhlci5tX3ZhbHVlOwotICAgIH0KLSAgICAKLSAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoU2Vjb25kcyBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX3ZhbHVlIDwgb3RoZXIubV92YWx1ZTsKLSAgICB9Ci0gICAgCi0gICAgY29u
c3RleHByIGJvb2wgb3BlcmF0b3I+KFNlY29uZHMgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV92YWx1ZSA+IG90aGVyLm1fdmFsdWU7Ci0gICAgfQotICAgIAotICAgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPD0oU2Vjb25kcyBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX3ZhbHVlIDw9IG90aGVyLm1fdmFsdWU7Ci0gICAgfQotICAgIAotICAgIGNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPj0oU2Vjb25kcyBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX3ZhbHVlID49IG90aGVyLm1fdmFsdWU7Ci0gICAgfQorICAgIGZyaWVuZCBhdXRv
IG9wZXJhdG9yPD0+KFNlY29uZHMsIFNlY29uZHMpID0gZGVmYXVsdDsKICAgICAKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCkBAIC0z
NzIsNCArMzQ1LDMgQEAgaW5saW5lIGJvb2wgaXNmaW5pdGUoV1RGOjpTZWNvbmRzIHNlY29uZHMp
CiB9IC8vIG5hbWVzcGFjZSBzdGQKIAogdXNpbmcgbmFtZXNwYWNlIFdURjo6c2Vjb25kc19saXRl
cmFsczsKLXVzaW5nIFdURjo6U2Vjb25kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Nl
Z21lbnRlZFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgKaW5kZXgg
YzViOWU4YTFlY2RkMzVkNWNiM2RkOWRlNTUxMGUwYzQ4MjljNjM1MS4uZjU4MTFkZmNiMTBkNWNi
MzFkYWYxOGVmMWMwOGZiZThhZmJjNjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2Vn
bWVudGVkVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgKQEAg
LTUwLDggKzUwLDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHVzaW5nIHBvaW50ZXIgPSBj
b25zdCBUKjsKICAgICAgICAgdXNpbmcgcmVmZXJlbmNlID0gY29uc3QgVCY7CiAKLSAgICAgICAg
flNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yKCkgeyB9Ci0KICAgICAgICAgVCYgb3BlcmF0b3IqKCkg
Y29uc3QgeyByZXR1cm4gbV92ZWN0b3IuYXQobV9pbmRleCk7IH0KICAgICAgICAgVCogb3BlcmF0
b3ItPigpIGNvbnN0IHsgcmV0dXJuICZtX3ZlY3Rvci5hdChtX2luZGV4KTsgfQogCkBAIC02Nywx
OCArNjUsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIHJldHVybiBtX2luZGV4ID09
IG90aGVyLm1faW5kZXggJiYgJm1fdmVjdG9yID09ICZvdGhlci5tX3ZlY3RvcjsKICAgICAgICAg
fQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2luZGV4ICE9IG90aGVyLm1faW5kZXgg
fHwgJm1fdmVjdG9yICE9ICZvdGhlci5tX3ZlY3RvcjsKLSAgICAgICAgfQotCi0gICAgICAgIFNl
Z21lbnRlZFZlY3Rvckl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgU2VnbWVudGVkVmVjdG9ySXRl
cmF0b3I8VCwgU2VnbWVudFNpemU+JiBvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICAgbV92
ZWN0b3IgPSBvdGhlci5tX3ZlY3RvcjsKLSAgICAgICAgICAgIG1faW5kZXggPSBvdGhlci5tX2lu
ZGV4OwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KICAgICBwcml2YXRl
OgogICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvcihTZWdtZW50ZWRWZWN0b3I8VCwgU2Vn
bWVudFNpemU+JiB2ZWN0b3IsIHNpemVfdCBpbmRleCkKICAgICAgICAgICAgIDogbV92ZWN0b3Io
dmVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmggYi9T
b3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaAppbmRleCA0ZDNiNWViYjUzYWYwZjQ0YjA0
YzE5NTM1NmY1OGIwNTQ0ZmY1YWM3Li5lM2ViZjM5MzUxNmNmYWM3OThlMWJhYTM0M2M2OTNiMDJl
OWExOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9TaW5nbGVSb290R3JhcGguaApAQCAtNTMsMTYgKzUzLDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTaW5nbGVSb290R3JhcGhOb2RlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlCi0gICAgICAgICAgICAmJiBtX2lzUm9vdCA9
PSBvdGhlci5tX2lzUm9vdDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2lu
Z2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW5nbGVS
b290R3JhcGhOb2RlJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuICp0aGlzICE9IFNpbmdsZVJvb3RHcmFwaE5vZGUoKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TbWFsbFNldC5oIGIvU291cmNlL1dURi93dGYv
U21hbGxTZXQuaAppbmRleCBjMGU0ZmY2NTdjN2RlYjI2MzM5MGRlY2E1Mzk5NzcwYTg5ZDY0YTAx
Li5iNzRlOWQ3MDU2YWM1NGJkOWM4NTZlNDIzMDY2MmQzMjM4MTkwNmUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9TbWFsbFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NtYWxsU2V0LmgK
QEAgLTE1NCw3ICsxNTQsNiBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBUIG9wZXJhdG9y
KigpIGNvbnN0IHsgQVNTRVJUKG1faW5kZXggPCBtX2NhcGFjaXR5KTsgcmV0dXJuIHN0YXRpY19j
YXN0PFQ+KG1fYnVmZmVyW21faW5kZXhdKTsgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IEFTU0VSVChtX2J1ZmZlciA9PSBvdGhlci5tX2J1
ZmZlcik7IHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7IH0KLSAgICAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyBBU1NFUlQobV9idWZmZXIg
PT0gb3RoZXIubV9idWZmZXIpOyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIEgsIHVuc2lnbmVk
IFM+IGZyaWVuZCBjbGFzcyBXVEY6OlNtYWxsU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvU29ydGVkQXJyYXlNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFwLmgKaW5k
ZXggYjliNmY0OGY5YmFiMTA3MDZiNmYwZDNhY2NlZDBhN2YxYTdjOWFiNy4uMTYyMzY4YzZhODAy
ZWU5ODYwYTUyZmRjNzY3ZDNkMzZkY2E0ZTk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
U29ydGVkQXJyYXlNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Tb3J0ZWRBcnJheU1hcC5oCkBA
IC0xMTIsNiArMTEyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+IGNv
bnN0ZXhwciBQYWNrZWRBU0NJSUxvd2VyQ29kZXMoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW3Np
emVdKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxQYWNrZWRBU0NJSUxvd2VyQ29kZXM+IHBh
cnNlKFN0cmluZ1ZpZXcpOwogICAgIGNvbnN0ZXhwciBTdG9yYWdlSW50ZWdlciB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihQYWNr
ZWRBU0NJSUxvd2VyQ29kZXMsIFBhY2tlZEFTQ0lJTG93ZXJDb2RlcykgPSBkZWZhdWx0OwogCiBw
cml2YXRlOgogICAgIHRlbXBsYXRlPHVuc2lnbmVkIHNpemU+IHN0YXRpYyBjb25zdGV4cHIgU3Rv
cmFnZUludGVnZXIgcGFjayhjb25zdCBjaGFyICgmY2hhcmFjdGVycylbc2l6ZV0pOwpAQCAtMTE5
LDkgKzEyMCw2IEBAIHByaXZhdGU6CiAgICAgU3RvcmFnZUludGVnZXIgbV92YWx1ZSB7IDAgfTsK
IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFN0b3JhZ2VJbnRlZ2VyPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KFBhY2tlZEFTQ0lJTG93ZXJDb2RlczxTdG9yYWdlSW50ZWdlcj4sIFBhY2tlZEFT
Q0lJTG93ZXJDb2RlczxTdG9yYWdlSW50ZWdlcj4pOwotdGVtcGxhdGU8dHlwZW5hbWUgU3RvcmFn
ZUludGVnZXI+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChQYWNrZWRBU0NJSUxvd2VyQ29kZXM8
U3RvcmFnZUludGVnZXI+LCBQYWNrZWRBU0NJSUxvd2VyQ29kZXM8U3RvcmFnZUludGVnZXI+KTsK
LQogdGVtcGxhdGU8QVNDSUlTdWJzZXQgc3Vic2V0PiBjb25zdGV4cHIgYm9vbCBpc0luU3Vic2V0
KGNoYXIgY2hhcmFjdGVyKQogewogICAgIGlmICghKGNoYXJhY3RlciAmJiBpc0FTQ0lJKGNoYXJh
Y3RlcikpKQpAQCAtMzYxLDE2ICszNTksNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yYWdlSW50
ZWdlcj4gYXV0byBQYWNrZWRBU0NJSUxvd2VyQ29kZXM8U3RvcmFnZUludGVnZXI+OjpwYQogICAg
IHJldHVybiBQYWNrZWRBU0NJSUxvd2VyQ29kZXMocmVzdWx0KTsKIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgU3RvcmFnZUludGVnZXI+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oUGFja2VkQVND
SUlMb3dlckNvZGVzPFN0b3JhZ2VJbnRlZ2VyPiBhLCBQYWNrZWRBU0NJSUxvd2VyQ29kZXM8U3Rv
cmFnZUludGVnZXI+IGIpCi17Ci0gICAgcmV0dXJuIGEudmFsdWUoKSA9PSBiLnZhbHVlKCk7Ci19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0b3JhZ2VJbnRlZ2VyPiBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcjwoUGFja2VkQVNDSUlMb3dlckNvZGVzPFN0b3JhZ2VJbnRlZ2VyPiBhLCBQYWNrZWRBU0NJ
SUxvd2VyQ29kZXM8U3RvcmFnZUludGVnZXI+IGIpCi17Ci0gICAgcmV0dXJuIGEudmFsdWUoKSA8
IGIudmFsdWUoKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlPiBjb25zdGV4cHIg
c3RkOjpvcHRpb25hbDxWYWx1ZVR5cGU+IG1ha2VPcHRpb25hbEZyb21Qb2ludGVyKGNvbnN0IFZh
bHVlVHlwZSogcG9pbnRlcikKIHsKICAgICBpZiAoIXBvaW50ZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5o
CmluZGV4IGVjZDM3MWM2MjMyNmM4YmM4Y2U4YTRhOGJhOGI0YWM5YzA5YmMwODIuLmFiYzIzNzE5
YzY1ZDc2ZjhmYmI3YWEzYjMwZjM3YmMxOGUyYmI3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBA
IC01MjksNiArNTI5LDEwIEBAIEFMV0FZU19JTkxJTkUgY29uc3RleHByIHR5cGVuYW1lIHJlbW92
ZV9yZWZlcmVuY2U8VD46OnR5cGUmJiBtb3ZlKFQmJiB2YWx1ZSkKICAgICByZXR1cm4gbW92ZShm
b3J3YXJkPFQ+KHZhbHVlKSk7CiB9CiAKKy8vIEZJWE1FOiBGb3Igc29tZSByZWFzb24gdGhpcyBp
cyBtaXNzaW5nIGZyb20gdGhlIDxvcmRlcmluZz4gaGVhZGVyIGluIHRoZSBTREsuCitjb25zdGV4
cHIgYm9vbCBpc19lcShwYXJ0aWFsX29yZGVyaW5nIG9yZGVyaW5nKSBub2V4Y2VwdCB7IHJldHVy
biBvcmRlcmluZyA9PSBwYXJ0aWFsX29yZGVyaW5nOjplcXVpdmFsZW50OyB9Citjb25zdGV4cHIg
Ym9vbCBpc19uZXEocGFydGlhbF9vcmRlcmluZyBvcmRlcmluZykgbm9leGNlcHQgeyByZXR1cm4g
b3JkZXJpbmcgIT0gcGFydGlhbF9vcmRlcmluZzo6ZXF1aXZhbGVudDsgfQorCiB9IC8vIG5hbWVz
cGFjZSBzdGQKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9U
aHJlYWRpbmdQcmltaXRpdmVzLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVz
LmgKaW5kZXggZmQ1NTliMjQyZGRmZmQ1ZThkOGYxMzNlYzQxM2JhM2FiNWI1MjY0Ny4uZTVhM2Ni
NjM1ZWFmMWNhODg5ZGQyMjA5NzUyNWZjZDQyOGUzMTg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaApAQCAtMzIsOSArMzIsOSBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNs
dWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogI2lmIE9TKFdJTkRPV1MpCiAjaW5jbHVkZSA8d2luZG93
cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBl
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAKaW5kZXgg
ZTI4NWEzYTE0YjI4MmMxMGRjZTc3YzY3ZDAzNmQxYzBkZDQwOTdhZS4uNjQ2MTJhZmQ5ZjhiMDgx
YzY5NDQwM2QxZDc0MGY3YzRhYzUwNTVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGlt
ZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1lV2l0aER5
bmFtaWNDbG9ja1R5cGUuY3BwCkBAIC0xMDQsMzAgKzEwNCw2IEBAIFNlY29uZHMgVGltZVdpdGhE
eW5hbWljQ2xvY2tUeXBlOjpvcGVyYXRvci0oY29uc3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBl
JiBvdGhlCiAgICAgcmV0dXJuIFNlY29uZHMobV92YWx1ZSAtIG90aGVyLm1fdmFsdWUpOwogfQog
Ci1ib29sIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZTo6b3BlcmF0b3I8KGNvbnN0IFRpbWVXaXRo
RHluYW1pY0Nsb2NrVHlwZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgUkVMRUFTRV9BU1NFUlQobV90
eXBlID09IG90aGVyLm1fdHlwZSk7Ci0gICAgcmV0dXJuIG1fdmFsdWUgPCBvdGhlci5tX3ZhbHVl
OwotfQotCi1ib29sIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZTo6b3BlcmF0b3I+KGNvbnN0IFRp
bWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgUkVMRUFTRV9BU1NF
UlQobV90eXBlID09IG90aGVyLm1fdHlwZSk7Ci0gICAgcmV0dXJuIG1fdmFsdWUgPiBvdGhlci5t
X3ZhbHVlOwotfQotCi1ib29sIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZTo6b3BlcmF0b3I8PShj
b25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIG90aGVyKSBjb25zdAotewotICAgIFJFTEVB
U0VfQVNTRVJUKG1fdHlwZSA9PSBvdGhlci5tX3R5cGUpOwotICAgIHJldHVybiBtX3ZhbHVlIDw9
IG90aGVyLm1fdmFsdWU7Ci19Ci0KLWJvb2wgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlOjpvcGVy
YXRvcj49KGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgb3RoZXIpIGNvbnN0Ci17Ci0g
ICAgUkVMRUFTRV9BU1NFUlQobV90eXBlID09IG90aGVyLm1fdHlwZSk7Ci0gICAgcmV0dXJuIG1f
dmFsdWUgPj0gb3RoZXIubV92YWx1ZTsKLX0KLQogdm9pZCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5
cGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQobV90eXBl
LCAiKCIsIG1fdmFsdWUsICIgc2VjKSIpOwpAQCAtMTUzLDUgKzEyOSwzIEBAIGJvb2wgaGFzRWxh
cHNlZChjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIHRpbWUpCiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgotCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RpbWVXaXRoRHluYW1p
Y0Nsb2NrVHlwZS5oIGIvU291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmgK
aW5kZXggNGMzZTQxZTc5YmFkYjY4ZGIyNzhiZWQ2MWNlZDExNTZlODA4MjFjOS4uOTE5NmUyMzU0
MzQxMjkwMDAxZDM0OGY0MDFjNmRiY2VkNTZjMzRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmgKKysrIGIvU291cmNlL1dURi93dGYvVGltZVdp
dGhEeW5hbWljQ2xvY2tUeXBlLmgKQEAgLTM4LDEzICszOCwxMyBAQCBjbGFzcyBUaW1lV2l0aER5
bmFtaWNDbG9ja1R5cGUgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSgpIHsgfQotICAgIAorCiAgICAgVGlt
ZVdpdGhEeW5hbWljQ2xvY2tUeXBlKFdhbGxUaW1lIHRpbWUpCiAgICAgICAgIDogbV92YWx1ZSh0
aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkKICAgICAgICAgLCBtX3R5cGUoQ2xvY2tU
eXBlOjpXYWxsKQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBUaW1lV2l0aER5bmFtaWNDbG9j
a1R5cGUoTW9ub3RvbmljVGltZSB0aW1lKQogICAgICAgICA6IG1fdmFsdWUodGltZS5zZWNvbmRz
U2luY2VFcG9jaCgpLnZhbHVlKCkpCiAgICAgICAgICwgbV90eXBlKENsb2NrVHlwZTo6TW9ub3Rv
bmljKQpAQCAtNjQsNTEgKzY0LDUxIEBAIHB1YmxpYzoKICAgICAgICAgcmVzdWx0Lm1fdHlwZSA9
IHR5cGU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCiAgICAgU2Vjb25k
cyBzZWNvbmRzU2luY2VFcG9jaCgpIGNvbnN0IHsgcmV0dXJuIFNlY29uZHMobV92YWx1ZSk7IH0K
ICAgICBDbG9ja1R5cGUgY2xvY2tUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAg
CisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlw
ZSBub3coQ2xvY2tUeXBlKTsKLSAgICAKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBUaW1lV2l0
aER5bmFtaWNDbG9ja1R5cGUgbm93V2l0aFNhbWVDbG9jaygpIGNvbnN0OwotICAgIAorCiAgICAg
VGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIHdpdGhTYW1lQ2xvY2tBbmRSYXdTZWNvbmRzKGRvdWJs
ZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBUaW1lV2l0aER5bmFtaWNDbG9j
a1R5cGU6OmZyb21SYXdTZWNvbmRzKHZhbHVlLCBjbG9ja1R5cGUoKSk7CiAgICAgfQotICAgIAor
CiAgICAgLy8gQXNzZXJ0cyB0aGF0IHRoZSB0aW1lIGlzIG9mIHRoZSB0eXBlIHlvdSB3YW50Lgog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBXYWxsVGltZSB3YWxsVGltZSgpIGNvbnN0OwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBNb25vdG9uaWNUaW1lIG1vbm90b25pY1RpbWUoKSBjb25zdDsKICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgQXBwcm94aW1hdGVUaW1lIGFwcHJveGltYXRlVGltZSgpIGNv
bnN0OwotICAgIAorCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdhbGxUaW1lIGFwcHJveGltYXRl
V2FsbFRpbWUoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTW9ub3RvbmljVGltZSBh
cHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSBjb25zdDsKLSAgICAKKwogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fdmFsdWU7IH0KLSAgICAKKwogICAgIFRp
bWVXaXRoRHluYW1pY0Nsb2NrVHlwZSBvcGVyYXRvcisoU2Vjb25kcyBvdGhlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiB3aXRoU2FtZUNsb2NrQW5kUmF3U2Vjb25kcyhtX3ZhbHVlICsg
b3RoZXIudmFsdWUoKSk7CiAgICAgfQotICAgIAorCiAgICAgVGltZVdpdGhEeW5hbWljQ2xvY2tU
eXBlIG9wZXJhdG9yLShTZWNvbmRzIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IHdpdGhTYW1lQ2xvY2tBbmRSYXdTZWNvbmRzKG1fdmFsdWUgLSBvdGhlci52YWx1ZSgpKTsKICAg
ICB9Ci0gICAgCisKICAgICAvLyBUaW1lIGlzIGEgc2NhbGFyIGFuZCBzY2FsYXJzIGNhbiBiZSBu
ZWdhdGVkIGFzIHRoaXMgY291bGQgYXJpc2UgZnJvbSBhbGdlYnJhaWMKICAgICAvLyB0cmFuc2Zv
cm1hdGlvbnMuIFNvLCB3ZSBhbGxvdyBpdC4KICAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUg
b3BlcmF0b3ItKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB3aXRoU2FtZUNsb2NrQW5k
UmF3U2Vjb25kcygtbV92YWx1ZSk7CiAgICAgfQotICAgIAorCiAgICAgVGltZVdpdGhEeW5hbWlj
Q2xvY2tUeXBlIG9wZXJhdG9yKz0oU2Vjb25kcyBvdGhlcikKICAgICB7CiAgICAgICAgIHJldHVy
biAqdGhpcyA9ICp0aGlzICsgb3RoZXI7CiAgICAgfQotICAgIAorCiAgICAgVGltZVdpdGhEeW5h
bWljQ2xvY2tUeXBlIG9wZXJhdG9yLT0oU2Vjb25kcyBvdGhlcikKICAgICB7CiAgICAgICAgIHJl
dHVybiAqdGhpcyA9ICp0aGlzIC0gb3RoZXI7CkBAIC0xMTYsMjMgKzExNiwxNSBAQCBwdWJsaWM6
CiAgICAgCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFNlY29uZHMgb3BlcmF0b3ItKGNvbnN0IFRp
bWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYpIGNvbnN0OwogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZQotICAgICAgICAgICAgJiYgbV90
eXBlID09IG90aGVyLm1fdHlwZTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgb3RoZXIpIGNvbnN0CisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYpIGNvbnN0ID0gZGVmYXVsdDsK
KworICAgIC8vIFRvIGRvIHJlbGF0aXZlIGNvbXBhcmlzb25zLCB5b3UgbXVzdCBiZSB1c2luZyB0
aW1lcyB3aXRoIHRoZSBzYW1lIGNsb2NrIHR5cGUuCisgICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8
PT4oVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIGEsIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSBi
KQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgICAgICBSRUxF
QVNFX0FTU0VSVChhLm1fdHlwZSA9PSBiLm1fdHlwZSk7CisgICAgICAgIHJldHVybiBhLm1fdmFs
dWUgPD0+IGIubV92YWx1ZTsKICAgICB9Ci0gICAgCi0gICAgLy8gVG8gZG8gcmVsYXRpdmUgY29t
cGFyaXNvbnMsIHlvdSBtdXN0IGJlIHVzaW5nIHRpbWVzIHdpdGggdGhlIHNhbWUgY2xvY2sgdHlw
ZS4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcjwoY29uc3QgVGltZVdpdGhE
eW5hbWljQ2xvY2tUeXBlJikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3Bl
cmF0b3I+KGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYpIGNvbnN0OwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPD0oY29uc3QgVGltZVdpdGhEeW5hbWljQ2xvY2tU
eXBlJikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I+PShjb25z
dCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmKSBjb25zdDsKLSAgICAKKwogICAgIFdURl9FWFBP
UlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaW55UHRyU2V0LmggYi9Tb3VyY2UvV1RGL3d0
Zi9UaW55UHRyU2V0LmgKaW5kZXggOTZmNGYyYzU5ZDEyN2I0ZDIwODMxNDY3NzJmZmRkNWRhZTI1
ZjNkYy4uODhjZDNiNDhiMTg0OWFlM2ZlYWQ5ZWEwMGIwOTBkMWJiNDRiZTM5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvVGlueVB0clNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RpbnlQ
dHJTZXQuaApAQCAtMzM0LDcgKzMzNCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICAgICAgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3Im
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7IH0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgY29u
c3QgVGlueVB0clNldCogbV9zZXQ7CkBAIC0zNTEsMTEgKzM1MCw2IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGlzU3Vic2V0T2Yob3RoZXIpOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgVGlueVB0clNldCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJMLmgKaW5kZXggYjRiYWFkMThl
M2U3MWE0N2M0ZWZkN2VjZTUxM2MxMTNjOTBiOTg5Zi4uODk1OWNkZDdmNTkyNzhiZWZlNWE3ZGRi
ZWVkODU1NzVkZjFjMjU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmgKKysrIGIv
U291cmNlL1dURi93dGYvVVJMLmgKQEAgLTI0MiwxMCArMjQyLDYgQEAgc3RhdGljX2Fzc2VydChz
aXplb2YoVVJMKSA9PSBzaXplb2YoU3RyaW5nKSArIDggKiBzaXplb2YodW5zaWduZWQpLCAiVVJM
IHNob3VsZAogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiBib29s
IG9wZXJhdG9yPT0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7Ci1ib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiwg
Y29uc3QgVVJMJik7Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJik7
Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAKIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJM
JiwgY29uc3QgVVJMJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBwcm90b2NvbEhvc3RBbmRQ
b3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CkBAIC0zMjYsMjYgKzMyMiw2IEBA
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIpCiAg
ICAgcmV0dXJuIGEuc3RyaW5nKCkgPT0gYjsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHJpbmcmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYSA9PSBiLnN0cmlu
ZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJM
JiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpICE9IGIuc3RyaW5nKCk7Ci19Ci0KLWlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiBhLCBjb25zdCBTdHJpbmcmIGIpCi17Ci0gICAg
cmV0dXJuIGEuc3RyaW5nKCkgIT0gYjsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHJpbmcmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYSAhPSBiLnN0cmluZygp
OwotfQotCiBpbmxpbmUgVVJMOjpVUkwoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKICAgICA6
IG1fc3RyaW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1VVSUQuaCBiL1NvdXJjZS9XVEYvd3RmL1VVSUQuaAppbmRleCA1OGE1MjRhNjRkMzZh
NjMxMTA0ZWZhMTJkYzhjZTZkYTIzNmNmZDBmLi43ZDQxMDIxNzk1MjQxYjhmNTFhYmI1M2E0MTY3
NmJlN2Y5ZTExY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmgKKysrIGIvU291
cmNlL1dURi93dGYvVVVJRC5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICBVVUlEJiBvcGVyYXRvcj0oY29uc3QgVVVJRCYpID0gZGVmYXVsdDsKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgVVVJRCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YSA9PSBvdGhlci5t
X2RhdGE7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVVVJRCYpIGNvbnN0ID0gZGVmYXVs
dDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxV
VUlEPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5leHBl
Y3RlZC5oIGIvU291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oCmluZGV4IGRkOTIwYTExZTc1ZTE2
ZTM1MWY1NmRjODU1ODgzZjlkMGZhYjIzZDIuLjQzMmI5OWU4MjZkMGY3MTM1ZTMwMzM3MWI1NWY2
MGVlYTk3MmRlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VuZXhwZWN0ZWQuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9VbmV4cGVjdGVkLmgKQEAgLTg4LDcgKzg4LDYgQEAgcHJpdmF0ZToK
IH07CiAKIHRlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3Qg
dW5leHBlY3RlZDxFPiYgbGhzLCBjb25zdCB1bmV4cGVjdGVkPEU+JiByaHMpIHsgcmV0dXJuIGxo
cy52YWx1ZSgpID09IHJocy52YWx1ZSgpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBFPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIGxocywgY29uc3QgdW5leHBlY3Rl
ZDxFPiYgcmhzKSB7IHJldHVybiBsaHMudmFsdWUoKSAhPSByaHMudmFsdWUoKTsgfQogCiB9fX0g
Ly8gbmFtZXNwYWNlIHN0ZDo6ZXhwZXJpbWVudGFsOjpmdW5kYW1lbnRhbHNfdjMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVW5zYWZlUG9pbnRlci5oIGIvU291cmNlL1dURi93dGYvVW5z
YWZlUG9pbnRlci5oCmluZGV4IGQxNjVhOGNiODUxNTQ0ZjE4MjRkOTc0MDRiYWVmOTgxMTkxZDc1
NGIuLjM0ZmMyYTI3ZTkyMDdmY2ZiZDU0ODU2MDMwOGFkNmMwZGZlNGQ4NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1Vuc2FmZVBvaW50ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbnNh
ZmVQb2ludGVyLmgKQEAgLTU0LDEyICs1NCw2IEBAIGJvb2wgb3BlcmF0b3I9PSh0eXBlbmFtZSBV
bnNhZmVQb2ludGVyPFQ+OjpQdHJUeXBlIGJhcmVQb2ludGVyLCBjb25zdCBVbnNhZmVQb2luCiAg
ICAgcmV0dXJuIHVuc2FmZVBvaW50ZXIgPT0gYmFyZVBvaW50ZXI7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1ib29sIG9wZXJhdG9yIT0odHlwZW5hbWUgVW5zYWZlUG9pbnRlcjxUPjo6UHRy
VHlwZSBiYXJlUG9pbnRlciwgY29uc3QgVW5zYWZlUG9pbnRlcjxUPiYgdW5zYWZlUG9pbnRlcikK
LXsKLSAgICByZXR1cm4gdW5zYWZlUG9pbnRlciAhPSBiYXJlUG9pbnRlcjsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6VW5zYWZlUG9pbnRlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggZTE0
NGEzMGNiYjhmNDZiMzY0ZjcyMWVjMDIxMDNkNzRiZWUwMjBkYy4uZmY3YWNjZTBlNmMxMjRkMGVj
MDZhZjI1OWJhNDczNTBkZTNmYzE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9y
LmgKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKQEAgLTE2NDIsMTIgKzE2NDIsNiBAQCBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5QSwgT3ZlcmZsb3dI
YW5kbGVyQSwgbWluQ2FwYWNpdHlBLAogICAgIHJldHVybiBWZWN0b3JUeXBlT3BlcmF0aW9uczxU
Pjo6Y29tcGFyZShhLmRhdGEoKSwgYi5kYXRhKCksIGEuc2l6ZSgpKTsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5QSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5k
bGVyQSwgc2l6ZV90IG1pbkNhcGFjaXR5QSwgdHlwZW5hbWUgTWFsbG9jQSwgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5QiwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyQiwgc2l6ZV90IG1pbkNhcGFjaXR5
QiwgdHlwZW5hbWUgTWFsbG9jQj4KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5QSwgT3ZlcmZsb3dIYW5kbGVyQSwgbWluQ2FwYWNpdHlBLCBNYWxs
b2NBPiYgYSwgY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5QiwgT3ZlcmZsb3dIYW5kbGVy
QiwgbWluQ2FwYWNpdHlCLCBNYWxsb2NCPiYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwot
fQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBWYWx1
ZUNoZWNrPFZlY3RvcjxUPj4gewogICAgIHR5cGVkZWYgVmVjdG9yPFQ+IFRyYWl0VHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9XYWxs
VGltZS5oCmluZGV4IDRkNGFmOWRiOWIwMTBlNDgxMWE5OWIxNzE1ZjMxNTVhOThlOWJhYzMuLmMw
MWUxOGI0YTlmM2VhYzI3ZTIwYzExNWRkOGYzMDE2NGI3ZWJjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1dhbGxUaW1lLmgKKysrIGIvU291cmNlL1dURi93dGYvV2FsbFRpbWUuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvQ2xvY2tUeXBlLmg+
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvR2VuZXJpY1RpbWVNaXhp
bi5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTk3LDUgKzk4LDMgQEAgaW5saW5lIGJvb2wgaXNm
aW5pdGUoV1RGOjpXYWxsVGltZSB0aW1lKQogfQogCiB9IC8vIG5hbWVzcGFjZSBzdGQKLQotdXNp
bmcgV1RGOjpXYWxsVGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNoTWFw
LmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaE1hcC5oCmluZGV4IDEzMTg4NTdlMTE1NzA2NWFi
NmMwYjkyNmYwMDEyZjVhZjljMWM4NTQuLjgxODFjYWI3MmQ1NzhmY2IwYjVmNzcyMGI0NGI5NDE3
NjgwMmZkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNoTWFwLmgKKysrIGIv
U291cmNlL1dURi93dGYvV2Vha0hhc2hNYXAuaApAQCAtMTY0LDcgKzE2NCw2IEBAIHB1YmxpYzoK
ICAgICAgICAgdXNpbmcgQmFzZSA9IFdlYWtIYXNoTWFwSXRlcmF0b3JCYXNlPGNvbnN0IFdlYWtI
YXNoTWFwLCB0eXBlbmFtZSBXZWFrSGFzaEltcGxNYXA6OmNvbnN0X2l0ZXJhdG9yLCBjb25zdCBQ
ZWVrUHRyVHlwZSwgY29uc3QgUGVla1R5cGU+OwogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBXZWFrSGFzaE1hcENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBCYXNl
OjptX3Bvc2l0aW9uID09IG90aGVyLkJhc2U6Om1fcG9zaXRpb247IH0KLSAgICAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFdlYWtIYXNoTWFwQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIEJhc2U6Om1fcG9zaXRpb24gIT0gb3RoZXIuQmFzZTo6bV9wb3NpdGlvbjsgfQogCiAg
ICAgICAgIGNvbnN0IFBlZWtQdHJUeXBlIGdldCgpIGNvbnN0IHsgcmV0dXJuIEJhc2U6Om1ha2VQ
ZWVrKCk7IH0KICAgICAgICAgY29uc3QgUGVla1R5cGUgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4gQmFzZTo6bWFrZVBlZWsoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV2Vha0hh
c2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNoU2V0LmgKaW5kZXggODJjNzU5NWJiYWI1
OTQyMWM2ZGU1NDU0Y2I0M2ViYWZlOGQwODljZS4uY2U3ZGFiM2E5MzhlNjExYmI3Mzk1Y2M5ODRi
MWMzYzA5NmEzYWIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5oCkBAIC03NywxMSArNzcsNiBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gbV9wb3NpdGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9uOwog
ICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYWtIYXNoU2V0Q29u
c3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBt
X3Bvc2l0aW9uICE9IG90aGVyLm1fcG9zaXRpb247Ci0gICAgICAgIH0KLQogICAgIHByaXZhdGU6
CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBXZWFr
SGFzaFNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lz
dGVudENvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIu
aAppbmRleCBhZmMzM2YzOGQ0MjMzNWJkOWU2MTI2YTRhNzhhNTA3MTBkYjI2MDhhLi4yMDdmYTA0
NDY5ZmI5NDgzODc2OGU5ZjQxYTJhMzI4OTdmNWNiMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9w
ZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAK
IG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJl
YWRpbmdQT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAK
aW5kZXggZDkyNDQ5MGQxYjU3ZjNlZTA2ZWU1ZWFkOGEyZDNjMTFjMjBjYjVkMS4uNmQzNDBlNDZm
MmIyODQ0MGIxMTNlZDc3MDllYTM3MTAxYTgyZjg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1Ro
cmVhZGluZ1BPU0lYLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUg
PHd0Zi9XVEZDb25maWcuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3
dGYvV29yZExvY2suaD4KIAogI2lmIE9TKExJTlVYKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9tU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApp
bmRleCAzM2IwZTU5NThkODM5NTYzYTY1ZTEzZGNhMjBhMjdiZjMzMTk0YmYyLi44M2EyNWQ2NTY5
ZDQ5MTdkMTJiODU2MWZiNzVkZDdlNjI5OGIzNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21TdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcu
aApAQCAtMTg0LDE4ICsxODQsNiBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IExDaGFyKik7CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcm
IGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgQXRvbVN0cmluZyYgYSwgY29uc3QgVmVjdG9yPFVDaGFyPiYgYikgeyByZXR1cm4gYS5pbXBs
KCkgJiYgZXF1YWwoYS5pbXBsKCksIGIuZGF0YSgpLCBiLnNpemUoKSk7IH0gICAgCiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyBy
ZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBMQ2hhciogYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gYiA9PSBhOyB9
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgQXRvbVN0cmlu
ZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQotaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBWZWN0b3I8VUNoYXI+JiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7
IHJldHVybiBiID09IGE7IH0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9tU3Ry
aW5nJiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiBhLmltcGwoKSAhPSBiLmltcGwo
KTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBM
Q2hhciogYikgeyByZXR1cm4gIShhID09IGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcm
IGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9Ci1pbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGIpIHsg
cmV0dXJuICEoYSA9PSBiKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMQ2hhciog
YSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gIShiID09IGEpOyB9Ci1pbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1
cm4gIWVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgVmVjdG9yPFVDaGFyPiYgYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gIShh
ID09IGIpOyB9CiAKIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBBdG9tU3RyaW5n
JiwgY29uc3QgQXRvbVN0cmluZyYpOwogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IEF0b21TdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQ1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuY3BwCmluZGV4
IGY5ZTllNjUxZTBhZGYzMmY1YWY5MzE3MjE1NjQ2OGIzYTNjMjQyOGEuLmM5ZDNlYzIxM2VjNGRj
MTlhY2M1NTI2OWYzNjJiYzY3NjA3ZjFjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQ1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcApAQCAt
MTIwLDE2ICsxMjAsMTYgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0
IENTdHJpbmcmIGIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoYS5sZW5ndGgoKSAh
PSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFtZW1jbXAo
YS5kYXRhKCksIGIuZGF0YSgpLCBhLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21w
KGEuZGF0YSgpLCBiLmRhdGEoKSwgYS5sZW5ndGgoKSk7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKQogewogICAgIGlmIChhLmlzTnVsbCgpICE9
ICFiKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFiKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICByZXR1cm4gIXN0cmNtcChhLmRhdGEoKSwgYik7CisgICAgaWYgKGEubGVuZ3Ro
KCkgIT0gc3RkOjpzdHJsZW4oYikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
IXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLCBhLmxlbmd0aCgpKTsKIH0KIAogdW5zaWduZWQgQ1N0
cmluZzo6aGFzaCgpIGNvbnN0CkBAIC0xNDIsMTMgKzE0MiwyNiBAQCB1bnNpZ25lZCBDU3RyaW5n
OjpoYXNoKCkgY29uc3QKICAgICByZXR1cm4gaGFzaGVyLmhhc2goKTsKIH0KIAotYm9vbCBvcGVy
YXRvcjwoY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmluZyYgYikKK3N0ZDo6c3Ryb25nX29y
ZGVyaW5nIG9wZXJhdG9yPD0+KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpCiB7
Ci0gICAgaWYgKGEuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAhYi5pc051bGwoKTsKLSAgICBp
ZiAoYi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzdHJjbXAo
YS5kYXRhKCksIGIuZGF0YSgpKSA8IDA7CisgICAgaWYgKGEuaXNOdWxsKCkgIT0gYi5pc051bGwo
KSkKKyAgICAgICAgcmV0dXJuIGEuaXNOdWxsKCkgPyBzdGQ6OnN0cm9uZ19vcmRlcmluZzo6bGVz
cyA6IHN0ZDo6c3Ryb25nX29yZGVyaW5nOjpncmVhdGVyOworICAgIGF1dG8gYUxlbmd0aCA9IGEu
bGVuZ3RoKCk7CisgICAgYXV0byBiTGVuZ3RoID0gYi5sZW5ndGgoKTsKKyAgICBpZiAoYXV0byBj
aGFyYWN0ZXJPcmRlcmluZyA9IHN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgc3RkOjpt
aW4oYUxlbmd0aCwgYkxlbmd0aCkpKQorICAgICAgICByZXR1cm4gY2hhcmFjdGVyT3JkZXJpbmcg
PCAwID8gc3RkOjpzdHJvbmdfb3JkZXJpbmc6Omxlc3MgOiBzdGQ6OnN0cm9uZ19vcmRlcmluZzo6
Z3JlYXRlcjsKKyAgICByZXR1cm4gYUxlbmd0aCA8PT4gYkxlbmd0aDsKK30KKworc3RkOjpzdHJv
bmdfb3JkZXJpbmcgb3BlcmF0b3I8PT4oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgY2hhciogYikK
K3sKKyAgICBpZiAoYS5pc051bGwoKSAhPSAhYikKKyAgICAgICAgcmV0dXJuIGEuaXNOdWxsKCkg
PyBzdGQ6OnN0cm9uZ19vcmRlcmluZzo6bGVzcyA6IHN0ZDo6c3Ryb25nX29yZGVyaW5nOjpncmVh
dGVyOworICAgIGF1dG8gYUxlbmd0aCA9IGEubGVuZ3RoKCk7CisgICAgYXV0byBiTGVuZ3RoID0g
c3RkOjpzdHJsZW4oYik7CisgICAgaWYgKGF1dG8gY2hhcmFjdGVyT3JkZXJpbmcgPSBzdGQ6Om1l
bWNtcChhLmRhdGEoKSwgYiwgc3RkOjptaW4oYUxlbmd0aCwgYkxlbmd0aCkpKQorICAgICAgICBy
ZXR1cm4gY2hhcmFjdGVyT3JkZXJpbmcgPCAwID8gc3RkOjpzdHJvbmdfb3JkZXJpbmc6Omxlc3Mg
OiBzdGQ6OnN0cm9uZ19vcmRlcmluZzo6Z3JlYXRlcjsKKyAgICByZXR1cm4gYUxlbmd0aCA8PT4g
Ykxlbmd0aDsKIH0KIAogYm9vbCBDU3RyaW5nSGFzaDo6ZXF1YWwoY29uc3QgQ1N0cmluZyYgYSwg
Y29uc3QgQ1N0cmluZyYgYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmlu
Zy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKaW5kZXggMjcwMGM2NmRkYWExODcw
NTRkYTU5ZGE5MzRlMDI4NzdmNGVhNDQwOC4uYWZlOGFhZjQ1YTRkNDA5NDRjYWE5M2UwZDM2OTBi
NTUyMjEwNTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKQEAgLTU0LDggKzU0LDcgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBzaXplX3QgbV9sZW5ndGg7CiB9OwogCi0vLyBBIGNvbnRhaW5lciBmb3Ig
YSBudWxsLXRlcm1pbmF0ZWQgY2hhciBhcnJheSBzdXBwb3J0aW5nIGNvcHktb24td3JpdGUKLS8v
IGFzc2lnbm1lbnQuICBUaGUgY29udGFpbmVkIGNoYXIgYXJyYXkgbWF5IGJlIG51bGwuCisvLyBB
IGNvbnRhaW5lciBmb3IgYSBudWxsLXRlcm1pbmF0ZWQgY2hhciBhcnJheSBzdXBwb3J0aW5nIGNv
cHktb24td3JpdGUgYXNzaWdubWVudC4KIGNsYXNzIENTdHJpbmcgZmluYWwgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTEyLDExICsxMTEsMTEgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8Q1N0cmluZ0J1ZmZlcj4gbV9idWZmZXI7CiB9OwogCi1XVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcm
IGIpOwotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3Ry
aW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLVdURl9FWFBPUlRfUFJJVkFURSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgY2hhciogYik7Ci1pbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuICEoYSA9
PSBiKTsgfQotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I8KGNvbnN0IENTdHJpbmcm
IGEsIGNvbnN0IENTdHJpbmcmIGIpOworLy8gTnVsbCBzdHJpbmdzIGVxdWFsIG9ubHkgdG8gb3Ro
ZXIgbnVsbCBzdHJpbmdzIGFuZCBudWxsIHN0cmluZ3Mgc29ydCBmaXJzdC4KK1dURl9FWFBPUlRf
UFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYsIGNvbnN0IENTdHJpbmcmKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYsIGNvbnN0
IGNoYXIqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6OnN0cm9uZ19vcmRlcmluZyBvcGVyYXRv
cjw9Pihjb25zdCBDU3RyaW5nJiwgY29uc3QgQ1N0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRF
IHN0ZDo6c3Ryb25nX29yZGVyaW5nIG9wZXJhdG9yPD0+KGNvbnN0IENTdHJpbmcmLCBjb25zdCBj
aGFyKik7CiAKIHN0cnVjdCBDU3RyaW5nSGFzaCB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2go
Y29uc3QgQ1N0cmluZyYgc3RyaW5nKSB7IHJldHVybiBzdHJpbmcuaGFzaCgpOyB9CkBAIC0xMjQs
MTAgKzEyMywxMCBAQCBzdHJ1Y3QgQ1N0cmluZ0hhc2ggewogICAgIHN0YXRpYyBjb25zdGV4cHIg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9OwogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IERlZmF1bHRIYXNoOwogdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8Q1N0cmluZz4g
OiBDU3RyaW5nSGFzaCB7IH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJh
aXRzOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIYXNoVHJhaXRzOwogdGVtcGxhdGU8PiBz
dHJ1Y3QgSGFzaFRyYWl0czxDU3RyaW5nPiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0czxDU3RyaW5n
PiB7IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9Db2RlUG9pbnRJdGVyYXRvci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9Db2RlUG9pbnRJ
dGVyYXRvci5oCmluZGV4IDJlMTBmNGIzZmVjYTBmMmEwMDgzZjYyYzc2ZmY4NGIyYTcwZTVlNmYu
LjZlZTk0NmM1NjNkZjgxNDYxYWViNzI5ZTk4ODc2OWFiMzdhZTIxNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQ29kZVBvaW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0NvZGVQb2ludEl0ZXJhdG9yLmgKQEAgLTUxLDEyICs1MSw3IEBAIHB1YmxpYzoKICAg
ICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIgb3BlcmF0b3IqKCkgY29uc3Q7CiAgICAgQUxXQVlTX0lO
TElORSBDb2RlUG9pbnRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwogCi0gICAgQUxXQVlTX0lOTElO
RSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9iZWdpbgotICAgICAgICAg
ICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7Ci0gICAgfQotICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZVBv
aW50SXRlcmF0b3ImKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
YXRFbmQoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvT3Jk
aW5hbE51bWJlci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9PcmRpbmFsTnVtYmVyLmgKaW5kZXgg
OTQ3MjU0NjU2NGJlMDJkNWM3OTdiMGY2MGM1MmQ5NGI2YmZiZmZjNC4uM2E0MTBmYjYzZjI2MzU5
YTUyMmU2ZTExNDljZDVkYTEzNmMwNzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9PcmRpbmFsTnVtYmVyLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9PcmRpbmFsTnVtYmVy
LmgKQEAgLTQxLDkgKzQxLDcgQEAgcHVibGljOgogICAgIGludCB6ZXJvQmFzZWRJbnQoKSBjb25z
dCB7IHJldHVybiBtX3plcm9CYXNlZFZhbHVlOyB9CiAgICAgaW50IG9uZUJhc2VkSW50KCkgY29u
c3QgeyByZXR1cm4gbV96ZXJvQmFzZWRWYWx1ZSArIDE7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9
PShPcmRpbmFsTnVtYmVyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3plcm9CYXNlZFZhbHVlID09
IG90aGVyLm1femVyb0Jhc2VkVmFsdWU7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oT3JkaW5hbE51
bWJlciBvdGhlcikgY29uc3QgeyByZXR1cm4gISgoKnRoaXMpID09IG90aGVyKTsgfQotICAgIGJv
b2wgb3BlcmF0b3I+KE9yZGluYWxOdW1iZXIgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1femVyb0Jh
c2VkVmFsdWUgPiBvdGhlci5tX3plcm9CYXNlZFZhbHVlOyB9CisgICAgZnJpZW5kIGF1dG8gb3Bl
cmF0b3I8PT4oT3JkaW5hbE51bWJlciwgT3JkaW5hbE51bWJlcikgPSBkZWZhdWx0OwogCiBwcml2
YXRlOgogICAgIE9yZGluYWxOdW1iZXIoaW50IHplcm9CYXNlZEludCkgOiBtX3plcm9CYXNlZFZh
bHVlKHplcm9CYXNlZEludCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCBh
MjE0ODIwNzM0Nzg3NjAyMzNkNGFkZjkwZGZkOTZiM2EwYTllYTA3Li4xMWRiYjkyY2VjMzIzNDg3
ZjZmNDRmYzczYjM2ODliNjQ2N2E4ODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAK
QEAgLTIxMiwxMiArMjEyLDcgQEAgU3RyaW5nVmlldyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0
ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QKIAogYm9vbCBTdHJpbmdWaWV3OjpHcmFw
aGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuICptX2ltcGwgPT0gKihvdGhlci5tX2ltcGwpOwotfQotCi1i
b29sIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpvcGVyYXRvciE9KGNv
bnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7CisgICAgcmV0dXJuICptX2ltcGwgPT0gKm90aGVyLm1faW1wbDsKIH0KIAogZW51bSBjbGFz
cyBBU0NJSUNhc2UgeyBMb3dlciwgVXBwZXIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5k
ZXggNDQ4YWY3Njg5Zjc0YTg4NTAyODE5ZTJjNjY5ZTgyZTNiYTBkYjE4MC4uMjQ1ZWRmZjEwNTJj
N2Y5MjQ2NjE5ODgxY2ZlYjg3NzU1ZjM0NzdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgK
QEAgLTIyMywxNSArMjIzLDggQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBib29sIGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNvbnN0IGMKIHRlbXBsYXRlPHVu
c2lnbmVkIGxlbmd0aD4gYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0
cmluZ1ZpZXcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsKIAogaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShTdHJpbmdWaWV3IGEsIFN0cmluZ1ZpZXcgYikgeyByZXR1cm4g
ZXF1YWwoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oU3RyaW5nVmlldyBhLCBjb25z
dCBMQ2hhciAqYik7Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KFN0cmluZ1ZpZXcgYSwgY29uc3Qg
Y2hhciAqYikgeyByZXR1cm4gZXF1YWwoYSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGIpKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyKiBhLCBTdHJpbmdWaWV3
IGIpIHsgcmV0dXJuIGVxdWFsKGIsIGEpOyB9Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oU3Ry
aW5nVmlldyBhLCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJuICFlcXVhbChhLCBiKTsgfQotaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShTdHJpbmdWaWV3IGEsIGNvbnN0IExDaGFyKiBiKSB7IHJldHVybiAh
ZXF1YWwoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oU3RyaW5nVmlldyBhLCBjb25z
dCBjaGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgTENoYXIqYSwgU3RyaW5nVmlldyBiKSB7IHJldHVybiAhZXF1YWwoYiwgYSk7IH0K
LWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciphLCBTdHJpbmdWaWV3IGIpIHsgcmV0
dXJuICFlcXVhbChiLCBhKTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShTdHJpbmdWaWV3LCBj
b25zdCBMQ2hhciopOworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShTdHJpbmdWaWV3IGEsIGNvbnN0
IGNoYXIqIGIpIHsgcmV0dXJuIGVxdWFsKGEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihiKSk7IH0KIAogc3RydWN0IFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZzsKIApAQCAt
NzQ3LDcgKzc0MCw2IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgSXRlcmF0b3Im
IG9wZXJhdG9yKysoKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYpIGNv
bnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIGVudW0gUG9zaXRpb25UYWcgeyBBdEVuZCB9OwpAQCAtNzgwLDcgKzc3Miw2IEBA
IHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsK
IAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3Im
KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0
ZXJhdG9yJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgSW1wbDsKQEAgLTc5Nyw3ICs3
ODgsNiBAQCBwdWJsaWM6CiAgICAgSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBJdGVyYXRvciYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGNvbnN0IHZvaWQqIG1fY3Vy
cmVudDsKQEAgLTgxNyw3ICs4MDcsNiBAQCBwdWJsaWM6CiAgICAgSXRlcmF0b3ImIG9wZXJhdG9y
KysoKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYpIGNvbnN0OwotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYpIGNvbnN0OwogCiBwcml2YXRlOgogICAg
IFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OwpAQCAtOTE3LDExICs5MDYsNiBAQCBpbmxpbmUgYm9v
bCBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjpJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBJdGVy
YXRvciYgb3RoZXIpCiAgICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7CiB9
CiAKLWlubGluZSBib29sIFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yOjpvcGVyYXRv
ciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Ci19Ci0KIGlubGluZSBhdXRvIFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6OmJlZ2lu
KCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKICAgICByZXR1cm4gSXRlcmF0b3IobV9zdHJpbmdWaWV3
LCAwKTsKQEAgLTk2MSwxMSArOTQ1LDYgQEAgaW5saW5lIGJvb2wgU3RyaW5nVmlldzo6Q29kZVVu
aXRzOjpJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGMKICAgICBy
ZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogfQogCi1pbmxpbmUgYm9vbCBTdHJpbmdW
aWV3OjpDb2RlVW5pdHM6Okl0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhl
cikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0KIGlubGluZSBh
dXRvIFN0cmluZ1ZpZXc6OkNvZGVVbml0czo6YmVnaW4oKSBjb25zdCAtPiBJdGVyYXRvcgogewog
ICAgIHJldHVybiBJdGVyYXRvcihtX3N0cmluZ1ZpZXcsIDApOwpAQCAtMTAzMCwxMSArMTAwOSw2
IEBAIGlubGluZSBib29sIFN0cmluZ1ZpZXc6OlNwbGl0UmVzdWx0OjpJdGVyYXRvcjo6b3BlcmF0
b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpCiAgICAgcmV0dXJuIG1fcG9zaXRpb24gPT0gb3Ro
ZXIubV9wb3NpdGlvbiAmJiBtX2lzRG9uZSA9PSBvdGhlci5tX2lzRG9uZTsKIH0KIAotaW5saW5l
IGJvb2wgU3RyaW5nVmlldzo6U3BsaXRSZXN1bHQ6Okl0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0
IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHR5cGVuYW1lIE1hdGNoZWRD
aGFyYWN0ZXJQcmVkaWNhdGU+CiBpbmxpbmUgU3RyaW5nVmlldyBTdHJpbmdWaWV3OjpzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqIGNo
YXJhY3RlcnMsIGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGUmIHByZWRpY2F0ZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFBvc2l0aW9uLmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1RleHRQb3NpdGlvbi5oCmluZGV4IGRlN2FlZmQ4YWFjY2VmYmEyMmFmN2Vl
MTY0OWJmN2FjZGJkN2QwNDEuLmViYjViYmYzZjQ4MTk4NTFhNTdmN2QwNTgwMjhhZGIzMzI5OGI1
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFBvc2l0aW9uLmgKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9UZXh0UG9zaXRpb24uaApAQCAtNDAsOCArNDAsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgVGV4dFBvc2l0aW9uKCkgeyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFRleHRQb3NpdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbGluZSA9PSBvdGhl
ci5tX2xpbmUgJiYgbV9jb2x1bW4gPT0gb3RoZXIubV9jb2x1bW47IH0KLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgVGV4dFBvc2l0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dFBvc2l0aW9uJikgY29u
c3QgPSBkZWZhdWx0OwogCiAgICAgLy8gQSB2YWx1ZSB3aXRoIGxpbmUgdmFsdWUgbGVzcyB0aGFu
IGEgbWluaW11bTsgdXNlZCBhcyBhbiBpbXBvc3NpYmxlIHBvc2l0aW9uLgogICAgIHN0YXRpYyBU
ZXh0UG9zaXRpb24gYmVsb3dSYW5nZVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4dFBvc2l0aW9uKE9y
ZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA1MTFiOWMxNjRhMWE1OGMxMWQ0Y2ZkNTMy
MWUzMmY1MjdiNGM5ZWQ2Li5iZWIwYWRhYmVjMWFmNGQ1ODBlZjczOGI4YzkyYTIwZTkxZTczZWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTM2MSwyMSArMzYxLDcgQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4g
ZXF1YWwoYS5pbXBsKCkKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBj
b25zdCBMQ2hhciogYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIpOyB9CiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gZXF1
YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH0KIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBBU0NJSUxpdGVyYWwgYikgeyByZXR1
cm4gZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiLmNoYXJh
Y3RlcnMoKSkpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExDaGFyKiBhLCBjb25z
dCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEsIGIuaW1wbCgpKTsgfQotaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBjaGFyKiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFs
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhKSwgYi5pbXBsKCkpOyB9Ci1pbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KEFTQ0lJTGl0ZXJhbCBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJu
IGVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhLmNoYXJhY3RlcnMoKSksIGIu
aW1wbCgpKTsgfQotdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFZlY3RvcjxjaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGEsIGNvbnN0IFN0
cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYi5pbXBsKCksIGEuZGF0YSgpLCBhLnNpemUoKSk7IH0K
LXRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGIpIHsg
cmV0dXJuIGIgPT0gYTsgfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYg
YSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsg
fQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IExDaGFyKiBi
KSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgp
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9Ci1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0cmluZyYgYSwgQVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuICFlcXVhbChh
LmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIuY2hhcmFjdGVycygpKSk7
IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTENoYXIqIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gIWVxdWFsKGEsIGIuaW1wbCgpKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBjaGFyKiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYSksIGIuaW1wbCgpKTsgfQotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShBU0NJSUxpdGVyYWwgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEuY2hhcmFjdGVycygpKSwgYi5pbXBsKCkp
OyB9Ci10ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgVmVjdG9yPGNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwgY29uc3QgU3RyaW5nJiBi
KSB7IHJldHVybiAhKGEgPT0gYik7IH0KLXRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4g
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFy
LCBpbmxpbmVDYXBhY2l0eT4mIGIpIHsgcmV0dXJuIGIgIT0gYTsgfQordGVtcGxhdGU8c2l6ZV90
IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwg
Y29uc3QgVmVjdG9yPGNoYXIsIGlubGluZUNhcGFjaXR5PiYgYikgeyByZXR1cm4gZXF1YWwoYS5p
bXBsKCksIGIuZGF0YSgpLCBiLnNpemUoKSk7IH0KIAogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogYm9vbCBlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RocmVhZHMvU2lnbmFscy5oIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxz
LmgKaW5kZXggOGI0MGMxNGM4NDIzZmQ0ZWNiZjYzNTA2ZDYwYmZmMWMwZmQ4NTYwZi4uOWYxODZm
NjM1NDg0MWE3NTVhYmMwZDg5ZWMzM2YwYjVmZTBlZjg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGhyZWFkcy9TaWduYWxzLmgKKysrIGIvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWdu
YWxzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIE9TKFVOSVgpCiAKKyNpbmNsdWRlIDxvcHRp
b25hbD4KICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDx0dXBsZT4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5kZXggYjVkYWY2MDI1Mzk4YTNmN2U2ZjFk
MzdhYmVjZTg0NGQ0ZjFjNjU0OC4uMTc0MzEzYzU3NmY1NGM4NTI1YjQxZDJjOThkODQ0MTQ5NGVm
MGY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0UmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTQ1LDMxICs0NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgU3RyaW5nIHRleHREYXRhOwogICAgICAgICB1aW50MzJfdCBwYXRoSW5kZXggeyAwIH07CiAK
LSAgICAgICAgTm9kZVBhdGhDb21wb25lbnQoU3RyaW5nJiYgZWxlbWVudElkZW50aWZpZXIsIFN0
cmluZyYmIG5hbWUsIFN0cmluZyYmIGRhdGEsIHVpbnQzMl90IGluZGV4KQotICAgICAgICAgICAg
OiBpZGVudGlmaWVyKFdURk1vdmUoZWxlbWVudElkZW50aWZpZXIpKQotICAgICAgICAgICAgLCBu
b2RlTmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAgICAgLCB0ZXh0RGF0YShXVEZNb3ZlKGRh
dGEpKQotICAgICAgICAgICAgLCBwYXRoSW5kZXgoaW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAg
fQotCi0gICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgZWxlbWVudElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhLCB1aW50MzJfdCBp
bmRleCkKLSAgICAgICAgICAgIDogaWRlbnRpZmllcihlbGVtZW50SWRlbnRpZmllcikKLSAgICAg
ICAgICAgICwgbm9kZU5hbWUobmFtZSkKLSAgICAgICAgICAgICwgdGV4dERhdGEoZGF0YSkKLSAg
ICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9kZVBhdGhDb21wb25lbnQmIG90aGVyKSBjb25z
dAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaWRlbnRpZmllciA9PSBvdGhlci5pZGVu
dGlmaWVyICYmIG5vZGVOYW1lID09IG90aGVyLm5vZGVOYW1lICYmIHRleHREYXRhID09IG90aGVy
LnRleHREYXRhICYmIHBhdGhJbmRleCA9PSBvdGhlci5wYXRoSW5kZXg7Ci0gICAgICAgIH0KLQot
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9kZVBhdGhDb21wb25lbnQmIG90aGVyKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50
JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Tm9kZVBhdGhDb21wb25lbnQ+IGRlY29kZShEZWNvZGVy
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlSWRlbnRpZmllci5oCmluZGV4IDZjMGIxYjRmMmFiMGMwMzMwNzY2NTRlYTRiMjc2NTU5
NDQ1ODk1MzYuLjk1NWM3MDYwZjZlYWZlODM2MTVmOGQyYTAyZmZlZDA0NTAzMjkwM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRp
Zmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
SWRlbnRpZmllci5oCkBAIC03MiwxMCArNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBt
X2RhdGFiYXNlTmFtZS5pc051bGwoKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBvdGhlci5tX2RhdGFiYXNlTmFtZSA9PSBtX2RhdGFiYXNlTmFtZSAmJiBvdGhlci5tX29y
aWdpbiA9PSBtX29yaWdpbiAmJiBvdGhlci5tX2lzVHJhbnNpZW50ID09IG1faXNUcmFuc2llbnQ7
Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXIm
KSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VOYW1lOyB9CiAgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcAppbmRleCAyYTM3YzUyOGVmNWJmOWQ5NTc3
M2EwYjEwZjAyNTIyOWJkZTVhNDE4Li41YjU1YWJhOWQ5ZWEyZTAzMzY4M2Y5NDUxODEzNTYzOGY5
NTZmYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlE
YXRhLmNwcApAQCAtNDQwLDI4ICs0NDAsNiBAQCBib29sIElEQktleURhdGE6Om9wZXJhdG9yPChj
b25zdCBJREJLZXlEYXRhJiByaHMpIGNvbnN0CiAgICAgcmV0dXJuIGNvbXBhcmUocmhzKSA8IDA7
CiB9CiAKLWJvb2wgSURCS2V5RGF0YTo6b3BlcmF0b3I9PShjb25zdCBJREJLZXlEYXRhJiBvdGhl
cikgY29uc3QKLXsKLSAgICBpZiAobV90eXBlICE9IG90aGVyLm1fdHlwZSB8fCBtX2lzTnVsbCAh
PSBvdGhlci5tX2lzTnVsbCB8fCBtX2lzRGVsZXRlZFZhbHVlICE9IG90aGVyLm1faXNEZWxldGVk
VmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBzd2l0Y2ggKG1fdHlwZSkgewotICAg
IGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlkOgotICAgIGNhc2UgSW5kZXhlZERCOjpL
ZXlUeXBlOjpNYXg6Ci0gICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok1pbjoKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6Ok51bWJlcjoKLSAgICBj
YXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6RGF0ZToKLSAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PGRv
dWJsZT4obV92YWx1ZSkgPT0gc3RkOjpnZXQ8ZG91YmxlPihvdGhlci5tX3ZhbHVlKTsKLSAgICBj
YXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgotICAgICAgICByZXR1cm4gc3RkOjpnZXQ8
U3RyaW5nPihtX3ZhbHVlKSA9PSBzdGQ6OmdldDxTdHJpbmc+KG90aGVyLm1fdmFsdWUpOwotICAg
IGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6Ci0gICAgICAgIHJldHVybiBzdGQ6Omdl
dDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSkgPT0gc3RkOjpnZXQ8VGhyZWFkU2FmZURh
dGFCdWZmZXI+KG90aGVyLm1fdmFsdWUpOwotICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpB
cnJheToKLSAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4obV92YWx1
ZSkgPT0gc3RkOjpnZXQ8VmVjdG9yPElEQktleURhdGE+PihvdGhlci5tX3ZhbHVlKTsKLSAgICB9
Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQogc2l6ZV90IElEQktleURh
dGE6OnNpemUoKSBjb25zdAogewogICAgIGlmIChtX2lzTnVsbCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaAppbmRleCA0Yjk3ODUzNjlkMTkwYTZiMTk2
OTFkMTM3YWUxNTY3ZTVjMzc5NWQ5Li4wMWJmODZhYTVhNGQwM2FhOTY5MzJlYjdjODU2MDk5ZjAz
ODE4ZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0
YS5oCkBAIC0xMTEsMTEgKzExMSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICEoKnRoaXMg
PCBvdGhlcik7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElEQktleURhdGEm
IG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSURCS2V5RGF0YSYgb3Ro
ZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAg
fQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJREJLZXlEYXRhJikgY29uc3QgPSBkZWZhdWx0
OwogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRl
bnRpZmllci5oCmluZGV4IGJlMTYxOTdmNjM0YTU5NmMzOWU1MTMwMjg1OTA2ODM1NzQ1ODY4MmEu
LjIxYWQ2NDc4YzEzMTIzZGRmYzQ5Njk3MWJmZmY5YTA5MmY1MTcwYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVz
b3VyY2VJZGVudGlmaWVyLmgKQEAgLTYxLDExICs2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVz
KTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pZGJDb25uZWN0
aW9uSWRlbnRpZmllciA9PSBvdGhlci5tX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyCi0gICAgICAg
ICAgICAmJiBtX3Jlc291cmNlTnVtYmVyID09IG90aGVyLm1fcmVzb3VyY2VOdW1iZXI7Ci0gICAg
fQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKSBjb25z
dCA9IGRlZmF1bHQ7CiAgICAgCiAgICAgSURCQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlv
bklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlh
UG9zaXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVk
aWFQb3NpdGlvblN0YXRlLmgKaW5kZXggMGFiY2I1OTIyZmY5MDMzMDhhZjU5NWNiNTRiY2FiZjRj
NjllZjU1Zi4uZDNlOGFiZmU2MTkzMTU2NWJhZjJlZDNkYjc0NWUxMGQwYzkzN2E5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFQb3NpdGlvblN0
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFQb3Np
dGlvblN0YXRlLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3RydWN0IE1lZGlhUG9zaXRpb25TdGF0ZSB7
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlh
UG9zaXRpb25TdGF0ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBNZWRpYVBvc2l0aW9uU3RhdGUmIG90aGVyKSBjb25zdCB7IHJldHVybiBkdXJhdGlvbiA9
PSBvdGhlci5kdXJhdGlvbiAmJiBwbGF5YmFja1JhdGUgPT0gb3RoZXIucGxheWJhY2tSYXRlICYm
IHBvc2l0aW9uID09IG90aGVyLnBvc2l0aW9uOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE1lZGlhUG9zaXRpb25TdGF0ZSYpIGNvbnN0ID0gZGVmYXVsdDsKIH07CiAKIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IGlubGluZSB2b2lkIE1lZGlhUG9zaXRpb25TdGF0ZTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaAppbmRleCBjMjQ5ZjA0YWU2MWZiZTU2NjVjYmE0ZTU4
Mjg2NGY2MGEwMDQzNGM1Li5iYTRiNWZjY2JkODcxNDg5ZjcwNTU4MTljODRhNTg5MmFjMzQwMDdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRy
YW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
VHJhbnNmb3JtLmgKQEAgLTY2LDEwICs2Niw2IEBAIHByaXZhdGU6CiB9OwogCiBib29sIG9wZXJh
dG9yPT0oY29uc3QgUlRDUnRwVHJhbnNmb3JtJiwgY29uc3QgUlRDUnRwVHJhbnNmb3JtJik7Ci1p
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJUQ1J0cFRyYW5zZm9ybSYgYSwgY29uc3QgUlRD
UnRwVHJhbnNmb3JtJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wZXJt
aXNzaW9ucy9QZXJtaXNzaW9uRGVzY3JpcHRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9w
ZXJtaXNzaW9ucy9QZXJtaXNzaW9uRGVzY3JpcHRvci5oCmluZGV4IDRmMmZkMjAzZWI1NWU3MWY5
YjdjNjQ5NDFkNWFmNWRmYzk2Njg2MTEuLjc5YzY3MTc1ZWQ3NDk3NTYxNDM4N2UwYWZjNTE2M2Qw
ZmI3YTJkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGVybWlzc2lvbnMv
UGVybWlzc2lvbkRlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Blcm1p
c3Npb25zL1Blcm1pc3Npb25EZXNjcmlwdG9yLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RydWN0IFBlcm1pc3Npb25EZXNjcmlwdG9yIHsKICAgICBQZXJtaXNzaW9u
TmFtZSBuYW1lOwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBlcm1pc3Npb25EZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKSBjb25zdCB7IHJldHVybiBuYW1lID09IGRlc2NyaXB0b3IubmFtZTsg
fQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQZXJtaXNzaW9uRGVzY3JpcHRvciYpIGNvbnN0
ID0gZGVmYXVsdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UGVybWlzc2lvbkRlc2NyaXB0b3I+IGRlY29kZShEZWNvZGVyJik7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAppbmRl
eCA0YWZmYWMzM2UzNDI0YzNmYWI1YWE1YjJiZWQwZDc0NDc2NzIyZmQ1Li42NTNlMzA5ZTQwNzY2
MjEyOTgwYjExOTUzYTk0ZTBiOWI4ZWJmMDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQuaApAQCAtMzA4LDcgKzMwOCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIFRhaWxQcm9jZXNzaW5nTm9kZSYgb3BlcmF0b3I9KGNvbnN0IFRhaWxQ
cm9jZXNzaW5nTm9kZSYpID0gZGVsZXRlOwogICAgICAgICBUYWlsUHJvY2Vzc2luZ05vZGUmIG9w
ZXJhdG9yPShUYWlsUHJvY2Vzc2luZ05vZGUmJikgPSBkZWxldGU7CiAgICAgICAgIEF1ZGlvTm9k
ZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZS5nZXQoKTsgfQotICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVGFpbFByb2Nlc3NpbmdOb2RlJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZTsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVGFpbFByb2Nlc3NpbmdOb2RlJikgY29uc3QgPSBkZWZhdWx0OwogICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgQXVkaW9Ob2RlJiBub2RlKSBjb25zdCB7IHJldHVybiBtX25vZGUg
PT0gJm5vZGU7IH0KICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8QXVkaW9Ob2RlPiBtX25v
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Nlc3Npb25JRC5oIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9TZXNzaW9uSUQuaAppbmRleCBkMmQ2MzIxZDcwNGMyZWY3MjQx
Y2IxMzQ4NmQ4NzgyZTIyZWU5NjgyLi41YjY1ZGM1MWRiZWFiMzY5OWE3NzQ5YjIyZGM2Y2YwY2M1
ODZjNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Nlc3Npb25JRC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lvbklELmgKQEAgLTcwLDggKzcwLDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXIgPT0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlSUQ7IH0KIAogICAgIHVpbnQ2
NF90IHRvVUludDY0KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgYm9vbCBv
cGVyYXRvcj09KFNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
ciA9PSBzZXNzaW9uSUQubV9pZGVudGlmaWVyOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KFNlc3Np
b25JRCBzZXNzaW9uSUQpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllciAhPSBzZXNzaW9uSUQu
bV9pZGVudGlmaWVyOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlc3Npb25JRCYpIGNv
bnN0ID0gZGVmYXVsdDsKICAgICBib29sIGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0
IHsgcmV0dXJuICFpc0VwaGVtZXJhbCgpOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcApp
bmRleCAwNjU5ODQwNjg5ZTRhYmI1MjIwZTViZGQ4MDUyM2Q3NDAyZjRhY2UyLi44ODhiZWYzMjM2
ODJlYTIyOTk3ZWY2NDA5YTBkNzFkODU1ZmZmZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5j
cHAKQEAgLTMyLDM3ICszMiwyOCBAQAogCiBuYW1lc3BhY2UgUEFMIHsKIAotc3RhdGljIGJvb2wg
Q01UaW1lSGFzRmxhZ3MoY29uc3QgQ01UaW1lJiBjbVRpbWUsIHVpbnQzMl90IGZsYWdzKQorTWVk
aWFUaW1lIHRvTWVkaWFUaW1lKENNVGltZSB0aW1lKQogewotICAgIHJldHVybiAoY21UaW1lLmZs
YWdzICYgZmxhZ3MpID09IGZsYWdzOworICAgIE9wdGlvblNldDxNZWRpYVRpbWU6OkZsYWc+IGZs
YWdzOworICAgIGlmICh0aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX1ZhbGlkKSB7CisgICAgICAg
IGZsYWdzLmFkZChNZWRpYVRpbWU6OlZhbGlkKTsKKyAgICAgICAgaWYgKHRpbWUuZmxhZ3MgJiBr
Q01UaW1lRmxhZ3NfUG9zaXRpdmVJbmZpbml0eSkKKyAgICAgICAgICAgIGZsYWdzLmFkZChNZWRp
YVRpbWU6OlBvc2l0aXZlSW5maW5pdGUpOworICAgICAgICBlbHNlIGlmICh0aW1lLmZsYWdzICYg
a0NNVGltZUZsYWdzX05lZ2F0aXZlSW5maW5pdHkpCisgICAgICAgICAgICBmbGFncy5hZGQoTWVk
aWFUaW1lOjpOZWdhdGl2ZUluZmluaXRlKTsKKyAgICAgICAgZWxzZSBpZiAodGltZS5mbGFncyAm
IGtDTVRpbWVGbGFnc19JbmRlZmluaXRlKQorICAgICAgICAgICAgZmxhZ3MuYWRkKE1lZGlhVGlt
ZTo6SW5kZWZpbml0ZSk7CisgICAgfQorICAgIHJldHVybiBNZWRpYVRpbWUodGltZS52YWx1ZSwg
dGltZS50aW1lc2NhbGUsIGZsYWdzKTsKIH0KIAotTWVkaWFUaW1lIHRvTWVkaWFUaW1lKGNvbnN0
IENNVGltZSYgY21UaW1lKQotewotICAgIHVpbnQzMl90IGZsYWdzID0gMDsKLSAgICBpZiAoQ01U
aW1lSGFzRmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQpKQotICAgICAgICBmbGFncyB8
PSBNZWRpYVRpbWU6OlZhbGlkOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRp
bWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19IYXNCZWVuUm91bmRlZCkpCi0gICAgICAgIGZs
YWdzIHw9IE1lZGlhVGltZTo6SGFzQmVlblJvdW5kZWQ7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdz
KGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX1Bvc2l0aXZlSW5maW5p
dHkpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6OlBvc2l0aXZlSW5maW5pdGU7Ci0gICAg
aWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZs
YWdzX05lZ2F0aXZlSW5maW5pdHkpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6Ok5lZ2F0
aXZlSW5maW5pdGU7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdz
X1ZhbGlkIHwga0NNVGltZUZsYWdzX0luZGVmaW5pdGUpKQotICAgICAgICBmbGFncyB8PSBNZWRp
YVRpbWU6OkluZGVmaW5pdGU7Ci0KLSAgICByZXR1cm4gTWVkaWFUaW1lKGNtVGltZS52YWx1ZSwg
Y21UaW1lLnRpbWVzY2FsZSwgZmxhZ3MpOwotfQotCi1DTVRpbWUgdG9DTVRpbWUoY29uc3QgTWVk
aWFUaW1lJiBtZWRpYVRpbWUpCitDTVRpbWUgdG9DTVRpbWUoTWVkaWFUaW1lIG1lZGlhVGltZSkK
IHsKICAgICBDTVRpbWUgdGltZTsKLQogICAgIGlmIChtZWRpYVRpbWUuaGFzRG91YmxlVmFsdWUo
KSkKICAgICAgICAgdGltZSA9IENNVGltZU1ha2VXaXRoU2Vjb25kcyhtZWRpYVRpbWUudG9Eb3Vi
bGUoKSwgbWVkaWFUaW1lLnRpbWVTY2FsZSgpKTsKICAgICBlbHNlCiAgICAgICAgIHRpbWUgPSBD
TVRpbWVNYWtlKG1lZGlhVGltZS50aW1lVmFsdWUoKSwgbWVkaWFUaW1lLnRpbWVTY2FsZSgpKTsK
LQogICAgIGlmIChtZWRpYVRpbWUuaXNWYWxpZCgpKQogICAgICAgICB0aW1lLmZsYWdzIHw9IGtD
TVRpbWVGbGFnc19WYWxpZDsKICAgICBpZiAobWVkaWFUaW1lLmhhc0JlZW5Sb3VuZGVkKCkpCkBA
IC03MSw3ICs2Miw2IEBAIENNVGltZSB0b0NNVGltZShjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGlt
ZSkKICAgICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfUG9zaXRpdmVJbmZpbml0eTsK
ICAgICBpZiAobWVkaWFUaW1lLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQogICAgICAgICB0aW1lLmZs
YWdzIHw9IGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5OwotCiAgICAgcmV0dXJuIHRpbWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01l
ZGlhVGltZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRp
b24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgKaW5kZXggYjNkYmUxN2FhOWJjMTI1MWRjZTJlYzhh
ZGVlN2NiODQ5NDc5YmY3MC4uYTJiY2RhZTlmOGU5OWQwZjA0ZTNmM2MzZWQyMGEzZjM2YTI5MDZk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFU
aW1lQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRp
b24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgKQEAgLTMyLDggKzMyLDggQEAKIAogbmFtZXNwYWNl
IFBBTCB7CiAKLVBBTF9FWFBPUlQgQ01UaW1lIHRvQ01UaW1lKGNvbnN0IE1lZGlhVGltZSYpOwot
UEFMX0VYUE9SVCBNZWRpYVRpbWUgdG9NZWRpYVRpbWUoY29uc3QgQ01UaW1lJik7CitQQUxfRVhQ
T1JUIENNVGltZSB0b0NNVGltZShNZWRpYVRpbWUpOworUEFMX0VYUE9SVCBNZWRpYVRpbWUgdG9N
ZWRpYVRpbWUoQ01UaW1lKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3RleHQvVGV4dEVuY29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4
dEVuY29kaW5nLmgKaW5kZXggZjQ2NjRjOTFlYTQzNWVhNWNkZGI5OTFjZmNkMjI0Nzc2YjJjYjE3
Zi4uY2UxMDczOGM4ZTdlMjUxZDE0MzUxNjk0YjAwY2FkYzg0NGI1ZTM1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0RW5jb2RpbmcuaApAQCAtNjYsNyArNjYsNiBAQCBwcml2
YXRlOgogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0RW5jb2RpbmcmIGEs
IGNvbnN0IFRleHRFbmNvZGluZyYgYikgeyByZXR1cm4gYS5uYW1lKCkgPT0gYi5uYW1lKCk7IH0K
LWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dEVuY29kaW5nJiBhLCBjb25zdCBUZXh0
RW5jb2RpbmcmIGIpIHsgcmV0dXJuIGEubmFtZSgpICE9IGIubmFtZSgpOyB9CiAKIGNvbnN0IFRl
eHRFbmNvZGluZyYgQVNDSUlFbmNvZGluZygpOwogY29uc3QgVGV4dEVuY29kaW5nJiBMYXRpbjFF
bmNvZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3Bl
cnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFu
aW1hdGlvbi5jcHAKaW5kZXggMGUxYWQ3MjQ1ZmUxNmUxZTk2ZTNkYTFjYjU4NGI5YTRhNmQ4OWYz
Yi4uY2YwZWVjOTdmM2EwMmFmOTA3YWI2NGNiNzc1MDExYmRiMmJmMDBjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0xMjEs
OCArMTIxLDggQEAgc3RhdGljIGlubGluZSBHYXBMZW5ndGggYmxlbmRGdW5jKGNvbnN0IEdhcExl
bmd0aCYgZnJvbSwgY29uc3QgR2FwTGVuZ3RoJiB0bywgY28KIAogc3RhdGljIGlubGluZSBUYWJT
aXplIGJsZW5kRnVuYyhjb25zdCBUYWJTaXplJiBmcm9tLCBjb25zdCBUYWJTaXplJiB0bywgY29u
c3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgYXV0byBibGVu
ZGVkVmFsdWUgPSBibGVuZChmcm9tLnZhbHVlKCksIHRvLnZhbHVlKCksIGNvbnRleHQpOwotICAg
IHJldHVybiB7IGJsZW5kZWRWYWx1ZSA8IDAgPyAwIDogYmxlbmRlZFZhbHVlLCBmcm9tLmlzU3Bh
Y2VzKCkgPyBTcGFjZVZhbHVlVHlwZSA6IExlbmd0aFZhbHVlVHlwZSB9OworICAgIGF1dG8gYmxl
bmRlZFZhbHVlID0gYmxlbmQoZnJvbS52YWx1ZSwgdG8udmFsdWUsIGNvbnRleHQpOworICAgIHJl
dHVybiB7IGJsZW5kZWRWYWx1ZSA8IDAgPyAwIDogYmxlbmRlZFZhbHVlLCBmcm9tLmlzU3BhY2Vz
ID8gVGFiU2l6ZTo6U3BhY2VzIDogVGFiU2l6ZTo6TGVuZ3RoIH07CiB9CiAKIHN0YXRpYyBpbmxp
bmUgTGVuZ3RoU2l6ZSBibGVuZEZ1bmMoY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVu
Z3RoU2l6ZSYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQpA
QCAtOTc4LDEwICs5NzgsOSBAQCBwcml2YXRlOgogICAgIC8vIGl0J3Mgb25seSBwb3NzaWJsZSBp
ZiB0aGV5J3JlIGJvdGggbm90IGF1dG8uCiAgICAgYm9vbCBjYW5JbnRlcnBvbGF0ZShjb25zdCBS
ZW5kZXJTdHlsZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5bGUmIHRvLCBDb21wb3NpdGVPcGVyYXRp
b24pIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBib29sIGZyb21Jc0F1dG8gPSB2YWx1ZShm
cm9tKS54KCkuaXNBdXRvKCkgJiYgdmFsdWUoZnJvbSkueSgpLmlzQXV0bygpOwotICAgICAgICBi
b29sIHRvSXNBdXRvID0gdmFsdWUodG8pLngoKS5pc0F1dG8oKSAmJiB2YWx1ZSh0bykueSgpLmlz
QXV0bygpOwotCi0gICAgICAgIHJldHVybiAoIWZyb21Jc0F1dG8gJiYgIXRvSXNBdXRvKTsgCisg
ICAgICAgIGJvb2wgZnJvbUlzQXV0byA9IHZhbHVlKGZyb20pLnguaXNBdXRvKCkgJiYgdmFsdWUo
ZnJvbSkueS5pc0F1dG8oKTsKKyAgICAgICAgYm9vbCB0b0lzQXV0byA9IHZhbHVlKHRvKS54Lmlz
QXV0bygpICYmIHZhbHVlKHRvKS55LmlzQXV0bygpOworICAgICAgICByZXR1cm4gIWZyb21Jc0F1
dG8gJiYgIXRvSXNBdXRvOwogICAgIH0KIH07CiAKQEAgLTEyOTIsMjAgKzEyOTEsMjAgQEAgc3Rh
dGljIGlubGluZSBzaXplX3Qgc2hhZG93TGlzdExlbmd0aChjb25zdCBTaGFkb3dEYXRhKiBzaGFk
b3cpCiAgICAgcmV0dXJuIGNvdW50OwogfQogCi1zdGF0aWMgaW5saW5lIGNvbnN0IFNoYWRvd0Rh
dGEqIHNoYWRvd0ZvckJsZW5kaW5nKGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdywgY29uc3Qg
U2hhZG93RGF0YSogb3RoZXJTaGFkb3cpCitzdGF0aWMgaW5saW5lIGNvbnN0IFNoYWRvd0RhdGEm
IHNoYWRvd0ZvckJsZW5kaW5nKGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdywgY29uc3QgU2hh
ZG93RGF0YSogb3RoZXJTaGFkb3cpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRv
d0RhdGE+IGRlZmF1bHRTaGFkb3dEYXRhKExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpG
aXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4
ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCBmYWxz
ZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
aGFkb3dEYXRhPiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhKExlbmd0aFBvaW50KExlbmd0aChMZW5n
dGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgoTGVuZ3Ro
VHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5z
ZXQsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBvaW50
KExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBM
ZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFk
b3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRv
d0RhdGEoTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0
aFR5cGU6OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhU
eXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpJbnNldCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50
QmxhY2spOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0U2hh
ZG93RGF0YShMZW5ndGhQb2ludCB7IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBl
OjpGaXhlZCB9IH0sIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBl
OjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRC
bGFjayk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNl
dFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3Ro
VHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3Ro
VHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJl
bnRCbGFjayk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRX
ZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7
IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3Ro
KExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3I6OnRy
YW5zcGFyZW50QmxhY2spOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBk
ZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsgeyBMZW5ndGhUeXBl
OjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZp
eGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Okluc2V0LCB0cnVl
LCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CiAKICAgICBpZiAoc3JjU2hhZG93KQotICAgICAg
ICByZXR1cm4gc3JjU2hhZG93OworICAgICAgICByZXR1cm4gKnNyY1NoYWRvdzsKIAogICAgIGlm
IChvdGhlclNoYWRvdy0+c3R5bGUoKSA9PSBTaGFkb3dTdHlsZTo6SW5zZXQpCi0gICAgICAgIHJl
dHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/ICZkZWZhdWx0SW5zZXRXZWJL
aXRCb3hTaGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRJbnNldFNoYWRvd0RhdGEuZ2V0KCk7Cisg
ICAgICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/IGRlZmF1bHRJ
bnNldFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhLmdl
dCgpOwogCi0gICAgcmV0dXJuIG90aGVyU2hhZG93LT5pc1dlYmtpdEJveFNoYWRvdygpID8gJmRl
ZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRTaGFkb3dEYXRhLmdldCgp
OworICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFkb3coKSA/IGRlZmF1bHRX
ZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDogZGVmYXVsdFNoYWRvd0RhdGEuZ2V0KCk7CiB9CiAK
IGNsYXNzIFByb3BlcnR5V3JhcHBlclNoYWRvdyBmaW5hbCA6IHB1YmxpYyBBbmltYXRpb25Qcm9w
ZXJ0eVdyYXBwZXJCYXNlIHsKQEAgLTE0MjgsMTEgKzE0MjcsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgU2hhZG93RGF0YSogbGFzdFNoYWRvdyA9IG51bGxwdHI7CiAKICAgICAgICAgd2hpbGUgKHNo
YWRvd0EgfHwgc2hhZG93QikgewotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogc3JjU2hh
ZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93QSwgc2hhZG93Qik7Ci0gICAgICAgICAgICBj
b25zdCBTaGFkb3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dCLCBz
aGFkb3dBKTsKKyAgICAgICAgICAgIGF1dG8mIHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5n
KHNoYWRvd0EsIHNoYWRvd0IpOworICAgICAgICAgICAgYXV0byYgZHN0U2hhZG93ID0gc2hhZG93
Rm9yQmxlbmRpbmcoc2hhZG93Qiwgc2hhZG93QSk7CiAKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTaGFkb3dEYXRhPiBibGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKHNyY1NoYWRvdywgZHN0
U2hhZG93LCBjb250ZXh0KTsKLSAgICAgICAgICAgIFNoYWRvd0RhdGEqIGJsZW5kZWRTaGFkb3dQ
dHIgPSBibGVuZGVkU2hhZG93LmdldCgpOworICAgICAgICAgICAgYXV0byBibGVuZGVkU2hhZG93
ID0gYmxlbmRGdW5jKCZzcmNTaGFkb3csICZkc3RTaGFkb3csIGNvbnRleHQpOworICAgICAgICAg
ICAgYXV0byBibGVuZGVkU2hhZG93UHRyID0gYmxlbmRlZFNoYWRvdy5nZXQoKTsKIAogICAgICAg
ICAgICAgaWYgKCFsYXN0U2hhZG93KQogICAgICAgICAgICAgICAgIG5ld1NoYWRvd0RhdGEgPSBX
VEZNb3ZlKGJsZW5kZWRTaGFkb3cpOwpAQCAtMTQ0MSw4ICsxNDQwLDggQEAgcHJpdmF0ZToKIAog
ICAgICAgICAgICAgbGFzdFNoYWRvdyA9IGJsZW5kZWRTaGFkb3dQdHI7CiAKLSAgICAgICAgICAg
IHNoYWRvd0EgPSBzaGFkb3dBID8gc2hhZG93QS0+bmV4dCgpIDogMDsKLSAgICAgICAgICAgIHNo
YWRvd0IgPSBzaGFkb3dCID8gc2hhZG93Qi0+bmV4dCgpIDogMDsKKyAgICAgICAgICAgIHNoYWRv
d0EgPSBzaGFkb3dBID8gc2hhZG93QS0+bmV4dCgpIDogbnVsbHB0cjsKKyAgICAgICAgICAgIHNo
YWRvd0IgPSBzaGFkb3dCID8gc2hhZG93Qi0+bmV4dCgpIDogbnVsbHB0cjsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBuZXdTaGFkb3dEYXRhOwpAQCAtMTQ3MSwxMyArMTQ3MCwxNCBAQCBw
cml2YXRlOgogCiAgICAgICAgIGludCBtYXhMZW5ndGggPSBzdGQ6Om1heChmcm9tTGVuZ3RoLCB0
b0xlbmd0aCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4TGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIGZyb21TaGFkb3cgPSBpIDwgZnJvbUxlbmd0
aCA/IGZyb21TaGFkb3dzW2ldIDogMDsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIHRv
U2hhZG93ID0gaSA8IHRvTGVuZ3RoID8gdG9TaGFkb3dzW2ldIDogMDsKKyAgICAgICAgICAgIGF1
dG8gZnJvbVNoYWRvdyA9IGkgPCBmcm9tTGVuZ3RoID8gZnJvbVNoYWRvd3NbaV0gOiBudWxscHRy
OworICAgICAgICAgICAgYXV0byB0b1NoYWRvdyA9IGkgPCB0b0xlbmd0aCA/IHRvU2hhZG93c1tp
XSA6IG51bGxwdHI7CisKKyAgICAgICAgICAgIGF1dG8mIHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJs
ZW5kaW5nKGZyb21TaGFkb3csIHRvU2hhZG93KTsKKyAgICAgICAgICAgIGF1dG8mIGRzdFNoYWRv
dyA9IHNoYWRvd0ZvckJsZW5kaW5nKHRvU2hhZG93LCBmcm9tU2hhZG93KTsKIAotICAgICAgICAg
ICAgY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoZnJvbVNo
YWRvdywgdG9TaGFkb3cpOwotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogZHN0U2hhZG93
ID0gc2hhZG93Rm9yQmxlbmRpbmcodG9TaGFkb3csIGZyb21TaGFkb3cpOworICAgICAgICAgICAg
YXV0byBibGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKCZzcmNTaGFkb3csICZkc3RTaGFkb3csIGNv
bnRleHQpOwogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gYmxlbmRl
ZFNoYWRvdyA9IGJsZW5kRnVuYyhzcmNTaGFkb3csIGRzdFNoYWRvdywgY29udGV4dCk7CiAgICAg
ICAgICAgICAvLyBJbnNlcnQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaXN0IHRvIHByZXNlcnZlIHRo
ZSBvcmRlci4KICAgICAgICAgICAgIGJsZW5kZWRTaGFkb3ctPnNldE5leHQoV1RGTW92ZShuZXdT
aGFkb3dEYXRhKSk7CiAgICAgICAgICAgICBuZXdTaGFkb3dEYXRhID0gV1RGTW92ZShibGVuZGVk
U2hhZG93KTsKQEAgLTIzNTksNyArMjM1OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9v
bCBjYW5JbnRlcnBvbGF0ZShjb25zdCBSZW5kZXJTdHlsZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5
bGUmIHRvLCBDb21wb3NpdGVPcGVyYXRpb24pIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBy
ZXR1cm4gdmFsdWUoZnJvbSkuaXNTcGFjZXMoKSA9PSB2YWx1ZSh0bykuaXNTcGFjZXMoKTsKKyAg
ICAgICAgcmV0dXJuIHZhbHVlKGZyb20pLmlzU3BhY2VzID09IHZhbHVlKHRvKS5pc1NwYWNlczsK
ICAgICB9CiAKICAgICB2b2lkIGJsZW5kKFJlbmRlclN0eWxlJiBkZXN0aW5hdGlvbiwgY29uc3Qg
UmVuZGVyU3R5bGUmIGZyb20sIGNvbnN0IFJlbmRlclN0eWxlJiB0bywgY29uc3QgQ1NTUHJvcGVy
dHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9u
cy5jcHAKaW5kZXggZGI2ZjUwOGM0Yjc3MDIwMDE4ZWJhMzIyZTAxYjE0Mjg5NDgyMGQ4Mi4uMzE1
OTZlMzA1YTUyYzE1NjRjMTZmMTZiMGVhNWRiMTExYWE1ZWJiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rp
b25zLmNwcApAQCAtMTIyLDEzICsxMjIsNiBAQCBNb2RpZnlIZWFkZXJzQWN0aW9uIE1vZGlmeUhl
YWRlcnNBY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgfTsKIH0KIAotYm9vbCBNb2Rp
ZnlIZWFkZXJzQWN0aW9uOjpvcGVyYXRvcj09KGNvbnN0IE1vZGlmeUhlYWRlcnNBY3Rpb24mIG90
aGVyKSBjb25zdAotewotICAgIHJldHVybiBvdGhlci5oYXNoVGFibGVUeXBlID09IHRoaXMtPmhh
c2hUYWJsZVR5cGUKLSAgICAgICAgJiYgb3RoZXIucmVxdWVzdEhlYWRlcnMgPT0gdGhpcy0+cmVx
dWVzdEhlYWRlcnMKLSAgICAgICAgJiYgb3RoZXIucmVzcG9uc2VIZWFkZXJzID09IHRoaXMtPnJl
c3BvbnNlSGVhZGVyczsKLX0KLQogdm9pZCBNb2RpZnlIZWFkZXJzQWN0aW9uOjpzZXJpYWxpemUo
VmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpIGNvbnN0CiB7CiAgICAgYXV0byBiZWdpbkluZGV4ID0g
dmVjdG9yLnNpemUoKTsKQEAgLTIyOSwxMSArMjIyLDYgQEAgYXV0byBNb2RpZnlIZWFkZXJzQWN0
aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdCAtPiBNb2RpZnlIZWFk
ZXIKICAgICB9OwogfQogCi1ib29sIE1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlcklu
Zm86Om9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5SGVhZGVySW5mbyYgb3RoZXIpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG90aGVyLm9wZXJhdGlvbiA9PSB0aGlzLT5vcGVyYXRpb247Ci19Ci0KIHZvaWQg
TW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6c2VyaWFsaXplKFZlY3Rvcjx1
aW50OF90PiYgdmVjdG9yKSBjb25zdAogewogICAgIGF1dG8gYmVnaW5JbmRleCA9IHZlY3Rvci5z
aXplKCk7CkBAIC0zMjEsMTIgKzMwOSw2IEBAIFJlZGlyZWN0QWN0aW9uIFJlZGlyZWN0QWN0aW9u
Ojppc29sYXRlZENvcHkoKSBjb25zdAogICAgIH07CiB9CiAKLWJvb2wgUmVkaXJlY3RBY3Rpb246
Om9wZXJhdG9yPT0oY29uc3QgUmVkaXJlY3RBY3Rpb24mIG90aGVyKSBjb25zdAotewotICAgIHJl
dHVybiBvdGhlci5oYXNoVGFibGVUeXBlID09IHRoaXMtPmhhc2hUYWJsZVR5cGUKLSAgICAgICAg
JiYgb3RoZXIuYWN0aW9uID09IHRoaXMtPmFjdGlvbjsKLX0KLQogdm9pZCBSZWRpcmVjdEFjdGlv
bjo6c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKSBjb25zdAogewogICAgIGF1dG8g
YmVnaW5JbmRleCA9IHZlY3Rvci5zaXplKCk7CkBAIC00NDYsMTggKzQyOCw2IEBAIGF1dG8gUmVk
aXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4g
VVJMVHJhbnNmb3JtQWN0CiAgICAgfTsKIH0KIAotYm9vbCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJh
bnNmb3JtQWN0aW9uOjpvcGVyYXRvcj09KGNvbnN0IFVSTFRyYW5zZm9ybUFjdGlvbiYgb3RoZXIp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG90aGVyLmZyYWdtZW50ID09IHRoaXMtPmZyYWdtZW50Ci0g
ICAgICAgICYmIG90aGVyLmhvc3QgPT0gdGhpcy0+aG9zdAotICAgICAgICAmJiBvdGhlci5wYXNz
d29yZCA9PSB0aGlzLT5wYXNzd29yZAotICAgICAgICAmJiBvdGhlci5wYXRoID09IHRoaXMtPnBh
dGgKLSAgICAgICAgJiYgb3RoZXIucG9ydCA9PSB0aGlzLT5wb3J0Ci0gICAgICAgICYmIG90aGVy
LnF1ZXJ5VHJhbnNmb3JtID09IHRoaXMtPnF1ZXJ5VHJhbnNmb3JtCi0gICAgICAgICYmIG90aGVy
LnNjaGVtZSA9PSB0aGlzLT5zY2hlbWUKLSAgICAgICAgJiYgb3RoZXIudXNlcm5hbWUgPT0gdGhp
cy0+dXNlcm5hbWU7Ci19Ci0KIHZvaWQgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlv
bjo6c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKSBjb25zdAogewogICAgIHVpbnQ4
X3QgaGFzRnJhZ21lbnQgPSAhIWZyYWdtZW50OwpAQCAtNzA3LDEyICs2NzcsNiBAQCBhdXRvIFJl
ZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjppc29sYXRl
ZENvcHkoKSBjb25zdCAtPgogICAgIH07CiB9CiAKLWJvb2wgUmVkaXJlY3RBY3Rpb246OlVSTFRy
YW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Om9wZXJhdG9yPT0oY29uc3QgUXVlcnlUcmFu
c2Zvcm0mIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBvdGhlci5hZGRPclJlcGxhY2VQYXJh
bXMgPT0gdGhpcy0+YWRkT3JSZXBsYWNlUGFyYW1zCi0gICAgICAgICYmIG90aGVyLnJlbW92ZVBh
cmFtcyA9PSB0aGlzLT5yZW1vdmVQYXJhbXM7Ci19Ci0KIHZvaWQgUmVkaXJlY3RBY3Rpb246OlVS
TFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OnNlcmlhbGl6ZShWZWN0b3I8dWludDhf
dD4mIHZlY3RvcikgY29uc3QKIHsKICAgICBhdXRvIGJlZ2luSW5kZXggPSB2ZWN0b3Iuc2l6ZSgp
OwpAQCAtNzg4LDEzICs3NTIsNiBAQCBhdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1B
Y3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpRdWVyeUtleVZhbHVlOjppc29sYXRlZAogICAgIH07CiB9
CiAKLWJvb2wgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zv
cm06OlF1ZXJ5S2V5VmFsdWU6Om9wZXJhdG9yPT0oY29uc3QgUXVlcnlLZXlWYWx1ZSYgb3RoZXIp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG90aGVyLmtleSA9PSB0aGlzLT5rZXkKLSAgICAgICAgJiYg
b3RoZXIucmVwbGFjZU9ubHkgPT0gdGhpcy0+cmVwbGFjZU9ubHkKLSAgICAgICAgJiYgb3RoZXIu
dmFsdWUgPT0gdGhpcy0+dmFsdWU7Ci19Ci0KIHZvaWQgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5z
Zm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6OnNlcmlhbGl6ZShWZWN0
b3I8dWludDhfdD4mIHZlY3RvcikgY29uc3QKIHsKICAgICBjb25zdGV4cHIgYXV0byBoZWFkZXJM
ZW5ndGggPSBzaXplb2YodWludDMyX3QpICsgc2l6ZW9mKHVpbnQzMl90KSArIHNpemVvZihib29s
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25BY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQWN0aW9ucy5oCmluZGV4IGFkM2I5MTdjYjQ3ZDJjNmZhZDAyNjY1N2Y4NjBi
MzliY2E3OGQzMDguLmRlOTNjYmIwMmZjMThkM2VhMmU4YzMzMTBiM2NkNGRmMzlkOWRlNjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25BY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuaApAQCAtNzYsNyArNzYsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQWN0aW9uV2l0aG91dE1ldGFkYXRhIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGEgewogICAgIGNvbnN0IFN0cmluZyBzdHJpbmc7
CiAgICAgVCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHsgc3RyaW5nLmlzb2xhdGVk
Q29weSgpIH0gfTsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBY3Rpb25XaXRoU3RyaW5n
TWV0YWRhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5zdHJpbmcgPT0gdGhpcy0+c3Ry
aW5nOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0
YSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4m
IHZlY3RvcikgY29uc3QgeyBzZXJpYWxpemVTdHJpbmcodmVjdG9yLCBzdHJpbmcpOyB9CiAgICAg
c3RhdGljIFQgZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90PiBzcGFuKSB7IHJldHVybiB7
IHsgZGVzZXJpYWxpemVTdHJpbmcoc3BhbikgfSB9OyB9CiAgICAgc3RhdGljIHNpemVfdCBzZXJp
YWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikgeyByZXR1cm4gc3RyaW5nU2Vy
aWFsaXplZExlbmd0aChzcGFuKTsgfQpAQCAtOTcsNyArOTcsNyBAQCBzdHJ1Y3QgV0VCQ09SRV9F
WFBPUlQgTW9kaWZ5SGVhZGVyc0FjdGlvbiB7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGhhc2go
KSBjb25zdCB7IHJldHVybiBwYWlySW50SGFzaChoZWFkZXIuaGFzaCgpLCB2YWx1ZS5oYXNoKCkp
OyB9CiAgICAgICAgICAgICBBcHBlbmRPcGVyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyBy
ZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07IH0K
LSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBcHBlbmRPcGVyYXRpb24mIG90aGVy
KSBjb25zdCB7IHJldHVybiBvdGhlci5oZWFkZXIgPT0gdGhpcy0+aGVhZGVyICYmIG90aGVyLnZh
bHVlID09IHRoaXMtPnZhbHVlOyB9CisgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
QXBwZW5kT3BlcmF0aW9uJikgY29uc3QgPSBkZWZhdWx0OwogICAgICAgICB9OwogICAgICAgICBz
dHJ1Y3QgU2V0T3BlcmF0aW9uIHsKICAgICAgICAgICAgIFN0cmluZyBoZWFkZXI7CkBAIC0xMDUs
MTQgKzEwNSwxNCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgTW9kaWZ5SGVhZGVyc0FjdGlvbiB7
CiAKICAgICAgICAgICAgIHVpbnQzMl90IGhhc2goKSBjb25zdCB7IHJldHVybiBwYWlySW50SGFz
aChoZWFkZXIuaGFzaCgpLCB2YWx1ZS5oYXNoKCkpOyB9CiAgICAgICAgICAgICBTZXRPcGVyYXRp
b24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCks
IHZhbHVlLmlzb2xhdGVkQ29weSgpIH07IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTZXRPcGVyYXRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5oZWFkZXIgPT0g
dGhpcy0+aGVhZGVyICYmIG90aGVyLnZhbHVlID09IHRoaXMtPnZhbHVlOyB9CisgICAgICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2V0T3BlcmF0aW9uJikgY29uc3QgPSBkZWZhdWx0Owog
ICAgICAgICB9OwogICAgICAgICBzdHJ1Y3QgUmVtb3ZlT3BlcmF0aW9uIHsKICAgICAgICAgICAg
IFN0cmluZyBoZWFkZXI7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGhhc2goKSBjb25zdCB7IHJl
dHVybiBoZWFkZXIuaGFzaCgpOyB9CiAgICAgICAgICAgICBSZW1vdmVPcGVyYXRpb24gaXNvbGF0
ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCkgfTsgfQotICAg
ICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlbW92ZU9wZXJhdGlvbiYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG90aGVyLmhlYWRlciA9PSB0aGlzLT5oZWFkZXI7IH0KKyAgICAgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW1vdmVPcGVyYXRpb24mKSBjb25zdCA9IGRlZmF1bHQ7
CiAgICAgICAgIH07CiAgICAgICAgIHVzaW5nIE9wZXJhdGlvblZhcmlhbnQgPSBzdGQ6OnZhcmlh
bnQ8QXBwZW5kT3BlcmF0aW9uLCBTZXRPcGVyYXRpb24sIFJlbW92ZU9wZXJhdGlvbj47CiAgICAg
ICAgIE9wZXJhdGlvblZhcmlhbnQgb3BlcmF0aW9uOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVj
dCBXRUJDT1JFX0VYUE9SVCBNb2RpZnlIZWFkZXJzQWN0aW9uIHsKICAgICAgICAgdWludDMyX3Qg
aGFzaCgpIGNvbnN0IHsgcmV0dXJuIFZhcmlhbnRIYXNoZXI6Omhhc2gob3BlcmF0aW9uKTsgfQog
ICAgICAgICBzdGF0aWMgRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVySW5mbywgc3RkOjplcnJvcl9jb2Rl
PiBwYXJzZShjb25zdCBKU09OOjpWYWx1ZSYpOwogICAgICAgICBNb2RpZnlIZWFkZXJJbmZvIGlz
b2xhdGVkQ29weSgpIGNvbnN0OwotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5
SGVhZGVySW5mbyYpIGNvbnN0OworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5
SGVhZGVySW5mbyYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAgICAgdm9pZCBzZXJpYWxpemUoVmVj
dG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBNb2RpZnlIZWFkZXJJbmZvIGRl
c2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwogICAgICAgICBzdGF0aWMgc2l6ZV90IHNl
cmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90Pik7CkBAIC0xNDUsNyArMTQ1LDcgQEAg
c3RydWN0IFdFQkNPUkVfRVhQT1JUIE1vZGlmeUhlYWRlcnNBY3Rpb24gewogICAgIHVpbnQzMl90
IGhhc2goKSBjb25zdCB7IHJldHVybiBwYWlySW50SGFzaChWZWN0b3JIYXNoZXI6Omhhc2gocmVx
dWVzdEhlYWRlcnMpLCBWZWN0b3JIYXNoZXI6Omhhc2gocmVzcG9uc2VIZWFkZXJzKSk7IH0KICAg
ICBzdGF0aWMgRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVyc0FjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBw
YXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKICAgICBNb2RpZnlIZWFkZXJzQWN0aW9uIGlzb2xh
dGVkQ29weSgpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNb2RpZnlIZWFkZXJz
QWN0aW9uJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1vZGlmeUhlYWRlcnNB
Y3Rpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVpbnQ4
X3Q+JikgY29uc3Q7CiAgICAgc3RhdGljIE1vZGlmeUhlYWRlcnNBY3Rpb24gZGVzZXJpYWxpemUo
U3Bhbjxjb25zdCB1aW50OF90Pik7CiAgICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3Ro
KFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTU4LDE0ICsxNTgsMTQgQEAgc3RydWN0IFdFQkNP
UkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKIAogICAgICAgICB1aW50MzJfdCBoYXNoKCkgY29u
c3QgeyByZXR1cm4gZXh0ZW5zaW9uUGF0aC5oYXNoKCk7IH0KICAgICAgICAgRXh0ZW5zaW9uUGF0
aEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IGV4dGVuc2lvblBhdGguaXNv
bGF0ZWRDb3B5KCkgfTsgfQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXh0ZW5zaW9u
UGF0aEFjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLmV4dGVuc2lvblBhdGggPT0g
dGhpcy0+ZXh0ZW5zaW9uUGF0aDsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXh0
ZW5zaW9uUGF0aEFjdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9OwogICAgIHN0cnVjdCBS
ZWdleFN1YnN0aXR1dGlvbkFjdGlvbiB7CiAgICAgICAgIFN0cmluZyByZWdleFN1YnN0aXR1dGlv
bjsKIAogICAgICAgICB1aW50MzJfdCBoYXNoKCkgY29uc3QgeyByZXR1cm4gcmVnZXhTdWJzdGl0
dXRpb24uaGFzaCgpOyB9CiAgICAgICAgIFJlZ2V4U3Vic3RpdHV0aW9uQWN0aW9uIGlzb2xhdGVk
Q29weSgpIGNvbnN0IHsgcmV0dXJuIHsgcmVnZXhTdWJzdGl0dXRpb24uaXNvbGF0ZWRDb3B5KCkg
fTsgfQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnZXhTdWJzdGl0dXRpb25BY3Rp
b24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5yZWdleFN1YnN0aXR1dGlvbiA9PSB0aGlz
LT5yZWdleFN1YnN0aXR1dGlvbjsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVn
ZXhTdWJzdGl0dXRpb25BY3Rpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKICAgICBzdHJ1
Y3QgVVJMVHJhbnNmb3JtQWN0aW9uIHsKICAgICAgICAgc3RydWN0IFF1ZXJ5VHJhbnNmb3JtIHsK
QEAgLTE3Nyw3ICsxNzcsNyBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RBY3Rpb24g
ewogICAgICAgICAgICAgICAgIHVpbnQzMl90IGhhc2goKSBjb25zdCB7IHJldHVybiBjb21wdXRl
SGFzaChrZXksIHJlcGxhY2VPbmx5LCB2YWx1ZSk7IH0KICAgICAgICAgICAgICAgICBzdGF0aWMg
RXhwZWN0ZWQ8UXVlcnlLZXlWYWx1ZSwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09O
OjpWYWx1ZSYpOwogICAgICAgICAgICAgICAgIFF1ZXJ5S2V5VmFsdWUgaXNvbGF0ZWRDb3B5KCkg
Y29uc3Q7Ci0gICAgICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFF1ZXJ5S2V5VmFs
dWUmKSBjb25zdDsKKyAgICAgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVlcnlL
ZXlWYWx1ZSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAgICAgICAgICAgICB2b2lkIHNlcmlhbGl6
ZShWZWN0b3I8dWludDhfdD4mKSBjb25zdDsKICAgICAgICAgICAgICAgICBzdGF0aWMgUXVlcnlL
ZXlWYWx1ZSBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAgICAgICAgICAgICAg
ICBzdGF0aWMgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90Pik7CkBA
IC0xODksNyArMTg5LDcgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsK
ICAgICAgICAgICAgIHVpbnQzMl90IGhhc2goKSBjb25zdCB7IHJldHVybiBjb21wdXRlSGFzaChW
ZWN0b3JIYXNoZXI6Omhhc2goYWRkT3JSZXBsYWNlUGFyYW1zKSwgcmVtb3ZlUGFyYW1zKTsgfQog
ICAgICAgICAgICAgc3RhdGljIEV4cGVjdGVkPFF1ZXJ5VHJhbnNmb3JtLCBzdGQ6OmVycm9yX2Nv
ZGU+IHBhcnNlKGNvbnN0IEpTT046Ok9iamVjdCYpOwogICAgICAgICAgICAgUXVlcnlUcmFuc2Zv
cm0gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUXVlcnlUcmFuc2Zvcm0mKSBjb25zdDsKKyAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBRdWVyeVRyYW5zZm9ybSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAgICAgICAgIHZvaWQg
c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwogICAgICAgICAgICAgc3RhdGljIFF1
ZXJ5VHJhbnNmb3JtIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwogICAgICAgICAg
ICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4pOwpA
QCAtMjA5LDcgKzIwOSw3IEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7
CiAgICAgICAgIHVpbnQzMl90IGhhc2goKSBjb25zdCB7IHJldHVybiBjb21wdXRlSGFzaChmcmFn
bWVudC5oYXNoKCksIGhvc3QuaGFzaCgpLCBwYXNzd29yZC5oYXNoKCksIHBhdGguaGFzaCgpLCBw
b3J0LCBWYXJpYW50SGFzaGVyOjpoYXNoKHF1ZXJ5VHJhbnNmb3JtKSwgc2NoZW1lLmhhc2goKSwg
dXNlcm5hbWUuaGFzaCgpKTsgfQogICAgICAgICBzdGF0aWMgRXhwZWN0ZWQ8VVJMVHJhbnNmb3Jt
QWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlKGNvbnN0IEpTT046Ok9iamVjdCYpOwogICAg
ICAgICBVUkxUcmFuc2Zvcm1BY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Ci0gICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBVUkxUcmFuc2Zvcm1BY3Rpb24mKSBjb25zdDsKKyAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTFRyYW5zZm9ybUFjdGlvbiYpIGNvbnN0ID0gZGVmYXVs
dDsKICAgICAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAg
ICAgIHN0YXRpYyBVUkxUcmFuc2Zvcm1BY3Rpb24gZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50
OF90Pik7CiAgICAgICAgIHN0YXRpYyBzaXplX3Qgc2VyaWFsaXplZExlbmd0aChTcGFuPGNvbnN0
IHVpbnQ4X3Q+KTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVk
aXJlY3RBY3Rpb24gewogCiAgICAgICAgIHVpbnQzMl90IGhhc2goKSBjb25zdCB7IHJldHVybiB1
cmwuaGFzaCgpOyB9CiAgICAgICAgIFVSTEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJl
dHVybiB7IHVybC5pc29sYXRlZENvcHkoKSB9OyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBVUkxBY3Rpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci51cmwgPT0gdGhpcy0+
dXJsOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkxBY3Rpb24mKSBjb25zdCA9
IGRlZmF1bHQ7CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgSGFzaFRhYmxlVHlwZSA6IHVpbnQ4
X3QgeyBFbXB0eSwgRGVsZXRlZCwgRnVsbCB9IGhhc2hUYWJsZVR5cGU7CkBAIC0yNDAsNyArMjQw
LDcgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKIAogICAgIHN0YXRp
YyBFeHBlY3RlZDxSZWRpcmVjdEFjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBK
U09OOjpPYmplY3QmKTsKICAgICBSZWRpcmVjdEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVkaXJlY3RBY3Rpb24mKSBjb25zdDsKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVkaXJlY3RBY3Rpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiAg
ICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgc3RhdGljIFJl
ZGlyZWN0QWN0aW9uIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwogICAgIHN0YXRp
YyBzaXplX3Qgc2VyaWFsaXplZExlbmd0aChTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUnVs
ZS5oCmluZGV4IGM0YmMxZjAwODg1MDg1ZmNiMjEwNTAzOTgzYWY2MThjMzQwYjYwNTMuLjQyNDY2
MGFlN2VhZTVjYjIxYWRiMWJmYmEyNzk1MDU0YzA5MzIyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblJ1bGUuaApAQCAt
NjksMTUgKzY5LDcgQEAgc3RydWN0IFRyaWdnZXIgewogICAgICAgICAgICAgJiYgY29uZGl0aW9u
cy5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyaWdnZXIm
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHVybEZpbHRlciA9PSBvdGhlci51
cmxGaWx0ZXIKLSAgICAgICAgICAgICYmIHVybEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9PSBvdGhl
ci51cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUKLSAgICAgICAgICAgICYmIHRvcFVSTEZpbHRlcklz
Q2FzZVNlbnNpdGl2ZSA9PSBvdGhlci50b3BVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUKLSAgICAg
ICAgICAgICYmIGZyYW1lVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlID09IG90aGVyLmZyYW1lVVJM
RmlsdGVySXNDYXNlU2Vuc2l0aXZlCi0gICAgICAgICAgICAmJiBmbGFncyA9PSBvdGhlci5mbGFn
cwotICAgICAgICAgICAgJiYgY29uZGl0aW9ucyA9PSBvdGhlci5jb25kaXRpb25zOwotICAgIH0K
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJpZ2dlciYpIGNvbnN0ID0gZGVmYXVsdDsKIH07
CiAKIHN0cnVjdCBUcmlnZ2VySGFzaCB7CkBAIC0xMjEsOCArMTEzLDcgQEAgc3RydWN0IEFjdGlv
biB7CiAgICAgQWN0aW9uKEFjdGlvbkRhdGEmJiBkYXRhKQogICAgICAgICA6IG1fZGF0YShXVEZN
b3ZlKGRhdGEpKSB7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBY3Rpb24mIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX2RhdGEgPT0gb3RoZXIubV9kYXRhOyB9Ci0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEFjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFjdGlvbiYpIGNvbnN0ID0gZGVmYXVs
dDsKIAogICAgIGNvbnN0IEFjdGlvbkRhdGEmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7
IH0KIApAQCAtMTU3LDEwICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4g
eyBtX3RyaWdnZXIuaXNvbGF0ZWRDb3B5KCksIG1fYWN0aW9uLmlzb2xhdGVkQ29weSgpIH07CiAg
ICAgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb250ZW50RXh0ZW5zaW9uUnVsZSYgb3Ro
ZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV90cmlnZ2VyID09IG90aGVyLm1fdHJp
Z2dlciAmJiBtX2FjdGlvbiA9PSBvdGhlci5tX2FjdGlvbjsKLSAgICB9CisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxlJikgY29uc3QgPSBkZWZhdWx0OwogCiBw
cml2YXRlOgogICAgIGNvbnN0IFRyaWdnZXIgbV90cmlnZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvREZBTm9kZS5oCmluZGV4IGVhNmM0N2MwN2IyZDc5ZTBkYTY1MGIzZWUy
MjJiNDMyN2E1NjMzODYuLmI3Yjg3YjU0OGE2Yjg2YzU1M2IwNGNlM2U2ZTI4OGRhMzYxODZlM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFOb2RlLmgKQEAgLTU0LDEw
ICs1NCw5IEBAIHB1YmxpYzoKIAogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29uc3RS
YW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJU
KCZkZmEgID09ICZvdGhlci5kZmEpOworICAgICAgICAgICAgQVNTRVJUKCZkZmEgPT0gJm90aGVy
LmRmYSk7CiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gPT0gb3RoZXIucG9zaXRpb247CiAg
ICAgICAgIH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbnN0UmFuZ2VJdGVyYXRv
ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICAgICAg
Q29uc3RSYW5nZUl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICAgICAgewpAQCAtOTgsNyArOTcs
NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQoJmRmYSAgPT0gJm90aGVyLmRmYSk7CiAg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gPT0gb3RoZXIucG9zaXRpb247CiAgICAgICAgIH0K
LSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJhbmdlSXRlcmF0b3ImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgICAgIFJhbmdlSXRlcmF0b3Im
IG9wZXJhdG9yKysoKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9IYXNoYWJsZUFjdGlvbkxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0hhc2hhYmxlQWN0aW9uTGlzdC5oCmluZGV4IDg4NzU3MDNlMTllZDk0ODYx
YjRjMDc4MjYwODU2YTcwOTRlMWMzMGIuLjQwNjA4MjI1NTc5MWE3Y2RiZWFmZDY1NDk0MmZlZDkz
ZTU5YTAyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0hh
c2hhYmxlQWN0aW9uTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0hhc2hhYmxlQWN0aW9uTGlzdC5oCkBAIC01OCwxMSArNTgsNiBAQCBzdHJ1Y3QgSGFzaGFibGVB
Y3Rpb25MaXN0IHsKICAgICAgICAgcmV0dXJuIHN0YXRlID09IG90aGVyLnN0YXRlICYmIGFjdGlv
bnMgPT0gb3RoZXIuYWN0aW9uczsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SGFzaGFibGVBY3Rpb25MaXN0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KICAgICBWZWN0b3I8dWludDY0X3Q+IGFjdGlvbnM7
CiAgICAgdW5zaWduZWQgaGFzaDsKICAgICBlbnVtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRlci5oCmluZGV4
IGU5ZGQ2YjMyZDQ1ZGY1ZmMyOTdjNzY0Y2M5YjJlMTdiZGEzM2NlMmUuLjdiZTM1N2UxMDIwMzM2
YzJhODBjODg3YmRiMWIzMGQ2MTFlN2NjYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaApAQCAtOTUs
NyArOTUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLT5p
c0VuZCA9PSBvdGhlci5pc0VuZDsKICAgICAgICAgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgRmFrZVJhbmdlSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsgfQogICAgICAgICBGYWtlUmFuZ2VJdGVyYXRvciBvcGVyYXRvcisrKCkKICAgICAg
ICAgewogICAgICAgICAgICAgaXNFbmQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdlTGlzdC5oCmluZGV4IDliMjA2ODdiOGE1MWVj
ODhkMzMwZjE1ZDU2ZmQwNmRkZDQwNzcxYjkuLjM0MWI5OWVlNzk4NDVkMGY1OWQxMjg1OTcxMTIz
Y2VjYTBlMmU1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L011dGFibGVSYW5nZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9NdXRhYmxlUmFuZ2VMaXN0LmgKQEAgLTU4LDcgKzU4LDYgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIHJldHVybiBhdEVuZCA9PSBvdGhlci5hdEVuZDsKICAgICAgICAgICAgIHJldHVybiBp
bmRleCA9PSBvdGhlci5pbmRleDsKICAgICAgICAgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CiAKICAgICAgICAgQ29uc3RJdGVyYXRvciYgb3BlcmF0b3IrKygpCiAgICAgICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcAppbmRleCBi
MDRiNTIxZDNhZGVkMTNhYWQ5Yzc1NzgyM2JkMDUyMjkxNjAyY2I2Li42ODE2NWIyZGY1MmVmYTc3
MTAwNjVkMDdhYzg4MjJhMzZjYTQxYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvTkZBVG9ERkEuY3BwCkBAIC0xNjIsMTAgKzE2Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgZmFzdEZyZWUobV91bmlxdWVOb2RlSWRTZXRCdWZmZXIpOwogICAgIH0KIAotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBVbmlxdWVOb2RlSWRTZXQmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fdW5pcXVlTm9kZUlkU2V0QnVmZmVyID09IG90aGVyLm1fdW5pcXVlTm9k
ZUlkU2V0QnVmZmVyOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5pcXVlTm9k
ZUlkU2V0JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5v
ZGVJZFNldCYgb3RoZXIpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5oCmluZGV4IGE5NjliNTQzNWRhODc1YjA5N2IwNWQz
YTcyODM2M2NkMThmOTFlN2UuLmQ4YTA2YzcxZTg3ZDk1ZTRkNWE5ZmRhMGVkODdiOGZkYzMwZWUz
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6
ZWRORkEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVk
TkZBLmgKQEAgLTkwLDcgKzkwLDYgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUKCZzZXJp
YWxpemVkTkZBID09ICZvdGhlci5zZXJpYWxpemVkTkZBKTsKICAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbiA9PSBvdGhlci5wb3NpdGlvbjsKICAgICAgICAgfQotICAgICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQ29uc3RUYXJnZXRJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICAgICAgQ29uc3RUYXJnZXRJdGVyYXRvciYgb3BlcmF0
b3IrKygpCiAgICAgICAgIHsKQEAgLTExNyw3ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBBU1NFUlQoJnNlcmlhbGl6ZWRORkEgPT0gJm90aGVyLnNlcmlhbGl6ZWRORkEpOwogICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uID09IG90aGVyLnBvc2l0aW9uOwogICAgICAgICB9Ci0gICAg
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb25zdFJhbmdlSXRlcmF0b3ImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgICAgIENvbnN0UmFuZ2VJdGVy
YXRvciYgb3BlcmF0b3IrKygpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL1Rlcm0uaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL1Rlcm0uaAppbmRleCBmMDYyZWZjZTcyZTMyZmViZjg2YmIyM2M0YmNlNmI3OGMyZGE4Mzgz
Li5jN2IwMjY2ZDcyYTFmZmFlOTBlMmNhNWY5MTA4MjRiNDA4NDIxNWE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvVGVybS5oCkBAIC0xNTgsMTIgKzE1OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpiaXRDb3VudChtX2NoYXJhY3RlcnNbMF0pICsgV1RG
OjpiaXRDb3VudChtX2NoYXJhY3RlcnNbMV0pOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2hhcmFjdGVyU2V0JiBvdGhlcikgY29uc3QKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIG90aGVyLm1faW52ZXJ0ZWQgPT0gbV9pbnZlcnRlZAot
ICAgICAgICAgICAgICAgICYmIG90aGVyLm1fY2hhcmFjdGVyc1swXSA9PSBtX2NoYXJhY3RlcnNb
MF0KLSAgICAgICAgICAgICAgICAmJiBvdGhlci5tX2NoYXJhY3RlcnNbMV0gPT0gbV9jaGFyYWN0
ZXJzWzFdOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDaGFyYWN0
ZXJTZXQmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
CiAgICAgICAgIHsKQEAgLTE3OCwxMCArMTczLDcgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgR3Jv
dXAgewogICAgICAgICBWZWN0b3I8VGVybT4gdGVybXM7CiAKLSAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEdyb3VwJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG90aGVyLnRlcm1zID09IHRlcm1zOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBHcm91cCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgICAgICB1bnNpZ25lZCBo
YXNoKCkgY29uc3QKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA1MTE5NjIyYzI1MGFhZWMxYjg1Zjc2YTdl
NWNiYzc2NzMxMWQxNWUxLi5kYzA4ZGRkZGM4MmQ3MDk2ODE3NjM2MzgyNmQyMzM5NmRkMjQzYzA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcApAQCAtMTUxNSwxNCArMTUxNSwxNCBAQCBzdGF0aWMgRWxlbWVudCogc3R5bGVFbGVt
ZW50Rm9yTm9kZShOb2RlKiBub2RlKQogc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JQb3Np
dGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IExlbmd0aFBvaW50JiBwb3NpdGlv
bikKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7Ci0gICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9z
aXRpb24ueCgpLCBzdHlsZSkpOwotICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlRm9yTGVuZ3RoKHBvc2l0aW9uLnkoKSwgc3R5bGUpKTsKKyAgICBsaXN0LT5hcHBlbmQoem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChwb3NpdGlvbi54LCBzdHlsZSkpOworICAgIGxp
c3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHBvc2l0aW9uLnksIHN0
eWxlKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVl
Rm9yUG9zaXRpb25PckF1dG8oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBMZW5ndGhQ
b2ludCYgcG9zaXRpb24pCiB7Ci0gICAgaWYgKHBvc2l0aW9uLngoKS5pc0F1dG8oKSAmJiBwb3Np
dGlvbi55KCkuaXNBdXRvKCkpCisgICAgaWYgKHBvc2l0aW9uLnguaXNBdXRvKCkgJiYgcG9zaXRp
b24ueS5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCku
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiAKICAgICByZXR1cm4gdmFsdWVG
b3JQb3NpdGlvbihzdHlsZSwgcG9zaXRpb24pOwpAQCAtMTkxOCw3ICsxOTE4LDcgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CiAgICAgZm9yIChhdXRvKiBjb250ZW50RGF0YSA9IHN0eWxlLmNvbnRlbnREYXRhKCk7IGNv
bnRlbnREYXRhOyBjb250ZW50RGF0YSA9IGNvbnRlbnREYXRhLT5uZXh0KCkpIHsKICAgICAgICAg
aWYgKGlzPENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKSkKLSAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8Q291bnRlckNvbnRl
bnREYXRhPigqY29udGVudERhdGEpLmNvdW50ZXIoKS5pZGVudGlmaWVyKCksIENTU1VuaXRUeXBl
OjpDU1NfQ09VTlRFUl9OQU1FKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRlbnREYXRh
KS5jb3VudGVyKCkuaWRlbnRpZmllciwgQ1NTVW5pdFR5cGU6OkNTU19DT1VOVEVSX05BTUUpKTsK
ICAgICAgICAgZWxzZSBpZiAoaXM8SW1hZ2VDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKSkKICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZChkb3duY2FzdDxJbWFnZUNvbnRlbnREYXRhPigqY29udGVu
dERhdGEpLmltYWdlKCkuY3NzVmFsdWUoKSk7CiAgICAgICAgIGVsc2UgaWYgKGlzPFRleHRDb250
ZW50RGF0YT4oKmNvbnRlbnREYXRhKSkKQEAgLTMwMzgsNyArMzAzOCw3IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29u
c3QgUmVuZGVyU3R5CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKICAgICAgICAgICAgIHJldHVybiB6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlKHN0eWxlLmNvbHVtbldpZHRoKCksIHN0eWxlKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRhYlNpemU6Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHN0eWxlLnRhYlNpemUoKS53aWR0aEluUGl4ZWxzKDEuMCksIHN0eWxlLnRhYlNp
emUoKS5pc1NwYWNlcygpID8gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIgOiBDU1NVbml0VHlwZTo6
Q1NTX1BYKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5
bGUudGFiU2l6ZSgpLndpZHRoSW5QaXhlbHMoMS4wKSwgc3R5bGUudGFiU2l6ZSgpLmlzU3BhY2Vz
ID8gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIgOiBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjogewogICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gbGlzdDsKICAgICAgICAgICAgIGF1dG8qIGN1cnNvcnMgPSBzdHlsZS5jdXJzb3JzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IDFiOGNlYWE2ZTI1MWZmOGViZTU3YmY0MDE1
ZmExMmExNmE1MTRlYjAuLmJhODRmMzJkNDY4Y2IwODg3YzFkM2M2N2RkZGZkYzEwOGYzMzVlMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC0xMzMsOCArMTMzLDcgQEAgcHVibGljOgog
ICAgIHN0cnVjdCBVbmljb2RlUmFuZ2UgewogICAgICAgICBVQ2hhcjMyIGZyb207CiAgICAgICAg
IFVDaGFyMzIgdG87Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbmljb2RlUmFuZ2Um
IG90aGVyKSBjb25zdCB7IHJldHVybiBmcm9tID09IG90aGVyLmZyb20gJiYgdG8gPT0gb3RoZXIu
dG87IH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVuaWNvZGVSYW5nZSYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBVbmljb2RlUmFuZ2UmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKIAogICAg
IGJvb2wgcmFuZ2VzTWF0Y2hDb2RlUG9pbnQoVUNoYXIzMikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhbWlseS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYW1pbHkuaAppbmRleCA4N2E2NDdkNDY5NzRlZTI5ZWY3MmYwOThkM2E5ZTAyZmFkZjc1
NzgwLi5lNjk0OTQyMGQ3MmRhMWE5MmY3ZDQxNGU0ZjlhMWJiZWRmODA0ZDI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhbWlseS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFtaWx5LmgKQEAgLTQxLDExICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHN0cnVjdCBDU1NGb250RmFtaWx5IHsKICAgICBTdHJpbmcgZmFtaWx5TmFtZTsKICAgICBi
b29sIGZyb21TeXN0ZW1Gb250SUQ7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0ZvbnRG
YW1pbHkmKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IENTU0ZvbnRGYW1pbHkmIGEsIGNvbnN0IENTU0ZvbnRGYW1pbHkmIGIpCi17Ci0gICAgcmV0
dXJuIGEuZmFtaWx5TmFtZSA9PSBiLmZhbWlseU5hbWUgJiYgYS5mcm9tU3lzdGVtRm9udElEID09
IGIuZnJvbVN5c3RlbUZvbnRJRDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IGM4NzM0MTQ2MTdiODFlYzdhMTE5YzFjMTQz
MDA3ZGQwZDcwZDcxY2EuLmZmNDQ5Mjc1ODJkYjM3N2JjNDE2MzQ4ODk4M2U4ZDcyY2IzZTlmY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKQEAgLTM1LDExICszNSw2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNv
bHZlZFVSTCYgYSwgY29uc3QgUmVzb2x2ZWRVUkwmIGIpCi17Ci0gICAgcmV0dXJuIGEuc3BlY2lm
aWVkVVJMU3RyaW5nID09IGIuc3BlY2lmaWVkVVJMU3RyaW5nICYmIGEucmVzb2x2ZWRVUkwgPT0g
Yi5yZXNvbHZlZFVSTDsKLX0KLQogLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1
ZXMvI3VybC1sb2NhbC11cmwtZmxhZwogYm9vbCBSZXNvbHZlZFVSTDo6aXNMb2NhbFVSTCgpIGNv
bnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAppbmRleCA1YjhlYjhhMmUxZTEzMzQz
OWU5NTQ1NzNkZmZmOGFiZGZhZWQwZjk3Li4xZTUzOWRmMjczNGUwZmUyZmI2N2NkZjhmYmRkMTY3
ZWE0ZTE2MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKQEAgLTQyLDYgKzQyLDcg
QEAgc3RydWN0IFJlc29sdmVkVVJMIHsKICAgICBTdHJpbmcgc3BlY2lmaWVkVVJMU3RyaW5nOwog
ICAgIFVSTCByZXNvbHZlZFVSTDsKICAgICBib29sIGlzTG9jYWxVUkwoKSBjb25zdDsKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb2x2ZWRVUkwmKSBjb25zdCA9IGRlZmF1bHQ7CiB9Owog
CiBjbGFzcyBDU1NJbWFnZVZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5LmgKaW5kZXggYmIwN2Y3N2VhNmZmNTg3ZDA0MGQ3NzA5ZjAzMTM3NDliODAz
ZDQ4NC4uMjVjZmU5YjM4Y2RmOGJjZTMwMjcxMDU5MTVhMDI0MzFkNmNjZjdkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5LmgKQEAgLTQxLDE1ICs0MSw3IEBAIHN0cnVjdCBTdHlsZVByb3BlcnR5
TWV0YWRhdGEgewogCiAgICAgQ1NTUHJvcGVydHlJRCBzaG9ydGhhbmRJRCgpIGNvbnN0OwogICAg
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVByb3BlcnR5TWV0YWRhdGEmIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlJRCA9PSBvdGhlci5tX3By
b3BlcnR5SUQKLSAgICAgICAgICAgICYmIG1faXNTZXRGcm9tU2hvcnRoYW5kID09IG90aGVyLm1f
aXNTZXRGcm9tU2hvcnRoYW5kCi0gICAgICAgICAgICAmJiBtX2luZGV4SW5TaG9ydGhhbmRzVmVj
dG9yID09IG90aGVyLm1faW5kZXhJblNob3J0aGFuZHNWZWN0b3IKLSAgICAgICAgICAgICYmIG1f
aW1wb3J0YW50ID09IG90aGVyLm1faW1wb3J0YW50Ci0gICAgICAgICAgICAmJiBtX2ltcGxpY2l0
ID09IG90aGVyLm1faW1wbGljaXQKLSAgICAgICAgICAgICYmIG1faW5oZXJpdGVkID09IG90aGVy
Lm1faW5oZXJpdGVkOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVQcm9w
ZXJ0eU1ldGFkYXRhJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgdWludDE2X3QgbV9wcm9wZXJ0
eUlEIDogMTA7CiAgICAgdWludDE2X3QgbV9pc1NldEZyb21TaG9ydGhhbmQgOiAxOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAppbmRleCBmNWJjOGNhOTZiOTBkNjA1NTBkY2E1
ODIxZTgzODU0OWE0YjJmN2VmLi5kNmExMmNiYjk2OTIyNzM4NTQyZjRlMDk3NDczZTdiOGVjN2Rl
NjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIExheW91dFNpemUgc2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVu
Z3RoLCBjb25zdCBMYXlvdXRTaXplJiBtYXhpbXVtCiAKIExheW91dFBvaW50IHBvaW50Rm9yTGVu
Z3RoUG9pbnQoY29uc3QgTGVuZ3RoUG9pbnQmIGxlbmd0aFBvaW50LCBjb25zdCBMYXlvdXRTaXpl
JiBtYXhpbXVtVmFsdWUpCiB7Ci0gICAgcmV0dXJuIHsgdmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9p
bnQueCgpLCBtYXhpbXVtVmFsdWUud2lkdGgoKSksIHZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50
LnkoKSwgbWF4aW11bVZhbHVlLmhlaWdodCgpKSB9OworICAgIHJldHVybiB7IHZhbHVlRm9yTGVu
Z3RoKGxlbmd0aFBvaW50LngsIG1heGltdW1WYWx1ZS53aWR0aCgpKSwgdmFsdWVGb3JMZW5ndGgo
bGVuZ3RoUG9pbnQueSwgbWF4aW11bVZhbHVlLmhlaWdodCgpKSB9OwogfQogCiBGbG9hdFNpemUg
ZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5ndGhTaXplJiBsZW5ndGhTaXplLCBjb25z
dCBGbG9hdFNpemUmIGJveFNpemUpCkBAIC0xMzMsNyArMTMzLDcgQEAgRmxvYXRTaXplIGZsb2F0
U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxv
YXRTaXplJgogCiBGbG9hdFBvaW50IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChjb25zdCBMZW5n
dGhQb2ludCYgbGVuZ3RoUG9pbnQsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkKIHsKLSAgICBy
ZXR1cm4geyBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LngoKSwgYm94U2l6ZS53aWR0
aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC55KCksIGJveFNpemUuaGVpZ2h0
KCkpIH07CisgICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC54LCBi
b3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LnksIGJveFNp
emUuaGVpZ2h0KCkpIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwCmluZGV4IDczMWIyZDhkNTA0
YzgyZDMzOGE0N2VjYTY4OWViOTRmZTkzMTE1N2MuLmUzOGJlNDhkN2I1ODY5N2UwODc2OWIzYzdj
N2I0YmIyNjQ1ZTE5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJDb250ZXh0LmNwcApAQCAtMTE1LDU1ICsxMTUsNiBAQCBDU1NQYXJzZXJDb250ZXh0OjpDU1NQ
YXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiBzaGVldEJh
cwogewogfQogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgYSwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYgYikKLXsKLSAgICByZXR1cm4gYS5iYXNlVVJMID09IGIuYmFz
ZVVSTAotICAgICAgICAmJiBhLmNoYXJzZXQgPT0gYi5jaGFyc2V0Ci0gICAgICAgICYmIGEubW9k
ZSA9PSBiLm1vZGUKLSAgICAgICAgJiYgYS5lbmNsb3NpbmdSdWxlVHlwZSA9PSBiLmVuY2xvc2lu
Z1J1bGVUeXBlCi0gICAgICAgICYmIGEuaXNIVE1MRG9jdW1lbnQgPT0gYi5pc0hUTUxEb2N1bWVu
dAotICAgICAgICAmJiBhLmhhc0RvY3VtZW50U2VjdXJpdHlPcmlnaW4gPT0gYi5oYXNEb2N1bWVu
dFNlY3VyaXR5T3JpZ2luCi0gICAgICAgICYmIGEuaXNDb250ZW50T3BhcXVlID09IGIuaXNDb250
ZW50T3BhcXVlCi0gICAgICAgICYmIGEudXNlU3lzdGVtQXBwZWFyYW5jZSA9PSBiLnVzZVN5c3Rl
bUFwcGVhcmFuY2UKLSAgICAgICAgJiYgYS5hY2NlbnRDb2xvckVuYWJsZWQgPT0gYi5hY2NlbnRD
b2xvckVuYWJsZWQKLSAgICAgICAgJiYgYS5hc3BlY3RSYXRpb0VuYWJsZWQgPT0gYi5hc3BlY3RS
YXRpb0VuYWJsZWQKLSAgICAgICAgJiYgYS5jb2xvckNvbnRyYXN0RW5hYmxlZCA9PSBiLmNvbG9y
Q29udHJhc3RFbmFibGVkCi0gICAgICAgICYmIGEuY29sb3JGaWx0ZXJFbmFibGVkID09IGIuY29s
b3JGaWx0ZXJFbmFibGVkCi0gICAgICAgICYmIGEuY29sb3JNaXhFbmFibGVkID09IGIuY29sb3JN
aXhFbmFibGVkCi0gICAgICAgICYmIGEuY29uc3RhbnRQcm9wZXJ0aWVzRW5hYmxlZCA9PSBiLmNv
bnN0YW50UHJvcGVydGllc0VuYWJsZWQKLSAgICAgICAgJiYgYS5jb250YWlubWVudEVuYWJsZWQg
PT0gYi5jb250YWlubWVudEVuYWJsZWQKLSAgICAgICAgJiYgYS5jb3VudGVyU3R5bGVBdFJ1bGVz
RW5hYmxlZCA9PSBiLmNvdW50ZXJTdHlsZUF0UnVsZXNFbmFibGVkCi0gICAgICAgICYmIGEuY291
bnRlclN0eWxlQXRSdWxlSW1hZ2VTeW1ib2xzRW5hYmxlZCA9PSBiLmNvdW50ZXJTdHlsZUF0UnVs
ZUltYWdlU3ltYm9sc0VuYWJsZWQKLSAgICAgICAgJiYgYS5jc3NDb2xvcjQgPT0gYi5jc3NDb2xv
cjQKLSAgICAgICAgJiYgYS5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQgPT0gYi5kZWZlcnJlZENT
U1BhcnNlckVuYWJsZWQKLSAgICAgICAgJiYgYS5pbmRpdmlkdWFsVHJhbnNmb3JtUHJvcGVydGll
c0VuYWJsZWQgPT0gYi5pbmRpdmlkdWFsVHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWQKLSNpZiBF
TkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIKQotICAgICAgICAmJiBhLmxlZ2FjeU92ZXJm
bG93U2Nyb2xsaW5nVG91Y2hFbmFibGVkID09IGIubGVnYWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3Vj
aEVuYWJsZWQKLSNlbmRpZgotICAgICAgICAmJiBhLm92ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWQg
PT0gYi5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkCi0gICAgICAgICYmIGEucmVsYXRpdmVDb2xv
clN5bnRheEVuYWJsZWQgPT0gYi5yZWxhdGl2ZUNvbG9yU3ludGF4RW5hYmxlZAotICAgICAgICAm
JiBhLnNjcm9sbEJlaGF2aW9yRW5hYmxlZCA9PSBiLnNjcm9sbEJlaGF2aW9yRW5hYmxlZAotICAg
ICAgICAmJiBhLnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZCA9PSBiLnNwcmluZ1RpbWluZ0Z1
bmN0aW9uRW5hYmxlZAotI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCi0gICAgICAgICYmIGEu
dGV4dEF1dG9zaXppbmdFbmFibGVkID09IGIudGV4dEF1dG9zaXppbmdFbmFibGVkCi0jZW5kaWYK
LSNpZiBFTkFCTEUoQ1NTX1RSQU5TRk9STV9TVFlMRV9PUFRJTUlaRURfM0QpCi0gICAgICAgICYm
IGEudHJhbnNmb3JtU3R5bGVPcHRpbWl6ZWQzREVuYWJsZWQgPT0gYi50cmFuc2Zvcm1TdHlsZU9w
dGltaXplZDNERW5hYmxlZAotI2VuZGlmCi0gICAgICAgICYmIGEudXNlTGVnYWN5QmFja2dyb3Vu
ZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9PSBiLnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRo
YW5kQmVoYXZpb3IKLSAgICAgICAgJiYgYS5mb2N1c1Zpc2libGVFbmFibGVkID09IGIuZm9jdXNW
aXNpYmxlRW5hYmxlZAotICAgICAgICAmJiBhLmhhc1BzZXVkb0NsYXNzRW5hYmxlZCA9PSBiLmhh
c1BzZXVkb0NsYXNzRW5hYmxlZAotICAgICAgICAmJiBhLmNhc2NhZGVMYXllcnNFbmFibGVkID09
IGIuY2FzY2FkZUxheWVyc0VuYWJsZWQKLSAgICAgICAgJiYgYS5jb250YWluZXJRdWVyaWVzRW5h
YmxlZCA9PSBiLmNvbnRhaW5lclF1ZXJpZXNFbmFibGVkCi0gICAgICAgICYmIGEub3ZlcmZsb3dD
bGlwRW5hYmxlZCA9PSBiLm92ZXJmbG93Q2xpcEVuYWJsZWQKLSAgICAgICAgJiYgYS5ncmFkaWVu
dFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25FbmFibGVkID09IGIuZ3JhZGllbnRQcmVt
dWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxlZAotICAgICAgICAmJiBhLmdyYWRpZW50
SW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VzRW5hYmxlZCA9PSBiLmdyYWRpZW50SW50ZXJwb2xhdGlv
bkNvbG9yU3BhY2VzRW5hYmxlZAotI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAg
ICAgICYmIGEuYXR0YWNobWVudEVuYWJsZWQgPT0gYi5hdHRhY2htZW50RW5hYmxlZAotI2VuZGlm
Ci0gICAgOwotfQotCiB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICB1aW50NjRfdCBiaXRzID0gY29udGV4dC5pc0hUTUxEb2N1
bWVudCAgICAgICAgICAgICAgICAgIDw8IDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJDb250ZXh0LmgKaW5kZXggOGMyMzRkZjQ2MmUzMGVlMmNjMzg2MmNlODdjYTI4MDgx
YTk1MTgzYi4uYWUyMjlmM2UwMjE4YTlkZTYzOTY5ZDA4M2IyYWJjMDkzZDE1NzdkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKQEAgLTk4LDExICs5
OCw5IEBAIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0IHsKICAgICBXRUJDT1JFX0VYUE9SVCBDU1NQ
YXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCks
IGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IGVtcHR5U3RyaW5nKCkpOwogICAgIGJvb2wgaXNQcm9w
ZXJ0eVJ1bnRpbWVEaXNhYmxlZChDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBSZXNvbHZlZFVS
TCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpIGNvbnN0ID0gZGVmYXVsdDsKIH07CiAKLWJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDU1NQYXJzZXJDb250ZXh0JiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYp
OwotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBhLCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLQogdm9pZCBhZGQo
SGFzaGVyJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwogCiBXRUJDT1JFX0VYUE9SVCBjb25z
dCBDU1NQYXJzZXJDb250ZXh0JiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmgKaW5kZXggODc0YjQ2Mzc3ZDA3MmFiNzBj
MTIxMjNlYjgwZTk2YjU3NGIzNzQ2OS4uYjNiMzNhMTUwYzFmNDU1ZDRlNDBhYjZjOGMwZTVlZjUy
NjE1NmQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJU
b2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uaApA
QCAtMTA1LDggKzEwNSw3IEBAIHB1YmxpYzoKIAogICAgIENTU1BhcnNlclRva2VuKEhhc2hUb2tl
blR5cGUsIFN0cmluZ1ZpZXcpOwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNl
clRva2VuJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTU1BhcnNl
clRva2VuJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyVG9rZW4mKSBjb25zdDsKIAogICAgIC8vIENv
bnZlcnRzIE51bWJlclRva2VuIHRvIERpbWVuc2lvblRva2VuLgogICAgIHZvaWQgY29udmVydFRv
RGltZW5zaW9uV2l0aFVuaXQoU3RyaW5nVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQm91bmRhcnlQb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2lu
dC5jcHAKaW5kZXggY2IxMjA2NzUwZjhiYjExNGFjM2UwODBiMjNkZjQ5NGZkMjEwNzRiNS4uZGNk
N2UzM2EwYmFlYmEwMDYxZDYzMzliM2Q2ZDg0MGJlOTM1YzI5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9C
b3VuZGFyeVBvaW50LmNwcApAQCAtMjksOSArMjksOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXRlbXBsYXRlIFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXI8VHJlZT4oY29uc3QgQm91bmRh
cnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKLXRlbXBsYXRlIFBhcnRpYWxPcmRlcmlu
ZyB0cmVlT3JkZXI8IFNoYWRvd0luY2x1ZGluZ1RyZWUgPihjb25zdCBCb3VuZGFyeVBvaW50Jiwg
Y29uc3QgQm91bmRhcnlQb2ludCYpOwotdGVtcGxhdGUgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRl
cjxDb21wb3NlZFRyZWU+KGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50
Jik7Cit0ZW1wbGF0ZSBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyPFRyZWU+KGNvbnN0
IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7Cit0ZW1wbGF0ZSBzdGQ6OnBh
cnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyPCBTaGFkb3dJbmNsdWRpbmdUcmVlID4oY29uc3QgQm91
bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKK3RlbXBsYXRlIHN0ZDo6cGFydGlh
bF9vcmRlcmluZyB0cmVlT3JkZXI8Q29tcG9zZWRUcmVlPihjb25zdCBCb3VuZGFyeVBvaW50Jiwg
Y29uc3QgQm91bmRhcnlQb2ludCYpOwogCiBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1h
a2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZShOb2RlJiBub2RlKQogewpAQCAtNjYsMTYgKzY2LDE2
IEBAIHN0YXRpYyBib29sIGlzT2Zmc2V0QmVmb3JlQ2hpbGQoQ29udGFpbmVyTm9kZSYgY29udGFp
bmVyLCB1bnNpZ25lZCBvZmZzZXQsIE5vZGUmCiAKIC8vIEZJWE1FOiBPbmNlIHdlIG1vdmUgdG8g
QysrMjAsIHJlcGxhY2Ugd2l0aCB0aGUgQysrMjAgPD0+IG9wZXJhdG9yLgogLy8gRklYTUU6IFRo
aXMgY291bGQgcmV0dXJuIHN0ZDo6c3Ryb25nX29yZGVyaW5nIGlmIHdlIGhhZCB0aGF0LCBvciB0
aGUgZXF1aXZhbGVudC4KLXN0YXRpYyBQYXJ0aWFsT3JkZXJpbmcgb3JkZXIodW5zaWduZWQgYSwg
dW5zaWduZWQgYikKK3N0YXRpYyBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgb3JkZXIodW5zaWduZWQg
YSwgdW5zaWduZWQgYikKIHsKICAgICBpZiAoYSA8IGIpCi0gICAgICAgIHJldHVybiBQYXJ0aWFs
T3JkZXJpbmc6Omxlc3M7CisgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6Omxl
c3M7CiAgICAgaWYgKGEgPiBiKQotICAgICAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjpncmVh
dGVyOwotICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6OmVxdWl2YWxlbnQ7CisgICAgICAgIHJl
dHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXI7CisgICAgcmV0dXJuIHN0ZDo6cGFy
dGlhbF9vcmRlcmluZzo6ZXF1aXZhbGVudDsKIH0KIAotdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5
cGU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgQm91bmRhcnlQb2ludCYgYSwgY29u
c3QgQm91bmRhcnlQb2ludCYgYikKK3RlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBzdGQ6OnBh
cnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGEsIGNvbnN0IEJv
dW5kYXJ5UG9pbnQmIGIpCiB7CiAgICAgaWYgKGEuY29udGFpbmVyLnB0cigpID09IGIuY29udGFp
bmVyLnB0cigpKQogICAgICAgICByZXR1cm4gb3JkZXIoYS5vZmZzZXQsIGIub2Zmc2V0KTsKQEAg
LTgzLDIxICs4MywyMSBAQCB0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gUGFydGlhbE9yZGVy
aW5nIHRyZWVPcmRlcihjb25zdCBCb3VuZGFyeVBvaW50JiBhLCBjbwogICAgIGZvciAoYXV0byBh
bmNlc3RvciA9IGIuY29udGFpbmVyLnB0cigpOyBhbmNlc3RvcjsgKSB7CiAgICAgICAgIGF1dG8g
bmV4dEFuY2VzdG9yID0gcGFyZW50PHRyZWVUeXBlPigqYW5jZXN0b3IpOwogICAgICAgICBpZiAo
bmV4dEFuY2VzdG9yID09IGEuY29udGFpbmVyLnB0cigpKQotICAgICAgICAgICAgcmV0dXJuIGlz
T2Zmc2V0QmVmb3JlQ2hpbGQoKm5leHRBbmNlc3RvciwgYS5vZmZzZXQsICphbmNlc3RvcikgPyBQ
YXJ0aWFsT3JkZXJpbmc6Omxlc3MgOiBQYXJ0aWFsT3JkZXJpbmc6OmdyZWF0ZXI7CisgICAgICAg
ICAgICByZXR1cm4gaXNPZmZzZXRCZWZvcmVDaGlsZCgqbmV4dEFuY2VzdG9yLCBhLm9mZnNldCwg
KmFuY2VzdG9yKSA/IHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6bGVzcyA6IHN0ZDo6cGFydGlhbF9v
cmRlcmluZzo6Z3JlYXRlcjsKICAgICAgICAgYW5jZXN0b3IgPSBuZXh0QW5jZXN0b3I7CiAgICAg
fQogCiAgICAgZm9yIChhdXRvIGFuY2VzdG9yID0gYS5jb250YWluZXIucHRyKCk7IGFuY2VzdG9y
OyApIHsKICAgICAgICAgYXV0byBuZXh0QW5jZXN0b3IgPSBwYXJlbnQ8dHJlZVR5cGU+KCphbmNl
c3Rvcik7CiAgICAgICAgIGlmIChuZXh0QW5jZXN0b3IgPT0gYi5jb250YWluZXIucHRyKCkpCi0g
ICAgICAgICAgICByZXR1cm4gaXNPZmZzZXRCZWZvcmVDaGlsZCgqbmV4dEFuY2VzdG9yLCBiLm9m
ZnNldCwgKmFuY2VzdG9yKSA/IFBhcnRpYWxPcmRlcmluZzo6Z3JlYXRlciA6IFBhcnRpYWxPcmRl
cmluZzo6bGVzczsKKyAgICAgICAgICAgIHJldHVybiBpc09mZnNldEJlZm9yZUNoaWxkKCpuZXh0
QW5jZXN0b3IsIGIub2Zmc2V0LCAqYW5jZXN0b3IpID8gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjpn
cmVhdGVyIDogc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjpsZXNzOwogICAgICAgICBhbmNlc3RvciA9
IG5leHRBbmNlc3RvcjsKICAgICB9CiAKICAgICByZXR1cm4gdHJlZU9yZGVyPHRyZWVUeXBlPihh
LmNvbnRhaW5lciwgYi5jb250YWluZXIpOwogfQogCi1QYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVy
Rm9yVGVzdGluZyhUcmVlVHlwZSB0eXBlLCBjb25zdCBCb3VuZGFyeVBvaW50JiBhLCBjb25zdCBC
b3VuZGFyeVBvaW50JiBiKQorc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlckZvclRlc3Rp
bmcoVHJlZVR5cGUgdHlwZSwgY29uc3QgQm91bmRhcnlQb2ludCYgYSwgY29uc3QgQm91bmRhcnlQ
b2ludCYgYikKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFRyZWU6CkBAIC0xMDgs
NyArMTA4LDcgQEAgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUg
dHlwZSwgY29uc3QgQm91bmRhcnlQb2ludCYgYSwgY29uc3QKICAgICAgICAgcmV0dXJuIHRyZWVP
cmRlcjxDb21wb3NlZFRyZWU+KGEsIGIpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjp1bm9yZGVyZWQ7CisgICAgcmV0dXJuIHN0
ZDo6cGFydGlhbF9vcmRlcmluZzo6dW5vcmRlcmVkOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5k
YXJ5UG9pbnQuaAppbmRleCA1OTYxMTEyMzliMDM1YmQxN2QwM2I3MzNjYWQ2MDE1NTVlZmRhZjFj
Li42OWE4MWMxY2FjYzAxOGMzMDhmZjZjNjliN2QyZDViMGMxOTVlZDQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Cb3VuZGFyeVBvaW50LmgKQEAgLTM2LDE5ICszNiwxOCBAQCBzdHJ1Y3QgQm91bmRhcnlQb2lu
dCB7CiAgICAgQm91bmRhcnlQb2ludChSZWY8Tm9kZT4mJiwgdW5zaWduZWQpOwogCiAgICAgRG9j
dW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7Ci19OwogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQm91
bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKLWJvb2wgb3BlcmF0b3IhPShjb25z
dCBCb3VuZGFyeVBvaW50JiwgY29uc3QgQm91bmRhcnlQb2ludCYpOworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBCb3VuZGFyeVBvaW50JikgY29uc3QgPSBkZWZhdWx0OworfTsKIAotdGVtcGxh
dGU8VHJlZVR5cGUgPSBUcmVlPiBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IEJvdW5k
YXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7Cit0ZW1wbGF0ZTxUcmVlVHlwZSA9IFRy
ZWU+IHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgQm91bmRhcnlQb2ludCYs
IGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKIAogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxC
b3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGUoTm9kZSYpOwogV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEFm
dGVyTm9kZShOb2RlJik7CiBCb3VuZGFyeVBvaW50IG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9k
ZUNvbnRlbnRzKE5vZGUmKTsKIEJvdW5kYXJ5UG9pbnQgbWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5v
ZGVDb250ZW50cyhOb2RlJik7CiAKLVdFQkNPUkVfRVhQT1JUIFBhcnRpYWxPcmRlcmluZyB0cmVl
T3JkZXJGb3JUZXN0aW5nKFRyZWVUeXBlLCBjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgQm91
bmRhcnlQb2ludCYpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVP
cmRlckZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3Vu
ZGFyeVBvaW50Jik7CiAKIGlubGluZSBCb3VuZGFyeVBvaW50OjpCb3VuZGFyeVBvaW50KFJlZjxO
b2RlPiYmIGNvbnRhaW5lciwgdW5zaWduZWQgb2Zmc2V0KQogICAgIDogY29udGFpbmVyKFdURk1v
dmUoY29udGFpbmVyKSkKQEAgLTYxLDExICs2MCw2IEBAIGlubGluZSBEb2N1bWVudCYgQm91bmRh
cnlQb2ludDo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBjb250YWluZXItPmRvY3VtZW50
KCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQm91bmRhcnlQb2ludCYgYSwg
Y29uc3QgQm91bmRhcnlQb2ludCYgYikKLXsKLSAgICByZXR1cm4gYS5jb250YWluZXIucHRyKCkg
PT0gYi5jb250YWluZXIucHRyKCkgJiYgYS5vZmZzZXQgPT0gYi5vZmZzZXQ7Ci19Ci0KIGlubGlu
ZSBCb3VuZGFyeVBvaW50IG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKE5vZGUm
IG5vZGUpCiB7CiAgICAgcmV0dXJuIHsgbm9kZSwgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmgKaW5kZXggYzY2MWJjZTVjOGZjMmZh
ZGU2YzE4NjQyNTVmM2RkYWM4MDQ3MGYwNy4uNmE0MmFjZTk1MDA1OWU3ZGRmNGI5ZTlmOWM3OWI1
NzE1NDc0NWViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkVHJlZUFu
Y2VzdG9ySXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRUcmVlQW5j
ZXN0b3JJdGVyYXRvci5oCkBAIC00MSw4ICs0MSw3IEBAIHB1YmxpYzoKICAgICBFbGVtZW50JiBv
cGVyYXRvciooKSB7IHJldHVybiBnZXQoKTsgfQogICAgIEVsZW1lbnQqIG9wZXJhdG9yLT4oKSB7
IHJldHVybiAmZ2V0KCk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb21wb3NlZFRy
ZWVBbmNlc3Rvckl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50ID09IG90
aGVyLm1fY3VycmVudDsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb21wb3NlZFRyZWVB
bmNlc3Rvckl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50ICE9IG90aGVy
Lm1fY3VycmVudDsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb21wb3NlZFRyZWVBbmNl
c3Rvckl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgQ29tcG9zZWRUcmVlQW5jZXN0
b3JJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlUGFyZW50KCk7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkVHJlZUl0ZXJhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRUcmVlSXRlcmF0b3IuaAppbmRleCBjYzRmMjAyNTZm
NWVjZmU3NmYxYmE2MTU1OGQ2NmYyZjJhMzUwMzUzLi5lYTQ5ZTkxMDM0ZDM2ZDY1NjExMDE4ODY5
MDIyYzUyNzUwNWQ2MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRU
cmVlSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRUcmVlSXRlcmF0
b3IuaApAQCAtNDQsNyArNDQsNiBAQCBwdWJsaWM6CiAgICAgTm9kZSogb3BlcmF0b3ItPigpIHsg
cmV0dXJuICZjdXJyZW50KCk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb21wb3Nl
ZFRyZWVJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGNvbnRleHQoKS5pdGVyYXRvciA9
PSBvdGhlci5jb250ZXh0KCkuaXRlcmF0b3I7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Q29tcG9zZWRUcmVlSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBjb250ZXh0KCkuaXRl
cmF0b3IgIT0gb3RoZXIuY29udGV4dCgpLml0ZXJhdG9yOyB9CiAKICAgICBDb21wb3NlZFRyZWVJ
dGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dCgpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGY1NjgxOGI0M2I4Mjg4NzYyODQ3MzdiZjMxNGYzNWEwMTJl
OTIwMjYuLjI3NmRkYjFmYTNiNWQzZjUzM2M2Y2ZiYzNiZTQ1NWJiYmIxM2ZjYzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTMwNCw3ICsxMzA0LDcgQEAgc3RhdGljIGlubGluZSBib29s
IG9wZXJhdG9yPChVQ2hhcjMyIGEsIGNvbnN0IFVuaWNvZGVDb2RlUG9pbnRSYW5nZSYgYikKIAog
c3RhdGljIGlubGluZSBib29sIGlzUG90ZW50aWFsQ3VzdG9tRWxlbWVudE5hbWVDaGFyYWN0ZXIo
VUNoYXIzMiBjaGFyYWN0ZXIpCiB7Ci0gICAgc3RhdGljIGNvbnN0IFVuaWNvZGVDb2RlUG9pbnRS
YW5nZSByYW5nZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIFVuaWNvZGVDb2RlUG9pbnRS
YW5nZSByYW5nZXNbXSA9IHsKICAgICAgICAgeyAnLScsICcuJyB9LAogICAgICAgICB7ICcwJywg
JzknIH0sCiAgICAgICAgIHsgJ18nLCAnXycgfSwKQEAgLTEzMjMsNyArMTMyMyw2IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBpc1BvdGVudGlhbEN1c3RvbUVsZW1lbnROYW1lQ2hhcmFjdGVyKFVDaGFy
MzIgY2hhcmFjdGVyKQogICAgICAgICB7IDB4RkRGMCwgMHhGRkZEIH0sCiAgICAgICAgIHsgMHgx
MDAwMCwgMHhFRkZGRiB9LAogICAgIH07Ci0KICAgICBBU1NFUlQoc3RkOjppc19zb3J0ZWQoc3Rk
OjpiZWdpbihyYW5nZXMpLCBzdGQ6OmVuZChyYW5nZXMpKSk7CiAgICAgcmV0dXJuIHN0ZDo6Ymlu
YXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHJhbmdlcyksIHN0ZDo6ZW5kKHJhbmdlcyksIGNoYXJhY3Rl
cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRJdGVyYXRvci5oCmluZGV4IGQxZGRiMGY3Mzc1MDE1NjQ1OTdiMGEwMjM0ZTJiNDYyMDFk
NWRlNzUuLmUwNDk3MDE0OWJjYTg4NzgzMTI1NTI0NDM1ZTA3MDNiMzI5ODYzMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
ci5oCkBAIC00Nyw3ICs0Nyw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBOb2RlKiBvcGVyYXRvci0+
KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRWxlbWVudEFuZFRleHREZXNj
ZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKIAogICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fZGVwdGg7IH0KICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9kZXB0aDsgfQpAQCAtMjg5LDExICsyODgs
NiBAQCBpbmxpbmUgYm9vbCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0
b3I9PShjb25zdCBFbGVtZW50QW5kVGV4dERlcwogICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3Ro
ZXIubV9jdXJyZW50IHx8ICghbV9kZXB0aCAmJiAhb3RoZXIubV9kZXB0aCk7CiB9CiAKLWlubGlu
ZSBib29sIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0KIC8vIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFu
dFJhbmdlCiAKIGlubGluZSBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZTo6RWxlbWVudEFu
ZFRleHREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZSYgcm9vdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRDb250ZXh0LmgKaW5kZXggOWQwOWIwODliM2FjNDk0M2EwZDlhMjJjM2Q2NmU3
ZjU1MDU0ZGMxZi4uOGYyZDE4ZDNiYmVjZWI0NzcwZjE4MWVlODUwMmE3MWZlMGJjMzgzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRDb250ZXh0LmgKQEAgLTQzLDYgKzQzLDggQEAgc3RydWN0IEVs
ZW1lbnRDb250ZXh0IHsKIAogICAgIH5FbGVtZW50Q29udGV4dCgpID0gZGVmYXVsdDsKIAorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50Q29udGV4dCYpIGNvbnN0ID0gZGVmYXVsdDsK
KwogICAgIGJvb2wgaXNTYW1lRWxlbWVudChjb25zdCBFbGVtZW50Q29udGV4dCYgb3RoZXIpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gd2ViUGFnZUlkZW50aWZpZXIgPT0gb3RoZXIud2Vi
UGFnZUlkZW50aWZpZXIgJiYgZG9jdW1lbnRJZGVudGlmaWVyID09IG90aGVyLmRvY3VtZW50SWRl
bnRpZmllciAmJiBlbGVtZW50SWRlbnRpZmllciA9PSBvdGhlci5lbGVtZW50SWRlbnRpZmllcjsK
QEAgLTUyLDExICs1NCw2IEBAIHN0cnVjdCBFbGVtZW50Q29udGV4dCB7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RWxlbWVudENvbnRleHQ+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVsZW1lbnRD
b250ZXh0JiBhLCBjb25zdCBFbGVtZW50Q29udGV4dCYgYikKLXsKLSAgICByZXR1cm4gYS5ib3Vu
ZGluZ1JlY3QgPT0gYi5ib3VuZGluZ1JlY3QgJiYgYS5pc1NhbWVFbGVtZW50KGIpOwotfQotCiB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBFbGVtZW50Q29udGV4dDo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCmluZGV4IDUxMTZl
MzIwODk3ZjhkYjUyOGJiMTE0Yjc5NjgyZTlkZTZjZGNmOGUuLjFiODE1NmUwNDk5YTk3NDNiYTgw
MmJlMTYwNzNmNWIwMGUyM2U3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCkBAIC01MCw3
ICs1MCw2IEBAIHB1YmxpYzoKICAgICBBdHRyaWJ1dGVDb25zdEl0ZXJhdG9yJiBvcGVyYXRvcisr
KCkgeyArK21fb2Zmc2V0OyByZXR1cm4gKnRoaXM7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBBdHRyaWJ1dGVDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9vZmZz
ZXQgPT0gb3RoZXIubV9vZmZzZXQ7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXR0cmli
dXRlQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OyB9CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQXR0cmlidXRlKiBtX2FycmF5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oCmluZGV4IDA0NmZjYTE0YjI3MWI1ZDdm
MDYwZTc1NjUyNDY0NGMyYWNkOTQzNGMuLmM1ZGQ4NjJkYzcyMDljODNiZmNiODAyNTIyMjlhZGUy
OTRlZjZkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydElkZW50
aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgK
QEAgLTM4LDYgKzM4LDggQEAgc3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciB7CiAKICAgICB1
bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJikgY29uc3QgPSBkZWZhdWx0OworCiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VQb3J0SWRlbnRpZmllcj4gZGVj
b2RlKERlY29kZXImKTsKIApAQCAtNDYsMTEgKzQ4LDYgQEAgc3RydWN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciB7CiAjZW5kaWYKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVz
c2FnZVBvcnRJZGVudGlmaWVyJiBhLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGIpCi17
Ci0gICAgcmV0dXJuIGEucHJvY2Vzc0lkZW50aWZpZXIgPT0gYi5wcm9jZXNzSWRlbnRpZmllciAm
JiAgYS5wb3J0SWRlbnRpZmllciA9PSBiLnBvcnRJZGVudGlmaWVyOwotfQotCiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBNZXNzYWdlUG9ydElkZW50aWZpZXI6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDUxZTBhY2EzNDQ0OWZjM2Mz
ZDY1OWIyNjRjZjg4NWFiMzNmN2Y4Y2QuLjlhNjJiODQ2ZDQ1ZjFkNmQxNWE3MmQ5MDljMDZlY2I5
MWUwN2JjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI3MjgsMzUgKzI3MjgsMzUgQEAgc3RhdGlj
IGJvb2wgaXNTaWJsaW5nU3Vic2VxdWVudChjb25zdCBOb2RlJiBzaWJsaW5nQSwgY29uc3QgTm9k
ZSYgc2libGluZ0IpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi10ZW1wbGF0ZTxUcmVlVHlwZSB0
cmVlVHlwZT4gUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBOb2RlJiBhLCBjb25zdCBO
b2RlJiBiKQordGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IHN0ZDo6cGFydGlhbF9vcmRlcmlu
ZyB0cmVlT3JkZXIoY29uc3QgTm9kZSYgYSwgY29uc3QgTm9kZSYgYikKIHsKICAgICBpZiAoJmEg
PT0gJmIpCi0gICAgICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6OmVxdWl2YWxlbnQ7CisgICAg
ICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxlbnQ7CiAgICAgYXV0byBy
ZXN1bHQgPSBjb21tb25JbmNsdXNpdmVBbmNlc3RvckFuZENoaWxkcmVuPHRyZWVUeXBlPihhLCBi
KTsKICAgICBpZiAoIXJlc3VsdC5jb21tb25BbmNlc3RvcikKLSAgICAgICAgcmV0dXJuIFBhcnRp
YWxPcmRlcmluZzo6dW5vcmRlcmVkOworICAgICAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVy
aW5nOjp1bm9yZGVyZWQ7CiAgICAgaWYgKCFyZXN1bHQuZGlzdGluY3RBbmNlc3RvckEpCi0gICAg
ICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6Omxlc3M7CisgICAgICAgIHJldHVybiBzdGQ6OnBh
cnRpYWxfb3JkZXJpbmc6Omxlc3M7CiAgICAgaWYgKCFyZXN1bHQuZGlzdGluY3RBbmNlc3RvckIp
Ci0gICAgICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6OmdyZWF0ZXI7CisgICAgICAgIHJldHVy
biBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXI7CiAgICAgYm9vbCBpc1NoYWRvd1Jvb3RB
ID0gcmVzdWx0LmRpc3RpbmN0QW5jZXN0b3JBLT5pc1NoYWRvd1Jvb3QoKTsKICAgICBib29sIGlz
U2hhZG93Um9vdEIgPSByZXN1bHQuZGlzdGluY3RBbmNlc3RvckItPmlzU2hhZG93Um9vdCgpOwog
ICAgIGlmIChpc1NoYWRvd1Jvb3RBIHx8IGlzU2hhZG93Um9vdEIpIHsKICAgICAgICAgaWYgKCFp
c1NoYWRvd1Jvb3RCKQotICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxPcmRlcmluZzo6bGVzczsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6Omxlc3M7CiAgICAgICAg
IGlmICghaXNTaGFkb3dSb290QSkKLSAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6
OmdyZWF0ZXI7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjpncmVh
dGVyOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFBhcnRp
YWxPcmRlcmluZzo6dW5vcmRlcmVkOworICAgICAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVy
aW5nOjp1bm9yZGVyZWQ7CiAgICAgfQotICAgIHJldHVybiBpc1NpYmxpbmdTdWJzZXF1ZW50KCpy
ZXN1bHQuZGlzdGluY3RBbmNlc3RvckEsICpyZXN1bHQuZGlzdGluY3RBbmNlc3RvckIpID8gUGFy
dGlhbE9yZGVyaW5nOjpsZXNzIDogUGFydGlhbE9yZGVyaW5nOjpncmVhdGVyOworICAgIHJldHVy
biBpc1NpYmxpbmdTdWJzZXF1ZW50KCpyZXN1bHQuZGlzdGluY3RBbmNlc3RvckEsICpyZXN1bHQu
ZGlzdGluY3RBbmNlc3RvckIpID8gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjpsZXNzIDogc3RkOjpw
YXJ0aWFsX29yZGVyaW5nOjpncmVhdGVyOwogfQogCi10ZW1wbGF0ZSBQYXJ0aWFsT3JkZXJpbmcg
dHJlZU9yZGVyPFRyZWU+KGNvbnN0IE5vZGUmLCBjb25zdCBOb2RlJik7Ci10ZW1wbGF0ZSBQYXJ0
aWFsT3JkZXJpbmcgdHJlZU9yZGVyPFNoYWRvd0luY2x1ZGluZ1RyZWU+KGNvbnN0IE5vZGUmLCBj
b25zdCBOb2RlJik7Ci10ZW1wbGF0ZSBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyPENvbXBvc2Vk
VHJlZT4oY29uc3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKK3RlbXBsYXRlIHN0ZDo6cGFydGlhbF9v
cmRlcmluZyB0cmVlT3JkZXI8VHJlZT4oY29uc3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKK3RlbXBs
YXRlIHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3JkZXI8U2hhZG93SW5jbHVkaW5nVHJlZT4o
Y29uc3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKK3RlbXBsYXRlIHN0ZDo6cGFydGlhbF9vcmRlcmlu
ZyB0cmVlT3JkZXI8Q29tcG9zZWRUcmVlPihjb25zdCBOb2RlJiwgY29uc3QgTm9kZSYpOwogCi1Q
YXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyRm9yVGVzdGluZyhUcmVlVHlwZSB0eXBlLCBjb25zdCBO
b2RlJiBhLCBjb25zdCBOb2RlJiBiKQorc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlckZv
clRlc3RpbmcoVHJlZVR5cGUgdHlwZSwgY29uc3QgTm9kZSYgYSwgY29uc3QgTm9kZSYgYikKIHsK
ICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFRyZWU6CkBAIC0yNzY3LDcgKzI3NjcsNyBA
QCBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyRm9yVGVzdGluZyhUcmVlVHlwZSB0eXBlLCBjb25z
dCBOb2RlJiBhLCBjb25zdCBOb2RlJiBiKQogICAgICAgICByZXR1cm4gdHJlZU9yZGVyPENvbXBv
c2VkVHJlZT4oYSwgYik7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBQYXJ0aWFsT3JkZXJpbmc6OnVub3JkZXJlZDsKKyAgICByZXR1cm4gc3RkOjpwYXJ0aWFs
X29yZGVyaW5nOjp1bm9yZGVyZWQ7CiB9CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IE5vZGUmIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBiNDU4ZGE5YTMzMzVh
YjFhNmNmMTMxYTk4OTM2ZmQ4NTMwMjMxYzJmLi5hODFjNDhlNjRlZGFjMjhmNjdjYTlkNjEzNzA2
Y2NiZjIyMDI1Y2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTczOCwzOCArNzM4LDEyIEBAIHByaXZhdGU6
CiAKIGJvb2wgY29ubmVjdGVkSW5TYW1lVHJlZVNjb3BlKGNvbnN0IE5vZGUqLCBjb25zdCBOb2Rl
Kik7CiAKLS8vIERlc2lnbmVkIHRvIGJlIHVzZWQgdGhlIHNhbWUgd2F5IGFzIEMrKzIwIHN0ZDo6
cGFydGlhbF9vcmRlcmluZyBjbGFzcy4KLS8vIEZJWE1FOiBDb25zaWRlciBwdXR0aW5nIHRoaXMg
aW4gYSBzZXBhcmF0ZSBoZWFkZXIuCi0vLyBGSVhNRTogT25jZSB3ZSBjYW4gcmVxdWlyZSBDKysy
MCwgcmVwbGFjZSB3aXRoIHN0ZDo6cGFydGlhbF9vcmRlcmluZy4KLWNsYXNzIFBhcnRpYWxPcmRl
cmluZyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IFBhcnRpYWxPcmRlcmluZyBsZXNzOwot
ICAgIHN0YXRpYyBjb25zdCBQYXJ0aWFsT3JkZXJpbmcgZXF1aXZhbGVudDsKLSAgICBzdGF0aWMg
Y29uc3QgUGFydGlhbE9yZGVyaW5nIGdyZWF0ZXI7Ci0gICAgc3RhdGljIGNvbnN0IFBhcnRpYWxP
cmRlcmluZyB1bm9yZGVyZWQ7Ci0KLSAgICBmcmllbmQgY29uc3RleHByIGJvb2wgaXNfZXEoUGFy
dGlhbE9yZGVyaW5nKTsKLSAgICBmcmllbmQgY29uc3RleHByIGJvb2wgaXNfbHQoUGFydGlhbE9y
ZGVyaW5nKTsKLSAgICBmcmllbmQgY29uc3RleHByIGJvb2wgaXNfZ3QoUGFydGlhbE9yZGVyaW5n
KTsKLQotcHJpdmF0ZToKLSAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgTGVzcywgRXF1
aXZhbGVudCwgR3JlYXRlciwgVW5vcmRlcmVkIH07Ci0gICAgY29uc3RleHByIFBhcnRpYWxPcmRl
cmluZyhUeXBlIHR5cGUpIDogbV90eXBlIHsgdHlwZSB9IHsgfQotICAgIFR5cGUgbV90eXBlOwot
fTsKLWNvbnN0ZXhwciBib29sIGlzX2VxKFBhcnRpYWxPcmRlcmluZyk7Ci1jb25zdGV4cHIgYm9v
bCBpc19sdChQYXJ0aWFsT3JkZXJpbmcpOwotY29uc3RleHByIGJvb2wgaXNfZ3QoUGFydGlhbE9y
ZGVyaW5nKTsKLWNvbnN0ZXhwciBib29sIGlzX25lcShQYXJ0aWFsT3JkZXJpbmcpOwotY29uc3Rl
eHByIGJvb2wgaXNfbHRlcShQYXJ0aWFsT3JkZXJpbmcpOwotY29uc3RleHByIGJvb2wgaXNfZ3Rl
cShQYXJ0aWFsT3JkZXJpbmcpOwotCiBlbnVtIFRyZWVUeXBlIHsgVHJlZSwgU2hhZG93SW5jbHVk
aW5nVHJlZSwgQ29tcG9zZWRUcmVlIH07CiB0ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IENvbnRh
aW5lck5vZGUqIHBhcmVudChjb25zdCBOb2RlJik7CiB0ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+
IE5vZGUqIGNvbW1vbkluY2x1c2l2ZUFuY2VzdG9yKGNvbnN0IE5vZGUmLCBjb25zdCBOb2RlJik7
Ci10ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29u
c3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKK3RlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gc3RkOjpw
YXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBOb2RlJiwgY29uc3QgTm9kZSYpOwogCi1X
RUJDT1JFX0VYUE9SVCBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyRm9yVGVzdGluZyhUcmVlVHlw
ZSwgY29uc3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6cGFydGlh
bF9vcmRlcmluZyB0cmVlT3JkZXJGb3JUZXN0aW5nKFRyZWVUeXBlLCBjb25zdCBOb2RlJiwgY29u
c3QgTm9kZSYpOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKIApAQCAtODk4LDQxICs4NzIsNiBAQCBp
bmxpbmUgdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGVSZWN1cnNpdmVseShUcmVlU2NvcGUmIG5ld1Ry
ZWVTY29wZSkKICAgICAgICAgbW92ZVRyZWVUb05ld1Njb3BlKCp0aGlzLCAqbV90cmVlU2NvcGUs
IG5ld1RyZWVTY29wZSk7CiB9CiAKLWlubGluZSBjb25zdGV4cHIgUGFydGlhbE9yZGVyaW5nIFBh
cnRpYWxPcmRlcmluZzo6bGVzcyhUeXBlOjpMZXNzKTsKLWlubGluZSBjb25zdGV4cHIgUGFydGlh
bE9yZGVyaW5nIFBhcnRpYWxPcmRlcmluZzo6ZXF1aXZhbGVudChUeXBlOjpFcXVpdmFsZW50KTsK
LWlubGluZSBjb25zdGV4cHIgUGFydGlhbE9yZGVyaW5nIFBhcnRpYWxPcmRlcmluZzo6Z3JlYXRl
cihUeXBlOjpHcmVhdGVyKTsKLWlubGluZSBjb25zdGV4cHIgUGFydGlhbE9yZGVyaW5nIFBhcnRp
YWxPcmRlcmluZzo6dW5vcmRlcmVkKFR5cGU6OlVub3JkZXJlZCk7Ci0KLWNvbnN0ZXhwciBib29s
IGlzX2VxKFBhcnRpYWxPcmRlcmluZyBvcmRlcmluZykKLXsKLSAgICByZXR1cm4gb3JkZXJpbmcu
bV90eXBlID09IFBhcnRpYWxPcmRlcmluZzo6VHlwZTo6RXF1aXZhbGVudDsKLX0KLQotY29uc3Rl
eHByIGJvb2wgaXNfbHQoUGFydGlhbE9yZGVyaW5nIG9yZGVyaW5nKQotewotICAgIHJldHVybiBv
cmRlcmluZy5tX3R5cGUgPT0gUGFydGlhbE9yZGVyaW5nOjpUeXBlOjpMZXNzOwotfQotCi1jb25z
dGV4cHIgYm9vbCBpc19ndChQYXJ0aWFsT3JkZXJpbmcgb3JkZXJpbmcpCi17Ci0gICAgcmV0dXJu
IG9yZGVyaW5nLm1fdHlwZSA9PSBQYXJ0aWFsT3JkZXJpbmc6OlR5cGU6OkdyZWF0ZXI7Ci19Ci0K
LWNvbnN0ZXhwciBib29sIGlzX25lcShQYXJ0aWFsT3JkZXJpbmcgb3JkZXJpbmcpCi17Ci0gICAg
cmV0dXJuIGlzX2x0KG9yZGVyaW5nKSB8fCBpc19ndChvcmRlcmluZyk7Ci19Ci0KLWNvbnN0ZXhw
ciBib29sIGlzX2x0ZXEoUGFydGlhbE9yZGVyaW5nIG9yZGVyaW5nKQotewotICAgIHJldHVybiBp
c19sdChvcmRlcmluZykgfHwgaXNfZXEob3JkZXJpbmcpOwotfQotCi1jb25zdGV4cHIgYm9vbCBp
c19ndGVxKFBhcnRpYWxPcmRlcmluZyBvcmRlcmluZykKLXsKLSAgICByZXR1cm4gaXNfZ3Qob3Jk
ZXJpbmcpIHx8IGlzX2VxKG9yZGVyaW5nKTsKLX0KLQogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE5vZGUmKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKaW5kZXggOWE1MTJlZmU3
YzljMDFlZjgyMDEyY2I0M2Y5YjYxMTU1ODk2N2EyYS4uYzFmYWZiZDNjNGMyN2VlZTZjMjgxMWJh
MWZmZTU1MjVhMjkzYTZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC0xNjE2LDIyICsx
NjE2LDIyIEBAIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnQo
Y29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIHJldHVybiBCb3VuZGFyeVBvaW50IHsgY29u
dGFpbmVyLnJlbGVhc2VOb25OdWxsKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwb3NpdGlvbi5j
b21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpIH07CiB9CiAKLXRlbXBsYXRlPFRyZWVUeXBl
IHRyZWVUeXBlPiBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IFBvc2l0aW9uJiBhLCBj
b25zdCBQb3NpdGlvbiYgYikKK3RlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBzdGQ6OnBhcnRp
YWxfb3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYg
YikKIHsKICAgICBpZiAoYS5pc051bGwoKSB8fCBiLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4g
YS5pc051bGwoKSAmJiBiLmlzTnVsbCgpID8gUGFydGlhbE9yZGVyaW5nOjplcXVpdmFsZW50IDog
UGFydGlhbE9yZGVyaW5nOjp1bm9yZGVyZWQ7CisgICAgICAgIHJldHVybiBhLmlzTnVsbCgpICYm
IGIuaXNOdWxsKCkgPyBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxlbnQgOiBzdGQ6OnBh
cnRpYWxfb3JkZXJpbmc6OnVub3JkZXJlZDsKIAogICAgIGF1dG8gYUNvbnRhaW5lciA9IGEuY29u
dGFpbmVyTm9kZSgpOwogICAgIGF1dG8gYkNvbnRhaW5lciA9IGIuY29udGFpbmVyTm9kZSgpOwog
CiAgICAgaWYgKCFhQ29udGFpbmVyIHx8ICFiQ29udGFpbmVyKSB7CiAgICAgICAgIGlmICghY29t
bW9uSW5jbHVzaXZlQW5jZXN0b3I8dHJlZVR5cGU+KCphLmFuY2hvck5vZGUoKSwgKmIuYW5jaG9y
Tm9kZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6OnVub3JkZXJlZDsK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OnVub3JkZXJlZDsKICAg
ICAgICAgaWYgKCFhQ29udGFpbmVyICYmICFiQ29udGFpbmVyICYmIGEuYW5jaG9yVHlwZSgpID09
IGIuYW5jaG9yVHlwZSgpKQotICAgICAgICAgICAgcmV0dXJuIFBhcnRpYWxPcmRlcmluZzo6ZXF1
aXZhbGVudDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2
YWxlbnQ7CiAgICAgICAgIGlmIChiQ29udGFpbmVyKQotICAgICAgICAgICAgcmV0dXJuIGEuYW5j
aG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yID8gUGFydGlhbE9y
ZGVyaW5nOjpsZXNzIDogUGFydGlhbE9yZGVyaW5nOjpncmVhdGVyOwotICAgICAgICByZXR1cm4g
Yi5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IgPyBQYXJ0
aWFsT3JkZXJpbmc6OmdyZWF0ZXIgOiBQYXJ0aWFsT3JkZXJpbmc6Omxlc3M7CisgICAgICAgICAg
ICByZXR1cm4gYS5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNo
b3IgPyBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6Omxlc3MgOiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6
OmdyZWF0ZXI7CisgICAgICAgIHJldHVybiBiLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9z
aXRpb25Jc0JlZm9yZUFuY2hvciA/IHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6Z3JlYXRlciA6IHN0
ZDo6cGFydGlhbF9vcmRlcmluZzo6bGVzczsKICAgICB9CiAKICAgICAvLyBGSVhNRTogQXZvaWQg
Y29tcHV0aW5nIG5vZGUgb2Zmc2V0IGZvciBjYXNlcyB3aGVyZSB3ZSBkb24ndCBuZWVkIHRvLgpA
QCAtMTYzOSwxMyArMTYzOSwxMyBAQCB0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gUGFydGlh
bE9yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUAogICAgIHJldHVy
biB0cmVlT3JkZXI8dHJlZVR5cGU+KCptYWtlQm91bmRhcnlQb2ludChhKSwgKm1ha2VCb3VuZGFy
eVBvaW50KGIpKTsKIH0KIAotUGFydGlhbE9yZGVyaW5nIGRvY3VtZW50T3JkZXIoY29uc3QgUG9z
aXRpb24mIGEsIGNvbnN0IFBvc2l0aW9uJiBiKQorc3RkOjpwYXJ0aWFsX29yZGVyaW5nIGRvY3Vt
ZW50T3JkZXIoY29uc3QgUG9zaXRpb24mIGEsIGNvbnN0IFBvc2l0aW9uJiBiKQogewogICAgIHJl
dHVybiB0cmVlT3JkZXI8Q29tcG9zZWRUcmVlPihhLCBiKTsKIH0KIAotdGVtcGxhdGUgUGFydGlh
bE9yZGVyaW5nIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KGNvbnN0IFBvc2l0aW9uJiwgY29uc3Qg
UG9zaXRpb24mKTsKLXRlbXBsYXRlIFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXI8U2hhZG93SW5j
bHVkaW5nVHJlZT4oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwordGVtcGxhdGUg
c3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KGNvbnN0IFBvc2l0
aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKK3RlbXBsYXRlIHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0
cmVlT3JkZXI8U2hhZG93SW5jbHVkaW5nVHJlZT4oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3Np
dGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5k
ZXggOWM5OTRjMDk3OGM2YTQ4N2Q3ZTIyYmEwYmQ2ZTBhNDg4YzU0YmMxZS4uNjc4NTFiYTdhMGFi
OWNjZGYyMzNiM2QzZDc3MWY2NGYyMzA4YTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTIx
OCwxNCArMjE4LDEwIEBAIHByaXZhdGU6CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9z
aXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBvc2l0aW9u
JiwgY29uc3QgUG9zaXRpb24mKTsKIAotdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IFBhcnRp
YWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwot
V0VCQ09SRV9FWFBPUlQgUGFydGlhbE9yZGVyaW5nIGRvY3VtZW50T3JkZXIoY29uc3QgUG9zaXRp
b24mLCBjb25zdCBQb3NpdGlvbiYpOwotYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9zaXRpb24mLCBj
b25zdCBQb3NpdGlvbiYpOwotYm9vbCBvcGVyYXRvcj4oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQ
b3NpdGlvbiYpOwotYm9vbCBvcGVyYXRvcj49KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRp
b24mKTsKLWJvb2wgb3BlcmF0b3I8PShjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7
Cit0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVP
cmRlcihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CitXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhcnRpYWxfb3JkZXJpbmcgZG9jdW1lbnRPcmRlcihjb25zdCBQb3NpdGlvbiYsIGNvbnN0
IFBvc2l0aW9uJik7CitzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgb3BlcmF0b3I8PT4oY29uc3QgUG9z
aXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwogCiBQb3NpdGlvbiBtYWtlQ29udGFpbmVyT2Zmc2V0
UG9zaXRpb24oTm9kZSosIHVuc2lnbmVkIG9mZnNldCk7CiBXRUJDT1JFX0VYUE9SVCBQb3NpdGlv
biBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oY29uc3QgQm91bmRhcnlQb2ludCYpOwpAQCAt
Mjc5LDI5ICsyNzUsOSBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvc2l0aW9uJiBh
LCBjb25zdCBQb3NpdGlvbiYgYikKICAgICByZXR1cm4gYS5hbmNob3JOb2RlKCkgPT0gYi5hbmNo
b3JOb2RlKCkgJiYgYS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID09IGIuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSAmJiBhLmFuY2hvclR5cGUoKSA9PSBiLmFuY2hvclR5cGUoKTsKIH0KIAot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRpb24m
IGIpCitpbmxpbmUgc3RkOjpwYXJ0aWFsX29yZGVyaW5nIG9wZXJhdG9yPD0+KGNvbnN0IFBvc2l0
aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKIHsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQot
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9zaXRpb24mIGEsIGNvbnN0IFBvc2l0aW9u
JiBiKQotewotICAgIHJldHVybiBpc19sdChkb2N1bWVudE9yZGVyKGEsIGIpKTsKLX0KLQotaW5s
aW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikg
Ci17Ci0gICAgcmV0dXJuIGlzX2d0KGRvY3VtZW50T3JkZXIoYSwgYikpOwotfQotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvcj49KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikgCi17
Ci0gICAgcmV0dXJuIGlzX2d0ZXEoZG9jdW1lbnRPcmRlcihhLCBiKSk7Ci19Ci0KLWlubGluZSBi
b29sIG9wZXJhdG9yPD0oY29uc3QgUG9zaXRpb24mIGEsIGNvbnN0IFBvc2l0aW9uJiBiKSAKLXsK
LSAgICByZXR1cm4gaXNfbHRlcShkb2N1bWVudE9yZGVyKGEsIGIpKTsKKyAgICByZXR1cm4gZG9j
dW1lbnRPcmRlcihhLCBiKTsKIH0KIAogLy8gcG9zaXRpb25CZWZvcmVOb2RlIGFuZCBwb3NpdGlv
bkFmdGVyTm9kZSByZXR1cm4gbmVpZ2hib3ItYW5jaG9yZWQgcG9zaXRpb25zLCBjb25zdHJ1Y3Rp
b24gaXMgTygxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKaW5kZXggNDI5ZmM1NTk2NDM1
MWYxMjQ5YmMxYzhmMjg5ZTM3N2E0ZGQzZTMzNi4uYzc3Y2YyYzRlMWU1N2VjZTRiYTY0MjE1ZTE1
N2E1OGVhMzBlN2ZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5h
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCkBAIC03OCw4ICs3
OCw3IEBAIHB1YmxpYzoKICAgICBRdWFsaWZpZWROYW1lKCkgeyB9CiAjZW5kaWYKIAotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBRdWFsaWZpZWROYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9pbXBsID09IG90aGVyLm1faW1wbDsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRdWFs
aWZpZWROYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0ID0gZGVmYXVsdDsK
IAogICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBRdWFsaWZpZWROYW1lJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9pbXBsID09IG90aGVyLm1faW1wbCB8fCAobG9jYWxOYW1lKCkgPT0gb3RoZXIubG9j
YWxOYW1lKCkgJiYgbmFtZXNwYWNlVVJJKCkgPT0gb3RoZXIubmFtZXNwYWNlVVJJKCkpOyB9CiAK
QEAgLTExNSw5ICsxMTQsNiBAQCBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgYW55UU5hbWUo
KSB7IHJldHVybiBhbnlOYW1lOyB9CiBjb25zdCBRdWFsaWZpZWROYW1lJiBudWxsUU5hbWUoKTsK
IAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBxKSB7IHJldHVybiBhID09IHEubG9jYWxOYW1lKCk7IH0KLWlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcSkg
eyByZXR1cm4gYSAhPSBxLmxvY2FsTmFtZSgpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHEsIGNvbnN0IEF0b21TdHJpbmcmIGEpIHsgcmV0dXJuIGEgPT0g
cS5sb2NhbE5hbWUoKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRdWFsaWZpZWRO
YW1lJiBxLCBjb25zdCBBdG9tU3RyaW5nJiBhKSB7IHJldHVybiBhICE9IHEubG9jYWxOYW1lKCk7
IH0KIAogaW5saW5lIHVuc2lnbmVkIGhhc2hDb21wb25lbnRzKGNvbnN0IFF1YWxpZmllZE5hbWVD
b21wb25lbnRzJiBidWYpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxl
UmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAppbmRleCBhYjI1
ODk5M2MwZWYxMzBiZmRkZTk3YTcxMzFmMzZlNzUwMmRiYjg3Li43ZWM0ZmJiNjM1ZTUwOTgzMGRh
N2IzNTkxNzM3YzBkMGQ3YzFmMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2lt
cGxlUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAg
LTQ2LDExICs0Niw2IEBAIFNpbXBsZVJhbmdlOjpTaW1wbGVSYW5nZShCb3VuZGFyeVBvaW50JiYg
c3RhcnQsIEJvdW5kYXJ5UG9pbnQmJiBlbmQpCiB7CiB9CiAKLWJvb2wgb3BlcmF0b3I9PShjb25z
dCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCi17Ci0gICAgcmV0dXJuIGEu
c3RhcnQgPT0gYi5zdGFydCAmJiBhLmVuZCA9PSBiLmVuZDsKLX0KLQogc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShOb2RlJiBub2RlKQogewogICAgIGF1
dG8gcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlKCk7CkBAIC0xNzEsMjYgKzE2NiwyNiBAQCBib29s
IGNvbnRhaW5zRm9yVGVzdGluZyhUcmVlVHlwZSB0eXBlLCBjb25zdCBTaW1wbGVSYW5nZSYgcmFu
Z2UsIGNvbnN0IEJvdW5kYXJ5UAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8VHJl
ZVR5cGUgdHJlZVR5cGU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgU2ltcGxlUmFu
Z2UmIHJhbmdlLCBjb25zdCBCb3VuZGFyeVBvaW50JiBwb2ludCkKK3RlbXBsYXRlPFRyZWVUeXBl
IHRyZWVUeXBlPiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IFNpbXBsZVJh
bmdlJiByYW5nZSwgY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQpCiB7CiAgICAgaWYgKGF1dG8g
b3JkZXIgPSB0cmVlT3JkZXI8dHJlZVR5cGU+KHJhbmdlLnN0YXJ0LCBwb2ludCk7ICFpc19sdChv
cmRlcikpCiAgICAgICAgIHJldHVybiBvcmRlcjsKICAgICBpZiAoYXV0byBvcmRlciA9IHRyZWVP
cmRlcjx0cmVlVHlwZT4ocmFuZ2UuZW5kLCBwb2ludCk7ICFpc19ndChvcmRlcikpCiAgICAgICAg
IHJldHVybiBvcmRlcjsKLSAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjplcXVpdmFsZW50Owor
ICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxlbnQ7CiB9CiAKLXRlbXBs
YXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IEJv
dW5kYXJ5UG9pbnQmIHBvaW50LCBjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UpCit0ZW1wbGF0ZTxU
cmVlVHlwZSB0cmVlVHlwZT4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBC
b3VuZGFyeVBvaW50JiBwb2ludCwgY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewogICAgIGlm
IChhdXRvIG9yZGVyID0gdHJlZU9yZGVyPHRyZWVUeXBlPihwb2ludCwgcmFuZ2Uuc3RhcnQpOyAh
aXNfZ3Qob3JkZXIpKQogICAgICAgICByZXR1cm4gb3JkZXI7CiAgICAgaWYgKGF1dG8gb3JkZXIg
PSB0cmVlT3JkZXI8dHJlZVR5cGU+KHBvaW50LCByYW5nZS5lbmQpOyAhaXNfbHQob3JkZXIpKQog
ICAgICAgICByZXR1cm4gb3JkZXI7Ci0gICAgcmV0dXJuIFBhcnRpYWxPcmRlcmluZzo6ZXF1aXZh
bGVudDsKKyAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjplcXVpdmFsZW50OwogfQog
Ci10ZW1wbGF0ZSBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyPFRyZWU+KGNvbnN0IFNpbXBsZVJh
bmdlJiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwotdGVtcGxhdGUgUGFydGlhbE9yZGVyaW5nIHRy
ZWVPcmRlcjxUcmVlPihjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsK
K3RlbXBsYXRlIHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3JkZXI8VHJlZT4oY29uc3QgU2lt
cGxlUmFuZ2UmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7Cit0ZW1wbGF0ZSBzdGQ6OnBhcnRpYWxf
b3JkZXJpbmcgdHJlZU9yZGVyPFRyZWU+KGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBTaW1w
bGVSYW5nZSYpOwogCiB0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gYm9vbCBjb250YWlucyhj
b25zdCBTaW1wbGVSYW5nZSYgb3V0ZXJSYW5nZSwgY29uc3QgU2ltcGxlUmFuZ2UmIGlubmVyUmFu
Z2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCmluZGV4IDAyNWFjODc1NDdhYWJjOTFiY2Mx
NjExZDdiNjUzNTg3NTkzNmJkOTQuLjNkYjg3M2Y4ZDcyMjI4NGRhNTYwYjcwOWVjYzIzMzYwOWMy
NTgxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCkBAIC00Miw2ICs0Miw4IEBAIHN0cnVj
dCBTaW1wbGVSYW5nZSB7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZShjb25zdCBC
b3VuZGFyeVBvaW50JiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IFNpbXBsZVJhbmdlKEJvdW5kYXJ5UG9pbnQmJiwgQm91bmRhcnlQb2ludCYmKTsKKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYpIGNvbnN0ID0gZGVmYXVsdDsKIH07CiAK
IFNpbXBsZVJhbmdlIG1ha2VTaW1wbGVSYW5nZUhlbHBlcihCb3VuZGFyeVBvaW50JiYsIEJvdW5k
YXJ5UG9pbnQmJik7CkBAIC02MSw4ICs2Myw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIC4uLlQ+IGF1
dG8gbWFrZVNpbXBsZVJhbmdlKFQmJiAuLi5hcmd1bWVudHMpIC0+IGRlY2x0eXBlKG1ha2VTCiBX
RUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlUmFuZ2VTZWxlY3Rp
bmdOb2RlKE5vZGUmKTsKIFdFQkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVj
dGluZ05vZGVDb250ZW50cyhOb2RlJik7CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVS
YW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7Ci0KIHRlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4g
Tm9kZSogY29tbW9uSW5jbHVzaXZlQW5jZXN0b3IoY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogdGVt
cGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29sIGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiwg
Y29uc3QgQm91bmRhcnlQb2ludCYpOwpAQCAtODEsOCArODEsOCBAQCBXRUJDT1JFX0VYUE9SVCBi
b29sIGludGVyc2VjdHNGb3JUZXN0aW5nKFRyZWVUeXBlLCBjb25zdCBTaW1wbGVSYW5nZSYsIGNv
bnN0IFNpbQogV0VCQ09SRV9FWFBPUlQgYm9vbCBpbnRlcnNlY3RzRm9yVGVzdGluZyhUcmVlVHlw
ZSwgY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7CiAKIC8vIFJldHVybnMgZXF1aXZh
bGVudCBpZiBwb2ludCBpcyBpbiByYW5nZS4KLXRlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gUGFy
dGlhbE9yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IEJvdW5kYXJ5
UG9pbnQmKTsKLXRlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gUGFydGlhbE9yZGVyaW5nIHRyZWVP
cmRlcihjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKK3RlbXBsYXRl
PFRyZWVUeXBlID0gVHJlZT4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBT
aW1wbGVSYW5nZSYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKK3RlbXBsYXRlPFRyZWVUeXBlID0g
VHJlZT4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBCb3VuZGFyeVBvaW50
JiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogc3RydWN0IE9mZnNldFJhbmdlIHsKICAgICB1bnNp
Z25lZCBzdGFydCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9y
dEFyZ3VtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKaW5k
ZXggZGM3MTg3M2JmOWE0MGFhN2QyODk3OGJiMTY1Y2FjNGI5OTkwNDdmNC4uYzAwZGRkNTU4ZGMx
YTBlZTNmZmVkMmFlNTQzYjY3Y2VhMjllMWE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0
QXJndW1lbnRzLmgKQEAgLTEyNSwxMSArMTI1LDYgQEAgc3RydWN0IFZpZXdwb3J0QXJndW1lbnRz
IHsKICAgICAgICAgICAgICYmIHdpZHRoV2FzRXhwbGljaXQgPT0gb3RoZXIud2lkdGhXYXNFeHBs
aWNpdDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVmlld3BvcnRBcmd1bWVu
dHMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwotICAgIH0KLQogI2lmIFBMQVRGT1JNKEdUSykKICAgICAvLyBGSVhNRTogV2UncmUgZ29pbmcg
dG8ga2VlcCB0aGlzIGNvbnN0YW50IGFyb3VuZCB1bnRpbCBhbGwgZW1iZWRkZXJzCiAgICAgLy8g
cmVmYWN0b3IgdGhlaXIgY29kZSB0byBubyBsb25nZXIgbmVlZCBpdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmdTdHlsZS5oCmluZGV4IDdmZGU1MmU5ZTQ1NTA5MzdmYzg4Mjk2MjI4MjRiZmZl
OGExM2EzMjEuLmQ2N2Q0MjQwMzk2NTU3YjE4NDY2OTI4OTE3NWUwZjg1ODVmMzM1MGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaApAQCAtMjIwLDEwICsyMjAsNyBAQCBwdWJs
aWM6CiAgICAgU3RyaW5nIGZvbnRTaXplKCkgeyByZXR1cm4gbV9hcHBseUZvbnRTaXplOyB9CiAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVDaGFuZ2UmKTsKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU3R5bGVDaGFuZ2UmIG90aGVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGV4dHJhY3RUZXh0
U3R5bGVzKERvY3VtZW50JiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYsIGJvb2wgc2hvdWxkVXNl
Rml4ZWRGb250RGVmYXVsdFNpemUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbmRlcmVkUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQ
b3NpdGlvbi5oCmluZGV4IDIxMzIyM2Q5YzUxNjRlYzRhNzkyMGI5NWM3ZGIxNDFmNmRkM2EyN2Mu
LjMwNzI3ZGI5NmVmYWY1MTQ1OWU5OTA2MTVmYWE4OTBiMGFjMWM5N2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCkBAIC03MSw3ICs3MSw2IEBAIHB1YmxpYzoK
ICAgICBJbnRSZWN0IGFic29sdXRlUmVjdChDYXJldFJlY3RNb2RlID0gQ2FyZXRSZWN0TW9kZTo6
Tm9ybWFsKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVu
ZGVyZWRQb3NpdGlvbiYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgZXhwbGljaXQgUmVu
ZGVyZWRQb3NpdGlvbihjb25zdCBSZW5kZXJPYmplY3QqLCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJv
eEl0ZXJhdG9yLCB1bnNpZ25lZCBvZmZzZXQpOwogCiAgICAgSW5saW5lSXRlcmF0b3I6OkxlYWZC
b3hJdGVyYXRvciBwcmV2aW91c0xlYWZPbkxpbmUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCAyYzNlMDc4YTMyYTJmZWYyMWRhNGZlY2Y5
ZGRhZGI3MTQyYWVmMzMzLi5hMWMwNGJmZTU1NWYxNWJlYWMxZTYxNWZiYmY1YWQ4OTgyYWZmNmQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCkBAIC04MDUs
NyArODA1LDcgQEAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgbWFrZVZpc2libGVQb3NpdGlvblJhbmdl
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JgogICAgIHJldHVybiB7IG1ha2VDb250
YWluZXJPZmZzZXRQb3NpdGlvbihyYW5nZS0+c3RhcnQpLCBtYWtlQ29udGFpbmVyT2Zmc2V0UG9z
aXRpb24ocmFuZ2UtPmVuZCkgfTsKIH0KIAotUGFydGlhbE9yZGVyaW5nIGRvY3VtZW50T3JkZXIo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCitzdGQ6
OnBhcnRpYWxfb3JkZXJpbmcgZG9jdW1lbnRPcmRlcihjb25zdCBWaXNpYmxlUG9zaXRpb24mIGEs
IGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYikKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHR3byBw
b3NpdGlvbnMgd2l0aCBkaWZmZXJlbnQgYWZmaW5pdHkgYmUgY29uc2lkZXJlZCBlcXVpdmFsZW50
IG9yIG5vdD8KICAgICByZXR1cm4gdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oYS5kZWVwRXF1aXZh
bGVudCgpLCBiLmRlZXBFcXVpdmFsZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVBvc2l0aW9uLmgKaW5kZXggYTkyY2E4MWJjZWZlM2U0NzZjNGM1NDY2MGQ5NzIwODRlZWVjZmFj
Ni4uN2QyNzY4NjhjMWE3M2NmYTkxM2MzM2FlZmE4ZjgwNTA4N2E4N2M2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCkBAIC0xMDYsMTMgKzEwNiw5IEBAIHByaXZh
dGU6CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJik7Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAKLVdFQkNPUkVfRVhQT1JUIFBhcnRpYWxPcmRl
cmluZyBkb2N1bWVudE9yZGVyKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpOwotYm9vbCBvcGVyYXRvcjwoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJik7Ci1ib29sIG9wZXJhdG9yPihjb25zdCBWaXNpYmxlUG9zaXRpb24m
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKLWJvb2wgb3BlcmF0b3I8PShjb25zdCBWaXNpYmxl
UG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKLWJvb2wgb3BlcmF0b3I+PShjb25z
dCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKK1dFQkNPUkVfRVhQ
T1JUIHN0ZDo6cGFydGlhbF9vcmRlcmluZyBkb2N1bWVudE9yZGVyKGNvbnN0IFZpc2libGVQb3Np
dGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworc3RkOjpwYXJ0aWFsX29yZGVyaW5nIG9w
ZXJhdG9yPD0+KGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
OwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3Vu
ZGFyeVBvaW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogCkBAIC0xNTMsMjkgKzE0OSw5IEBA
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBW
aXNpYmxlUG9zaXRpb24mIGIpCiAgICAgcmV0dXJuIGEuZGVlcEVxdWl2YWxlbnQoKSA9PSBiLmRl
ZXBFcXVpdmFsZW50KCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCitpbmxpbmUgc3RkOjpwYXJ0
aWFsX29yZGVyaW5nIG9wZXJhdG9yPD0+KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYSwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiBiKQogewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLWlubGlu
ZSBib29sIG9wZXJhdG9yPChjb25zdCBWaXNpYmxlUG9zaXRpb24mIGEsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgYikKLXsKLSAgICByZXR1cm4gaXNfbHQoZG9jdW1lbnRPcmRlcihhLCBiKSk7Ci19
Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBWaXNpYmxlUG9zaXRpb24mIGEsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgYikKLXsKLSAgICByZXR1cm4gaXNfZ3QoZG9jdW1lbnRPcmRlcihh
LCBiKSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCi17Ci0gICAgcmV0dXJuIGlzX2x0ZXEoZG9j
dW1lbnRPcmRlcihhLCBiKSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCi17Ci0gICAgcmV0dXJu
IGlzX2d0ZXEoZG9jdW1lbnRPcmRlcihhLCBiKSk7CisgICAgcmV0dXJuIGRvY3VtZW50T3JkZXIo
YSwgYik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlU2VsZWN0aW9uLmgKaW5kZXggYTRhZDhkOWY1YmEzNmU3NzUxMjBjMWIyYzBjODU1
NDg4NDlhNzA1OC4uNzQ4YzkyNjM4ZjBhNzlmY2U5ZGQ1MGRiNmI1NmExY2IyNjM2YTU3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKQEAgLTE2NywxMSArMTY3
LDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBhLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBiKQogICAgIHJldHVybiBhLnN0YXJ0KCkgPT0gYi5zdGFy
dCgpICYmIGEuZW5kKCkgPT0gYi5lbmQoKSAmJiBhLmFmZmluaXR5KCkgPT0gYi5hZmZpbml0eSgp
ICYmIGEuaXNCYXNlRmlyc3QoKSA9PSBiLmlzQmFzZUZpcnN0KCkgJiYgYS5pc0RpcmVjdGlvbmFs
KCkgPT0gYi5pc0RpcmVjdGlvbmFsKCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgYSwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgYikKLXsKLSAg
ICByZXR1cm4gIShhID09IGIpOwotfQotCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KaW5kZXggMzAzNmNkMzJkNmNkODMyYzIyMDI4M2E4NDQ1YTg5OWE1YTY2Y2EzYy4uNzE3
ODM1MGQwMDAyYmQ5MGUxNWI2NDU0YWE1MGFiNDY2ZTRhODU5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgRWRpdG9yOjpy
ZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogCi0gICAgaWYgKG5vZGUtPmRvY3VtZW50
KCkgIT0gbV9kb2N1bWVudCkKKyAgICBpZiAoJm5vZGUtPmRvY3VtZW50KCkgIT0gJm1fZG9jdW1l
bnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdG9yKG1fZG9j
dW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIuaAppbmRleCBjM2E4ZWJlZDk3YmM3NTI3YTIzNWRkOGY3YWU5MzQ2MWQ1ZGRjMGZk
Li5mOTJkYjJjNWFlOTVjYzZhYTA0OWQ4NzE2MGVjMDk3ZjUxODMxMDgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaApAQCAtMzks
NiArMzksNyBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciB7CiAKICAgICB1bnNp
Z25lZCBoYXNoKCkgY29uc3Q7CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuIHByb2Nlc3NJZGVudGlmaWVyICYmIGl0ZW1JZGVudGlmaWVyOyB9CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKSBjb25zdCA9IGRlZmF1
bHQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKQEAgLTYxLDE2ICs2
Miw2IEBAIGlubGluZSBjb25zdCBjaGFyKiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOjpsb2dT
dHJpbmcoKSBjb25zdAogCiAjZW5kaWYKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBhLCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJiBiKQotewotICAgIHJldHVybiBhLnByb2Nlc3NJZGVudGlmaWVyID09IGIucHJvY2Vzc0lk
ZW50aWZpZXIgJiYgIGEuaXRlbUlkZW50aWZpZXIgPT0gYi5pdGVtSWRlbnRpZmllcjsKLX0KLQot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBh
LCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBiKQotewotICAgIHJldHVybiAhKGEg
PT0gYik7Ci19Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIEJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5o
CmluZGV4IGU2YWIxZWE1N2IxNGQyMWQ5ODEzZGY3ZmVkYTBjNjU2YzlkMGE3ZjQuLjZmM2ZkYTk3
NDExNTIwMDFkNWNhNDcyOTNiMmZiOTE4MzUyMWNkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxlbWVudExpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRMaXN0LmgKQEAgLTY4LDkg
KzY4LDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIHZvaWQgcmVwbGFjZUVsZW1lbnQo
UmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRlbSkgeyBtX2l0ZW0gPSBXVEZNb3ZlKGl0ZW0pOyB9CiAK
LSAgICAgICAgLy8gTmVlZGVkIGZvciB1c2Ugd2l0aCBWZWN0b3IuICBUaGVzZSBhcmUgc3VwZXIt
aG90IGFuZCBtdXN0IGJlIGlubGluZS4KKyAgICAgICAgLy8gTmVlZGVkIGZvciB1c2Ugd2l0aCBW
ZWN0b3IuIFN1cGVyLWhvdCBhbmQgbXVzdCBiZSBpbmxpbmUuCiAgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShFbGVtZW50KiBlbGVtZW50KSBjb25zdCB7IHJldHVybiAhbV9pdGVtID8gIWVsZW1lbnQg
OiAmbV9pdGVtLT5lbGVtZW50KCkgPT0gZWxlbWVudDsgfQotICAgICAgICBib29sIG9wZXJhdG9y
IT0oRWxlbWVudCogZWxlbWVudCkgY29uc3QgeyByZXR1cm4gIW1faXRlbSA/ICEhZWxlbWVudCA6
ICZtX2l0ZW0tPmVsZW1lbnQoKSAhPSBlbGVtZW50OyB9CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBSZWZQdHI8SFRNTFN0YWNrSXRlbT4gbV9pdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggNzJmNDIz
ZmY2MTI3N2VlZjRiZDM1NjMyOGM0NmQzYmQ5MTMxZmY2NS4uYzZhZTczYjlmNzBjMzc2NTAwOTY1
NzY4ODAyOGY3ZGFmYmNhZDk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0yMzQsMTMgKzIzNCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNSZWdleCB7IGZhbHNlIH07CiAgICAgICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UgeyBJbnNw
ZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlIH07CiAKLSAg
ICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRlcmNlcHQmIG90aGVyKSBjb25z
dAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdXJsID09IG90aGVyLnVybAotICAgICAg
ICAgICAgICAgICYmIGNhc2VTZW5zaXRpdmUgPT0gb3RoZXIuY2FzZVNlbnNpdGl2ZQotICAgICAg
ICAgICAgICAgICYmIGlzUmVnZXggPT0gb3RoZXIuaXNSZWdleAotICAgICAgICAgICAgICAgICYm
IG5ldHdvcmtTdGFnZSA9PSBvdGhlci5uZXR3b3JrU3RhZ2U7Ci0gICAgICAgIH0KKyAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVyY2VwdCYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9
OwogICAgIFZlY3RvcjxJbnRlcmNlcHQ+IG1faW50ZXJjZXB0czsKICAgICBIYXNoTWFwPFN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0Pj4gbV9wZW5kaW5nSW50
ZXJjZXB0UmVxdWVzdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
VW5pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCmluZGV4IDhiYTlj
ZDdhYzViYmZjNWJlM2QzMTBjNGMyOTk1NDM4ZGFkNzNmYTkuLjRkNzQzZjM3NzRlMzkwNzZlNWE5
YmNkN2JkNzMyOTEzOTAyZjEzMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRVbml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCkBA
IC01NSwxOCArNTUsOSBAQCB1c2luZyBJbmxpbmVMYXlvdXRSZWN0ID0gTGF5b3V0UmVjdDsKIHN0
cnVjdCBQb3NpdGlvbiB7CiAgICAgb3BlcmF0b3IgTGF5b3V0VW5pdCgpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlOyB9CiAgICAgTGF5b3V0VW5pdCB2YWx1ZTsKKyAgICBmcmllbmQgYXV0byBvcGVyYXRv
cjw9PihQb3NpdGlvbiwgUG9zaXRpb24pID0gZGVmYXVsdDsKIH07CiAKLWlubGluZSBib29sIG9w
ZXJhdG9yPChjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpCi17Ci0gICAgcmV0
dXJuIGEudmFsdWUgPCBiLnZhbHVlOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKLXsKLSAgICByZXR1cm4gYS52YWx1ZSA9
PSBiLnZhbHVlOwotfQotCiBzdHJ1Y3QgUG9pbnQgewogICAgIC8vIEZJWE1FOiBVc2UgUG9zaXRp
b248SG9yaXpvbnRhbD4sIFBvc2l0aW9uPFZlcnRpY2FsPiB0byBhdm9pZCB0b3AvbGVmdCB2cy4g
eC95IGNvbmZ1c2lvbi4KICAgICBMYXlvdXRVbml0IHg7IC8vIGxlZnQKQEAgLTE5NiwyMyArMTg3
LDExIEBAIGlubGluZSBJbmxpbmVMYXlvdXRVbml0IG1heElubGluZUxheW91dFVuaXQoKQogfQog
CiBzdHJ1Y3QgU2xvdFBvc2l0aW9uIHsKLSAgICBTbG90UG9zaXRpb24oKSA9IGRlZmF1bHQ7Ci0g
ICAgU2xvdFBvc2l0aW9uKHNpemVfdCBjb2x1bW4sIHNpemVfdCByb3cpOwotCiAgICAgc2l6ZV90
IGNvbHVtbiB7IDAgfTsKICAgICBzaXplX3Qgcm93IHsgMCB9OwotfTsKLQotaW5saW5lIFNsb3RQ
b3NpdGlvbjo6U2xvdFBvc2l0aW9uKHNpemVfdCBjb2x1bW4sIHNpemVfdCByb3cpCi0gICAgOiBj
b2x1bW4oY29sdW1uKQotICAgICwgcm93KHJvdykKLXsKLX0KIAotaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTbG90UG9zaXRpb24mIGEsIGNvbnN0IFNsb3RQb3NpdGlvbiYgYikKLXsKLSAg
ICByZXR1cm4gYS5jb2x1bW4gPT0gYi5jb2x1bW4gJiYgYS5yb3cgPT0gYi5yb3c7Ci19CisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNsb3RQb3NpdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKK307
CiAKIHN0cnVjdCBDZWxsU3BhbiB7CiAgICAgc2l6ZV90IGNvbHVtbiB7IDEgfTsKQEAgLTIyOSw3
ICsyMDgsNyBAQCBzdHJ1Y3QgU2xvdFBvc2l0aW9uSGFzaCB7CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwogfTsKIHRlbXBsYXRlPD4g
c3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6TGF5b3V0OjpTbG90UG9zaXRpb24+IDogR2VuZXJp
Y0hhc2hUcmFpdHM8V2ViQ29yZTo6TGF5b3V0OjpTbG90UG9zaXRpb24+IHsKLSAgICBzdGF0aWMg
V2ViQ29yZTo6TGF5b3V0OjpTbG90UG9zaXRpb24gZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNv
cmU6OkxheW91dDo6U2xvdFBvc2l0aW9uKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCkpOyB9CisgICAgc3RhdGljIFdlYkNvcmU6OkxheW91dDo6U2xvdFBvc2l0aW9uIGVtcHR5
VmFsdWUoKSB7IHJldHVybiB7IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkg
fTsgfQogCiAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6Okxh
eW91dDo6U2xvdFBvc2l0aW9uJiBzbG90KSB7IHNsb3QuY29sdW1uID0gc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKTsgfQogICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNv
bnN0IFdlYkNvcmU6OkxheW91dDo6U2xvdFBvc2l0aW9uJiBzbG90KSB7IHJldHVybiBzbG90LmNv
bHVtbiA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKaW5kZXggZDM1Zjk0
MjBlNWE3MDZhNzgyMzRkYzkzZTA5MzdkZmNlZTM3YzFjNy4uNThiOTQxNGE0NjM1Nzg5ZGQwNmE5
ZDQxNmVjM2YyYzU4NzU2NDk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zs
b2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9h
dHMvRmxvYXRpbmdDb250ZXh0LmNwcApAQCAtMTAyLDcgKzEwMiw2IEBAIHB1YmxpYzoKICAgICBj
b25zdCBGbG9hdFBhaXImIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudDsgfQog
ICAgIEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEl0
ZXJhdG9yJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJikgY29u
c3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZXQoUG9zaXRpb25JbkNvbnRleHRSb290IHZlcnRp
Y2FsUG9zaXRpb24pOwpAQCAtNzMwLDExICs3MjksNiBAQCBib29sIEl0ZXJhdG9yOjpvcGVyYXRv
cj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gbV9jdXJyZW50ID09
IG90aGVyLm1fY3VycmVudDsKIH0KIAotYm9vbCBJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBJ
dGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwot
fQotCiB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oCmluZGV4IDUy
OWEyMThlNTJkNTEwODEyZDhlZTk3ZTVjZjFhM2I0ODRjMDUxMDQuLjRjNDc1MjM2NmIxZDQ5YTI2
YjZiMmU3NDlhNGRjYjI2ZjE0YmU3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3gu
aApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9jc3MtaW5saW5lLTMvI2xheW91dC1ib3VuZHMKICAgICBzdHJ1Y3QgTGF5b3V0Qm91bmRz
IHsKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBhc2Nl
bnQgKyBkZXNjZW50OyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMYXlvdXRCb3Vu
ZHMmIG90aGVyKSBjb25zdCB7IHJldHVybiBhc2NlbnQgPT0gb3RoZXIuYXNjZW50ICYmIGRlc2Nl
bnQgPT0gb3RoZXIuZGVzY2VudDsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGF5
b3V0Qm91bmRzJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIElubGluZUxheW91dFVuaXQg
YXNjZW50IHsgMCB9OwogICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQgeyAwIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckJveC5oCmluZGV4IDgxM2Y1YjBlNjU5MDM0MTNmZjQ2MmU0OWUxZjg5Mzc4MTg2MzZjN2UuLjE4
MGY2MGI5NmU0YjJkOWFhMmQzNDU2ZTVjMmFhMDQyYzVjOGFjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oCkBAIC0x
MTksMTAgKzExOSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3hJ
dGVyYXRvciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCb3hJdGVyYXRvciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KICAgICBib29sIG9w
ZXJhdG9yPT0oRW5kSXRlcmF0b3IpIGNvbnN0IHsgcmV0dXJuIGF0RW5kKCk7IH0KLSAgICBib29s
IG9wZXJhdG9yIT0oRW5kSXRlcmF0b3IpIGNvbnN0IHsgcmV0dXJuICFhdEVuZCgpOyB9CiAKICAg
ICBjb25zdCBCb3gmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fYm94OyB9CiAgICAgY29u
c3QgQm94KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJm1fYm94OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdh
Y3lQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0
b3JCb3hMZWdhY3lQYXRoLmgKaW5kZXggYjU5YWI4MGU4Y2MxMjRkMDk1YTViMTEzYTE5YzU3NmZj
MWViYTg1NS4uZjI4MmRkZTA4MWQ0ZmU5MDVhOTAxYWUxZTFlNWY2ODc2YTM3MGI0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94
TGVnYWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9Jbmxp
bmVJdGVyYXRvckJveExlZ2FjeVBhdGguaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHsgaW5saW5lRmxvd0JveCgpLT5sYXN0TGVhZkRlc2NlbmRhbnQoKSB9Owog
ICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3hMZWdhY3lQYXRoJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3ggPT0gb3RoZXIubV9pbmxpbmVCb3g7IH0KKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQm94TGVnYWN5UGF0aCYpIGNvbnN0ID0gZGVmYXVsdDsKIAog
ICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9pbmxpbmVCb3g7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94
TW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yQm94TW9kZXJuUGF0aC5oCmluZGV4IDI1MmFhYjhmMzQ0MTE4NzRlMzFmYzI3MjM0ODQ3
NGQ3ZGE0ZTcyOWYuLjZhNDk0YTRhMTQ1NjRlYjMwYjRjYjE0NjRkMTM3MWFiNzNmODc1YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckJveE1vZGVyblBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
SW5saW5lSXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBsYXN0OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBCb3hNb2Rlcm5QYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50ID09
IG90aGVyLm1faW5saW5lQ29udGVudCAmJiBtX2JveEluZGV4ID09IG90aGVyLm1fYm94SW5kZXg7
IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQm94TW9kZXJuUGF0aCYpIGNvbnN0ID0gZGVm
YXVsdDsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX2JveEluZGV4ID09IGJv
eGVzKCkuc2l6ZSgpOyB9CiAgICAgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3goKSBjb25z
dCB7IHJldHVybiBib3hlcygpW21fYm94SW5kZXhdOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmgKaW5kZXggOGE4ZjA3
MGYzNGY0OGU1NTUwZDExMTQ2OGE5YjZlZWJmOGI0ZjdkNS4uZTY4MWM5YjRkODNhYTI1NzA3MmUx
Y2M5ZWYzNGQ4YmJiNTUxZDQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaApAQCAtMTEzLDEwICsxMTMsNyBAQCBw
dWJsaWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFhdEVu
ZCgpOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGluZUl0ZXJhdG9yJikgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExpbmVJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KICAgICBib29sIG9wZXJhdG9yPT0oRW5kTGlu
ZUl0ZXJhdG9yKSBjb25zdCB7IHJldHVybiBhdEVuZCgpOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9
KEVuZExpbmVJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KIAogICAgIGNvbnN0
IExpbmUmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZTsgfQogICAgIGNvbnN0IExp
bmUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV9saW5lOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5
UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9y
TGluZUxlZ2FjeVBhdGguaAppbmRleCAwN2RkYTllOWU3ZjRhY2QxMzAzMzM0NjA4NmFjYTM3NTEz
OTI1NTNlLi44NjQyNmI5MmNhMmJkZWRhY2JkMDg1NDUzNDk1NTRhNmEzMWJmNDU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5l
TGVnYWN5UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9Jbmxp
bmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAg
ICAgICBtX3Jvb3RJbmxpbmVCb3ggPSBtX3Jvb3RJbmxpbmVCb3gtPnByZXZSb290Qm94KCk7CiAg
ICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExpbmVJdGVyYXRvckxlZ2FjeVBhdGgm
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3ggPT0gb3RoZXIubV9yb290SW5s
aW5lQm94OyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExpbmVJdGVyYXRvckxlZ2FjeVBh
dGgmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4g
IW1fcm9vdElubGluZUJveDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaAppbmRl
eCBlMTc4M2U1NzM5ZTc1ZDkyZmM1NDdlMzg4ZDc4ZjAwYTI4MDI5ZDhlLi5mMzMzZTIyZDBlN2I4
ZDg0MGE1OTQyOTQxMGE1ZjNmNmQzZDY3ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5Q
YXRoLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgICAgICAtLW1fbGluZUluZGV4Owog
ICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRo
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50ID09IG90aGVyLm1faW5saW5l
Q29udGVudCAmJiBtX2xpbmVJbmRleCA9PSBvdGhlci5tX2xpbmVJbmRleDsgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoJikgY29uc3QgPSBkZWZhdWx0
OwogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUluZGV4ID09IGxpbmVz
KCkuc2l6ZSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3IuaApp
bmRleCBkNGFjZDJlYzhlYzk1NmQyOTBkYjIxMmFkZTc3MjJkMDJlNjM0MDkyLi44YjkwNTAwZGM4
NjUxNGViNTEwZjU5OTAwNGM3ZGYzY2EwOTFkMDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmluZ0Js
b2NrQ2hhaW5JdGVyYXRvci5oCkBAIC00MCw4ICs0MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBD
b250YWluZXJCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQ7IH0KIAog
ICAgIExheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRv
ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7IH0K
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVy
YXRvciYgb3RoZXIpIGNvbnN0IHsgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yJikg
Y29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIGNvbnN0IENvbnRhaW5lckJveCogbV9j
dXJyZW50IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXREZXNjZW5kYW50SXRlcmF0b3IuaAppbmRleCBlZThmNjEyODIx
YjA0ZTE4M2YzMmNlMmU4NTFiZTY1NzJlMWYxZGFmLi4zNmI0ZWU1ZjI5MzE4NDVmNmM0MjQ3MTUy
NjdkMGZlYmQ2MzNkODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXREZXNjZW5kYW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXREZXNjZW5kYW50SXRlcmF0b3IuaApAQCAtMTEwLDQgKzExMCw1
IEBAIGlubGluZSBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPFQ+IGRlc2NlbmRhbnRz
T2ZUeXBlKGNvbnN0IENvbnRhaW5lckJveCYKIAogfQogfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEl0ZXJhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJdGVyYXRvci5oCmluZGV4IDYxYzBk
NjFkNmYxODNlNmQyNmNjZTYxYTY0ZGUwY2YzYTZiMjM4MjAuLjU5NjgzMmQ0MjhlNDdlYjRhYjZm
YTM5N2RmMmQ3OTBlMjcwMWRmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0SXRlcmF0b3IuaApAQCAtMjksOCArMjksNyBAQAogCiAjaW5jbHVkZSAi
TGF5b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9jay5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1u
YW1lc3BhY2UgTGF5b3V0IHsKK25hbWVzcGFjZSBXZWJDb3JlOjpMYXlvdXQgewogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIExheW91dEl0ZXJhdG9yIHsKQEAgLTQyLDcgKzQxLDYgQEAg
cHVibGljOgogICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4oKSBjb25zdDsKIAogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBMYXlvdXRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBMYXlvdXRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwogCiAgICAgTGF5b3V0
SXRlcmF0b3ImIHRyYXZlcnNlTmV4dCgpOwogICAgIExheW91dEl0ZXJhdG9yJiB0cmF2ZXJzZU5l
eHRTaWJsaW5nKCk7CkBAIC0xOTIsMTQgKzE5MCw2IEBAIGlubGluZSBib29sIExheW91dEl0ZXJh
dG9yPFQ+OjpvcGVyYXRvcj09KGNvbnN0IExheW91dEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAg
ICByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1pbmxpbmUgYm9vbCBMYXlvdXRJdGVyYXRvcjxUPjo6b3BlcmF0b3IhPShjb25z
dCBMYXlvdXRJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwotfQotCi19Ci19Ci0jaW5jbHVkZSAiTGF5b3V0Q2hpbGRJdGVyYXRvci5oIgorfSB9
CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNvbnRh
aW5lci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5lci5oCmluZGV4IDQz
MWNmMWM1YjJiZDFmOTAzZDE2YmVhZjc3MTIwZDcxYTYxMDU5Y2QuLjJjMjUxYzA3ZTZhODY5ZWNi
YTQ1Yzk3N2E5Yjc2MDY2Mjg1M2E4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q29u
dGFpbmVyLmgKQEAgLTM2LDE2ICszNiwxMiBAQCBzdHJ1Y3QgUG9saWN5Q29udGFpbmVyIHsKICAg
ICBDcm9zc09yaWdpbk9wZW5lclBvbGljeSBjcm9zc09yaWdpbk9wZW5lclBvbGljeTsKICAgICAv
LyBGSVhNRTogQ1NQIGxpc3QgYW5kIHJlZmVycmVyIHBvbGljeSBzaG91bGQgYmUgcGFydCBvZiB0
aGUgUG9saWN5Q29udGFpbmVyLgogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvbGljeUNv
bnRhaW5lciYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICBQb2xpY3lDb250YWluZXIgaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFBvbGljeUNvbnRhaW5lcj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLWlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUG9saWN5Q29udGFpbmVyJiBhLCBjb25zdCBQb2xpY3lDb250
YWluZXImIGIpCi17Ci0gICAgcmV0dXJuIGEuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSA9PSBi
LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kgJiYgYS5jcm9zc09yaWdpbk9wZW5lclBvbGljeSA9
PSBiLmNyb3NzT3JpZ2luT3BlbmVyUG9saWN5OwotfQotCiBpbmxpbmUgUG9saWN5Q29udGFpbmVy
IFBvbGljeUNvbnRhaW5lcjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAppbmRl
eCAzODFmNjI3YWM2MzRjNzI5NWIwOWEzZmUyMDk3YzQxNjZkZDcxZWYxLi5hNzkzNzQ0ZWJhOTIz
MjNjOTc5MzEzYTlmNTZkMTkyNzMwOGQwN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaApAQCAtNzksMTUgKzc5LDcgQEAgcHVibGljOgog
CiAgICAgICAgIFNvdXJjZVNpdGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU291cmNl
U2l0ZSB7IHJlZ2lzdHJhYmxlRG9tYWluLmlzb2xhdGVkQ29weSgpIH07IH0KIAotICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNlU2l0ZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiByZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhlci5yZWdpc3RyYWJs
ZURvbWFpbjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTb3Vy
Y2VTaXRlJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlZ2lz
dHJhYmxlRG9tYWluICE9IG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluOwotICAgICAgICB9CisgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTb3VyY2VTaXRlJikgY29uc3QgPSBkZWZhdWx0Owog
CiAgICAgICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICAgICAgewpA
QCAtMTI1LDE1ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgQXR0cmlidXRpb25EZXN0aW5h
dGlvblNpdGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gQXR0cmlidXRpb25EZXN0aW5h
dGlvblNpdGUgeyByZWdpc3RyYWJsZURvbWFpbi5pc29sYXRlZENvcHkoKSB9OyB9CiAKLSAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBvdGhl
cikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhYmxlRG9tYWlu
ID09IG90aGVyLnJlZ2lzdHJhYmxlRG9tYWluOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBvdGhlcikgY29uc3QK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhYmxlRG9tYWluICE9IG90aGVy
LnJlZ2lzdHJhYmxlRG9tYWluOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAg
ICAgICBib29sIG1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApp
bmRleCA4M2I4NjEzY2ZkYTIzMjlhZTMwYmJmNmFiYzE0Yjk5ZDQ0MjM3YjAyLi5iMzg0YTJiZWJj
MTg4MjM2N2QyNTY1MGUzNGE4NGVkZTYxNzA0NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCkBAIC00OSwxNSArNDksNyBA
QCBzdHJ1Y3QgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IHsKICAgICBBbGdvcml0aG0gYWxn
b3JpdGhtOwogICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZTsKIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFsZ29yaXRobSA9PSBvdGhlci5hbGdvcml0aG0gJiYgdmFsdWUgPT0g
b3RoZXIudmFsdWU7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCiBzdHJ1Y3Qg
RW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRsZS5oCmluZGV4IGZlMGM1ZWUxZDA5
YTI1ZjNkNThkNDgyOWE4ZmZjYjY2ZGQ4YmU4OTYuLjIwZmYwNzM1ZTg0MDg3NjlmZTRiYzQxMDc0
NDQyZGIzYjk5NDQ3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUhhbmRsZS5oCkBAIC03NSw3ICs3NSw2IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgbykgY29uc3QgeyByZXR1
cm4gb3BlcmF0b3I9PShzdGF0aWNfY2FzdDxjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2Um
PihvKSk7IH0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGVC
YXNlJiBvKSBjb25zdCB7IHJldHVybiBnZXQoKSA9PSBvLmdldCgpOyB9Ci0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSYgbykgY29uc3QgeyByZXR1cm4g
Z2V0KCkgIT0gby5nZXQoKTsgfQogfTsKIAogdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFJSPiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Uj4mIGgsIGNvbnN0IFJS
KiByZXMpIApAQCAtODYsMTMgKzg1LDUgQEAgdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFJSPiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUlIqIHJlcywgY29uc3QgQ2FjaGVkUmVzb3VyY2UKIHsgCiAg
ICAgcmV0dXJuIGguZ2V0KCkgPT0gcmVzOyAKIH0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBS
Uj4gYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlPFI+JiBoLCBjb25z
dCBSUiogcmVzKSAKLXsgCi0gICAgcmV0dXJuIGguZ2V0KCkgIT0gcmVzOyAKLX0KLXRlbXBsYXRl
IDxjbGFzcyBSLCBjbGFzcyBSUj4gYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJSKiByZXMsIGNvbnN0
IENhY2hlZFJlc291cmNlSGFuZGxlPFI+JiBoKSAKLXsgCi0gICAgcmV0dXJuIGguZ2V0KCkgIT0g
cmVzOyAKLX0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3Jp
Z2luLmgKaW5kZXggZDc3M2Q5YjMxMmIzNmE5NTYwZGNmNDRkNTE4YjExY2JjMGFkY2FmYi4uN2Nh
MGZmY2Q3YTc0MmEyZjUzNzE2YTcxY2RjMjk3OGJhNmQ0ZWVhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ns
aWVudE9yaWdpbi5oCkBAIC0zNiw3ICszNiw3IEBAIHN0cnVjdCBDbGllbnRPcmlnaW4gewogICAg
IHN0YXRpYyBDbGllbnRPcmlnaW4gZW1wdHlLZXkoKSB7IHJldHVybiB7IH07IH0KIAogICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xpZW50T3Jp
Z2luJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENsaWVudE9yaWdpbiYpIGNv
bnN0ID0gZGVmYXVsdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxDbGllbnRPcmlnaW4+IGRlY29kZShEZWNvZGVyJik7CkBAIC01OSwxMSArNTks
NiBAQCBpbmxpbmUgdW5zaWduZWQgQ2xpZW50T3JpZ2luOjpoYXNoKCkgY29uc3QKICAgICByZXR1
cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KGhhc2hlcywgc2l6ZW9mKGhhc2hlcykpOwogfQog
Ci1pbmxpbmUgYm9vbCBDbGllbnRPcmlnaW46Om9wZXJhdG9yPT0oY29uc3QgQ2xpZW50T3JpZ2lu
JiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gdG9wT3JpZ2luID09IG90aGVyLnRvcE9yaWdp
biAmJiBjbGllbnRPcmlnaW4gPT0gb3RoZXIuY2xpZW50T3JpZ2luOwotfQotCiBpbmxpbmUgQ2xp
ZW50T3JpZ2luIENsaWVudE9yaWdpbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1
cm4geyB0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCksIGNsaWVudE9yaWdpbi5pc29sYXRlZENvcHko
KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggNjAyZDYwYzljOTcwNTVmNjQ4Y2E0OGZm
ZmJmOWM0MmI1YzE2ZjkzMy4uODc0YzQ3YTJjZjhiYzRhYzJhZWY5YzFiZjM2MjhmY2QzYTA2YTUy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC04NjMsNyArODYzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gd2lkdGg7CiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8ZmxvYXQ+IGhlaWdodDsKIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3ZlcnJp
ZGVWaWV3cG9ydFNpemUmIHJocykgY29uc3QgeyByZXR1cm4gcmhzLndpZHRoID09IHdpZHRoICYm
IHJocy5oZWlnaHQgPT0gaGVpZ2h0OyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBP
dmVycmlkZVZpZXdwb3J0U2l6ZSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9OwogICAgIEZsb2F0
U2l6ZSBjYWxjdWxhdGVTaXplRm9yQ1NTVmlld3BvcnRVbml0c092ZXJyaWRlKHN0ZDo6b3B0aW9u
YWw8T3ZlcnJpZGVWaWV3cG9ydFNpemU+KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaAppbmRleCBjMDQ2N2Q3YzdkYzA4YTZiYjZiYmM5MGZh
OTQyNzQ5OGJhNmNiYzQyLi43MzE1MjFiMzY4NDAzMmNmYmM5Y2VjMmJjZDJjOGY0N2E0ZGVlZWQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaApAQCAt
MzksMTcgKzM5LDE0IEBAIHN0cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyIHsKICAgICBQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcjsKICAgICBXaW5kb3dJZGVudGlmaWVyIHdp
bmRvd0lkZW50aWZpZXI7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2xvYmFsV2luZG93
SWRlbnRpZmllciYpIGNvbnN0ID0gZGVmYXVsdDsKKwogICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxH
bG9iYWxXaW5kb3dJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBhLCBjb25zdCBHbG9i
YWxXaW5kb3dJZGVudGlmaWVyJiBiKQotewotICAgIHJldHVybiBhLnByb2Nlc3NJZGVudGlmaWVy
ID09IGIucHJvY2Vzc0lkZW50aWZpZXIgJiYgIGEud2luZG93SWRlbnRpZmllciA9PSBiLndpbmRv
d0lkZW50aWZpZXI7Ci19Ci0KIGlubGluZSB1bnNpZ25lZCBHbG9iYWxXaW5kb3dJZGVudGlmaWVy
OjpoYXNoKCkgY29uc3QKIHsKICAgICB1aW50NjRfdCBpZGVudGlmaWVyc1syXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2luQWNjZXNzRW50cnkuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvT3JpZ2luQWNjZXNzRW50cnkuaAppbmRleCBmNTVmN2Q5MzhjNzA5Y2YxMDZmYWRl
ZDQxZTBkZDFmNGQwZmU3YmFhLi5lNDM1NDI1NjgzZGJlOTdlN2QzOWQ5ZjA2YThhMWI5OTA2YTVh
ZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5oCkBAIC03Myw5ICs3
Myw0IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgT3JpZ2luQWNjZXNzRW50cnkmIGEs
IGNvbnN0IE9yaWdpbkFjY2Vzc0VudHJ5JiBiKQogICAgICAgICAmJiBhLmlwQWRkcmVzc1NldHRp
bmdzKCkgPT0gYi5pcEFkZHJlc3NTZXR0aW5ncygpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IE9yaWdpbkFjY2Vzc0VudHJ5JiBhLCBjb25zdCBPcmlnaW5BY2Nlc3NFbnRyeSYg
YikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggZTQ5Y2Rj
ZDM2MmFlN2RhYjVkY2EzMTg2MmJhOTVlOGZiN2U3ZWY5ZS4uOTYwMjg4MWQwYmRmODRhZDI2ZDE0
ZGU3NTRhYTAyNjM0NzhhMWQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmNwcApAQCAtMTM3LDE0ICsxMzcsNCBAQCBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJp
dHlPcmlnaW5EYXRhOjppc29sYXRlZENvcHkoKSAmJgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LWJvb2wgb3BlcmF0b3I9PShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGEsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgYikKLXsKLSAgICBpZiAoJmEgPT0gJmIpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgcmV0dXJuIGEucHJvdG9jb2wgPT0gYi5wcm90b2NvbAotICAgICAgICAmJiBh
Lmhvc3QgPT0gYi5ob3N0Ci0gICAgICAgICYmIGEucG9ydCA9PSBiLnBvcnQ7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5o
CmluZGV4IGZkZmM4NjQzZWFkZjA0NjgwMWExZWU4MDk2YzE1ZTU3M2ZiMzZhNDUuLmFhODNiOGE1
YjU0ZDBjODQxOTBiMjNiZTljYWM2NDRmMGYxYTYwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuaApAQCAtNzksMTIgKzc5LDE0IEBAIHN0cnVjdCBTZWN1cml0eU9y
aWdpbkRhdGEgewogICAgIHsKICAgICAgICAgcmV0dXJuIHByb3RvY29sLmlzTnVsbCgpICYmIGhv
c3QuaXNOdWxsKCkgJiYgcG9ydCA9PSBzdGQ6Om51bGxvcHQ7CiAgICAgfQotICAgIAorCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0ID0gZGVmYXVs
dDsKKwogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIHByb3RvY29sLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CiAgICAgfQot
ICAgIAorCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKICNp
ZiAhTE9HX0RJU0FCTEVECkBAIC05Miw5ICs5NCw2IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGEgewogI2VuZGlmCiB9OwogCi1XRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7Ci1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZmlyc3QsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgc2Vjb25kKSB7IHJldHVybiAhKGZpcnN0ID09IHNlY29uZCk7IH0K
LQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VjdXJpdHlPcmlnaW5EYXRhOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdw
b3J0Q29uZmlndXJhdGlvbi5oCmluZGV4IDE0NjM2MmM1MmFkMGRjMzFmODU4OGRkNGQzZTdhMzk4
MWJkNTVjMjcuLmNlMDM0NTIwNTRhYTU3NzEzZTUzZWZkMGQyNWQxNzQ2OGRhNDdhZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaApAQCAtNTcsMTMgKzU3
LDcgQEAgcHVibGljOgogICAgICAgICBib29sIGhlaWdodElzU2V0IHsgZmFsc2UgfTsKICAgICAg
ICAgYm9vbCBpbml0aWFsU2NhbGVJc1NldCB7IGZhbHNlIH07CiAKLSAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFBhcmFtZXRlcnMmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gd2lkdGggPT0gb3RoZXIud2lkdGggJiYgaGVpZ2h0ID09IG90aGVyLmhlaWdo
dAotICAgICAgICAgICAgICAgICYmIGluaXRpYWxTY2FsZSA9PSBvdGhlci5pbml0aWFsU2NhbGUg
JiYgaW5pdGlhbFNjYWxlSWdub3JpbmdMYXlvdXRTY2FsZUZhY3RvciA9PSBvdGhlci5pbml0aWFs
U2NhbGVJZ25vcmluZ0xheW91dFNjYWxlRmFjdG9yICYmIG1pbmltdW1TY2FsZSA9PSBvdGhlci5t
aW5pbXVtU2NhbGUgJiYgbWF4aW11bVNjYWxlID09IG90aGVyLm1heGltdW1TY2FsZQotICAgICAg
ICAgICAgICAgICYmIGFsbG93c1VzZXJTY2FsaW5nID09IG90aGVyLmFsbG93c1VzZXJTY2FsaW5n
ICYmIGFsbG93c1Nocmlua1RvRml0ID09IG90aGVyLmFsbG93c1Nocmlua1RvRml0ICYmIGF2b2lk
c1Vuc2FmZUFyZWEgPT0gb3RoZXIuYXZvaWRzVW5zYWZlQXJlYQotICAgICAgICAgICAgICAgICYm
IHdpZHRoSXNTZXQgPT0gb3RoZXIud2lkdGhJc1NldCAmJiBoZWlnaHRJc1NldCA9PSBvdGhlci5o
ZWlnaHRJc1NldCAmJiBpbml0aWFsU2NhbGVJc1NldCA9PSBvdGhlci5pbml0aWFsU2NhbGVJc1Nl
dDsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFyYW1ldGVycyYp
IGNvbnN0ID0gZGVmYXVsdDsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVmlld3BvcnRD
b25maWd1cmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcAppbmRleCBlNDIwOWJjYTc3NDlkOWIwYzJmOTVhZmJkZDJhOWYyODM4
N2RkMzcxLi40ZWQ4Y2Q1ZGVmMGY0NDgxMWUwMDRlMjE1N2JhNDhkNGFhN2QwMzE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAg
LTgzOSw3ICs4MzksNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0
aW9uKGNvbnN0IFN0cmluZyYgZWZmZWN0aXZlVmlvbGF0ZWREaXJlYwogICAgICAgICBtX2NsaWVu
dC0+ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoV1RGTW92ZSh2aW9sYXRpb25F
dmVudEluaXQpKTsKICAgICBlbHNlIHsKICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgICAgIGlmIChlbGVt
ZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCkgPT0gZG9jdW1lbnQpCisgICAgICAgIGlmIChlbGVt
ZW50ICYmICZlbGVtZW50LT5kb2N1bWVudCgpID09ICZkb2N1bWVudCkKICAgICAgICAgICAgIGVs
ZW1lbnQtPmVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KFdURk1vdmUodmlvbGF0
aW9uRXZlbnRJbml0KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRvY3VtZW50LmVucXVl
dWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KFdURk1vdmUodmlvbGF0aW9uRXZlbnRJbml0
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFw
T2Zmc2V0c0luZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBP
ZmZzZXRzSW5mby5oCmluZGV4IDdhOTRiYTg0YjhhYWM1MzFhYzRhZDk0MzZhMmQ4MGJiZGIzMGE1
ZDguLjYyNWI3MjNmMDZlM2Q3NDczZTFmZTg0ZjNjMzFjNzQwNWVjMmI4Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5o
CkBAIC0zOSwxMiArMzksMTMgQEAgY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBSZW5kZXJC
b3g7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3Qg
U25hcE9mZnNldCB7Ci0gICAgVCBvZmZzZXQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBVbml0VHlwZT4g
c3RydWN0IFNuYXBPZmZzZXQgeworICAgIFVuaXRUeXBlIG9mZnNldDsKICAgICBTY3JvbGxTbmFw
U3RvcCBzdG9wOwogICAgIGJvb2wgaGFzU25hcEFyZWFMYXJnZXJUaGFuVmlld3BvcnQ7CiAgICAg
VmVjdG9yPHNpemVfdD4gc25hcEFyZWFJbmRpY2VzOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNuYXBPZmZzZXQmKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVW5pdFR5cGUsIHR5cGVuYW1lIFJlY3RUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmgKaW5kZXggZTM0OWI4MGEyMDUw
YmU0ZTNlZWY3MmFhZDJjOWE2N2YzNzYzNTY4Zi4uZTQzNzFjZDY4ZGVjYmExMDNmYWJlMzI0NGYz
NGQyNzFjYzk3YWE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29uc3RyYWludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb25zdHJhaW50cy5oCkBAIC0zNSwxMyArMzUsNyBAQCBjbGFzcyBBYnNvbHV0
ZVBvc2l0aW9uQ29uc3RyYWludHMgewogcHVibGljOgogICAgIEFic29sdXRlUG9zaXRpb25Db25z
dHJhaW50cygpID0gZGVmYXVsdDsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBYnNvbHV0
ZVBvc2l0aW9uQ29uc3RyYWludHMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFsaWdubWVudE9mZnNldCgpID09IG90aGVyLmFsaWdubWVudE9mZnNldCgpCi0gICAgICAgICAg
ICAmJiBsYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgPT0gb3RoZXIubGF5ZXJQb3NpdGlvbkF0
TGFzdExheW91dCgpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBYnNvbHV0
ZVBvc2l0aW9uQ29uc3RyYWludHMmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBYnNvbHV0ZVBvc2l0aW9uQ29uc3Ry
YWludHMmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgCiAgICAgRmxvYXRTaXplIGFsaWdubWVudE9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxpZ25tZW50T2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRB
bGlnbm1lbnRPZmZzZXQoRmxvYXRTaXplIG9mZnNldCkgeyBtX2FsaWdubWVudE9mZnNldCA9IG9m
ZnNldDsgfQpAQCAtODQsNiArNzgsOCBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXplIGFsaWdubWVu
dE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxpZ25tZW50T2Zmc2V0OyB9CiAgICAgdm9pZCBz
ZXRBbGlnbm1lbnRPZmZzZXQoRmxvYXRTaXplIG9mZnNldCkgeyBtX2FsaWdubWVudE9mZnNldCA9
IG9mZnNldDsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZpZXdwb3J0Q29uc3RyYWlu
dHMmKSBjb25zdCA9IGRlZmF1bHQ7CisKIHByb3RlY3RlZDoKICAgICBWaWV3cG9ydENvbnN0cmFp
bnRzKCkKICAgICAgICAgOiBtX2FuY2hvckVkZ2VzKDApCkBAIC0xMDcsMTUgKzEwMyw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBGbG9hdFBvaW50JiBsYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkg
Y29uc3QgeyByZXR1cm4gbV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0OyB9CiAgICAgdm9pZCBz
ZXRMYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KEZsb2F0UG9pbnQgcG9zaXRpb24pIHsgbV9sYXll
clBvc2l0aW9uQXRMYXN0TGF5b3V0ID0gcG9zaXRpb247IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9hbGlnbm1lbnRPZmZzZXQgPT0gb3RoZXIubV9hbGlnbm1l
bnRPZmZzZXQKLSAgICAgICAgICAgICYmIG1fYW5jaG9yRWRnZXMgPT0gb3RoZXIubV9hbmNob3JF
ZGdlcwotICAgICAgICAgICAgJiYgbV92aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQgPT0gb3RoZXIu
bV92aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQKLSAgICAgICAgICAgICYmIG1fbGF5ZXJQb3NpdGlv
bkF0TGFzdExheW91dCA9PSBvdGhlci5tX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQ7Ci0gICAg
fQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMmKSBj
b25zdCA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgQ29uc3RyYWludFR5cGUgY29uc3RyYWlu
dFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGaXhlZFBvc2l0aW9uQ29uc3RyYWludDsg
fTsKQEAgLTE4MCw4ICsxNjgsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAmJiBtX2xheWVyUG9z
aXRpb25BdExhc3RMYXlvdXQgPT0gb3RoZXIubV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0Owog
ICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdGlja3lQb3NpdGlvblZpZXdwb3J0
Q29uc3RyYWludHMmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQot
CiBwcml2YXRlOgogICAgIENvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gU3RpY2t5UG9zaXRpb25Db25zdHJhaW50OyB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5
cGVzLmgKaW5kZXggODUxOTA1YWFkNjRiMzJmZDY4N2FjMzIyNDJlOTBjZmUwNDVjYWM2MC4uYWJk
NDkwMmFiNWFkMmM3ZmQ0NDcxYzE3MjM4NTAxY2EyNjY2YTg3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMu
aApAQCAtODgsMjAgKzg4LDcgQEAgc3RydWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyB7CiAK
ICAgICBib29sIHVzZURhcmtBcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyB7IGZhbHNlIH07CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBvdGhlcikg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSA9
PSBvdGhlci5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eQotICAgICAgICAgICAgJiYgdmVydGlj
YWxTY3JvbGxFbGFzdGljaXR5ID09IG90aGVyLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eQotICAg
ICAgICAgICAgJiYgaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUgPT0gb3RoZXIuaG9yaXpvbnRhbFNj
cm9sbGJhck1vZGUKLSAgICAgICAgICAgICYmIHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSA9PSBvdGhl
ci52ZXJ0aWNhbFNjcm9sbGJhck1vZGUKLSAgICAgICAgICAgICYmIGhvcml6b250YWxPdmVyc2Ny
b2xsQmVoYXZpb3IgPT0gb3RoZXIuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcgotICAgICAg
ICAgICAgJiYgdmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIudmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IKLSAgICAgICAgICAgICYmIGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcg
PT0gb3RoZXIuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZwotICAgICAgICAgICAgJiYgYWxsb3dz
VmVydGljYWxTY3JvbGxpbmcgPT0gb3RoZXIuYWxsb3dzVmVydGljYWxTY3JvbGxpbmcKLSAgICAg
ICAgICAgICYmIGhvcml6b250YWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlID09IG90aGVyLmhvcml6
b250YWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlCi0gICAgICAgICAgICAmJiB2ZXJ0aWNhbFNjcm9s
bGJhckhpZGRlbkJ5U3R5bGUgPT0gb3RoZXIudmVydGljYWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxl
Ci0gICAgICAgICAgICAmJiB1c2VEYXJrQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMgPT0gb3RoZXIu
dXNlRGFya0FwcGVhcmFuY2VGb3JTY3JvbGxiYXJzOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJikgY29uc3QgPSBkZWZhdWx0OwogfTsK
IAogZW51bSBjbGFzcyBWaWV3cG9ydFJlY3RTdGFiaWxpdHkgewpAQCAtMTIyLDE0ICsxMDksNyBA
QCBzdHJ1Y3QgUmVxdWVzdGVkU2Nyb2xsRGF0YSB7CiAgICAgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBp
bmcgeyBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCB9OwogICAgIFNjcm9sbElzQW5pbWF0ZWQgYW5p
bWF0ZWQgeyBTY3JvbGxJc0FuaW1hdGVkOjpObyB9OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJlcXVlc3RlZFNjcm9sbERhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIHJlcXVlc3RUeXBlID09IG90aGVyLnJlcXVlc3RUeXBlCi0gICAgICAgICAgICAmJiBzY3Jv
bGxQb3NpdGlvbiA9PSBvdGhlci5zY3JvbGxQb3NpdGlvbgotICAgICAgICAgICAgJiYgc2Nyb2xs
VHlwZSA9PSBvdGhlci5zY3JvbGxUeXBlCi0gICAgICAgICAgICAmJiBjbGFtcGluZyA9PSBvdGhl
ci5jbGFtcGluZwotICAgICAgICAgICAgJiYgYW5pbWF0ZWQgPT0gb3RoZXIuYW5pbWF0ZWQ7Ci0g
ICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXF1ZXN0ZWRTY3JvbGxEYXRhJikgY29u
c3QgPSBkZWZhdWx0OwogfTsKIAogZW51bSBjbGFzcyBTY3JvbGxVcGRhdGVUeXBlIDogdWludDhf
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCmluZGV4IDllYzAxNzJhMjFhOThkYzgw
N2E0YzE2Nzc1N2U3MzVhYmUyMzU4NDguLjgxMTVlMjA4M2E1MTY4MTc4NTY0YjY3MmJhYTE4MjE1
NjljZDk4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCkBAIC0yNzAsMTQgKzI3
MCw2IEBAIERlY2ltYWw6OkVuY29kZWREYXRhOjpFbmNvZGVkRGF0YShTaWduIHNpZ24sIGludCBl
eHBvbmVudCwgdWludDY0X3QgY29lZmZpY2llbnQpCiAgICAgbV9leHBvbmVudCA9IHN0YXRpY19j
YXN0PGludDE2X3Q+KGV4cG9uZW50KTsKIH0KIAotYm9vbCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6
b3BlcmF0b3I9PShjb25zdCBFbmNvZGVkRGF0YSYgYW5vdGhlcikgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9zaWduID09IGFub3RoZXIubV9zaWduCi0gICAgICAgICYmIG1fZm9ybWF0Q2xhc3MgPT0g
YW5vdGhlci5tX2Zvcm1hdENsYXNzCi0gICAgICAgICYmIG1fZXhwb25lbnQgPT0gYW5vdGhlci5t
X2V4cG9uZW50Ci0gICAgICAgICYmIG1fY29lZmZpY2llbnQgPT0gYW5vdGhlci5tX2NvZWZmaWNp
ZW50OwotfQotCiBEZWNpbWFsOjpEZWNpbWFsKGludDMyX3QgaTMyKQogICAgIDogbV9kYXRhKGkz
MiA8IDAgPyBOZWdhdGl2ZSA6IFBvc2l0aXZlLCAwLCBpMzIgPCAwID8gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KC1zdGF0aWNfY2FzdDxpbnQ2NF90PihpMzIpKSA6IHN0YXRpY19jYXN0PHVpbnQ2NF90
PihpMzIpKQogewpAQCAtNTE0LDUwICs1MDYsMTYgQEAgYm9vbCBEZWNpbWFsOjpvcGVyYXRvcj09
KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKICAgICByZXR1cm4gbV9kYXRhID09IHJocy5tX2Rh
dGEgfHwgY29tcGFyZVRvKHJocykuaXNaZXJvKCk7CiB9CiAKLWJvb2wgRGVjaW1hbDo6b3BlcmF0
b3IhPShjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZGF0YSA9PSByaHMu
bV9kYXRhKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY29uc3QgRGVjaW1hbCByZXN1bHQg
PSBjb21wYXJlVG8ocmhzKTsKLSAgICBpZiAocmVzdWx0LmlzTmFOKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gIXJlc3VsdC5pc1plcm8oKTsKLX0KLQotYm9vbCBEZWNpbWFs
OjpvcGVyYXRvcjwoY29uc3QgRGVjaW1hbCYgcmhzKSBjb25zdAotewotICAgIGNvbnN0IERlY2lt
YWwgcmVzdWx0ID0gY29tcGFyZVRvKHJocyk7Ci0gICAgaWYgKHJlc3VsdC5pc05hTigpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFyZXN1bHQuaXNaZXJvKCkgJiYgcmVzdWx0
LmlzTmVnYXRpdmUoKTsKLX0KLQotYm9vbCBEZWNpbWFsOjpvcGVyYXRvcjw9KGNvbnN0IERlY2lt
YWwmIHJocykgY29uc3QKLXsKLSAgICBpZiAobV9kYXRhID09IHJocy5tX2RhdGEpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gY29tcGFyZVRvKHJocyk7
Ci0gICAgaWYgKHJlc3VsdC5pc05hTigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIHJlc3VsdC5pc1plcm8oKSB8fCByZXN1bHQuaXNOZWdhdGl2ZSgpOwotfQotCi1ib29sIERl
Y2ltYWw6Om9wZXJhdG9yPihjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Ci17Ci0gICAgY29uc3Qg
RGVjaW1hbCByZXN1bHQgPSBjb21wYXJlVG8ocmhzKTsKLSAgICBpZiAocmVzdWx0LmlzTmFOKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gIXJlc3VsdC5pc1plcm8oKSAmJiBy
ZXN1bHQuaXNQb3NpdGl2ZSgpOwotfQotCi1ib29sIERlY2ltYWw6Om9wZXJhdG9yPj0oY29uc3Qg
RGVjaW1hbCYgcmhzKSBjb25zdAorc3RkOjpwYXJ0aWFsX29yZGVyaW5nIG9wZXJhdG9yPD0+KGNv
bnN0IERlY2ltYWwmIGEsIGNvbnN0IERlY2ltYWwmIGIpCiB7Ci0gICAgaWYgKG1fZGF0YSA9PSBy
aHMubV9kYXRhKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjb25zdCBEZWNpbWFsIHJlc3Vs
dCA9IGNvbXBhcmVUbyhyaHMpOworICAgIGF1dG8gcmVzdWx0ID0gYS5jb21wYXJlVG8oYik7CiAg
ICAgaWYgKHJlc3VsdC5pc05hTigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IHJlc3VsdC5pc1plcm8oKSB8fCAhcmVzdWx0LmlzTmVnYXRpdmUoKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6dW5vcmRlcmVkOworICAgIGlmIChyZXN1bHQuaXNaZXJv
KCkpCisgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxlbnQ7Cisg
ICAgaWYgKHJlc3VsdC5pc05lZ2F0aXZlKCkpCisgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxf
b3JkZXJpbmc6Omxlc3M7CisgICAgcmV0dXJuIHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6Z3JlYXRl
cjsKIH0KIAogRGVjaW1hbCBEZWNpbWFsOjphYnMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVj
aW1hbC5oCmluZGV4IDU5Y2RiMThkODIxYzZiYzYxYWI5OGJlNThlYTg3YTUwZGYwYjUzMTkuLjcx
OTJkYWU1ZGVhODY1YjRjZjQ5MWVjNGUxOTliNDFmYWU3Zjk2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EZWNpbWFsLmgKQEAgLTYyLDggKzYyLDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAg
ICAgRW5jb2RlZERhdGEoU2lnbiwgaW50IGV4cG9uZW50LCB1aW50NjRfdCBjb2VmZmljaWVudCk7
CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVuY29kZWREYXRhJikgY29uc3Q7Ci0g
ICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbmNvZGVkRGF0YSYgYW5vdGhlcikgY29uc3Qg
eyByZXR1cm4gIW9wZXJhdG9yPT0oYW5vdGhlcik7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEVuY29kZWREYXRhJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIHVpbnQ2NF90
IGNvZWZmaWNpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb2VmZmljaWVudDsgfQogICAgICAgICBp
bnQgY291bnREaWdpdHMoKSBjb25zdDsKQEAgLTEwNiwxMSArMTA1LDcgQEAgcHVibGljOgogICAg
IERlY2ltYWwgb3BlcmF0b3ItKCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RGVjaW1hbCYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEZWNpbWFsJikgY29u
c3Q7Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgRGVjaW1hbCYpIGNvbnN0OwotICAgIGJvb2wg
b3BlcmF0b3I8PShjb25zdCBEZWNpbWFsJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj4oY29u
c3QgRGVjaW1hbCYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBEZWNpbWFsJikg
Y29uc3Q7CisgICAgZnJpZW5kIHN0ZDo6cGFydGlhbF9vcmRlcmluZyBvcGVyYXRvcjw9Pihjb25z
dCBEZWNpbWFsJiwgY29uc3QgRGVjaW1hbCYpOwogCiAgICAgRGVjaW1hbCBvcGVyYXRvcisoY29u
c3QgRGVjaW1hbCYpIGNvbnN0OwogICAgIERlY2ltYWwgb3BlcmF0b3ItKGNvbnN0IERlY2ltYWwm
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0V2ZW50VHJhY2tp
bmdSZWdpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9FdmVudFRyYWNraW5nUmVnaW9u
cy5oCmluZGV4IDNkNThiYTU1ZWZkNjNlZDliYWU0MDUwMWUzMDliODYxZmM5ZTljMDUuLmQ2ZjVi
YjE4YzdjODBkOGMwY2Y3M2E4MzcwMGVkOWQ2NmI1ZmRjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0V2ZW50VHJhY2tpbmdSZWdpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRXZlbnRUcmFja2luZ1JlZ2lvbnMuaApAQCAtNTYsNiArNTYsNSBAQCBzdHJ1
Y3QgRXZlbnRUcmFja2luZ1JlZ2lvbnMgewogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2
ZW50VHJhY2tpbmdSZWdpb25zJiwgY29uc3QgRXZlbnRUcmFja2luZ1JlZ2lvbnMmKTsKLWlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRXZlbnRUcmFja2luZ1JlZ2lvbnMmIGEsIGNvbnN0IEV2
ZW50VHJhY2tpbmdSZWdpb25zJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0
VW5pdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmNwcAppbmRleCAy
YWM1NjBjODVkZjVjYWU3NTg1YzkzMmQzMjNmZjFlOTNiYTMzZTc2Li5hZmM4MWYzNDk0N2VmZDRl
NGU4ZTQ3ODliZDM5ZjcwNDIwODI4NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MYXlvdXRVbml0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRV
bml0LmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IExheW91dFVuaXQmIHYpCitU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBMYXlvdXRVbml0IHYpCiB7CiAg
ICAgcmV0dXJuIHRzIDw8IFRleHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2Vy
cyh2LnRvRmxvYXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
YXlvdXRVbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmgKaW5kZXgg
MGM1MjQwYzQ5MTMyYzZiZTZlNjQ3YmUxOGViMmJjYjRiZDM2NDkwYi4uYWUwZmJhZjQ1NGM2ZmVl
YzZkODE4MDU1YjQ2NzZiOWMzNGE3YzI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGF5b3V0VW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFVu
aXQuaApAQCAtNTgsMTQgKzU4LDEzIEBAIHdoaWxlICgwKQogCiAjZW5kaWYKIAotc3RhdGljIGNv
bnN0IGludCBrRml4ZWRQb2ludERlbm9taW5hdG9yID0gNjQ7Ci1jb25zdCBpbnQgaW50TWF4Rm9y
TGF5b3V0VW5pdCA9IElOVF9NQVggLyBrRml4ZWRQb2ludERlbm9taW5hdG9yOwotY29uc3QgaW50
IGludE1pbkZvckxheW91dFVuaXQgPSBJTlRfTUlOIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsK
K2NvbnN0ZXhwciBpbnQga0ZpeGVkUG9pbnREZW5vbWluYXRvciA9IDY0OworY29uc3RleHByIGlu
dCBpbnRNYXhGb3JMYXlvdXRVbml0ID0gSU5UX01BWCAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7
Citjb25zdGV4cHIgaW50IGludE1pbkZvckxheW91dFVuaXQgPSBJTlRfTUlOIC8ga0ZpeGVkUG9p
bnREZW5vbWluYXRvcjsKIAogY2xhc3MgTGF5b3V0VW5pdCB7CiBwdWJsaWM6CiAgICAgTGF5b3V0
VW5pdCgpIDogbV92YWx1ZSgwKSB7IH0KLSAgICBMYXlvdXRVbml0KGNvbnN0IExheW91dFVuaXQm
KSA9IGRlZmF1bHQ7CiAgICAgTGF5b3V0VW5pdChpbnQgdmFsdWUpIHsgc2V0VmFsdWUodmFsdWUp
OyB9CiAgICAgTGF5b3V0VW5pdCh1bnNpZ25lZCBzaG9ydCB2YWx1ZSkgeyBzZXRWYWx1ZSh2YWx1
ZSk7IH0KICAgICBMYXlvdXRVbml0KHVuc2lnbmVkIHZhbHVlKSB7IHNldFZhbHVlKHZhbHVlKTsg
fQpAQCAtODYsOCArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmFsdWUgPSBjbGFtcFRvSW50
ZWdlcih2YWx1ZSAqIGtGaXhlZFBvaW50RGVub21pbmF0b3IpOwogICAgIH0KIAotICAgIExheW91
dFVuaXQmIG9wZXJhdG9yPShjb25zdCBMYXlvdXRVbml0JikgPSBkZWZhdWx0OwotICAgIExheW91
dFVuaXQmIG9wZXJhdG9yPShjb25zdCBmbG9hdCYgb3RoZXIpIHsgcmV0dXJuICp0aGlzID0gTGF5
b3V0VW5pdChvdGhlcik7IH0KKyAgICBMYXlvdXRVbml0JiBvcGVyYXRvcj0oZmxvYXQgb3RoZXIp
IHsgcmV0dXJuICp0aGlzID0gTGF5b3V0VW5pdChvdGhlcik7IH0KIAogICAgIHN0YXRpYyBMYXlv
dXRVbml0IGZyb21GbG9hdENlaWwoZmxvYXQgdmFsdWUpCiAgICAgewpAQCAtMjI0LDYgKzIyMiw4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNsYW1wVG88TGF5b3V0VW5pdD4odmFsdWUsIExh
eW91dFVuaXQ6Om1pbigpLCBMYXlvdXRVbml0OjptYXgoKSk7CiAgICAgfQogCisgICAgZnJpZW5k
IGF1dG8gb3BlcmF0b3I8PT4oTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCkgPSBkZWZhdWx0OworCiBw
cml2YXRlOgogICAgIHN0YXRpYyBib29sIGlzSW5Cb3VuZHMoaW50IHZhbHVlKQogICAgIHsKQEAg
LTI1OCwxNjggKzI1OCwxMTMgQEAgcHJpdmF0ZToKICAgICBpbnQgbV92YWx1ZTsKIH07CiAKLWlu
bGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5p
dCYgYikKLXsKLSAgICByZXR1cm4gYS5yYXdWYWx1ZSgpIDw9IGIucmF3VmFsdWUoKTsKLX0KLQot
aW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBMYXlvdXRVbml0JiBhLCBmbG9hdCBiKQoraW5s
aW5lIGJvb2wgb3BlcmF0b3I8PShMYXlvdXRVbml0IGEsIGZsb2F0IGIpCiB7CiAgICAgcmV0dXJu
IGEudG9GbG9hdCgpIDw9IGI7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgTGF5
b3V0VW5pdCYgYSwgaW50IGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KExheW91dFVuaXQgYSwg
aW50IGIpCiB7CiAgICAgcmV0dXJuIGEgPD0gTGF5b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIGJv
b2wgb3BlcmF0b3I8PShjb25zdCBmbG9hdCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5l
IGJvb2wgb3BlcmF0b3I8PShmbG9hdCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIGEg
PD0gYi50b0Zsb2F0KCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgaW50IGEs
IGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGludCBhLCBMYXlv
dXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIExheW91dFVuaXQoYSkgPD0gYjsKIH0KIAotaW5saW5l
IGJvb2wgb3BlcmF0b3I+PShjb25zdCBMYXlvdXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBi
KQotewotICAgIHJldHVybiBhLnJhd1ZhbHVlKCkgPj0gYi5yYXdWYWx1ZSgpOwotfQotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IExheW91dFVuaXQmIGEsIGludCBiKQoraW5saW5lIGJv
b2wgb3BlcmF0b3I+PShMYXlvdXRVbml0IGEsIGludCBiKQogewogICAgIHJldHVybiBhID49IExh
eW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgZmxvYXQgYSwg
Y29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBib29sIG9wZXJhdG9yPj0oZmxvYXQgYSwgTGF5
b3V0VW5pdCBiKQogewogICAgIHJldHVybiBhID49IGIudG9GbG9hdCgpOwogfQogCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvcj49KGNvbnN0IExheW91dFVuaXQmIGEsIGZsb2F0IGIpCitpbmxpbmUgYm9v
bCBvcGVyYXRvcj49KExheW91dFVuaXQgYSwgZmxvYXQgYikKIHsKICAgICByZXR1cm4gYS50b0Zs
b2F0KCkgPj0gYjsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBpbnQgYSwgY29u
c3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBib29sIG9wZXJhdG9yPj0oaW50IGEsIExheW91dFVu
aXQgYikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChhKSA+PSBiOwogfQogCi1pbmxpbmUgYm9v
bCBvcGVyYXRvcjwoY29uc3QgTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKLXsK
LSAgICByZXR1cm4gYS5yYXdWYWx1ZSgpIDwgYi5yYXdWYWx1ZSgpOwotfQotCi1pbmxpbmUgYm9v
bCBvcGVyYXRvcjwoY29uc3QgTGF5b3V0VW5pdCYgYSwgaW50IGIpCitpbmxpbmUgYm9vbCBvcGVy
YXRvcjwoTGF5b3V0VW5pdCBhLCBpbnQgYikKIHsKICAgICByZXR1cm4gYSA8IExheW91dFVuaXQo
Yik7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBMYXlvdXRVbml0JiBhLCBmbG9h
dCBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I8KExheW91dFVuaXQgYSwgZmxvYXQgYikKIHsKICAg
ICByZXR1cm4gYS50b0Zsb2F0KCkgPCBiOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29u
c3QgTGF5b3V0VW5pdCYgYSwgZG91YmxlIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwoTGF5b3V0
VW5pdCBhLCBkb3VibGUgYikKIHsKICAgICByZXR1cm4gYS50b0RvdWJsZSgpIDwgYjsKIH0KIAot
aW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IGludCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQor
aW5saW5lIGJvb2wgb3BlcmF0b3I8KGludCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJu
IExheW91dFVuaXQoYSkgPCBiOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgZmxv
YXQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBib29sIG9wZXJhdG9yPChmbG9hdCBh
LCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIGEgPCBiLnRvRmxvYXQoKTsKIH0KIAotaW5s
aW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IExheW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQm
IGIpCi17Ci0gICAgcmV0dXJuIGEucmF3VmFsdWUoKSA+IGIucmF3VmFsdWUoKTsKLX0KLQotaW5s
aW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IExheW91dFVuaXQmIGEsIGRvdWJsZSBiKQoraW5saW5l
IGJvb2wgb3BlcmF0b3I+KExheW91dFVuaXQgYSwgZG91YmxlIGIpCiB7CiAgICAgcmV0dXJuIGEu
dG9Eb3VibGUoKSA+IGI7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBMYXlvdXRV
bml0JiBhLCBmbG9hdCBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I+KExheW91dFVuaXQgYSwgZmxv
YXQgYikKIHsKICAgICByZXR1cm4gYS50b0Zsb2F0KCkgPiBiOwogfQogCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj4oY29uc3QgTGF5b3V0VW5pdCYgYSwgaW50IGIpCitpbmxpbmUgYm9vbCBvcGVyYXRv
cj4oTGF5b3V0VW5pdCBhLCBpbnQgYikKIHsKICAgICByZXR1cm4gYSA+IExheW91dFVuaXQoYik7
CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBpbnQgYSwgY29uc3QgTGF5b3V0VW5p
dCYgYikKK2lubGluZSBib29sIG9wZXJhdG9yPihpbnQgYSwgTGF5b3V0VW5pdCBiKQogewogICAg
IHJldHVybiBMYXlvdXRVbml0KGEpID4gYjsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNv
bnN0IGZsb2F0IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj4o
ZmxvYXQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBhID4gYi50b0Zsb2F0KCk7CiB9
CiAKLWlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBkb3VibGUgYSwgY29uc3QgTGF5b3V0VW5p
dCYgYikKK2lubGluZSBib29sIG9wZXJhdG9yPihkb3VibGUgYSwgTGF5b3V0VW5pdCBiKQogewog
ICAgIHJldHVybiBhID4gYi50b0RvdWJsZSgpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IExheW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCi17Ci0gICAgcmV0dXJu
IGEucmF3VmFsdWUoKSAhPSBiLnJhd1ZhbHVlKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgTGF5b3V0VW5pdCYgYSwgZmxvYXQgYikKLXsKLSAgICByZXR1cm4gYSAhPSBMYXlv
dXRVbml0KGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGludCBhLCBjb25z
dCBMYXlvdXRVbml0JiBiKQotewotICAgIHJldHVybiBMYXlvdXRVbml0KGEpICE9IGI7Ci19Ci0K
LWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF5b3V0VW5pdCYgYSwgaW50IGIpCi17Ci0g
ICAgcmV0dXJuIGEgIT0gTGF5b3V0VW5pdChiKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBMYXlvdXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQotewotICAgIHJldHVy
biBhLnJhd1ZhbHVlKCkgPT0gYi5yYXdWYWx1ZSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IExheW91dFVuaXQmIGEsIGludCBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShM
YXlvdXRVbml0IGEsIGludCBiKQogewogICAgIHJldHVybiBhID09IExheW91dFVuaXQoYik7CiB9
CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgaW50IGEsIGNvbnN0IExheW91dFVuaXQm
IGIpCi17Ci0gICAgcmV0dXJuIExheW91dFVuaXQoYSkgPT0gYjsKLX0KLQotaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBMYXlvdXRVbml0JiBhLCBmbG9hdCBiKQoraW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShMYXlvdXRVbml0IGEsIGZsb2F0IGIpCiB7CiAgICAgcmV0dXJuIGEudG9GbG9hdCgp
ID09IGI7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgZmxvYXQgYSwgY29uc3Qg
TGF5b3V0VW5pdCYgYikKLXsKLSAgICByZXR1cm4gYSA9PSBiLnRvRmxvYXQoKTsKLX0KLQogLy8g
Rm9yIG11bHRpcGxpY2F0aW9uIHRoYXQncyBwcm9uZSB0byBvdmVyZmxvdywgdGhpcyBib3VuZHMg
aXQgdG8gTGF5b3V0VW5pdDo6bWF4KCkgYW5kIDo6bWluKCkKLWlubGluZSBMYXlvdXRVbml0IGJv
dW5kZWRNdWx0aXBseShjb25zdCBMYXlvdXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQor
aW5saW5lIExheW91dFVuaXQgYm91bmRlZE11bHRpcGx5KExheW91dFVuaXQgYSwgTGF5b3V0VW5p
dCBiKQogewogICAgIGludDY0X3QgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oYS5yYXdW
YWx1ZSgpKSAqIHN0YXRpY19jYXN0PGludDY0X3Q+KGIucmF3VmFsdWUoKSkgLyBrRml4ZWRQb2lu
dERlbm9taW5hdG9yOwogICAgIGludDMyX3QgaGlnaCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHJl
c3VsdCA+PiAzMik7CkBAIC00MzQsODIgKzM3OSw4MiBAQCBpbmxpbmUgTGF5b3V0VW5pdCBib3Vu
ZGVkTXVsdGlwbHkoY29uc3QgTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKICAg
ICByZXR1cm4gcmV0dXJuVmFsOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciooY29u
c3QgTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0
IG9wZXJhdG9yKihMYXlvdXRVbml0IGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gYm91
bmRlZE11bHRpcGx5KGEsIGIpOwogfQogCi1pbmxpbmUgZG91YmxlIG9wZXJhdG9yKihjb25zdCBM
YXlvdXRVbml0JiBhLCBkb3VibGUgYikKK2lubGluZSBkb3VibGUgb3BlcmF0b3IqKExheW91dFVu
aXQgYSwgZG91YmxlIGIpCiB7CiAgICAgcmV0dXJuIGEudG9Eb3VibGUoKSAqIGI7CiB9CiAKLWlu
bGluZSBmbG9hdCBvcGVyYXRvciooY29uc3QgTGF5b3V0VW5pdCYgYSwgZmxvYXQgYikKK2lubGlu
ZSBmbG9hdCBvcGVyYXRvciooTGF5b3V0VW5pdCBhLCBmbG9hdCBiKQogewogICAgIHJldHVybiBh
LnRvRmxvYXQoKSAqIGI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKihjb25zdCBM
YXlvdXRVbml0JiBhLCBpbnQgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKihMYXlvdXRV
bml0IGEsIGludCBiKQogewogICAgIHJldHVybiBhICogTGF5b3V0VW5pdChiKTsKIH0KIAotaW5s
aW5lIExheW91dFVuaXQgb3BlcmF0b3IqKGNvbnN0IExheW91dFVuaXQmIGEsIHVuc2lnbmVkIHNo
b3J0IGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciooTGF5b3V0VW5pdCBhLCB1bnNpZ25l
ZCBzaG9ydCBiKQogewogICAgIHJldHVybiBhICogTGF5b3V0VW5pdChiKTsKIH0KIAotaW5saW5l
IExheW91dFVuaXQgb3BlcmF0b3IqKGNvbnN0IExheW91dFVuaXQmIGEsIHVuc2lnbmVkIGIpCitp
bmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciooTGF5b3V0VW5pdCBhLCB1bnNpZ25lZCBiKQogewog
ICAgIHJldHVybiBhICogTGF5b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3Bl
cmF0b3IqKGNvbnN0IExheW91dFVuaXQmIGEsIHVuc2lnbmVkIGxvbmcgYikKK2lubGluZSBMYXlv
dXRVbml0IG9wZXJhdG9yKihMYXlvdXRVbml0IGEsIHVuc2lnbmVkIGxvbmcgYikKIHsKICAgICBy
ZXR1cm4gYSAqIExheW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9y
Kihjb25zdCBMYXlvdXRVbml0JiBhLCB1bnNpZ25lZCBsb25nIGxvbmcgYikKK2lubGluZSBMYXlv
dXRVbml0IG9wZXJhdG9yKihMYXlvdXRVbml0IGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBiKQogewog
ICAgIHJldHVybiBhICogTGF5b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3Bl
cmF0b3IqKHVuc2lnbmVkIHNob3J0IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5
b3V0VW5pdCBvcGVyYXRvcioodW5zaWduZWQgc2hvcnQgYSwgTGF5b3V0VW5pdCBiKQogewogICAg
IHJldHVybiBMYXlvdXRVbml0KGEpICogYjsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0
b3IqKHVuc2lnbmVkIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvcioodW5zaWduZWQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBMYXlvdXRV
bml0KGEpICogYjsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IqKHVuc2lnbmVkIGxv
bmcgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKih1
bnNpZ25lZCBsb25nIGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChh
KSAqIGI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKih1bnNpZ25lZCBsb25nIGxv
bmcgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKih1
bnNpZ25lZCBsb25nIGxvbmcgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBMYXlvdXRV
bml0KGEpICogYjsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IqKGNvbnN0IGludCBh
LCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IqKGludCBh
LCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIExheW91dFVuaXQoYSkgKiBiOwogfQogCi1p
bmxpbmUgZmxvYXQgb3BlcmF0b3IqKGNvbnN0IGZsb2F0IGEsIGNvbnN0IExheW91dFVuaXQmIGIp
CitpbmxpbmUgZmxvYXQgb3BlcmF0b3IqKGZsb2F0IGEsIExheW91dFVuaXQgYikKIHsKICAgICBy
ZXR1cm4gYSAqIGIudG9GbG9hdCgpOwogfQogCi1pbmxpbmUgZG91YmxlIG9wZXJhdG9yKihjb25z
dCBkb3VibGUgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBkb3VibGUgb3BlcmF0b3Iq
KGRvdWJsZSBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIGEgKiBiLnRvRG91YmxlKCk7
CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLyhjb25zdCBMYXlvdXRVbml0JiBhLCBj
b25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKExheW91dFVu
aXQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIExheW91dFVuaXQgcmV0dXJuVmFsOwogICAgIGxv
bmcgbG9uZyByYXdWYWwgPSBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGtGaXhlZFBvaW50RGVub21p
bmF0b3IpICogYS5yYXdWYWx1ZSgpIC8gYi5yYXdWYWx1ZSgpOwpAQCAtNTE3LDE0NiArNDYyLDE0
NiBAQCBpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8oY29uc3QgTGF5b3V0VW5pdCYgYSwgY29u
c3QgTGF5b3V0VW5pdCYgYikKICAgICByZXR1cm4gcmV0dXJuVmFsOwogfQogCi1pbmxpbmUgZmxv
YXQgb3BlcmF0b3IvKGNvbnN0IExheW91dFVuaXQmIGEsIGZsb2F0IGIpCitpbmxpbmUgZmxvYXQg
b3BlcmF0b3IvKExheW91dFVuaXQgYSwgZmxvYXQgYikKIHsKICAgICByZXR1cm4gYS50b0Zsb2F0
KCkgLyBiOwogfQogCi1pbmxpbmUgZG91YmxlIG9wZXJhdG9yLyhjb25zdCBMYXlvdXRVbml0JiBh
LCBkb3VibGUgYikKK2lubGluZSBkb3VibGUgb3BlcmF0b3IvKExheW91dFVuaXQgYSwgZG91Ymxl
IGIpCiB7CiAgICAgcmV0dXJuIGEudG9Eb3VibGUoKSAvIGI7CiB9CiAKLWlubGluZSBMYXlvdXRV
bml0IG9wZXJhdG9yLyhjb25zdCBMYXlvdXRVbml0JiBhLCBpbnQgYikKK2lubGluZSBMYXlvdXRV
bml0IG9wZXJhdG9yLyhMYXlvdXRVbml0IGEsIGludCBiKQogewogICAgIHJldHVybiBhIC8gTGF5
b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKGNvbnN0IExheW91
dFVuaXQmIGEsIHVuc2lnbmVkIHNob3J0IGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8o
TGF5b3V0VW5pdCBhLCB1bnNpZ25lZCBzaG9ydCBiKQogewogICAgIHJldHVybiBhIC8gTGF5b3V0
VW5pdChiKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKGNvbnN0IExheW91dFVu
aXQmIGEsIHVuc2lnbmVkIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8oTGF5b3V0VW5p
dCBhLCB1bnNpZ25lZCBiKQogewogICAgIHJldHVybiBhIC8gTGF5b3V0VW5pdChiKTsKIH0KIAot
aW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKGNvbnN0IExheW91dFVuaXQmIGEsIHVuc2lnbmVk
IGxvbmcgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLyhMYXlvdXRVbml0IGEsIHVuc2ln
bmVkIGxvbmcgYikKIHsKICAgICByZXR1cm4gYSAvIExheW91dFVuaXQoYik7CiB9CiAKLWlubGlu
ZSBMYXlvdXRVbml0IG9wZXJhdG9yLyhjb25zdCBMYXlvdXRVbml0JiBhLCB1bnNpZ25lZCBsb25n
IGxvbmcgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLyhMYXlvdXRVbml0IGEsIHVuc2ln
bmVkIGxvbmcgbG9uZyBiKQogewogICAgIHJldHVybiBhIC8gTGF5b3V0VW5pdChiKTsKIH0KIAot
aW5saW5lIGZsb2F0IG9wZXJhdG9yLyhjb25zdCBmbG9hdCBhLCBjb25zdCBMYXlvdXRVbml0JiBi
KQoraW5saW5lIGZsb2F0IG9wZXJhdG9yLyhmbG9hdCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAg
cmV0dXJuIGEgLyBiLnRvRmxvYXQoKTsKIH0KIAotaW5saW5lIGRvdWJsZSBvcGVyYXRvci8oY29u
c3QgZG91YmxlIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgZG91YmxlIG9wZXJhdG9y
Lyhkb3VibGUgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBhIC8gYi50b0RvdWJsZSgp
OwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8oY29uc3QgaW50IGEsIGNvbnN0IExh
eW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8oaW50IGEsIExheW91dFVu
aXQgYikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChhKSAvIGI7CiB9CiAKLWlubGluZSBMYXlv
dXRVbml0IG9wZXJhdG9yLyh1bnNpZ25lZCBzaG9ydCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQor
aW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKHVuc2lnbmVkIHNob3J0IGEsIExheW91dFVuaXQg
YikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChhKSAvIGI7CiB9CiAKLWlubGluZSBMYXlvdXRV
bml0IG9wZXJhdG9yLyh1bnNpZ25lZCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExh
eW91dFVuaXQgb3BlcmF0b3IvKHVuc2lnbmVkIGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1
cm4gTGF5b3V0VW5pdChhKSAvIGI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLyh1
bnNpZ25lZCBsb25nIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvci8odW5zaWduZWQgbG9uZyBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIExh
eW91dFVuaXQoYSkgLyBiOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8odW5zaWdu
ZWQgbG9uZyBsb25nIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvci8odW5zaWduZWQgbG9uZyBsb25nIGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1
cm4gTGF5b3V0VW5pdChhKSAvIGI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKyhj
b25zdCBMYXlvdXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVu
aXQgb3BlcmF0b3IrKExheW91dFVuaXQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIExheW91dFVu
aXQgcmV0dXJuVmFsOwogICAgIHJldHVyblZhbC5zZXRSYXdWYWx1ZShzYXR1cmF0ZWRTdW08aW50
PihhLnJhd1ZhbHVlKCksIGIucmF3VmFsdWUoKSkpOwogICAgIHJldHVybiByZXR1cm5WYWw7CiB9
CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKyhjb25zdCBMYXlvdXRVbml0JiBhLCBpbnQg
YikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKyhMYXlvdXRVbml0IGEsIGludCBiKQogewog
ICAgIHJldHVybiBhICsgTGF5b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIGZsb2F0IG9wZXJhdG9y
Kyhjb25zdCBMYXlvdXRVbml0JiBhLCBmbG9hdCBiKQoraW5saW5lIGZsb2F0IG9wZXJhdG9yKyhM
YXlvdXRVbml0IGEsIGZsb2F0IGIpCiB7CiAgICAgcmV0dXJuIGEudG9GbG9hdCgpICsgYjsKIH0K
IAotaW5saW5lIGRvdWJsZSBvcGVyYXRvcisoY29uc3QgTGF5b3V0VW5pdCYgYSwgZG91YmxlIGIp
CitpbmxpbmUgZG91YmxlIG9wZXJhdG9yKyhMYXlvdXRVbml0IGEsIGRvdWJsZSBiKQogewogICAg
IHJldHVybiBhLnRvRG91YmxlKCkgKyBiOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRv
cisoY29uc3QgaW50IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvcisoaW50IGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChh
KSArIGI7CiB9CiAKLWlubGluZSBmbG9hdCBvcGVyYXRvcisoY29uc3QgZmxvYXQgYSwgY29uc3Qg
TGF5b3V0VW5pdCYgYikKK2lubGluZSBmbG9hdCBvcGVyYXRvcisoZmxvYXQgYSwgTGF5b3V0VW5p
dCBiKQogewogICAgIHJldHVybiBhICsgYi50b0Zsb2F0KCk7CiB9CiAKLWlubGluZSBkb3VibGUg
b3BlcmF0b3IrKGNvbnN0IGRvdWJsZSBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIGRv
dWJsZSBvcGVyYXRvcisoZG91YmxlIGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gYSAr
IGIudG9Eb3VibGUoKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3ItKGNvbnN0IExh
eW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVy
YXRvci0oTGF5b3V0VW5pdCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgTGF5b3V0VW5pdCByZXR1
cm5WYWw7CiAgICAgcmV0dXJuVmFsLnNldFJhd1ZhbHVlKHNhdHVyYXRlZERpZmZlcmVuY2U8aW50
PihhLnJhd1ZhbHVlKCksIGIucmF3VmFsdWUoKSkpOwogICAgIHJldHVybiByZXR1cm5WYWw7CiB9
CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLShjb25zdCBMYXlvdXRVbml0JiBhLCBpbnQg
YikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLShMYXlvdXRVbml0IGEsIGludCBiKQogewog
ICAgIHJldHVybiBhIC0gTGF5b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3Bl
cmF0b3ItKGNvbnN0IExheW91dFVuaXQmIGEsIHVuc2lnbmVkIGIpCitpbmxpbmUgTGF5b3V0VW5p
dCBvcGVyYXRvci0oTGF5b3V0VW5pdCBhLCB1bnNpZ25lZCBiKQogewogICAgIHJldHVybiBhIC0g
TGF5b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIGZsb2F0IG9wZXJhdG9yLShjb25zdCBMYXlvdXRV
bml0JiBhLCBmbG9hdCBiKQoraW5saW5lIGZsb2F0IG9wZXJhdG9yLShMYXlvdXRVbml0IGEsIGZs
b2F0IGIpCiB7CiAgICAgcmV0dXJuIGEudG9GbG9hdCgpIC0gYjsKIH0KIAotaW5saW5lIExheW91
dFVuaXQgb3BlcmF0b3ItKGNvbnN0IGludCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5l
IExheW91dFVuaXQgb3BlcmF0b3ItKGludCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJu
IExheW91dFVuaXQoYSkgLSBiOwogfQogCi1pbmxpbmUgZmxvYXQgb3BlcmF0b3ItKGNvbnN0IGZs
b2F0IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgZmxvYXQgb3BlcmF0b3ItKGZsb2F0
IGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gYSAtIGIudG9GbG9hdCgpOwogfQogCi1p
bmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci0oY29uc3QgTGF5b3V0VW5pdCYgYSkKK2lubGluZSBM
YXlvdXRVbml0IG9wZXJhdG9yLShMYXlvdXRVbml0IGEpCiB7CiAgICAgTGF5b3V0VW5pdCByZXR1
cm5WYWw7CiAgICAgcmV0dXJuVmFsLnNldFJhd1ZhbHVlKC1hLnJhd1ZhbHVlKCkpOwpAQCAtNjY0
LDcgKzYwOSw3IEBAIGlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLShjb25zdCBMYXlvdXRVbml0
JiBhKQogfQogCiAvLyBGb3IgcmV0dXJuaW5nIHRoZSByZW1haW5kZXIgYWZ0ZXIgYSBkaXZpc2lv
biB3aXRoIGludGVnZXIgcmVzdWx0cy4KLWlubGluZSBMYXlvdXRVbml0IGludE1vZChjb25zdCBM
YXlvdXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgaW50
TW9kKExheW91dFVuaXQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIC8vIFRoaXMgY2FsY3VsYXRl
cyB0aGUgbW9kdWxvIHNvIHRoYXQ6IGEgPSBzdGF0aWNfY2FzdDxpbnQ+KGEgLyBiKSAqIGIgKyBp
bnRNb2QoYSwgYikuCiAgICAgTGF5b3V0VW5pdCByZXR1cm5WYWw7CkBAIC02NzIsNyArNjE3LDcg
QEAgaW5saW5lIExheW91dFVuaXQgaW50TW9kKGNvbnN0IExheW91dFVuaXQmIGEsIGNvbnN0IExh
eW91dFVuaXQmIGIpCiAgICAgcmV0dXJuIHJldHVyblZhbDsKIH0KIAotaW5saW5lIExheW91dFVu
aXQgb3BlcmF0b3IlKGNvbnN0IExheW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitp
bmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciUoTGF5b3V0VW5pdCBhLCBMYXlvdXRVbml0IGIpCiB7
CiAgICAgLy8gVGhpcyBjYWxjdWxhdGVzIHRoZSBtb2R1bG8gc28gdGhhdDogYSA9IChhIC8gYikg
KiBiICsgYSAlIGIuCiAgICAgTGF5b3V0VW5pdCByZXR1cm5WYWw7CkBAIC02ODEsMTcgKzYyNiwx
NyBAQCBpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciUoY29uc3QgTGF5b3V0VW5pdCYgYSwgY29u
c3QgTGF5b3V0VW5pdCYgYikKICAgICByZXR1cm4gcmV0dXJuVmFsOwogfQogCi1pbmxpbmUgTGF5
b3V0VW5pdCBvcGVyYXRvciUoY29uc3QgTGF5b3V0VW5pdCYgYSwgaW50IGIpCitpbmxpbmUgTGF5
b3V0VW5pdCBvcGVyYXRvciUoTGF5b3V0VW5pdCBhLCBpbnQgYikKIHsKICAgICByZXR1cm4gYSAl
IExheW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yJShpbnQgYSwg
Y29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yJShpbnQgYSwg
TGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBMYXlvdXRVbml0KGEpICUgYjsKIH0KIAotaW5s
aW5lIExheW91dFVuaXQmIG9wZXJhdG9yKz0oTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5p
dCYgYikKK2lubGluZSBMYXlvdXRVbml0JiBvcGVyYXRvcis9KExheW91dFVuaXQmIGEsIExheW91
dFVuaXQgYikKIHsKICAgICBhLnNldFJhd1ZhbHVlKHNhdHVyYXRlZFN1bTxpbnQ+KGEucmF3VmFs
dWUoKSwgYi5yYXdWYWx1ZSgpKSk7CiAgICAgcmV0dXJuIGE7CkBAIC03MDksNyArNjU0LDcgQEAg
aW5saW5lIExheW91dFVuaXQmIG9wZXJhdG9yKz0oTGF5b3V0VW5pdCYgYSwgZmxvYXQgYikKICAg
ICByZXR1cm4gYTsKIH0KIAotaW5saW5lIGZsb2F0JiBvcGVyYXRvcis9KGZsb2F0JiBhLCBjb25z
dCBMYXlvdXRVbml0JiBiKQoraW5saW5lIGZsb2F0JiBvcGVyYXRvcis9KGZsb2F0JiBhLCBMYXlv
dXRVbml0IGIpCiB7CiAgICAgYSA9IGEgKyBiOwogICAgIHJldHVybiBhOwpAQCAtNzIxLDcgKzY2
Niw3IEBAIGlubGluZSBMYXlvdXRVbml0JiBvcGVyYXRvci09KExheW91dFVuaXQmIGEsIGludCBi
KQogICAgIHJldHVybiBhOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCYgb3BlcmF0b3ItPShMYXlv
dXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQmIG9wZXJh
dG9yLT0oTGF5b3V0VW5pdCYgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIGEuc2V0UmF3VmFsdWUo
c2F0dXJhdGVkRGlmZmVyZW5jZTxpbnQ+KGEucmF3VmFsdWUoKSwgYi5yYXdWYWx1ZSgpKSk7CiAg
ICAgcmV0dXJuIGE7CkBAIC03MzMsMTMgKzY3OCwxMyBAQCBpbmxpbmUgTGF5b3V0VW5pdCYgb3Bl
cmF0b3ItPShMYXlvdXRVbml0JiBhLCBmbG9hdCBiKQogICAgIHJldHVybiBhOwogfQogCi1pbmxp
bmUgZmxvYXQmIG9wZXJhdG9yLT0oZmxvYXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxp
bmUgZmxvYXQmIG9wZXJhdG9yLT0oZmxvYXQmIGEsIExheW91dFVuaXQgYikKIHsKICAgICBhID0g
YSAtIGI7CiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0JiBvcGVyYXRvcio9
KExheW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCYg
b3BlcmF0b3IqPShMYXlvdXRVbml0JiBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgYSA9IGEgKiBi
OwogICAgIHJldHVybiBhOwpAQCAtNzUyLDEzICs2OTcsMTMgQEAgaW5saW5lIExheW91dFVuaXQm
IG9wZXJhdG9yKj0oTGF5b3V0VW5pdCYgYSwgZmxvYXQgYikKICAgICByZXR1cm4gYTsKIH0KIAot
aW5saW5lIGZsb2F0JiBvcGVyYXRvcio9KGZsb2F0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQor
aW5saW5lIGZsb2F0JiBvcGVyYXRvcio9KGZsb2F0JiBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAg
YSA9IGEgKiBiOwogICAgIHJldHVybiBhOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCYgb3BlcmF0
b3IvPShMYXlvdXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVu
aXQmIG9wZXJhdG9yLz0oTGF5b3V0VW5pdCYgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIGEgPSBh
IC8gYjsKICAgICByZXR1cm4gYTsKQEAgLTc3MSwxMyArNzE2LDEzIEBAIGlubGluZSBMYXlvdXRV
bml0JiBvcGVyYXRvci89KExheW91dFVuaXQmIGEsIGZsb2F0IGIpCiAgICAgcmV0dXJuIGE7CiB9
CiAKLWlubGluZSBmbG9hdCYgb3BlcmF0b3IvPShmbG9hdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYg
YikKK2lubGluZSBmbG9hdCYgb3BlcmF0b3IvPShmbG9hdCYgYSwgTGF5b3V0VW5pdCBiKQogewog
ICAgIGEgPSBhIC8gYjsKICAgICByZXR1cm4gYTsKIH0KIAotV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IExheW91dFVuaXQm
KTsKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mLCBMYXlvdXRVbml0KTsKIAogaW5saW5lIGludCByb3VuZFRvSW50KExheW91dFVuaXQg
dmFsdWUpCiB7CkBAIC04MjAsMTQgKzc2NSwxNCBAQCBpbmxpbmUgZmxvYXQgcm91bmRUb0Rldmlj
ZVBpeGVsKGZsb2F0IHZhbHVlLCBmbG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9yLCBib29sIG5lZQog
aW5saW5lIGZsb2F0IGZsb29yVG9EZXZpY2VQaXhlbChmbG9hdCB2YWx1ZSwgZmxvYXQgcGl4ZWxT
bmFwcGluZ0ZhY3RvcikgeyByZXR1cm4gZmxvb3JUb0RldmljZVBpeGVsKExheW91dFVuaXQodmFs
dWUpLCBwaXhlbFNuYXBwaW5nRmFjdG9yKTsgfQogaW5saW5lIGZsb2F0IGNlaWxUb0RldmljZVBp
eGVsKGZsb2F0IHZhbHVlLCBmbG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9yKSB7IHJldHVybiBjZWls
VG9EZXZpY2VQaXhlbChMYXlvdXRVbml0KHZhbHVlKSwgcGl4ZWxTbmFwcGluZ0ZhY3Rvcik7IH0K
IAotaW5saW5lIExheW91dFVuaXQgYWJzb2x1dGVWYWx1ZShjb25zdCBMYXlvdXRVbml0JiB2YWx1
ZSkKK2lubGluZSBMYXlvdXRVbml0IGFic29sdXRlVmFsdWUoTGF5b3V0VW5pdCB2YWx1ZSkKIHsK
ICAgICByZXR1cm4gdmFsdWUuYWJzKCk7CiB9CiAKLWlubGluZSBib29sIGlzSW50ZWdlclZhbHVl
KGNvbnN0IExheW91dFVuaXQgdmFsdWUpCitpbmxpbmUgYm9vbCBpc0ludGVnZXJWYWx1ZShMYXlv
dXRVbml0IHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZS50b0ludCgpID09IHZhbHVlOworICAg
IHJldHVybiBMYXlvdXRVbml0IHsgdmFsdWUudG9JbnQoKSB9ID09IHZhbHVlOwogfQogCiBpbmxp
bmUgbmFtZXNwYWNlIFN0cmluZ0xpdGVyYWxzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKaW5k
ZXggMzE5NWI3MmQ3OWUyODQzNmQzOGUwZDk3Y2I0ZjY1NDFkMDdkMDYxNy4uNWU2ODQ4Yjg3NTVi
NjQzOGRlZTFjOTMzYjIyNDQwYmQ5YzA5ODY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgK
QEAgLTg0LDcgKzg0LDYgQEAgcHVibGljOgogICAgIExlbmd0aCYgb3BlcmF0b3IqPShmbG9hdCk7
CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoJikgY29uc3Q7Ci0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IExlbmd0aCYpIGNvbnN0OwogCiAgICAgZmxvYXQgdmFsdWUoKSBjb25z
dDsKICAgICBpbnQgaW50VmFsdWUoKSBjb25zdDsKQEAgLTMxNiwxMSArMzE1LDYgQEAgaW5saW5l
IGJvb2wgTGVuZ3RoOjpvcGVyYXRvcj09KGNvbnN0IExlbmd0aCYgb3RoZXIpIGNvbnN0CiAgICAg
cmV0dXJuIHZhbHVlKCkgPT0gb3RoZXIudmFsdWUoKTsKIH0KIAotaW5saW5lIGJvb2wgTGVuZ3Ro
OjpvcGVyYXRvciE9KGNvbnN0IExlbmd0aCYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwotfQotCiBpbmxpbmUgTGVuZ3RoJiBMZW5ndGg6Om9wZXJhdG9yKj0o
ZmxvYXQgdmFsdWUpCiB7CiAgICAgQVNTRVJUKCFpc0NhbGN1bGF0ZWQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAKaW5kZXggOWEzNjc1OTZkZDAyNjlkNTlmNjNlYjBm
NmM4OWUzNGRkODIxODJkOS4uZDIxNmQ3OGE2ZjU3ZTkwODAyZTMyNjg5OWQzNWI1MjhhODgwYTUz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcApAQCAtMzIsNyArMzIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IExlbmd0aFBvaW50JiBzaXplKQogewotICAgIHJldHVybiB0cyA8PCBz
aXplLngoKSA8PCAiICIgPDwgc2l6ZS55KCk7CisgICAgcmV0dXJuIHRzIDw8IHNpemUueCA8PCAn
ICcgPDwgc2l6ZS55OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTGVuZ3RoUG9pbnQuaAppbmRleCA4MTIwNWJiMTNkZGE1MDMzYjJjOTBmYmVhMDUzMGMy
ZjU2Zjk5MzZiLi5mMDAzNjkxMWVjM2JkZDY0MjIzMDNkZDM2YzY5MWE5Mzk4ODI3ZjM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmgKQEAgLTMyLDQ0ICszMiwxNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQmxlbmRpbmdDb250ZXh0OwogCiBzdHJ1Y3QgTGVuZ3Ro
UG9pbnQgewotcHVibGljOgotICAgIExlbmd0aFBvaW50KCkKLSAgICB7Ci0gICAgfQotICAgIAot
ICAgIExlbmd0aFBvaW50KExlbmd0aCB4LCBMZW5ndGggeSkKLSAgICAgICAgOiBtX3goV1RGTW92
ZSh4KSkKLSAgICAgICAgLCBtX3koV1RGTW92ZSh5KSkKLSAgICB7Ci0gICAgfQorICAgIExlbmd0
aCB4OworICAgIExlbmd0aCB5OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aFBv
aW50JiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1feCA9PSBvLm1feCAmJiBtX3kg
PT0gby5tX3k7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGhQb2ludCYp
IGNvbnN0ID0gZGVmYXVsdDsKIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5ndGhQb2lu
dCYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0K
LQotICAgIHZvaWQgc2V0WChMZW5ndGggeCkgeyBtX3ggPSBXVEZNb3ZlKHgpOyB9Ci0gICAgY29u
c3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9Ci0KLSAgICB2b2lkIHNldFkoTGVu
Z3RoIHkpIHsgbV95ID0gV1RGTW92ZSh5KTsgfQotICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0
IHsgcmV0dXJuIG1feTsgfQotCi0gICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiBtX3gu
aXNaZXJvKCkgJiYgbV95LmlzWmVybygpOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRklYTUU6IGl0
IHdvdWxkIGJlIG5pY2UgdG8gcGFjayB0aGUgdHdvIExlbmd0aHMgdG9nZXRoZXIgYmV0dGVyIHNv
bWVob3cgKHRvIGF2b2lkIHBhZGRpbmcgYmV0d2VlbiB0aGVtKS4KLSAgICBMZW5ndGggbV94Owot
ICAgIExlbmd0aCBtX3k7CisgICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiB4LmlzWmVy
bygpICYmIHkuaXNaZXJvKCk7IH0KIH07CiAKIGlubGluZSBMZW5ndGhQb2ludCBibGVuZChjb25z
dCBMZW5ndGhQb2ludCYgZnJvbSwgY29uc3QgTGVuZ3RoUG9pbnQmIHRvLCBjb25zdCBCbGVuZGlu
Z0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIExlbmd0aFBvaW50KGJsZW5kKGZyb20u
eCgpLCB0by54KCksIGNvbnRleHQpLCBibGVuZChmcm9tLnkoKSwgdG8ueSgpLCBjb250ZXh0KSk7
CisgICAgcmV0dXJuIHsgYmxlbmQoZnJvbS54LCB0by54LCBjb250ZXh0KSwgYmxlbmQoZnJvbS55
LCB0by55LCBjb250ZXh0KSB9OwogfQogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgY29uc3QgTGVuZ3RoUG9pbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aFNpemUuaAppbmRleCA4MjMyZWJiZDkxNWZhZWZmYjcwOGJjMmQwZWVjNTAyNTljMDNkYWJm
Li4yNDZkNTM0MmJlMTk5N2UzNjEwMTU2MWQ0MzFkYWM0YmUyNTdjMmI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoU2l6ZS5oCkBAIC0zMCwxNSArMzAsMTIgQEAgc3RydWN0IExlbmd0aFNp
emUgewogICAgIExlbmd0aCB3aWR0aDsKICAgICBMZW5ndGggaGVpZ2h0OwogCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IExlbmd0aFNpemUmKSBjb25zdCA9IGRlZmF1bHQ7CisKICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiB3aWR0aC5pc1plcm8oKSB8fCBoZWlnaHQuaXNaZXJv
KCk7IH0KICAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJuIHdpZHRoLmlzWmVybygpICYm
IGhlaWdodC5pc1plcm8oKTsgfQogfTsKIAotQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgTGVuZ3RoU2l6ZSYgYSwgY29uc3QgTGVuZ3RoU2l6ZSYgYikKLXsKLSAgICByZXR1cm4g
YS53aWR0aCA9PSBiLndpZHRoICYmIGEuaGVpZ2h0ID09IGIuaGVpZ2h0OwotfQotCiBpbmxpbmUg
TGVuZ3RoU2l6ZSBibGVuZChjb25zdCBMZW5ndGhTaXplJiBmcm9tLCBjb25zdCBMZW5ndGhTaXpl
JiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiB7IGJs
ZW5kKGZyb20ud2lkdGgsIHRvLndpZHRoLCBjb250ZXh0KSwgYmxlbmQoZnJvbS5oZWlnaHQsIHRv
LmhlaWdodCwgY29udGV4dCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BPREludGVydmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbC5oCmlu
ZGV4IGI4ODg2MzEyM2E0ZmZkOWNhNmZmZjMzNGFjNmU2N2U4OTVmM2NmMzQuLjhjYTg1Yzk3YTU3
MzRlZjFiMmY4NmYxM2IyY2Q2MThjMDQ0MTg1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BPREludGVydmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9E
SW50ZXJ2YWwuaApAQCAtMTA2LDE3ICsxMDYsMTMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICBib29sIG9wZXJhdG9yPChjb25zdCBQT0RJbnRlcnZhbCYgb3RoZXIpIGNvbnN0CisgICAg
ZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oY29uc3QgUE9ESW50ZXJ2YWwmIGEsIGNvbnN0IFBPRElu
dGVydmFsJiBiKQogICAgIHsKLSAgICAgICAgaWYgKEJhc2U6OmxvdygpIDwgb3RoZXIuQmFzZTo6
bG93KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKG90aGVyLkJhc2U6
OmxvdygpIDwgQmFzZTo6bG93KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmIChCYXNlOjpoaWdoKCkgPCBvdGhlci5CYXNlOjpoaWdoKCkpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgaWYgKG90aGVyLkJhc2U6OmhpZ2goKSA8IEJhc2U6OmhpZ2goKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmRhdGEoKSA8
IG90aGVyLkJhc2U6OmRhdGEoKTsKKyAgICAgICAgaWYgKGEuQmFzZTo6bG93KCkgIT0gYi5CYXNl
Ojpsb3coKSkKKyAgICAgICAgICAgIHJldHVybiBhLkJhc2U6OmxvdygpIDw9PiBiLkJhc2UubG93
KCk7CisgICAgICAgIGlmIChhLkJhc2U6OmhpZ2goKSAhPSBiLkJhc2U6OmhpZ2goKTsKKyAgICAg
ICAgICAgIHJldHVybiBhLkJhc2U6OmhpZ2goKSA8PT4gYi5CYXNlOjpoaWdoKCk7CisgICAgICAg
IHJldHVybiBCYXNlOjpkYXRhKCkgPD0+IG90aGVyLkJhc2U6OmRhdGEoKTsKICAgICB9CiAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUE9ESW50ZXJ2YWwmIG90aGVyKSBjb25zdApAQCAtMTM3
LDEzICsxMzMsMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9y
PChjb25zdCBQT0RJbnRlcnZhbCYgb3RoZXIpIGNvbnN0CisgICAgZnJpZW5kIGF1dG8gb3BlcmF0
b3I8PT4oY29uc3QgUE9ESW50ZXJ2YWwmIGEsIGNvbnN0IFBPREludGVydmFsJiBiKQogICAgIHsK
LSAgICAgICAgaWYgKEJhc2U6OmxvdygpIDwgb3RoZXIuQmFzZTo6bG93KCkpCi0gICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKG90aGVyLkJhc2U6OmxvdygpIDwgQmFzZTo6bG93
KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBCYXNlOjpoaWdo
KCkgPCBvdGhlci5CYXNlOjpoaWdoKCk7CisgICAgICAgIGlmIChhLkJhc2U6OmxvdygpICE9IGIu
QmFzZTo6bG93KCkpCisgICAgICAgICAgICByZXR1cm4gYS5CYXNlOjpsb3coKSA8PT4gYi5CYXNl
LmxvdygpOworICAgICAgICByZXR1cm4gYS5CYXNlOjpoaWdoKCkgPD0+IGIuQmFzZTo6aGlnaCgp
OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtTW91c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1N
b3VzZUV2ZW50LmgKaW5kZXggNWZiZTMyMjBhODI4N2JmZGQyYjFlNjM0NzIwNzI5OTY5Y2E3MzZh
Zi4uZjg3YmM1OTcxYTJhNDRhZmMyZGIzMjYyMWZlY2RjMWI2ZjAzNGJjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgKQEAgLTExNSwxMSArMTE1LDYg
QEAgY29uc3QgZG91YmxlIEZvcmNlQXRGb3JjZUNsaWNrID0gMjsKICAgICB7CiAgICAgICAgIHJl
dHVybiBhID09IHN0YXRpY19jYXN0PHNob3J0PihiKTsKICAgICB9Ci0KLSAgICBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KHNob3J0IGEsIE1vdXNlQnV0dG9uIGIpCi0gICAgewotICAgICAgICByZXR1
cm4gYSAhPSBzdGF0aWNfY2FzdDxzaG9ydD4oYik7Ci0gICAgfQogI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nl
c3NRdWFsaWZpZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQu
aAppbmRleCAyODVhNDI1NTM5MmNhN2RlZTY5OGYxY2JhNzMzMTJjYTliMjNiYTJiLi5iZDQ1ZjU3
ZDNmMWE2YWIxYzIzMGJhNzM1OTM5MzQzMTUyOWE4MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Qcm9jZXNzUXVhbGlmaWVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUHJvY2Vzc1F1YWxpZmllZC5oCkBAIC04MCwxNiArODAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7
CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb2Nlc3NRdWFsaWZpZWQmIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0ID09IG90aGVyLm1fb2Jq
ZWN0Ci0gICAgICAgICAgICAmJiBtX3Byb2Nlc3NJZGVudGlmaWVyID09IG90aGVyLm1fcHJvY2Vz
c0lkZW50aWZpZXI7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFByb2Nlc3NR
dWFsaWZpZWQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvY2Vzc1F1YWxpZmll
ZCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBQcm9jZXNzUXVhbGlmaWVkIGdlbmVy
YXRlVGhyZWFkU2FmZSgpIHsgcmV0dXJuIHsgVDo6Z2VuZXJhdGVUaHJlYWRTYWZlKCksIFByb2Nl
c3M6OmlkZW50aWZpZXIoKSB9OyB9CiAgICAgc3RhdGljIFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJh
dGUoKSB7IHJldHVybiB7IFQ6OmdlbmVyYXRlKCksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWN0RWRnZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCmluZGV4IDBlMTIzMDE5MzM2MzU0ZDdjZWYy
N2QxZmRmN2E3MzIzNjA1MTlmYWEuLjM3MDgzNjRlOGIxODlkNmY1MTc5MjUxYTJhZWQ0ODZjMDQ4
Mzg3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCkBAIC04OCw4ICs4OCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXJ0KGNvbnN0IFQmIHN0YXJ0LCBXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIp
IHsgdGhpcy0+c3RhcnQod3JpdGluZ01vZGUsIGRpcmVjdGlvbikgPSBzdGFydDsgfQogICAgIHZv
aWQgc2V0RW5kKGNvbnN0IFQmIGVuZCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSKSB7IHRoaXMtPmVuZCh3cml0aW5n
TW9kZSwgZGlyZWN0aW9uKSA9IGVuZDsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
Y3RFZGdlcyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXMgPT0gb3RoZXIubV9zaWRlczsg
fQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWN0RWRnZXMmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX3NpZGVzICE9IG90aGVyLm1fc2lkZXM7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVjdEVkZ2VzJikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIHN0ZDo6YXJy
YXk8VCwgND4gbV9zaWRlcyB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SZWdpc3RyYWJsZURvbWFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFi
bGVEb21haW4uaAppbmRleCA3Y2UzZjYxMzZjMzE3ZGEzZmJlYzIyNDAxZjViZjI4MDE2NDk1YzYw
Li5iZDY2M2NjY2YxZDdjNDM0YWM1YTM5NmRkOGJlNWM4MzQzZGY3Y2ZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgKQEAgLTUzLDggKzUzLDcgQEAgcHVi
bGljOgogICAgIFN0cmluZyYgc3RyaW5nKCkgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsg
fQogICAgIGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJs
ZURvbWFpbjsgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbiAhPSBvdGhlci5tX3Jl
Z2lzdHJhYmxlRG9tYWluOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhl
ci5tX3JlZ2lzdHJhYmxlRG9tYWluOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJikgY29uc3QgPSBkZWZhdWx0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBjaGFyKiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhl
cjsgfQogCiAgICAgYm9vbCBtYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdApAQCAtMTAwLDgg
Kzk5LDYgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlKERlY29kZXImKTsKIAotcHJvdGVj
dGVkOgotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJlZ2lzdHJhYmxlRG9tYWluKFN0cmluZyYm
IGRvbWFpbikKICAgICAgICAgOiBtX3JlZ2lzdHJhYmxlRG9tYWluIHsgZG9tYWluLmlzRW1wdHko
KSA/ICJudWxsT3JpZ2luIl9zIDogV1RGTW92ZShkb21haW4pIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMTc3NTA2Y2YwNDcwZmUzNWNjOWMyYjRiNmZjZGJmOWI0
MmExOTE4ZS4uZjdmNTk1ZThjZjg3M2U0M2I4M2NhMjczNGQ2OWUyYjdhYTllODVkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTE5OSw3ICsxOTksNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCmluZGV4IDhlODk0M2JmN2YwNDYzZmZkNmE3OTZmMzUx
YWQ5MDQ1NTJhNGJjYWEuLjBkYzUyMzE5ZDdlNDU0MWM3ZWU3MTMwZTkyZjU3MDNkMDIwNjVkM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKQEAgLTE4NCwxMyArMTg0LDggQEAgcHJpdmF0
ZToKICAgICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQsIG1fcG9pbnRlciArIG9mZnNldCA8PSB0
aHJlYWRHbG9iYWxUaW1lckhlYXAoKS5kYXRhKCkgKyB0aHJlYWRHbG9iYWxUaW1lckhlYXAoKS5z
aXplKCkpOwogICAgIH0KIAotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oVGltZXJIZWFwSXRl
cmF0b3IsIFRpbWVySGVhcEl0ZXJhdG9yKTsKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KFRp
bWVySGVhcEl0ZXJhdG9yLCBUaW1lckhlYXBJdGVyYXRvcik7Ci0gICAgZnJpZW5kIGJvb2wgb3Bl
cmF0b3I8KFRpbWVySGVhcEl0ZXJhdG9yLCBUaW1lckhlYXBJdGVyYXRvcik7Ci0gICAgZnJpZW5k
IGJvb2wgb3BlcmF0b3I+KFRpbWVySGVhcEl0ZXJhdG9yLCBUaW1lckhlYXBJdGVyYXRvcik7Ci0g
ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8PShUaW1lckhlYXBJdGVyYXRvciwgVGltZXJIZWFwSXRl
cmF0b3IpOwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPj0oVGltZXJIZWFwSXRlcmF0b3IsIFRp
bWVySGVhcEl0ZXJhdG9yKTsKLSAgICAKKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihUaW1l
ckhlYXBJdGVyYXRvciwgVGltZXJIZWFwSXRlcmF0b3IpOworCiAgICAgZnJpZW5kIFRpbWVySGVh
cEl0ZXJhdG9yIG9wZXJhdG9yKyhUaW1lckhlYXBJdGVyYXRvciwgc2l6ZV90KTsKICAgICBmcmll
bmQgVGltZXJIZWFwSXRlcmF0b3Igb3BlcmF0b3IrKHNpemVfdCwgVGltZXJIZWFwSXRlcmF0b3Ip
OwogICAgIApAQCAtMjAwLDEzICsxOTUsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxUaHJlYWRU
aW1lckhlYXBJdGVtPiogbV9wb2ludGVyOwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShU
aW1lckhlYXBJdGVyYXRvciBhLCBUaW1lckhlYXBJdGVyYXRvciBiKSB7IHJldHVybiBhLm1fcG9p
bnRlciA9PSBiLm1fcG9pbnRlcjsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUaW1lckhlYXBJ
dGVyYXRvciBhLCBUaW1lckhlYXBJdGVyYXRvciBiKSB7IHJldHVybiBhLm1fcG9pbnRlciAhPSBi
Lm1fcG9pbnRlcjsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I8KFRpbWVySGVhcEl0ZXJhdG9yIGEs
IFRpbWVySGVhcEl0ZXJhdG9yIGIpIHsgcmV0dXJuIGEubV9wb2ludGVyIDwgYi5tX3BvaW50ZXI7
IH0KLWlubGluZSBib29sIG9wZXJhdG9yPihUaW1lckhlYXBJdGVyYXRvciBhLCBUaW1lckhlYXBJ
dGVyYXRvciBiKSB7IHJldHVybiBhLm1fcG9pbnRlciA+IGIubV9wb2ludGVyOyB9Ci1pbmxpbmUg
Ym9vbCBvcGVyYXRvcjw9KFRpbWVySGVhcEl0ZXJhdG9yIGEsIFRpbWVySGVhcEl0ZXJhdG9yIGIp
IHsgcmV0dXJuIGEubV9wb2ludGVyIDw9IGIubV9wb2ludGVyOyB9Ci1pbmxpbmUgYm9vbCBvcGVy
YXRvcj49KFRpbWVySGVhcEl0ZXJhdG9yIGEsIFRpbWVySGVhcEl0ZXJhdG9yIGIpIHsgcmV0dXJu
IGEubV9wb2ludGVyID49IGIubV9wb2ludGVyOyB9Ci0KIGlubGluZSBUaW1lckhlYXBJdGVyYXRv
ciBvcGVyYXRvcisoVGltZXJIZWFwSXRlcmF0b3IgYSwgc2l6ZV90IGIpIHsgcmV0dXJuIFRpbWVy
SGVhcEl0ZXJhdG9yKGEubV9wb2ludGVyICsgYik7IH0KIGlubGluZSBUaW1lckhlYXBJdGVyYXRv
ciBvcGVyYXRvcisoc2l6ZV90IGEsIFRpbWVySGVhcEl0ZXJhdG9yIGIpIHsgcmV0dXJuIFRpbWVy
SGVhcEl0ZXJhdG9yKGEgKyBiLm1fcG9pbnRlcik7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oCmluZGV4IDJlOGJkZWU3YWFhMTlkZjgwNmM3ODU4
MDRjMDIwNzRlY2E5OWU2YzEuLmMyYjdjODQyNjA4YzI2NWNmMzlhZTJkYzc3MGY5MmMzNWZhOTg3
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgK
QEAgLTE4Miw3ICsxODIsNiBAQCBwdWJsaWM6CiAKICAgICAvLyByZXR1cm4gdHJ1ZSBldmVyeSBB
bmltYXRpb24gaW4gdGhlIGNoYWluIChkZWZpbmVkIGJ5IG1fbmV4dCkgbWF0Y2ggCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvbiYgbykgY29uc3QgeyByZXR1cm4gYW5pbWF0aW9u
c01hdGNoKG8pOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFuaW1hdGlvbiYgbykgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCiAgICAgYm9vbCBmaWxsc0JhY2t3YXJkcygp
IGNvbnN0IHsgcmV0dXJuIG1fZmlsbE1vZGVTZXQgJiYgKGZpbGxNb2RlKCkgPT0gQW5pbWF0aW9u
RmlsbE1vZGU6OkJhY2t3YXJkcyB8fCBmaWxsTW9kZSgpID09IEFuaW1hdGlvbkZpbGxNb2RlOjpC
b3RoKTsgfQogICAgIGJvb2wgZmlsbHNGb3J3YXJkcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbE1v
ZGVTZXQgJiYgKGZpbGxNb2RlKCkgPT0gQW5pbWF0aW9uRmlsbE1vZGU6OkZvcndhcmRzIHx8IGZp
bGxNb2RlKCkgPT0gQW5pbWF0aW9uRmlsbE1vZGU6OkJvdGgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaAppbmRleCBmZWM5YzQ1M2Y1
YWNkMmNlNmM1NmY2ZTZlZjFiMmY4YTA2OGE0YTdlLi45Yzk4NTE3ZTM1OWI5ZDkwY2U5ZWMwMzJl
YTRlNzFkMTIyNmRhYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmlt
YXRpb24vQW5pbWF0aW9uTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb25MaXN0LmgKQEAgLTQwLDEwICs0MCw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZmlsbFVuc2V0UHJvcGVydGllcygpOwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbmlt
YXRpb25MaXN0JikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFuaW1hdGlvbkxp
c3QmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwotICAgIH0KICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0
aW9ucy5zaXplKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2FuaW1h
dGlvbnMuaXNFbXB0eSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vVGltaW5nRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1h
dGlvbi9UaW1pbmdGdW5jdGlvbi5oCmluZGV4IDZmY2I0OWI2Zjk1MWFjZTNiMjA0ODlhODUxMTcw
OWJkNjBjZTRiZmYuLjZjZGNkYzI5OTk3ZjgxYmM1ZjI3MWExOTI1MTE1NTQyYjI2YjJiNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlv
bi5oCkBAIC01MSw3ICs1MSw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3ByaW5nVGltaW5nRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gU3ByaW5nRnVuY3Rpb247IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJikgY29uc3QgPSAw
OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
UmVmUHRyPFRpbWluZ0Z1bmN0aW9uPj4gY3JlYXRlRnJvbUNTU1RleHQoY29uc3QgU3RyaW5nJik7
CiAgICAgc3RhdGljIFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY3JlYXRlRnJvbUNTU1ZhbHVlKGNv
bnN0IENTU1ZhbHVlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9Ob3dQbGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxh
eWluZ0luZm8uaAppbmRleCAxZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0NDhkNmNkYWRjY2NjZTFi
Li4wZmRmMjljZWQ4ZmZjNWFkZWM1NjEzY2I3N2Q0MmEwMDQ5YmM3MzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTQzLDExICs0Myw2
IEBAIHN0cnVjdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsgewogICAgICAgICByZXR1cm4gc3JjID09
IG90aGVyLnNyYyAmJiBtaW1lVHlwZSA9PSBvdGhlci5taW1lVHlwZTsKICAgICB9CiAKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0lu
Zm9BcnR3b3JrPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKQEAgLTg3LDI1ICs4Miw3IEBAIHN0cnVj
dCBOb3dQbGF5aW5nSW5mbyB7CiAgICAgYm9vbCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNp
YmlsaXR5IHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29y
az4gYXJ0d29yazsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mbyYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGl0bGUgPT0gb3RoZXIudGl0bGUK
LSAgICAgICAgICAgICYmIGFydGlzdCA9PSBvdGhlci5hcnRpc3QKLSAgICAgICAgICAgICYmIGFs
YnVtID09IG90aGVyLmFsYnVtCi0gICAgICAgICAgICAmJiBzb3VyY2VBcHBsaWNhdGlvbklkZW50
aWZpZXIgPT0gb3RoZXIuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyCi0gICAgICAgICAgICAm
JiBkdXJhdGlvbiA9PSBvdGhlci5kdXJhdGlvbgotICAgICAgICAgICAgJiYgY3VycmVudFRpbWUg
PT0gb3RoZXIuY3VycmVudFRpbWUKLSAgICAgICAgICAgICYmIHN1cHBvcnRzU2Vla2luZyA9PSBv
dGhlci5zdXBwb3J0c1NlZWtpbmcKLSAgICAgICAgICAgICYmIHVuaXF1ZUlkZW50aWZpZXIgPT0g
b3RoZXIudW5pcXVlSWRlbnRpZmllcgotICAgICAgICAgICAgJiYgaXNQbGF5aW5nID09IG90aGVy
LmlzUGxheWluZwotICAgICAgICAgICAgJiYgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJp
bGl0eSA9PSBvdGhlci5hbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5Ci0gICAgICAg
ICAgICAmJiBhcnR3b3JrID09IG90aGVyLmFydHdvcms7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IE5vd1BsYXlpbmdJbmZvJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE5vd1BsYXlpbmdJbmZvJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBkZWNvZGUo
RGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAKaW5kZXggNTdjYzE0Mjhk
NWNlOTY2NDA5NmIzYWZiZDZiMDkwNmNkOThmMjAxNy4uZDZkNTk0ZTIxY2Y5ZjM1NzYzMDVlNDY0
ODI4MDZjNjI3ZWZhYzEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCkBAIC0y
MjQsMTEgKzIyNCw2IEBAIGJvb2wgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpvcGVyYXRvcj09
KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgb3RoCiAgICAgcmV0dXJuIG1fc3Ry
ZWFtRGVzY3JpcHRpb24gPT0gb3RoZXI7CiB9CiAKLWJvb2wgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uOjpvcGVyYXRvciE9KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgb3RoZXIp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsKLX0KLQogYm9vbCBDQUF1
ZGlvU3RyZWFtRGVzY3JpcHRpb246Om9wZXJhdG9yPT0oY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbiYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKG90aGVyLnBsYXRmb3JtRGVzY3JpcHRpb24o
KS50eXBlICE9IFBsYXRmb3JtRGVzY3JpcHRpb246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpCkBA
IC0yMzcsMTEgKzIzMiw2IEBAIGJvb2wgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpvcGVyYXRv
cj09KGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG90aGVyKSBjCiAgICAgcmV0dXJuIG9w
ZXJhdG9yPT0oKnN0ZDo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KG90
aGVyLnBsYXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbikpOwogfQogCi1ib29sIENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbjo6b3BlcmF0b3IhPShjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOwotfQot
CiBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIENBQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbjo6c3RyZWFtRGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX3N0cmVhbURl
c2NyaXB0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaAppbmRleCA2M2FlYzYzNmEwM2Vm
YzU2NjA1M2U3ZGZiY2FkZjNjOTQxOTRmNDAxLi45MTNmYWZmYWQzZmI3NDViY2UyNDY5N2E3OTIy
ZjA1YTIzZjU4NDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaApAQCAtMzEsNyArMzEs
NiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9y
PT0oY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiwgY29uc3QgQXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uJik7Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1ZGlvU3Ry
ZWFtQmFzaWNEZXNjcmlwdGlvbiYgYSwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
JiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uIGZpbmFsIDogcHVibGljIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjEsMTAgKzYwLDggQEAgcHVibGlj
OgogICAgIHVpbnQzMl90IGZvcm1hdEZsYWdzKCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
b3BlcmF0b3I9PShzdGF0aWNfY2FzdDxjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJj4ob3Ro
ZXIpKTsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3Jp
cHRpb24mIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0OworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mKSBjb25zdDsK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpIGNvbnN0
OwogCiAgICAgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzdHJlYW1EZXNjcmlw
dGlvbigpIGNvbnN0OwogICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRGVz
Y3JpcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NhbGMvQ2Fs
Y0V4cHJlc3Npb25CbGVuZExlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2FsYy9D
YWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoLmgKaW5kZXggOWI0NzcyMTQ4YzdlODM5MWRlZWQ0MmJm
NjY5YjVkMjY3ODE2Njc0My4uZTdmZmZjYmMzZWUzNmE3YmVhNTEzZGQwZWI0ODdmMmNlZTYxYTJl
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2FsYy9DYWxjRXhwcmVzc2lv
bkJsZW5kTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2FsYy9DYWxjRXhw
cmVzc2lvbkJsZW5kTGVuZ3RoLmgKQEAgLTM4LDYgKzM4LDggQEAgcHVibGljOgogICAgIGNvbnN0
IExlbmd0aCYgdG8oKSBjb25zdCB7IHJldHVybiBtX3RvOyB9CiAgICAgZmxvYXQgcHJvZ3Jlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3Byb2dyZXNzOyB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aCYpIGNvbnN0ID0gZGVmYXVsdDsKKwogcHJpdmF0
ZToKICAgICBmbG9hdCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGNFeHByZXNzaW9uTm9kZSYpIGNvbnN0IGZpbmFsOwpA
QCAtNDgsMTEgKzUwLDYgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3Byb2dyZXNzOwogfTsKIAot
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoJiBh
LCBjb25zdCBDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoJiBiKQotewotICAgIHJldHVybiBhLnBy
b2dyZXNzKCkgPT0gYi5wcm9ncmVzcygpICYmIGEuZnJvbSgpID09IGIuZnJvbSgpICYmIGEudG8o
KSA9PSBiLnRvKCk7Ci19Ci0KIH0KIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DQUxDRVhQUkVT
U0lPTl9OT0RFKENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGgsIHR5cGUoKSA9PSBXZWJDb3JlOjpD
YWxjRXhwcmVzc2lvbk5vZGVUeXBlOjpCbGVuZExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvci5oCmluZGV4IDdkMDk1MWI0NDdkNTEwZDFiZmNjNmQ1Y2ZjZWE0Yzgz
M2Q1MGE4OGIuLjBkNWRlZmRmMDQyOGI4NWZlNTFiNzA2ZjI4MjQ3YjVmZjA4N2U4OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMjYwLDcgKzI2MCw2IEBA
IHByaXZhdGU6CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3ImLCBjb25zdCBDb2xv
ciYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKTsKIAogLy8g
T25lIG9yIGJvdGggbXVzdCBiZSBvdXQgb2YgbGluZSBjb2xvcnMuCiBib29sIG91dE9mTGluZUNv
bXBvbmVudHNzRXF1YWwoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwpAQCAtMjgxLDExICsy
ODAsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xv
ciYgYikKICAgICByZXR1cm4gYS5tX2NvbG9yQW5kRmxhZ3MgPT0gYi5tX2NvbG9yQW5kRmxhZ3M7
CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9y
JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIGlubGluZSBib29sIG91dE9mTGlu
ZUNvbXBvbmVudHNzRXF1YWwoY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKQogewogICAg
IGlmIChhLmlzT3V0T2ZMaW5lKCkgJiYgYi5pc091dE9mTGluZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAppbmRleCBjMzlkZGRk
NGFmOTE1YmUxNTlmZjllMGYxNzgxY2U3YWNmNzdkODFiLi5iMTA4MTIzMzg2NGY1YWI3MTUyNjJh
Y2ZiYzYxMmIwMWQ2NTQyZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvckNvbXBvbmVudHMuaApAQCAtNTEsNiArNTEsOCBAQCBzdHJ1Y3QgQ29sb3JD
b21wb25lbnRzIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGPgogICAgIGNvbnN0ZXhwciBhdXRv
IG1hcChGJiYgZnVuY3Rpb24pIGNvbnN0IC0+IENvbG9yQ29tcG9uZW50czxkZWNsdHlwZShmdW5j
dGlvbihzdGQ6OmRlY2x2YWw8VD4oKSkpLCBOPjsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDb2xvckNvbXBvbmVudHMmKSBjb25zdCA9IGRlZmF1bHQ7CisKICAgICBjb25zdGV4cHIgQ29s
b3JDb21wb25lbnRzJiBvcGVyYXRvcis9KGNvbnN0IENvbG9yQ29tcG9uZW50cyYpOwogICAgIGNv
bnN0ZXhwciBDb2xvckNvbXBvbmVudHMmIG9wZXJhdG9yLz0oVCk7CiAKQEAgLTE2MiwxOCArMTY0
LDYgQEAgY29uc3RleHByIENvbG9yQ29tcG9uZW50czxULCBOPiBwZXJDb21wb25lbnRNaW4oY29u
c3QgQ29sb3JDb21wb25lbnRzPFQsIE4+JiBhLAogICAgIHJldHVybiBtYXBDb2xvckNvbXBvbmVu
dHMoW10oVCBjMSwgVCBjMikgeyByZXR1cm4gc3RkOjptaW4oYzEsIGMyKTsgfSwgYSwgYik7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgotY29uc3RleHByIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDb2xvckNvbXBvbmVudHM8VCwgTj4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50
czxULCBOPiYgYikKLXsKLSAgICByZXR1cm4gYS5jb21wb25lbnRzID09IGIuY29tcG9uZW50czsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+Ci1jb25zdGV4cHIgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IENvbG9yQ29tcG9uZW50czxULCBOPiYgYSwgY29uc3QgQ29sb3JDb21wb25l
bnRzPFQsIE4+JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIHN0ZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb25NZXRob2QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5oCmluZGV4
IDE5OGRjMmRjMTZkNjFjNmFlY2ZjYWI3MjhiZjFiZTg0YzBjNTFhMjguLjkzZWYyMTJjOWU3MWRm
NTkwMmJmNDI5YzFlNzllYjhlM2EzOGNkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5oCkBAIC02
MCw0NSArNjAsNTUgQEAgc3RydWN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7CiAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50
ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OkhTTDsKICAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2Vi
Q29yZTo6SFNMQTxmbG9hdD47CiAgICAgICAgIEh1ZUludGVycG9sYXRpb25NZXRob2QgaHVlSW50
ZXJwb2xhdGlvbk1ldGhvZCA9IEh1ZUludGVycG9sYXRpb25NZXRob2Q6OlNob3J0ZXI7CisgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIU0wmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsK
ICAgICBzdHJ1Y3QgSFdCIHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9s
YXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6SFdCOwogICAg
ICAgICB1c2luZyBDb2xvclR5cGUgPSBXZWJDb3JlOjpIV0JBPGZsb2F0PjsKICAgICAgICAgSHVl
SW50ZXJwb2xhdGlvbk1ldGhvZCBodWVJbnRlcnBvbGF0aW9uTWV0aG9kID0gSHVlSW50ZXJwb2xh
dGlvbk1ldGhvZDo6U2hvcnRlcjsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhXQiYp
IGNvbnN0ID0gZGVmYXVsdDsKICAgICB9OwogICAgIHN0cnVjdCBMQ0ggewogICAgICAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9s
YXRpb25Db2xvclNwYWNlOjpMQ0g7CiAgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6
OkxDSEE8ZmxvYXQ+OwogICAgICAgICBIdWVJbnRlcnBvbGF0aW9uTWV0aG9kIGh1ZUludGVycG9s
YXRpb25NZXRob2QgPSBIdWVJbnRlcnBvbGF0aW9uTWV0aG9kOjpTaG9ydGVyOworICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTENIJikgY29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAgICAg
c3RydWN0IExhYiB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9u
Q29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OkxhYjsKICAgICAgICAg
dXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6TGFiPGZsb2F0PjsKKyAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IExhYiYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9OwogICAgIHN0cnVjdCBP
S0xDSCB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JT
cGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6Ok9LTENIOwogICAgICAgICB1c2lu
ZyBDb2xvclR5cGUgPSBXZWJDb3JlOjpPS0xDSEE8ZmxvYXQ+OwogICAgICAgICBIdWVJbnRlcnBv
bGF0aW9uTWV0aG9kIGh1ZUludGVycG9sYXRpb25NZXRob2QgPSBIdWVJbnRlcnBvbGF0aW9uTWV0
aG9kOjpTaG9ydGVyOworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT0tMQ0gmKSBjb25z
dCA9IGRlZmF1bHQ7CiAgICAgfTsKICAgICBzdHJ1Y3QgT0tMYWIgewogICAgICAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9sYXRp
b25Db2xvclNwYWNlOjpPS0xhYjsKICAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6
T0tMYWI8ZmxvYXQ+OworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT0tMYWImKSBjb25z
dCA9IGRlZmF1bHQ7CiAgICAgfTsKICAgICBzdHJ1Y3QgU1JHQiB7CiAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlv
bkNvbG9yU3BhY2U6OlNSR0I7CiAgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6OlNS
R0JBPGZsb2F0PjsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNSR0ImKSBjb25zdCA9
IGRlZmF1bHQ7CiAgICAgfTsKICAgICBzdHJ1Y3QgU1JHQkxpbmVhciB7CiAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xh
dGlvbkNvbG9yU3BhY2U6OlNSR0JMaW5lYXI7CiAgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdl
YkNvcmU6OkxpbmVhclNSR0JBPGZsb2F0PjsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNSR0JMaW5lYXImKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKICAgICBzdHJ1Y3QgWFlaRDUw
IHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9sYXRpb25Db2xvclNwYWNl
ID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6WFlaRDUwOwogICAgICAgICB1c2luZyBD
b2xvclR5cGUgPSBXZWJDb3JlOjpYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENTA+OworICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgWFlaRDUwJikgY29uc3QgPSBkZWZhdWx0OwogICAgIH07
CiAgICAgc3RydWN0IFhZWkQ2NSB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRl
cnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlhZWkQ2
NTsKICAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6WFlaQTxmbG9hdCwgV2hpdGVQ
b2ludDo6RDY1PjsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFhZWkQ2NSYpIGNvbnN0
ID0gZGVmYXVsdDsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtMTA2LDYgKzExNiw4IEBAIHN0cnVjdCBDb2xv
ckludGVycG9sYXRpb25NZXRob2QgewogCiAgICAgc3RkOjp2YXJpYW50PEhTTCwgSFdCLCBMQ0gs
IExhYiwgT0tMQ0gsIE9LTGFiLCBTUkdCLCBTUkdCTGluZWFyLCBYWVpENTAsIFhZWkQ2NT4gY29s
b3JTcGFjZTsKICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRp
b247CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
JikgY29uc3QgPSBkZWZhdWx0OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9p
ZCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dApAQCAtMTk4LDYxICsyMTAsNiBAQCBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNv
bnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCYgY29sb3JJbnRlcnBvbGF0aQogICAgICk7CiB9
CiAKLWlubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZDo6SFNMJiBhLCBjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OkhTTCYg
YikKLXsKLSAgICByZXR1cm4gYS5odWVJbnRlcnBvbGF0aW9uTWV0aG9kID09IGIuaHVlSW50ZXJw
b2xhdGlvbk1ldGhvZDsKLX0KLQotaW5saW5lIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpIV0ImIGEsIGNvbnN0IENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZDo6SFdCJiBiKQotewotICAgIHJldHVybiBhLmh1ZUludGVycG9sYXRpb25NZXRo
b2QgPT0gYi5odWVJbnRlcnBvbGF0aW9uTWV0aG9kOwotfQotCi1pbmxpbmUgY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OkxDSCYgYSwgY29u
c3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpMQ0gmIGIpCi17Ci0gICAgcmV0dXJuIGEuaHVl
SW50ZXJwb2xhdGlvbk1ldGhvZCA9PSBiLmh1ZUludGVycG9sYXRpb25NZXRob2Q7Ci19Ci0KLWlu
bGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZDo6T0tMQ0gmIGEsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6T0tMQ0gmIGIp
Ci17Ci0gICAgcmV0dXJuIGEuaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCA9PSBiLmh1ZUludGVycG9s
YXRpb25NZXRob2Q7Ci19Ci0KLWlubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6TGFiJiwgY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kOjpMYWImKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6Ok9LTGFiJiwg
Y29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpPS0xhYiYpCi17Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWlubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiYsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6
U1JHQiYpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQkxpbmVhciYsIGNv
bnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQkxpbmVhciYpCi17Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLWlubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZDo6WFlaRDUwJiwgY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kOjpYWVpENTAmKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlhZWkQ2NSYs
IGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6WFlaRDY1JikKLXsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotaW5saW5lIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kJiBhLCBjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2QmIGIp
Ci17Ci0gICAgcmV0dXJuIGEuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA9PSBiLmFscGhhUHJlbXVs
dGlwbGljYXRpb24gJiYgYS5jb2xvclNwYWNlID09IGIuY29sb3JTcGFjZTsKLX0KLQogfQogCiBu
YW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ck1hdHJpeC5oCmluZGV4IGYzMmI0OTZiNjVhZDhiMjgxM2YwYTNhYTQ3MjlkOGI5ZDczNmNlNDMu
LjhhMTYzOGMxZjk0OWM3MzAxY2ZmODc2MTA1MmRmOTQ5NTNiNTM0OTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaApAQCAtNTAsMjkgKzUwLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbWF0cml4Wyhyb3cgKiBDb2x1bW5Db3VudCkg
KyBjb2x1bW5dOwogICAgIH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvck1hdHJp
eCYpIGNvbnN0ID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICBzdGQ6OmFycmF5PGZsb2F0LCBS
b3dDb3VudCAqIENvbHVtbkNvdW50PiBtX21hdHJpeDsKIH07CiAKLXRlbXBsYXRlPHNpemVfdCBD
b2x1bW5Db3VudCwgc2l6ZV90IFJvd0NvdW50PgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDb2xvck1hdHJpeDxDb2x1bW5Db3VudCwgUm93Q291bnQ+JiBhLCBjb25zdCBDb2xvck1h
dHJpeDxDb2x1bW5Db3VudCwgUm93Q291bnQ+JiBiKQotewotICAgIGZvciAoc2l6ZV90IHJvdyA9
IDA7IHJvdyA8IFJvd0NvdW50OyArK3JvdykgewotICAgICAgICBmb3IgKHNpemVfdCBjb2x1bW4g
PSAwOyBjb2x1bW4gPCBDb2x1bW5Db3VudDsgKytjb2x1bW4pIHsKLSAgICAgICAgICAgIGlmIChh
LmF0KHJvdywgY29sdW1uKSAhPSBiLmF0KHJvdywgY29sdW1uKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRl
bXBsYXRlPHNpemVfdCBDb2x1bW5Db3VudCwgc2l6ZV90IFJvd0NvdW50PgotY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBDb2xvck1hdHJpeDxDb2x1bW5Db3VudCwgUm93Q291bnQ+JiBh
LCBjb25zdCBDb2xvck1hdHJpeDxDb2x1bW5Db3VudCwgUm93Q291bnQ+JiBiKQotewotICAgIHJl
dHVybiAhKGEgPT0gYik7Ci19Ci0KLQogLy8gRklYTUU6IFRoZXNlIGFyZSBvbmx5IHVzZWQgaW4g
RmlsdGVyT3BlcmF0aW9ucy5jcHAuIENvbnNpZGVyIG1vdmluZyB0aGVtIHRoZXJlLgogY29uc3Rl
eHByIENvbG9yTWF0cml4PDMsIDM+IGdyYXlzY2FsZUNvbG9yTWF0cml4KGZsb2F0IGFtb3VudCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlw
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaAppbmRl
eCAyOGU3OGQ0ZGYzYTU5Y2JiODZlMWQzZWIwNjAzZjA5N2RmYTRlZmE5Li5mY2MwZGRiNWRhZGEx
ODc1MzJmNGMzZjU0OTA4MTIyOTg5YjE0MzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCkBAIC0xOTMsMTIgKzE5Myw2IEBAIGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JUeXBlJiBhLCBjb25zdCBDb2xvclR5cGUmIGIpCiAg
ICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGEudW5yZXNvbHZlZCgpKSA9PSBhc0NvbG9yQ29t
cG9uZW50cyhiLnVucmVzb2x2ZWQoKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbG9yVHlw
ZSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxJc0NvbnZlcnRpYmxlVG9Db2xvckNvbXBvbmVu
dHM8Q29sb3JUeXBlPj4qID0gbnVsbHB0cj4KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29u
c3QgQ29sb3JUeXBlJiBhLCBjb25zdCBDb2xvclR5cGUmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9
PSBiKTsKLX0KLQogCiAvLyBNQVJLOiAtIFJHQiBDb2xvciBUeXBlcy4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAppbmRleCA3YmJl
YzExYzk0YWM2NWRkN2RhMTE3YmIxODMzYTYwZTNjYjcxNWY4Li45ZmUyYjQzMGNhNDA5MmJhMDBi
YWNjYjk2ZTZkMjdmMzhjZTgyMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaApAQCAtNTAsMTAgKzUwLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGVjb2RpbmdPcHRpb25z
JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2RlY29kaW5nTW9kZU9yU2l6
ZSA9PSBvdGhlci5tX2RlY29kaW5nTW9kZU9yU2l6ZTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IERlY29kaW5nT3B0aW9ucyYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGJvb2wg
aXNBdXRvKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAppbmRleCAwMzZhZWUyMGYx
ZmFhYjM2OGE0NzA0ZDRiYzg3NTQ3M2JhMWRkMjFjLi42NTQ5ZDEyMWUxN2U1NDE1NWI4NDJlNTA0
MjA0OGFlMWM0MDVlZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAKQEAgLTEwMywxMSArMTAzLDYg
QEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgYSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBiKQogI2VuZGlmCiB9CiAKLWJvb2wgb3BlcmF0b3IhPShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBzdGQ6Om9wdGlvbmFsPERlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gRGVzdGluYXRpb25Db2xvclNwYWNlOjphc1JHQigpIGNvbnN0CiB7
CiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAppbmRleCAzYmU5MDhmNzVjNTQ1Yzk0YjI3YTE4
OGJhNjFiYjk1YzZiYjcxMWU2Li4xOGRkYzFiMTc1YzJjYWY4NTdiNzI4M2VlMTE4MTk5ZGZkMDQ1
OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5h
dGlvbkNvbG9yU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9E
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaApAQCAtNTQsNyArNTQsNiBAQCBwcml2YXRlOgogfTsKIAog
V0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpOwogCiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCmluZGV4IDhmYTY2YTI3MmJhYWZj
ODM2NWYzNGE0MTkwYWVlNmY2NzQ4ZGMzMGMuLjg2ZjgzYmVmYTMyZTdkMjdmMjVmZmYzYWJhMTFm
N2IyYjE4YTNlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFBvaW50LmgKQEAgLTE4Miw2ICsxODIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB7IG1f
eSwgbV94IH07CiAgICAgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZsb2F0UG9pbnQm
KSBjb25zdCA9IGRlZmF1bHQ7CisKICNpZiBVU0UoQ0cpCiAgICAgV0VCQ09SRV9FWFBPUlQgRmxv
YXRQb2ludChjb25zdCBDR1BvaW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgQ0dQ
b2ludCgpIGNvbnN0OwpAQCAtMjQ5LDE2ICsyNTEsNiBAQCBpbmxpbmUgRmxvYXRQb2ludCBvcGVy
YXRvci0oY29uc3QgRmxvYXRQb2ludCYgYSkKICAgICByZXR1cm4gRmxvYXRQb2ludCgtYS54KCks
IC1hLnkoKSk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRmxvYXRQb2ludCYg
YSwgY29uc3QgRmxvYXRQb2ludCYgYikKLXsKLSAgICByZXR1cm4gYS54KCkgPT0gYi54KCkgJiYg
YS55KCkgPT0gYi55KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRmxvYXRQ
b2ludCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKLXsKLSAgICByZXR1cm4gYS54KCkgIT0gYi54
KCkgfHwgYS55KCkgIT0gYi55KCk7Ci19Ci0KIGlubGluZSBmbG9hdCBvcGVyYXRvciooY29uc3Qg
RmxvYXRQb2ludCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKIHsKICAgICAvLyBkb3QgcHJvZHVj
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2lu
dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaApp
bmRleCBkMmIzZTVlYzRmODFkNGRlNTE0Y2FmNzc2ZGQxNzZhMjI5M2IxMWNjLi43MmI0ZDMyM2Jh
Yzg0ODdkYjAwNmZlMDI3ODc4NWJkZjRkYjg2ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaApAQCAtMTE5LDYgKzExOSw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICBmbG9hdCBkaXN0YW5jZVRvKGNvbnN0IEZsb2F0UG9pbnQzRCYgYSkgY29u
c3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmxvYXRQb2ludDNEJikgY29uc3QgPSBk
ZWZhdWx0OworCiBwcml2YXRlOgogICAgIGZsb2F0IG1feCB7IDAgfTsKICAgICBmbG9hdCBtX3kg
eyAwIH07CkBAIC0xNjksMTYgKzE3MSw2IEBAIGlubGluZSBGbG9hdFBvaW50M0Qgb3BlcmF0b3It
KGNvbnN0IEZsb2F0UG9pbnQzRCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKICAgICByZXR1cm4g
RmxvYXRQb2ludDNEKGEueCgpIC0gYi54KCksIGEueSgpIC0gYi55KCksIGEueigpKTsKIH0KIAot
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFBvaW50M0QmIGEsIGNvbnN0IEZsb2F0
UG9pbnQzRCYgYikKLXsKLSAgICByZXR1cm4gYS54KCkgPT0gYi54KCkgJiYgYS55KCkgPT0gYi55
KCkgJiYgYS56KCkgPT0gYi56KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RmxvYXRQb2ludDNEJiBhLCBjb25zdCBGbG9hdFBvaW50M0QmIGIpCi17Ci0gICAgcmV0dXJuIGEu
eCgpICE9IGIueCgpIHx8IGEueSgpICE9IGIueSgpIHx8IGEueigpICE9IGIueigpOwotfQotCiBp
bmxpbmUgZmxvYXQgb3BlcmF0b3IqKGNvbnN0IEZsb2F0UG9pbnQzRCYgYSwgY29uc3QgRmxvYXRQ
b2ludDNEJiBiKQogewogICAgIC8vIGRvdCBwcm9kdWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5oCmluZGV4IDBmNjMwM2QyZDFlNDMwN2E1MzNkOTI0MDc5
OWVkOTlhZTdiOWQ3YjQuLmQzNDBjMDlhNTgzZGYyNDE5MDJlNTU4NTBjYjc5OGQ2M2Q0MTZhOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5oCkBAIC0x
NTMsNiArMTUzLDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IGRlY29kZShEZWNvZGVyJik7CiAKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRmxvYXRRdWFkJikgY29uc3QgPSBkZWZhdWx0OworCiBwcml2YXRl
OgogICAgIEZsb2F0UG9pbnQgbV9wMTsKICAgICBGbG9hdFBvaW50IG1fcDI7CkBAIC0yMDUsMTYg
KzIwNyw2IEBAIGlubGluZSBGbG9hdFF1YWQmIG9wZXJhdG9yLT0oRmxvYXRRdWFkJiBhLCBjb25z
dCBGbG9hdFNpemUmIGIpCiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgRmxvYXRRdWFkJiBhLCBjb25zdCBGbG9hdFF1YWQmIGIpCi17Ci0gICAgcmV0dXJu
IGEucDEoKSA9PSBiLnAxKCkgJiYgYS5wMigpID09IGIucDIoKSAmJiBhLnAzKCkgPT0gYi5wMygp
ICYmIGEucDQoKSA9PSBiLnA0KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RmxvYXRRdWFkJiBhLCBjb25zdCBGbG9hdFF1YWQmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBi
KTsKLX0KLQogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIGNvbnN0IEZsb2F0UXVhZCYpOwogCiBWZWN0b3I8RmxvYXRSZWN0PiBib3Vu
ZGluZ0JveGVzKGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCmluZGV4IDVjNzYyZDRhN2JlZjE2NDA0NDJhNDYy
MmFhODJlYjZiNDlhMDhlOGQuLmU4MWFlM2E4ZDFiYzY4NGNhZDNiZjI5MzJlZjdmNDMxNzMxNTFh
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCkBA
IC0yMzMsNiArMjMzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBGbG9hdFJlY3QgaW5maW5pdGVS
ZWN0KCk7CiAgICAgYm9vbCBpc0luZmluaXRlKCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRmxvYXRSZWN0JikgY29uc3QgPSBkZWZhdWx0OworCiBwcml2YXRlOgogICAgIEZs
b2F0UG9pbnQgbV9sb2NhdGlvbjsKICAgICBGbG9hdFNpemUgbV9zaXplOwpAQCAtMjc0LDE2ICsy
NzYsNiBAQCBpbmxpbmUgRmxvYXRSZWN0IG9wZXJhdG9yKyhjb25zdCBGbG9hdFJlY3QmIGEsIGNv
bnN0IEZsb2F0UmVjdCYgYikKICAgICByZXR1cm4gYzsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBGbG9hdFJlY3QmIGEsIGNvbnN0IEZsb2F0UmVjdCYgYikKLXsKLSAgICByZXR1
cm4gYS5sb2NhdGlvbigpID09IGIubG9jYXRpb24oKSAmJiBhLnNpemUoKSA9PSBiLnNpemUoKTsK
LX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGbG9hdFJlY3QmIGEsIGNvbnN0IEZs
b2F0UmVjdCYgYikKLXsKLSAgICByZXR1cm4gYS5sb2NhdGlvbigpICE9IGIubG9jYXRpb24oKSB8
fCBhLnNpemUoKSAhPSBiLnNpemUoKTsKLX0KLQogaW5saW5lIEZsb2F0UmVjdCBGbG9hdFJlY3Q6
OmluZmluaXRlUmVjdCgpCiB7CiAgICAgc3RhdGljIEZsb2F0UmVjdCBpbmZpbml0ZVJlY3QoLXN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAvIDIsIC1zdGQ6Om51bWVyaWNfbGltaXRz
PGZsb2F0Pjo6bWF4KCkgLyAyLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCksIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmgKaW5kZXggNzcyNGQwM2UxODE1
OGNmYjViNmRjMWU5YzQ5ZGNmODg2ZWRmYjdmMC4uYWMwMWIxMTNmNmIyNDM2NDRmOGY3MTA3NTcw
OWE4NjBlNDM1MWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRSb3VuZGVkUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0Um91bmRlZFJlY3QuaApAQCAtOTQsNiArOTQsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHZvaWQgc2hyaW5rKGZsb2F0IHRvcFdpZHRoLCBmbG9hdCBib3R0b21XaWR0aCwgZmxvYXQgbGVm
dFdpZHRoLCBmbG9hdCByaWdodFdpZHRoKSB7IGV4cGFuZCgtdG9wV2lkdGgsIC1ib3R0b21XaWR0
aCwgLWxlZnRXaWR0aCwgLXJpZ2h0V2lkdGgpOyB9CiAgICAgICAgIHZvaWQgc2hyaW5rKGZsb2F0
IHNpemUpIHsgc2hyaW5rKHNpemUsIHNpemUsIHNpemUsIHNpemUpOyB9CiAKKyAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJhZGlpJikgY29uc3QgPSBkZWZhdWx0OworCiAgICAgcHJpdmF0
ZToKICAgICAgICAgRmxvYXRTaXplIG1fdG9wTGVmdDsKICAgICAgICAgRmxvYXRTaXplIG1fdG9w
UmlnaHQ7CkBAIC0xNDQsMzEgKzE0NiwxMyBAQCBwdWJsaWM6CiAKICAgICBib29sIGludGVyc2Vj
dGlvbklzUmVjdGFuZ3VsYXIoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpIGNvbnN0ID0gZGVmYXVsdDsKKwogcHJp
dmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIFJhZGlpIG1fcmFkaWk7CiB9OwogCi1p
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBhLCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgYikKLXsKLSAgICByZXR1cm4gYS50b3BMZWZ0
KCkgPT0gYi50b3BMZWZ0KCkgJiYgYS50b3BSaWdodCgpID09IGIudG9wUmlnaHQoKSAmJiBhLmJv
dHRvbUxlZnQoKSA9PSBiLmJvdHRvbUxlZnQoKSAmJiBhLmJvdHRvbVJpZ2h0KCkgPT0gYi5ib3R0
b21SaWdodCgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3Q6OlJhZGlpJiBhLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgYikKLXsKLSAg
ICByZXR1cm4gIShhID09IGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIGEsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGIpCi17Ci0gICAgcmV0
dXJuIGEucmVjdCgpID09IGIucmVjdCgpICYmIGEucmFkaWkoKSA9PSBiLnJhZGlpKCk7Ci19Ci0K
LWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgYSwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBpbmxp
bmUgZmxvYXQgY2FsY0JvcmRlclJhZGlpQ29uc3RyYWludFNjYWxlRm9yKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQogewogICAgIC8v
IENvbnN0cmFpbiBjb3JuZXIgcmFkaWkgdXNpbmcgQ1NTMyBydWxlczoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKaW5kZXggZTJkZWY4NTcxNmUzM2U5MWEz
NjMxYmUxY2IyZmMyYmFkYjUzMWUyOS4uNzM5YTE1YzQ4YmNiNzIwZmQ0ZDY5YTBlN2I2YjJjMjU1
YTFjMzU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXpl
LmgKQEAgLTE2Nyw2ICsxNjcsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxKU09OOjpPYmplY3Q+IHRvSlNPTk9iamVj
dCgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0
ID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICBmbG9hdCBtX3dpZHRoIHsgMCB9OwogICAgIGZs
b2F0IG1faGVpZ2h0IHsgMCB9OwpAQCAtMjMxLDIxICsyMzMsMTEgQEAgaW5saW5lIEZsb2F0U2l6
ZSBvcGVyYXRvci8oZmxvYXQgYSwgY29uc3QgRmxvYXRTaXplJiBiKQogICAgIHJldHVybiBGbG9h
dFNpemUoYSAvIGIud2lkdGgoKSwgYSAvIGIuaGVpZ2h0KCkpOwogfQogCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQotewotICAg
IHJldHVybiBhLndpZHRoKCkgPT0gYi53aWR0aCgpICYmIGEuaGVpZ2h0KCkgPT0gYi5oZWlnaHQo
KTsKLX0KLQogaW5saW5lIGJvb2wgYXJlRXNzZW50aWFsbHlFcXVhbChjb25zdCBGbG9hdFNpemUm
IGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKIHsKICAgICByZXR1cm4gV1RGOjphcmVFc3NlbnRpYWxs
eUVxdWFsKGEud2lkdGgoKSwgYi53aWR0aCgpKSAmJiBXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwo
YS5oZWlnaHQoKSwgYi5oZWlnaHQoKSk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgRmxvYXRTaXplJiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCi17Ci0gICAgcmV0dXJuIGEud2lk
dGgoKSAhPSBiLndpZHRoKCkgfHwgYS5oZWlnaHQoKSAhPSBiLmhlaWdodCgpOwotfQotCiBpbmxp
bmUgSW50U2l6ZSByb3VuZGVkSW50U2l6ZShjb25zdCBGbG9hdFNpemUmIHApCiB7CiAgICAgcmV0
dXJuIEludFNpemUoY2xhbXBUb0ludGVnZXIocm91bmRmKHAud2lkdGgoKSkpLCBjbGFtcFRvSW50
ZWdlcihyb3VuZGYocC5oZWlnaHQoKSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5jcHAKaW5kZXggNGU5NDlkZmFiOTc2NWEyYTA3YzQ4NzhhYmVlMTAzZmJhZjIxZjU3
MC4uNzU2MjYzYTk1YjEwYjFkOGQwODQ0YzU5ZWRjYjM2ZWVjMWI4OWE2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTU2MCwxMyArNTYwLDkgQEAgc3Ry
dWN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5IHsKICAgICBBdG9tU3RyaW5nIGxvY2FsZTsKICAg
ICBVQ2hhcjMyIGNoYXJhY3RlciB7IDAgfTsKICAgICBib29sIGlzRm9yUGxhdGZvcm1Gb250IHsg
ZmFsc2UgfTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBL
ZXkmKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5JiBhLCBjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtl
eSYgYikKLXsKLSAgICByZXR1cm4gYS5sb2NhbGUgPT0gYi5sb2NhbGUgJiYgYS5jaGFyYWN0ZXIg
PT0gYi5jaGFyYWN0ZXIgJiYgYS5pc0ZvclBsYXRmb3JtRm9udCA9PSBiLmlzRm9yUGxhdGZvcm1G
b250OwotfQotCiBzdHJ1Y3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlIYXNoIHsKICAgICBzdGF0
aWMgdW5zaWduZWQgaGFzaChjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleSYga2V5KSB7IHJl
dHVybiBjb21wdXRlSGFzaChrZXkubG9jYWxlLCBrZXkuY2hhcmFjdGVyLCBrZXkuaXNGb3JQbGF0
Zm9ybUZvbnQpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ2hhcmFjdGVyRmFsbGJh
Y2tNYXBLZXkmIGEsIGNvbnN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5JiBiKSB7IHJldHVybiBh
ID09IGI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUu
Y3BwCmluZGV4IGIyNWU3ZGZiOTdhMTAyOTk3YjBmYWUzM2Q3NTM4MTVmODlhMzAzZWQuLmE1MzQ5
ZjQ0ODI3YTYxMTg3ZTY0MDBhMDNkYzRkZjQ5YzdmNzM2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtNzUsMjQgKzc1LDEzIEBAIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udEZhbWlseU5hbWUmIGEsIGNvbnN0IEZvbnRG
YW1pbHlOYW1lJiBiKQogICAgIHJldHVybiAoYS5zdHJpbmcoKS5pc051bGwoKSB8fCBiLnN0cmlu
ZygpLmlzTnVsbCgpKSA/IGEuc3RyaW5nKCkgPT0gYi5zdHJpbmcoKSA6IEZvbnRDYXNjYWRlRGVz
Y3JpcHRpb246OmZhbWlseU5hbWVzQXJlRXF1YWwoYS5zdHJpbmcoKSwgYi5zdHJpbmcoKSk7CiB9
CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udEZhbWlseU5hbWUmIGEsIGNvbnN0
IEZvbnRGYW1pbHlOYW1lJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIHN0cnVj
dCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkgewogICAgIEZvbnREZXNjcmlwdGlvbktleSBkZXNj
cmlwdGlvbktleTsKICAgICBGb250RmFtaWx5TmFtZSBmYW1pbHk7CiAgICAgRm9udENyZWF0aW9u
Q29udGV4dCBmb250Q3JlYXRpb25Db250ZXh0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
b250UGxhdGZvcm1EYXRhQ2FjaGVLZXkmKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCi1zdGF0aWMg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleSYgYSwgY29uc3Qg
Rm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5JiBiKQotewotICAgIHJldHVybiBhLmRlc2NyaXB0aW9u
S2V5ID09IGIuZGVzY3JpcHRpb25LZXkKLSAgICAgICAgJiYgYS5mYW1pbHkgPT0gYi5mYW1pbHkK
LSAgICAgICAgJiYgYS5mb250Q3JlYXRpb25Db250ZXh0ID09IGIuZm9udENyZWF0aW9uQ29udGV4
dDsKLX0KLQogc3RydWN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleUhhc2ggewogICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleSYga2V5KSB7IHJl
dHVybiBjb21wdXRlSGFzaChrZXkuZGVzY3JpcHRpb25LZXksIGtleS5mYW1pbHksIGtleS5mb250
Q3JlYXRpb25Db250ZXh0KTsgfQogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IEZvbnRQbGF0
Zm9ybURhdGFDYWNoZUtleSYgYSwgY29uc3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5JiBiKSB7
IHJldHVybiBhID09IGI7IH0KQEAgLTM1NCwxNCArMzQzLDYgQEAgdm9pZCBGb250Q2FjaGU6OnB1
cmdlSW5hY3RpdmVGb250RGF0YSh1bnNpZ25lZCBwdXJnZUNvdW50KQogICAgIHBsYXRmb3JtUHVy
Z2VJbmFjdGl2ZUZvbnREYXRhKCk7CiB9CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250Q2Fz
Y2FkZUNhY2hlS2V5JiBhLCBjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBiKQotewotICAgIHJl
dHVybiBhLmZvbnREZXNjcmlwdGlvbktleSA9PSBiLmZvbnREZXNjcmlwdGlvbktleQotICAgICAg
ICAmJiBhLmZvbnRTZWxlY3RvcklkID09IGIuZm9udFNlbGVjdG9ySWQKLSAgICAgICAgJiYgYS5m
b250U2VsZWN0b3JWZXJzaW9uID09IGIuZm9udFNlbGVjdG9yVmVyc2lvbgotICAgICAgICAmJiBh
LmZhbWlsaWVzID09IGIuZmFtaWxpZXM7Ci19Ci0KIHVuc2lnbmVkIEZvbnRDYXNjYWRlQ2FjaGVL
ZXlIYXNoOjpoYXNoKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGtleSkKIHsKICAgICByZXR1
cm4gY29tcHV0ZUhhc2goa2V5LmZvbnREZXNjcmlwdGlvbktleSwga2V5LmZvbnRTZWxlY3Rvcklk
LCBrZXkuZm9udFNlbGVjdG9yVmVyc2lvbiwga2V5LmZhbWlsaWVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggNzZiYjlmM2JiYjUxNGIwMTQ1
YjdhOWUxNzQ3NzNjNTM0NzEzNWZhOS4uNWFkNzVjYzgyZTkyY2FiNmM1MTY5ZjhkMWNlYzljZjkw
MmZmYzM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmgKQEAgLTE2MSwxMSArMTYxLDYgQEAgc3RydWN0IEZvbnREZXNjcmlwdGlvbktleSB7CiAgICAg
ICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZURhdGEsIG90aGVyLm1fcmFy
ZURhdGEpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RGVzY3JpcHRp
b25LZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOwotICAgIH0KLQogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX2lzRGVsZXRlZFZhbHVlOyB9CiAKICAgICBmcmllbmQgdm9pZCBhZGQoSGFzaGVy
JiwgY29uc3QgRm9udERlc2NyaXB0aW9uS2V5Jik7CkBAIC0yNDgsMTYgKzI0MywxNSBAQCBwcml2
YXRlOgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiwgY29uc3Qg
Rm9udEZhbWlseU5hbWUmKTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RmFtaWx5TmFtZSYs
IGNvbnN0IEZvbnRGYW1pbHlOYW1lJik7CiAKIHN0cnVjdCBGb250Q2FzY2FkZUNhY2hlS2V5IHsK
ICAgICBGb250RGVzY3JpcHRpb25LZXkgZm9udERlc2NyaXB0aW9uS2V5OyAvLyBTaGFyZWQgd2l0
aCB0aGUgbG93ZXIgbGV2ZWwgRm9udENhY2hlIChjYWNoaW5nIEZvbnQgb2JqZWN0cykKICAgICBW
ZWN0b3I8Rm9udEZhbWlseU5hbWUsIDM+IGZhbWlsaWVzOwogICAgIHVuc2lnbmVkIGZvbnRTZWxl
Y3RvcklkOwogICAgIHVuc2lnbmVkIGZvbnRTZWxlY3RvclZlcnNpb247Ci19OwogCi1ib29sIG9w
ZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYsIGNvbnN0IEZvbnRDYXNjYWRlQ2Fj
aGVLZXkmKTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYp
IGNvbnN0ID0gZGVmYXVsdDsKK307CiAKIHN0cnVjdCBGb250Q2FzY2FkZUNhY2hlRW50cnkgewog
ICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IGMzNDU2ODAxN2ZjZGU5ODNlNmY1
YWM3MGVlMTc4M2E5ZjczZTkwNTMuLmQxMDBjNzllODU4ODkzMDdmNzdkZjg5YjMzMzYxYjdiZmU2
NWQyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuaApAQCAtMTExLDcgKzExMSw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBGb250
Q2FzY2FkZSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRDYXNjYWRlJik7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGUmIG90aGVyKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udENhc2NhZGUmIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlv
biYgZm9udERlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mb250RGVzY3JpcHRpb247IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGVEZXNjcmlwdGlvbi5oCmluZGV4IDYzZWJhMmI5MDc2ZjY2ZGUxMTE2ODVhOWVmYTY4YTMy
OWFmOWNkYjUuLjc0NWZiNDYxY2I2OGU3ZWVkNjc0MTU2YjM1Mzk2YjJhOGI4MWQxMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRGVzY3Jp
cHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZURlc2NyaXB0aW9uLmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24oKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQogCiAgICAgdW5zaWduZWQgZmFtaWx5Q291bnQoKSBjb25zdCB7IHJldHVy
biBtX2ZhbWlsaWVzLT5zaXplKCk7IH0KICAgICBjb25zdCBBdG9tU3RyaW5nJiBmaXJzdEZhbWls
eSgpIGNvbnN0IHsgcmV0dXJuIGZhbWlseUF0KDApOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q3JlYXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q3JlYXRpb25Db250ZXh0LmgKaW5kZXggNjM0MmVh
MDIyMmFiMWRjODEzYjllZmYwODEzY2UxNjBhNGE2ZWFlNS4uZjc2MGYyNWUyMDk1YThiOTlmZmYz
ZTRjOWY5MGQ3MmE4NTA0YmMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENyZWF0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDcmVhdGlvbkNvbnRleHQuaApAQCAtNTUsMTEgKzU1LDYgQEAgcHVi
bGljOgogICAgICAgICAgICAgJiYgbV9mb250UGFsZXR0ZVZhbHVlcyA9PSBvdGhlci5tX2ZvbnRQ
YWxldHRlVmFsdWVzOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250Q3Jl
YXRpb25Db250ZXh0UmFyZURhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBGb250Q3JlYXRpb25D
b250ZXh0UmFyZURhdGEoY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYgZm9udEZhY2VGZWF0dXJl
cywgY29uc3QgRm9udFBhbGV0dGVWYWx1ZXMmIGZvbnRQYWxldHRlVmFsdWVzKQogICAgICAgICA6
IG1fZm9udEZhY2VGZWF0dXJlcyhmb250RmFjZUZlYXR1cmVzKQpAQCAtMTA0LDExICs5OSw2IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEobV9yYXJlRGF0
YSwgb3RoZXIubV9yYXJlRGF0YSk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEZvbnRDcmVhdGlvbkNvbnRleHQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBGb250U2VsZWN0aW9u
U3BlY2lmaWVkQ2FwYWJpbGl0aWVzIG1fZm9udEZhY2VDYXBhYmlsaXRpZXM7CiAgICAgUmVmUHRy
PEZvbnRDcmVhdGlvbkNvbnRleHRSYXJlRGF0YT4gbV9yYXJlRGF0YTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKaW5kZXggNjgxOWEy
MWE1ZWEwZTNjMmJkYjYwMzhkYTYyNzEyMzQzNjJhMDI0NS4uOWNmMTA5ODg0YmIwZDQxZjUzNzAz
NDRlNmIzYzNlMmU2ZGQyN2VmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKQEAgLTQxLDggKzQxLDcgQEAgY2xhc3MgRm9udERl
c2NyaXB0aW9uIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBGb250RGVzY3JpcHRpb24o
KTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RGVzY3JpcHRpb24mKSBjb25zdDsK
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udERlc2NyaXB0aW9uJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Rm9udERlc2NyaXB0aW9uJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgZmxvYXQgY29tcHV0ZWRT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlZFNpemU7IH0KICAgICB1bnNpZ25lZCBjb21w
dXRlZFBpeGVsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHVuc2lnbmVkKG1fY29tcHV0ZWRTaXplICsg
MC41Zik7IH0KQEAgLTE4Miw0MSArMTgxLDYgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3No
b3VsZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nIDogMTsgLy8gSWYgbGV0dGVyLXNwYWNpbmcg
aXMgbm9uemVybywgd2UgbmVlZCB0byBkaXNhYmxlIGxpZ2F0dXJlcywgd2hpY2ggYWZmZWN0cyBm
b250IHByZXBhcmF0aW9uCiB9OwogCi1pbmxpbmUgYm9vbCBGb250RGVzY3JpcHRpb246Om9wZXJh
dG9yPT0oY29uc3QgRm9udERlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9jb21wdXRlZFNpemUgPT0gb3RoZXIubV9jb21wdXRlZFNpemUKLSAgICAgICAgJiYgbV9mb250
U2VsZWN0aW9uUmVxdWVzdCA9PSBvdGhlci5tX2ZvbnRTZWxlY3Rpb25SZXF1ZXN0Ci0gICAgICAg
ICYmIG1fcmVuZGVyaW5nTW9kZSA9PSBvdGhlci5tX3JlbmRlcmluZ01vZGUKLSAgICAgICAgJiYg
bV90ZXh0UmVuZGVyaW5nID09IG90aGVyLm1fdGV4dFJlbmRlcmluZwotICAgICAgICAmJiBtX29y
aWVudGF0aW9uID09IG90aGVyLm1fb3JpZW50YXRpb24KLSAgICAgICAgJiYgbV9ub25DSktHbHlw
aE9yaWVudGF0aW9uID09IG90aGVyLm1fbm9uQ0pLR2x5cGhPcmllbnRhdGlvbgotICAgICAgICAm
JiBtX3dpZHRoVmFyaWFudCA9PSBvdGhlci5tX3dpZHRoVmFyaWFudAotICAgICAgICAmJiBtX3Nw
ZWNpZmllZExvY2FsZSA9PSBvdGhlci5tX3NwZWNpZmllZExvY2FsZQotICAgICAgICAmJiBtX2Zl
YXR1cmVTZXR0aW5ncyA9PSBvdGhlci5tX2ZlYXR1cmVTZXR0aW5ncwotICAgICAgICAmJiBtX3Zh
cmlhdGlvblNldHRpbmdzID09IG90aGVyLm1fdmFyaWF0aW9uU2V0dGluZ3MKLSAgICAgICAgJiYg
bV9mb250U3ludGhlc2lzID09IG90aGVyLm1fZm9udFN5bnRoZXNpcwotICAgICAgICAmJiBtX3Zh
cmlhbnRDb21tb25MaWdhdHVyZXMgPT0gb3RoZXIubV92YXJpYW50Q29tbW9uTGlnYXR1cmVzCi0g
ICAgICAgICYmIG1fdmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMgPT0gb3RoZXIubV92YXJp
YW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlcwotICAgICAgICAmJiBtX3ZhcmlhbnRIaXN0b3JpY2Fs
TGlnYXR1cmVzID09IG90aGVyLm1fdmFyaWFudEhpc3RvcmljYWxMaWdhdHVyZXMKLSAgICAgICAg
JiYgbV92YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMgPT0gb3RoZXIubV92YXJpYW50Q29udGV4
dHVhbEFsdGVybmF0ZXMKLSAgICAgICAgJiYgbV92YXJpYW50UG9zaXRpb24gPT0gb3RoZXIubV92
YXJpYW50UG9zaXRpb24KLSAgICAgICAgJiYgbV92YXJpYW50Q2FwcyA9PSBvdGhlci5tX3Zhcmlh
bnRDYXBzCi0gICAgICAgICYmIG1fdmFyaWFudE51bWVyaWNGaWd1cmUgPT0gb3RoZXIubV92YXJp
YW50TnVtZXJpY0ZpZ3VyZQotICAgICAgICAmJiBtX3ZhcmlhbnROdW1lcmljU3BhY2luZyA9PSBv
dGhlci5tX3ZhcmlhbnROdW1lcmljU3BhY2luZwotICAgICAgICAmJiBtX3ZhcmlhbnROdW1lcmlj
RnJhY3Rpb24gPT0gb3RoZXIubV92YXJpYW50TnVtZXJpY0ZyYWN0aW9uCi0gICAgICAgICYmIG1f
dmFyaWFudE51bWVyaWNPcmRpbmFsID09IG90aGVyLm1fdmFyaWFudE51bWVyaWNPcmRpbmFsCi0g
ICAgICAgICYmIG1fdmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyA9PSBvdGhlci5tX3ZhcmlhbnRO
dW1lcmljU2xhc2hlZFplcm8KLSAgICAgICAgJiYgbV92YXJpYW50QWx0ZXJuYXRlcyA9PSBvdGhl
ci5tX3ZhcmlhbnRBbHRlcm5hdGVzCi0gICAgICAgICYmIG1fdmFyaWFudEVhc3RBc2lhblZhcmlh
bnQgPT0gb3RoZXIubV92YXJpYW50RWFzdEFzaWFuVmFyaWFudAotICAgICAgICAmJiBtX3Zhcmlh
bnRFYXN0QXNpYW5XaWR0aCA9PSBvdGhlci5tX3ZhcmlhbnRFYXN0QXNpYW5XaWR0aAotICAgICAg
ICAmJiBtX3ZhcmlhbnRFYXN0QXNpYW5SdWJ5ID09IG90aGVyLm1fdmFyaWFudEVhc3RBc2lhblJ1
YnkKLSAgICAgICAgJiYgbV9vcHRpY2FsU2l6aW5nID09IG90aGVyLm1fb3B0aWNhbFNpemluZwot
ICAgICAgICAmJiBtX2ZvbnRTdHlsZUF4aXMgPT0gb3RoZXIubV9mb250U3R5bGVBeGlzCi0gICAg
ICAgICYmIG1fc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgPT0gb3RoZXIubV9zaG91bGRB
bGxvd1VzZXJJbnN0YWxsZWRGb250cwotICAgICAgICAmJiBtX3Nob3VsZERpc2FibGVMaWdhdHVy
ZXNGb3JTcGFjaW5nID09IG90aGVyLm1fc2hvdWxkRGlzYWJsZUxpZ2F0dXJlc0ZvclNwYWNpbmcK
LSAgICAgICAgJiYgbV9mb250UGFsZXR0ZSA9PSBvdGhlci5tX2ZvbnRQYWxldHRlOwotfQotCiB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBGb250RGVzY3JpcHRpb246OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udFBhbGV0dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRQYWxldHRlLmgKaW5kZXggNTQxYjA0OGZkNTA4NjI4NTJjNjlmYWM5YTZhZjFkYWE4
M2RlNzI5NS4uZTMyNmFjYmFjMTZmZWM5YTMxOTAwM2NiMTg5NDczNWNlMWY0ZmEyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZS5oCkBAIC0zMywx
NyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRm9udFBhbGV0dGUgewot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGFsZXR0ZSYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpDdXN0b20pCi0gICAgICAgICAgICByZXR1cm4g
b3RoZXIudHlwZSA9PSBUeXBlOjpDdXN0b20gJiYgaWRlbnRpZmllciA9PSBvdGhlci5pZGVudGlm
aWVyOwotICAgICAgICByZXR1cm4gdHlwZSA9PSBvdGhlci50eXBlOwotICAgIH0KLQotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBGb250UGFsZXR0ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBGb250UGFsZXR0ZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3Mg
VHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBOb3JtYWwsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaAppbmRleCA0YjFmZTQ0OWQw
MGUyNjU5MTBiNjQxYTE5ZWQ1YTkzYTgwY2JhMmM3Li4wYTkzMWY3ODY2MTgwY2M2ZGIwNTE2NjFm
ZmI1M2IyZmZlMGM5ZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmgKQEAgLTU2LDE5ICs1Niw3IEBAIHN0cnVjdCBGb250
UGFsZXR0ZUluZGV4IHsKICAgICAgICAgcmV0dXJuIHR5cGUgIT0gVHlwZTo6SW50ZWdlciB8fCBp
bnRlZ2VyOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGFsZXR0ZUlu
ZGV4JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICh0eXBlICE9IG90aGVyLnR5cGUp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICh0eXBlID09IFR5cGU6Oklu
dGVnZXIpCi0gICAgICAgICAgICByZXR1cm4gaW50ZWdlciA9PSBvdGhlci5pbnRlZ2VyOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9u
dFBhbGV0dGVJbmRleCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGFsZXR0
ZUluZGV4JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhf
dCB7CiAgICAgICAgIExpZ2h0LApAQCAtMTE0LDE1ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX2Jhc2VQYWxldHRlIHx8ICFtX292ZXJyaWRlQ29sb3JzLmlzRW1wdHkoKTsKICAg
ICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBhbGV0dGVWYWx1ZXMmIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmFzZVBhbGV0dGUgPT0gb3RoZXIubV9i
YXNlUGFsZXR0ZSAmJiBtX292ZXJyaWRlQ29sb3JzID09IG90aGVyLm1fb3ZlcnJpZGVDb2xvcnM7
Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRQYWxldHRlVmFsdWVzJiBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAg
ICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQYWxldHRlVmFsdWVzJikgY29uc3Qg
PSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8Rm9udFBhbGV0dGVJbmRl
eD4gbV9iYXNlUGFsZXR0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaAppbmRleCBlN2ExNGI5YWYwYTFlYjRm
NTQ4MzA2NmRhMWQ0MThiOTdkMDYwMDNkLi4zOThmOGJlOGY4YWY5NDUyNjA3ZGMyNjc3ZTU1Y2M5
OTllNzVlMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250U2VsZWN0aW9uQWxnb3JpdGhtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oCkBAIC02NSwxMSArNjUsMTAgQEAgcHVibGlj
OgogCiAgICAgY29uc3RleHByIEJhY2tpbmdUeXBlIHJhd1ZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNraW5nOyB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotICAgIHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250
U2VsZWN0aW9uVmFsdWU+IGRlY29kZShEZWNvZGVyJik7CisgICAgZnJpZW5kIGF1dG8gb3BlcmF0
b3I8PT4oRm9udFNlbGVjdGlvblZhbHVlLCBGb250U2VsZWN0aW9uVmFsdWUpID0gZGVmYXVsdDsK
IAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFJhd1RhZyB7IFJhd1RhZyB9OwpAQCAtMTYwLDM2
ICsxNTksNiBAQCBjb25zdGV4cHIgRm9udFNlbGVjdGlvblZhbHVlIG9wZXJhdG9yLShGb250U2Vs
ZWN0aW9uVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHsgLXZhbHVlLm1fYmFja2luZywgRm9udFNl
bGVjdGlvblZhbHVlOjpSYXdUYWc6OlJhd1RhZyB9OwogfQogCi1jb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj09KEZvbnRTZWxlY3Rpb25WYWx1ZSBhLCBGb250U2VsZWN0aW9uVmFsdWUgYikKLXsKLSAg
ICByZXR1cm4gYS5yYXdWYWx1ZSgpID09IGIucmF3VmFsdWUoKTsKLX0KLQotY29uc3RleHByIGJv
b2wgb3BlcmF0b3IhPShGb250U2VsZWN0aW9uVmFsdWUgYSwgRm9udFNlbGVjdGlvblZhbHVlIGIp
Ci17Ci0gICAgcmV0dXJuIGEucmF3VmFsdWUoKSAhPSBiLnJhd1ZhbHVlKCk7Ci19Ci0KLWNvbnN0
ZXhwciBib29sIG9wZXJhdG9yPChGb250U2VsZWN0aW9uVmFsdWUgYSwgRm9udFNlbGVjdGlvblZh
bHVlIGIpCi17Ci0gICAgcmV0dXJuIGEucmF3VmFsdWUoKSA8IGIucmF3VmFsdWUoKTsKLX0KLQot
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShGb250U2VsZWN0aW9uVmFsdWUgYSwgRm9udFNlbGVj
dGlvblZhbHVlIGIpCi17Ci0gICAgcmV0dXJuIGEucmF3VmFsdWUoKSA8PSBiLnJhd1ZhbHVlKCk7
Ci19Ci0KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihGb250U2VsZWN0aW9uVmFsdWUgYSwgRm9u
dFNlbGVjdGlvblZhbHVlIGIpCi17Ci0gICAgcmV0dXJuIGEucmF3VmFsdWUoKSA+IGIucmF3VmFs
dWUoKTsKLX0KLQotY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShGb250U2VsZWN0aW9uVmFsdWUg
YSwgRm9udFNlbGVjdGlvblZhbHVlIGIpCi17Ci0gICAgcmV0dXJuIGEucmF3VmFsdWUoKSA+PSBi
LnJhd1ZhbHVlKCk7Ci19Ci0KIGNvbnN0ZXhwciBGb250U2VsZWN0aW9uVmFsdWUgaXRhbGljVGhy
ZXNob2xkKCkKIHsKICAgICByZXR1cm4gRm9udFNlbGVjdGlvblZhbHVlIHsgMjAgfTsKQEAgLTMx
MSwxMCArMjgwLDcgQEAgc3RydWN0IEZvbnRTZWxlY3Rpb25SYW5nZSB7CiAgICAgewogICAgIH0K
IAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFNlbGVjdGlvblJhbmdl
JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnRpZShtaW5pbXVtLCBt
YXhpbXVtKSA9PSBXVEY6OnRpZShvdGhlci5taW5pbXVtLCBvdGhlci5tYXhpbXVtKTsKLSAgICB9
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRTZWxlY3Rpb25SYW5nZSYpIGNvbnN0ID0g
ZGVmYXVsdDsKIAogICAgIGNvbnN0ZXhwciBib29sIGlzVmFsaWQoKSBjb25zdAogICAgIHsKQEAg
LTM5NCw2ICszNjAsOCBAQCBzdHJ1Y3QgRm9udFNlbGVjdGlvblJlcXVlc3QgewogICAgIHsKICAg
ICAgICAgcmV0dXJuIFdURjo6dGllKHdlaWdodCwgd2lkdGgsIHNsb3BlKTsKICAgICB9CisKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFNlbGVjdGlvblJlcXVlc3QmKSBjb25zdCA9IGRl
ZmF1bHQ7CiB9OwogCiBpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgRm9udFNlbGVjdGlvblZhbHVlJiBmb250U2VsZWN0aW9uVmFsdWUpCkBAIC00MDgs
MTYgKzM3Niw2IEBAIGlubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WCiAgICAgcmV0dXJuIHRzOwogfQog
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRTZWxlY3Rpb25SZXF1ZXN0JiBhLCBj
b25zdCBGb250U2VsZWN0aW9uUmVxdWVzdCYgYikKLXsKLSAgICByZXR1cm4gYS50aWVkKCkgPT0g
Yi50aWVkKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udFNlbGVjdGlv
blJlcXVlc3QmIGEsIGNvbnN0IEZvbnRTZWxlY3Rpb25SZXF1ZXN0JiBiKQotewotICAgIHJldHVy
biAhKGEgPT0gYik7Ci19Ci0KIGlubGluZSB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3Qg
Rm9udFNlbGVjdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgYWRkKGhhc2hlciwgcmVxdWVz
dC50aWVkKCkpOwpAQCAtNDQxLDE3ICszOTksOSBAQCBzdHJ1Y3QgRm9udFNlbGVjdGlvbkNhcGFi
aWxpdGllcyB7CiAgICAgUmFuZ2Ugd2VpZ2h0IHsgbm9ybWFsV2VpZ2h0VmFsdWUoKSB9OwogICAg
IFJhbmdlIHdpZHRoIHsgbm9ybWFsU3RyZXRjaFZhbHVlKCkgfTsKICAgICBSYW5nZSBzbG9wZSB7
IG5vcm1hbEl0YWxpY1ZhbHVlKCkgfTsKLX07Ci0KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyYgYSwgY29uc3QgRm9udFNlbGVjdGlvbkNh
cGFiaWxpdGllcyYgYikKLXsKLSAgICByZXR1cm4gYS50aWVkKCkgPT0gYi50aWVkKCk7Ci19CiAK
LWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udFNlbGVjdGlvbkNhcGFiaWxpdGll
cyYgYSwgY29uc3QgRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyYgYikKLXsKLSAgICByZXR1cm4g
IShhID09IGIpOwotfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250U2VsZWN0aW9uQ2Fw
YWJpbGl0aWVzJikgY29uc3QgPSBkZWZhdWx0OworfTsKIAogc3RydWN0IEZvbnRTZWxlY3Rpb25T
cGVjaWZpZWRDYXBhYmlsaXRpZXMgewogICAgIHVzaW5nIENhcGFiaWxpdGllcyA9IEZvbnRTZWxl
Y3Rpb25DYXBhYmlsaXRpZXM7CkBAIC00OTQsMTEgKzQ0NCwxMCBAQCBzdHJ1Y3QgRm9udFNlbGVj
dGlvblNwZWNpZmllZENhcGFiaWxpdGllcyB7CiAgICAgICAgIHJldHVybiBzbG9wZS52YWx1ZV9v
cihSYW5nZSB7IG5vcm1hbEl0YWxpY1ZhbHVlKCkgfSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KLSAgICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25T
cGVjaWZpZWRDYXBhYmlsaXRpZXM+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25TcGVj
aWZpZWRDYXBhYmlsaXRpZXM+IGRlY29kZShEZWNvZGVyJik7CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMmKSBjb25zdCA9IGRlZmF1
bHQ7CiAKICAgICBPcHRpb25hbFJhbmdlIHdlaWdodDsKICAgICBPcHRpb25hbFJhbmdlIHdpZHRo
OwpAQCAtNTM0LDE2ICs0ODMsNiBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25TcGVjaWZp
ZWRDYXBhYmlsaXRpZXM+IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaQogICAgIHJldHVy
biB7eyAqd2VpZ2h0LCAqd2lkdGgsICpzbG9wZSB9fTsKIH0KIAotY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzJiBhLCBjb25z
dCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzJiBiKQotewotICAgIHJldHVybiBh
LnRpZWQoKSA9PSBiLnRpZWQoKTsKLX0KLQotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzJiBhLCBjb25zdCBGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19
Ci0KIGNsYXNzIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0gewogcHVibGljOgogICAgIHVzaW5nIENh
cGFiaWxpdGllcyA9IEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCmluZGV4IDQx
YmQ3NWE2ZTBmNWYxM2Y2M2NiNTJjOWQyOThkN2Q4MjAzNWJjMzAuLjAxYmE3ZTE3NjA0NjAzYzYy
OTcyZjdmMTA1NWM1ZDE4MjZjZDJhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCkBAIC02OCw5ICs2OCw4IEBAIHB1
YmxpYzoKICAgICBGb250VGFnZ2VkU2V0dGluZygpID0gZGVsZXRlOwogICAgIEZvbnRUYWdnZWRT
ZXR0aW5nKEZvbnRUYWcsIFQgdmFsdWUpOwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZv
bnRUYWdnZWRTZXR0aW5nPFQ+JiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEZvbnRUYWdnZWRTZXR0aW5nPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7IH0KLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBGb250VGFnZ2VkU2V0dGluZzxU
PiYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250VGFnZ2VkU2V0
dGluZzxUPiYpIGNvbnN0ID0gZGVmYXVsdDsKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBGb250
VGFnZ2VkU2V0dGluZzxUPiYpIGNvbnN0OwogCiAgICAgRm9udFRhZyB0YWcoKSBjb25zdCB7IHJl
dHVybiBtX3RhZzsgfQogICAgIFQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CkBA
IC05MSwxMiArOTAsNiBAQCBGb250VGFnZ2VkU2V0dGluZzxUPjo6Rm9udFRhZ2dlZFNldHRpbmco
Rm9udFRhZyB0YWcsIFQgdmFsdWUpCiB7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotYm9v
bCBGb250VGFnZ2VkU2V0dGluZzxUPjo6b3BlcmF0b3I9PShjb25zdCBGb250VGFnZ2VkU2V0dGlu
ZzxUPiYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGFnID09IG90aGVyLm1fdGFnICYm
IG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKLX0KLQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBi
b29sIEZvbnRUYWdnZWRTZXR0aW5nPFQ+OjpvcGVyYXRvcjwoY29uc3QgRm9udFRhZ2dlZFNldHRp
bmc8VD4mIG90aGVyKSBjb25zdAogewpAQCAtMTYwLDggKzE1Myw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzIHsKIHB1YmxpYzoKICAgICB2b2lkIGlu
c2VydChGb250VGFnZ2VkU2V0dGluZzxUPiYmKTsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Rm9udFRhZ2dlZFNldHRpbmdzPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9saXN0ID09IG90
aGVyLm1fbGlzdDsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250VGFnZ2VkU2V0dGlu
Z3M8VD4mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBGb250VGFnZ2VkU2V0dGluZ3MmKSBjb25zdCA9IGRlZmF1bHQ7
CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAgICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2xpc3Quc2l6ZSgpOyB9CkBAIC0xNzQsNyArMTY2
LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250VGFnZ2VkU2V0dGluZ3M8
VD4+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Rm9udFRhZ2dlZFNldHRpbmdzPiBkZWNvZGUoRGVjb2RlciYpOwogCiBw
cml2YXRlOgogICAgIFZlY3RvcjxGb250VGFnZ2VkU2V0dGluZzxUPj4gbV9saXN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaAppbmRleCAyYTY0YzRiYzE1NDYzY2Vj
MTRiM2MyZjM5ZjI1NGZkZDA1M2JmMWYyLi5jODExYjU3MmMwZTBhNDZkOGE4OWZmODNkNzRkNjY0
YWE5OTBhNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b3VyQ0MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaApA
QCAtMzAsMTEgKzMwLDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBGb3VyQ0Mg
ewotICAgIEZvdXJDQygpID0gZGVmYXVsdDsKLSAgICBGb3VyQ0ModWludDMyX3QgdmFsdWUpIDog
dmFsdWUodmFsdWUpIHsgfQorICAgIGNvbnN0ZXhwciBGb3VyQ0ModWludDMyX3QgdmFsdWUgPSAw
KQorICAgICAgICA6IHZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CiAKLSAgICB0ZW1wbGF0ZTxz
dGQ6OnNpemVfdCBOPgotICAgIGNvbnN0ZXhwciBGb3VyQ0MoY29uc3QgY2hhciAoJmRhdGEpW05d
KQorICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+IGNvbnN0ZXhwciBGb3VyQ0MoY29uc3QgY2hh
ciAoJmRhdGEpW05dKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2VydCgoTiAtIDEpID09IDQs
ICJGb3VyQ0MgbGl0ZXJhbHMgbXVzdCBiZSBleGFjdGx5IDQgY2hhcmFjdGVycyBsb25nIik7CiAg
ICAgICAgIHZhbHVlID0gZGF0YVswXSA8PCAyNCB8IGRhdGFbMV0gPDwgMTYgfCBkYXRhWzJdIDw8
IDggfCBkYXRhWzNdOwpAQCAtNDMsOCArNDQsNyBAQCBzdHJ1Y3QgRm91ckNDIHsKICAgICBTdHJp
bmcgdG9TdHJpbmcoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjpvcHRp
b25hbDxGb3VyQ0M+IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgRm91ckNDJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdmFsdWUgPT0gb3RoZXIu
dmFsdWU7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm91ckNDJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gdmFsdWUgIT0gb3RoZXIudmFsdWU7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRm91ckNDJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgdWludDMyX3QgdmFsdWUgeyAwIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKaW5kZXggNDk0ODhjNTk5NjMyMWZiZjY1MjIyNzdiYTBjOTY5ZTUwNzBmZDVk
ZC4uODAwN2E3MmRlY2E1NTJkMDBjMTZhYTY0ZDI4ODNiYzJiNmRlNjY0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBA
IC02MywxMiArNjMsNyBAQCBwdWJsaWM6CiAgICAgVUNoYXIgY3VycmVudCgpIGNvbnN0IHsgcmV0
dXJuICgqbV90ZXh0UnVuKVttX29mZnNldF07IH0KICAgICBVQ2hhckRpcmVjdGlvbiBkaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBhdEVuZCgpID8gVV9PVEhFUl9ORVVUUkFMIDogdV9jaGFyRGly
ZWN0aW9uKGN1cnJlbnQoKSk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0Qm94
SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09
IG90aGVyLm1fb2Zmc2V0ICYmIG1fdGV4dFJ1biA9PSBvdGhlci5tX3RleHRSdW47Ci0gICAgfQot
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUZXh0Qm94SXRlcmF0b3ImKSBjb25zdCA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgY29u
c3QgVGV4dFJ1biogbV90ZXh0UnVuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDMwNzc0MzMxNWE0MWVjYTFjOWIyYmM3NzNkMDc5
ZWU1ZDQzYmFmNjUuLmZmNjU3MzZhOGQ5MmNhMTVkYjkzOTUzM2E5YjdmYTgyOGQ0NzdlNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAK
QEAgLTYyNyw3ICs2MjcsNyBAQCBTdWJzYW1wbGluZ0xldmVsIEltYWdlU291cmNlOjptYXhpbXVt
U3Vic2FtcGxpbmdMZXZlbCgpCiAgICAgLy8gRklYTUU6IHRoaXMgdmFsdWUgd2FzIGNob3NlbiB0
byBiZSBhcHByb3ByaWF0ZSBmb3IgaU9TIHNpbmNlIHRoZSBpbWFnZQogICAgIC8vIHN1YnNhbXBs
aW5nIGlzIG9ubHkgZW5hYmxlZCBieSBkZWZhdWx0IG9uIGlPUy4gQ2hvb3NlIGEgZGlmZmVyZW50
IHZhbHVlCiAgICAgLy8gaWYgaW1hZ2Ugc3Vic2FtcGxpbmcgaXMgZW5hYmxlZCBvbiBvdGhlciBw
bGF0Zm9ybS4KLSAgICBjb25zdCBpbnQgbWF4aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5n
ID0gNSAqIDEwMjQgKiAxMDI0OworICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhpbXVtSW1hZ2VB
cmVhQmVmb3JlU3Vic2FtcGxpbmcgPSA1ICogMTAyNCAqIDEwMjQ7CiAgICAgU3Vic2FtcGxpbmdM
ZXZlbCBsZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkZpcnN0OwogCiAgICAgZm9yICg7IGxldmVs
IDwgU3Vic2FtcGxpbmdMZXZlbDo6TGFzdDsgKytsZXZlbCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggODE0ZjBlMTJlYmFhNDhmODZh
Y2I1MjE5NzNjMzFkNWQzODJmNmZiZi4uZmUwNDM4YjlmZmI1MmJhNzFmZWRlNjY4Yjk5NmUwMWIw
YjBiNGNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oCkBAIC0xOTQsMTAgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbDsKICAgICAgICAgRGVjb2RpbmdPcHRpb25zIGRlY29kaW5n
T3B0aW9uczsKICAgICAgICAgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdTdGF0dXM7Ci0gICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbWFnZUZyYW1lUmVxdWVzdCYgb3RoZXIpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbmRleCA9PSBvdGhlci5pbmRleCAmJiBzdWJz
YW1wbGluZ0xldmVsID09IG90aGVyLnN1YnNhbXBsaW5nTGV2ZWwgJiYgZGVjb2RpbmdPcHRpb25z
ID09IG90aGVyLmRlY29kaW5nT3B0aW9ucyAmJiBkZWNvZGluZ1N0YXR1cyA9PSBvdGhlci5kZWNv
ZGluZ1N0YXR1czsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW1h
Z2VGcmFtZVJlcXVlc3QmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKICAgICB1c2luZyBGcmFt
ZVJlcXVlc3RRdWV1ZSA9IFN5bmNocm9uaXplZEZpeGVkUXVldWU8SW1hZ2VGcmFtZVJlcXVlc3Qs
IEJ1ZmZlclNpemU+OwogICAgIHVzaW5nIEZyYW1lQ29tbWl0UXVldWUgPSBEZXF1ZTxJbWFnZUZy
YW1lUmVxdWVzdCwgQnVmZmVyU2l6ZT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UG9pbnQuaAppbmRleCAxNmM5MjM2MTZjZDVkYTZjNDg4MmJjNzNlNjlhN2YyOWNlMTA3
YzFlLi5kZTEyOGQxMzgxZDMyMzc2ZjRlOWNmMjY3MWZlZTc5MWVlZDA0NWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKQEAgLTEyMSwxNyArMTIxLDE3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEludFBvaW50KG1feSwgbV94KTsKICAgICB9CiAK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IGRlZmF1bHQ7CisK
ICNpZiBVU0UoQ0cpCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgSW50UG9pbnQoY29uc3Qg
Q0dQb2ludCYpOyAvLyBkb24ndCBkbyB0aGlzIGltcGxpY2l0bHkgc2luY2UgaXQncyBsb3NzeQog
ICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIENHUG9pbnQoKSBjb25zdDsKICNlbmRpZgogCi0j
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0jaWYgT1MoREFSV0lOKSAmJiAhZGVmaW5lZChOU0dF
T01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykKKyNpZiAhUExBVEZPUk0oSU9T
X0ZBTUlMWSkgJiYgT1MoREFSV0lOKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NBTUVf
QVNfQ0dHRU9NRVRSWV9UWVBFUykKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBJbnRQb2lu
dChjb25zdCBOU1BvaW50Jik7IC8vIGRvbid0IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdz
IGxvc3N5CiAgICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgTlNQb2ludCgpIGNvbnN0OwogI2Vu
ZGlmCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBQTEFURk9STShXSU4p
CiAgICAgSW50UG9pbnQoY29uc3QgUE9JTlQmKTsKQEAgLTE4NiwxNiArMTg2LDYgQEAgaW5saW5l
IEludFBvaW50IG9wZXJhdG9yLShjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIElu
dFBvaW50KC1wb2ludC54KCksIC1wb2ludC55KCkpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEludFBvaW50JiBhLCBjb25zdCBJbnRQb2ludCYgYikKLXsKLSAgICByZXR1cm4g
YS54KCkgPT0gYi54KCkgJiYgYS55KCkgPT0gYi55KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgSW50UG9pbnQmIGEsIGNvbnN0IEludFBvaW50JiBiKQotewotICAgIHJldHVy
biBhLngoKSAhPSBiLngoKSB8fCBhLnkoKSAhPSBiLnkoKTsKLX0KLQogaW5saW5lIEludFNpemUg
dG9JbnRTaXplKGNvbnN0IEludFBvaW50JiBhKQogewogICAgIHJldHVybiBJbnRTaXplKGEueCgp
LCBhLnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKaW5k
ZXggOTlmYzA0YWVkMTM0NmM5YzUzZDg4M2E0ODZkNzEyNzY4M2JjYmUxZS4uZjYxMTlkOWFkZGU0
MWE2Y2MyMmNiMTY0N2E2MTY0MTExNzA2NDMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFJlY3QuaApAQCAtMTk1LDYgKzE5NSw4IEBAIHB1YmxpYzoKICAgICAvLyBS
ZXR1cm4gZmFsc2UgaWYgeCArIHdpZHRoIG9yIHkgKyBoZWlnaHQgb3ZlcmZsb3dzLgogICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludFJlY3Qm
KSBjb25zdCA9IGRlZmF1bHQ7CisKICNpZiBQTEFURk9STShXSU4pCiAgICAgSW50UmVjdChjb25z
dCBSRUNUJik7CiAgICAgb3BlcmF0b3IgUkVDVCgpIGNvbnN0OwpAQCAtMjM2LDE2ICsyMzgsNiBA
QCBpbmxpbmUgSW50UmVjdCB1bmlvblJlY3QoY29uc3QgSW50UmVjdCYgYSwgY29uc3QgSW50UmVj
dCYgYikKICAgICByZXR1cm4gYzsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
bnRSZWN0JiBhLCBjb25zdCBJbnRSZWN0JiBiKQotewotICAgIHJldHVybiBhLmxvY2F0aW9uKCkg
PT0gYi5sb2NhdGlvbigpICYmIGEuc2l6ZSgpID09IGIuc2l6ZSgpOwotfQotCi1pbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEludFJlY3QmIGEsIGNvbnN0IEludFJlY3QmIGIpCi17Ci0gICAg
cmV0dXJuIGEubG9jYXRpb24oKSAhPSBiLmxvY2F0aW9uKCkgfHwgYS5zaXplKCkgIT0gYi5zaXpl
KCk7Ci19Ci0KIGlubGluZSBJbnRSZWN0JiBvcGVyYXRvci09KEludFJlY3QmIHIsIGNvbnN0IElu
dFBvaW50JiBvZmZzZXQpCiB7CiAgICAgci5tb3ZlKC1vZmZzZXQueCgpLCAtb2Zmc2V0LnkoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0RXh0
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0RXh0ZW50LmgK
aW5kZXggNDNjODMyZTA4OGUwNDI2MjhmMjdiYWUyNDQ5YjQwOGEyMDNhNjI3MC4uNjBkMDA1ZmY0
ODZlM2RjNTJlYmY3ZDA2ZmFiNWI0N2NlYjI3YjMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdEV4dGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RFeHRlbnQuaApAQCAtNTgsNiArNTgsOCBAQCBwdWJs
aWM6CiAKICAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJuICFsZWZ0KCkgJiYgIXJpZ2h0
KCkgJiYgIXRvcCgpICYmICFib3R0b20oKTsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEludFJlY3RFeHRlbnQmKSBjb25zdCA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgaW50IG1f
dG9wIHsgMCB9OwogICAgIGludCBtX3JpZ2h0IHsgMCB9OwpAQCAtNjUsMTYgKzY3LDYgQEAgcHJp
dmF0ZToKICAgICBpbnQgbV9sZWZ0IHsgMCB9OwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBJbnRSZWN0RXh0ZW50JiBhLCBjb25zdCBJbnRSZWN0RXh0ZW50JiBiKQotewotICAg
IHJldHVybiBhLnRvcCgpID09IGIudG9wKCkgJiYgYS5yaWdodCgpID09IGIucmlnaHQoKSAmJiBh
LmJvdHRvbSgpID09IGIuYm90dG9tKCkgJiYgYS5sZWZ0KCkgPT0gYi5sZWZ0KCk7Ci19Ci0KLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW50UmVjdEV4dGVudCYgYSwgY29uc3QgSW50UmVj
dEV4dGVudCYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBSZWN0VHlwZT4KIGlubGluZSBSZWN0VHlwZSYgb3BlcmF0b3IrPShSZWN0VHlwZSYgcmVj
dCwgY29uc3QgSW50UmVjdEV4dGVudCYgZXh0ZW50KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW50U2l6ZS5oCmluZGV4IDU1NjZlYmJmMTNiN2JmNWMzOTkyYWNkZDg2N2E1
M2I4MjMzYzllMmYuLjU0YmY0N2U4NWJlYjc5ZDNhZGI3ZjEwOTc1NjRiYmFmYzBlODk4ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKQEAgLTE3NSw2ICsx
NzUsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogICAgIFJl
ZjxKU09OOjpPYmplY3Q+IHRvSlNPTk9iamVjdCgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEludFNpemUmKSBjb25zdCA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgaW50
IG1fd2lkdGggeyAwIH07CiAgICAgaW50IG1faGVpZ2h0IHsgMCB9OwpAQCAtMjA5LDE2ICsyMTEs
NiBAQCBjb25zdGV4cHIgSW50U2l6ZSBvcGVyYXRvci0oY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAg
ICByZXR1cm4gSW50U2l6ZSgtc2l6ZS53aWR0aCgpLCAtc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLWNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50U2l6ZSYgYSwgY29uc3QgSW50U2l6ZSYg
YikKLXsKLSAgICByZXR1cm4gYS53aWR0aCgpID09IGIud2lkdGgoKSAmJiBhLmhlaWdodCgpID09
IGIuaGVpZ2h0KCk7Ci19Ci0KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgSW50U2l6
ZSYgYSwgY29uc3QgSW50U2l6ZSYgYikKLXsKLSAgICByZXR1cm4gYS53aWR0aCgpICE9IGIud2lk
dGgoKSB8fCBhLmhlaWdodCgpICE9IGIuaGVpZ2h0KCk7Ci19Ci0KIFdFQkNPUkVfRVhQT1JUIFdU
Rjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBJbnRTaXpl
Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9MYXlvdXRQb2ludC5oCmluZGV4IDZmMmZlNTY2YTlkNWVjNGMzNmQxZTZhNWQ1
NWVkMjUzYTc0MGVlOTUuLjg1OTg3ZGYxOGYzMWQxYmI3ZTkyMGM0MTI0ZjNlZTdjOTc2MjExYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UG9pbnQuaApA
QCAtMTA3LDYgKzEwNyw4IEBAIHB1YmxpYzoKIAogICAgIG9wZXJhdG9yIEZsb2F0UG9pbnQoKSBj
b25zdCB7IHJldHVybiB7IG1feCwgbV95IH07IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBMYXlvdXRQb2ludCYpIGNvbnN0ID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICBMYXlvdXRV
bml0IG1feCwgbV95OwogfTsKQEAgLTE0OCwxNiArMTUwLDYgQEAgaW5saW5lIExheW91dFBvaW50
IG9wZXJhdG9yLShjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgcmV0dXJuIExheW91dFBv
aW50KC1wb2ludC54KCksIC1wb2ludC55KCkpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IExheW91dFBvaW50JiBhLCBjb25zdCBMYXlvdXRQb2ludCYgYikKLXsKLSAgICByZXR1
cm4gYS54KCkgPT0gYi54KCkgJiYgYS55KCkgPT0gYi55KCk7Ci19Ci0KLWlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgTGF5b3V0UG9pbnQmIGEsIGNvbnN0IExheW91dFBvaW50JiBiKQotewot
ICAgIHJldHVybiBhLngoKSAhPSBiLngoKSB8fCBhLnkoKSAhPSBiLnkoKTsKLX0KLQogaW5saW5l
IExheW91dFBvaW50IHRvTGF5b3V0UG9pbnQoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKIHsKICAg
ICByZXR1cm4gTGF5b3V0UG9pbnQoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaAppbmRleCBhYjYyNzM4
ZDkxOWI3Y2MxY2EwYzQ1Zjc0OGNjYWE1YzkzMTM1MjJmLi43Y2YxZmUyYjI4YTc5MzFkMTQ3NzNj
YmVjYjc2MTNlYzkzZmQ4ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9MYXlvdXRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTGF5b3V0UmVjdC5oCkBAIC0yMjMsNiArMjIzLDggQEAgcHVibGljOgogICAgIAogICAgIG9w
ZXJhdG9yIEZsb2F0UmVjdCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVjdChtX2xvY2F0aW9uLCBt
X3NpemUpOyB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0
ID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNldExvY2F0aW9uQW5kU2l6ZUZyb21F
ZGdlcyhMYXlvdXRVbml0IGxlZnQsIExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IHJpZ2h0LCBM
YXlvdXRVbml0IGJvdHRvbSk7CiAKQEAgLTI0NiwxNiArMjQ4LDYgQEAgaW5saW5lIExheW91dFJl
Y3QgdW5pb25SZWN0KGNvbnN0IExheW91dFJlY3QmIGEsIGNvbnN0IExheW91dFJlY3QmIGIpCiAK
IExheW91dFJlY3QgdW5pb25SZWN0KGNvbnN0IFZlY3RvcjxMYXlvdXRSZWN0PiYpOwogCi1pbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExheW91dFJlY3QmIGEsIGNvbnN0IExheW91dFJlY3Qm
IGIpCi17Ci0gICAgcmV0dXJuIGEubG9jYXRpb24oKSA9PSBiLmxvY2F0aW9uKCkgJiYgYS5zaXpl
KCkgPT0gYi5zaXplKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF5b3V0
UmVjdCYgYSwgY29uc3QgTGF5b3V0UmVjdCYgYikKLXsKLSAgICByZXR1cm4gYS5sb2NhdGlvbigp
ICE9IGIubG9jYXRpb24oKSB8fCBhLnNpemUoKSAhPSBiLnNpemUoKTsKLX0KLQogaW5saW5lIGJv
b2wgTGF5b3V0UmVjdDo6aXNJbmZpbml0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICp0aGlzID09
IExheW91dFJlY3Q6OmluZmluaXRlUmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0U2l6ZS5oCmluZGV4IDRhNmQ3Nzg1MzBhZjRjYjZiMDQ0ZmI3NzdlM2U2
ZmE4ZTk3YzNhZWIuLjQ0YjRkOGJkZWM5ZjY3MDQ4YWNmM2MyY2FkZTk3ODM2MzE5NDU4YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKQEAgLTE0
MSw2ICsxNDEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3dpZHRoLm1pZ2h0QmVTYXR1
cmF0ZWQoKSB8fCBtX2hlaWdodC5taWdodEJlU2F0dXJhdGVkKCk7CiAgICAgfQogCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IExheW91dFNpemUmKSBjb25zdCA9IGRlZmF1bHQ7CisKIHByaXZh
dGU6CiAgICAgTGF5b3V0VW5pdCBtX3dpZHRoOwogICAgIExheW91dFVuaXQgbV9oZWlnaHQ7CkBA
IC0xNzUsMTYgKzE3Nyw2IEBAIGlubGluZSBMYXlvdXRTaXplIG9wZXJhdG9yLShjb25zdCBMYXlv
dXRTaXplJiBzaXplKQogICAgIHJldHVybiBMYXlvdXRTaXplKC1zaXplLndpZHRoKCksIC1zaXpl
LmhlaWdodCgpKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMYXlvdXRTaXpl
JiBhLCBjb25zdCBMYXlvdXRTaXplJiBiKQotewotICAgIHJldHVybiBhLndpZHRoKCkgPT0gYi53
aWR0aCgpICYmIGEuaGVpZ2h0KCkgPT0gYi5oZWlnaHQoKTsKLX0KLQotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBMYXlvdXRTaXplJiBhLCBjb25zdCBMYXlvdXRTaXplJiBiKQotewotICAg
IHJldHVybiBhLndpZHRoKCkgIT0gYi53aWR0aCgpIHx8IGEuaGVpZ2h0KCkgIT0gYi5oZWlnaHQo
KTsKLX0KLQogaW5saW5lIEludFNpemUgZmxvb3JlZEludFNpemUoY29uc3QgTGF5b3V0U2l6ZSYg
cykKIHsKICAgICByZXR1cm4gSW50U2l6ZShzLndpZHRoKCkuZmxvb3IoKSwgcy5oZWlnaHQoKS5m
bG9vcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhVXNhZ2VJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVz
YWdlSW5mby5oCmluZGV4IGUyNjdjNjZmMTg4YzViNjI1YWNlNWVkMzk1NGI0OThkOGI1NTU2NDIu
LjQwZjFkOTE2ZWYxNDQ2NzMwYjcyZTQxOWFkYzJiZjQ1NzI3ODdkYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFVc2FnZUluZm8uaApAQCAtNjQsNDUg
KzY0LDcgQEAgc3RydWN0IE1lZGlhVXNhZ2VJbmZvIHsKICAgICBib29sIG91dHNpZGVPZkZ1bGxz
Y3JlZW4geyBmYWxzZSB9OwogICAgIGJvb2wgaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50IHsg
ZmFsc2UgfTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNZWRpYVVzYWdlSW5mbyYgb3Ro
ZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbWVkaWFVUkwgPT0gb3RoZXIubWVkaWFV
UkwKLSAgICAgICAgICAgICYmIGlzUGxheWluZyA9PSBvdGhlci5pc1BsYXlpbmcKLSAgICAgICAg
ICAgICYmIGNhblNob3dDb250cm9sc01hbmFnZXIgPT0gb3RoZXIuY2FuU2hvd0NvbnRyb2xzTWFu
YWdlcgotICAgICAgICAgICAgJiYgY2FuU2hvd05vd1BsYXlpbmdDb250cm9scyA9PSBvdGhlci5j
YW5TaG93Tm93UGxheWluZ0NvbnRyb2xzCi0gICAgICAgICAgICAmJiBpc1N1c3BlbmRlZCA9PSBv
dGhlci5pc1N1c3BlbmRlZAotICAgICAgICAgICAgJiYgaXNJbkFjdGl2ZURvY3VtZW50ID09IG90
aGVyLmlzSW5BY3RpdmVEb2N1bWVudAotICAgICAgICAgICAgJiYgaXNGdWxsc2NyZWVuID09IG90
aGVyLmlzRnVsbHNjcmVlbgotICAgICAgICAgICAgJiYgaXNNdXRlZCA9PSBvdGhlci5pc011dGVk
Ci0gICAgICAgICAgICAmJiBpc01lZGlhRG9jdW1lbnRJbk1haW5GcmFtZSA9PSBvdGhlci5pc01l
ZGlhRG9jdW1lbnRJbk1haW5GcmFtZQotICAgICAgICAgICAgJiYgaXNWaWRlbyA9PSBvdGhlci5p
c1ZpZGVvCi0gICAgICAgICAgICAmJiBpc0F1ZGlvID09IG90aGVyLmlzQXVkaW8KLSAgICAgICAg
ICAgICYmIGhhc0F1ZGlvID09IG90aGVyLmhhc0F1ZGlvCi0gICAgICAgICAgICAmJiBoYXNWaWRl
byA9PSBvdGhlci5oYXNWaWRlbwotICAgICAgICAgICAgJiYgaGFzUmVuZGVyZXIgPT0gb3RoZXIu
aGFzUmVuZGVyZXIKLSAgICAgICAgICAgICYmIGF1ZGlvRWxlbWVudFdpdGhVc2VyR2VzdHVyZSA9
PSBvdGhlci5hdWRpb0VsZW1lbnRXaXRoVXNlckdlc3R1cmUKLSAgICAgICAgICAgICYmIHVzZXJI
YXNQbGF5ZWRBdWRpb0JlZm9yZSA9PSBvdGhlci51c2VySGFzUGxheWVkQXVkaW9CZWZvcmUKLSAg
ICAgICAgICAgICYmIGlzRWxlbWVudFJlY3RNb3N0bHlJbk1haW5GcmFtZSA9PSBvdGhlci5pc0Vs
ZW1lbnRSZWN0TW9zdGx5SW5NYWluRnJhbWUKLSAgICAgICAgICAgICYmIHBsYXliYWNrUGVybWl0
dGVkID09IG90aGVyLnBsYXliYWNrUGVybWl0dGVkCi0gICAgICAgICAgICAmJiBwYWdlTWVkaWFQ
bGF5YmFja1N1c3BlbmRlZCA9PSBvdGhlci5wYWdlTWVkaWFQbGF5YmFja1N1c3BlbmRlZAotICAg
ICAgICAgICAgJiYgaXNNZWRpYURvY3VtZW50QW5kTm90T3duZXJFbGVtZW50ID09IG90aGVyLmlz
TWVkaWFEb2N1bWVudEFuZE5vdE93bmVyRWxlbWVudAotICAgICAgICAgICAgJiYgcGFnZUV4cGxp
Y2l0bHlBbGxvd3NFbGVtZW50VG9BdXRvcGxheUlubGluZSA9PSBvdGhlci5wYWdlRXhwbGljaXRs
eUFsbG93c0VsZW1lbnRUb0F1dG9wbGF5SW5saW5lCi0gICAgICAgICAgICAmJiByZXF1aXJlc0Z1
bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrQW5kRnVsbHNjcmVlbk5vdFBlcm1pdHRlZCA9PSBvdGhl
ci5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrQW5kRnVsbHNjcmVlbk5vdFBlcm1p
dHRlZAotICAgICAgICAgICAgJiYgaGFzSGFkVXNlckludGVyYWN0aW9uQW5kUXVpcmtzQ29udGFp
bnNTaG91bGRBdXRvcGxheUZvckFyYml0cmFyeVVzZXJHZXN0dXJlID09IG90aGVyLmhhc0hhZFVz
ZXJJbnRlcmFjdGlvbkFuZFF1aXJrc0NvbnRhaW5zU2hvdWxkQXV0b3BsYXlGb3JBcmJpdHJhcnlV
c2VyR2VzdHVyZQotICAgICAgICAgICAgJiYgaXNWaWRlb0FuZFJlcXVpcmVzVXNlckdlc3R1cmVG
b3JWaWRlb1JhdGVDaGFuZ2UgPT0gb3RoZXIuaXNWaWRlb0FuZFJlcXVpcmVzVXNlckdlc3R1cmVG
b3JWaWRlb1JhdGVDaGFuZ2UKLSAgICAgICAgICAgICYmIGlzQXVkaW9BbmRSZXF1aXJlc1VzZXJH
ZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlID09IG90aGVyLmlzQXVkaW9BbmRSZXF1aXJlc1VzZXJH
ZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlCi0gICAgICAgICAgICAmJiBpc1ZpZGVvQW5kUmVxdWly
ZXNVc2VyR2VzdHVyZUZvclZpZGVvRHVlVG9Mb3dQb3dlck1vZGUgPT0gb3RoZXIuaXNWaWRlb0Fu
ZFJlcXVpcmVzVXNlckdlc3R1cmVGb3JWaWRlb0R1ZVRvTG93UG93ZXJNb2RlCi0gICAgICAgICAg
ICAmJiBub1VzZXJHZXN0dXJlUmVxdWlyZWQgPT0gb3RoZXIubm9Vc2VyR2VzdHVyZVJlcXVpcmVk
Ci0gICAgICAgICAgICAmJiByZXF1aXJlc1BsYXliYWNrQW5kSXNOb3RQbGF5aW5nID09IG90aGVy
LnJlcXVpcmVzUGxheWJhY2tBbmRJc05vdFBsYXlpbmcKLSAgICAgICAgICAgICYmIGhhc0V2ZXJO
b3RpZmllZEFib3V0UGxheWluZyA9PSBvdGhlci5oYXNFdmVyTm90aWZpZWRBYm91dFBsYXlpbmcK
LSAgICAgICAgICAgICYmIG91dHNpZGVPZkZ1bGxzY3JlZW4gPT0gb3RoZXIub3V0c2lkZU9mRnVs
bHNjcmVlbgotICAgICAgICAgICAgJiYgaXNMYXJnZUVub3VnaEZvck1haW5Db250ZW50ID09IG90
aGVyLmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgTWVkaWFVc2FnZUluZm8gb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBNZWRpYVVzYWdlSW5mbyYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZWRpYVVzYWdlSW5mbz4gZGVjb2RlKERl
Y29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bh
dGhUcmF2ZXJzYWxTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVHJhdmVyc2FsU3RhdGUuY3BwCmluZGV4IGVmMDJhMWU4M2ZjZGMzYTViOWI4NDFiMDU4NjZh
Yjk4OTYwYmY4MWMuLmFiOWZmOTFlODk3ZmM4ODU3MTIzYmI0MTViNGFiYTlmZjNjYWExZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxT
dGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZl
cnNhbFN0YXRlLmNwcApAQCAtNDMsMTIgKzQzLDcgQEAgc3RydWN0IFF1YWRyYXRpY0JlemllciB7
CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRdWFkcmF0aWNCZXpp
ZXImIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGFydCA9PSByaHMuc3RhcnQK
LSAgICAgICAgICAgICYmIGNvbnRyb2wgPT0gcmhzLmNvbnRyb2wKLSAgICAgICAgICAgICYmIGVu
ZCA9PSByaHMuZW5kOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVhZHJhdGlj
QmV6aWVyJikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAgIGZsb2F0IGFwcHJveGltYXRlRGlz
dGFuY2UoKSBjb25zdAogICAgIHsKQEAgLTg1LDEzICs4MCw3IEBAIHN0cnVjdCBDdWJpY0Jlemll
ciB7CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdWJpY0Jlemll
ciYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXJ0ID09IHJocy5zdGFydAot
ICAgICAgICAgICAgJiYgY29udHJvbDEgPT0gcmhzLmNvbnRyb2wxCi0gICAgICAgICAgICAmJiBj
b250cm9sMiA9PSByaHMuY29udHJvbDIKLSAgICAgICAgICAgICYmIGVuZCA9PSByaHMuZW5kOwot
ICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3ViaWNCZXppZXImKSBjb25zdCA9IGRl
ZmF1bHQ7CiAKICAgICBmbG9hdCBhcHByb3hpbWF0ZURpc3RhbmNlKCkgY29uc3QKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKaW5k
ZXggNzU0M2Y0NzVhMjdhNjUxNTkwNmNjMjJlYjNmNjBhOTE0MDkyOTBiYS4uMDc1NjE5NGNmMmY1
ZThiOWZiYjI3YTEwY2U3OGEyZTE4YzIzY2ZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcApAQCAtNzQsNyArNzQsOCBAQCBzdGQ6Om9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGNvbnN0IFBpeGVsQnVm
ZmVyRm9ybWF0JiBmb3JtYQogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNvbXB1dGVCdWZmZXJTaXpl
KGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3ZlcmZsb3dlZCgpKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmIChidWZmZXJTaXplID4gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpCisgICAgdWludDMyX3QgbWF4ID0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisgICAgaWYgKGJ1ZmZlclNpemUgPiBtYXgpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBwaXhlbEFycmF5ID0gVWludDhD
bGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVyU2l6ZSk7CiAgICAgaWYg
KCFwaXhlbEFycmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1BdWRpb1RyYWNrQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1BdWRpb1RyYWNrQ29uZmlndXJhdGlvbi5oCmluZGV4IGY2
YmYxNzcyYWZhYzZmZTMzNzlmN2FmMDk1Y2I0MmQ0N2ZjMDQwZDAuLmY1NzI3YzhkZjhkZTJmN2Vm
ODdhMjljZGNkMzA5ZDM0ODk1NDdiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUF1ZGlvVHJhY2tDb25maWd1cmF0
aW9uLmgKQEAgLTM2LDE4ICszNiwxMiBAQCBzdHJ1Y3QgUGxhdGZvcm1BdWRpb1RyYWNrQ29uZmln
dXJhdGlvbiA6IFBsYXRmb3JtVHJhY2tDb25maWd1cmF0aW9uIHsKICAgICB1aW50MzJfdCBudW1i
ZXJPZkNoYW5uZWxzIHsgMCB9OwogICAgIHVpbnQ2NF90IGJpdHJhdGUgeyAwIH07CiAKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUGxhdGZvcm1BdWRpb1RyYWNrQ29uZmlndXJhdGlvbiYpIGNv
bnN0ID0gZGVmYXVsdDsKKwogICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29k
ZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFBsYXRmb3JtQXVkaW9UcmFj
a0NvbmZpZ3VyYXRpb24mKTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGxh
dGZvcm1BdWRpb1RyYWNrQ29uZmlndXJhdGlvbiYgYSwgY29uc3QgUGxhdGZvcm1BdWRpb1RyYWNr
Q29uZmlndXJhdGlvbiYgYikKLXsKLSAgICByZXR1cm4gYS5jb2RlYyA9PSBiLmNvZGVjCi0gICAg
ICAgICYmIGEuc2FtcGxlUmF0ZSA9PSBiLnNhbXBsZVJhdGUKLSAgICAgICAgJiYgYS5udW1iZXJP
ZkNoYW5uZWxzID09IGIubnVtYmVyT2ZDaGFubmVscwotICAgICAgICAmJiBhLmJpdHJhdGUgPT0g
Yi5iaXRyYXRlOwotfQotCiB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgUGxhdGZvcm1B
dWRpb1RyYWNrQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRy
YWNrQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UcmFja0NvbmZpZ3VyYXRpb24uaAppbmRleCBkMGY5N2E2MDBmODRlNDMwNzc1YjU4OTAx
NjBmNGEwNjdmNDhkMjI3Li5mYWI0NWY2Y2Y4MDkwZmFlNWY3ZThmODczMDM5MDkwNWEwNzkxMDdh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRy
YWNrQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtVHJhY2tDb25maWd1cmF0aW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgUGxhdGZvcm1UcmFja0NvbmZpZ3VyYXRpb24gewogICAgIFN0
cmluZyBjb2RlYzsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGxhdGZvcm1UcmFja0NvbmZp
Z3VyYXRpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvQ29sb3JTcGFjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UuaApp
bmRleCA1MGU0YWI5Mjc2NDUwMGE1YWNhM2YxZTc0YTliODg4ZmExYjU0YzhiLi41NDA1MTAwMjQ2
ZWVkN2ZmOTIyODFhNGI0NjZmMzIyNTZhNzM4ZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvQ29sb3JTcGFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVmlkZW9Db2xvclNwYWNlLmgKQEAg
LTM5LDIyICszOSwxMSBAQCBzdHJ1Y3QgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UgewogICAgIHN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1WaWRlb1RyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzPiB0cmFuc2Zl
cjsKICAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtVmlkZW9NYXRyaXhDb2VmZmljaWVudHM+IG1h
dHJpeDsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZ1bGxSYW5nZTsKLSAgICB0ZW1wbGF0ZSA8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERl
Y29kZXImLCBQbGF0Zm9ybVZpZGVvQ29sb3JTcGFjZSYpOwotfTsKLQotaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBQbGF0Zm9ybVZpZGVvQ29sb3JTcGFjZSYgYSwgY29uc3QgUGxhdGZvcm1W
aWRlb0NvbG9yU3BhY2UmIGIpCi17Ci0gICAgcmV0dXJuIGEucHJpbWFyaWVzID09IGIucHJpbWFy
aWVzCi0gICAgICAgICYmIGEudHJhbnNmZXIgPT0gYi50cmFuc2ZlcgotICAgICAgICAmJiBhLm1h
dHJpeCA9PSBiLm1hdHJpeAotICAgICAgICAmJiBhLmZ1bGxSYW5nZSA9PSBiLmZ1bGxSYW5nZTsK
LX0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQbGF0Zm9ybVZpZGVvQ29sb3JTcGFj
ZSYgYSwgY29uc3QgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UmIGIpCi17Ci0gICAgcmV0dXJuICEo
YSA9PSBiKTsKLX0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGxhdGZvcm1WaWRlb0NvbG9y
U3BhY2UmKSBjb25zdCA9IGRlZmF1bHQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29k
ZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFBsYXRm
b3JtVmlkZW9Db2xvclNwYWNlJik7Cit9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1W
aWRlb1RyYWNrQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1WaWRlb1RyYWNrQ29uZmlndXJhdGlvbi5oCmluZGV4IDY1M2IxOTBiY2Y2ZjBh
ZTdmOGY3YTI0ZGQ2MjFhZjU3Mjk2YWVmY2IuLjBmNjRlNGU0Njk5MDAxMGQ4ZjYzNDA1MDk0NmFk
MTYzNjVkODlmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtVmlkZW9UcmFja0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJhY2tDb25maWd1cmF0aW9uLmgKQEAgLTM5
LDIwICszOSwxMSBAQCBzdHJ1Y3QgUGxhdGZvcm1WaWRlb1RyYWNrQ29uZmlndXJhdGlvbiA6IFBs
YXRmb3JtVHJhY2tDb25maWd1cmF0aW9uIHsKICAgICBkb3VibGUgZnJhbWVyYXRlIHsgMCB9Owog
ICAgIHVpbnQ2NF90IGJpdHJhdGUgeyAwIH07CiAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBQbGF0
Zm9ybVZpZGVvVHJhY2tDb25maWd1cmF0aW9uJik7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFBsYXRmb3JtVmlkZW9UcmFja0NvbmZpZ3VyYXRpb24mKSBjb25zdCA9IGRlZmF1bHQ7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBkZWNvZGUoRGVjb2RlciYsIFBsYXRmb3JtVmlkZW9UcmFja0NvbmZpZ3VyYXRpb24mKTsK
IH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGxhdGZvcm1WaWRlb1RyYWNrQ29u
ZmlndXJhdGlvbiYgYSwgY29uc3QgUGxhdGZvcm1WaWRlb1RyYWNrQ29uZmlndXJhdGlvbiYgYikK
LXsKLSAgICByZXR1cm4gYS5jb2RlYyA9PSBiLmNvZGVjCi0gICAgICAgICYmIGEud2lkdGggPT0g
Yi53aWR0aAotICAgICAgICAmJiBhLmhlaWdodCA9PSBiLmhlaWdodAotICAgICAgICAmJiBhLmNv
bG9yU3BhY2UgPT0gYi5jb2xvclNwYWNlCi0gICAgICAgICYmIGEuZnJhbWVyYXRlID09IGIuZnJh
bWVyYXRlCi0gICAgICAgICYmIGEuYml0cmF0ZSA9PSBiLmJpdHJhdGU7Ci19Ci0KIHRlbXBsYXRl
IDxjbGFzcyBFbmNvZGVyPgogdm9pZCBQbGF0Zm9ybVZpZGVvVHJhY2tDb25maWd1cmF0aW9uOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVnaW9uLmgKaW5kZXggMTllZWRjZjU2ZTVmNWFiZjlhYTYxZDhkMjVlNDNhOWY3
ODkxY2M5MS4uZWRjYzEyMDZmODdmNDhhZmQ4M2Y0NjZjNDMxNjhiZGQyNzU5OGQ0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKQEAgLTg1LDggKzg1LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgaW50IHkgeyAwIH07CiAgICAgICAgIHNpemVfdCBzZWdtZW50SW5k
ZXggeyAwIH07CiAKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTcGFuPiBkZWNvZGUoRGVjb2RlciYpOworICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3BhbiYpIGNvbnN0ID0gZGVmYXVsdDsKKyAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTcGFuPiBkZWNvZGUo
RGVjb2RlciYpOwogICAgIH07CiAKICAgICBjbGFzcyBTaGFwZSB7CkBAIC0xMjAsNiArMTIxLDgg
QEAgcHJpdmF0ZToKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29tcGFyZU9wZXJhdGlvbj4K
ICAgICAgICAgc3RhdGljIGJvb2wgY29tcGFyZVNoYXBlcyhjb25zdCBTaGFwZSYgc2hhcGUxLCBj
b25zdCBTaGFwZSYgc2hhcGUyKTsKIAorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hh
cGUmKSBjb25zdCA9IGRlZmF1bHQ7CisKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTaGFwZT4gZGVjb2RlKERlY29kZXImKTsKIApAQCAt
MTQ0LDggKzE0Nyw2IEBAIHByaXZhdGU6CiAKICAgICAgICAgVmVjdG9yPGludCwgMzI+IG1fc2Vn
bWVudHM7CiAgICAgICAgIFZlY3RvcjxTcGFuLCAxNj4gbV9zcGFuczsKLQotICAgICAgICBmcmll
bmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlJiwgY29uc3QgU2hhcGUmKTsKICAgICB9Owog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjb3B5U2hhcGUoKSBjb25zdCB7IHJldHVybiBt
X3NoYXBlID8gbWFrZVVuaXF1ZTxTaGFwZT4oKm1fc2hhcGUpIDogbnVsbHB0cjsgfQpAQCAtMTU1
LDkgKzE1Niw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBtX3NoYXBl
OwogCiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWdpb24mLCBjb25zdCBSZWdp
b24mKTsKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlJiwgY29uc3QgU2hh
cGUmKTsKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNwYW4mLCBjb25zdCBTcGFu
Jik7Ci0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTcGFuJiwgY29uc3QgU3BhbiYp
OwogfTsKIAogc3RhdGljIGlubGluZSBSZWdpb24gaW50ZXJzZWN0KGNvbnN0IFJlZ2lvbiYgYSwg
Y29uc3QgUmVnaW9uJiBiKQpAQCAtMTg4LDI1ICsxODYsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFJlZ2lvbiYgYSwgY29uc3QgUmVnaW9uJiBiKQogewogICAgIHJldHVybiBhLm1f
Ym91bmRzID09IGIubV9ib3VuZHMgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShhLm1fc2hhcGUs
IGIubV9zaGFwZSk7CiB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lvbiYgYSwg
Y29uc3QgUmVnaW9uJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLWlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaW9uOjpTaGFwZSYgYSwgY29uc3QgUmVnaW9uOjpTaGFw
ZSYgYikKLXsKLSAgICByZXR1cm4gYS5tX3NwYW5zID09IGIubV9zcGFucyAmJiBhLm1fc2VnbWVu
dHMgPT0gYi5tX3NlZ21lbnRzOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
Z2lvbjo6U3BhbiYgYSwgY29uc3QgUmVnaW9uOjpTcGFuJiBiKQotewotICAgIHJldHVybiBhLnkg
PT0gYi55ICYmIGEuc2VnbWVudEluZGV4ID09IGIuc2VnbWVudEluZGV4OwotfQotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lvbjo6U3BhbiYgYSwgY29uc3QgUmVnaW9uOjpTcGFu
JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19CiAKIFdFQkNPUkVfRVhQT1JUIFdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBSZWdpb24mKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKaW5k
ZXggMTE3YmVlZjdhMzNjMmZlYjAxODc1MjMwNjVkZmU1OTI0MzRlMDU5MC4uMmI4NmFmODU1MGJi
NWZlNTIyMTE2NzIzOGIxNGM5NzVlZWQ3ODgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKIAog
ICAgICAgICBSYWRpaSB0cmFuc3Bvc2VkUmFkaWkoKSBjb25zdCB7IHJldHVybiBSYWRpaShtX3Rv
cExlZnQudHJhbnNwb3NlZFNpemUoKSwgbV90b3BSaWdodC50cmFuc3Bvc2VkU2l6ZSgpLCBtX2Jv
dHRvbUxlZnQudHJhbnNwb3NlZFNpemUoKSwgbV9ib3R0b21SaWdodC50cmFuc3Bvc2VkU2l6ZSgp
KTsgfQogCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSYWRpaSYpIGNvbnN0ID0gZGVm
YXVsdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIExheW91dFNpemUgbV90b3BMZWZ0OwogICAg
ICAgICBMYXlvdXRTaXplIG1fdG9wUmlnaHQ7CkBAIC0xMTIsMjEgKzExNCwxMyBAQCBwdWJsaWM6
CiAKICAgICBSb3VuZGVkUmVjdCB0cmFuc3Bvc2VkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIFJvdW5k
ZWRSZWN0KG1fcmVjdC50cmFuc3Bvc2VkUmVjdCgpLCBtX3JhZGlpLnRyYW5zcG9zZWRSYWRpaSgp
KTsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJvdW5kZWRSZWN0JikgY29uc3QgPSBk
ZWZhdWx0OworCiBwcml2YXRlOgogICAgIExheW91dFJlY3QgbV9yZWN0OwogICAgIFJhZGlpIG1f
cmFkaWk7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJvdW5kZWRSZWN0OjpS
YWRpaSYgYSwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBiKQotewotICAgIHJldHVybiBhLnRv
cExlZnQoKSA9PSBiLnRvcExlZnQoKSAmJiBhLnRvcFJpZ2h0KCkgPT0gYi50b3BSaWdodCgpICYm
IGEuYm90dG9tTGVmdCgpID09IGIuYm90dG9tTGVmdCgpICYmIGEuYm90dG9tUmlnaHQoKSA9PSBi
LmJvdHRvbVJpZ2h0KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUm91bmRl
ZFJlY3QmIGEsIGNvbnN0IFJvdW5kZWRSZWN0JiBiKQotewotICAgIHJldHVybiBhLnJlY3QoKSA9
PSBiLnJlY3QoKSAmJiBhLnJhZGlpKCkgPT0gYi5yYWRpaSgpOwotfQotCiAvLyBTbmlwIGF3YXkg
cmVjdGFuZ2xlcyBmcm9tIGNvcm5lcnMsIHJvdWdobHkgb25lIHBlciBzdGVwIGxlbmd0aCBvZiBh
cmMuCiBXRUJDT1JFX0VYUE9SVCBSZWdpb24gYXBwcm94aW1hdGVBc1JlZ2lvbihjb25zdCBSb3Vu
ZGVkUmVjdCYsIHVuc2lnbmVkIHN0ZXBMZW5ndGggPSAyMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaAppbmRleCAzNGE3MDgxMDYyOGFjOTUyN2Y0ZjVjZjA0
NzVkODM1YjdjYzJlYWNmLi44NWNjYWEwZmU0ZmNhMjZjNGZmNTY5YmNhZWYxMGVlMjlmYmE2NmNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGFiU2l6ZS5oCkBAIC0yOSw0
OSArMjksMzEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKKyNpbXBv
cnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAotZW51bSBUYWJTaXplVmFsdWVUeXBlIHsKLSAg
ICBMZW5ndGhWYWx1ZVR5cGUsCi0gICAgU3BhY2VWYWx1ZVR5cGUsCi19OworbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdHJ1Y3QgVGFiU2l6ZSB7Ci0gICAgVGFiU2l6ZShmbG9hdCBudW1Pckxlbmd0
aCwgVGFiU2l6ZVZhbHVlVHlwZSBpc1NwYWNlcyA9IFNwYWNlVmFsdWVUeXBlKQotICAgICAgICA6
IG1fdmFsdWUobnVtT3JMZW5ndGgpCi0gICAgICAgICwgbV9pc1NwYWNlcyhpc1NwYWNlcykKKyAg
ICBlbnVtIFZhbHVlVHlwZSB7IExlbmd0aCwgU3BhY2VzIH07CisgICAgVGFiU2l6ZShmbG9hdCBu
dW1Pckxlbmd0aCwgVmFsdWVUeXBlIHR5cGUgPSBTcGFjZXMpCisgICAgICAgIDogdmFsdWUobnVt
T3JMZW5ndGgpCisgICAgICAgICwgaXNTcGFjZXModHlwZSA9PSBTcGFjZXMpCiAgICAgewogICAg
IH0KIAotICAgIGJvb2wgaXNTcGFjZXMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
aXNTcGFjZXM7Ci0gICAgfQotCiAgICAgZmxvYXQgd2lkdGhJblBpeGVscyhmbG9hdCBzcGFjZVdp
ZHRoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faXNTcGFjZXMgPyBtX3ZhbHVlICog
c3BhY2VXaWR0aCA6IG1fdmFsdWU7CisgICAgICAgIHJldHVybiBpc1NwYWNlcyA/IHZhbHVlICog
c3BhY2VXaWR0aCA6IHZhbHVlOwogICAgIH0KIAotICAgIGZsb2F0IHZhbHVlKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgIH0KKyAgICBleHBsaWNpdCBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gdmFsdWU7IH0KIAotICAgIG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiB2YWx1ZSgpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRhYlNp
emUmKSBjb25zdCA9IGRlZmF1bHQ7CiAKLSAgICBmbG9hdCBtX3ZhbHVlOwotICAgIGJvb2wgbV9p
c1NwYWNlczsKKyAgICBmbG9hdCB2YWx1ZTsKKyAgICBib29sIGlzU3BhY2VzOwogfTsKIAotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUYWJTaXplJiBhLCBjb25zdCBUYWJTaXplJiBiKQot
ewotICAgIHJldHVybiAoYS5tX3ZhbHVlID09IGIubV92YWx1ZSkgJiYgKGEubV9pc1NwYWNlcyA9
PSBiLm1faXNTcGFjZXMpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRhYlNp
emUmIGEsIGNvbnN0IFRhYlNpemUmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KK2lu
bGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgVGFiU2l6ZSBz
aXplKSB7IHJldHVybiBzdHJlYW0gPDwgc2l6ZS52YWx1ZSA8PCAoc2l6ZS5pc1NwYWNlcyA/ICIg
c3BhY2VzIiA6ICIiKTsgfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCmluZGV4IGI2MTI2NGMwZmYz
MjA1YWVkYTBjYjJlMzY0ZmI2ODNmYTkxMDVhNjAuLjU3MWNjM2FhYjkyOWU0MzQxOTI3ZjI0NzI3
ZmEwZDM5ZmVlZmVmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1ZQOVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1ZQOVV0aWxpdGllcy5oCkBAIC0xMzIsNiArMTMyLDggQEAgc3RydWN0IFNjcmVlbkRhdGFPdmVy
cmlkZXMgewogICAgIGRvdWJsZSBoZWlnaHQgeyAwIH07CiAgICAgZG91YmxlIHNjYWxlIHsgMSB9
OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmVlbkRhdGFPdmVycmlkZXMmKSBjb25z
dCA9IGRlZmF1bHQ7CisKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewpAQCAtMTU4LDE0ICsxNjAsNCBAQCBz
dHJ1Y3QgU2NyZWVuRGF0YU92ZXJyaWRlcyB7CiAgICAgfQogfTsKIAotaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTY3JlZW5EYXRhT3ZlcnJpZGVzJiBhLCBjb25zdCBTY3JlZW5EYXRhT3Zl
cnJpZGVzJiBiKQotewotICAgIHJldHVybiBhLndpZHRoID09IGIud2lkdGggJiYgYS5oZWlnaHQg
PT0gYi5oZWlnaHQgJiYgYS5zY2FsZSA9PSBiLnNjYWxlOwotfQotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFNjcmVlbkRhdGFPdmVycmlkZXMmIGEsIGNvbnN0IFNjcmVlbkRhdGFPdmVy
cmlkZXMmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLmgKaW5kZXggNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkzY2Y2Mi4u
MDE4YTljM2RlNzc1MzIzMzE5OTljMGViNTViOTAyZTExYzRlZTYxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQy5oCkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBSZXF1ZXN0
IHsKICAgICAgICAgQXRvbVN0cmluZyBpbml0VHlwZTsKICAgICAgICAgVmVjdG9yPFJldGFpblB0
cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4gcmVxdWVzdHM7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBSZXF1ZXN0JiBvdGhlcikgY29uc3QgeyByZXR1cm4gaW5pdFR5cGUgPT0gb3RoZXIu
aW5pdFR5cGUgJiYgcmVxdWVzdHMgPT0gb3RoZXIucmVxdWVzdHM7IH0KKyAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlcXVlc3QmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKIAogICAg
IGJvb2wgaGFzUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJh
bmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9i
akMuaAppbmRleCBlZTFhMzc5YTViZDgyYTI2YWMzMjEyYzNkZGY2ZTdjMDQwYzE4YzU1Li5kMTlm
ZTRkNTNmNmIwZDc5MTA0MWYxMTM4MGE5MzdjMTEyYjg3ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVy
VHJhY2tQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1ByaXZhdGVBVkZPYmpDLmgK
QEAgLTYwLDE0ICs2MCwxMCBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFt
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJJbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2Jq
QyI7IH0KIAogICAgIHN0cnVjdCBDaGFwdGVyRGF0YSB7Ci0gICAgICAgIE1lZGlhVGltZSBtX3N0
YXJ0VGltZTsKLSAgICAgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247Ci0gICAgICAgIFN0cmluZyBt
X3RpdGxlOwotCi0gICAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2hhcHRl
ckRhdGEmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9zdGFy
dFRpbWUgPT0gb3RoZXIubV9zdGFydFRpbWUgJiYgbV9kdXJhdGlvbiA9PSBvdGhlci5tX2R1cmF0
aW9uICYmIG1fdGl0bGUgPT0gb3RoZXIubV90aXRsZTsKLSAgICAgICAgfQorICAgICAgICBNZWRp
YVRpbWUgc3RhcnRUaW1lOworICAgICAgICBNZWRpYVRpbWUgZHVyYXRpb247CisgICAgICAgIFN0
cmluZyB0aXRsZTsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENoYXB0ZXJEYXRhJikg
Y29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAKICAgICBWZWN0b3I8Q2hhcHRlckRhdGE+IG1fcHJv
Y2Vzc2VkQ2hhcHRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29y
ZVRleHQuY3BwCmluZGV4IDNiNGRhNGY1MjdiYzg0ZTVhNDcxNjhhOTk0NmU3ZmI2ODc3NGU3ZTIu
Ljc3OTgwNTA4ZDRkODk5Y2U1ZWZmNTdhODQzODc4NDlmMGM5ZWExNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0
aW9uQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCkBAIC01NiwxMSArNTYsNiBA
QCBzdHJ1Y3QgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkgewogICAgICAgICByZXR1cm4gc2Fm
ZUNGRXF1YWwoZm9udERlc2NyaXB0b3IuZ2V0KCksIG90aGVyLmZvbnREZXNjcmlwdG9yLmdldCgp
KSAmJiBmb250RGVzY3JpcHRpb25LZXkgPT0gb3RoZXIuZm9udERlc2NyaXB0aW9uS2V5OwogICAg
IH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RmFtaWx5U3BlY2lmaWNhdGlvbktl
eSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
Ci0gICAgfQotCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIGZvbnREZXNjcmlwdGlvbktleS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDA1YTgzMTZkYzI3ZTYzMDE3
ZjM5N2YxOTI0NjliODJhMzNiN2IwMzQuLjA0YzAwM2I0ZTJlODc2OGNkNTg3Nzc0ZTVkMWVjNjMy
NzljODhiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC0xNDIyLDE4
ICsxNDIyLDE4IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpBdWRpb1Ry
YWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAgICAgICAgICAgICAgUEFS
U0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckdldERhdGFQb2ludGVyIGZh
aWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVh
ZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBPcHVzQ29v
a2llQ29udGVudHMgY29va2llQ29udGVudHM7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlT3B1c1By
aXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCAqbV9jb21w
bGV0ZVBhY2tldFNpemUsIGJsb2NrQnVmZmVyRGF0YSwgY29va2llQ29udGVudHMpKSB7CisgICAg
ICAgICAgICBhdXRvIGNvb2tpZUNvbnRlbnRzID0gcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0
ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwg
YmxvY2tCdWZmZXJEYXRhKTsKKyAgICAgICAgICAgIGlmICghY29va2llQ29udGVudHMpIHsKICAg
ICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJGYWlsZWQgdG8gcGFy
c2UgT3B1cyBwcml2YXRlIGRhdGEiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVh
ZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWNv
b2tpZUNvbnRlbnRzLmZyYW1lc1BlclBhY2tldCkgeworICAgICAgICAgICAgaWYgKCFjb29raWVD
b250ZW50cy0+ZnJhbWVzUGVyUGFja2V0KSB7CiAgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19F
UlJPUl9JRl9QT1NTSUJMRSgiT3B1cyBwcml2YXRlIGRhdGEgaW5kaWNhdGVzIDAgZnJhbWVzIHBl
ciBwYWNrZXQ7IGJhaWxpbmciKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU2tpcCgmcmVhZGVy
LCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2ZyYW1lc1Bl
clBhY2tldCA9IGNvb2tpZUNvbnRlbnRzLmZyYW1lc1BlclBhY2tldDsKLSAgICAgICAgICAgIG1f
ZnJhbWVEdXJhdGlvbiA9IGNvb2tpZUNvbnRlbnRzLmZyYW1lRHVyYXRpb247Ci0gICAgICAgICAg
ICBmb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZU9wdXNBdWRpb0Zvcm1hdERlc2NyaXB0aW9uKGNv
b2tpZUNvbnRlbnRzKTsKKyAgICAgICAgICAgIG1fZnJhbWVzUGVyUGFja2V0ID0gY29va2llQ29u
dGVudHMtPmZyYW1lc1BlclBhY2tldDsKKyAgICAgICAgICAgIG1fZnJhbWVEdXJhdGlvbiA9IGNv
b2tpZUNvbnRlbnRzLT5mcmFtZUR1cmF0aW9uOworICAgICAgICAgICAgZm9ybWF0RGVzY3JpcHRp
b24gPSBjcmVhdGVPcHVzQXVkaW9Gb3JtYXREZXNjcmlwdGlvbigqY29va2llQ29udGVudHMpOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlvbikgewpAQCAtMTQ1Myw3
ICsxNDUzLDYgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJh
Y2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICAgICAgLy8gT3B1cyB0ZWNo
bmljYWxseSBhbGxvd3MgdGhlIGZyYW1lIGR1cmF0aW9uIGFuZCBmcmFtZXMtcGVyLXBhY2tldCB2
YWx1ZXMgdG8gY2hhbmdlIGZyb20gcGFja2V0IHRvIHBhY2tldC4KICAgICAgICAgLy8gQ29yZUF1
ZGlvIGRvZXNuJ3Qgc3VwcG9ydCBBU0JEIHZhbHVlcyBsaWtlIHRoZXNlIHRvIGNoYW5nZSBvbiBh
IHBlci1wYWNrZXQgYmFzaXMsIHNvIHRocm93IGFuIGVycm9yIHdoZW4KICAgICAgICAgLy8gdGhh
dCBraW5kIG9mIHZhcmlhYmlsaXR5IGlzIGVuY291bnRlcmVkLgotICAgICAgICBPcHVzQ29va2ll
Q29udGVudHMgY29va2llQ29udGVudHM7CiAgICAgICAgIGF1dG8mIHByaXZhdGVEYXRhID0gdHJh
Y2soKS5jb2RlY19wcml2YXRlLnZhbHVlKCk7CiAgICAgICAgIGF1dG8gY29udGlndW91c0J1ZmZl
ciA9IGNvbnRpZ3VvdXNDb21wbGV0ZUJsb2NrQnVmZmVyKG1fY3VycmVudFBhY2tldEJ5dGVPZmZz
ZXQsICptX2NvbXBsZXRlUGFja2V0U2l6ZSk7CiAgICAgICAgIGlmICghY29udGlndW91c0J1ZmZl
cikgewpAQCAtMTQ2Niw5ICsxNDY1LDggQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICAg
ICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRh
UG9pbnRlciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICByZXR1cm4gU2tp
cCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFwYXJz
ZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEoKSwg
Km1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRzKQot
ICAgICAgICAgICAgfHwgY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVz
UGVyUGFja2V0Ci0gICAgICAgICAgICB8fCBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0aW9uICE9
IG1fZnJhbWVEdXJhdGlvbikgeworICAgICAgICBhdXRvIGNvb2tpZUNvbnRlbnRzID0gcGFyc2VP
cHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksICpt
X2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhKTsKKyAgICAgICAgaWYgKCFjb29r
aWVDb250ZW50cyB8fCBjb29raWVDb250ZW50cy0+ZnJhbWVzUGVyUGFja2V0ICE9IG1fZnJhbWVz
UGVyUGFja2V0IHx8IGNvb2tpZUNvbnRlbnRzLT5mcmFtZUR1cmF0aW9uICE9IG1fZnJhbWVEdXJh
dGlvbikgewogICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiT3B1cyBm
cmFtZXMtcGVyLXBhY2tldCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNrOyBlcnJvciIpOwogICAgICAg
ICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2RlOjpWYXJpYWJsZUZyYW1l
RHVyYXRpb24pKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0
LmgKaW5kZXggOWFkMWUwY2M0NTBmMGVhYTgyOTgxNzM1NTk3ODAwYWMwODA0OTZkNC4uZmUzMjcy
NGJmZGZjNTFlOTVlY2UyODJlNzNlMzUxZjlmMWU3YWZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250
RGF0YWJhc2VDb3JlVGV4dC5oCkBAIC01OSwxNiArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm4gZm9udE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYXNjYWRlTGlzdFBhcmFtZXRlcnMmIG90
aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZm9udE5hbWUgPT0gb3Ro
ZXIuZm9udE5hbWUKLSAgICAgICAgICAgICAgICAmJiBsb2NhbGUgPT0gb3RoZXIubG9jYWxlCi0g
ICAgICAgICAgICAgICAgJiYgd2VpZ2h0ID09IG90aGVyLndlaWdodAotICAgICAgICAgICAgICAg
ICYmIHdpZHRoID09IG90aGVyLndpZHRoCi0gICAgICAgICAgICAgICAgJiYgc2l6ZSA9PSBvdGhl
ci5zaXplCi0gICAgICAgICAgICAgICAgJiYgYWxsb3dVc2VySW5zdGFsbGVkRm9udHMgPT0gb3Ro
ZXIuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMKLSAgICAgICAgICAgICAgICAmJiBpdGFsaWMgPT0g
b3RoZXIuaXRhbGljOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
YXNjYWRlTGlzdFBhcmFtZXRlcnMmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICAgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5o
CmluZGV4IDg3MTA0ZDhiN2IzNTdjMTYwYjZkY2NjNDFiZmUxZjg5ZTBhNmMyNzEuLjhiNjdkZTZm
NDkzMDFiYTAxMTU4YTk4MDA5OTU5Mjc3MDQ0NTIzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0NvY29hLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0
aWVzQ29jb2EuaApAQCAtMjgsOCArMjgsOCBAQAogI2lmIFBMQVRGT1JNKENPQ09BKQogCiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAKLWNsYXNz
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZv
cm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC01NSw5ICs1NSw5IEBAIHN0cnVjdCBPcHVzQ29va2llQ29udGVudHMgewogCiBX
RUJDT1JFX0VYUE9SVCBib29sIGlzT3B1c0RlY29kZXJBdmFpbGFibGUoKTsKIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgcmVnaXN0ZXJPcHVzRGVjb2RlcklmTmVlZGVkKCk7Ci1ib29sIHBhcnNlT3B1c1By
aXZhdGVEYXRhKHNpemVfdCBwcml2YXRlRGF0YVNpemUsIGNvbnN0IHZvaWQqIHByaXZhdGVEYXRh
LCBzaXplX3QgZnJhbWVEYXRhU2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVEYXRhLCBPcHVzQ29va2ll
Q29udGVudHMmKTsKK3N0ZDo6b3B0aW9uYWw8T3B1c0Nvb2tpZUNvbnRlbnRzPiBwYXJzZU9wdXNQ
cml2YXRlRGF0YShzaXplX3QgcHJpdmF0ZURhdGFTaXplLCBjb25zdCB2b2lkKiBwcml2YXRlRGF0
YSwgc2l6ZV90IGZyYW1lRGF0YVNpemUsIGNvbnN0IHZvaWQqIGZyYW1lRGF0YSk7CiBSZXRhaW5Q
dHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlT3B1c0F1ZGlvRm9ybWF0RGVzY3JpcHRp
b24oY29uc3QgT3B1c0Nvb2tpZUNvbnRlbnRzJik7CiAKIH0KIAotI2VuZGlmIC8vICYmIFBMQVRG
T1JNKENPQ09BKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGls
aXRpZXNDb2NvYS5tbQppbmRleCA3ZTBhZmIyOTBkZDg1YTc3ZjliZWZmZjQ5NDdhNDdiNzUzNWVi
MmY0Li5hYjViYTFmMjUyY2VjMjcxNmI1MDBmNmY5YTVjNGJiYTY3NDI4MTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRp
ZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIGNvbnN0ZXhwciBp
bnQzMl90IG9wdXNDb25maWdUb0JhbmR3aWR0aCh1aW50OF90IGNvbmZpZykKIH0KICNlbmRpZgog
Ci1ib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVTaXplLCBjb25z
dCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVTaXplLCBjb25zdCB2b2lkKiBm
cmFtZURhdGEsIE9wdXNDb29raWVDb250ZW50cyYgY29va2llKQorc3RkOjpvcHRpb25hbDxPcHVz
Q29va2llQ29udGVudHM+IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVT
aXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVTaXplLCBjb25z
dCB2b2lkKiBmcmFtZURhdGEpCiB7CiAjaWYgRU5BQkxFKE9QVVMpCiAgICAgLy8gaHR0cHM6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzc4NDUKQEAgLTIwMSwxNiArMjAxLDE3IEBAIGJvb2wgcGFy
c2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNv
ZGVjUHJpdmF0ZURhdGEsCiAgICAgYXV0byogcHJpdmF0ZURhdGFQdHIgPSBzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oY29kZWNQcml2YXRlRGF0YSk7CiAKICAgICBpZiAoY29kZWNQcml2YXRl
U2l6ZSA8IDE5KQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgLy8gMS4gTWFnaWMgU2lnbmF0dXJlOgogICAgIC8vCiAgICAgLy8gICAgIFRo
aXMgaXMgYW4gOC1vY3RldCAoNjQtYml0KSBmaWVsZCB0aGF0IGFsbG93cyBjb2RlYwogICAgIC8v
ICAgICBpZGVudGlmaWNhdGlvbiBhbmQgaXMgaHVtYW4gcmVhZGFibGUuCiAgICAgaWYgKHN0cm5j
bXAoIk9wdXNIZWFkIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocHJpdmF0ZURhdGFQ
dHIpLCA4KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgLy8gMi4gVmVyc2lvbiAoOCBiaXRzLCB1bnNpZ25lZCk6CisgICAgT3B1c0Nv
b2tpZUNvbnRlbnRzIGNvb2tpZTsKICAgICBjb29raWUudmVyc2lvbiA9ICoocHJpdmF0ZURhdGFQ
dHIgKyA4KTsKIAogICAgIC8vIDMuIE91dHB1dCBDaGFubmVsIENvdW50ICdDJyAoOCBiaXRzLCB1
bnNpZ25lZCk6CkBAIC0yMzEsNyArMjMyLDcgQEAgYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShz
aXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwKICAg
ICBhdXRvIGZyYW1lUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGZyYW1lRGF0YSk7
CiAKICAgICBpZiAoZnJhbWVTaXplIDwgMSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9o
dG1sL3JmYzY3MTYKICAgICAvLyAzLjEuIFRoZSBUT0MgQnl0ZQpAQCAtMjg1LDIxICsyODYsMjAg
QEAgYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29u
c3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwKICAgICAgICAgLy8KICAgICAgICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgIEZpZ3VyZSA1OiBUaGUgZnJhbWUgY291bnQgYnl0ZQogICAgICAgICBp
ZiAoZnJhbWVTaXplIDwgMikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgdWludDhfdCBmcmFtZUNvdW50Qnl0ZSA9
ICooZnJhbWVQdHIgKyAxKTsKICAgICAgICAgY29va2llLmlzVkJSID0gKChmcmFtZUNvdW50Qnl0
ZSAmIDBiMTAwMDAwMDApID4+IDcpID09IDE7CiAgICAgICAgIGNvb2tpZS5oYXNQYWRkaW5nID0g
KChmcmFtZUNvdW50Qnl0ZSAmIDBiMDEwMDAwMDApID4+IDYpID09IDE7CiAgICAgICAgIGNvb2tp
ZS5mcmFtZXNQZXJQYWNrZXQgPSAoZnJhbWVDb3VudEJ5dGUgJiAwYjAwMTExMTExKTsKICAgICB9
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGNvb2tpZTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGNvZGVjUHJpdmF0ZVNpemUpOwogICAgIFVOVVNFRF9QQVJBTShjb2RlY1ByaXZhdGVE
YXRhKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVTaXplKTsKICAgICBVTlVTRURfUEFSQU0oZnJh
bWVEYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oY29va2llKTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9uU2Vzc2lvblZU
LmgKaW5kZXggYmRlZGNjZjcwYTg1YjFlNzI4NzAwODQ4OTY2NWY5OTU1YTQ0ZmYwOS4uZTJkZGIw
MjRkZDE0NDk4ODI4NGYxYjRlODU1MDQ4YjFlMjZmMWQwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9u
VlQuaApAQCAtNDUsMTMgKzQ1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgYW5nbGUg
eyAwIH07CiAKICAgICAgICAgYm9vbCBpc0lkZW50aXR5KCkgY29uc3QgeyByZXR1cm4gIWZsaXBY
ICYmICFmbGlwWSAmJiAhYW5nbGU7IH0KLSAgICB9OwogCi0gICAgZW51bSBjbGFzcyBJc0NHSW1h
Z2VDb21wYXRpYmxlIHsKLSAgICAgICAgTm8sCi0gICAgICAgIFllcywKKyAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJvdGF0aW9uUHJvcGVydGll
cyYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9OwogCisgICAgZW51bSBjbGFzcyBJc0NHSW1hZ2VD
b21wYXRpYmxlIDogYm9vbCB7IE5vLCBZZXMgfTsKKwogICAgIEltYWdlUm90YXRpb25TZXNzaW9u
VlQoQWZmaW5lVHJhbnNmb3JtJiYsIEZsb2F0U2l6ZSwgSXNDR0ltYWdlQ29tcGF0aWJsZSk7CiAg
ICAgSW1hZ2VSb3RhdGlvblNlc3Npb25WVChjb25zdCBSb3RhdGlvblByb3BlcnRpZXMmLCBGbG9h
dFNpemUsIElzQ0dJbWFnZUNvbXBhdGlibGUpOwogICAgIEltYWdlUm90YXRpb25TZXNzaW9uVlQo
KSA9IGRlZmF1bHQ7CkBAIC03NywxNCArNzYsNCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxD
VlBpeGVsQnVmZmVyUG9vbFJlZj4gbV9yb3RhdGlvblBvb2w7CiB9OwogCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJvdGF0aW9uUHJvcGVydGll
cyYgcm90YXRpb24xLCBjb25zdCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpSb3RhdGlvblByb3Bl
cnRpZXMmIHJvdGF0aW9uMikKLXsKLSAgICByZXR1cm4gcm90YXRpb24xLmZsaXBYID09IHJvdGF0
aW9uMi5mbGlwWCAmJiByb3RhdGlvbjEuZmxpcFkgPT0gcm90YXRpb24yLmZsaXBZICYmIHJvdGF0
aW9uMS5hbmdsZSA9PSByb3RhdGlvbjIuYW5nbGU7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90YXRpb25Qcm9wZXJ0aWVzJiByb3Rh
dGlvbjEsIGNvbnN0IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJvdGF0aW9uUHJvcGVydGllcyYg
cm90YXRpb24yKQotewotICAgIHJldHVybiAhKHJvdGF0aW9uMSA9PSByb3RhdGlvbjIpOwotfQot
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAppbmRleCBkZjA2NDA2ZGNh
YjY4YTI5YWMwMjk1NjkwYTBjOWUzNWZlM2U2MzU1Li4wMmUyZGExODMyZDdmOGY5ZTYyOGI4OTI5
ZjY1YTBjNTMzY2FkM2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgK
QEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICZtX2Rpc3BsYXlMaXN0ID09ICZv
dGhlci5tX2Rpc3BsYXlMaXN0ICYmIG1fY3Vyc29yID09IG90aGVyLm1fY3Vyc29yOyB9Ci0gICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KICAgICB2b2lkIG9wZXJhdG9yKysoKSB7IGFkdmFuY2UoKTsgfQog
CiAgICAgc3RydWN0IFZhbHVlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCmluZGV4IDUxMzViYjAyYTQw
MjJkYzViYjRjOTA0NDkxOGNhZjc1NGQwODI3M2MuLjE0NDllODIyMjJhZDA1NzI2ZThhM2YwMzAw
ZTM4NDc0ZTBhYzZjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaApAQCAtNzMsNyArNzMsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBSZWY8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0ID0g
MDsKIAogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYp
IGNvbnN0ID0gMDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBv
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8sIGNv
bnN0IEJsZW5kaW5nQ29udGV4dCYsIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNl
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgKaW5kZXggM2M3NzMwMDY4NWNiYzIwNGQwZDUw
ZDQ1Yzk1NjZhOGE1ZTcxMWNmOS4uNzViMDEzOWY4M2E4OGNkZTEzNjg0NjQ5NDU2NWE5NzY2NDNm
NWUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgKQEAgLTM2LDcgKzM2LDYgQEAgY2xhc3MgRmls
dGVyT3BlcmF0aW9ucyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBjb25zdDsKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICB2b2lkIGNsZWFyKCkgeyBtX29wZXJhdGlv
bnMuY2xlYXIoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAppbmRleCBhMDI3NWFkM2Y3
MGZlNDgzZjUzNjZmZjRhZTM4ZGNkZWI2MmVkODdkLi5hODk3NDg3ZGUzZmRmMjU2ODI0YTNjOWQ1
ZGQ2ZmQ5YjM4NjJmN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAgICAgMjAxMCBEaXJrIFNjaHVsemUgPGtyaXRA
d2Via2l0Lm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTUyLDggKzUyLDggQEAgY2xhc3MgRmxv
YXRRdWFkOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgSW50UG9p
bnQ7Ci1jbGFzcyBJbnRTaXplOwogY2xhc3MgSW50UmVjdDsKK2NsYXNzIEludFNpemU7CiBjbGFz
cyBSZWdpb247CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIApAQCAtNzcsMjAgKzc3LDE1
IEBAIHB1YmxpYzoKIAogICAgIC8vIFJvdW5kcyB0aGUgbWFwcGVkIHBvaW50IHRvIHRoZSBuZWFy
ZXN0IGludGVnZXIgdmFsdWUuCiAgICAgV0VCQ09SRV9FWFBPUlQgSW50UG9pbnQgbWFwUG9pbnQo
Y29uc3QgSW50UG9pbnQmKSBjb25zdDsKLQogICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0UG9pbnQg
bWFwUG9pbnQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotCiAgICAgV0VCQ09SRV9FWFBPUlQg
SW50U2l6ZSBtYXBTaXplKGNvbnN0IEludFNpemUmKSBjb25zdDsKLQogICAgIFdFQkNPUkVfRVhQ
T1JUIEZsb2F0U2l6ZSBtYXBTaXplKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0OwogCiAgICAgLy8g
Um91bmRzIHRoZSByZXN1bHRpbmcgbWFwcGVkIHJlY3RhbmdsZSBvdXQuIFRoaXMgaXMgaGVscGZ1
bCBmb3IgYm91bmRpbmcKICAgICAvLyBib3ggY29tcHV0YXRpb25zIGJ1dCBtYXkgbm90IGJlIHdo
YXQgaXMgd2FudGVkIGluIG90aGVyIGNvbnRleHRzLgogICAgIFdFQkNPUkVfRVhQT1JUIEludFJl
Y3QgbWFwUmVjdChjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBG
bG9hdFJlY3QgbWFwUmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBGbG9hdFF1YWQgbWFwUXVhZChjb25zdCBGbG9hdFF1YWQmKSBjb25zdDsKLQogICAgIFdF
QkNPUkVfRVhQT1JUIFJlZ2lvbiBtYXBSZWdpb24oY29uc3QgUmVnaW9uJikgY29uc3Q7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGlzSWRlbnRpdHkoKSBjb25zdDsKQEAgLTE0MywxMiArMTM4
LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3RyYW5zZm9ybVswXSA9PSAx
ICYmIG1fdHJhbnNmb3JtWzFdID09IDAgJiYgbV90cmFuc2Zvcm1bMl0gPT0gMCAmJiBtX3RyYW5z
Zm9ybVszXSA9PSAxOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgaXNJZGVudGl0eU9yVHJhbnNs
YXRpb25PckZsaXBwZWQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdHJhbnNmb3Jt
WzBdID09IDEgJiYgbV90cmFuc2Zvcm1bMV0gPT0gMCAmJiBtX3RyYW5zZm9ybVsyXSA9PSAwICYm
IChtX3RyYW5zZm9ybVszXSA9PSAxIHx8IG1fdHJhbnNmb3JtWzNdID09IC0xKTsKICAgICB9Ci0g
ICAgCisKICAgICBib29sIGlzUm90YXRlT3JTaGVhcigpIGNvbnN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gbV90cmFuc2Zvcm1bMV0gfHwgbV90cmFuc2Zvcm1bMl07CkBAIC0xNTksMjQgKzE1NCwx
NCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAobV90cmFuc2Zvcm1bMV0gPT0gMCAmJiBtX3Ry
YW5zZm9ybVsyXSA9PSAwKSB8fCAobV90cmFuc2Zvcm1bMF0gPT0gMCAmJiBtX3RyYW5zZm9ybVsz
XSA9PSAwKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0gKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgbTIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKG1fdHJhbnNmb3JtWzBdID09
IG0yLm1fdHJhbnNmb3JtWzBdCi0gICAgICAgICAgICAgJiYgbV90cmFuc2Zvcm1bMV0gPT0gbTIu
bV90cmFuc2Zvcm1bMV0KLSAgICAgICAgICAgICAmJiBtX3RyYW5zZm9ybVsyXSA9PSBtMi5tX3Ry
YW5zZm9ybVsyXQotICAgICAgICAgICAgICYmIG1fdHJhbnNmb3JtWzNdID09IG0yLm1fdHJhbnNm
b3JtWzNdCi0gICAgICAgICAgICAgJiYgbV90cmFuc2Zvcm1bNF0gPT0gbTIubV90cmFuc2Zvcm1b
NF0KLSAgICAgICAgICAgICAmJiBtX3RyYW5zZm9ybVs1XSA9PSBtMi5tX3RyYW5zZm9ybVs1XSk7
Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIC8vICp0
aGlzID0gKnRoaXMgKiB0IChpLmUuLCBhIG11bHRSaWdodCkKICAgICBBZmZpbmVUcmFuc2Zvcm0m
IG9wZXJhdG9yKj0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0KQogICAgIHsKICAgICAgICAgcmV0
dXJuIG11bHRpcGx5KHQpOwogICAgIH0KLSAgICAKKwogICAgIC8vIHJlc3VsdCA9ICp0aGlzICog
dCAoaS5lLiwgYSBtdWx0UmlnaHQpCiAgICAgQWZmaW5lVHJhbnNmb3JtIG9wZXJhdG9yKihjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHQpIGNvbnN0CiAgICAgewpAQCAtMTk5LDEzICsxODQsMTMgQEAg
cHVibGljOgogICAgIH0KIAogICAgIC8vIGRlY29tcG9zZSB0aGUgbWF0cml4IGludG8gaXRzIGNv
bXBvbmVudCBwYXJ0cwotICAgIHR5cGVkZWYgc3RydWN0IHsKKyAgICBzdHJ1Y3QgRGVjb21wb3Nl
ZFR5cGUgewogICAgICAgICBkb3VibGUgc2NhbGVYLCBzY2FsZVk7CiAgICAgICAgIGRvdWJsZSBh
bmdsZTsKICAgICAgICAgZG91YmxlIHJlbWFpbmRlckEsIHJlbWFpbmRlckIsIHJlbWFpbmRlckMs
IHJlbWFpbmRlckQ7CiAgICAgICAgIGRvdWJsZSB0cmFuc2xhdGVYLCB0cmFuc2xhdGVZOwotICAg
IH0gRGVjb21wb3NlZFR5cGU7Ci0gICAgCisgICAgfTsKKwogICAgIGJvb2wgZGVjb21wb3NlKERl
Y29tcG9zZWRUeXBlJikgY29uc3Q7CiAgICAgdm9pZCByZWNvbXBvc2UoY29uc3QgRGVjb21wb3Nl
ZFR5cGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5o
CmluZGV4IDNmYzU2MmEwY2JlYjA4ZWM3NTg3N2I5MTdmZDk0YTQ5ZjQzZWZkMjkuLjA4NjIwZjky
MGE3ZWZiZWJiNzJhMzQ4ZjNiOGQwOTEwYjNmMTBhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01h
dHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgaXNSZXByZXNlbnRhYmxlSW4yRCgpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gb3BlcmF0b3I9PShzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24m
PihvdGhlcikpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdHJpeDNEVHJhbnNmb3Jt
T3BlcmF0aW9uJiBvdGhlcikgY29uc3QgPSBkZWZhdWx0OwogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgYXBw
bHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRTaXplJikgY29u
c3Qgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oCmlu
ZGV4IDZlYzg5N2I2MDdiMTc3ZjcwMTY2N2QxN2Q3M2I4MDdmYjE5MDU0YjEuLjBlYmQ5YzZmODlh
NDJhZjcyZjVlMzE5NmYxNDU4YzdkNjY1YjQ1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhU
cmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtNTUsNyArNTUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
aXNJZGVudGl0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYSA9PSAxICYmIG1fYiA9PSAw
ICYmIG1fYyA9PSAwICYmIG1fZCA9PSAxICYmIG1fZSA9PSAwICYmIG1fZiA9PSAwOyB9CiAgICAg
Ym9vbCBpc0FmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAhaXNJZGVudGl0eSgpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWF0cml4VHJh
bnNmb3JtT3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3BlcmF0b3I9PShzdGF0aWNf
Y2FzdDxjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mPihvdGhlcikpOyB9CisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0ID0gZGVm
YXVsdDsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNm
b3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXggNjAzODdlMWU5NGU2ZmIz
YzFhMmNjOWUzYjY0ZWJlNDhkOTcwMDk3YS4uYjJkNjkzNjljMDc2Y2I0NDI3NWVlNDkzYWNkMmIw
NjJiOTM3YjBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1P
cGVyYXRpb24uaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNBZmZlY3Rl
ZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIWlzSWRlbnRpdHko
KTsgfQogICAgIGJvb2wgaXNSZXByZXNlbnRhYmxlSW4yRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGVyc3BlY3RpdmVUcmFuc2Zv
cm1PcGVyYXRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvcGVyYXRvcj09KHN0YXRpY19jYXN0
PGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiY+KG90aGVyKSk7IH0KKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24mIG90aGVyKSBjb25zdCA9IGRl
ZmF1bHQ7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gZmxvYXRWYWx1ZSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCA0NGMw
ODcyOTM2OGE3ZjI4OGJlNWU0M2U0MDIxYWEzYTA2Nzk2OTE4Li4wYjQzZWQyMzEzNTgzOGIzNzYx
YjM0NTlmOGVhOTIzYjE2NGEzZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIGRvdWJsZSB6KCkgY29u
c3QgeyByZXR1cm4gbV96OyB9CiAgICAgZG91YmxlIGFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9h
bmdsZTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9wZXJhdG9yPT0oc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9uJj4ob3RoZXIpKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24mIG90aGVyKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9uKiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmLCBib29sIGJsZW5kVG9JZGVudGl0
eSA9IGZhbHNlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IGZh
NTljZGIwYTAwMzE2OWE2OGZjNjZkMWFjMDNmOGFiOWNiZTJmNDUuLmVhYjE3YTY4MjdiMWE1YTEy
ZWQ3YTE3MTQ0NDVlZDkwZmFjYjgyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24u
aApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWY8VHJhbnNmb3JtT3Bl
cmF0aW9uPiBjbG9uZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0ID0gMDsKLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IG8pOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0ID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAppbmRleCBjZjU5YTE5ZTgyNjFhNDQ2NzVmYjI3
NWYyNTBiYTEyZWY4ZDYzY2U4Li44YzQzMTNiOTRlYTZhY2FlNjFjMzE4OGI4NzRjMmJmMWJkMDE4
MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaApAQCAtMzgsMTEgKzM4LDcg
QEAgY2xhc3MgVHJhbnNmb3JtT3BlcmF0aW9ucyB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgVHJh
bnNmb3JtT3BlcmF0aW9ucyhib29sIG1ha2VJZGVudGl0eSA9IGZhbHNlKTsKICAgICAKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgbykgY29uc3Q7Ci0gICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmKSBjb25zdDsKICAgICAKICAgICB2b2lkIGFw
cGx5KGNvbnN0IEZsb2F0U2l6ZSYgc3osIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KSBjb25zdAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAppbmRleCBlNWU1M2M4N2Nk
MWUyMTg5OTU3Mjg2NzJkODRkMGE5NGYxMzdlNzM0Li5iYTkyYTlmOGI1NTNkY2U3NjgwNzM0MGI5
MzQzNzgzOWYzNmViZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCkBA
IC0yOTYsMTMgKzI5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgZG91YmxlIGFuZ2xlOwogICAgICAg
ICBkb3VibGUgbTExLCBtMTIsIG0yMSwgbTIyOwogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IERlY29tcG9zZWQyVHlwZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBzY2FsZVggPT0gb3RoZXIuc2NhbGVYICYmIHNjYWxlWSA9PSBvdGhl
ci5zY2FsZVkKLSAgICAgICAgICAgICAgICAmJiB0cmFuc2xhdGVYID09IG90aGVyLnRyYW5zbGF0
ZVggJiYgdHJhbnNsYXRlWSA9PSBvdGhlci50cmFuc2xhdGVZCi0gICAgICAgICAgICAgICAgJiYg
YW5nbGUgPT0gb3RoZXIuYW5nbGUKLSAgICAgICAgICAgICAgICAmJiBtMTEgPT0gb3RoZXIubTEx
ICYmIG0xMiA9PSBvdGhlci5tMTIgJiYgbTIxID09IG90aGVyLm0yMSAmJiBtMjIgPT0gb3RoZXIu
bTIyOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEZWNvbXBvc2Vk
MlR5cGUmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKIAogICAgIHN0cnVjdCBEZWNvbXBvc2Vk
NFR5cGUgewpAQCAtMzEyLDE0ICszMDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGRvdWJsZSB0cmFu
c2xhdGVYLCB0cmFuc2xhdGVZLCB0cmFuc2xhdGVaOwogICAgICAgICBkb3VibGUgcGVyc3BlY3Rp
dmVYLCBwZXJzcGVjdGl2ZVksIHBlcnNwZWN0aXZlWiwgcGVyc3BlY3RpdmVXOwogCi0gICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBEZWNvbXBvc2VkNFR5cGUmIG90aGVyKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc2NhbGVYID09IG90aGVyLnNjYWxlWCAmJiBzY2Fs
ZVkgPT0gb3RoZXIuc2NhbGVZICYmIHNjYWxlWiA9PSBvdGhlci5zY2FsZVoKLSAgICAgICAgICAg
ICAgICAmJiBza2V3WFkgPT0gb3RoZXIuc2tld1hZICYmIHNrZXdYWiA9PSBvdGhlci5za2V3WFog
JiYgc2tld1laID09IG90aGVyLnNrZXdZWgotICAgICAgICAgICAgICAgICYmIHF1YXRlcm5pb25Y
ID09IG90aGVyLnF1YXRlcm5pb25YICYmIHF1YXRlcm5pb25ZID09IG90aGVyLnF1YXRlcm5pb25Z
ICYmIHF1YXRlcm5pb25aID09IG90aGVyLnF1YXRlcm5pb25aICYmIHF1YXRlcm5pb25XID09IG90
aGVyLnF1YXRlcm5pb25XCi0gICAgICAgICAgICAgICAgJiYgdHJhbnNsYXRlWCA9PSBvdGhlci50
cmFuc2xhdGVYICYmIHRyYW5zbGF0ZVkgPT0gb3RoZXIudHJhbnNsYXRlWSAmJiB0cmFuc2xhdGVa
ID09IG90aGVyLnRyYW5zbGF0ZVoKLSAgICAgICAgICAgICAgICAmJiBwZXJzcGVjdGl2ZVggPT0g
b3RoZXIucGVyc3BlY3RpdmVYICYmIHBlcnNwZWN0aXZlWSA9PSBvdGhlci5wZXJzcGVjdGl2ZVkg
JiYgcGVyc3BlY3RpdmVaID09IG90aGVyLnBlcnNwZWN0aXZlWiAmJiBwZXJzcGVjdGl2ZVcgPT0g
b3RoZXIucGVyc3BlY3RpdmVXOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBEZWNvbXBvc2VkNFR5cGUmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKICAgICAKICAg
ICBib29sIGRlY29tcG9zZTIoRGVjb21wb3NlZDJUeXBlJikgY29uc3Q7CkBAIC0zNjMsOCArMzUw
LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fbWF0cml4WzNdWzNdID09IG0yLm1fbWF0
cml4WzNdWzNdKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQot
CiAgICAgLy8gKnRoaXMgPSAqdGhpcyAqIHQKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3Bl
cmF0b3IqPShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KaW5kZXggYjUyYzg2MTg2ZjBi
YjA2ZmQzMjNlZDI5ZjgyZDc3Yzk1OGZlMjYwOC4uYjdkOTQ1MzMxMGFkYmNiNWZhZmExNjhjNmVh
OTAzZDViY2EyNTU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YkdMQmxvY2tsaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJHTEJs
b2NrbGlzdC5tbQpAQCAtMzUsNDMgKzM1LDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
cnVjdCBPU0J1aWxkSW5mbyB7Ci0gICAgT1NCdWlsZEluZm8oKQotICAgICAgICA6IG1ham9yKDAp
Ci0gICAgICAgICwgbWlub3IoMCkKLSAgICAgICAgLCBidWlsZCgwKQotICAgIHsKLSAgICB9Ci0K
LSAgICBPU0J1aWxkSW5mbyhpbnQgbWFqb3IsIGludCBtaW5vciwgaW50IGJ1aWxkKQotICAgICAg
ICA6IG1ham9yKG1ham9yKQotICAgICAgICAsIG1pbm9yKG1pbm9yKQotICAgICAgICAsIGJ1aWxk
KGJ1aWxkKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT1NCdWls
ZEluZm8mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1ham9yID09IG90aGVy
Lm1ham9yICYmIG1pbm9yID09IG90aGVyLm1pbm9yICYmIGJ1aWxkID09IG90aGVyLmJ1aWxkOwot
ICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA+
IHN0ZDo6dGllKG90aGVyLm1ham9yLCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwotICAgIH0K
LQotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBPU0J1aWxkSW5mbyYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1pbm9yLCBidWlsZCkgPD0gc3Rk
Ojp0aWUob3RoZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7Ci0gICAgfQotCi0g
ICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVpbGQpIDwgc3RkOjp0aWUo
b3RoZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7Ci0gICAgfQorICAgIGludCBt
YWpvciB7IDAgfTsgLy8gUmVwcmVzZW50cyB0aGUgMTMgaW4gMTNDNjQuCisgICAgaW50IG1pbm9y
IHsgMCB9OyAvLyBSZXByZXNlbnRzIHRoZSBDIGluIDEzQzY0IChhcyBhIG51bWJlciB3aGVyZSBB
ID09IDEsIGkuZS4gMykuCisgICAgaW50IGJ1aWxkIHsgMCB9OyAvLyBSZXByZXNlbnRzIHRoZSA2
NCBpbiAxM0M2NC4KIAotICAgIGludCBtYWpvcjsgLy8gUmVwcmVzZW50cyB0aGUgMTMgaW4gMTND
NjQuCi0gICAgaW50IG1pbm9yOyAvLyBSZXByZXNlbnRzIHRoZSBDIGluIDEzQzY0IChhcyBhIG51
bWJlciB3aGVyZSBBID09IDEsIGkuZS4gMykuCi0gICAgaW50IGJ1aWxkOyAvLyBSZXByZXNlbnRz
IHRoZSA2NCBpbiAxM0M2NC4KKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihPU0J1aWxkSW5m
bywgT1NCdWlsZEluZm8pID0gZGVmYXVsdDsKIH07CiAKIHN0YXRpYyBPU0J1aWxkSW5mbyBidWls
ZEluZm9Gcm9tT1NCdWlsZFN0cmluZyhOU1N0cmluZyAqYnVpbGRTdHJpbmcpCkBAIC04Myw3ICs1
MSw3IEBAIHN0YXRpYyBPU0J1aWxkSW5mbyBidWlsZEluZm9Gcm9tT1NCdWlsZFN0cmluZyhOU1N0
cmluZyAqYnVpbGRTdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBOU0xvZyhAIldlYkdM
QmxvY2tsaXN0IGNvdWxkIG5vdCBwYXJzZSBPU0J1aWxkIGVudHJ5OiAlQCIsIGJ1aWxkU3RyaW5n
KTsKICNlbmRpZgotICAgICAgICByZXR1cm4gT1NCdWlsZEluZm8oKTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAKICAgICBOU1RleHRDaGVja2luZ1Jlc3VsdCAqbWF0Y2hSZXN1bHQgPSBb
bWF0Y2hlcyBvYmplY3RBdEluZGV4OjBdOwpAQCAtOTIsMTQgKzYwLDE0IEBAIHN0YXRpYyBPU0J1
aWxkSW5mbyBidWlsZEluZm9Gcm9tT1NCdWlsZFN0cmluZyhOU1N0cmluZyAqYnVpbGRTdHJpbmcp
CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBOU0xvZyhAIldlYkdMQmxvY2tsaXN0IGNvdWxkIG5v
dCBwYXJzZSBPU0J1aWxkIGVudHJ5OiAlQCIsIGJ1aWxkU3RyaW5nKTsKICNlbmRpZgotICAgICAg
ICByZXR1cm4gT1NCdWlsZEluZm8oKTsKKyAgICAgICAgcmV0dXJuIHsgfSgpOwogICAgIH0KIAog
ICAgIGludCBtYWpvclZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpb
bWF0Y2hSZXN1bHQgcmFuZ2VBdEluZGV4OjFdXSBpbnRWYWx1ZV07CiAgICAgaW50IG1pbm9yVmVy
c2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOlttYXRjaFJlc3VsdCByYW5n
ZUF0SW5kZXg6Ml1dIGNoYXJhY3RlckF0SW5kZXg6MF0gLSAnQScgKyAxOwogICAgIGludCBidWls
ZFZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpbbWF0Y2hSZXN1bHQg
cmFuZ2VBdEluZGV4OjNdXSBpbnRWYWx1ZV07CiAKLSAgICByZXR1cm4gT1NCdWlsZEluZm8obWFq
b3JWZXJzaW9uLCBtaW5vclZlcnNpb24sIGJ1aWxkVmVyc2lvbik7CisgICAgcmV0dXJuIHsgbWFq
b3JWZXJzaW9uLCBtaW5vclZlcnNpb24sIGJ1aWxkVmVyc2lvbiB9OwogfQogCiBib29sIFdlYkdM
QmxvY2tsaXN0OjpzaG91bGRCbG9ja1dlYkdMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAppbmRleCBiYTAyOGY0ZGJk
ZmQxOWViMTJhNmM3ZmVjNmNhMDQ0ODY5NjUxNDA5Li4yN2I4MTg3ZjQ5OWMwZWIxMGIxZDEzZmYy
MmRhNGNmNTliMWE2Yjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCkBAIC03ODYsNyArNzg2LDYgQEAgcHVibGlj
OgogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OyB9Ci0gICAgICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBjb25zdCBGbGF0dGVu
ZWRDb25zdHJhaW50KiBtX2NvbnN0cmFpbnQgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJl
ZFVuaXQuaAppbmRleCAyNWIyYmZkNTM4NDU2ODM0YjIyZWIxNjc0NDVlZGUwYzdhNmIzOTBmLi4x
NTFmNjE0Y2FkOTAyNWViOTI0ZjA5YjFhOGE3MGNiOGFjYjVlYTE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9T
aGFyZWRVbml0LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1
ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9DcmVkZW50aWFsQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9DcmVkZW50aWFsQmFzZS5oCmluZGV4IGM5MDllNWUxMTJlMWZhZjI3ZGJkMWQwNTFiYjgw
NGQyYzVmZjg5NzcuLmJjZDE3YjQyYTcwZGU0MjNmNWI1N2NiZGI5MGM1MjNkZmFhN2ZmZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmgK
QEAgLTY3LDcgKzY3LDYgQEAgcHJpdmF0ZToKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikgeyByZXR1cm4gQ3JlZGVu
dGlhbEJhc2U6OmNvbXBhcmUoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Q3JlZGVudGlhbCYgYSwgY29uc3QgQ3JlZGVudGlhbCYgYikgeyByZXR1cm4gIShhID09IGIpOyB9
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaAppbmRleCBlOWQzNDQzZjhiNWM2ODI0NDY2NTZjMTg4MDU2NTdj
YzI5ZDJkODM3Li4wMTQxY2I3MDNlMzliMjYwN2E4NjQyOWE3YTRlMDRkMzMxNDhlOTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC0xNjEsMTAgKzE2
MSw2IEBAIHN0cnVjdCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
Z2V0PDE+KGRhdGEpID09IHN0ZDo6Z2V0PDE+KG90aGVyLmRhdGEpOwogICAgICAgICByZXR1cm4g
c3RkOjpnZXQ8Mj4oZGF0YSkgPT0gc3RkOjpnZXQ8Mj4ob3RoZXIuZGF0YSk7CiAgICAgfQotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb3JtRGF0YUVsZW1lbnQmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KICAgICAKICAgICBE
YXRhIGRhdGE7CiB9OwpAQCAtMjc5LDExICsyNzUsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEZvcm1EYXRhJiBhLCBjb25zdCBGb3JtRGF0YSYgYikKICAgICByZXR1cm4gYS5lbGVt
ZW50cygpID09IGIuZWxlbWVudHMoKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBGb3JtRGF0YSYgYSwgY29uc3QgRm9ybURhdGEmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBi
KTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KIHZvaWQgRm9ybURhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAppbmRleCBmYTAzN2ZjZjk2ODE3M2MwY2E5M2Q0NzFj
M2RkNDFkYzQ4NzBiMGNiLi43ZjY5Yzk4Y2VhMTMxMTY4MmZmMWY3YzZkYzViMWJmNjcxYjdmOGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJN
YXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAu
aApAQCAtOTgsNyArOTgsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSFRUUEhlYWRlck1hcENv
bnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSFRUUEhlYWRlck1hcENvbnN0SXRlcmF0b3Im
IG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9jb21tb25IZWFk
ZXJzSXQgPT0gb3RoZXIubV9jb21tb25IZWFkZXJzSXQgJiYgbV91bmNvbW1vbkhlYWRlcnNJdCA9
PSBvdGhlci5tX3VuY29tbW9uSGVhZGVyc0l0OwpAQCAtMjAxLDExICsyMDAsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
IT0oY29uc3QgSFRUUEhlYWRlck1hcCYgYSwgY29uc3QgSFRUUEhlYWRlck1hcCYgYikKLSAgICB7
Ci0gICAgICAgIHJldHVybiAhKGEgPT0gYik7Ci0gICAgfQotCiAgICAgdGVtcGxhdGUgPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVy
JiwgSFRUUEhlYWRlck1hcCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5oCmluZGV4IGQxZGU5NmFlMDYwMDU3NGYwNTI1
YzBmNGY1YmU4ZWFkNmQyYjhhNjIuLmZjMDcwZWFjNTY3OWVlNmU3NDgwYjJhZDZhODE1ZTBiOWNk
N2Q4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJvdGVj
dGlvblNwYWNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUHJv
dGVjdGlvblNwYWNlQmFzZS5oCkBAIC05OSw3ICs5OSw2IEBAIHByaXZhdGU6CiB9OwogCiBpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYSwgY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBiKSB7IHJldHVybiBQcm90ZWN0aW9uU3BhY2VCYXNlOjpjb21wYXJlKGEsIGIp
OyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYSwgY29u
c3QgUHJvdGVjdGlvblNwYWNlJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCmluZGV4IDQ4OGRlYmMxNDNkNjNmNDU3ZThkMzhlOWM2
ZGMyM2E5ZDIwYmE4MTYuLjJiZjgyMzdmODA3NTczNDVkYWNkZTdhYTIyZGRmMTJkNDY2NDFiMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJv
ckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJy
b3JCYXNlLmgKQEAgLTEwNyw3ICsxMDcsNiBAQCBwcml2YXRlOgogV0VCQ09SRV9FWFBPUlQgUmVz
b3VyY2VFcnJvciBpbnRlcm5hbEVycm9yKGNvbnN0IFVSTCYpOwogCiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpIHsg
cmV0dXJuIFJlc291cmNlRXJyb3JCYXNlOjpjb21wYXJlKGEsIGIpOyB9Ci1pbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIp
IHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmgKaW5kZXggNDBjMDA4Y2FkZmQ1ZWE3NTUzN2QwYzU3OTgwMTFmMGE0NDI3YzQzYi4uM2VjZjgx
ZTNlMWVjNTNhMzZiZjhjMTRjOTc5MzIwMGZjODk0NmU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKQEAgLTI3NCw3
ICsyNzQsNiBAQCBwcml2YXRlOgogYm9vbCBlcXVhbElnbm9yaW5nSGVhZGVyRmllbGRzKGNvbnN0
IFJlc291cmNlUmVxdWVzdEJhc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3RCYXNlJik7CiAKIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVxdWVzdEJhc2U6OmVxdWFsKGEsIGIp
OyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KFJlc291cmNlUmVxdWVzdCYgYSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAogV0VCQ09SRV9FWFBPUlQg
dW5zaWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpOwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCmluZGV4IDYzMTJl
MDY4NDI5N2I0M2MzMzExZTQ3MzliNjgxYWI0NDVjMzM2NzIuLmJmNWM3NGY0Y2ZkY2EzNzVlM2Jl
NDIzMmU0NzVjMjJkYWZmY2VjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL05TVVJMQ29ubmVjdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL1dhbGxUaW1lLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9CaWRpUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJl
c29sdmVyLmgKaW5kZXggNjlkOWU0NmUwODY1NjhkYzkwN2FiNTg0ZGM0MjY2ODU3MDVmZGNmMC4u
ODM5ODIwMjRlNGE0ZDI1YTJkZjg5ZmU4OTQ3ZWIzMDgyOGY1YzM3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCkBAIC0xMjMsMTEgKzEyMyw2IEBAIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQmlkaVN0YXR1cyYgc3RhdHVzMSwgY29uc3QgQmlk
aVN0YXR1cyYgc3RhdHVzMikKICAgICByZXR1cm4gc3RhdHVzMS5lb3IgPT0gc3RhdHVzMi5lb3Ig
JiYgc3RhdHVzMS5sYXN0ID09IHN0YXR1czIubGFzdCAmJiBzdGF0dXMxLmxhc3RTdHJvbmcgPT0g
c3RhdHVzMi5sYXN0U3Ryb25nICYmICooc3RhdHVzMS5jb250ZXh0KSA9PSAqKHN0YXR1czIuY29u
dGV4dCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQmlkaVN0YXR1cyYgc3Rh
dHVzMSwgY29uc3QgQmlkaVN0YXR1cyYgc3RhdHVzMikKLXsKLSAgICByZXR1cm4gIShzdGF0dXMx
ID09IHN0YXR1czIpOwotfQotCiBzdHJ1Y3QgQmlkaUNoYXJhY3RlclJ1biB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oCmluZGV4IDAyZjQ0ODIwMGM5NDRjNGFlMTRm
MTI5OGMzOGIyOTExODczNWQxMzkuLjUwYjZkNWEyZmY3MGYyOGUzY2M3YTdmMzMwMWI4NDlhNGY3
YTk2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0
aERpcmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0
aERpcmVjdGlvbi5oCkBAIC00OCwxOCArNDgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1
Y3QgU3RyaW5nV2l0aERpcmVjdGlvbiB7CiAgICAgU3RyaW5nIHN0cmluZzsKICAgICBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiB7IFRleHREaXJlY3Rpb246OkxUUiB9OworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJikgY29uc3QgPSBkZWZhdWx0OwogfTsKIAot
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiBhLCBjb25z
dCBTdHJpbmdXaXRoRGlyZWN0aW9uJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZyA9PSBiLnN0
cmluZyAmJiBhLmRpcmVjdGlvbiA9PSBiLmRpcmVjdGlvbjsKLX0KLQotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiBhLCBjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIGlubGluZSBTdHJpbmdX
aXRoRGlyZWN0aW9uIHRydW5jYXRlRnJvbUVuZChjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiBz
dHJpbmcsIHVuc2lnbmVkIG1heExlbmd0aCkKIHsKICAgICByZXR1cm4geyBzdHJpbmcuc3RyaW5n
LmxlZnQobWF4TGVuZ3RoKSwgc3RyaW5nLmRpcmVjdGlvbiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvVGV4dEZsYWdzLmgKaW5kZXggM2EzNTkyMjRmMGRiNzBjOWE3NzkzOTk4ZWZmMTA0
ODFmYzVkNTM0Zi4uNmRhZmExY2Q5Y2Y2YTExZDdjZTMwM2E3ZWI4OGM3M2VjOGRjNTFkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCkBAIC0yMDgsMjYgKzIwOCw3
IEBAIHN0cnVjdCBGb250VmFyaWFudFNldHRpbmdzIHsKICAgICAgICAgICAgICYmIGVhc3RBc2lh
blJ1YnkgPT0gRm9udFZhcmlhbnRFYXN0QXNpYW5SdWJ5OjpOb3JtYWw7CiAgICAgfQogCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbW1vbkxpZ2F0dXJlcyA9PSBvdGhlci5jb21tb25MaWdh
dHVyZXMKLSAgICAgICAgICAgICYmIGRpc2NyZXRpb25hcnlMaWdhdHVyZXMgPT0gb3RoZXIuZGlz
Y3JldGlvbmFyeUxpZ2F0dXJlcwotICAgICAgICAgICAgJiYgaGlzdG9yaWNhbExpZ2F0dXJlcyA9
PSBvdGhlci5oaXN0b3JpY2FsTGlnYXR1cmVzCi0gICAgICAgICAgICAmJiBjb250ZXh0dWFsQWx0
ZXJuYXRlcyA9PSBvdGhlci5jb250ZXh0dWFsQWx0ZXJuYXRlcwotICAgICAgICAgICAgJiYgcG9z
aXRpb24gPT0gb3RoZXIucG9zaXRpb24KLSAgICAgICAgICAgICYmIGNhcHMgPT0gb3RoZXIuY2Fw
cwotICAgICAgICAgICAgJiYgbnVtZXJpY0ZpZ3VyZSA9PSBvdGhlci5udW1lcmljRmlndXJlCi0g
ICAgICAgICAgICAmJiBudW1lcmljU3BhY2luZyA9PSBvdGhlci5udW1lcmljU3BhY2luZwotICAg
ICAgICAgICAgJiYgbnVtZXJpY0ZyYWN0aW9uID09IG90aGVyLm51bWVyaWNGcmFjdGlvbgotICAg
ICAgICAgICAgJiYgbnVtZXJpY09yZGluYWwgPT0gb3RoZXIubnVtZXJpY09yZGluYWwKLSAgICAg
ICAgICAgICYmIG51bWVyaWNTbGFzaGVkWmVybyA9PSBvdGhlci5udW1lcmljU2xhc2hlZFplcm8K
LSAgICAgICAgICAgICYmIGFsdGVybmF0ZXMgPT0gb3RoZXIuYWx0ZXJuYXRlcwotICAgICAgICAg
ICAgJiYgZWFzdEFzaWFuVmFyaWFudCA9PSBvdGhlci5lYXN0QXNpYW5WYXJpYW50Ci0gICAgICAg
ICAgICAmJiBlYXN0QXNpYW5XaWR0aCA9PSBvdGhlci5lYXN0QXNpYW5XaWR0aAotICAgICAgICAg
ICAgJiYgZWFzdEFzaWFuUnVieSA9PSBvdGhlci5lYXN0QXNpYW5SdWJ5OwotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250VmFyaWFudFNldHRpbmdzJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Rm9udFZhcmlhbnRTZXR0aW5ncyYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHVuc2lnbmVkIHVu
aXF1ZVZhbHVlKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCmlu
ZGV4IGI3ZjM5OWUxOTI4OGI4MDNkMDkyNDc3NDNkNDU2NGQ3ZDI1ZGM0ZWYuLjdkMDEwNzI5NDQ2
NDZiNWY5ZTJkODRlYmVkZjA1MGQxMmM5YTRkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvUGx1Z2luRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2lu
RGF0YS5oCkBAIC01MywxMyArNTMsOSBAQCBzdHJ1Y3QgTWltZUNsYXNzSW5mbyB7CiAgICAgU3Ry
aW5nIHR5cGU7CiAgICAgU3RyaW5nIGRlc2M7CiAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9u
czsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWltZUNsYXNzSW5mbyYpIGNvbnN0ID0gZGVm
YXVsdDsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgTWltZUNsYXNzSW5mbyYg
YSwgY29uc3QgTWltZUNsYXNzSW5mbyYgYikKLXsKLSAgICByZXR1cm4gYS50eXBlID09IGIudHlw
ZSAmJiBhLmRlc2MgPT0gYi5kZXNjICYmIGEuZXh0ZW5zaW9ucyA9PSBiLmV4dGVuc2lvbnM7Ci19
Ci0KIHN0cnVjdCBQbHVnaW5JbmZvIHsKICAgICBTdHJpbmcgbmFtZTsKICAgICBTdHJpbmcgZmls
ZTsKQEAgLTczLDE2ICs2OSw5IEBAIHN0cnVjdCBQbHVnaW5JbmZvIHsKICNpZiBQTEFURk9STShN
QUMpCiAgICAgU3RyaW5nIHZlcnNpb25TdHJpbmc7CiAjZW5kaWYKLX07CiAKLWlubGluZSBib29s
IG9wZXJhdG9yPT0oUGx1Z2luSW5mbyYgYSwgUGx1Z2luSW5mbyYgYikKLXsKLSAgICBib29sIHJl
c3VsdCA9IGEubmFtZSA9PSBiLm5hbWUgJiYgYS5maWxlID09IGIuZmlsZSAmJiBhLmRlc2MgPT0g
Yi5kZXNjICYmIGEubWltZXMgPT0gYi5taW1lcyAmJiBhLmlzQXBwbGljYXRpb25QbHVnaW4gPT0g
Yi5pc0FwcGxpY2F0aW9uUGx1Z2luICYmIGEuY2xpZW50TG9hZFBvbGljeSA9PSBiLmNsaWVudExv
YWRQb2xpY3kgJiYgYS5idW5kbGVJZGVudGlmaWVyID09IGIuYnVuZGxlSWRlbnRpZmllcjsKLSNp
ZiBQTEFURk9STShNQUMpCi0gICAgcmVzdWx0ID0gcmVzdWx0ICYmIGEudmVyc2lvblN0cmluZyA9
PSBiLnZlcnNpb25TdHJpbmc7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmVzdWx0OwotfQorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBQbHVnaW5JbmZvJikgY29uc3QgPSBkZWZhdWx0OworfTsKIAog
c3RydWN0IFN1cHBvcnRlZFBsdWdpbklkZW50aWZpZXIgewogICAgIFN0cmluZyBtYXRjaGluZ0Rv
bWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NWYWx1ZUtleS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmgKaW5kZXggNzUyNjE3NzA4
ZjE2Zjg5MjJmZDAwYWU5NzkxYjljZGFmNjAzMDlhZS4uNDc1OTljN2ViODM3NmZlMDk5ZmMyYmEx
OWE2YjVkZmEzZmU1ZDNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NT
U1ZhbHVlS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1ZhbHVlS2V5LmgK
QEAgLTMwLDIyICszMCwxOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQ1NTVmFs
dWVLZXkgewotCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENTU1ZhbHVlS2V5PiBkZWNvZGUoRGVj
b2RlciYpOwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1ZhbHVlS2V5JikgY29uc3Qg
PSBkZWZhdWx0OworCiAgICAgdW5zaWduZWQgY3NzVmFsdWVJRDsKICAgICBib29sIHVzZURhcmtB
cHBlYXJhbmNlOwogICAgIGJvb2wgdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWw7CiB9Owog
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1ZhbHVlS2V5JiBhLCBjb25zdCBDU1NW
YWx1ZUtleSYgYikKLXsKLSAgICByZXR1cm4gYS5jc3NWYWx1ZUlEID09IGIuY3NzVmFsdWVJRCAm
JiBhLnVzZURhcmtBcHBlYXJhbmNlID09IGIudXNlRGFya0FwcGVhcmFuY2UgJiYgYS51c2VFbGV2
YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCA9PSBiLnVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVs
OwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBDU1NWYWx1ZUtleTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQ2xpcFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUmVjdC5o
CmluZGV4IDUyYWJiNjcxZGE1YTYwNjNjOTcwOGNmNTI0NzI0ZDMyZWU2ZWNkMzMuLjYzMTEzMWNl
NjM1MWUxNDRlY2U0NjgzNzU0ZTVmYjFhNTlhM2E0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9DbGlwUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
bGlwUmVjdC5oCkBAIC01MSw4ICs1MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGFmZmVjdGVkQnlS
YWRpdXMoKSBjb25zdCB7IHJldHVybiBtX2FmZmVjdGVkQnlSYWRpdXM7IH0KICAgICB2b2lkIHNl
dEFmZmVjdGVkQnlSYWRpdXMoYm9vbCBhZmZlY3RlZEJ5UmFkaXVzKSB7IG1fYWZmZWN0ZWRCeVJh
ZGl1cyA9IGFmZmVjdGVkQnlSYWRpdXM7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ2xpcFJlY3QmIG90aGVyKSBjb25zdCB7IHJldHVybiByZWN0KCkgPT0gb3RoZXIucmVjdCgp
ICYmIGFmZmVjdGVkQnlSYWRpdXMoKSA9PSBvdGhlci5hZmZlY3RlZEJ5UmFkaXVzKCk7IH0KLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2xpcFJlY3QmIG90aGVyKSBjb25zdCB7IHJldHVybiBy
ZWN0KCkgIT0gb3RoZXIucmVjdCgpIHx8IGFmZmVjdGVkQnlSYWRpdXMoKSAhPSBvdGhlci5hZmZl
Y3RlZEJ5UmFkaXVzKCk7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xpcFJlY3QmKSBj
b25zdCA9IGRlZmF1bHQ7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExheW91dFJlY3QmIG90
aGVyUmVjdCkgY29uc3QgeyByZXR1cm4gcmVjdCgpICE9IG90aGVyUmVjdDsgfQogICAgIAogICAg
IHZvaWQgaW50ZXJzZWN0KGNvbnN0IExheW91dFJlY3QmIG90aGVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXZlbnRSZWdpb24uY3BwCmluZGV4IDdiOWRjYmNjNzU2NWI5YTZhMzNjNGFhYjlk
Y2RhYmEyZWNiMDFlYzMuLmNkY2MyMTkxMGFjZTFkN2U5NmM3NzhhMjBhNTkxNzU0ZmNkZDlkYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcApAQCAtOTgsMjcgKzk4
LDYgQEAgYm9vbCBFdmVudFJlZ2lvbkNvbnRleHQ6OmNvbnRhaW5zKGNvbnN0IEludFJlY3QmIHJl
Y3QpIGNvbnN0CiAKIEV2ZW50UmVnaW9uOjpFdmVudFJlZ2lvbigpID0gZGVmYXVsdDsKIAotYm9v
bCBFdmVudFJlZ2lvbjo6b3BlcmF0b3I9PShjb25zdCBFdmVudFJlZ2lvbiYgb3RoZXIpIGNvbnN0
Ci17Ci0jaWYgRU5BQkxFKFRPVUNIX0FDVElPTl9SRUdJT05TKQotICAgIGlmIChtX3RvdWNoQWN0
aW9uUmVnaW9ucyAhPSBvdGhlci5tX3RvdWNoQWN0aW9uUmVnaW9ucykKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0hFRUxfRVZFTlRfUkVHSU9OUykKLSAgICBp
ZiAobV93aGVlbEV2ZW50TGlzdGVuZXJSZWdpb24gIT0gb3RoZXIubV93aGVlbEV2ZW50TGlzdGVu
ZXJSZWdpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9ub25QYXNzaXZlV2hl
ZWxFdmVudExpc3RlbmVyUmVnaW9uICE9IG90aGVyLm1fbm9uUGFzc2l2ZVdoZWVsRXZlbnRMaXN0
ZW5lclJlZ2lvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUo
RURJVEFCTEVfUkVHSU9OKQotICAgIGlmIChtX2VkaXRhYmxlUmVnaW9uICE9IG90aGVyLm1fZWRp
dGFibGVSZWdpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAgIHJldHVybiBt
X3JlZ2lvbiA9PSBvdGhlci5tX3JlZ2lvbjsKLX0KLQogdm9pZCBFdmVudFJlZ2lvbjo6dW5pdGUo
Y29uc3QgUmVnaW9uJiByZWdpb24sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgYm9vbCBvdmVy
cmlkZVVzZXJNb2RpZnlJc0VkaXRhYmxlKQogewogICAgIG1fcmVnaW9uLnVuaXRlKHJlZ2lvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCmluZGV4IDk5NmU0YjVkYjYyMjNl
YTk4MGI0ZWE3NmMzZmNmY2JlNWI5ZTNlYzAuLjI4MmYzYWJlYzVlODI1MWIzZjgzNTRhZjU5Y2Zm
MTQxOTNhM2U5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJl
Z2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5oCkBAIC05
NSw3ICs5NSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnaW9uLmlzRW1wdHkoKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEV2ZW50UmVnaW9uJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV2ZW50UmVnaW9uJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgdm9pZCB1bml0ZShjb25zdCBS
ZWdpb24mLCBjb25zdCBSZW5kZXJTdHlsZSYsIGJvb2wgb3ZlcnJpZGVVc2VyTW9kaWZ5SXNFZGl0
YWJsZSA9IGZhbHNlKTsKICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBJbnRTaXplJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2FwUmVjdHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9HYXBSZWN0cy5oCmluZGV4IDdlYzQ5M2NkMTRlZjEyZTI4OTQ5ZDhhMjhk
ZTQ5NjkzYTNmYTI1NjYuLjc0OGEwMzU0ZGFhOTlmMWVlY2IxNjQ1YzM3MGFiZmI1NDkxOTBjZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HYXBSZWN0cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HYXBSZWN0cy5oCkBAIC00NCwxMSArNDQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAK
LSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdhcFJlY3RzJiBvdGhlcikgY29uc3QKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fbGVmdCA9PSBvdGhlci5sZWZ0KCkgJiYgbV9j
ZW50ZXIgPT0gb3RoZXIuY2VudGVyKCkgJiYgbV9yaWdodCA9PSBvdGhlci5yaWdodCgpOwotICAg
ICAgICB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBHYXBSZWN0cyYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBHYXBSZWN0cyYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIExheW91dFJlY3QgbV9sZWZ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0dyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCmluZGV4IDU2
MDJkN2MyZDRkNWJjYTkzMjQ1NDRiNzVhZDIyY2IyNjU4ZWQwMmMuLjBkZjc0MjY1MWZmN2JkYzhi
YjY0MzM0NmY5YmNjYmMyMDRjMTllMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9HcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAg
LTIxNCw3ICsyMTQsNyBAQCBib29sIEdyaWRJdGVyYXRvcjo6aXNFbXB0eUFyZWFFbm91Z2godW5z
aWduZWQgcm93U3BhbiwgdW5zaWduZWQgY29sdW1uU3BhbikgY29ucwogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5
R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1Nw
YW4pCitzdGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRB
cmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKQog
ewogICAgIEFTU0VSVCghbV9ncmlkLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKCFtX2dyaWRbMF0u
aXNFbXB0eSgpKTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+
IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYQog
ICAgIEFTU0VSVCh2YXJ5aW5nVHJhY2tTcGFuID49IDEpOwogCiAgICAgaWYgKG1fZ3JpZC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgdW5zaWduZWQgcm93U3BhbiA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5z
KSA/IHZhcnlpbmdUcmFja1NwYW4gOiBmaXhlZFRyYWNrU3BhbjsKICAgICB1bnNpZ25lZCBjb2x1
bW5TcGFuID0gKG1fZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRUcmFja1NwYW4gOiB2
YXJ5aW5nVHJhY2tTcGFuOwpAQCAtMjMxLDEzICsyMzEsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPEdy
aWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJh
Y2tTcGEKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZlZhcnlpbmdUcmFja0luZGV4ID0gKG1fZGly
ZWN0aW9uID09IEZvckNvbHVtbnMpID8gbV9ncmlkLnNpemUoKSA6IG1fZ3JpZFswXS5zaXplKCk7
CiAgICAgZm9yICg7IHZhcnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsg
Kyt2YXJ5aW5nVHJhY2tJbmRleCkgewogICAgICAgICBpZiAoaXNFbXB0eUFyZWFFbm91Z2gocm93
U3BhbiwgY29sdW1uU3BhbikpIHsKLSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJl
YT4gcmVzdWx0ID0gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZp
bml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93SW5kZXggKyByb3dTcGFuKSwgR3JpZFNwYW46
OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fY29sdW1uSW5kZXgsIG1fY29sdW1uSW5kZXgg
KyBjb2x1bW5TcGFuKSk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IEdyaWRBcmVhKEdyaWRT
cGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsg
cm93U3BhbiksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbklu
ZGV4LCBtX2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOwogICAgICAgICAgICAgLy8gQWR2YW5j
ZSB0aGUgaXRlcmF0b3IgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcCB3aGVyZSB3ZSB3b3VsZCBy
ZXR1cm4gdGhlIHNhbWUgZ3JpZCBhcmVhIG92ZXIgYW5kIG92ZXIuCiAgICAgICAgICAgICArK3Zh
cnlpbmdUcmFja0luZGV4OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQog
ICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaAppbmRleCA3MmNh
ZGY2OGVmNGQzMjY2Y2UxZjhjZWViZGM5YTQ5ZGYyYmM4MTFiLi41OTQ3ZmU1ZTUzODY1M2QwYWFj
ODQ5NGZlYThkYTk2N2MzMDg1ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmgKQEAgLTM3LDEw
ICszNywxMSBAQCB0eXBlZGVmIFZlY3RvcjxXZWFrUHRyPFJlbmRlckJveD4sIDE+IEdyaWRDZWxs
OwogdHlwZWRlZiBWZWN0b3I8VmVjdG9yPEdyaWRDZWxsPj4gR3JpZEFzTWF0cml4OwogdHlwZWRl
ZiBMaXN0SGFzaFNldDxzaXplX3Q+IE9yZGVyZWRUcmFja0luZGV4U2V0OwogCi1jbGFzcyBHcmlk
QXJlYTsKIGNsYXNzIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjsKIGNsYXNzIFJlbmRlckdyaWQ7CiAK
K3N0cnVjdCBHcmlkQXJlYTsKKwogY2xhc3MgR3JpZCBmaW5hbCB7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgR3JpZChSZW5kZXJHcmlkJik7CkBAIC0xMTEsNyArMTEyLDcgQEAgcHVibGljOgogCiAg
ICAgUmVuZGVyQm94KiBuZXh0R3JpZEl0ZW0oKTsKICAgICBib29sIGlzRW1wdHlBcmVhRW5vdWdo
KHVuc2lnbmVkIHJvd1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNvbnN0OwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxHcmlkQXJlYT4gbmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFj
a1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pOworICAgIHN0ZDo6b3B0aW9uYWw8R3Jp
ZEFyZWE+IG5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25l
ZCB2YXJ5aW5nVHJhY2tTcGFuKTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBHcmlkQXNNYXRyaXgm
IG1fZ3JpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaWdobGlnaHRE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGlnaGxpZ2h0RGF0YS5oCmluZGV4IGFm
MTE1ZGQzMDAwODhhYzA5NzlkMDM2MTMxOThlNTE4YTVjZDUwNGEuLjBhNDUzYjc4YTAzNGViZTVm
NGE3YzFjY2IwOTY4MmU3Yjg0OGEyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaWdobGlnaHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpZ2hs
aWdodERhdGEuaApAQCAtNTUsMTAgKzU1LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydE9mZnNldDsgfQogICAgIHVuc2lnbmVkIGVu
ZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kT2Zmc2V0OyB9CiAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgUmVuZGVyUmFuZ2UmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fc3RhcnQgPT0gb3RoZXIubV9zdGFydCAmJiBtX2VuZCA9PSBvdGhlci5tX2VuZCAmJiBt
X3N0YXJ0T2Zmc2V0ID09IG90aGVyLm1fc3RhcnRPZmZzZXQgJiYgbV9lbmRPZmZzZXQgPT0gb3Ro
ZXIubV9lbmRPZmZzZXQ7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW5kZXJS
YW5nZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICBXZWFrUHRyPFJlbmRlck9i
amVjdD4gbV9zdGFydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXll
ckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVy
QW5jZXN0b3JDbGlwcGluZ1N0YWNrLmgKaW5kZXggMjViY2EyN2ExNjg2NjdiZTI0MTBjZGVlOWFi
YWE5Zjg5MmM0MmVkNy4uOGMxOWRmZWVlZTI1NzdmNzYyOTBkMjk3Zjg5YzQ4MjM3Y2Y2N2ZlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyQW5jZXN0b3JDbGlwcGlu
Z1N0YWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheWVyQW5jZXN0b3JDbGlw
cGluZ1N0YWNrLmgKQEAgLTQ3LDE3ICs0Nyw3IEBAIHN0cnVjdCBDb21wb3NpdGVkQ2xpcERhdGEg
ewogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29tcG9zaXRlZENs
aXBEYXRhJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBjbGlwcGluZ0xheWVy
ID09IG90aGVyLmNsaXBwaW5nTGF5ZXIKLSAgICAgICAgICAgICYmIGNsaXBSZWN0ID09IG90aGVy
LmNsaXBSZWN0Ci0gICAgICAgICAgICAmJiBpc092ZXJmbG93U2Nyb2xsID09IG90aGVyLmlzT3Zl
cmZsb3dTY3JvbGw7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb21w
b3NpdGVkQ2xpcERhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29tcG9zaXRl
ZENsaXBEYXRhJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgV2Vha1B0cjxSZW5kZXJMYXllcj4g
Y2xpcHBpbmdMYXllcjsgLy8gRm9yIHNjcm9sbGVyIGVudHJpZXMsIHRoZSBzY3JvbGxpbmcgbGF5
ZXIuIEZvciBvdGhlciBlbnRyaWVzLCB0aGUgbW9zdC1kZXNjZW5kYW50IGxheWVyIHRoYXQgaGFz
IGEgY2xpcC4KICAgICBMYXlvdXRSZWN0IGNsaXBSZWN0OyAvLyBJbiB0aGUgY29vcmRpbmF0ZSBz
eXN0ZW0gb2YgdGhlIFJlbmRlckxheWVyIHRoYXQgb3ducyB0aGUgc3RhY2suCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVJdGVyYXRvci5oCmluZGV4IDdjNGI2N2I5
MTFjMTY4N2M4MDZjZGY5NDc2ZGFiYzRjNzE4OTQ2MzAuLmFmMjdhZmRiOWE3NzEyNDFlODRkOWQ2
YjAzYTQ5Y2JmZDU4ZjJmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
ZWdhY3lJbmxpbmVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdh
Y3lJbmxpbmVJdGVyYXRvci5oCkBAIC0xMzUsMTEgKzEzNSw2IEBAIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgTGVnYWN5SW5saW5lSXRlcmF0b3ImIGl0MSwgY29uc3QgTGVnYWN5SW5saW5l
SXRlcmF0CiAgICAgcmV0dXJuIGl0MS5vZmZzZXQoKSA9PSBpdDIub2Zmc2V0KCkgJiYgaXQxLnJl
bmRlcmVyKCkgPT0gaXQyLnJlbmRlcmVyKCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgTGVnYWN5SW5saW5lSXRlcmF0b3ImIGl0MSwgY29uc3QgTGVnYWN5SW5saW5lSXRlcmF0
b3ImIGl0MikKLXsKLSAgICByZXR1cm4gaXQxLm9mZnNldCgpICE9IGl0Mi5vZmZzZXQoKSB8fCBp
dDEucmVuZGVyZXIoKSAhPSBpdDIucmVuZGVyZXIoKTsKLX0KLQogc3RhdGljIGlubGluZSBVQ2hh
ckRpcmVjdGlvbiBlbWJlZENoYXJGcm9tRGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
LCBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkpCiB7CiAgICAgaWYgKHVuaWNvZGVCaWRpID09IEVt
YmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0LmgKaW5kZXggMzA0MjBlMjQ4ZDIw
MWUwNDE4YWNiODM4MThhMGRlZDhmZjliYTYxYS4uMDZhYmJhYTMzYjkwOTAzZGUyZjFjNDAwNjM2
NTc3ZTk5NDhiMzYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtl
ZFRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oCkBAIC03
NCwxMSArNzQsNyBAQCBzdHJ1Y3QgTWFya2VkVGV4dCB7CiAgICAgU3RyaW5nIGhpZ2hsaWdodE5h
bWUgeyB9OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gZW5kT2Zmc2V0IDw9
IHN0YXJ0T2Zmc2V0OyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1hcmtlZFRleHQmIG90
aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBNYXJrZWRUZXh0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBzdGFydE9mZnNldCA9PSBvdGhlci5zdGFydE9mZnNldCAmJiBlbmRPZmZzZXQgPT0gb3RoZXIu
ZW5kT2Zmc2V0ICYmIHR5cGUgPT0gb3RoZXIudHlwZSAmJiBtYXJrZXIgPT0gb3RoZXIubWFya2Vy
ICYmIGhpZ2hsaWdodE5hbWUgPT0gb3RoZXIuaGlnaGxpZ2h0TmFtZTsKLSAgICB9CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE1hcmtlZFRleHQmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgVmVjdG9yPE1hcmtlZFRleHQ+IHN1YmRpdmlkZShjb25zdCBW
ZWN0b3I8TWFya2VkVGV4dD4mLCBPdmVybGFwU3RyYXRlZ3kgPSBPdmVybGFwU3RyYXRlZ3k6Ok5v
bmUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFnaW5hdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhZ2luYXRpb24uaAppbmRleCAyNDU5ZjkzNzg1
NmI2OWE0OTNjNjViNDBiYzE4OGM4YWE2OTk3ZWNhLi43NWI5ODk4YTI1MDk4YWFhZjMyYjYyMDIx
NWI1NTAzMTcyZjNmNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFn
aW5hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWdpbmF0aW9uLmgKQEAg
LTMyLDE1ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBQYWdpbmF0aW9uIHsK
ICAgICBlbnVtIE1vZGUgOiB1aW50OF90IHsgVW5wYWdpbmF0ZWQsIExlZnRUb1JpZ2h0UGFnaW5h
dGVkLCBSaWdodFRvTGVmdFBhZ2luYXRlZCwgVG9wVG9Cb3R0b21QYWdpbmF0ZWQsIEJvdHRvbVRv
VG9wUGFnaW5hdGVkIH07CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFnaW5hdGlvbiYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbW9kZSA9PSBvdGhlci5tb2RlICYm
IGJlaGF2ZXNMaWtlQ29sdW1ucyA9PSBvdGhlci5iZWhhdmVzTGlrZUNvbHVtbnMgJiYgcGFnZUxl
bmd0aCA9PSBvdGhlci5wYWdlTGVuZ3RoICYmIGdhcCA9PSBvdGhlci5nYXA7Ci0gICAgfQotCi0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBhZ2luYXRpb24mIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgUGFnaW5hdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIE1vZGUgbW9k
ZSB7IFVucGFnaW5hdGVkIH07CiAgICAgYm9vbCBiZWhhdmVzTGlrZUNvbHVtbnMgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhdGhPcGVyYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYXRoT3BlcmF0aW9uLmgKaW5kZXggNGIwZmE3MWY2
MGJjZmVkYjllY2JkMDExZTlkZGRhNzFkZWRjZTE5Mi4uZTc2MGE1N2E5Njc4NjU0YjdmODZlYTA4
NGJiZDU3Mjg4MWVmNjE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Bh
dGhPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGF0aE9wZXJhdGlv
bi5oCkBAIC01MCw3ICs1MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5QYXRoT3BlcmF0aW9u
KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgUGF0aE9w
ZXJhdGlvbiYpIGNvbnN0ID0gMDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUGF0aE9wZXJh
dGlvbiYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCiAgICAgT3BlcmF0aW9u
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgYm9vbCBpc1NhbWVUeXBl
KGNvbnN0IFBhdGhPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuIG8udHlwZSgpID09IG1fdHlw
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCmluZGV4IGNl
Y2VkMzVlNWNlODdiZmJjMTQwMTgzNmNkMTNlYTFhZWRkN2FmYzAuLjAwZWJkNWZmYzA1YjcyMjJh
NGY3YTQzYjBjNDIxYjJjMzk2NTZkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQ291bnRlci5jcHAKQEAgLTQzMCwyMCArNDMwLDE5IEBAIFN0cmluZyBSZW5kZXJDb3VudGVy
OjpvcmlnaW5hbFRleHQoKSBjb25zdAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgYmVmb3JlQWZ0ZXJDb250YWluZXIgPSBiZWZvcmVBZnRlckNvbnRhaW5lci0+cGFyZW50KCk7
CiAgICAgICAgIH0KLSAgICAgICAgbWFrZUNvdW50ZXJOb2RlKCpiZWZvcmVBZnRlckNvbnRhaW5l
ciwgbV9jb3VudGVyLmlkZW50aWZpZXIoKSwgdHJ1ZSktPmFkZFJlbmRlcmVyKGNvbnN0X2Nhc3Q8
UmVuZGVyQ291bnRlciY+KCp0aGlzKSk7CisgICAgICAgIG1ha2VDb3VudGVyTm9kZSgqYmVmb3Jl
QWZ0ZXJDb250YWluZXIsIG1fY291bnRlci5pZGVudGlmaWVyLCB0cnVlKS0+YWRkUmVuZGVyZXIo
Y29uc3RfY2FzdDxSZW5kZXJDb3VudGVyJj4oKnRoaXMpKTsKICAgICAgICAgQVNTRVJUKG1fY291
bnRlck5vZGUpOwogICAgIH0KICAgICBDb3VudGVyTm9kZSogY2hpbGQgPSBtX2NvdW50ZXJOb2Rl
OwogICAgIGludCB2YWx1ZSA9IGNoaWxkLT5hY3RzQXNSZXNldCgpID8gY2hpbGQtPnZhbHVlKCkg
OiBjaGlsZC0+Y291bnRJblBhcmVudCgpOwogCi0gICAgU3RyaW5nIHRleHQgPSBsaXN0TWFya2Vy
VGV4dChtX2NvdW50ZXIubGlzdFN0eWxlKCksIHZhbHVlKTsKKyAgICBTdHJpbmcgdGV4dCA9IGxp
c3RNYXJrZXJUZXh0KG1fY291bnRlci5saXN0U3R5bGUsIHZhbHVlKTsKIAotICAgIGlmICghbV9j
b3VudGVyLnNlcGFyYXRvcigpLmlzTnVsbCgpKSB7CisgICAgaWYgKCFtX2NvdW50ZXIuc2VwYXJh
dG9yLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICghY2hpbGQtPmFjdHNBc1Jlc2V0KCkpCiAgICAg
ICAgICAgICBjaGlsZCA9IGNoaWxkLT5wYXJlbnQoKTsKICAgICAgICAgd2hpbGUgKENvdW50ZXJO
b2RlKiBwYXJlbnQgPSBjaGlsZC0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgIHRleHQgPSBsaXN0
TWFya2VyVGV4dChtX2NvdW50ZXIubGlzdFN0eWxlKCksIGNoaWxkLT5jb3VudEluUGFyZW50KCkp
Ci0gICAgICAgICAgICAgICAgKyBtX2NvdW50ZXIuc2VwYXJhdG9yKCkgKyB0ZXh0OworICAgICAg
ICAgICAgdGV4dCA9IGxpc3RNYXJrZXJUZXh0KG1fY291bnRlci5saXN0U3R5bGUsIGNoaWxkLT5j
b3VudEluUGFyZW50KCkpICsgbV9jb3VudGVyLnNlcGFyYXRvciArIHRleHQ7CiAgICAgICAgICAg
ICBjaGlsZCA9IHBhcmVudDsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJHcmlkLmNwcAppbmRleCAyNmY4ZmNiYzBhYjI3OTYwYzQ5MzkyMjNlNzQ4ZDkzYzNi
ODNjOTlhLi4xYjY3NDVhOWU3OTBiODA1YjEzNTAwMDQyZTQxZTA5M2VkODE2OTMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC03NjUsMTMgKzc2NSwxMyBAQCB2
b2lkIFJlbmRlckdyaWQ6OnBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcihHcmlk
JiBncmlkKSBjb25zdAogICAgIGdyaWQuZW5zdXJlR3JpZFNpemUobWF4aW11bVJvd0luZGV4ICsg
ZXhwbGljaXRSb3dTdGFydCwgbWF4aW11bUNvbHVtbkluZGV4ICsgZXhwbGljaXRDb2x1bW5TdGFy
dCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gUmVuZGVyR3JpZDo6Y3JlYXRlRW1w
dHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYgZ3JpZCwgY29u
c3QgUmVuZGVyQm94JiBncmlkSXRlbSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHNwZWNpZmll
ZERpcmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mIHNwZWNpZmllZFBvc2l0aW9ucykgY29uc3QKK0dy
aWRBcmVhIFJlbmRlckdyaWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9u
c091dHNpZGVHcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRU
cmFja1NpemluZ0RpcmVjdGlvbiBzcGVjaWZpZWREaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJiBz
cGVjaWZpZWRQb3NpdGlvbnMpIGNvbnN0CiB7CiAgICAgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGNyb3NzRGlyZWN0aW9uID0gc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBGb3JS
b3dzIDogRm9yQ29sdW1uczsKICAgICBjb25zdCB1bnNpZ25lZCBlbmRPZkNyb3NzRGlyZWN0aW9u
ID0gZ3JpZC5udW1UcmFja3MoY3Jvc3NEaXJlY3Rpb24pOwogICAgIHVuc2lnbmVkIGNyb3NzRGly
ZWN0aW9uU3BhblNpemUgPSBHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OnNwYW5TaXplRm9yQXV0b1Bs
YWNlZEl0ZW0oZ3JpZEl0ZW0sIGNyb3NzRGlyZWN0aW9uKTsKICAgICBHcmlkU3BhbiBjcm9zc0Rp
cmVjdGlvblBvc2l0aW9ucyA9IEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3Bhbihl
bmRPZkNyb3NzRGlyZWN0aW9uLCBlbmRPZkNyb3NzRGlyZWN0aW9uICsgY3Jvc3NEaXJlY3Rpb25T
cGFuU2l6ZSk7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8R3JpZEFyZWE+KHNwZWNpZmllZERpcmVj
dGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgOiBzcGVjaWZpZWRQ
b3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3BlY2lmaWVkUG9z
aXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOworICAgIHJldHVybiBHcmlkQXJlYShz
cGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25z
IDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/
IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKIH0KIAogdm9p
ZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdy
aWQsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYgYXV0b0dyaWRJdGVtcykgY29uc3QKQEAgLTc5
Miw3ICs3OTIsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRl
bXNPbkdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbgogICAgICAgICB1bnNpZ25lZCBt
YWpvckF4aXNJbml0aWFsUG9zaXRpb24gPSBtYWpvckF4aXNQb3NpdGlvbnMuc3RhcnRMaW5lKCk7
CiAKICAgICAgICAgR3JpZEl0ZXJhdG9yIGl0ZXJhdG9yKGdyaWQsIGF1dG9QbGFjZW1lbnRNYWpv
ckF4aXNEaXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25zLnN0YXJ0TGluZSgpLCBpc0dyaWRB
dXRvRmxvd0RlbnNlID8gMCA6IG1pbm9yQXhpc0N1cnNvcnMuZ2V0KG1ham9yQXhpc0luaXRpYWxQ
b3NpdGlvbikpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IGVtcHR5R3JpZEFy
ZWEgPSBpdGVyYXRvci5uZXh0RW1wdHlHcmlkQXJlYShtYWpvckF4aXNQb3NpdGlvbnMuaW50ZWdl
clNwYW4oKSwgbWlub3JBeGlzU3BhblNpemUpOworICAgICAgICBhdXRvIGVtcHR5R3JpZEFyZWEg
PSBpdGVyYXRvci5uZXh0RW1wdHlHcmlkQXJlYShtYWpvckF4aXNQb3NpdGlvbnMuaW50ZWdlclNw
YW4oKSwgbWlub3JBeGlzU3BhblNpemUpOwogICAgICAgICBpZiAoIWVtcHR5R3JpZEFyZWEpCiAg
ICAgICAgICAgICBlbXB0eUdyaWRBcmVhID0gY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVk
UG9zaXRpb25zT3V0c2lkZUdyaWQoZ3JpZCwgKmF1dG9HcmlkSXRlbSwgYXV0b1BsYWNlbWVudE1h
am9yQXhpc0RpcmVjdGlvbigpLCBtYWpvckF4aXNQb3NpdGlvbnMpOwogCkBAIC04MjcsNyArODI3
LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKEdyaWQm
IGdyaWQsIFJlbmRlckJveCYgZ3JpZEl0ZW0sIEEKICAgICB1bnNpZ25lZCBtYWpvckF4aXNBdXRv
UGxhY2VtZW50Q3Vyc29yID0gYXV0b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpID09IEZv
ckNvbHVtbnMgPyBhdXRvUGxhY2VtZW50Q3Vyc29yLnNlY29uZCA6IGF1dG9QbGFjZW1lbnRDdXJz
b3IuZmlyc3Q7CiAgICAgdW5zaWduZWQgbWlub3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvciA9IGF1
dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSA9PSBGb3JDb2x1bW5zID8gYXV0b1BsYWNl
bWVudEN1cnNvci5maXJzdCA6IGF1dG9QbGFjZW1lbnRDdXJzb3Iuc2Vjb25kOwogCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPEdyaWRBcmVhPiBlbXB0eUdyaWRBcmVhOworICAgIHN0ZDo6b3B0aW9uYWw8
R3JpZEFyZWE+IGVtcHR5R3JpZEFyZWE7CiAgICAgR3JpZFNwYW4gbWlub3JBeGlzUG9zaXRpb25z
ID0gZ3JpZC5ncmlkSXRlbVNwYW4oZ3JpZEl0ZW0sIGF1dG9QbGFjZW1lbnRNaW5vckF4aXNEaXJl
Y3Rpb24oKSk7CiAgICAgaWYgKG1pbm9yQXhpc1Bvc2l0aW9ucy5pc1RyYW5zbGF0ZWREZWZpbml0
ZSgpKSB7CiAgICAgICAgIC8vIE1vdmUgdG8gdGhlIG5leHQgdHJhY2sgaW4gbWFqb3IgYXhpcyBp
ZiBpbml0aWFsIHBvc2l0aW9uIGluIG1pbm9yIGF4aXMgaXMgYmVmb3JlIGF1dG8tcGxhY2VtZW50
IGN1cnNvci4KQEAgLTg1Nyw3ICs4NTcsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlQXV0b01h
am9yQXhpc0l0ZW1PbkdyaWQoR3JpZCYgZ3JpZCwgUmVuZGVyQm94JiBncmlkSXRlbSwgQQogCiAg
ICAgICAgICAgICAgICAgLy8gRGlzY2FyZCBlbXB0eSBncmlkIGFyZWEgYXMgaXQgZG9lcyBub3Qg
Zml0IGluIHRoZSBtaW5vciBheGlzIGRpcmVjdGlvbi4KICAgICAgICAgICAgICAgICAvLyBXZSBk
b24ndCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBlbXB0eSBncmlkIGFyZWEgeWV0IGFzIHdlIG1pZ2h0
IGZpbmQgYSB2YWxpZCBvbmUgaW4gdGhlIG5leHQgaXRlcmF0aW9uLgotICAgICAgICAgICAgICAg
IGVtcHR5R3JpZEFyZWEgPSBudWxscHRyOworICAgICAgICAgICAgICAgIGVtcHR5R3JpZEFyZWEg
PSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIEFzIHdlJ3Jl
IG1vdmluZyB0byB0aGUgbmV4dCB0cmFjayBpbiB0aGUgbWFqb3IgYXhpcyB3ZSBzaG91bGQgcmVz
ZXQgdGhlIGF1dG8tcGxhY2VtZW50IGN1cnNvciBpbiB0aGUgbWlub3IgYXhpcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IDI5YWU1OTQ4MDAzZWU2ZDJkZDQ0M2I1Njk5
ZGNiMmQ3YzE3Yjk2MjYuLjY1YzllNmUyNTI2ODQ5NzAzMzg0ZGRkY2JhMTc4M2M0YmI3N2IxMmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtMzIsOSArMzIsMTAgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBHcmlkQXJlYTsKIGNsYXNzIEdyaWRTcGFu
OwogCitzdHJ1Y3QgR3JpZEFyZWE7CisKIHN0cnVjdCBDb250ZW50QWxpZ25tZW50RGF0YSB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGVudEFsaWdubWVudERhdGEpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTExMSw3ICsxMTIsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwbGFjZUl0ZW1zT25HcmlkKEdyaWRUcmFja1NpemluZ0FsZ29yaXRobSYsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlTG9naWNhbFdpZHRoKSBjb25zdDsKICAgICB2
b2lkIHBvcHVsYXRlRXhwbGljaXRHcmlkQW5kT3JkZXJJdGVyYXRvcihHcmlkJikgY29uc3Q7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZp
ZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiwgY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNr
U2l6aW5nRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYpIGNvbnN0OworICAgIEdyaWRBcmVhIGNy
ZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmLCBj
b25zdCBSZW5kZXJCb3gmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFu
JikgY29uc3Q7CiAgICAgdm9pZCBwbGFjZVNwZWNpZmllZE1ham9yQXhpc0l0ZW1zT25HcmlkKEdy
aWQmLCBjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mKSBjb25zdDsKICAgICB2b2lkIHBsYWNlQXV0
b01ham9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmLCBjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mKSBj
b25zdDsKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+IEF1dG9QbGFj
ZW1lbnRDdXJzb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJdGVyYXRvci5oCmlu
ZGV4IDViOWYyNTdkYTYxYzEwZTBiNjcyM2ZmODgyNDBhYmRjOTk1OTQyNDQuLjRhYzk4ZmZhNmZi
MTk0MWNiMzhmNzgxNWEyZjQyYTkzNWRhMWNmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJdGVyYXRvci5oCkBAIC00Miw4ICs0Miw3IEBAIHB1YmxpYzoKIAogICAgIG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQ7IH0KIAotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBSZW5kZXJJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBSZW5kZXJJdGVyYXRvciYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBSZW5kZXJJdGVyYXRvciYpIGNvbnN0OwogCiAgICAgUmVuZGVySXRlcmF0b3Im
IHRyYXZlcnNlTmV4dCgpOwogICAgIFJlbmRlckl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRTaWJsaW5n
KCk7CkBAIC02Nyw4ICs2Niw3IEBAIHB1YmxpYzoKIAogICAgIG9wZXJhdG9yIGJvb2woKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnQ7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW5k
ZXJDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFJlbmRlckNvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgUmVuZGVyQ29uc3RJdGVyYXRvciYpIGNvbnN0OwogCiAgICAgUmVuZGVyQ29uc3RJdGVy
YXRvciYgdHJhdmVyc2VOZXh0KCk7CiAgICAgUmVuZGVyQ29uc3RJdGVyYXRvciYgdHJhdmVyc2VO
ZXh0U2libGluZygpOwpAQCAtMjkwLDEyICsyODgsNiBAQCBpbmxpbmUgYm9vbCBSZW5kZXJJdGVy
YXRvcjxUPjo6b3BlcmF0b3I9PShjb25zdCBSZW5kZXJJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotaW5saW5lIGJvb2wgUmVuZGVySXRlcmF0b3I8VD46Om9wZXJhdG9yIT0oY29u
c3QgUmVuZGVySXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKLX0KLQogLy8gUmVuZGVyQ29uc3RJdGVyYXRvcgogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KQEAgLTM3NSwxMiArMzY3LDYgQEAgaW5saW5lIGJvb2wgUmVuZGVyQ29uc3RJdGVyYXRv
cjxUPjo6b3BlcmF0b3I9PShjb25zdCBSZW5kZXJDb25zdEl0ZXJhdG9yJiBvdGhlcikKICAgICBy
ZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1pbmxpbmUgYm9vbCBSZW5kZXJDb25zdEl0ZXJhdG9yPFQ+OjpvcGVyYXRvciE9KGNv
bnN0IFJlbmRlckNvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjaW5jbHVkZSAi
UmVuZGVyQW5jZXN0b3JJdGVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBiZjBiZmRlMGM1OTY4ZjFiYTNjMDE0
MjZkOWIzZGQ3NzMxMTJkYTRjLi5jYWExN2EwYWE5NWQ4MWNkMGJmZTRkYjlmM2U1NmNlNTBmODE1
NmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21w
b3NpdG9yLmNwcApAQCAtOTgsNyArOTgsNyBAQCBXRUJDT1JFX0VYUE9SVCBib29sIFdlYkNvcmVI
YXMzRFJlbmRlcmluZyA9IHRydWU7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhVVNFKENP
TVBPU0lUSU5HX0ZPUl9TTUFMTF9DQU5WQVNFUykKLXN0YXRpYyBjb25zdCBpbnQgY2FudmFzQXJl
YVRocmVzaG9sZFJlcXVpcmluZ0NvbXBvc2l0aW5nID0gNTAgKiAxMDA7CitzdGF0aWMgY29uc3Rl
eHByIHVuc2lnbmVkIGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGluZyA9IDUw
ICogMTAwOwogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCBlOWYxMWZkNGExODEzYTk0
MmM4YmJmMDRmMGJjM2FiMzdlMGM4MGVlLi5mNjJkYTViOTQ0ZGJiZWVhNjgyM2MzZjgwMDU3Nzky
ZDUyZTBmZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHAKQEAgLTQ2Nyw4ICs0NjcsOCBAQCBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpyZXBsYWNl
ZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUpCiAKICAgICBMZW5n
dGhQb2ludCBvYmplY3RQb3NpdGlvbiA9IHN0eWxlKCkub2JqZWN0UG9zaXRpb24oKTsKIAotICAg
IExheW91dFVuaXQgeE9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlv
bi54KCksIGNvbnRlbnRSZWN0LndpZHRoKCkgLSBmaW5hbFJlY3Qud2lkdGgoKSk7Ci0gICAgTGF5
b3V0VW5pdCB5T2Zmc2V0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG9iamVjdFBvc2l0aW9uLnko
KSwgY29udGVudFJlY3QuaGVpZ2h0KCkgLSBmaW5hbFJlY3QuaGVpZ2h0KCkpOworICAgIExheW91
dFVuaXQgeE9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi54LCBj
b250ZW50UmVjdC53aWR0aCgpIC0gZmluYWxSZWN0LndpZHRoKCkpOworICAgIExheW91dFVuaXQg
eU9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmplY3RQb3NpdGlvbi55LCBjb250ZW50
UmVjdC5oZWlnaHQoKSAtIGZpbmFsUmVjdC5oZWlnaHQoKSk7CiAKICAgICBmaW5hbFJlY3QubW92
ZSh4T2Zmc2V0LCB5T2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRCb3hQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94
UGFpbnRlci5jcHAKaW5kZXggY2E1Yjc0MGQ5MDQ0YmQ2NWUzNjZiNTdkNzZjMzQyOGMzZjllZTNm
Ni4uNGM0NzRjOTVlM2VlYzIyMmYwNTM5OTM1MjI1ZDRhMjE5YTYwMjhkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCkBAIC02NDAsNyArNjQwLDcgQEAg
Y29uc3QgU2hhZG93RGF0YSogVGV4dEJveFBhaW50ZXI6OmRlYnVnVGV4dFNoYWRvdygpIGNvbnN0
CiAgICAgaWYgKCF0ZXh0Qm94KCkubGVnYWN5SW5saW5lQm94KCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlYnVnVGV4
dFNoYWRvdyhMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVu
Z3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKDEwLCBMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCgy
MCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBTUkdCQTx1
aW50OF90PiB7IDE1MCwgMCwgMCwgMTkwIH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
aGFkb3dEYXRhPiBkZWJ1Z1RleHRTaGFkb3coTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZp
eGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoMTAsIExlbmd0aFR5cGU6OkZp
eGVkKSwgTGVuZ3RoKDIwLCBMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWws
IHRydWUsIFNSR0JBPHVpbnQ4X3Q+IHsgMTUwLCAwLCAwLCAxOTAgfSk7CiAgICAgcmV0dXJuICZk
ZWJ1Z1RleHRTaGFkb3cuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKaW5kZXggNGZmNDgxNmZjNDNlY2U3OGVlODk3
NzFlMTZkODU1ZmEwNWZmZDFjOS4uYzdiNmI2YzI2NWYwNDJlYmQxZGYzNjFkMzJiNDAyZDM2NDU0
Zjk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9u
UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9u
UGFpbnRlci5jcHAKQEAgLTE4NCwxMiArMTg0LDYgQEAgc3RhdGljIFN0cm9rZVN0eWxlIHRleHRE
ZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGkK
ICAgICByZXR1cm4gc3Ryb2tlU3R5bGU7CiB9CiAKLWJvb2wgVGV4dERlY29yYXRpb25QYWludGVy
OjpTdHlsZXM6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVzJiBvdGhlcikgY29uc3QKLXsKLSAgICBy
ZXR1cm4gdW5kZXJsaW5lQ29sb3IgPT0gb3RoZXIudW5kZXJsaW5lQ29sb3IgJiYgb3ZlcmxpbmVD
b2xvciA9PSBvdGhlci5vdmVybGluZUNvbG9yICYmIGxpbmV0aHJvdWdoQ29sb3IgPT0gb3RoZXIu
bGluZXRocm91Z2hDb2xvcgotICAgICAgICAmJiB1bmRlcmxpbmVTdHlsZSA9PSBvdGhlci51bmRl
cmxpbmVTdHlsZSAmJiBvdmVybGluZVN0eWxlID09IG90aGVyLm92ZXJsaW5lU3R5bGUgJiYgbGlu
ZXRocm91Z2hTdHlsZSA9PSBvdGhlci5saW5ldGhyb3VnaFN0eWxlOwotfQotCiBUZXh0RGVjb3Jh
dGlvblBhaW50ZXI6OlRleHREZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IGRlY29yYXRpb25zLCBjb25zdCBSZW5k
ZXJUZXh0JiByZW5kZXJlciwgYm9vbCBpc0ZpcnN0TGluZSwgY29uc3QgRm9udENhc2NhZGUmIGZv
bnQsIHN0ZDo6b3B0aW9uYWw8U3R5bGVzPiBzdHlsZXMpCiAgICAgOiBtX2NvbnRleHQgeyBjb250
ZXh0IH0KICAgICAsIG1fZGVjb3JhdGlvbnMgeyBkZWNvcmF0aW9ucyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKaW5kZXggNjM4YWM5NjM1
ZDBmNjllMjQxZDQzNWJhODJmNDU5Yjc1ZjY3YmM3Ni4uMDQwYzliZDY4ZjY2OTNiODZiNTFmYzc2
OTc0OWU0ZDUwZWQ4ODNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHREZWNvcmF0aW9uUGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuaApAQCAtNTcsOCArNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
YWludExpbmVUaHJvdWdoKGNvbnN0IENvbG9yJiwgZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBGbG9h
dFBvaW50JiBsb2NhbE9yaWdpbik7CiAKICAgICBzdHJ1Y3QgU3R5bGVzIHsKLSAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlcyYpIGNvbnN0OwotICAgICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgU3R5bGVzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlcyYpIGNvbnN0ID0gZGVmYXVs
dDsKIAogICAgICAgICBDb2xvciB1bmRlcmxpbmVDb2xvcjsKICAgICAgICAgQ29sb3Igb3Zlcmxp
bmVDb2xvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRT
dHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCmlu
ZGV4IDNjMDgzYjE5MTZjZGQyZDA3YjhmYjY4YmQyMmUwNDg3ZDc1ZmNmYWYuLjlmZDk2NGFjZTk5
NTQwZDk5N2E4M2U4OGYwMjQyNWY3ZjFjNjg0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHRQYWludFN0eWxlLmNwcApAQCAtNDYsMTYgKzQ2LDYgQEAgVGV4dFBhaW50U3R5bGU6
OlRleHRQYWludFN0eWxlKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKIH0KIAotYm9vbCBUZXh0UGFp
bnRTdHlsZTo6b3BlcmF0b3I9PShjb25zdCBUZXh0UGFpbnRTdHlsZSYgb3RoZXIpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIGZpbGxDb2xvciA9PSBvdGhlci5maWxsQ29sb3IgJiYgc3Ryb2tlQ29sb3Ig
PT0gb3RoZXIuc3Ryb2tlQ29sb3IgJiYgZW1waGFzaXNNYXJrQ29sb3IgPT0gb3RoZXIuZW1waGFz
aXNNYXJrQ29sb3IKLSAgICAgICAgJiYgc3Ryb2tlV2lkdGggPT0gb3RoZXIuc3Ryb2tlV2lkdGgg
JiYgcGFpbnRPcmRlciA9PSBvdGhlci5wYWludE9yZGVyICYmIGxpbmVKb2luID09IG90aGVyLmxp
bmVKb2luCi0jaWYgSEFWRShPU19EQVJLX01PREVfU1VQUE9SVCkKLSAgICAgICAgJiYgdXNlRGFy
a0FwcGVhcmFuY2UgPT0gb3RoZXIudXNlRGFya0FwcGVhcmFuY2UKLSNlbmRpZgotICAgICAgICAm
JiBsaW5lQ2FwID09IG90aGVyLmxpbmVDYXAgJiYgbWl0ZXJMaW1pdCA9PSBvdGhlci5taXRlckxp
bWl0OwotfQotCiBib29sIHRleHRDb2xvcklzTGVnaWJsZUFnYWluc3RCYWNrZ3JvdW5kQ29sb3Io
Y29uc3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcikKIHsK
ICAgICAvLyBVc2VzIHRoZSBXQ0FHIDIuMCBkZWZpbml0aW9uIG9mIGxlZ2liaWxpdHk6IGEgY29u
dHJhc3QgcmF0aW8gb2YgNC41OjEgb3IgZ3JlYXRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRQYWludFN0eWxlLmgKaW5kZXggNDU5YmFmMTEyZmMwMzI3MGFmZTQ2ZmZlODRlZDBkNWJh
NmIyNmUzOS4uYjgwOTc4MDdhYTViMWQyZmExNGUzMWM1Y2I1NTY5MDIwNTE4MzI3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmgKQEAgLTMzLDE3ICszMywxNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwotY2xhc3MgUmVuZGVyVGV4dDsKIGNsYXNzIFJlbmRlclN0eWxlOworY2xhc3MgUmVuZGVy
VGV4dDsKIGNsYXNzIFNoYWRvd0RhdGE7CisKIHN0cnVjdCBQYWludEluZm87CiAKIHN0cnVjdCBU
ZXh0UGFpbnRTdHlsZSB7Ci0gICAgVGV4dFBhaW50U3R5bGUoKSB7IH0KKyAgICBUZXh0UGFpbnRT
dHlsZSgpID0gZGVmYXVsdDsKICAgICBUZXh0UGFpbnRTdHlsZShjb25zdCBDb2xvciYpOwogCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRQYWludFN0eWxlJikgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFRleHRQYWludFN0eWxlJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dFBhaW50
U3R5bGUmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBDb2xvciBmaWxsQ29sb3I7CiAgICAgQ29s
b3Igc3Ryb2tlQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlSW50ZXJ2YWwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVJbnRlcnZhbC5oCmluZGV4IDZjYzRkYWI0OWY1YzIxMDI5MDAyNWFmOTFiMTViZjQwYWZjY2Vj
YzguLmIyM2MyOTI1MWE0NWE5MTBkM2RlMDQ5YWViNGJmZjVkNTBkMDAyNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5oCkBAIC05MCw4ICs5
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHNldChzdGQ6Om1pbjxUPih4MSgpLCBpbnRlcnZh
bC54MSgpKSwgc3RkOjptYXg8VD4oeDIoKSwgaW50ZXJ2YWwueDIoKSkpOwogICAgIH0KIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFwZUludGVydmFsPFQ+JiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4geDEoKSA9PSBvdGhlci54MSgpICYmIHgyKCkgPT0gb3RoZXIueDIoKTsgfQotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTaGFwZUludGVydmFsPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1
cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBl
SW50ZXJ2YWwmKSBjb25zdCA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgVCBtX3gxOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggMDg2
YTZmNmE2M2EyNWU1MDIzYWU5NWJmYTg0ZjRmYTdkNGZmYzI2Mi4uOThlMTNmM2U2Y2ZjYWU4ZDI0
OGM1YTRmMDJmZDBhODUxZDQ3NmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuY3BwCkBAIC02MywxMSArNjMsNyBAQCB2b2lkIEJhc2ljU2hhcGVD
ZW50ZXJDb29yZGluYXRlOjp1cGRhdGVDb21wdXRlZExlbmd0aCgpCiB9CiAKIHN0cnVjdCBTVkdQ
YXRoVHJhbnNmb3JtZWRCeXRlU3RyZWFtIHsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZH
UGF0aFRyYW5zZm9ybWVkQnl0ZVN0cmVhbSYgb3RoZXIpIGNvbnN0IAotICAgIHsgCi0gICAgICAg
IHJldHVybiBvdGhlci5vZmZzZXQgPT0gb2Zmc2V0ICYmIG90aGVyLnpvb20gPT0gem9vbSAmJiBv
dGhlci5yYXdTdHJlYW0gPT0gcmF3U3RyZWFtOwotICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU1ZHUGF0aFRyYW5zZm9ybWVkQnl0ZVN0cmVhbSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR1BhdGhU
cmFuc2Zvcm1lZEJ5dGVTdHJlYW0mKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gcmF3U3RyZWFtLmlzRW1wdHkoKTsgfQogCiAgICAgUGF0aCBwYXRo
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgK
aW5kZXggOWJmMDM3MzQ3NmI1M2U1YzdhNGE5YmM2MjM5ZTQ1ZWM0YWQ1MzRlNC4uN2UyZmVlNTk5
ZjRhOWIwNTgyZGVjYmE5OWMyMTk5ZjFlMGFiOWQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgKQEAgLTEwMiwxMiArMTAyLDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUoVG9wTGVmdCwgV2ViQ29y
ZTo6YmxlbmQoZnJvbS5tX2NvbXB1dGVkTGVuZ3RoLCBtX2NvbXB1dGVkTGVuZ3RoLCBjb250ZXh0
KSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlQ2Vu
dGVyQ29vcmRpbmF0ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9kaXJl
Y3Rpb24gPT0gb3RoZXIubV9kaXJlY3Rpb24KLSAgICAgICAgICAgICYmIG1fbGVuZ3RoID09IG90
aGVyLm1fbGVuZ3RoCi0gICAgICAgICAgICAmJiBtX2NvbXB1dGVkTGVuZ3RoID09IG90aGVyLm1f
Y29tcHV0ZWRMZW5ndGg7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYXNpY1No
YXBlQ2VudGVyQ29vcmRpbmF0ZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICB2
b2lkIHVwZGF0ZUNvbXB1dGVkTGVuZ3RoKCk7CkBAIC0xNTMsMTAgKzE0OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVSYWRpdXMoV2ViQ29yZTo6YmxlbmQoZnJvbS52YWx1
ZSgpLCB2YWx1ZSgpLCBjb250ZXh0KSk7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBCYXNpY1NoYXBlUmFkaXVzJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWUgJiYgbV90eXBlID09IG90aGVyLm1fdHlwZTsK
LSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJhc2ljU2hhcGVSYWRpdXMmKSBjb25z
dCA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgTGVuZ3RoIG1fdmFsdWUgeyBMZW5ndGhUeXBl
OjpVbmRlZmluZWQgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Cb3JkZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0
YS5oCmluZGV4IGU0Mzk4M2UyMmJhM2UyYzIxNDFiMTZjMDgxNGJkYWJjODM5YzgyYTQuLmIzYTQz
MTZlYzBkMjI0YzdjMjRmZGEwYTczZjk2NjhiY2RiYzVlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaApAQCAtOTksMTYgKzk5LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gRmxvYXRCb3hFeHRlbnQoYm9yZGVyVG9wV2lkdGgoKSwgYm9yZGVyUmln
aHRXaWR0aCgpLCBib3JkZXJCb3R0b21XaWR0aCgpLCBib3JkZXJMZWZ0V2lkdGgoKSk7CiAgICAg
fQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJvcmRlckRhdGEmIG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9sZWZ0ID09IG8ubV9sZWZ0ICYmIG1fcmlnaHQgPT0gby5tX3Jp
Z2h0ICYmIG1fdG9wID09IG8ubV90b3AgJiYgbV9ib3R0b20gPT0gby5tX2JvdHRvbSAmJiBtX2lt
YWdlID09IG8ubV9pbWFnZQotICAgICAgICAgICAgJiYgbV90b3BMZWZ0UmFkaXVzID09IG8ubV90
b3BMZWZ0UmFkaXVzICYmIG1fdG9wUmlnaHRSYWRpdXMgPT0gby5tX3RvcFJpZ2h0UmFkaXVzICYm
IG1fYm90dG9tTGVmdFJhZGl1cyA9PSBvLm1fYm90dG9tTGVmdFJhZGl1cyAmJiBtX2JvdHRvbVJp
Z2h0UmFkaXVzID09IG8ubV9ib3R0b21SaWdodFJhZGl1czsKLSAgICB9Ci0KLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQm9yZGVyRGF0YSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biAhKCp0aGlzID09IG8pOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQm9yZGVy
RGF0YSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBsZWZ0KCkg
Y29uc3QgeyByZXR1cm4gbV9sZWZ0OyB9CiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIHJpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9yaWdodDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQm9yZGVyVmFsdWUuaAppbmRleCBkY2VmZjRhNjJlNDA0YWI5Y2Q3OGMyYTA3Mzg4NDYwYjQ2
MGQ5NTg2Li5kNzYyZWUwZDRhNDU4MmQ4OTQ3ZDI3OGE0ODgzM2VjMTYyODhmYzdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaApAQCAtNTMsMTUgKzUz
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbm9uWmVybygpICYmICFpc1RyYW5zcGFyZW50
KCkgJiYgc3R5bGUoKSAhPSBCb3JkZXJTdHlsZTo6SGlkZGVuOwogICAgIH0KIAotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBCb3JkZXJWYWx1ZSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX3N0eWxlID09IG8ubV9zdHlsZSAmJiBtX2Nv
bG9yID09IG8ubV9jb2xvcjsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQm9y
ZGVyVmFsdWUmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsK
LSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJvcmRlclZhbHVlJikgY29uc3QgPSBk
ZWZhdWx0OwogCiAgICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAppbmRleCAyYzEy
ZGQ5YjQwZGQ0MGIzYzBiZjY3NDkzMjJhZTJiMGZkMWUwNzBmLi41M2U1MjgyMWNhNjdlMTg0NmM2
M2RlMzIzODY5YmE0OTlmNDZkZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ29udGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQ29udGVudERhdGEuaApAQCAtMTA4LDExICsxMDgsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEltYWdlQ29udGVudERhdGEmIGEsIGNvbnN0IEltYWdlQ29udGVudERhdGEmIGIp
CiAgICAgcmV0dXJuICZhLmltYWdlKCkgPT0gJmIuaW1hZ2UoKTsKIH0KIAotaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBJbWFnZUNvbnRlbnREYXRhJiBhLCBjb25zdCBJbWFnZUNvbnRlbnRE
YXRhJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIGNsYXNzIFRleHRDb250ZW50
RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQg
VGV4dENvbnRlbnREYXRhKGNvbnN0IFN0cmluZyYgdGV4dCkKQEAgLTEzNiwxMSArMTMxLDYgQEAg
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0Q29udGVudERhdGEmIGEsIGNvbnN0IFRl
eHRDb250ZW50RGF0YSYgYikKICAgICByZXR1cm4gYS50ZXh0KCkgPT0gYi50ZXh0KCk7CiB9CiAK
LWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dENvbnRlbnREYXRhJiBhLCBjb25zdCBU
ZXh0Q29udGVudERhdGEmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogY2xhc3Mg
Q291bnRlckNvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBDb3VudGVyQ29udGVudERhdGEoc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJD
b250ZW50PiBjb3VudGVyKQpAQCAtMTcyLDExICsxNjIsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENvdW50ZXJDb250ZW50RGF0YSYgYSwgY29uc3QgQ291bnRlckNvbnRlbnREYXRh
JiBiKQogICAgIHJldHVybiBhLmNvdW50ZXIoKSA9PSBiLmNvdW50ZXIoKTsKIH0KIAotaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb3VudGVyQ29udGVudERhdGEmIGEsIGNvbnN0IENvdW50
ZXJDb250ZW50RGF0YSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBjbGFzcyBR
dW90ZUNvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBRdW90ZUNvbnRlbnREYXRhKFF1b3RlVHlwZSBxdW90ZSkKQEAgLTIwMCwxMSAr
MTg1LDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRdW90ZUNvbnRlbnREYXRhJiBh
LCBjb25zdCBRdW90ZUNvbnRlbnREYXRhJiBiKQogICAgIHJldHVybiBhLnF1b3RlKCkgPT0gYi5x
dW90ZSgpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFF1b3RlQ29udGVudERh
dGEmIGEsIGNvbnN0IFF1b3RlQ29udGVudERhdGEmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBi
KTsKLX0KLQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb250ZW50RGF0YSYgYSwgY29u
c3QgQ29udGVudERhdGEmIGIpCiB7CiAgICAgaWYgKGEudHlwZSgpICE9IGIudHlwZSgpKQpAQCAt
MjI1LDExICsyMDUsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbnRlbnREYXRh
JiBhLCBjb25zdCBDb250ZW50RGF0YSYgYikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29udGVudERhdGEmIGEsIGNvbnN0IENvbnRlbnREYXRh
JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NPTlRFTlRfREFUQShUb0NsYXNz
TmFtZSwgQ29udGVudERhdGFOYW1lKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Db3VudGVyQ29udGVudC5oCmluZGV4IDU4NmNjNjY5ODAyNjVkOTg2M2FjYWFhN2VlNmI4
YTk4NjQ4MzI2YzYuLmZjZjU0NWNlMzI2Mzk2NzY3OWFkNWViMTQ3NmI4ZjBlMjJjNmJjZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oCkBA
IC0yOSwzMiArMjksMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb3VudGVy
Q29udGVudCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ291
bnRlckNvbnRlbnQoY29uc3QgQXRvbVN0cmluZyYgaWRlbnRpZmllciwgTGlzdFN0eWxlVHlwZSBz
dHlsZSwgY29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9yKQotICAgICAgICA6IG1faWRlbnRpZmll
cihpZGVudGlmaWVyKQotICAgICAgICAsIG1fbGlzdFN0eWxlKHN0eWxlKQotICAgICAgICAsIG1f
c2VwYXJhdG9yKHNlcGFyYXRvcikKLSAgICB7Ci0gICAgICAgIEFTU0VSVChzdHlsZSAhPSBMaXN0
U3R5bGVUeXBlOjpTdHJpbmcpOwotICAgIH0KK3N0cnVjdCBDb3VudGVyQ29udGVudCB7CisgICAg
V1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgY29uc3QgQXRvbVN0cmluZyYg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIExpc3RTdHls
ZVR5cGUgbGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGU7IH0KLSAgICBjb25z
dCBBdG9tU3RyaW5nJiBzZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3NlcGFyYXRvcjsgfQor
ICAgIEF0b21TdHJpbmcgaWRlbnRpZmllcjsKKyAgICBMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZTsK
KyAgICBBdG9tU3RyaW5nIHNlcGFyYXRvcjsKIAotcHJpdmF0ZToKLSAgICBBdG9tU3RyaW5nIG1f
aWRlbnRpZmllcjsKLSAgICBMaXN0U3R5bGVUeXBlIG1fbGlzdFN0eWxlOwotICAgIEF0b21TdHJp
bmcgbV9zZXBhcmF0b3I7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXJDb250ZW50
JikgY29uc3QgPSBkZWZhdWx0OwogfTsKIAotc3RhdGljIGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ291bnRlckNvbnRlbnQmIGEsIGNvbnN0IENvdW50ZXJDb250ZW50JiBiKQotewotICAg
IHJldHVybiBhLmlkZW50aWZpZXIoKSA9PSBiLmlkZW50aWZpZXIoKQotICAgICAgICAmJiBhLmxp
c3RTdHlsZSgpID09IGIubGlzdFN0eWxlKCkKLSAgICAgICAgJiYgYS5zZXBhcmF0b3IoKSA9PSBi
LnNlcGFyYXRvcigpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5oCmluZGV4IDBlMzJi
ZjI0ODY5YmRiYThjZjBjODVhZWQ4MzhiMDJjYmVlOWEwNDkuLjVjOTNhYzU4ZmI1MDViZjEzYmYy
N2YxZDVlYzdjYjRiOWUzNDM4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5oCkBAIC0yOCwxOCArMjgsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBzdHJ1Y3QgQ291bnRlckRpcmVjdGl2ZXMgewogICAgIHN0ZDo6b3B0aW9uYWw8
aW50PiByZXNldFZhbHVlOwogICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBpbmNyZW1lbnRWYWx1ZTsK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ291bnRlckRpcmVjdGl2ZXMmKSBjb25zdCA9IGRl
ZmF1bHQ7CiB9OwogCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXJEaXJl
Y3RpdmVzJiBhLCBjb25zdCBDb3VudGVyRGlyZWN0aXZlcyYgYikKLXsKLSAgICByZXR1cm4gYS5p
bmNyZW1lbnRWYWx1ZSA9PSBiLmluY3JlbWVudFZhbHVlICYmIGEucmVzZXRWYWx1ZSA9PSBiLnJl
c2V0VmFsdWU7Ci19Ci0KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgQ291bnRlckRp
cmVjdGl2ZXMmIGEsIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVzJiBiKQotewotICAgIHJldHVybiAh
KGEgPT0gYik7Ci19Ci0KIHVzaW5nIENvdW50ZXJEaXJlY3RpdmVNYXAgPSBIYXNoTWFwPEF0b21T
dHJpbmcsIENvdW50ZXJEaXJlY3RpdmVzPjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1cnNvckRhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9DdXJzb3JEYXRhLmgKaW5kZXggNTZmY2NkMGU5
ODY3NWVmYjU5ZjRjMzk5Y2FmMTY5MGI1YjE5ZWRkYS4uOGRjOTkwYzU1ZWQ3NWE0MTFhYzc3YzNh
NmE5ODJkZDJjNWY2MzIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0N1cnNvckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ3Vy
c29yRGF0YS5oCkBAIC0zNywyMiArMzcsMTQgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3Vyc29yRGF0YSYgbykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2hvdFNwb3QgPT0gby5tX2hvdFNwb3QgJiYgbV9pbWFnZSA9PSBvLm1faW1h
Z2U7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEN1cnNvckRhdGEmIG8pIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEN1cnNvckRhdGEmKSBjb25zdCA9IGRlZmF1bHQ7CiAKLSAgICBT
dHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0gICAgCisg
ICAgU3R5bGVJbWFnZSogaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CiAg
ICAgdm9pZCBzZXRJbWFnZShSZWZQdHI8U3R5bGVJbWFnZT4mJiBpbWFnZSkgeyBtX2ltYWdlID0g
V1RGTW92ZShpbWFnZSk7IH0KIAogICAgIC8vIEhvdCBzcG90IGluIHRoZSBpbWFnZSBpbiBsb2dp
Y2FsIHBpeGVscy4KICAgICBjb25zdCBJbnRQb2ludCYgaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJu
IG1faG90U3BvdDsgfQotICAgIAorCiBwcml2YXRlOgogICAgIFJlZlB0cjxTdHlsZUltYWdlPiBt
X2ltYWdlOwogICAgIEludFBvaW50IG1faG90U3BvdDsgLy8gZm9yIENTUzMgc3VwcG9ydApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1cnNvckxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9DdXJzb3JMaXN0LmgKaW5kZXggMjk4MzBjNmM0
OTM2Y2M0ZWIxMTQwYjVkOTBjOGQ4OTU4MmUxOGVhMS4uZTFmNTMwMWM0MWVhMGNiZGQ4ZDBmN2Ji
MDgwZTVhZDNlNWY0OTk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0N1cnNvckxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ3Vy
c29yTGlzdC5oCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoKICAgICBDdXJzb3JEYXRhJiBhdChz
aXplX3QgaSkgeyByZXR1cm4gbV92ZWN0b3IuYXQoaSk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDdXJzb3JMaXN0JiBvKSBjb25zdCB7IHJldHVybiBtX3ZlY3RvciA9PSBvLm1fdmVj
dG9yOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEN1cnNvckxpc3QmIG8pIGNvbnN0IHsg
cmV0dXJuIG1fdmVjdG9yICE9IG8ubV92ZWN0b3I7IH0KIAogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgQ3Vy
c29yRGF0YSYgY3Vyc29yRGF0YSkgeyBtX3ZlY3Rvci5hcHBlbmQoY3Vyc29yRGF0YSk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAppbmRleCA5NWQzODYyN2Ux
NDEzZjUyNjFjMDljOWZkOWZiMWFhMjIwZDU0OGI0Li5lN2RlMzZkZDE4MWE2MDUzYWQyN2JhYjky
ZmIwOGZlOTgyYjUyZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvRmlsbExheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxM
YXllci5oCkBAIC0zNSwzMCArMzUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVu
ZGVyRWxlbWVudDsKIAogc3RydWN0IEZpbGxTaXplIHsKLSAgICBGaWxsU2l6ZSgpCi0gICAgICAg
IDogdHlwZShGaWxsU2l6ZVR5cGU6OlNpemUpCi0gICAgewotICAgIH0KLQotICAgIEZpbGxTaXpl
KEZpbGxTaXplVHlwZSB0eXBlLCBjb25zdCBMZW5ndGhTaXplJiBzaXplKQotICAgICAgICA6IHR5
cGUodHlwZSkKLSAgICAgICAgLCBzaXplKHNpemUpCi0gICAgewotICAgIH0KLQotICAgIEZpbGxT
aXplVHlwZSB0eXBlOworICAgIEZpbGxTaXplVHlwZSB0eXBlIHsgRmlsbFNpemVUeXBlOjpTaXpl
IH07CiAgICAgTGVuZ3RoU2l6ZSBzaXplOwotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGaWxsU2l6ZSYgYSwgY29uc3QgRmlsbFNpemUmIGIpCi17Ci0gICAgcmV0dXJuIGEudHlw
ZSA9PSBiLnR5cGUgJiYgYS5zaXplID09IGIuc2l6ZTsKLX0KIAotaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBGaWxsU2l6ZSYgYSwgY29uc3QgRmlsbFNpemUmIGIpCi17Ci0gICAgcmV0dXJu
ICEoYSA9PSBiKTsKLX0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsbFNpemUmKSBjb25z
dCA9IGRlZmF1bHQ7Cit9OwogCiBjbGFzcyBGaWxsTGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxG
aWxsTGF5ZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTg0LDcgKzY1LDcg
QEAgcHVibGljOgogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxCbGVuZE1vZGU+KG1fYmxlbmRNb2RlKTsgfQogICAgIGNvbnN0IExlbmd0aFNpemUm
IHNpemVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3NpemVMZW5ndGg7IH0KICAgICBGaWxsU2l6
ZVR5cGUgc2l6ZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGaWxsU2l6ZVR5cGU+
KG1fc2l6ZVR5cGUpOyB9Ci0gICAgRmlsbFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEZpbGxT
aXplKHN0YXRpY19jYXN0PEZpbGxTaXplVHlwZT4obV9zaXplVHlwZSksIG1fc2l6ZUxlbmd0aCk7
IH0KKyAgICBGaWxsU2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4geyBzaXplVHlwZSgpLCBtX3Np
emVMZW5ndGggfTsgfQogICAgIE1hc2tNb2RlIG1hc2tNb2RlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8TWFza01vZGU+KG1fbWFza01vZGUpOyB9CiAKICAgICBjb25zdCBGaWxsTGF5ZXIq
IG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KQEAgLTE0NCw3ICsxMjUsNiBA
QCBwdWJsaWM6CiAgICAgRmlsbExheWVyJiBvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJik7CiAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsbExheWVyJikgY29uc3Q7Ci0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEZpbGxMYXllciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOyB9CiAKICAgICBib29sIGNvbnRhaW5zSW1hZ2UoU3R5bGVJbWFnZSYpIGNvbnN0
OwogICAgIGJvb2wgaW1hZ2VzQXJlTG9hZGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9HcmlkQXJlYS5oCmluZGV4IGI3ZWJkMWQ5NjFkZTg4MjZmYjgzMDMzMDliOGU2
MzUyZjIwZjllYWIuLjcyN2Y5ZTJmZGVhOGMxYTA0NDkwNzI1YTk5ZGNhNDMxODdhMzAxZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCkBAIC00Miw3ICs0Miw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIERlc3BpdGUgbGluZSBudW1iZXJzIGluIHRoZSBz
cGVjIHN0YXJ0IGluICIxIiwgdGhlIGluZGV4ZXMgaGVyZSBzdGFydCBpbiAiMCIuCiBjbGFzcyBH
cmlkU3BhbiB7CiBwdWJsaWM6Ci0KICAgICBzdGF0aWMgR3JpZFNwYW4gdW50cmFuc2xhdGVkRGVm
aW5pdGVHcmlkU3BhbihpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBHcmlkU3BhbihzdGFydExpbmUsIGVuZExpbmUsIFVudHJhbnNsYXRlZERlZmluaXRl
KTsKQEAgLTU4LDEwICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEdyaWRTcGFuKDAs
IDEsIEluZGVmaW5pdGUpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlk
U3BhbiYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3R5cGUgPT0gby5tX3R5cGUg
JiYgbV9zdGFydExpbmUgPT0gby5tX3N0YXJ0TGluZSAmJiBtX2VuZExpbmUgPT0gby5tX2VuZExp
bmU7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlkU3BhbiYpIGNvbnN0ID0g
ZGVmYXVsdDsKIAogICAgIHVuc2lnbmVkIGludGVnZXJTcGFuKCkgY29uc3QKICAgICB7CkBAIC0x
NDIsOCArMTM4LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLQotICAgIGVudW0gR3Jp
ZFNwYW5UeXBlIHtVbnRyYW5zbGF0ZWREZWZpbml0ZSwgVHJhbnNsYXRlZERlZmluaXRlLCBJbmRl
ZmluaXRlfTsKKyAgICBlbnVtIEdyaWRTcGFuVHlwZSA6IHVpbnQ4X3QgeyBVbnRyYW5zbGF0ZWRE
ZWZpbml0ZSwgVHJhbnNsYXRlZERlZmluaXRlLCBJbmRlZmluaXRlIH07CiAKICAgICBHcmlkU3Bh
bihpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSwgR3JpZFNwYW5UeXBlIHR5cGUpCiAgICAgICAg
IDogbV90eXBlKHR5cGUpCkBAIC0xNjMsNDEgKzE1OCwzMCBAQCBwcml2YXRlOgogICAgIGludCBt
X3N0YXJ0TGluZTsKICAgICBpbnQgbV9lbmRMaW5lOwogICAgIEdyaWRTcGFuVHlwZSBtX3R5cGU7
Ci0KLQogfTsKIAogLy8gVGhpcyByZXByZXNlbnRzIGEgZ3JpZCBhcmVhIHRoYXQgc3BhbnMgaW4g
Ym90aCByb3dzJyBhbmQgY29sdW1ucycgZGlyZWN0aW9uLgotY2xhc3MgR3JpZEFyZWEgewotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIC8vIEhhc2hNYXAgcmVxdWly
ZXMgYSBkZWZhdWx0IGNvbnN0dWN0b3IuCi0gICAgR3JpZEFyZWEoKQotICAgICAgICA6IGNvbHVt
bnMoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQotICAgICAgICAsIHJvd3MoR3JpZFNw
YW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQotICAgIHsKLSAgICB9CitzdHJ1Y3QgR3JpZEFyZWEg
eworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIEdyaWRBcmVhKGNv
bnN0IEdyaWRTcGFuJiByLCBjb25zdCBHcmlkU3BhbiYgYykKLSAgICAgICAgOiBjb2x1bW5zKGMp
Ci0gICAgICAgICwgcm93cyhyKQorICAgIEdyaWRBcmVhKCkKKyAgICAgICAgOiByb3dzKEdyaWRT
cGFuOjppbmRlZmluaXRlR3JpZFNwYW4oKSkKKyAgICAgICAgLCBjb2x1bW5zKEdyaWRTcGFuOjpp
bmRlZmluaXRlR3JpZFNwYW4oKSkKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEdyaWRBcmVhJiBvKSBjb25zdAorICAgIEdyaWRBcmVhKEdyaWRTcGFuIHJvd3MsIEdy
aWRTcGFuIGNvbHVtbnMpCisgICAgICAgIDogcm93cyhyb3dzKQorICAgICAgICAsIGNvbHVtbnMo
Y29sdW1ucykKICAgICB7Ci0gICAgICAgIHJldHVybiBjb2x1bW5zID09IG8uY29sdW1ucyAmJiBy
b3dzID09IG8ucm93czsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR3JpZEFy
ZWEmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdyaWRBcmVhJikgY29uc3QgPSBkZWZhdWx0Owog
Ci0gICAgR3JpZFNwYW4gY29sdW1uczsKICAgICBHcmlkU3BhbiByb3dzOworICAgIEdyaWRTcGFu
IGNvbHVtbnM7CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBHcmlkQXJlYT4gTmFtZWRH
cmlkQXJlYU1hcDsKK3VzaW5nIE5hbWVkR3JpZEFyZWFNYXAgPSBIYXNoTWFwPFN0cmluZywgR3Jp
ZEFyZWE+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRMZW5ndGguaAppbmRleCA4NmFjZDMzMGRmNjlmODNiMGQyZmQzMjI3ZWJi
ODBlOWVmZTdlODdhLi5jOWNkNjY3ODFmYTUyNDk5Yzg4OWYzZDU2ZDMzNDg0ZTA4YzE0NGMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmgKQEAgLTQyLDcg
KzQyLDYgQEAgY2xhc3MgR3JpZExlbmd0aCB7CiBwdWJsaWM6CiAgICAgR3JpZExlbmd0aChjb25z
dCBMZW5ndGgmIGxlbmd0aCkKICAgICAgICAgOiBtX2xlbmd0aChsZW5ndGgpCi0gICAgICAgICwg
bV9mbGV4KDApCiAgICAgICAgICwgbV90eXBlKExlbmd0aFR5cGUpCiAgICAgewogICAgICAgICBB
U1NFUlQoIWxlbmd0aC5pc1VuZGVmaW5lZCgpKTsKQEAgLTYzLDIzICs2MiwxNiBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzUGVyY2VudGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBMZW5n
dGhUeXBlICYmIG1fbGVuZ3RoLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpOyB9CiAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgR3JpZExlbmd0aCYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3R5cGUgPT0gby5tX3R5cGUgJiYgbV9mbGV4ID09IG8ubV9mbGV4ICYmIG1fbGVuZ3Ro
ID09IG8ubV9sZW5ndGg7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlkTGVu
Z3RoJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBpc0NvbnRlbnRTaXplZCgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZSA9PSBMZW5ndGhUeXBlICYmIChtX2xlbmd0aC5pc0F1dG8oKSB8fCBt
X2xlbmd0aC5pc01pbkNvbnRlbnQoKSB8fCBtX2xlbmd0aC5pc01heENvbnRlbnQoKSk7IH0KICAg
ICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBMZW5ndGhUeXBlICYmIG1f
bGVuZ3RoLmlzQXV0bygpOyB9CiAKIHByaXZhdGU6Ci0gICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBw
dXQgdGhlIDIgZm9sbG93aW5nIGZpZWxkcyBpbiBhIHVuaW9uLCBidXQgTGVuZ3RoIGhhcyBhIGNv
bnN0cnVjdG9yLAotICAgIC8vIGEgZGVzdHJ1Y3RvciBhbmQgYSBjb3B5IGFzc2lnbm1lbnQgd2hp
Y2ggaXNuJ3QgYWxsb3dlZC4KKyAgICAvLyBDb3VsZCB1c2UgYSBWYXJpYW50IGhlcmUuCiAgICAg
TGVuZ3RoIG1fbGVuZ3RoOwotICAgIGRvdWJsZSBtX2ZsZXg7Ci0gICAgZW51bSBHcmlkTGVuZ3Ro
VHlwZSB7Ci0gICAgICAgIExlbmd0aFR5cGUsCi0gICAgICAgIEZsZXhUeXBlCi0gICAgfTsKKyAg
ICBkb3VibGUgbV9mbGV4IHsgMCB9OworICAgIGVudW0gR3JpZExlbmd0aFR5cGUgOiBib29sIHsg
TGVuZ3RoVHlwZSwgRmxleFR5cGUgfTsKICAgICBHcmlkTGVuZ3RoVHlwZSBtX3R5cGU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uY3BwCmlu
ZGV4IGU2Y2M5NjE3YjkwMWI0MmEwZWEzNDMyNTdiZjFmOGQxNTFkZWViYWEuLjVmNGNlMjgyOTZi
YmQwZDA3ZjA3NTMzNDE4MzZjNTdhNTI2ZWQ1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uY3BwCkBAIC05NSwxMSArOTUsNiBAQCBpbnQgR3Jp
ZFBvc2l0aW9uOjptaW4oKQogICAgIHJldHVybiAtbWF4KCk7CiB9CiAKLWJvb2wgR3JpZFBvc2l0
aW9uOjpvcGVyYXRvcj09KGNvbnN0IEdyaWRQb3NpdGlvbiYgb3RoZXIpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUgJiYgbV9pbnRlZ2VyUG9zaXRpb24gPT0gb3Ro
ZXIubV9pbnRlZ2VyUG9zaXRpb24gJiYgbV9uYW1lZEdyaWRMaW5lID09IG90aGVyLm1fbmFtZWRH
cmlkTGluZTsKLX0KLQogdm9pZCBHcmlkUG9zaXRpb246OnNldE1heFBvc2l0aW9uRm9yVGVzdGlu
Zyh1bnNpZ25lZCBtYXhQb3NpdGlvbikKIHsKICAgICBnTWF4UG9zaXRpb25Gb3JUZXN0aW5nID0g
c3RhdGljX2Nhc3Q8aW50PihtYXhQb3NpdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvR3JpZFBvc2l0aW9uLmgKaW5kZXggMjUyN2Y3YzczZjdlNDMwNjk1Njc4NmI1ZTUx
OGI2NGRlYTRiYWJiNS4uNDZiNTY5OTJiNTk2ZTc1NzE5NTM1MDllYTE1ZGRmYTAzMGIxMGRkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uaApAQCAt
NzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIG5hbWVkR3JpZExpbmUoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgc3BhblBvc2l0aW9uKCkgY29uc3Q7CiAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgR3JpZFBvc2l0aW9uJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEdyaWRQb3NpdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGJv
b2wgc2hvdWxkQmVSZXNvbHZlZEFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gaXNBdXRvKCkgfHwgaXNTcGFuKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0tleWZyYW1lTGlzdC5oCmluZGV4IDFmMzA4NzgwZmVmNjk5NjVhYWE1NDE4ZTk1ZWZh
ZjkxZTliYzEwOTguLmU1ZjkzNTQ3NmQxNjhmZTc4M2YxMDZkM2JjYjZhZTBlZWVjNzRlMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmgKQEAgLTgx
LDggKzgxLDcgQEAgcHVibGljOgogICAgIH5LZXlmcmFtZUxpc3QoKTsKICAgICAgICAgCiAgICAg
S2V5ZnJhbWVMaXN0JiBvcGVyYXRvcj0oS2V5ZnJhbWVMaXN0JiYpID0gZGVmYXVsdDsKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgS2V5ZnJhbWVMaXN0JiBvKSBjb25zdDsKLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgS2V5ZnJhbWVMaXN0JiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IG8pOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleWZyYW1lTGlzdCYpIGNvbnN0Owog
CiAgICAgY29uc3QgQXRvbVN0cmluZyYgYW5pbWF0aW9uTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YW5pbWF0aW9uTmFtZTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0xpbmVDbGFtcFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvTGluZUNsYW1wVmFsdWUuaAppbmRleCAyNWRiNGUzMjVlYTMyYWUyMjQ1ZjlhYzdmNDYyNGJh
MGU0NWJjOTY2Li40ZTQzNGMyODcyMWE3YzkyOGNmMWJhNDg0NTAwODU4NDZlNTNiMGI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTGluZUNsYW1wVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTGluZUNsYW1wVmFsdWUuaApAQCAt
MzAsMzcgKzMwLDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIGNsYXNzIExpbmVDbGFt
cFZhbHVlIHsKIHB1YmxpYzoKLSAgICBMaW5lQ2xhbXBWYWx1ZSgpCi0gICAgICAgIDogbV90eXBl
KExpbmVDbGFtcDo6TGluZUNvdW50KQotICAgICAgICAsIG1fdmFsdWUoLTEpCi0gICAgewotICAg
IH0KLSAgICAKKyAgICBMaW5lQ2xhbXBWYWx1ZSgpID0gZGVmYXVsdDsKKwogICAgIExpbmVDbGFt
cFZhbHVlKGludCB2YWx1ZSwgTGluZUNsYW1wIHR5cGUpCiAgICAgICAgIDogbV90eXBlKHR5cGUp
CiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAgaW50
IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQotICAgIAogICAgIGJvb2wgaXNQZXJj
ZW50YWdlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IExpbmVDbGFtcDo6UGVyY2VudGFnZTsg
fQotCiAgICAgYm9vbCBpc05vbmUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IC0xOyB9CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGluZUNsYW1wVmFsdWUmIG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gdmFsdWUoKSA9PSBvLnZhbHVlKCkgJiYgaXNQZXJjZW50YWdlKCkg
PT0gby5pc1BlcmNlbnRhZ2UoKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IExpbmVDbGFtcFZhbHVlJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lQ2xhbXBWYWx1
ZSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAKIHByaXZhdGU6Ci0gICAgTGluZUNsYW1wIG1fdHlw
ZTsKLSAgICBpbnQgbV92YWx1ZTsKKyAgICBMaW5lQ2xhbXAgbV90eXBlIHsgTGluZUNsYW1wOjpM
aW5lQ291bnQgfTsKKyAgICBpbnQgbV92YWx1ZSB7IC0xIH07CiB9OwogICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L05pbmVQaWVjZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBp
ZWNlSW1hZ2UuaAppbmRleCBjMzlkZWMzMzQ0MTJkZDk1MDYwYTVhMTZmNDJmZjk0ODJiZTNiZDRl
Li5mMzg5Mzg2Yjg4ZWRjODllMzFkNDhlMTE4ZDZkZjk5YTk5NjIxZDMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaApAQCAtMTA2LDE2ICsx
MDYsMTIgQEAgaW5saW5lIHN0ZDo6b3B0aW9uYWw8Qm94U2lkZT4gaW1hZ2VQaWVjZVZlcnRpY2Fs
U2lkZShJbWFnZVBpZWNlIHBpZWNlKQogCiBjbGFzcyBOaW5lUGllY2VJbWFnZSB7CiBwdWJsaWM6
Ci0gICAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICAgICAgTm9ybWFsLAotICAgICAgICBNYXNrCi0g
ICAgfTsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29sIHsgTm9ybWFsLCBNYXNrIH07CiAKICAg
ICBOaW5lUGllY2VJbWFnZShUeXBlID0gVHlwZTo6Tm9ybWFsKTsKICAgICBOaW5lUGllY2VJbWFn
ZShSZWZQdHI8U3R5bGVJbWFnZT4mJiwgTGVuZ3RoQm94IGltYWdlU2xpY2VzLCBib29sIGZpbGws
IExlbmd0aEJveCBib3JkZXJTbGljZXMsIExlbmd0aEJveCBvdXRzZXQsIE5pbmVQaWVjZUltYWdl
UnVsZSBob3Jpem9udGFsUnVsZSwgTmluZVBpZWNlSW1hZ2VSdWxlIHZlcnRpY2FsUnVsZSk7CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTmluZVBpZWNlSW1hZ2UmIG90aGVyKSBjb25zdCB7
IHJldHVybiBtX2RhdGEgPT0gb3RoZXIubV9kYXRhOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IE5pbmVQaWVjZUltYWdlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9kYXRhICE9IG90aGVy
Lm1fZGF0YTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOaW5lUGllY2VJbWFnZSYpIGNv
bnN0ID0gZGVmYXVsdDsKIAogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEtPmltYWdlOyB9CiAgICAgU3R5bGVJbWFnZSogaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEtPmltYWdlLmdldCgpOyB9CkBAIC0xOTIsNyArMTg4LDYgQEAgcHJpdmF0ZToKICAgICAgICAg
UmVmPERhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RGF0YSYpIGNvbnN0OwotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRGF0YSYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICAgICAgYm9vbCBmaWxs
IHsgZmFsc2UgfTsKICAgICAgICAgTmluZVBpZWNlSW1hZ2VSdWxlIGhvcml6b250YWxSdWxlIHsg
TmluZVBpZWNlSW1hZ2VSdWxlOjpTdHJldGNoIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvT2Zmc2V0Um90YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL09mZnNldFJvdGF0aW9uLmNwcAppbmRleCBmZTgzZjgyOTgyMjNlYjg4ODE4
ZTYxYzY3Yjg2ZTE0NTY3NGI1ODk4Li5lYTA1YmRhMTZhYjNjNmQ3NWYyOTAyMjhmOTc4NWI0MzQ3
ZDUyNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT2Zmc2V0
Um90YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PZmZzZXRS
b3RhdGlvbi5jcHAKQEAgLTM0LDExICszNCw2IEBAIE9mZnNldFJvdGF0aW9uOjpPZmZzZXRSb3Rh
dGlvbihib29sIGhhc0F1dG8sIGZsb2F0IGFuZ2xlKQogewogfQogCi1ib29sIE9mZnNldFJvdGF0
aW9uOjpvcGVyYXRvcj09KGNvbnN0IE9mZnNldFJvdGF0aW9uJiBvKSBjb25zdAotewotICAgIHJl
dHVybiBtX2hhc0F1dG8gPT0gby5tX2hhc0F1dG8gJiYgbV9hbmdsZSA9PSBvLm1fYW5nbGU7Ci19
Ci0KIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mIHRzLCBjb25z
dCBPZmZzZXRSb3RhdGlvbiYgcm90YXRpb24pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJoYXNB
dXRvIiwgcm90YXRpb24uaGFzQXV0bygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9PZmZzZXRSb3RhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL09mZnNldFJvdGF0aW9uLmgKaW5kZXggMzQxMjdmZWFmY2YzY2NhODZmNWE4NjlmMzI3
MGE1OTA4NGViNWI4Yi4uOGQxM2UwNzI5MWYyNzM5NTE0ZDYwYmYwYWI1ZDEwODJlY2ZhNWE0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL09mZnNldFJvdGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL09mZnNldFJvdGF0aW9uLmgK
QEAgLTM2LDggKzM2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQXV0bygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQXV0bzsgfQogICAgIGZsb2F0IGFuZ2xlKCkgY29uc3QgeyByZXR1cm4gbV9hbmds
ZTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9mZnNldFJvdGF0aW9uJikgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9mZnNldFJvdGF0aW9uJiBvKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG8pOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9mZnNldFJv
dGF0aW9uJikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIGJvb2wgbV9oYXNBdXRv
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL091dGxpbmVWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL091dGxpbmVWYWx1ZS5oCmluZGV4
IDIwMjkzMmM3YzkyYjdlMWYwM2RhYTAzNzNkODQ2OGJkNTMxZDFlZDMuLjY0MDMwZjNkMDk5ZTky
MDg1ZWNiNDU4ZjIzMmUzN2QzYWNkZTgzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvT3V0bGluZVZhbHVlLmgKQEAgLTI5LDE3ICsyOSw5IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIE91dGxpbmVWYWx1ZSA6IHB1YmxpYyBCb3JkZXJWYWx1ZSB7Ci1mcmll
bmQgY2xhc3MgUmVuZGVyU3R5bGU7CisgICAgZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOwogcHVi
bGljOgotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPdXRsaW5lVmFsdWUmIG8pIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV93aWR0aCA9PSBvLm1fd2lkdGggJiYgbV9zdHlsZSA9PSBv
Lm1fc3R5bGUgJiYgbV9jb2xvciA9PSBvLm1fY29sb3IgJiYgbV9vZmZzZXQgPT0gby5tX29mZnNl
dCAmJiBtX2lzQXV0byA9PSBvLm1faXNBdXRvOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgT3V0bGluZVZhbHVlJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPdXRsaW5l
VmFsdWUmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgCiAgICAgZmxvYXQgb2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICBPdXRsaW5lSXNBdXRvIGlzQXV0bygpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PE91dGxpbmVJc0F1dG8+KG1faXNBdXRvKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1F1b3Rlc0RhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9RdW90ZXNEYXRhLmgKaW5kZXggNWQzZWMxODkxMmUxZjZm
MjJiZTU2Njc0YjE2ZjliZTEyYjY3ZjdkNy4uNzU0ZjE3ZjZmNjBhOWQwNmNmYzIwNGJiMzVkZTM3
NmQ0MzIwZWQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1F1
b3Rlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUXVvdGVzRGF0
YS5oCkBAIC01NSw5ICs1NSw0IEBAIHByaXZhdGU6CiAjcHJhZ21hIHdhcm5pbmcocG9wKQogI2Vu
ZGlmCiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUXVvdGVzRGF0YSYgYSwgY29uc3Qg
UXVvdGVzRGF0YSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAppbmRleCA5YTdmNjdlZTg3YTA2YTFjYzAzOTQ1ODUxYzAyMzJjNTk4NzVjMTlmLi45
ZjYwZGY2NTdmYWEyMGQwYTI3OTE1YjlkM2I4ODcwOGExYWZkMDY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTE0OTcsNyArMTQ5Nyw3
IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5TW90aW9uUGF0aFRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zCiAgICAgLy8gU2hpZnQgZWxlbWVudCB0byB0aGUg
YW5jaG9yIHNwZWNpZmllZCBieSBvZmZzZXQtYW5jaG9yLgogICAgIGF1dG8gdHJhbnNmb3JtT3Jp
Z2luID0gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHRyYW5zZm9ybU9yaWdpblhZKCksIGJvdW5k
aW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOwogICAgIGF1dG8gYW5jaG9y
ID0gdHJhbnNmb3JtT3JpZ2luOwotICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueCgpLmlzQXV0bygp
KQorICAgIGlmICghb2Zmc2V0QW5jaG9yKCkueC5pc0F1dG8oKSkKICAgICAgICAgYW5jaG9yID0g
ZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KG9mZnNldEFuY2hvcigpLCBib3VuZGluZ0JveC5zaXpl
KCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1h
bmNob3IueCgpLCAtYW5jaG9yLnkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggYmU1NmQ5YWVlMzY2ZWEyNWU0MmNmZWRlZjA5ZWFhMWUz
MWFlZjkxZi4uOTY2ZTU1Yzk4MWJjZWI2YThiNDdjYWQzNDIyNzkwYTVlOGEyZTg5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEwOSw3ICsx
MDksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJvcmRlckRhdGE7CiBjbGFzcyBD
b250ZW50RGF0YTsKLWNsYXNzIENvdW50ZXJDb250ZW50OwogY2xhc3MgQ3Vyc29yTGlzdDsKIGNs
YXNzIEZvbnRDYXNjYWRlOwogY2xhc3MgRm9udE1ldHJpY3M7CkBAIC0xMjEsNiArMTIwLDcgQEAg
Y2xhc3MgU3R5bGVJbmhlcml0ZWREYXRhOwogY2xhc3MgU3R5bGVTY3JvbGxTbmFwQXJlYTsKIGNs
YXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCitzdHJ1Y3QgQ291bnRlckNvbnRlbnQ7CiBzdHJ1
Y3QgU2Nyb2xsU25hcEFsaWduOwogc3RydWN0IFNjcm9sbFNuYXBUeXBlOwogCkBAIC0xNjEsNyAr
MTYxLDYgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVu
ZGVyU3R5bGUmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVuZGVyU3R5bGUm
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgdm9pZCBp
bmhlcml0RnJvbShjb25zdCBSZW5kZXJTdHlsZSYgaW5oZXJpdFBhcmVudCk7CiAgICAgdm9pZCBj
b3B5Tm9uSW5oZXJpdGVkRnJvbShjb25zdCBSZW5kZXJTdHlsZSYpOwpAQCAtMTU3OCw3ICsxNTc3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBUZXh0Q29tYmluZSBpbml0aWFsVGV4dENvbWJpbmUo
KSB7IHJldHVybiBUZXh0Q29tYmluZTo6Tm9uZTsgfQogICAgIHN0YXRpYyBUZXh0T3JpZW50YXRp
b24gaW5pdGlhbFRleHRPcmllbnRhdGlvbigpIHsgcmV0dXJuIFRleHRPcmllbnRhdGlvbjo6TWl4
ZWQ7IH0KICAgICBzdGF0aWMgT2JqZWN0Rml0IGluaXRpYWxPYmplY3RGaXQoKSB7IHJldHVybiBP
YmplY3RGaXQ6OkZpbGw7IH0KLSAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9iamVjdFBv
c2l0aW9uKCkgeyByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQ
ZXJjZW50KSwgTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KSk7IH0KKyAgICBzdGF0
aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9iamVjdFBvc2l0aW9uKCkgeyByZXR1cm4geyBMZW5ndGgo
NTAuMGYsIExlbmd0aFR5cGU6OlBlcmNlbnQpLCBMZW5ndGgoNTAuMGYsIExlbmd0aFR5cGU6OlBl
cmNlbnQpIH07IH0KICAgICBzdGF0aWMgRW1wdHlDZWxsIGluaXRpYWxFbXB0eUNlbGxzKCkgeyBy
ZXR1cm4gRW1wdHlDZWxsOjpTaG93OyB9CiAgICAgc3RhdGljIExpc3RTdHlsZVBvc2l0aW9uIGlu
aXRpYWxMaXN0U3R5bGVQb3NpdGlvbigpIHsgcmV0dXJuIExpc3RTdHlsZVBvc2l0aW9uOjpPdXRz
aWRlOyB9CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGluaXRpYWxMaXN0U3R5bGVTdHJp
bmdWYWx1ZSgpIHsgcmV0dXJuIG51bGxBdG9tKCk7IH0KQEAgLTE4OTEsMTEgKzE4OTAsMTEgQEAg
cHVibGljOgogCiAgICAgTGVuZ3RoUG9pbnQgb2Zmc2V0UG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vZmZzZXRQb3NpdGlvbjsgfQogICAgIHZvaWQgc2V0
T2Zmc2V0UG9zaXRpb24oTGVuZ3RoUG9pbnQmJiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIG9mZnNldFBvc2l0aW9uLCBXVEZNb3ZlKHBvc2l0aW9uKSk7IH0KLSAg
ICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldFBvc2l0aW9uKCkgeyByZXR1cm4gTGVu
Z3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pLCBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0
bykpOyB9CisgICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRQb3NpdGlvbigpIHsg
cmV0dXJuIHsgeyBMZW5ndGhUeXBlOjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0byB9IH07IH0K
IAogICAgIExlbmd0aFBvaW50IG9mZnNldEFuY2hvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPm9mZnNldEFuY2hvcjsgfQogICAgIHZvaWQgc2V0T2Zmc2V0QW5jaG9y
KExlbmd0aFBvaW50JiYgcG9zaXRpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LCBvZmZzZXRBbmNob3IsIFdURk1vdmUocG9zaXRpb24pKTsgfQotICAgIHN0YXRpYyBMZW5ndGhQ
b2ludCBpbml0aWFsT2Zmc2V0QW5jaG9yKCkgeyByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3RoKExl
bmd0aFR5cGU6OkF1dG8pLCBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpOyB9CisgICAgc3RhdGlj
IExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRBbmNob3IoKSB7IHJldHVybiB7IHsgTGVuZ3RoVHlw
ZTo6QXV0byB9LCB7IExlbmd0aFR5cGU6OkF1dG8gfSB9OyB9CiAKICAgICBPZmZzZXRSb3RhdGlv
biBvZmZzZXRSb3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5v
ZmZzZXRSb3RhdGU7IH0KICAgICB2b2lkIHNldE9mZnNldFJvdGF0ZShPZmZzZXRSb3RhdGlvbiYm
IHJvdGF0aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb2Zmc2V0Um90YXRl
LCBXVEZNb3ZlKHJvdGF0aW9uKSk7IH0KQEAgLTE5MDQsNyArMTkwMyw2IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgc3RydWN0IE5vbkluaGVyaXRlZEZsYWdzIHsKICAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJikgY29uc3Q7Ci0gICAgICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICAgICAgdm9pZCBjb3B5Tm9uSW5oZXJpdGVkRnJvbShj
b25zdCBOb25Jbmhlcml0ZWRGbGFncyYpOwogCkBAIC0xOTQ3LDcgKzE5NDUsNiBAQCBwcml2YXRl
OgogCiAgICAgc3RydWN0IEluaGVyaXRlZEZsYWdzIHsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEluaGVyaXRlZEZsYWdzJikgY29uc3Q7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CiAKICAgICAgICAgdW5zaWduZWQgZW1wdHlDZWxscyA6IDE7IC8vIEVtcHR5Q2VsbAog
ICAgICAgICB1bnNpZ25lZCBjYXB0aW9uU2lkZSA6IDI7IC8vIENhcHRpb25TaWRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCmluZGV4IDdmMTli
MGY5ZjI5ZTE1Yzg2N2Q1NjM4MDg4YTRhMGQyZjJlOGRmMjEuLjk3ZDdmZWIyMjAwNjFhZDBhZmFl
MDc2ZWZkMzQ2MDM0N2ZjYmJiMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TVkdSZW5kZXJTdHlsZS5oCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICBTdHls
ZURpZmZlcmVuY2UgZGlmZihjb25zdCBTVkdSZW5kZXJTdHlsZSYpIGNvbnN0OwogCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNWR1JlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFNWR1JlbmRlclN0eWxlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KIAogICAgIC8vIEluaXRpYWwgdmFsdWVzIGZvciBhbGwgdGhlIHByb3Bl
cnRpZXMKICAgICBzdGF0aWMgQWxpZ25tZW50QmFzZWxpbmUgaW5pdGlhbEFsaWdubWVudEJhc2Vs
aW5lKCkgeyByZXR1cm4gQWxpZ25tZW50QmFzZWxpbmU6OkF1dG87IH0KQEAgLTE5Miw3ICsxOTEs
NiBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IEluaGVyaXRlZEZsYWdzIHsKICAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEluaGVyaXRlZEZsYWdzJikgY29uc3Q7Ci0gICAgICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBJbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICAgICAgdW5zaWduZWQgc2hhcGVSZW5kZXJpbmcgOiAy
OyAvLyBTaGFwZVJlbmRlcmluZwogICAgICAgICB1bnNpZ25lZCBjbGlwUnVsZSA6IDE7IC8vIFdp
bmRSdWxlCkBAIC0yMDcsNyArMjA1LDYgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgTm9uSW5oZXJp
dGVkRmxhZ3MgewogICAgICAgICAvLyAzMiBiaXQgbm9uLWluaGVyaXRlZCwgZG9uJ3QgYWRkIHRv
IHRoZSBzdHJ1Y3QsIG9yIHRoZSBvcGVyYXRvciB3aWxsIGJyZWFrLgogICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiBm
bGFncyA9PSBvdGhlci5mbGFnczsgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9u
SW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiBmbGFncyAhPSBvdGhlci5mbGFn
czsgfQogCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIHN0cnVjdCB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmgKaW5kZXgg
ZTEzNDE4YWFiZjhhODA1YjBiYmZlN2Y1NTNlNGNmMzg2MjUxMDkwZi4uYThiYWY0Mzk3OGEyY2Q4
YjVhMDdlYjBmYTJiZDdiOWJmZTM4MzA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaApAQCAtMTQ5LDEwICsxNDksNiBAQCBw
dWJsaWM6CiAgICAgUmVmPFN0eWxlRmlsbERhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTdHlsZUZpbGxEYXRhJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFN0eWxlRmlsbERhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KIAogICAgIGZsb2F0IG9wYWNpdHk7CiAgICAg
Q29sb3IgcGFpbnRDb2xvcjsKQEAgLTE3MywxMCArMTY5LDYgQEAgcHVibGljOgogICAgIFJlZjxT
dHlsZVN0cm9rZURhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTdHlsZVN0cm9rZURhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5
bGVTdHJva2VEYXRhJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKLSAgICB9CiAKICAgICBmbG9hdCBvcGFjaXR5OwogCkBAIC0yMDMsMTAgKzE5
NSw2IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVTdG9wRGF0YT4gY29weSgpIGNvbnN0OwogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlU3RvcERhdGEmKSBjb25zdDsKLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTdG9wRGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQogCiAgICAgZmxvYXQgb3BhY2l0
eTsKICAgICBDb2xvciBjb2xvcjsKQEAgLTIyMiwxMCArMjEwLDYgQEAgcHVibGljOgogICAgIFJl
ZjxTdHlsZVRleHREYXRhPiBjb3B5KCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0eWxlVGV4dERhdGEmIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU3R5bGVUZXh0RGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQogCiAgICAgU1ZHTGVuZ3RoVmFsdWUga2VybmluZzsK
IApAQCAtMjQxLDEwICsyMjUsNiBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlTWlzY0RhdGE+IGNv
cHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU1pc2NEYXRhJikg
Y29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTWlzY0RhdGEmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KIAog
ICAgIGZsb2F0IGZsb29kT3BhY2l0eTsKICAgICBDb2xvciBmbG9vZENvbG9yOwpAQCAtMjY0LDEw
ICsyNDQsNiBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlU2hhZG93U1ZHRGF0YT4gY29weSgpIGNv
bnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlU2hhZG93U1ZHRGF0YSYpIGNv
bnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVNoYWRvd1NWR0RhdGEmIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0K
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBzaGFkb3c7CiAKQEAgLTI4MywxMCAr
MjU5LDYgQEAgcHVibGljOgogICAgIFJlZjxTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YT4gY29w
eSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlSW5oZXJpdGVkUmVz
b3VyY2VEYXRhJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlSW5oZXJp
dGVkUmVzb3VyY2VEYXRhJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKLSAgICB9CiAKICAgICBTdHJpbmcgbWFya2VyU3RhcnQ7CiAgICAgU3Ry
aW5nIG1hcmtlck1pZDsKQEAgLTMwNCwxMCArMjc2LDYgQEAgcHVibGljOgogICAgIFJlZjxTdHls
ZUxheW91dERhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHlsZUxheW91dERhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVM
YXlvdXREYXRhJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKLSAgICB9CiAKICAgICBMZW5ndGggY3g7CiAgICAgTGVuZ3RoIGN5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCmluZGV4IDg3Y2EyYjI1
MmY5NmY4NWU0YjQ0MGI2ZmQyYzBmOGU5M2FkZTdhMGMuLmRlM2RjNmM0Y2RlMTI5N2VlYTBjZmNk
NmQ2MWQ2NDQxMjgxMGUyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TaGFkb3dEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U2hhZG93RGF0YTo6U2hhZG93RGF0YShjb25zdCBTaGFkb3dEYXRhJiBvKQotICAgIDogbV9sb2Nh
dGlvbihvLm1fbG9jYXRpb24ueCgpLCBvLm1fbG9jYXRpb24ueSgpKQorICAgIDogbV9sb2NhdGlv
bihvLm1fbG9jYXRpb24pCiAgICAgLCBtX3NwcmVhZChvLm1fc3ByZWFkKQogICAgICwgbV9yYWRp
dXMoby5tX3JhZGl1cykKICAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKaW5kZXggMjJmZWY3NjJiY2EzMTBiNjNhZWZl
ODU4NmY0MjJhYjlmODNjMDVmMi4uNDM0ZmI3NzA3NGIxNjFiYTk0ODIyZWUxZDRmMTAxZWRmMDQy
YTkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0Rh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oCkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBTaGFkb3dEYXRhKCkgPSBkZWZhdWx0OwogCiAg
ICAgU2hhZG93RGF0YShjb25zdCBMZW5ndGhQb2ludCYgbG9jYXRpb24sIExlbmd0aCByYWRpdXMs
IExlbmd0aCBzcHJlYWQsIFNoYWRvd1N0eWxlIHN0eWxlLCBib29sIGlzV2Via2l0Qm94U2hhZG93
LCBjb25zdCBDb2xvciYgY29sb3IpCi0gICAgICAgIDogbV9sb2NhdGlvbihsb2NhdGlvbi54KCks
IGxvY2F0aW9uLnkoKSkKKyAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0aW9uKQogICAgICAgICAs
IG1fc3ByZWFkKHNwcmVhZCkKICAgICAgICAgLCBtX3JhZGl1cyhyYWRpdXMpCiAgICAgICAgICwg
bV9jb2xvcihjb2xvcikKQEAgLTU2LDE0ICs1NiwxMCBAQCBwdWJsaWM6CiAKICAgICBTaGFkb3dE
YXRhJiBvcGVyYXRvcj0oU2hhZG93RGF0YSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2hhZG93RGF0YSYgbykgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFNoYWRvd0RhdGEmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYWRvd0RhdGEmKSBjb25z
dDsKICAgICAKLSAgICBjb25zdCBMZW5ndGgmIHgoKSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9u
LngoKTsgfQotICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24u
eSgpOyB9CisgICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi54
OyB9CisgICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi55OyB9
CiAgICAgY29uc3QgTGVuZ3RoUG9pbnQmIGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2Nh
dGlvbjsgfQogICAgIGNvbnN0IExlbmd0aCYgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9yYWRp
dXM7IH0KICAgICBMYXlvdXRVbml0IHBhaW50aW5nRXh0ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCmluZGV4IDVkZjE0Mjg5YmUxMDdjNGRh
NjdiMTUyMjE5YmNiNTVhYzcxNGFhM2YuLmRjZDY5M2RhMmVmOWE4YWQxZDAwMzNhMWNhZWZiZWZl
YWIxN2M4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFw
ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUu
aApAQCAtNjcsMTAgKzY3LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTaGFwZVZhbHVlJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNo
YXBlVmFsdWUmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwotICAgIH0KIAogcHJpdmF0ZToKICAgICBTaGFwZVZhbHVlKFJlZjxCYXNpY1NoYXBl
PiYmIHNoYXBlLCBDU1NCb3hUeXBlIGNzc0JveCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCmluZGV4IDdmM2JjY2Q5MjdiZTA5
ZGNhMGM5Yjk4MDU0YTU3NTI4ZWI4OTUxMTIuLjllMDljNWEyMDg1ZTViYmVkZjk5OWJhZWQwNTA1
YzllNTFlNzVjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUJhY2tncm91bmREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQmFja2dyb3VuZERhdGEuaApAQCAtMzksNyArMzksNiBAQCBwdWJsaWM6CiAgICAgUmVm
PFN0eWxlQmFja2dyb3VuZERhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQogCiAgICAgYm9vbCBpc0VxdWl2YWxlbnRGb3JQYWludGluZyhjb25zdCBT
dHlsZUJhY2tncm91bmREYXRhJiwgYm9vbCBjdXJyZW50Q29sb3JEaWZmZXJzKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94RGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94RGF0YS5oCmluZGV4IDFh
OWYwN2FjYTZhODAyZGJhNjFiN2VjOTNkYjYwNWFjNjZkYzM0MDMuLjk5ZGFlNzVhOWQzMDRlMmU5
YTNmZjczZjFjYWJjNmZhMTViZjI5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUJveERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVCb3hEYXRhLmgKQEAgLTM5LDEwICszOSw2IEBAIHB1YmxpYzoKICAgICBSZWY8
U3R5bGVCb3hEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3R5bGVCb3hEYXRhJiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVC
b3hEYXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0g
ICAgfQogCiAgICAgY29uc3QgTGVuZ3RoJiB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7
IH0KICAgICBjb25zdCBMZW5ndGgmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDb2xvclNj
aGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ29sb3JTY2hlbWUu
aAppbmRleCBlZDMwYThhZjcxNWQyZTgwMDI3OGNkZDI4NWY5YzczM2VhMmFhY2JhLi44ZDk1NjZm
YTBmZGU5ZTY5ZDA1YWUwMWU0NmFiZmYyMjBiZDk1YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDb2xvclNjaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNvbG9yU2NoZW1lLmgKQEAgLTQxLDEyICs0MSw3IEBA
IHB1YmxpYzoKICAgICAgICAgLCBtX2FsbG93c1RyYW5zZm9ybWF0aW9ucyhhbGxvd3NUcmFuc2Zv
cm1hdGlvbnMpCiAgICAgeyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVDb2xv
clNjaGVtZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9jb2xvclNjaGVt
ZSA9PSBvdGhlci5tX2NvbG9yU2NoZW1lICYmIG1fYWxsb3dzVHJhbnNmb3JtYXRpb25zID09IG90
aGVyLm1fYWxsb3dzVHJhbnNmb3JtYXRpb25zOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHlsZUNvbG9yU2NoZW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVDb2xvclNjaGVtZSYp
IGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGJvb2wgaXNBdXRvKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xvclNjaGVtZS5pc0VtcHR5KCkgJiYgbV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnM7IH0KICAgICBi
b29sIGlzT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTY2hlbWUuaXNFbXB0eSgpICYmICFt
X2FsbG93c1RyYW5zZm9ybWF0aW9uczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ29udGVudEFsaWdubWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhLmgKaW5kZXggZDY1ODAx
YWQ2YTk4MjcyOWQzYzE0NmE5NTU1YjRiNzg3NDA5NjI0Mi4uY2E5NjhlZWRjNmJlMzI4MTg3ZTA3
MTFiOWMyOTZiNWU2YTBhZTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ29udGVudEFsaWdubWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YS5oCkBAIC01MiwxNSArNTIs
NyBAQCBwdWJsaWM6CiAgICAgQ29udGVudERpc3RyaWJ1dGlvbiBkaXN0cmlidXRpb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb250ZW50RGlzdHJpYnV0aW9uPihtX2Rpc3RyaWJ1dGlv
bik7IH0KICAgICBPdmVyZmxvd0FsaWdubWVudCBvdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PE92ZXJmbG93QWxpZ25tZW50PihtX292ZXJmbG93KTsgfQogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0eWxlQ29udGVudEFsaWdubWVudERhdGEmIG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9wb3NpdGlvbiA9PSBvLm1fcG9zaXRpb24gJiYgbV9kaXN0cmli
dXRpb24gPT0gby5tX2Rpc3RyaWJ1dGlvbiAmJiBtX292ZXJmbG93ID09IG8ubV9vdmVyZmxvdzsK
LSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50
RGF0YSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAg
IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYp
IGNvbnN0ID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3Bvc2l0aW9uIDog
NDsgLy8gQ29udGVudFBvc2l0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCmluZGV4IGIxNWJjZjI1MTU4NWEz
MGFiMDM0ODk5ZjllZmE2Yjk4OWMyNjQwZTEuLjBkNmMxMGUyODZiNDhhZWViZGI5ZTZjMDFmMTgx
ZGVjNTRiNmViZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oCkBAIC00OCw4ICs0OCw2IEBAIHB1YmxpYzoK
IAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQogICAgIAogICAgIHZvaWQgc2V0Q3VzdG9tUHJvcGVydHlWYWx1ZShjb25z
dCBBdG9tU3RyaW5nJiBuYW1lLCBSZWY8Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZT4mJiB2YWx1ZSkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVE
ZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmgKaW5kZXggODZiN2JjYWY2YTNiZTJk
YTdhZDE4NTYxMDYwYTc3Y2I4YTYwOWUxZi4uNmNjNWNiMjFlNDZiNDA5MjM1YjZhNGI5NWNlMDUx
NGI5YjhhYjFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaApAQCAtMzUsMTAgKzM1
LDYgQEAgcHVibGljOgogICAgIFJlZjxTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE+IGNv
cHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZURlcHJlY2F0ZWRG
bGV4aWJsZUJveERhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVE
ZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CiAKICAgICBmbG9hdCBmbGV4OwogICAgIHVu
c2lnbmVkIGZsZXhHcm91cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUZpbHRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUZpbHRlckRhdGEuaAppbmRleCBhOGJhODMxZTJjMjU1ZDdlODJiZTgzZmE1NTkzMjhjMTJm
NGFmY2ViLi5mNWNjYTA3N2YwMDI3Y2QwYzBhN2UxODg1ZmY2MmJhMjYxMzVlNmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oCkBAIC0z
NywxMCArMzcsNiBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlRmlsdGVyRGF0YT4gY29weSgpIGNv
bnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYpIGNvbnN0
OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUZpbHRlckRhdGEmIG8pIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CiAKICAgICBGaWx0ZXJP
cGVyYXRpb25zIG9wZXJhdGlvbnM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmgKaW5kZXggZDQ1YWVkMTdlNTUxMmFkNGQ4
MWFiOGEzMGM5YjYyYWI5ZTU1N2FlNS4uMDIzNGMyNGQ5MzU1ODhkYjU5NDY0YzE5ZmIxMTFmNmFk
MzZlMmRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
RmxleGlibGVCb3hEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlRmxleGlibGVCb3hEYXRhLmgKQEAgLTM3LDEwICszNyw2IEBAIHB1YmxpYzoKICAgICBSZWY8
U3R5bGVGbGV4aWJsZUJveERhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTdHlsZUZsZXhpYmxlQm94RGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBTdHlsZUZsZXhpYmxlQm94RGF0YSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KIAogICAgIGZsb2F0IGZsZXhHcm93OwogICAgIGZs
b2F0IGZsZXhTaHJpbms7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVHcmlkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R3JpZERhdGEuaAppbmRleCA0M2RlMzg2MGQ1YTk2ZTJhM2VmNmQxZGY2ZTQwMWYyMGE5YTE1MWJk
Li5lNDcxYWI0NmE0ZTkyODJkN2EwZjQ5MWQ0MGRiYjk3Y2FiOGM1MGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKQEAgLTYwLDExICs2MCw2
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICYmIGF1dG9SZXBlYXRDb2x1bW5zVHlwZSA9PSBvLmF1
dG9SZXBlYXRDb2x1bW5zVHlwZSAmJiBhdXRvUmVwZWF0Um93c1R5cGUgPT0gby5hdXRvUmVwZWF0
Um93c1R5cGU7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlR3JpZERh
dGEmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9
Ci0KICAgICBWZWN0b3I8R3JpZFRyYWNrU2l6ZT4gZ3JpZENvbHVtbnM7CiAgICAgVmVjdG9yPEdy
aWRUcmFja1NpemU+IGdyaWRSb3dzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oCmluZGV4IDdhYjBkOWJkOGEwYzQwZGEwNTQyN2Yx
NjZlOTExMTI5M2U2ODAwNTEuLjZjODk2MDRjZjJhMjJjZmM4M2I3N2E5YTAxNjRlMzRjNjAwODQ1
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJ
dGVtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJ
dGVtRGF0YS5oCkBAIC00NywxMSArNDcsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAmJiBncmlk
Um93U3RhcnQgPT0gby5ncmlkUm93U3RhcnQgJiYgZ3JpZFJvd0VuZCA9PSBvLmdyaWRSb3dFbmQ7
CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlR3JpZEl0ZW1EYXRhJiBv
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQotCiAg
ICAgR3JpZFBvc2l0aW9uIGdyaWRDb2x1bW5TdGFydDsKICAgICBHcmlkUG9zaXRpb24gZ3JpZENv
bHVtbkVuZDsKICAgICBHcmlkUG9zaXRpb24gZ3JpZFJvd1N0YXJ0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCmluZGV4IDU2MmMy
MzYyNTU4YWZkNDE1M2Q1NzBlYTU1MTFlNDQ3M2U2NTYwZjEuLjQzNGMyYTZhNjdlMjljOWM2NWUw
ZDIzNWMxNjdhNjAwNzNlN2JmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKQEAgLTM4LDcgKzM4LDYgQEAgcHVibGljOgog
ICAgIFJlZjxTdHlsZUluaGVyaXRlZERhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KIAogICAgIGZsb2F0IGhvcml6b250YWxCb3JkZXJTcGFjaW5nOwog
ICAgIGZsb2F0IHZlcnRpY2FsQm9yZGVyU3BhY2luZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1ZWVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5oCmluZGV4IGIwNmI2NDUzNzJmZDk4OTBk
ZmViYzkwOTBlYWM2NTgzYjk4YTk5YWYuLmQzYWVjODU0YzM5Nzg1NzJiOGM0ODI5NjRjZDdkMjQ2
Y2ZkNDAwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZU1hcnF1ZWVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
TWFycXVlZURhdGEuaApAQCAtMzYsMTEgKzM2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8
U3R5bGVNYXJxdWVlRGF0YT4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZU1h
cnF1ZWVEYXRhKTsgfQogICAgIFJlZjxTdHlsZU1hcnF1ZWVEYXRhPiBjb3B5KCkgY29uc3Q7CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVNYXJxdWVlRGF0YSYgbykgY29uc3Q7Ci0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTWFycXVlZURhdGEmIG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFN0eWxlTWFycXVlZURhdGEmKSBjb25zdDsKIAogICAgIExlbmd0aCBpbmNyZW1l
bnQ7CiAgICAgaW50IHNwZWVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVNdWx0aUNvbERhdGEuaAppbmRleCBlY2Q0NGZkNzY1OWVmZTRhNTg5MWNhNzE2NDdk
NDk4YmI0MmYxNWM3Li4xNjkwZGZkNWNkNWEwNDQ2MzJjZTA1Y2MwYmQ4NzAzYzg1MDk3MDI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERh
dGEuaApAQCAtMzksNyArMzksNiBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlTXVsdGlDb2xEYXRh
PiBjb3B5KCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlTXVs
dGlDb2xEYXRhJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTXVsdGlD
b2xEYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAg
IHVuc2lnbmVkIHNob3J0IHJ1bGVXaWR0aCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKaW5k
ZXggNTY3MDhiZWZmZGQyOGIzNmY5OThmZjhkMjIwNzg3NDRhZmFhMzBkOS4uOTkzZTk2YzgxNGI1
YzJmMjgzZmQzYjY1ZDVjZWViOTY0YzRmZDM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC02NCwxMSAr
NjQsNyBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+IGNvcHkoKSBj
b25zdDsKICAgICB+U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpOwogCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhJiBvKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhJikgY29uc3Q7CiAKICAgICBib29sIGhhc0NvbG9y
RmlsdGVycygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCAxYjhhM2ZhNzkyYTNl
NzdlNDM5OWU2NWQ5NjAwM2JmNDc1Y2FiMjI2Li5mOTBhNzM0NGEyYjFmOTU2MjE3MDk2OTdkMDc3
ZTAxMjI3MGQxMzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTkwLDcgKzkwLDYgQEAgcHVi
bGljOgogICAgIH5TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCk7CiAgICAgCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmKSBjb25zdDsKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBMZW5ndGhQb2ludCBwZXJz
cGVjdGl2ZU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIHsgcGVyc3BlY3RpdmVPcmlnaW5YLCBwZXJz
cGVjdGl2ZU9yaWdpblkgfTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSZWZsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSZWZsZWN0aW9uLmgKaW5kZXggY2NiMzI0MTRjZDUzZGViN2NhZjExMmJkYzRjOGRk
YjMwNTE3Y2EzZS4uZGMwMmU2MzgxNTZmMGIyYWFkOGZiZmNkYWQ5NmM4OTRmZDRiZDZhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmVmbGVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJlZmxlY3Rpb24uaApA
QCAtNDIsNyArNDIsNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9kaXJlY3Rp
b24gPT0gby5tX2RpcmVjdGlvbiAmJiBtX29mZnNldCA9PSBvLm1fb2Zmc2V0ICYmIG1fbWFzayA9
PSBvLm1fbWFzazsKICAgICB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlUmVmbGVj
dGlvbiYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCiAgICAgUmVmbGVjdGlv
bkRpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQogICAg
IGNvbnN0IExlbmd0aCYgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2lu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2lu
dHMuaAppbmRleCBhMmM3YjBkYjNkNmU1ZmVkNjUzNmE1NjM5YjQ1NzkyZTQ3ODAxMTc5Li45NjY2
NGU5MTk2MWE5NzkzMDEwNzRhMjJhZTBjNDE0NTMwNDE5Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50cy5oCkBAIC0y
NSwzNiArMjUsMjAgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJMZW5ndGhCb3guaCIK
LSNpbmNsdWRlICJMZW5ndGhTaXplLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMu
aCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2Nyb2xsU25hcFR5cGUgewogICAgIFNj
cm9sbFNuYXBBeGlzIGF4aXMgeyBTY3JvbGxTbmFwQXhpczo6Qm90aCB9OwogICAgIFNjcm9sbFNu
YXBTdHJpY3RuZXNzIHN0cmljdG5lc3MgeyBTY3JvbGxTbmFwU3RyaWN0bmVzczo6Tm9uZSB9Owor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JvbGxTbmFwVHlwZSYpIGNvbnN0ID0gZGVmYXVs
dDsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2Nyb2xsU25hcFR5cGUmIGEs
IGNvbnN0IFNjcm9sbFNuYXBUeXBlJiBiKQotewotICAgIHJldHVybiBhLmF4aXMgPT0gYi5heGlz
ICYmIGEuc3RyaWN0bmVzcyA9PSBiLnN0cmljdG5lc3M7Ci19Ci0KLWlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgU2Nyb2xsU25hcFR5cGUmIGEsIGNvbnN0IFNjcm9sbFNuYXBUeXBlJiBiKSB7
IHJldHVybiAhKGEgPT0gYik7IH0KLQogc3RydWN0IFNjcm9sbFNuYXBBbGlnbiB7CiAgICAgU2Ny
b2xsU25hcEF4aXNBbGlnblR5cGUgYmxvY2tBbGlnbiB7IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBl
OjpOb25lIH07CiAgICAgU2Nyb2xsU25hcEF4aXNBbGlnblR5cGUgaW5saW5lQWxpZ24geyBTY3Jv
bGxTbmFwQXhpc0FsaWduVHlwZTo6Tm9uZSB9OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
Y3JvbGxTbmFwQWxpZ24mKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYgYSwgY29uc3QgU2Nyb2xsU25hcEFsaWduJiBi
KQotewotICAgIHJldHVybiBhLmJsb2NrQWxpZ24gPT0gYi5ibG9ja0FsaWduICYmIGEuaW5saW5l
QWxpZ24gPT0gYi5pbmxpbmVBbGlnbjsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTY3JvbGxTbmFwQWxpZ24mIGEsIGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYgYikgeyByZXR1cm4g
IShhID09IGIpOyB9Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNlbGZBbGlnbm1lbnREYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTZWxmQWxpZ25tZW50RGF0YS5oCmluZGV4
IDA5ZjIxZDg4NTQ4NTBmNGUwZTQ3YWY2MjFiZDQwZDExNDgxM2IyY2MuLjcwMDk4N2I1YWZkMWVj
NTljZThkZGQzNDc4ZGMwZDBiMjBhYWZlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVNlbGZBbGlnbm1lbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2VsZkFsaWdubWVudERhdGEuaApAQCAtNTcsMTEgKzU3
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9wb3NpdGlvbiA9PSBvLm1fcG9zaXRpb24g
JiYgbV9wb3NpdGlvblR5cGUgPT0gby5tX3Bvc2l0aW9uVHlwZSAmJiBtX292ZXJmbG93ID09IG8u
bV9vdmVyZmxvdzsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTZWxm
QWxpZ25tZW50RGF0YSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09
IG8pOwotICAgIH0KLQogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3Bvc2l0aW9uIDogNDsgLy8g
SXRlbVBvc2l0aW9uCiAgICAgdW5zaWduZWQgbV9wb3NpdGlvblR5cGU6IDE7IC8vIFdoZXRoZXIg
b3Igbm90IGFsaWdubWVudCB1c2VzIHRoZSAnbGVnYWN5JyBrZXl3b3JkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuaAppbmRleCA5ODQ2
YjMwZDgzOGE3Y2YxY2Y0ZmRiMDliZDlmNDc0YTdiMjRkZTEyLi45ZmY1MzJhZDRiNDc5NjMwODQz
MDU2MmM3MDI3ZTAzMjNkNTE3NDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuaApAQCAtMzgsMTEgKzM4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8U3R5bGVTdXJyb3VuZERhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVTdXJyb3VuZERhdGEpOyB9CiAgICAgUmVmPFN0eWxlU3Vycm91bmREYXRh
PiBjb3B5KCkgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlU3Vy
cm91bmREYXRhJiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTdXJy
b3VuZERhdGEmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsK
LSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlU3Vycm91bmREYXRhJikgY29u
c3Q7CiAKICAgICBMZW5ndGhCb3ggb2Zmc2V0OwogICAgIExlbmd0aEJveCBtYXJnaW47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmgK
aW5kZXggYzM0MTVjOTk0ZTkzN2U5ZDU1YjUzYzAzMzk1YmY5Yzc0NTk0NTkyYS4uYjZlYTczZWMx
Yjc2ODZhMzY2MDM4NTg2NjVlNmFkNDY4MTY4ZWRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuaApAQCAtNDAsMTAgKzQwLDYg
QEAgcHVibGljOgogICAgIFJlZjxTdHlsZVRyYW5zZm9ybURhdGE+IGNvcHkoKSBjb25zdDsKIAog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRhJiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CiAgICAgCiAg
ICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBvcGVyYXRpb25zLnNpemUoKTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1
YWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRh
LmgKaW5kZXggZDQxOGFjYjUwYTI0ZjhhM2IyMThkZGUxOGMzM2UxYWE4OGE4Y2IzYi4uMGU0ODE1
ZTA3NGJhOGQ4M2Y2YmUwNTQyMTc3Y2Q3NmU2NGU1NzFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaApAQCAtNDQsNyArNDQsNiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAmJiB0ZXh0RGVjb3JhdGlvbiA9PSBvdGhlci50ZXh0RGVjb3Jh
dGlvbgogICAgICAgICAgICAgJiYgem9vbSA9PSBvdGhlci56b29tOwogICAgIH0KLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgU3R5bGVWaXN1YWxEYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIExlbmd0aEJveCBjbGlwOwogICAgIGJvb2wgaGFz
Q2xpcCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4
dERlY29yYXRpb25UaGlja25lc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9U
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oCmluZGV4IGJiMGJkZWQ5MmM1MmYzZDgxOWRlOTY2MWNj
NWMyMDBiYTJmYzM1YWQuLmFiMTkwNWM2NDg0YTQ2YzRmNTY4OTFkMGZhN2I4ZjQzNmY3NTViYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlv
blRoaWNrbmVzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0RGVj
b3JhdGlvblRoaWNrbmVzcy5oCkBAIC0xMDEsMTEgKzEwMSw2IEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0RGVjb3JhdGlvblRoaWNr
bmVzcyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7Ci0gICAgfQotCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3Qgewog
ICAgICAgICBBdXRvLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1RleHRTaXplQWRqdXN0bWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Rl
eHRTaXplQWRqdXN0bWVudC5oCmluZGV4IGRjNmZiYTgzNTg5OGQ2YzFlZjYxZDJlNWFmZjg4Mzk1
MDdiNjMxMjUuLjMwYmJiNTBmMzZjYmU5MmRhNTVmODU0ODZiMjE1MDg2YzQ0MDhkNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6ZUFkanVzdG1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFNpemVBZGp1c3RtZW50
LmgKQEAgLTQyLDggKzQyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNOb25lKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZSA9PSBOb1RleHRTaXplQWRqdXN0bWVudDsgfQogICAgIGJvb2wgaXNQZXJj
ZW50YWdlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA+PSAwOyB9CiAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgVGV4dFNpemVBZGp1c3RtZW50JiBhbkFkanVzdG1lbnQpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWUgPT0gYW5BZGp1c3RtZW50Lm1fdmFsdWU7IH0KLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgVGV4dFNpemVBZGp1c3RtZW50JiBhbkFkanVzdG1lbnQpIGNvbnN0IHsgcmV0dXJu
IG1fdmFsdWUgIT0gYW5BZGp1c3RtZW50Lm1fdmFsdWU7IH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVGV4dFNpemVBZGp1c3RtZW50JikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRlOgog
ICAgIGZsb2F0IG1fdmFsdWU7CkBAIC02NSw4ICs2NCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
Y29udGFpbnMoRmllbGRzKSBjb25zdDsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdXRv
c2l6ZVN0YXR1cyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGZpZWxkcygpID09IG90aGVyLmZpZWxk
cygpOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1dG9zaXplU3RhdHVzJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQXV0b3NpemVTdGF0dXMmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgZmxv
YXQgaWRlbXBvdGVudFRleHRTaXplKGZsb2F0IHNwZWNpZmllZFNpemUsIGZsb2F0IHBhZ2VTY2Fs
ZSk7CiAgICAgc3RhdGljIEF1dG9zaXplU3RhdHVzIGNvbXB1dGVTdGF0dXMoY29uc3QgUmVuZGVy
U3R5bGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0
VW5kZXJsaW5lT2Zmc2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFVu
ZGVybGluZU9mZnNldC5oCmluZGV4IDk2MWU3YjJkOTMxMmQyYTE5OTBkOGVhYjU2NjkwMzBkYzkz
MjVhM2IuLjBlNDAyZWNlZDkzYWM5MmQwZjE0YmRkYjY4ZmQ1YTkwNmJkYTY1NmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRVbmRlcmxpbmVPZmZzZXQu
aApAQCAtNzEsMTUgKzcxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9sZW5ndGgudmFs
dWVfb3IoZGVmYXVsdFZhbHVlKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VGV4dFVuZGVybGluZU9mZnNldCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9sZW5ndGggPT0gb3RoZXIubV9sZW5ndGg7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFRleHRVbmRlcmxpbmVPZmZzZXQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVGV4dFVuZGVybGluZU9mZnNldCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAg
ICBlbnVtIGNsYXNzIFR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1dpbGxDaGFuZ2VEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
V2lsbENoYW5nZURhdGEuaAppbmRleCBkOWYwZGQzYWQ5NzVlMGUzM2RmZjYzMzc3YTBmYjk4NTM5
NjNhZjViLi43NGZlOTY3YmExMjEwNGMwYTZjYzE5YzFhNzI3Yzg1ODIwMTAyYmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURhdGEuaApAQCAtNDAs
MTAgKzQwLDYgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgV2lsbENoYW5nZURhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgV2ls
bENoYW5nZURhdGEmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
KTsKLSAgICB9CiAKICAgICBib29sIGlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0YWJs
ZUZlYXR1cmVzLmlzRW1wdHkoKTsgfQogICAgIHNpemVfdCBudW1GZWF0dXJlcygpIGNvbnN0IHsg
cmV0dXJuIG1fYW5pbWF0YWJsZUZlYXR1cmVzLnNpemUoKTsgfQpAQCAtMTE2LDEwICsxMTIsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQW5pbWF0YWJsZUZlYXR1cmUmIG90aGVyKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9mZWF0dXJlID09IG90aGVyLm1fZmVhdHVyZSAm
JiBtX2Nzc1Byb3BlcnR5SUQgPT0gb3RoZXIubV9jc3NQcm9wZXJ0eUlEOwotICAgICAgICB9Cisg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbmltYXRhYmxlRmVhdHVyZSYpIGNvbnN0ID0g
ZGVmYXVsdDsKICAgICB9OwogCiAgICAgVmVjdG9yPEFuaW1hdGFibGVGZWF0dXJlLCAxPiBtX2Fu
aW1hdGFibGVGZWF0dXJlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dE1ldHJpY3MuaAppbmRleCA4MDk2MjlkMGY2NDNjZDZiZTliZmUyNGJjYzc3ZGQzOTUwNTYzNjk3
Li5mM2RlMmY3ZjBhNjU4NzVlZTY4YmRmODlkN2VhOGIyNjE2N2M5YjFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5oCkBAIC00NywxOSArNDcsOSBA
QCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7
IH0KIAogICAgIHN0cnVjdCBHbHlwaCB7Ci0gICAgICAgIEdseXBoKCkKLSAgICAgICAgICAgIDog
aXNWYWxpZChmYWxzZSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEdseXBoJiBvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGlzVmFsaWQgPT0gb3RoZXIuaXNWYWxpZAotICAgICAgICAgICAgICAgICYmIG5hbWUgPT0gb3Ro
ZXIubmFtZQotICAgICAgICAgICAgICAgICYmIHVuaWNvZGVTdHJpbmcgPT0gb3RoZXIudW5pY29k
ZVN0cmluZzsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaXNWYWxpZDsKKyAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEdseXBoJikgY29uc3QgPSBkZWZhdWx0OworCisgICAgICAgIGJv
b2wgaXNWYWxpZCB7IGZhbHNlIH07CiAgICAgICAgIFN0cmluZyBuYW1lOwogICAgICAgICBTdHJp
bmcgdW5pY29kZVN0cmluZzsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvTWF0Y2hSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL01hdGNoUmVzdWx0LmgKaW5k
ZXggOWU5YTM1ZGZmZjRmN2JjNzBhYWEyMzM2NDk0YWI5NzgwYmU2ZmYyOC4uMDFmNjE2ODdkMWI4
ZjNjODQ0Y2E0NDk4NWUwZDEzOGIwMGI5ODc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvTWF0Y2hSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9NYXRjaFJlc3Vs
dC5oCkBAIC00Miw2ICs0Miw4IEBAIHN0cnVjdCBNYXRjaGVkUHJvcGVydGllcyB7CiAgICAgU2Nv
cGVPcmRpbmFsIHN0eWxlU2NvcGVPcmRpbmFsIHsgU2NvcGVPcmRpbmFsOjpFbGVtZW50IH07CiAg
ICAgRnJvbVN0eWxlQXR0cmlidXRlIGZyb21TdHlsZUF0dHJpYnV0ZSB7IEZyb21TdHlsZUF0dHJp
YnV0ZTo6Tm8gfTsKICAgICBDYXNjYWRlTGF5ZXJQcmlvcml0eSBjYXNjYWRlTGF5ZXJQcmlvcml0
eSB7IFJ1bGVTZXQ6OmNhc2NhZGVMYXllclByaW9yaXR5Rm9yVW5sYXllcmVkIH07CisKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmKSBjb25zdCA9IGRlZmF1bHQ7
CiB9OwogCiBzdHJ1Y3QgTWF0Y2hSZXN1bHQgewpAQCAtNTEsMzUgKzUzLDkgQEAgc3RydWN0IE1h
dGNoUmVzdWx0IHsKICAgICBWZWN0b3I8TWF0Y2hlZFByb3BlcnRpZXM+IGF1dGhvckRlY2xhcmF0
aW9uczsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHVzZXJBZ2VudERlY2xh
cmF0aW9ucy5pc0VtcHR5KCkgJiYgdXNlckRlY2xhcmF0aW9ucy5pc0VtcHR5KCkgJiYgYXV0aG9y
RGVjbGFyYXRpb25zLmlzRW1wdHkoKTsgfQotfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBNYXRjaFJlc3VsdCYgYSwgY29uc3QgTWF0Y2hSZXN1bHQmIGIpCi17Ci0gICAgcmV0dXJu
IGEuaXNDYWNoZWFibGUgPT0gYi5pc0NhY2hlYWJsZQotICAgICAgICAmJiBhLnVzZXJBZ2VudERl
Y2xhcmF0aW9ucyA9PSBiLnVzZXJBZ2VudERlY2xhcmF0aW9ucwotICAgICAgICAmJiBhLnVzZXJE
ZWNsYXJhdGlvbnMgPT0gYi51c2VyRGVjbGFyYXRpb25zCi0gICAgICAgICYmIGEuYXV0aG9yRGVj
bGFyYXRpb25zID09IGIuYXV0aG9yRGVjbGFyYXRpb25zOwotfQotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IE1hdGNoUmVzdWx0JiBhLCBjb25zdCBNYXRjaFJlc3VsdCYgYikKLXsKLSAg
ICByZXR1cm4gIShhID09IGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1h
dGNoZWRQcm9wZXJ0aWVzJiBhLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYgYikKLXsKLSAgICBy
ZXR1cm4gYS5wcm9wZXJ0aWVzID09IGIucHJvcGVydGllcwotICAgICAgICAmJiBhLmxpbmtNYXRj
aFR5cGUgPT0gYi5saW5rTWF0Y2hUeXBlCi0gICAgICAgICYmIGEuYWxsb3dsaXN0VHlwZSA9PSBi
LmFsbG93bGlzdFR5cGUKLSAgICAgICAgJiYgYS5zdHlsZVNjb3BlT3JkaW5hbCA9PSBiLnN0eWxl
U2NvcGVPcmRpbmFsCi0gICAgICAgICYmIGEuZnJvbVN0eWxlQXR0cmlidXRlID09IGIuZnJvbVN0
eWxlQXR0cmlidXRlCi0gICAgICAgICYmIGEuY2FzY2FkZUxheWVyUHJpb3JpdHkgPT0gYi5jYXNj
YWRlTGF5ZXJQcmlvcml0eTsKLX0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXRj
aGVkUHJvcGVydGllcyYgYSwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIGIpCi17Ci0gICAgcmV0
dXJuICEoYSA9PSBiKTsKLX0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWF0Y2hSZXN1bHQm
KSBjb25zdCA9IGRlZmF1bHQ7Cit9OwogCiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIs
IGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiBtYXRjaGVkUHJvcGVydGllcykKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggNzI2OGI0ZDgyMTIw
MmMzN2VlYzIxMzQyYTE2ZDg5ZDNhMDdlOGQ2Ni4uODMyNDlmOGIxYjhlNjE0YzlhMWExYjQzNmUx
NzEwODliOTRmODNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWls
ZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29u
dmVydGVyLmgKQEAgLTI2OCw4ICsyNjgsOCBAQCBpbmxpbmUgVGFiU2l6ZSBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0VGFiU2l6ZShjb25zdCBCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZQogewog
ICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJu
IFRhYlNpemUocHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpLCBTcGFjZVZhbHVlVHlwZSk7Ci0g
ICAgcmV0dXJuIFRhYlNpemUocHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oYnVp
bGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSksIExlbmd0aFZhbHVlVHlwZSk7
CisgICAgICAgIHJldHVybiB7IHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoKSwgVGFiU2l6ZTo6
U3BhY2VzIH07CisgICAgcmV0dXJuIHsgcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9h
dD4oYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSksIFRhYlNpemU6Okxl
bmd0aCB9OwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNDE3LDcgKzQxNyw3IEBAIGlu
bGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb24oQnVpbGRl
clN0YXRlJiBidWlsZGVyU3RhdGUsCiAgICAgTGVuZ3RoIGxlbmd0aFggPSBjb252ZXJ0UG9zaXRp
b25Db21wb25lbnQ8Q1NTVmFsdWVMZWZ0LCBDU1NWYWx1ZVJpZ2h0PihidWlsZGVyU3RhdGUsICpw
YWlyLT5maXJzdCgpKTsKICAgICBMZW5ndGggbGVuZ3RoWSA9IGNvbnZlcnRQb3NpdGlvbkNvbXBv
bmVudDxDU1NWYWx1ZVRvcCwgQ1NTVmFsdWVCb3R0b20+KGJ1aWxkZXJTdGF0ZSwgKnBhaXItPnNl
Y29uZCgpKTsKIAotICAgIHJldHVybiBMZW5ndGhQb2ludChsZW5ndGhYLCBsZW5ndGhZKTsKKyAg
ICByZXR1cm4geyBsZW5ndGhYLCBsZW5ndGhZIH07CiB9CiAKIGlubGluZSBMZW5ndGhQb2ludCBC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25PckF1dG8oQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTQyNyw3ICs0MjcsNyBAQCBpbmxp
bmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uT3JBdXRvKEJ1
aWxkZXJTdGF0ZSYgYnVpbGRlcgogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1BhaXIoKSkKICAg
ICAgICAgcmV0dXJuIGNvbnZlcnRQb3NpdGlvbihidWlsZGVyU3RhdGUsIHZhbHVlKTsKIAotICAg
IHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5n
dGhUeXBlOjpBdXRvKSk7CisgICAgcmV0dXJuIHsgeyBMZW5ndGhUeXBlOjpBdXRvIH0sIHsgTGVu
Z3RoVHlwZTo6QXV0byB9IH07CiB9CiAKIGlubGluZSBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25M
aW5lPiBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERlY29yYXRpb24oQnVpbGRlclN0YXRl
JiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXJDdXN0b20uaAppbmRleCBlMDE5MThkMDA0MjBlNzNmNmVhZjU3NDIyMjU2OWY0ZmU3NmQzZTZm
Li4yYzAyYjMwNTMyNjg5OTIyZGJhMWMxMmNhMTg4Zjc1MzU0MTIxYzc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtOTU2LDcgKzk1Niw3IEBAIGlubGlu
ZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoQnVpbGRlclN0
YXRlJiBidWlsZGVyU3RhdGUsCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbG9yID0gYnVp
bGRlclN0YXRlLnN0eWxlKCkuY29sb3IoKTsKIAotICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBt
YWtlVW5pcXVlPFNoYWRvd0RhdGE+KExlbmd0aFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNo
YWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3Iu
aXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgICAgIGF1
dG8gc2hhZG93RGF0YSA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oTGVuZ3RoUG9pbnQgeyB4LCB5
IH0sIGJsdXIsIHNwcmVhZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Vi
a2l0Qm94U2hhZG93LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVu
dEJsYWNrKTsKICAgICAgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdykK
ICAgICAgICAgICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldFRleHRTaGFkb3coV1RGTW92ZShz
aGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0byB0aGUgbGlzdCBpZiB0aGlzIGlz
IG5vdCB0aGUgZmlyc3QgZW50cnkKICAgICAgICAgZWxzZQpAQCAtMTU4NSw3ICsxNTg1LDcgQEAg
aW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoQnVpbGRlclN0YXRl
JiBidWlsZGVyU3RhdGUsIENTU1ZhbHUKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxl
SWRlbnQgPSBjb3VudGVyVmFsdWUtPmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAo
bGlzdFN0eWxlSWRlbnQgIT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIGxpc3RTdHls
ZVR5cGUgPSBzdGF0aWNfY2FzdDxMaXN0U3R5bGVUeXBlPihsaXN0U3R5bGVJZGVudCAtIENTU1Zh
bHVlRGlzYyk7Ci0gICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5pcXVlPENvdW50ZXJD
b250ZW50Pihjb3VudGVyVmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRl
clZhbHVlLT5zZXBhcmF0b3IoKSk7CisgICAgICAgICAgICBhdXRvIGNvdW50ZXIgPSBtYWtlVW5p
cXVlPENvdW50ZXJDb250ZW50PihDb3VudGVyQ29udGVudCB7IGNvdW50ZXJWYWx1ZS0+aWRlbnRp
ZmllcigpLCBsaXN0U3R5bGVUeXBlLCBjb3VudGVyVmFsdWUtPnNlcGFyYXRvcigpIH0pOwogICAg
ICAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Q29udGVudChXVEZNb3ZlKGNvdW50ZXIp
LCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKaW5kZXggMGRmNGJiNjI3YmU3MjRkODJkNzY4YTRhMDBk
ZTMyNjg4NTlmZWViYy4uNDRmZTY3N2QwYTgyM2E1ZjkyMDM0ODBlMTE1ZjgwMzEwMzg2NzFjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKQEAgLTYwLDEyICs2MCw3IEBAIHN0cnVjdCBTdHls
ZWFibGUgewogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlYWJsZSYgb3RoZXIpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gKCZlbGVtZW50ID09ICZvdGhlci5lbGVtZW50ICYm
IHBzZXVkb0lkID09IG90aGVyLnBzZXVkb0lkKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgU3R5bGVhYmxlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKKyAgICAgICAgcmV0dXJuICZlbGVtZW50ID09ICZvdGhlci5lbGVt
ZW50ICYmIHBzZXVkb0lkID09IG90aGVyLnBzZXVkb0lkOwogICAgIH0KIAogICAgIFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGVuZ3RoVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5oCmlu
ZGV4IDQ0OGI5NGZjNjU4ODQ0MTQ0ZWU4YzM0OGUxNmVlNmY0Y2ExY2E4YzMuLjhhZjZkOTJjYmJj
MjZkOWJmMGZlODQzMTk1YjM1NWExOTQ2YmIzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhW
YWx1ZS5oCkBAIC05MSwyMiArOTEsMTQgQEAgcHVibGljOgogCiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gY29udmVydFRvU3BlY2lmaWVkVW5pdHMoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYsIFNWR0xl
bmd0aFR5cGUpOwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR0xlbmd0aFZhbHVlJikg
Y29uc3QgPSBkZWZhdWx0OworCiBwcml2YXRlOgogICAgIGZsb2F0IG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzIHsgMCB9OwogICAgIFNWR0xlbmd0aFR5cGUgbV9sZW5ndGhUeXBlIHsgU1ZHTGVuZ3Ro
VHlwZTo6TnVtYmVyIH07CiAgICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGUgeyBTVkdMZW5n
dGhNb2RlOjpPdGhlciB9OwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgYSwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGIpCi17Ci0gICAgcmV0dXJuIGEu
dmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPT0gYi52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSAmJiBh
Lmxlbmd0aFR5cGUoKSA9PSBiLmxlbmd0aFR5cGUoKSAmJiBhLmxlbmd0aE1vZGUoKSA9PSBiLmxl
bmd0aE1vZGUoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTVkdMZW5ndGhW
YWx1ZSYgYSwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGIpCi17Ci0gICAgcmV0dXJuIGEudmFsdWVJ
blNwZWNpZmllZFVuaXRzKCkgIT0gYi52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSB8fCBhLmxlbmd0
aFR5cGUoKSAhPSBiLmxlbmd0aFR5cGUoKSB8fCBhLmxlbmd0aE1vZGUoKSAhPSBiLmxlbmd0aE1v
ZGUoKTsKLX0KLQogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKaW5kZXggOWFjOGM1NTE2ZTBiZWI1MDZkNTBk
ZDEwOTIwNjU2Yzk3NWUyMTNmZS4uY2M2ZmZiZTI4YzQwMmU4YTgzYzgxM2I0NzVlMWI5ZjE2YjE4
MWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmgKQEAgLTgxLDggKzgx
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9kYXRhID09IG90aGVyLm1fZGF0YTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTVkdQ
YXRoQnl0ZVN0cmVhbSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR1BhdGhCeXRlU3RyZWFtJikgY29uc3QgPSBk
ZWZhdWx0OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPiBjb3B5KCkg
Y29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NN
SUxUaW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lLmgKaW5kZXgg
ZmYwNjQ2Y2MzOTBiN2QzNjRkMzdmZmU3MjkyZDlhZjY4OTY0ZDVjZi4uYzZhMmQ1NWQ0OGEyODNk
YTFjMjdkOWI1YzdhNzQwMjdiZDVlNzgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TTUlMVGltZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24v
U01JTFRpbWUuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Zpbml0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdGltZSA8IGluZGVmaW5pdGVWYWx1ZTsgfQogICAgIGJvb2wgaXNJ
bmRlZmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lID09IGluZGVmaW5pdGVWYWx1ZTsgfQog
ICAgIGJvb2wgaXNVbnJlc29sdmVkKCkgY29uc3QgeyByZXR1cm4gbV90aW1lID09IHVucmVzb2x2
ZWRWYWx1ZTsgfQotICAgIAorCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgdW5y
ZXNvbHZlZFZhbHVlOwogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgaW5kZWZpbml0ZVZhbHVlOwpA
QCAtODMsMTIgKzgzLDggQEAgcHJpdmF0ZToKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTTUlMVGltZSYgYSwgY29uc3QgU01JTFRpbWUmIGIpIHsgcmV0dXJuIGEuaXNGaW5pdGUoKSAm
JiBhLnZhbHVlKCkgPT0gYi52YWx1ZSgpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciEoY29uc3Qg
U01JTFRpbWUmIGEpIHsgcmV0dXJuICFhLmlzRmluaXRlKCkgfHwgIWEudmFsdWUoKTsgfQotaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTTUlMVGltZSYgYSwgY29uc3QgU01JTFRpbWUmIGIp
IHsgcmV0dXJuICFvcGVyYXRvcj09KGEsIGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29u
c3QgU01JTFRpbWUmIGEsIGNvbnN0IFNNSUxUaW1lJiBiKSB7IHJldHVybiBhLnZhbHVlKCkgPiBi
LnZhbHVlKCk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBTTUlMVGltZSYgYSwgY29u
c3QgU01JTFRpbWUmIGIpIHsgcmV0dXJuIGEudmFsdWUoKSA8IGIudmFsdWUoKTsgfQotaW5saW5l
IGJvb2wgb3BlcmF0b3I+PShjb25zdCBTTUlMVGltZSYgYSwgY29uc3QgU01JTFRpbWUmIGIpIHsg
cmV0dXJuIGEudmFsdWUoKSA+IGIudmFsdWUoKSB8fCBvcGVyYXRvcj09KGEsIGIpOyB9Ci1pbmxp
bmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFNNSUxUaW1lJiBhLCBjb25zdCBTTUlMVGltZSYgYikg
eyByZXR1cm4gYS52YWx1ZSgpIDwgYi52YWx1ZSgpIHx8IG9wZXJhdG9yPT0oYSwgYik7IH0KLWlu
bGluZSBib29sIG9wZXJhdG9yPChjb25zdCBTTUlMVGltZVdpdGhPcmlnaW4mIGEsIGNvbnN0IFNN
SUxUaW1lV2l0aE9yaWdpbiYgYikgeyByZXR1cm4gYS50aW1lKCkgPCBiLnRpbWUoKTsgfQoraW5s
aW5lIGF1dG8gb3BlcmF0b3I8PT4oY29uc3QgU01JTFRpbWUmIGEsIGNvbnN0IFNNSUxUaW1lJiBi
KSB7IHJldHVybiBhLnZhbHVlKCkgPD0+IGIudmFsdWUoKTsgfQoraW5saW5lIGF1dG8gb3BlcmF0
b3I8PT4oY29uc3QgU01JTFRpbWVXaXRoT3JpZ2luJiBhLCBjb25zdCBTTUlMVGltZVdpdGhPcmln
aW4mIGIpIHsgcmV0dXJuIGEudGltZSgpIDw9PiBiLnRpbWUoKTsgfQogCiBTTUlMVGltZSBvcGVy
YXRvcisoY29uc3QgU01JTFRpbWUmLCBjb25zdCBTTUlMVGltZSYpOwogU01JTFRpbWUgb3BlcmF0
b3ItKGNvbnN0IFNNSUxUaW1lJiwgY29uc3QgU01JTFRpbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCA4N2RlZTViYTljODEzZGJmZGVkOTgzM2EwNWM0NzBlYTMwYTUy
YTI0Li5hZmIwYTE4MDM5MmNlYmI3NWM0OWIwMDlkZjk3YjE1NWY3OTVhMjBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02NDg0LDcgKzY0ODQsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBJbnRlcm5hbHM6OnNldE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvckNvbW1hbmRz
U2hvdWxkRmFpbChibwogfQogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TRVNTSU9OKQogCi1jb25z
dGV4cHIgQVNDSUlMaXRlcmFsIHN0cmluZyhQYXJ0aWFsT3JkZXJpbmcgb3JkZXJpbmcpCitjb25z
dGV4cHIgQVNDSUlMaXRlcmFsIHN0cmluZyhzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgb3JkZXJpbmcp
CiB7CiAgICAgaWYgKGlzX2x0KG9yZGVyaW5nKSkKICAgICAgICAgcmV0dXJuICJsZXNzIl9zOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4IDVmODU0NWViYTViMGU3
YjhiYmFiYTVjNjkzYzJhNDM0MTg4YjJiYTkuLmI2ZDhkNGIwNDFlNTUxYTg1MTRlYmEyYTgwN2E3
NjVjYmY5ZmM0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAg
LTc4LDkgKzc4LDQgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29u
c3QgU2NyaXB0QnVmZmVyJiBiKQogICAgIHJldHVybiAqYS5idWZmZXIoKSA9PSAqYi5idWZmZXIo
KTsKIH0KIAotYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNjcmlwdEJ1ZmZlciYgYSwgY29uc3QgU2Ny
aXB0QnVmZmVyJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCmluZGV4IGZkMmMx
YWUyZjYzYjYwZDc0YzMwZDI0MmE5ODlhMGJmZDkxZGU0OTQuLjY4MmFhMjYzZGZlYjZjYmVhZDMx
ZDllNGNlM2ZkM2QwNjM0ZmQwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2NyaXB0QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIu
aApAQCAtNjIsNiArNjIsNSBAQCBwcml2YXRlOgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwotYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgKaW5kZXggNzI1YTgzYWMyMTBh
ZmZiMTI5YzBlNTg2MTg2ZTE5YmUyZDA3ODE1Mi4uM2Y0NDdhZDJkY2E0Njg2YWQwOWE4YWYyYmQ1
OWVlYzQ4NGU5M2UyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaApAQCAtMzUsNiAr
MzUsOCBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIHsKICAgICBTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFNlcnZp
Y2VXb3JrZXJKb2JJZGVudGlmaWVyIGpvYklkZW50aWZpZXI7CiAKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJikgY29uc3QgPSBkZWZhdWx0
OworCiAgICAgU3RyaW5nIGxvZ2dpbmdTdHJpbmcoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIGNvbm5lY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKSArICItIiArIGpvYklkZW50
aWZpZXIubG9nZ2luZ1N0cmluZygpOwpAQCAtNDQsMTEgKzQ2LDYgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllciB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBkZWNvZGUo
RGVjb2RlciYpOwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXImIGEsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllciYgYikKLXsKLSAgICByZXR1cm4gYS5jb25uZWN0aW9uSWRlbnRpZmllciA9PSBiLmNvbm5l
Y3Rpb25JZGVudGlmaWVyICYmIGEuam9iSWRlbnRpZmllciA9PSBiLmpvYklkZW50aWZpZXI7Ci19
Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleS5jcHAKaW5kZXggOTZjZGIzYTgyMjg2NjFjYWVhYWVjYjM3Y2VmNjAyMmE0MGEw
NTIyZC4uMWI4NmQ0MmEzZGE5Mjg0ZTkzZGVkYTE5YTdiNjIwZDhjZjIwOGY4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LmNwcApAQCAtNTUsMTEgKzU1LDYgQEAgdW5zaWduZWQgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6aGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZ0hh
c2hlcjo6aGFzaE1lbW9yeShoYXNoZXMsIHNpemVvZihoYXNoZXMpKTsKIH0KIAotYm9vbCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpvcGVyYXRvcj09KGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBtX3RvcE9yaWdpbiA9
PSBvdGhlci5tX3RvcE9yaWdpbiAmJiBtX3Njb3BlID09IG90aGVyLm1fc2NvcGU7Ci19Ci0KIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewogICAgIHJldHVybiB7IG1fdG9wT3JpZ2luLmlzb2xh
dGVkQ29weSgpLCBtX3Njb3BlLmlzb2xhdGVkQ29weSgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkuaAppbmRleCBkMzJmNGQ5ZmE3YWJkOTkyMzM5NjZkNTNjYTg2NzhmNmQwNzNhMmMwLi5mOTQy
OTRhN2I1NzU2NGZlYjYwNWRjMTVlNzk4MDM5YjhjNDdhNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5LmgKQEAgLTQwLDggKzQwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5IGVtcHR5S2V5KCk7CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYga2V5KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IGtleSk7IH0KKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpIGNvbnN0
ID0gZGVmYXVsdDsKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAqdGhpcyA9PSBl
bXB0eUtleSgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc01hdGNoaW5nKGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkgY29uc3Q7
CiAgICAgYm9vbCBvcmlnaW5Jc01hdGNoaW5nKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9w
T3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDIwMWQxYWZkZjczMmUyYmNmMGY1OGRhMzEw
MDI0MDhiYjdhYWFhNmEuLmIyNmQ2NDI3ZDM4ZjU3MzRhYzU2OWQyZTc2YTVjYzBhNTkwZTc3YzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC05MCwy
MSArOTAsNiBAQCBTZWNvbmRzIE9wZXJhdGluZ0RhdGU6OnNlY29uZHNTaW5jZUVwb2NoKCkgY29u
c3QKICAgICByZXR1cm4gU2Vjb25kcyB7IGRhdGVUb0RheXNGcm9tMTk3MChtX3llYXIsIG1fbW9u
dGgsIG1fbW9udGhEYXkpICogc2Vjb25kc1BlckRheSB9OwogfQogCi1ib29sIE9wZXJhdGluZ0Rh
dGU6Om9wZXJhdG9yPT0oY29uc3QgT3BlcmF0aW5nRGF0ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fbW9udGhEYXkgPT0gb3RoZXIubV9tb250aERheSAmJiBtX21vbnRoID09IG90aGVy
Lm1fbW9udGggJiYgbV95ZWFyID09IG90aGVyLm1feWVhcjsKLX0KLQotYm9vbCBPcGVyYXRpbmdE
YXRlOjpvcGVyYXRvcjwoY29uc3QgT3BlcmF0aW5nRGF0ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHNlY29uZHNTaW5jZUVwb2NoKCkgPCBvdGhlci5zZWNvbmRzU2luY2VFcG9jaCgpOwot
fQotCi1ib29sIE9wZXJhdGluZ0RhdGU6Om9wZXJhdG9yPD0oY29uc3QgT3BlcmF0aW5nRGF0ZSYg
b3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNlY29uZHNTaW5jZUVwb2NoKCkgPD0gb3RoZXIu
c2Vjb25kc1NpbmNlRXBvY2goKTsKLX0KLQogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
JiBzdG9yZSwgU3VzcGVuZGFibGVXb3JrUXVldWUmIHdvcmtRdWV1ZSwgU2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQogICAgIDogbV9zdG9yZShzdG9yZSkKICAg
ICAsIG1fd29ya1F1ZXVlKHdvcmtRdWV1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAppbmRleCAxYTNiMDhiZjczZTE0ZmM3Y2UwYTY1N2RlNTgzZjlmMjJkNGFhODIy
Li45NzM0YTBhNmRmZDY1MzljODM4ZDUwOGMwNDk1MDcwNDM0MGRmMDNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC02MSw5ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICBpbnQgbW9udGgoKSBjb25zdCB7IHJldHVybiBtX21vbnRoOyB9CiAgICAgaW50IG1vbnRo
RGF5KCkgY29uc3QgeyByZXR1cm4gbV9tb250aERheTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yPChj
b25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcjw9KGNv
bnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBjb25zdDsKKyAgICBmcmllbmQgYXV0byBvcGVyYXRv
cjw9PihPcGVyYXRpbmdEYXRlLCBPcGVyYXRpbmdEYXRlKSA9IGRlZmF1bHQ7CiAgICAgCiAgICAg
T3BlcmF0aW5nRGF0ZShpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgbW9udGhEYXkpCiAgICAgICAg
IDogbV95ZWFyKHllYXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKaW5kZXggNjYxYjE1NjNlYzY0YjY2ZTc4ZjFmOGQ1NTRjNmQ5ZGYzNzMxYWU2Yi4uMjk2
MDc4YmIwNGQ3MmQyYWIwZjY3ZWRiOGYzM2I5NWE2MzY4ZmQ2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMTE4LDkgKzExOCw2IEBAIHB1Ymxp
YzoKICAgICAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgZW5jb2Rl
KElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwot
Ci0gICAgICAgIC8vIEZJWE1FOiBTaW5jZSB0aGlzIGlnbm9yZXMgZGlmZmVyZW5jZXMgaW4gZGVj
b2RlZFRpbWVMYXN0VXBkYXRlZCBpdCBwcm9iYWJseSBzaG91bGQgYmUgYSBuYW1lZCBmdW5jdGlv
biwgbm90IG9wZXJhdG9yPT0uCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaGlyZFBh
cnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSYpIGNvbnN0OwogICAgIH07CiAKICAgICBzdHJ1
Y3QgVGhpcmRQYXJ0eURhdGEgewpAQCAtMTMwLDkgKzEyNyw2IEBAIHB1YmxpYzoKICAgICAgICAg
U3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUaGlyZFBhcnR5RGF0YT4g
ZGVjb2RlKElQQzo6RGVjb2RlciYpOwotCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNvcnRzIGJ5
IG51bWJlciBvZiB1bmRlckZpcnN0UGFydGllcywgc28gaXQgcHJvYmFibHkgc2hvdWxkIGJlIGEg
bmFtZWQgZnVuY3Rpb24sIG5vdCBvcGVyYXRvcjwuCi0gICAgICAgIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFRoaXJkUGFydHlEYXRhJikgY29uc3Q7CiAgICAgfTsKIAogICAgIHZvaWQgZGlkRGVzdHJv
eU5ldHdvcmtTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaAppbmRl
eCBhMTBhMTYwZDVhNDY5ZTQ1MmZmM2Q2NzUwZGM2MWY5ZmY3Y2E4N2U0Li5hYjc3NDlmOTdhMDNj
NmU0ZWY0YjY5MDYwZGVkYWQ1YWQ4OTRhZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmgKQEAgLTg2LDcgKzg2LDYgQEAg
cHVibGljOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEtleT4gZGVjb2RlKFdURjo6UGVyc2lz
dGVuY2U6OkRlY29kZXImKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXkmKSBjb25z
dDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgS2V5JiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KIAogcHJpdmF0ZToKICAgICBzdGF0aWMgU3RyaW5nIGhhc2hB
c1N0cmluZyhjb25zdCBIYXNoVHlwZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9T
dHJpbmdSZWZlcmVuY2UuaAppbmRleCA1NmIxZGQwMDFjNmYxNDVlYjYwMDUwYWNlZjNiNmM4MTJk
OTk2ZjBkLi4yYzUwZTFhNWViMTNmYzk2OWZlMWJjYzYxYWI3ZDMyNWUzNDljZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVuY2UuaApAQCAtODQsMTEgKzg0
LDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmdSZWZlcmVuY2UmIGEsIGNv
bnN0IFN0cmluZ1JlZmVyZW5jZSYgYikKICAgICByZXR1cm4gYS5zaXplKCkgPT0gYi5zaXplKCkg
JiYgIW1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGEuc2l6ZSgpKTsKIH0KIAotaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmdSZWZlcmVuY2UmIGEsIGNvbnN0IFN0cmluZ1JlZmVy
ZW5jZSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBpbmxpbmUgYm9vbCBTdHJp
bmdSZWZlcmVuY2U6Okhhc2g6OmVxdWFsKGNvbnN0IFN0cmluZ1JlZmVyZW5jZSYgYSwgY29uc3Qg
U3RyaW5nUmVmZXJlbmNlJiBiKQogewogICAgIHJldHVybiBhID09IGI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0dlb21ldHJ5LmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS0dlb21ldHJ5LmgKaW5kZXggYzgyY2VkZTIxNGJiMTliYmM1ZjRjNDljMjI1
OTc1N2YwNjZjNTkyZS4uM2JhYzk5OWQwOTJkZTVjMGM3NDNiMmFmZmVjZjhiMDYwOWIzNjgyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLR2VvbWV0cnkuaApAQCAtMzUsNiArMzUsOSBA
QCBleHRlcm4gIkMiIHsKIHN0cnVjdCBXS1BvaW50IHsKICAgICBkb3VibGUgeDsKICAgICBkb3Vi
bGUgeTsKKyNpZmRlZiBfX2NwbHVzcGx1cworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXS1Bv
aW50JikgY29uc3QgPSBkZWZhdWx0OworI2VuZGlmCiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tQb2lu
dCBXS1BvaW50OwogCkBAIC05MSwxMSArOTQsNiBAQCBXS19FWFBPUlQgV0tSZWN0IFdLUmVjdEdl
dFZhbHVlKFdLUmVjdFJlZiByZWN0KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9Ci0KLWlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV0tQb2ludCYgYSwgY29uc3QgV0tQb2ludCYgYikKLXsK
LSAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55OwotfQogI2VuZGlmCiAKICNlbmRp
ZiAvKiBXS0dlb21ldHJ5X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nh
bGxiYWNrSUQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NhbGxiYWNrSUQuaAppbmRleCAxNmUy
OTZkNTUxMGE3MGM5MGVhMDUxN2NhOGZhNzc3MzhhZmUzYTU3Li44YmQzMDgxMGZkZGRkODhiM2Nm
ZDNlMzFiZjkwMzlmNWNiM2I3NTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
YWxsYmFja0lELmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ2FsbGJhY2tJRC5oCkBAIC01
Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWxsYmFja0lEJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV9pZCA9PSBvdGhlci5tX2lkOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxiYWNr
SUQmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICB1aW50NjRfdCB0b0ludGVnZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzVmFsaWQoKSBjb25zdCB7
IHJldHVybiBpc1ZhbGlkQ2FsbGJhY2tJRChtX2lkKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvTGF5ZXJUcmVlQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9M
YXllclRyZWVDb250ZXh0LmNwcAppbmRleCA5YjYyMmY1YjQwN2E2YzlkM2M1YmVlZDE2MWEzNGU1
ZDY2NDllZmVhLi5jZmE1YzM3ZWQ0N2FkMjQwNzBiODhjN2ZlY2RmNTMzMjk1OTFhNmVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9MYXllclRyZWVDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9MYXllclRyZWVDb250ZXh0LmNwcApAQCAtNTksOSArNTksNCBA
QCBib29sIExheWVyVHJlZUNvbnRleHQ6OmlzRW1wdHkoKSBjb25zdAogICAgIHJldHVybiAhY29u
dGV4dElEOwogfQogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgYSwg
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgYikKLXsKLSAgICByZXR1cm4gYS5jb250ZXh0SUQgPT0g
Yi5jb250ZXh0SUQ7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvTGF5ZXJUcmVlQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvTGF5ZXJUcmVlQ29udGV4dC5oCmluZGV4IDc2MDEzMDBiMzk0OGU4Nzg4Yzk1NGNkMTVhMTM5
YzE4Y2M2MTdmNGUuLjExMDM2OTI4ZTI5MjFhNjc1ZDgyZTJlZjQ3NTM4NWZiMjI4ZGQxNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9MYXllclRyZWVDb250ZXh0LmgKQEAgLTUyLDE2ICs1MiwxMSBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBMYXllclRyZWVDb250ZXh0JikgY29uc3QgPSBkZWZhdWx0OworCiAgICAgdWlu
dDY0X3QgY29udGV4dElEOwogfTsKIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IExheWVyVHJlZUNv
bnRleHQmLCBjb25zdCBMYXllclRyZWVDb250ZXh0Jik7Ci0KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgYSwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgYikK
LXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiB9CiAKIG5hbWVzcGFjZSBXVEYgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTW9ub3RvbmljT2JqZWN0SWRlbnRpZmllci5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvTW9ub3RvbmljT2JqZWN0SWRlbnRpZmllci5oCmluZGV4
IDRjZWQ4ODZhOGUwZWVhZTNhNGU2Nzk4MGE1YmFlOTI5N2JhMjBmMTcuLmJlMTRjN2M5MDM5ODE4
ZGQzZTc1NWFiMzRkOGQ2ZTM2ZTViMzlmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL01vbm90b25pY09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Nb25vdG9uaWNPYmplY3RJZGVudGlmaWVyLmgKQEAgLTYwLDM1ICs2MCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIE1vbm90b25pY09iamVjdElkZW50aWZpZXIgeyAqaWRlbnRpZmllciB9
OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNb25vdG9uaWNPYmplY3RJZGVu
dGlmaWVyJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkZW50aWZpZXIg
PT0gb3RoZXIubV9pZGVudGlmaWVyOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0
IE1vbm90b25pY09iamVjdElkZW50aWZpZXImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1faWRlbnRpZmllciA+IG90aGVyLm1faWRlbnRpZmllcjsKLSAgICB9Ci0KLSAgICBi
b29sIG9wZXJhdG9yPj0oY29uc3QgTW9ub3RvbmljT2JqZWN0SWRlbnRpZmllciYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyID49IG90aGVyLm1faWRlbnRp
ZmllcjsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBNb25vdG9uaWNPYmplY3RJ
ZGVudGlmaWVyJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkZW50aWZp
ZXIgPCBvdGhlci5tX2lkZW50aWZpZXI7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcjw9KGNv
bnN0IE1vbm90b25pY09iamVjdElkZW50aWZpZXImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1faWRlbnRpZmllciA8PSBvdGhlci5tX2lkZW50aWZpZXI7Ci0gICAgfQotCi0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1vbm90b25pY09iamVjdElkZW50aWZpZXImIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllciAhPSBvdGhlci5tX2lk
ZW50aWZpZXI7Ci0gICAgfQorICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KE1vbm90b25pY09i
amVjdElkZW50aWZpZXIsIE1vbm90b25pY09iamVjdElkZW50aWZpZXIpID0gZGVmYXVsdDsKIAog
ICAgIE1vbm90b25pY09iamVjdElkZW50aWZpZXImIGluY3JlbWVudCgpCiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Nyb2xsaW5nQWNjZWxlcmF0aW9uQ3VydmUuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Njcm9sbGluZ0FjY2VsZXJhdGlvbkN1cnZlLmgKaW5kZXgg
MjBhMDVlOGNjYzI3MjdhM2RlMDFjNTUzZDRiYTI2MGI5MzBlNmQ4MS4uZTM5YWZjOTQwODYzYmI4
Y2YzZmRhMTc3MTRiNGEzYjg4ZjczMjczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Nyb2xsaW5nQWNjZWxlcmF0aW9uQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TY3JvbGxpbmdBY2NlbGVyYXRpb25DdXJ2ZS5oCkBAIC01MywxOSArNTMsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8U2Nyb2xsaW5nQWNjZWxlcmF0aW9uQ3VydmU+IGRlY29kZShJUEM6OkRlY29kZXIm
KTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JvbGxpbmdBY2NlbGVyYXRpb25DdXJ2
ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLmdhaW5M
aW5lYXIgPT0gb3RoZXIubV9wYXJhbWV0ZXJzLmdhaW5MaW5lYXIKLSAgICAgICAgICAgICYmIG1f
cGFyYW1ldGVycy5nYWluUGFyYWJvbGljID09IG90aGVyLm1fcGFyYW1ldGVycy5nYWluUGFyYWJv
bGljCi0gICAgICAgICAgICAmJiBtX3BhcmFtZXRlcnMuZ2FpbkN1YmljID09IG90aGVyLm1fcGFy
YW1ldGVycy5nYWluQ3ViaWMKLSAgICAgICAgICAgICYmIG1fcGFyYW1ldGVycy5nYWluUXVhcnRp
YyA9PSBvdGhlci5tX3BhcmFtZXRlcnMuZ2FpblF1YXJ0aWMKLSAgICAgICAgICAgICYmIG1fcGFy
YW1ldGVycy50YW5nZW50U3BlZWRMaW5lYXIgPT0gb3RoZXIubV9wYXJhbWV0ZXJzLnRhbmdlbnRT
cGVlZExpbmVhcgotICAgICAgICAgICAgJiYgbV9wYXJhbWV0ZXJzLnRhbmdlbnRTcGVlZFBhcmFi
b2xpY1Jvb3QgPT0gb3RoZXIubV9wYXJhbWV0ZXJzLnRhbmdlbnRTcGVlZFBhcmFib2xpY1Jvb3QK
LSAgICAgICAgICAgICYmIG1fcGFyYW1ldGVycy5yZXNvbHV0aW9uID09IG90aGVyLm1fcGFyYW1l
dGVycy5yZXNvbHV0aW9uCi0gICAgICAgICAgICAmJiBtX3BhcmFtZXRlcnMuZnJhbWVSYXRlID09
IG90aGVyLm1fcGFyYW1ldGVycy5mcmFtZVJhdGU7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFNjcm9sbGluZ0FjY2VsZXJhdGlvbkN1cnZlJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2Nyb2xs
aW5nQWNjZWxlcmF0aW9uQ3VydmUmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMg
PT0gb3RoZXIubV9wYXJhbWV0ZXJzOyB9CiAgICAgCiBwcml2YXRlOgogICAgIGZyaWVuZCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTY3JvbGxpbmdBY2NlbGVyYXRp
b25DdXJ2ZSYpOwpAQCAtNzQsNyArNjIsNyBAQCBwcml2YXRlOgogCiAgICAgZmxvYXQgZXZhbHVh
dGVRdWFydGljKGZsb2F0KSBjb25zdDsKIAotICAgIHN0cnVjdCB7CisgICAgc3RydWN0IFBhcmFt
ZXRlcnMgewogICAgICAgICBmbG9hdCBnYWluTGluZWFyIHsgMCB9OwogICAgICAgICBmbG9hdCBn
YWluUGFyYWJvbGljIHsgMCB9OwogICAgICAgICBmbG9hdCBnYWluQ3ViaWMgeyAwIH07CkBAIC04
Niw2ICs3NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIG9mIHRoZSBjdXJ2ZSwganVzdCByZXF1
aXJlZCB0byB1c2UgaXQ7IHRoZXkgc2hvdWxkIGJlIHBsdW1iZWQgc2VwYXJhdGVseS4KICAgICAg
ICAgZmxvYXQgcmVzb2x1dGlvbiB7IDAgfTsKICAgICAgICAgZmxvYXQgZnJhbWVSYXRlIHsgMCB9
OworCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXJhbWV0ZXJzJikgY29uc3QgPSBk
ZWZhdWx0OwogICAgIH0gbV9wYXJhbWV0ZXJzOwogCiAgICAgc3RydWN0IENvbXB1dGVkSW50ZXJt
ZWRpYXRlVmFsdWVzIHsKQEAgLTk2LDcgKzg2LDYgQEAgcHJpdmF0ZToKICAgICAgICAgZmxvYXQg
ZmFsbG9mZlNsb3BlIHsgMCB9OwogICAgICAgICBmbG9hdCBmYWxsb2ZmSW50ZXJjZXB0IHsgMCB9
OwogICAgIH07Ci0KICAgICBzdGQ6Om9wdGlvbmFsPENvbXB1dGVkSW50ZXJtZWRpYXRlVmFsdWVz
PiBtX2ludGVybWVkaWF0ZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJh
ck1lbnVJdGVtRGF0YS5jcHAKaW5kZXggMTQxMzlkMjRjNjBmMTExYmY0ODhjNWM0ZjhhOGQ2OGRl
YmQxOWVhNS4uMTAzMDA4N2JmYzgyMjI4ZTIxOTAzZjkzYmU2YTQ4NGJhNTUwODA2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNwcApAQCAtNDQsMTYg
KzQ0LDEzIEBAIHN0YXRpYyBJdGVtVHlwZSBpdGVtVHlwZShjb25zdCBTdHJpbmcmKQogfQogCiBU
b3VjaEJhck1lbnVJdGVtRGF0YTo6VG91Y2hCYXJNZW51SXRlbURhdGEoY29uc3QgV2ViQ29yZTo6
SFRNTE1lbnVJdGVtRWxlbWVudCYgZWxlbWVudCkKKyAgICA6IGlkZW50aWZpZXIoZWxlbWVudC5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6aWRBdHRy
KSkKKyAgICAsIHByaW9yaXR5KHZhbHVlT3JEZWZhdWx0KHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQ
b2ludE51bWJlcihlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29y
ZTo6SFRNTE5hbWVzOjp2YWx1ZUF0dHIpKSkpCiB7Ci0gICAgdHlwZSA9IGl0ZW1UeXBlKGVsZW1l
bnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnR5
cGVBdHRyKSk7Ci0gICAgaWRlbnRpZmllciA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmlkQXR0cik7Ci0gICAgcHJpb3JpdHkgPSBl
bGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVz
Ojp2YWx1ZUF0dHIpLnRvRmxvYXQoKTsKIH0KIAogdm9pZCBUb3VjaEJhck1lbnVJdGVtRGF0YTo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHR5
cGU7Ci0gICAgCiAgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgcHJp
b3JpdHk7CiB9CkBAIC02MSwxNSArNTgsMTAgQEAgdm9pZCBUb3VjaEJhck1lbnVJdGVtRGF0YTo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHN0ZDo6b3B0aW9uYWw8VG91Y2hC
YXJNZW51SXRlbURhdGE+IFRvdWNoQmFyTWVudUl0ZW1EYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyKQogewogICAgIFRvdWNoQmFyTWVudUl0ZW1EYXRhIHJlc3VsdDsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5wcmlvcml0eSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgCiAg
ICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKHJlc3VsdCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuaAppbmRleCAwNWM2ZGRkYmNk
YjVkZWY0OTBiYWE2MDY1MGU1OGE1YzUyNjU1ZGU2Li5lMTY5NjBmOGE2NTI3ZTFmOTk4M2I1OWQz
Y2U4MzdiODc3OWE3NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJh
ck1lbnVJdGVtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0
ZW1EYXRhLmgKQEAgLTI3LDggKzI3LDYgQEAKIAogI2lmIEhBVkUoVE9VQ0hfQkFSKQogCi0jaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTQyLDY4
ICs0MCwyNCBAQCBjbGFzcyBIVE1MTWVudUl0ZW1FbGVtZW50OwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKICAgICAKLS8vIEJhc2VkIG9uIE5TVG91Y2hCYXJJdGVtIHR5cGVzLgotZW51bSBJdGVtVHlw
ZSB7Ci0gICAgQnV0dG9uCi19OwotCiBzdHJ1Y3QgVG91Y2hCYXJNZW51SXRlbURhdGEgewotICAg
IGV4cGxpY2l0IFRvdWNoQmFyTWVudUl0ZW1EYXRhKCkgPSBkZWZhdWx0OworICAgIFRvdWNoQmFy
TWVudUl0ZW1EYXRhKCkgPSBkZWZhdWx0OwogICAgIGV4cGxpY2l0IFRvdWNoQmFyTWVudUl0ZW1E
YXRhKGNvbnN0IFdlYkNvcmU6OkhUTUxNZW51SXRlbUVsZW1lbnQmKTsKLSAgICAKKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYpIGNvbnN0ID0gZGVmYXVs
dDsKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwog
ICAgIAotICAgIEl0ZW1UeXBlIHR5cGUgeyBJdGVtVHlwZTo6QnV0dG9uIH07CiAgICAgU3RyaW5n
IGlkZW50aWZpZXI7Ci0gICAgZmxvYXQgcHJpb3JpdHkgeyAwLjAgfTsKLSAgICBib29sIHZhbGlk
VG91Y2hCYXJEaXNwbGF5IHsgdHJ1ZSB9OworICAgIGRvdWJsZSBwcmlvcml0eSB7IDAuMCB9Owog
fTsKLSAgICAKLS8vIFRvdWNoIEJhciBNZW51IEl0ZW1zIHdpbGwgYmUgb3JkZXJlZCBiYXNlZCBv
biBwcmlvcml0eS4KLWlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBUb3VjaEJhck1lbnVJdGVt
RGF0YSYgbGhzLCBjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgcmhzKQotewotICAgIHJldHVy
biBsaHMucHJpb3JpdHkgPCByaHMucHJpb3JpdHk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9y
Pihjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgbGhzLCBjb25zdCBUb3VjaEJhck1lbnVJdGVt
RGF0YSYgcmhzKQotewotICAgIHJldHVybiByaHMgPCBsaHM7Ci19CiAKLWlubGluZSBib29sIG9w
ZXJhdG9yPD0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIGxocywgY29uc3QgVG91Y2hCYXJN
ZW51SXRlbURhdGEmIHJocykKLXsKLSAgICByZXR1cm4gIShsaHMgPiByaHMpOwotfQotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiBsaHMsIGNvbnN0
IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiByaHMpCi17Ci0gICAgcmV0dXJuICEobGhzIDwgcmhzKTsK
LX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYg
bGhzLCBjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgcmhzKQotewotICAgIHJldHVybiBsaHMu
dHlwZSA9PSByaHMudHlwZQotICAgICAgICAmJiBsaHMuaWRlbnRpZmllciA9PSByaHMuaWRlbnRp
ZmllcgotICAgICAgICAmJiBsaHMucHJpb3JpdHkgPT0gcmhzLnByaW9yaXR5OwotfQotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiBsaHMsIGNvbnN0
IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiByaHMpCisvLyBUb3VjaCBCYXIgTWVudSBJdGVtcyB3aWxs
IGJlIG9yZGVyZWQgYmFzZWQgb24gcHJpb3JpdHkuCitjb25zdGV4cHIgYXV0byBvcGVyYXRvcjw9
Pihjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgYSwgY29uc3QgVG91Y2hCYXJNZW51SXRlbURh
dGEmIGIpCiB7Ci0gICAgcmV0dXJuICEobGhzID09IHJocyk7CisgICAgcmV0dXJuIGEucHJpb3Jp
dHkgPD0+IGIucHJpb3JpdHk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi1uYW1lc3Bh
Y2UgV1RGIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6Okl0ZW1UeXBl
PiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViS2l0OjpJdGVt
VHlwZSwKLSAgICAgICAgV2ViS2l0OjpJdGVtVHlwZTo6QnV0dG9uCi0gICAgPjsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdURgotCiAjZW5kaWYgLy8gSEFWRShUT1VDSF9CQVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycy5oCmluZGV4IDYxMWQ4ODUz
YTM0NTFmMzZiZTQ4M2UyY2ZjNTYzMWZiZmE2NzY4MDcuLjM2OWVjODQzZDQ0OTEwYTM5ZTk5ZjM1
MTQyN2QwZDY4ZjZmYmI2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VOZXR3b3JrUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VO
ZXR3b3JrUGFyYW1ldGVycy5oCkBAIC00Nyw5ICs0NywxMCBAQCBwdWJsaWM6CiAgICAgICAgIDog
bV9hdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllcihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkg
eyB9CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQog
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZWRCdW5kbGVJZGVu
dGlmaWVyLmhhc2goKTsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJQYWdlTmV0d29y
a1BhcmFtZXRlcnMmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZWRCdW5kbGVJZGVu
dGlmaWVyID09IG90aGVyLm1fYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7IH0KKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzJikgY29uc3QgPSBkZWZh
dWx0OwogCiAgICAgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7IH0KKwogcHJpdmF0ZToK
ICAgICBTdHJpbmcgbV9hdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllcjsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmgKaW5kZXggZjRlYjkxNGQ3OTJh
MDA4ZTM1MjlmNDJmNWE3MzBiZDQ3ZTE3ZTE0Ny4uMjhkOGQxOWQxNjdmNTM2MzVmN2YwMmE2MTdj
ZDAwMmNjODA0MDFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2Nw
cC9XS1JldGFpblB0ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9jcHAvV0tS
ZXRhaW5QdHIuaApAQCAtMjE2LDI2ICsyMTYsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdLUmV0YWluUHRyPFQ+JiBhLAog
ICAgIHJldHVybiBhLmdldCgpID09IGI7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IFdLUmV0YWluUHRyPFU+
JiBiKSAKLXsKLSAgICByZXR1cm4gYSA9PSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXS1JldGFpblB0
cjxUPiYgYSwgY29uc3QgV0tSZXRhaW5QdHI8VT4mIGIpCi17IAotICAgIHJldHVybiBhLmdldCgp
ICE9IGIuZ2V0KCk7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdLUmV0YWluUHRyPFQ+JiBhLCBVKiBiKQotewotICAg
IHJldHVybiBhLmdldCgpICE9IGI7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IFdLUmV0YWluUHRyPFU+JiBi
KQoteyAKLSAgICByZXR1cm4gYSAhPSBiLmdldCgpOyAKLX0KLQogI2lmIChkZWZpbmVkKFdJTjMy
KSB8fCBkZWZpbmVkKF9XSU4zMikpICYmICEoKF9NU0NfVkVSID4gMTkwMCkgJiYgX19jbGFuZ19f
KQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdLUmV0YWluUHRyPFQ+IGFkb3B0V0soVCkg
X0NoZWNrX3JldHVybl87CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggNWEzYjBkN2VlMWVkMDRl
OTc4YjQ4NWZjNDFlMTVhZmFjZGJjNmVlNi4uZjc5NGEzN2ZmNjJiMTNjNTRkYjZhZTIzZDZjODJl
NzViN2U2MmQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zMDQsMTEgKzMwNCw2IEBAIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgV0tTZWxlY3Rpb25EcmF3aW5nSW5mbyYgYSwgY29uc3QgV0tT
ZWxlY3Rpb25EcmF3aW5nCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgV0tTZWxlY3Rpb25EcmF3aW5nSW5mbyYgYSwgY29uc3QgV0tTZWxlY3Rpb25E
cmF3aW5nSW5mbyYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiBzdHJlYW0sIFdLU2VsZWN0aW9uRHJhd2lu
Z0luZm86OlNlbGVjdGlvblR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0
ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKaW5kZXggMzM1ZjNmYWRmYWFl
ZWUzZWI2MjUxZWZiOTg5OTUzOTE0ZDYwMTYzNS4uZDhmNzdmNmFmMWI1N2EyMDhhNGVlMmRlMzM1
OWE1YmFhODlkMmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRl
ICJJbWFnZU9wdGlvbnMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNp
bmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9y
eS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9y
eS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCmluZGV4IDY5OTBhYTAwYzE2OTY4MWY5NmIzMGViZDcx
YzRmMzlkYTIwY2Y2MzUuLmNjYTg0YmI2MGI2YmEyNjc0NzhjZWQ0M2Q0MTk3NjdlMGIzNjM5NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVy
dHlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0JpbmFyeVBy
b3BlcnR5TGlzdC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhM
ZW5ndGhJbk1hcmtlckJ5dGUgPSAweEU7CiAKIGNsYXNzIEludGVnZXJBcnJheSB7CiBwdWJsaWM6
Ci0gICAgSW50ZWdlckFycmF5KCkgOiBtX2ludGVnZXJzKDApLCBtX3NpemUoMCkgeyB9CisgICAg
SW50ZWdlckFycmF5KCkgPSBkZWZhdWx0OwogICAgIEludGVnZXJBcnJheShjb25zdCBpbnQqIGlu
dGVnZXJzLCBzaXplX3Qgc2l6ZSkgOiBtX2ludGVnZXJzKGludGVnZXJzKSwgbV9zaXplKHNpemUp
IHsgQVNTRVJUKGludGVnZXJzKTsgQVNTRVJUKHNpemUpOyB9CiAKICAgICBib29sIGlzRGVsZXRl
ZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gSGFzaFRyYWl0czxzaXplX3Q+Ojppc0RlbGV0ZWRWYWx1
ZShtX3NpemUpOyB9CkBAIC02MCwxOSArNjAsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IGludCog
aW50ZWdlcnMoKSBjb25zdCB7IEFTU0VSVCghaXNEZWxldGVkVmFsdWUoKSk7IHJldHVybiBtX2lu
dGVnZXJzOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IEFTU0VSVCghaXNEZWxldGVkVmFs
dWUoKSk7IHJldHVybiBtX3NpemU7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRl
Z2VyQXJyYXkmKSBjb25zdCA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIHN0cnVj
dCBJbnRlZ2VyQXJyYXlIYXNoVHJhaXRzOwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29u
c3QgSW50ZWdlckFycmF5JiwgY29uc3QgSW50ZWdlckFycmF5Jik7CiAKLSAgICBjb25zdCBpbnQq
IG1faW50ZWdlcnM7Ci0gICAgc2l6ZV90IG1fc2l6ZTsKKyAgICBjb25zdCBpbnQqIG1faW50ZWdl
cnMgeyBudWxscHRyIH07CisgICAgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKIH07CiAKLWlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgSW50ZWdlckFycmF5JiBhLCBjb25zdCBJbnRlZ2VyQXJyYXkm
IGIpCi17Ci0gICAgcmV0dXJuIGEubV9pbnRlZ2VycyA9PSBiLm1faW50ZWdlcnMgJiYgIGEubV9z
aXplID09IGIubV9zaXplOwotfQotCiBzdHJ1Y3QgSW50ZWdlckFycmF5SGFzaFRyYWl0cyA6IEhh
c2hUcmFpdHM8SW50ZWdlckFycmF5PiB7CiAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKEludGVnZXJBcnJheSYgc2xvdCkgeyBIYXNoVHJhaXRzPHNpemVfdD46OmNvbnN0cnVj
dERlbGV0ZWRWYWx1ZShzbG90Lm1fc2l6ZSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRW
YWx1ZShjb25zdCBJbnRlZ2VyQXJyYXkmIHNsb3QpIHsgcmV0dXJuIEhhc2hUcmFpdHM8c2l6ZV90
Pjo6aXNEZWxldGVkVmFsdWUoc2xvdC5tX3NpemUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0JpdHMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQml0cy5oCmluZGV4
IDNlNzUwYzA3OWIxMTcyYzkxY2I4MDQ1NDI2ODYyZDM2NjI2YTY5MWYuLjY1ODRiOTdmZTU1ZDll
Y2U5N2EwMmRiNmY4ZTEyZTBkYjk0ZWRhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvQml0cy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQml0cy5oCkBAIC0yNTEs
MTIgKzI1MSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyPgotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBP
dGhlciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7Ci0gICAgfQotICAgIAogICAgIGJvb2wgYXQoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIGF0SW1wbChpbmRleCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448885</attachid>
            <date>2022-01-11 15:59:14 -0800</date>
            <delta_ts>2022-01-11 16:43:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235018-20220111155913.patch</filename>
            <type>text/plain</type>
            <size>603347</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZjFhNjE2OWU2YTc2ZTUyZDZmM2YyNzk2Njg3Y2Q3YjJmODMyM2RjLi42ZTdhYWMzNjM1OWFiYzcy
NzQzNmMzMmM0ZDdhMTE3NDdlMTQ5ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4IEBACisyMDIyLTAxLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIEMrKzIwIGRlZmF1bHQgY29tcGFyaXNv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAx
OAorCiAyMDIyLTAxLTExICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5j
b20+CiAKICAgICAgICAgTm9uLXVuaWZpZWQgYnVpbGQgZml4ZXMsIGVhcmx5IEphbnVhcnkgMjAy
MiBlZGl0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IDZmNGVmZWIwZTM1ZDcwNTAwM2VmMTI4OTE3NWFhOWRmMjE2Zjg2NmMu
LmEwZmUxMjA3ZDlhOTdlZTBjYzgzNmFjYWQzYjExOTE0YTc2N2ZiNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
OCBAQAorMjAyMi0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RhcnQgdGFraW5nIGFkdmFudGFnZSBvZiBDKysyMCBkZWZhdWx0IGNvbXBhcmlzb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMTgKKwog
MjAyMi0wMS0xMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIEFwcGxlVFYgc3BlY2lmaWMgZGlzYWJsaW5nIG9mIGNvbmljIGdyYWRpZW50cywgaXRzIG5v
dCBuZWNlc3NhcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNmUyMDViNzE4ZWE1NDNlYzlmMTQ5ZTM2MmJmOWQ3
NjE3ZTA1NjZlLi40MjM3MGQ2NmExZTcyODQ5ZmZkYTk4YjFkMWQ5YTY5YmZkNTVmNTEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsOCBAQAorMjAyMi0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgU3RhcnQgdGFraW5nIGFkdmFudGFnZSBvZiBDKysyMCBkZWZh
dWx0IGNvbXBhcmlzb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzUwMTgKKwogMjAyMi0wMS0xMSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBjc3MvY3NzLXRyYW5zaXRpb25zL0tleWZyYW1lRWZmZWN0LXNl
dEtleWZyYW1lcy50ZW50YXRpdmUuaHRtbCBpcyBhIGZhaWx1cmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IGYzMTgxOTc3NGJjMTQwY2Y1MjU4Nzg2NDQ5MjdiYWZkNWFiMmU5MDIuLmM1NWVlOTZhMjBm
YjgyNGYwMWZlOWExNTU5ZmZhOGVjNmI0ZmIxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDggQEAKKzIwMjItMDEtMDkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2YgQysrMjAgZGVmYXVsdCBjb21wYXJpc29u
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDE4
CisKIDIwMjItMDEtMTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGEgLXNob3VsZFdyYXAgcHJvcGVydHkgd2hlbiBpbmpl
Y3RpbmcgTGl2ZSBUZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ4M2E0M2MwOGNkMjdhOWUyMWEyYzI0N2VjYjY1
NWEyMDFiZTUyYTYuLjBlNTg5ZDZkNzc2YWQ5NTI3ZmQwYTBhNWM2YmFhOTNmODIzZTRjMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsOCBAQAorMjAyMi0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgU3RhcnQgdGFraW5nIGFkdmFudGFnZSBvZiBDKysyMCBkZWZh
dWx0IGNvbXBhcmlzb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzUwMTgKKwogMjAyMi0wMS0xMSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFw
ZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBlYXJs
eSBKYW51YXJ5IDIwMjIgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGNm
Yjk0ZWM0NzAwYTU0MWVkMzcyZWUzODlhMjJmNTIxZTZlOGJjMTYuLmU2ZDU0ODhkMzdiNTYxMDYy
N2MyYmE4YjA4ZDAwMWM5ZWRkNTMxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw4IEBACisyMDIyLTAxLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
KworICAgICAgICBTdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIEMrKzIwIGRlZmF1bHQgY29tcGFy
aXNvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NTAxOAorCiAyMDIyLTAxLTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgU3RhcnQgdXNpbmcgQysrMjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwppbmRleCAwNTkwNzU0
NjJiYzMwMzQ0MmE1NTI3ODY4NDAwMDZhMDQxMjJmYzcxLi5hMWYzMTMzNjMzZTczYmNjMDMyYjgw
MGU5MWI5NmQ1MzMyOTBhMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOCBAQAorMjAyMi0wMS0w
OSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3RhcnQgdGFraW5n
IGFkdmFudGFnZSBvZiBDKysyMCBkZWZhdWx0IGNvbXBhcmlzb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMTgKKwogMjAyMi0wMS0xMCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0YXJ0
IHVzaW5nIEMrKzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUmV0
YWluUHRyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUmV0YWluUHRyLmgKaW5kZXgg
MDc2ZDEzOTA5YTM4MWQ1YTI5ZGE4OThiYjdiY2FjZjJjMzgyZWY5NC4uODZiZjhkZWZkMTBjY2Zi
YTUwMzJkMzE5MzM2ZmExZmViMDllZDQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1JldGFpblB0ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNS
ZXRhaW5QdHIuaApAQCAtMTc1LDE4ICsxNzUsMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IEpTUmV0YWluUHRyPAog
ewogICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAogfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTUmV0YWluUHRyPFQ+JiBh
LCBjb25zdCBKU1JldGFpblB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5n
ZXQoKTsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgSlNSZXRhaW5QdHI8VD4mIGEsIFUqIGIpCi17Ci0gICAgcmV0dXJu
IGEuZ2V0KCkgIT0gYjsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlu
bGluZSBib29sIG9wZXJhdG9yIT0oVCogYSwgY29uc3QgSlNSZXRhaW5QdHI8VT4mIGIpCi17IAot
ICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA4OTdjNTNm
NjQzMGFhMjVlZDY4ZjI1ZjBiZDdkZDU5NmJjNWQ4ODIwLi4xMzAxMzU4MGRiOTM4YWI2NDZjYjQ1
OTNiMzJkODdmYTJlOTE2Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtNDIwLDcgKzQyMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1hc20tPmludmFsaWRhdGVBbGxUZW1wUmVnaXN0ZXJzKCk7
CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGFiZWwmIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX2xhYmVsID09IG90aGVyLm1fbGFiZWw7IH0KKyAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IExhYmVsJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIGJv
b2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsLmlzU2V0KCk7IH0KICAgICBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJC
dWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVy
LmgKaW5kZXggNzBjYTM4YzJiODgxNjNiNmY4MmFmYmZhODY0MDdjYmIwMTk4Yzg1My4uMDIwNmQw
NTI5NzhhYTk3ZTQ0OWI3OThmOWFkZjQ1OThlYjZiMWFjNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCkBAIC01MywyNCArNTMsMjQg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5U
SUZJRVIoQXNzZW1ibGVyRGF0YSk7CiAKICAgICBzdHJ1Y3QgQXNzZW1ibGVyTGFiZWwgewotICAg
ICAgICBpbmxpbmUgQXNzZW1ibGVyTGFiZWwoKSB7IHNldE9mZnNldChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpOyB9Ci0gICAgICAgIGlubGluZSBBc3NlbWJsZXJMYWJlbChj
b25zdCBBc3NlbWJsZXJMYWJlbCYgb3RoZXIpIHsgc2V0T2Zmc2V0KG90aGVyLm9mZnNldCgpKTsg
fQotICAgICAgICBpbmxpbmUgQXNzZW1ibGVyTGFiZWwoQXNzZW1ibGVyTGFiZWwmJiBvdGhlcikg
eyBzZXRPZmZzZXQob3RoZXIub2Zmc2V0KCkpOyB9Ci0gICAgICAgIGlubGluZSBleHBsaWNpdCBB
c3NlbWJsZXJMYWJlbCh1aW50MzJfdCBvZmZzZXQpIHsgc2V0T2Zmc2V0KG9mZnNldCk7IH0KKyAg
ICAgICAgQXNzZW1ibGVyTGFiZWwoKSB7IHNldE9mZnNldChzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCkpOyB9CisgICAgICAgIEFzc2VtYmxlckxhYmVsKGNvbnN0IEFzc2VtYmxl
ckxhYmVsJiBvdGhlcikgeyBzZXRPZmZzZXQob3RoZXIub2Zmc2V0KCkpOyB9CisgICAgICAgIEFz
c2VtYmxlckxhYmVsKEFzc2VtYmxlckxhYmVsJiYgb3RoZXIpIHsgc2V0T2Zmc2V0KG90aGVyLm9m
ZnNldCgpKTsgfQorICAgICAgICBleHBsaWNpdCBBc3NlbWJsZXJMYWJlbCh1aW50MzJfdCBvZmZz
ZXQpIHsgc2V0T2Zmc2V0KG9mZnNldCk7IH0KIAogICAgICAgICBBc3NlbWJsZXJMYWJlbCYgb3Bl
cmF0b3I9KGNvbnN0IEFzc2VtYmxlckxhYmVsJiBvdGhlcikgeyBzZXRPZmZzZXQob3RoZXIub2Zm
c2V0KCkpOyByZXR1cm4gKnRoaXM7IH0KICAgICAgICAgQXNzZW1ibGVyTGFiZWwmIG9wZXJhdG9y
PShBc3NlbWJsZXJMYWJlbCYmIG90aGVyKSB7IHNldE9mZnNldChvdGhlci5vZmZzZXQoKSk7IHJl
dHVybiAqdGhpczsgfQogCiAgICAgICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAob2Zm
c2V0KCkgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKTsgfQogCi0gICAg
ICAgIGlubGluZSBBc3NlbWJsZXJMYWJlbCBsYWJlbEF0T2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0
CisgICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsQXRPZmZzZXQoaW50IG9mZnNldCkgY29uc3QK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEFzc2VtYmxlckxhYmVsKHRoaXMtPm9mZnNl
dCgpICsgb2Zmc2V0KTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBBc3NlbWJsZXJMYWJlbCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9mZnNldCgpID09IG90aGVy
Lm9mZnNldCgpOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBc3NlbWJsZXJMYWJl
bCYpIGNvbnN0ID0gZGVmYXVsdDsKIAotICAgICAgICBpbmxpbmUgdWludDMyX3Qgb2Zmc2V0KCkg
Y29uc3QKKyAgICAgICAgdWludDMyX3Qgb2Zmc2V0KCkgY29uc3QKICAgICAgICAgewogI2lmIENQ
VShBUk02NEUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVudGFn
SW50KG1fb2Zmc2V0LCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPih0aGlzKSkpOwpAQCAtODAsNyArODAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
aW5saW5lIHZvaWQgc2V0T2Zmc2V0KHVpbnQzMl90IG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRP
ZmZzZXQodWludDMyX3Qgb2Zmc2V0KQogICAgICAgICB7CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAg
ICAgICAgIG1fb2Zmc2V0ID0gdGFnSW50KHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBi
aXR3aXNlX2Nhc3Q8UHRyVGFnPih0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAppbmRleCAxZWEzMjQ1NDE1
YWIwOGE0NWM3ZDNlNTk1OTYwYzQ0NWIxOWZmNzUxLi45NjMzYjVjZmQ4ZDZiMzk0M2NkZWQ5YWZh
NjVjY2MyYzhkYzI3MjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKQEAgLTEyMCw4ICsxMjAsNyBAQCBwdWJs
aWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wdHI7
IH0KICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQogCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENGdW5jdGlvblB0ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fcHRyID09IG90aGVyLm1fcHRyOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENGdW5j
dGlvblB0ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyICE9IG90aGVyLm1fcHRyOyB9Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENGdW5jdGlvblB0ciYpIGNvbnN0ID0gZGVmYXVsdDsK
IAogcHJpdmF0ZToKICAgICBQdHIgbV9wdHIgeyBudWxscHRyIH07CkBAIC0yMDcsOCArMjA2LDcg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAh
IW1fdmFsdWU7IH0KICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3ZhbHVl
OyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnVuY3Rpb25QdHImIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7IH0KLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgRnVuY3Rpb25QdHImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICE9IG90
aGVyLm1fdmFsdWU7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnVuY3Rpb25QdHImKSBj
b25zdCA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8UHRyVGFnIG90aGVyVGFn
PgpAQCAtMjc2LDI0ICsyNzQsNDUgQEAgcHJpdmF0ZToKIC8vCiAvLyBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgc2hvdWxkIGJlIHVzZWQgdG8gd3JhcCBwb2ludGVycyB0byBKSVQgZ2VuZXJhdGVkIGNv
ZGUuCiBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHJCYXNlIHsKK3B1YmxpYzoKKyAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3ZhbHVlOyB9CisgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhKnRoaXM7IH0KKworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHJCYXNlJikgY29uc3QgPSBkZWZhdWx0Owor
CisgICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IGVtcHR5
VmFsdWUoKTsgfQorICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlID09IGRlbGV0ZWRWYWx1ZSgpOyB9CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyBy
ZXR1cm4gUHRySGFzaDxjb25zdCB2b2lkKj46Omhhc2gobV92YWx1ZSk7IH0KKwogcHJvdGVjdGVk
OgorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ckJhc2UoY29uc3Qgdm9pZCogdmFsdWUgPSBudWxs
cHRyKQorICAgICAgICA6IG1fdmFsdWUgeyB2YWx1ZSB9CisgICAgeworICAgIH0KKwogICAgIHN0
YXRpYyB2b2lkIGR1bXBXaXRoTmFtZSh2b2lkKiBleGVjdXRhYmxlQWRkcmVzcywgdm9pZCogZGF0
YUxvY2F0aW9uLCBjb25zdCBjaGFyKiBuYW1lLCBQcmludFN0cmVhbSYgb3V0KTsKKworICAgIHN0
YXRpYyBjb25zdCB2b2lkKiBlbXB0eVZhbHVlKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMSkpOyB9CisgICAgc3RhdGljIGNvbnN0IHZvaWQqIGRl
bGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KDIpKTsgfQorCisgICAgY29uc3Qgdm9pZCogbV92YWx1ZSB7IG51bGxwdHIgfTsKIH07
CiAKLS8vIEZJWE1FOiBNYWtlIEpTQyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgaW5qZXJpdCBmcm9t
IE1ldGFBbGxvY2F0b3JQdHIuCisvLyBGSVhNRTogTWFrZSBKU0MgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGluaGVyaXQgZnJvbSBNZXRhQWxsb2NhdG9yUHRyLgogLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTE0NQogdGVtcGxhdGU8UHRyVGFnIHRhZz4KLWNsYXNz
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciA6IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyQmFz
ZSB7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyQmFzZSB7CiBwdWJsaWM6CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkgPSBkZWZh
dWx0OwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cihzdGQ6Om51bGxwdHJfdCkgOiBtX3ZhbHVl
KG51bGxwdHIpIHsgfQorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cihzdGQ6Om51bGxwdHJfdCkg
eyB9CiAKICAgICBleHBsaWNpdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoY29uc3Qgdm9pZCogdmFs
dWUpCiAjaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIC8vIERlY29yYXRlIHRoZSBwb2ludGVy
IGFzIGEgdGh1bWIgY29kZSBwb2ludGVyLgotICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4odmFsdWUpICsgMSkKKyAgICAgICAgOiBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHJCYXNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHZhbHVlKSArIDEpCiAjZWxz
ZQotICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgICAgIDogTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyQmFzZSh2YWx1ZSkKICNlbmRpZgogICAgIHsKICAgICAgICAgYXNzZXJ0SXNUYWdnZWRXaXRo
PHRhZz4odmFsdWUpOwpAQCAtMzE1LDcgKzMzNCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBl
eHBsaWNpdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoUmV0dXJuQWRkcmVzc1B0ciByYSkKLSAgICAg
ICAgOiBtX3ZhbHVlKHJldGFnQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnLCB0YWc+KHJhLnZh
bHVlKCkpKQorICAgICAgICA6IE1hY3JvQXNzZW1ibGVyQ29kZVB0ckJhc2UocmV0YWdDb2RlUHRy
PFJldHVybkFkZHJlc3NQdHJUYWcsIHRhZz4ocmEudmFsdWUoKSkpCiAgICAgewogICAgICAgICBB
U1NFUlQocmEudW50YWdnZWRWYWx1ZSgpKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsKQEAgLTM2NCwxNyArMzgzLDYgQEAgcHVibGljOgogICAgIH0KICNlbmRp
ZgogCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFt
X3ZhbHVlOwotICAgIH0KLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gISghKnRoaXMpOyB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1
ZSA9PSBvdGhlci5tX3ZhbHVlOwotICAgIH0KLQogICAgIC8vIERpc2FsbG93IGFueSBjYXN0aW5n
IG9wZXJhdGlvbnMgKGV4Y2VwdCBmb3IgYm9vbGVhbnMpLiBJbnN0ZWFkLCB0aGUgY2xpZW50CiAg
ICAgLy8gc2hvdWxkIGJlIGFza2luZyBleGVjdXRhYmxlQWRkcmVzcygpIGV4cGxpY2l0bHkuCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6
OmlzX3NhbWU8VCwgYm9vbD46OnZhbHVlPj4KQEAgLTM5NCwyNSArNDAyLDE0IEBAIHB1YmxpYzoK
ICAgICBlbnVtIERlbGV0ZWRWYWx1ZVRhZyB7IERlbGV0ZWRWYWx1ZSB9OwogICAgIAogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cihFbXB0eVZhbHVlVGFnKQotICAgICAgICA6IG1fdmFsdWUoZW1w
dHlWYWx1ZSgpKQorICAgICAgICA6IE1hY3JvQXNzZW1ibGVyQ29kZVB0ckJhc2UoZW1wdHlWYWx1
ZSgpKQogICAgIHsgfQogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cihEZWxldGVkVmFs
dWVUYWcpCi0gICAgICAgIDogbV92YWx1ZShkZWxldGVkVmFsdWUoKSkKKyAgICAgICAgOiBNYWNy
b0Fzc2VtYmxlckNvZGVQdHJCYXNlKGRlbGV0ZWRWYWx1ZSgpKQogICAgIHsgfQogICAgIAotICAg
IGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBlbXB0eVZhbHVl
KCk7IH0KLSAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9
PSBkZWxldGVkVmFsdWUoKTsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJu
IFB0ckhhc2g8Y29uc3Qgdm9pZCo+OjpoYXNoKG1fdmFsdWUpOyB9Ci0KICAgICBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplKCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IHZvaWQqIGVtcHR5
VmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90
PigxKSk7IH0KLSAgICBzdGF0aWMgY29uc3Qgdm9pZCogZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4g
Yml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMikpOyB9Ci0KLSAgICBj
b25zdCB2b2lkKiBtX3ZhbHVlIHsgbnVsbHB0ciB9OwogfTsKIAogdGVtcGxhdGU8UHRyVGFnIHRh
Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nhc2VDb2xsZWN0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYXNlQ29sbGVjdGlvbi5oCmluZGV4IGM0
NWNjNjQxZDgwZWE1NjFkOTkwZGI3ZWM2ZDExYTdkOTIyZWJhNzguLjY3ZDE2OTQyNDlmZmY5NGI5
MGQwYWRkNjlkYmQ0NDgwMjZjNGRkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Nhc2VDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q2FzZUNvbGxlY3Rpb24uaApAQCAtODksMTEgKzg5LDYgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQogCi0gICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCiAgICAgcHJp
dmF0ZToKICAgICAgICAgY29uc3QgQ2FzZUNvbGxlY3Rpb24qIG1fY29sbGVjdGlvbjsKICAgICAg
ICAgdW5zaWduZWQgbV9pbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NoZWNrU3BlY2lhbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVj
aWFsLmgKaW5kZXggODBkZjAwNDM1M2E2YWI0OWI0YWJhYjFhNjdlMWY5ZjE3MDY5ZjU1MC4uYTA3
NDkyMDAwZDY2MmEzZWY2NDQwZjhhNmVmMWI3ZDM4MmY0OGFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmgKQEAgLTY4LDE3ICs2OCw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICBleHBsaWNpdCBLZXkoY29uc3QgQWlyOjpJbnN0Jik7CiAKLSAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEtleSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBtX2tpbmQgPT0gb3RoZXIubV9raW5kCi0gICAgICAgICAgICAgICAgJiYgbV9udW1B
cmdzID09IG90aGVyLm1fbnVtQXJncwotICAgICAgICAgICAgICAgICYmIG1fc3RhY2ttYXBSb2xl
ID09IG90aGVyLm1fc3RhY2ttYXBSb2xlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEtleSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgS2V5JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBLZXkoKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCmluZGV4IGUwZGJmYTcyNGM4MGEzY2UxNzgxY2FjMmE5
M2ZlZGIzNjYzYTJhNjUuLmNjZDEyZGM0ZWM3MzEwMzExMDY4OTMyOWU1N2Q1ZjQwOGJhZjdlM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCkBAIC04NSwyNSArODUsNiBA
QCBib29sIEVmZmVjdHM6OmludGVyZmVyZXMoY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0CiAg
ICAgICAgIHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9CiAKLWJvb2wgRWZmZWN0czo6b3Bl
cmF0b3I9PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gdGVybWlu
YWwgPT0gb3RoZXIudGVybWluYWwKLSAgICAgICAgJiYgZXhpdHNTaWRld2F5cyA9PSBvdGhlci5l
eGl0c1NpZGV3YXlzCi0gICAgICAgICYmIGNvbnRyb2xEZXBlbmRlbnQgPT0gb3RoZXIuY29udHJv
bERlcGVuZGVudAotICAgICAgICAmJiB3cml0ZXNMb2NhbFN0YXRlID09IG90aGVyLndyaXRlc0xv
Y2FsU3RhdGUKLSAgICAgICAgJiYgcmVhZHNMb2NhbFN0YXRlID09IG90aGVyLnJlYWRzTG9jYWxT
dGF0ZQotICAgICAgICAmJiB3cml0ZXNQaW5uZWQgPT0gb3RoZXIud3JpdGVzUGlubmVkCi0gICAg
ICAgICYmIHJlYWRzUGlubmVkID09IG90aGVyLnJlYWRzUGlubmVkCi0gICAgICAgICYmIHdyaXRl
cyA9PSBvdGhlci53cml0ZXMKLSAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKLSAgICAg
ICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7Ci19Ci0KLWJvb2wgRWZmZWN0czo6b3BlcmF0b3Ih
PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Ci19Ci0KIHZvaWQgRWZmZWN0czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewogICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZm
ZWN0cy5oCmluZGV4IGE1YjY0MDE5YzBhZjY0MzAzZDI3NGIyMWE3YTlkMGM4YzM5Y2I1OTcuLjJh
OTg3NTlkNDVlMGEzYWQxMDU5MWVlNmM2ZWZhMzUwZGYyZmVkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNFZmZlY3RzLmgKQEAgLTExOCw4ICsxMTgsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAg
ICAgLy8gYmVoYXZpb3IgaW4gYW4gb2JzZXJ2YWJsZSB3YXkuCiAgICAgYm9vbCBpbnRlcmZlcmVz
KGNvbnN0IEVmZmVjdHMmKSBjb25zdDsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IG9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYpIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEVmZmVjdHMmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jay5oCmluZGV4IDFj
NWU3NWNmZThiNjNmM2M3Mzk0NThjOGM1NTMxMWEzNGU1ZmVkZGUuLjZkZmZjMTE0ZjEyNGRhYWI3
MDdhYzQ4Y2M0YzlkMGMxOTZkMjAzZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmgKQEAgLTQ1LDE2ICs0NSw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdlbmVyaWNGcmVx
dWVudGVkQmxvY2smIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmxvY2sg
PT0gb3RoZXIubV9ibG9jawotICAgICAgICAgICAgJiYgbV9mcmVxdWVuY3kgPT0gb3RoZXIubV9m
cmVxdWVuY3k7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdlbmVyaWNGcmVx
dWVudGVkQmxvY2smIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2VuZXJpY0ZyZXF1
ZW50ZWRCbG9jayYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJv
b2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0tpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0tpbmQuaAppbmRleCA2OTJhZjQ4
OWI3M2Y1ODA2ZDcwODZlZWQ1Yzc1NWVkYWE0YmMyODRmLi5iN2I4YWMwM2U4MGYwMmIxYmM2ZTRk
ZWM5OWM3OWY3Mjk5NzJmZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzS2luZC5oCkBAIC02OSwx
MiArNjksMTIgQEAgcHVibGljOgogICAgICAgICA6IEtpbmQoT29wcykKICAgICB7CiAgICAgfQot
ICAgIAorCiAgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bjb2RlOyB9CiAg
ICAgdm9pZCBzZXRPcGNvZGUoT3Bjb2RlIG9wY29kZSkgeyBtX29wY29kZSA9IG9wY29kZTsgfQot
ICAgIAorCiAgICAgYm9vbCBoYXNFeHRyYUJpdHMoKSBjb25zdCB7IHJldHVybiBtX2lzQ2hpbGwg
fHwgbV90cmFwczsgfQotICAgIAorCiAgICAgLy8gQ2hpbGwgYml0LiBUaGlzIGFwcGxpZXMgdG8g
ZGl2aXNpb24tYmFzZWQgYXJpdGhtZXRpYyBvcHMsIHdoaWNoIG1heSB0cmFwIG9uIHNvbWUKICAg
ICAvLyBwbGF0Zm9ybXMgb3IgZXhoaWJpdCBiaXphcnJlIGJlaGF2aW9yIHdoZW4gcGFzc2VkIGNl
cnRhaW4gaW5wdXRzLiBUaGUgbm9uLWNoaWxsCiAgICAgLy8gdmVyc2lvbiB3aWxsIGJlaGF2ZSBh
cyB1bnByZWRpY3RhYmx5IGFzIGl0IHdhbnRzLiBGb3IgZXhhbXBsZSwgaXQncyBsZWdhbCB0bwpA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGhhc0lzQ2hpbGwoKSk7
CiAgICAgICAgIG1faXNDaGlsbCA9IGlzQ2hpbGw7CiAgICAgfQotICAgIAorCiAgICAgLy8gVHJh
cHMgYml0LiBUaGlzIGFwcGxpZXMgdG8gbWVtb3J5IGFjY2VzcyBvcHMuIEl0IG1lYW5zIHRoYXQg
dGhlIGluc3RydWN0aW9uIGNvdWxkCiAgICAgLy8gdHJhcCBhcyBwYXJ0IG9mIHNvbWUgY2hlY2sg
aXQgcGVyZm9ybXMsIGFuZCB0aGF0IHdlIG1lYW4gdG8gbWFrZSB0aGlzIG9ic2VydmFibGUuIFRo
aXMKICAgICAvLyBjdXJyZW50bHkgb25seSBhcHBsaWVzIHRvIG1lbW9yeSBhY2Nlc3NlcyAobG9h
ZHMgYW5kIHN0b3JlcykuIFlvdSBkb24ndCBnZXQgdG8gZmluZCBvdXQgd2hlcmUKQEAgLTE0OCw3
ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChoYXNUcmFwcygpKTsKICAgICAgICAg
bV90cmFwcyA9IHRyYXBzOwogICAgIH0KLSAgICAKKwogICAgIC8vIFJ1bGVzIGZvciBhZGRpbmcg
bmV3IHByb3BlcnRpZXM6CiAgICAgLy8gLSBQdXQgdGhlIGFjY2Vzc29ycyBoZXJlLgogICAgIC8v
IC0gaGFzQmxhaCgpIHNob3VsZCBjaGVjayBpZiB0aGUgb3Bjb2RlIGFsbG93cyBmb3IgeW91ciBw
cm9wZXJ0eS4KQEAgLTE1NywzOSArMTU3LDI5IEBAIHB1YmxpYzoKICAgICAvLyAtIFRyeSBub3Qg
dG8gaW5jcmVhc2UgdGhlIHNpemUgb2YgS2luZCB0b28gbXVjaC4gQnV0IGl0IHdvdWxkbid0IGJl
IHRoZSBlbmQgb2YgdGhlCiAgICAgLy8gICB3b3JsZCBpZiBpdCBibG9hdGVkIHRvIDY0IGJpdHMu
CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtpbmQmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fb3Bjb2RlID09IG90aGVyLm1fb3Bjb2RlCi0gICAgICAgICAg
ICAmJiBtX2lzQ2hpbGwgPT0gb3RoZXIubV9pc0NoaWxsCi0gICAgICAgICAgICAmJiBtX3RyYXBz
ID09IG90aGVyLm1fdHJhcHM7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBLaW5kJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKLSAgICB9Ci0gICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtpbmQmKSBjb25z
dCA9IGRlZmF1bHQ7CisKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLSAgICAK
KwogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKICAgICAgICAgLy8gSXQncyBhbG1v
c3QgY2VydGFpbmx5IG1vcmUgaW1wb3J0YW50IHRoYXQgdGhpcyBoYXNoIGZ1bmN0aW9uIGlzIGNo
ZWFwIHRvIGNvbXB1dGUgdGhhbgogICAgICAgICAvLyBhbnl0aGluZyBlbHNlLiBXZSBjYW4gbGl2
ZSB3aXRoIHNvbWUga2luZCBoYXNoIGNvbGxpc2lvbnMuCiAgICAgICAgIHJldHVybiBtX29wY29k
ZSArIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9pc0NoaWxsKSA8PCAxNikgKyAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fdHJhcHMpIDw8IDcpOwogICAgIH0KLSAgICAKKwogICAgIEtpbmQoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAgICAgICA6IG1fb3Bjb2RlKE9vcHMpCiAg
ICAgICAgICwgbV9pc0NoaWxsKHRydWUpCiAgICAgICAgICwgbV90cmFwcyhmYWxzZSkKICAgICB7
CiAgICAgfQotICAgIAorCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gKnRoaXMgPT0gS2luZChXVEY6Okhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSk7CiAgICAgfQotICAgIAorCiBwcml2YXRlOgogICAgIE9wY29kZSBtX29wY29kZTsK
ICAgICBib29sIG1faXNDaGlsbCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQaGlDaGlsZHJlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGhpQ2hp
bGRyZW4uaAppbmRleCA5NTIwNTU0YjY5OGFhZDk2ZmI4M2U3NGI4NmM0MjEzZDM5M2E5MmNiLi5i
ZWE5NDFiOGEzNWRkNWU4YWM2Y2RkNzgzZmNjZDc2MTU2NjFmOTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQaGlDaGlsZHJlbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1BoaUNoaWxkcmVuLmgKQEAgLTg1LDExICs4NSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAg
VmVjdG9yPFVwc2lsb25WYWx1ZSo+KiBtX3ZhbHVlczsKICAgICAgICAgICAgIHVuc2lnbmVkIG1f
aW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xs
ZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgK
aW5kZXggNDk1Yjk0ZGI5YzU3MDZmM2U4YzA3MTY2MmUwNDNiZTRhNjcyNTFlZC4uODdlZTAzNmFh
NjEyN2JkOWFkMmUzZGExMTBlMDVmYjcxYzliMzM2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaApAQCAtMTU0LDExICsxNTQsNiBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgICAgICB9
CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAg
ICB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU3BhcnNlQ29sbGVjdGlv
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oCmluZGV4IDg3
ZjAwOWQ0OTAxMWU3OGFjYjAwNzIyMjMzOGZkN2YwY2I1NDNhODkuLjcxMzEwNjU0NDk5MDYwNmYw
ODc2N2I1MjRkYjk5N2M0ZWI5ZDE0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNT
dGFja21hcFZhbHVlLmgKQEAgLTI3MywxMSArMjczLDYgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAg
ICBjb25zdCBDb25zdHJhaW5lZFZhbHVlQ29sbGVjdGlvbiogbV9jb2xsZWN0aW9uOwogICAgICAg
ICAgICAgdW5zaWduZWQgbV9pbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1N1Y2Nlc3NvckNvbGxlY3Rpb24uaAppbmRleCAwYTdkZjI0N2IwYjhlZTJjZDExZDNlNmI5MjU3
YzhiYTk2ZmU1MzM4Li5iOTM2MTQwMjIzZGY2N2UwOWY0ZmZiMmI4OTcyYzkwYzkxNGEzZmVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdWNjZXNzb3JDb2xsZWN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3VjY2Vzc29yQ29sbGVjdGlvbi5o
CkBAIC03NiwxMSArNzYsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9
PSBvdGhlci5tX2luZGV4OwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBT
dWNjZXNzb3JDb2xsZWN0aW9uKiBtX2NvbGxlY3Rpb247CiAgICAgICAgIHNpemVfdCBtX2luZGV4
OwpAQCAtMTIwLDExICsxMTUsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbV9pbmRl
eCA9PSBvdGhlci5tX2luZGV4OwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0KICAgICBwcml2YXRlOgog
ICAgICAgICBjb25zdCBTdWNjZXNzb3JDb2xsZWN0aW9uKiBtX2NvbGxlY3Rpb247CiAgICAgICAg
IHNpemVfdCBtX2luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCmluZGV4IDkzMjJmODhl
ZDliOTc4NDdmZDRhYTcwZTdlNTkzNTQ3NzA1OWY1NTAuLmNjOWVjNzM2YWIyM2ZhNTc2ZDEyYTk1
OGFhZGI3ZTZjMzI2MDQ3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKQEAgLTcxLDEw
ICs3MSw4IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgYm9vbCBpc051bWVyaWMoKSBjb25zdDsKICAg
ICBpbmxpbmUgYm9vbCBpc1R1cGxlKCkgY29uc3Q7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVHlwZUtpbmQmIG90aGVyS2luZCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IG90aGVyS2lu
ZDsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUeXBlJiB0eXBlKSBjb25zdCB7IHJldHVy
biBtX2tpbmQgPT0gdHlwZS5tX2tpbmQ7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVHlw
ZUtpbmQmIG90aGVyS2luZCkgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcktpbmQpOyB9
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gdHlwZSk7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHlwZSYpIGNvbnN0
ID0gZGVmYXVsdDsKKyAgICBib29sIG9wZXJhdG9yPT0oVHlwZUtpbmQgb3RoZXJLaW5kKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gb3RoZXJLaW5kOyB9CiAKIHByaXZhdGU6CiAgICAgVHlwZUtp
bmQgbV9raW5kIHsgVm9pZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsdWVLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmgKaW5k
ZXggNDZmNDQwYzUyZmQ0ZTBjZTlkZjA5NjU5OGNkNWNjMDZmMzk5NTFhMS4uMTg1N2VlMzY1MWQx
OTI4ZjBiOWUyNTMwNTA3NDVmOGMzZWZlZDBjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZUtleS5oCkBAIC05NywxNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGRvdWJsZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gdS5kb3VibGVWYWx1ZTsgfQogICAgIGZsb2F0IGZsb2F0VmFs
dWUoKSBjb25zdCB7IHJldHVybiB1LmZsb2F0VmFsdWU7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBWYWx1ZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9r
aW5kID09IG90aGVyLm1fa2luZAotICAgICAgICAgICAgJiYgbV90eXBlID09IG90aGVyLm1fdHlw
ZQotICAgICAgICAgICAgJiYgdSA9PSBvdGhlci51OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBWYWx1ZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWYWx1
ZUtleSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oCmluZGV4IDE1N2JjODg2ODIzMTJi
MWExZTlkYTczOWMwODJjMGQ2YzQ3N2QzMjYuLjUxMzA0YjYyM2I4NzI4N2JlMGU0M2NiM2E4NzAx
OTJiNWM2YjNiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
UmVwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaApAQCAtMjEx
LDExICsyMTEsNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgVmFsdWVSZXAmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiBraW5kKCkgIT0gV2FybUFueTsgfQogCiAgICAgYm9vbCBpc0FueSgp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBXYXJtQW55IHx8IGtpbmQoKSA9PSBDb2xkQW55IHx8
IGtpbmQoKSA9PSBMYXRlQ29sZEFueTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9y
aW5nLmNwcAppbmRleCBiMGQyNWQxNmFlNmExOTBmNDViMWIzM2FkZjY4ODQyOTgzYWVmN2NhLi5i
ZTY3OWU3NDUxMGJmNWJmOGQyZmYyNWJkMmE4NTAyMzJmYzg5OTI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9y
aW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVn
aXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcApAQCAtMTQyNywxNSArMTQyNyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgVG1wIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIFRtcE1hcHBlcjo6dG1wRnJv
bUFic29sdXRlSW5kZXgoKm1faW5kZXhJdGVyYXRvcik7IH0KICAgICAgICAgSW5kZXhUb1RtcEl0
ZXJhdG9yQWRhcHRvciYgb3BlcmF0b3IrKygpIHsgKyttX2luZGV4SXRlcmF0b3I7IHJldHVybiAq
dGhpczsgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmRleFRvVG1wSXRlcmF0
b3JBZGFwdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1f
aW5kZXhJdGVyYXRvciA9PSBvdGhlci5tX2luZGV4SXRlcmF0b3I7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5kZXhUb1RtcEl0ZXJhdG9yQWRhcHRvciYgb3Ro
ZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5kZXhUb1RtcEl0
ZXJhdG9yQWRhcHRvciYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IEluZGV4SXRlcmF0b3IgbV9pbmRleEl0ZXJhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmlu
Zy5jcHAKaW5kZXggYzJmMWFlZjI4YTgzMGNmYjUyNGE3MWY1MmUwMmYzM2Q1NTFjYWVkNC4uZWNl
Zjg4NmZkNWFiMzE2ZmM5NzM5ZmJlYzBkMGRjOGU2ZDc1MTQyNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdy
YXBoQ29sb3JpbmcuY3BwCkBAIC0zMTMsMTcgKzMxMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2FsZXNjYWJsZU1v
dmUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3JjID09IG90
aGVyLnNyYwotICAgICAgICAgICAgICAgICYmIGRzdCA9PSBvdGhlci5kc3QKLSAgICAgICAgICAg
ICAgICAmJiBmcmVxdWVuY3kgPT0gb3RoZXIuZnJlcXVlbmN5OwotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvYWxlc2NhYmxlTW92ZSYgb3RoZXIpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAg
fQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29hbGVzY2FibGVNb3ZlJikgY29uc3Qg
PSBkZWZhdWx0OwogCiAgICAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAg
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAppbmRleCBmYmY2NjM3YjI4
NjA3MjlkNTQ3OGZmM2NkZDA0NTM2ODVhYmE0Yzk1Li5lZmNlM2E4ODA2NzI5MTI1ODVjZGYxZmEx
NzA2ZTNhZjdhOTJiZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKQEAg
LTczMyw2ICs3MzMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXJn
JiBvdGhlcikgY29uc3QKICAgICB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgbV9l
eHRlbmQuIElzIHRoYXQgaW50ZW50aW9uYWw/IElmIG5vdCwgd2UgY291bGQgdXNlIGRlZmF1bHQg
aW5zdGVhZCBvZiB3cml0aW5nIHRoaXMgb3V0LgogICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0g
b3RoZXIubV9vZmZzZXQKICAgICAgICAgICAgICYmIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKICAg
ICAgICAgICAgICYmIG1fYmFzZSA9PSBvdGhlci5tX2Jhc2UKQEAgLTc0MCwxMSArNzQxLDYgQEAg
cHVibGljOgogICAgICAgICAgICAgJiYgbV9zY2FsZSA9PSBvdGhlci5tX3NjYWxlOwogICAgIH0K
IAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBcmcmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBBcmcoKTsgfQogCiAgICAgS2lu
ZCBraW5kKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKaW5kZXgg
ZWIxMjkzYmM4MjBkZTNjZTBhMjZiNGYwNmY5YjE5MWM5OGEzOTc2MS4uMjc2NmY2ZDRiNzdmOWM2
NDZkODhjNWYxOTEwMzM1MWZmZTY1YjZhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDb2RlLmgKQEAgLTI4MSwxMSArMjgxLDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
IG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgY29uc3QgQ29kZSogbV9jb2RlOwogICAgICAgICB1bnNpZ25lZCBtX2luZGV4Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3Bp
bGxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxs
cy5jcHAKaW5kZXggNzdhZmQ4ODUzYjZiNzE3ZTdkZTYzYjlkYjZiNDk3YmRlYzkyNTZlOC4uYjlh
YjU5ZmEwNzUwOGE1ZGI3N2ZiMWM2NGVmZmQ1NDlkMjM3NGNiMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCkBAIC0zNDks
MTYgKzM0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gISFyZWc7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWdDb25zdCYgb3Ro
ZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWcgPT0gb3RoZXIucmVn
Ci0gICAgICAgICAgICAgICAgJiYgY29uc3RhbnQgPT0gb3RoZXIuY29uc3RhbnQ7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBSZWdDb25zdCYgb3RoZXIpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWcgPCBvdGhlci5yZWcgfHwgKHJlZyA9
PSBvdGhlci5yZWcgJiYgY29uc3RhbnQgPCBvdGhlci5jb25zdGFudCk7Ci0gICAgICAgIH0KKyAg
ICAgICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oUmVnQ29uc3QsIFJlZ0NvbnN0KSA9IGRlZmF1
bHQ7CiAKICAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAg
IHsKQEAgLTM5MiwxMiArMzgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBzbG90
ICYmIHJlZzsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJlZ1Nsb3QmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
c2xvdCA9PSBvdGhlci5zbG90Ci0gICAgICAgICAgICAgICAgJiYgcmVnID09IG90aGVyLnJlZwot
ICAgICAgICAgICAgICAgICYmIG1vZGUgPT0gb3RoZXIubW9kZTsKLSAgICAgICAgfQorICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnU2xvdCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAg
ICAgICBib29sIG9wZXJhdG9yPChjb25zdCBSZWdTbG90JiBvdGhlcikgY29uc3QKICAgICAgICAg
ewpAQCAtNDQyLDE2ICs0MjgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHNsb3Q7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTbG90
Q29uc3QmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc2xvdCA9
PSBvdGhlci5zbG90Ci0gICAgICAgICAgICAgICAgJiYgY29uc3RhbnQgPT0gb3RoZXIuY29uc3Rh
bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBTbG90Q29uc3Qm
IG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc2xvdCA8IG90aGVy
LnNsb3QgfHwgKHNsb3QgPT0gb3RoZXIuc2xvdCAmJiBjb25zdGFudCA8IG90aGVyLmNvbnN0YW50
KTsKLSAgICAgICAgfQorICAgICAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihTbG90Q29uc3Qs
IFNsb3RDb25zdCkgPSBkZWZhdWx0OwogCiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpcktpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyS2luZC5o
CmluZGV4IDEyNThkNGVlMTM1OGQ4MjQ3ZjY3YjJkN2UxOGJhNTRmMTczOGZmNGIuLjYwZDRkNTg1
ZGIzNWEwYWEyMDgzNDJiODljMTE1MGIzMmE1MjdmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyS2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyS2luZC5oCkBAIC01MSwxNiArNTEsNyBAQCBzdHJ1Y3QgS2luZCB7CiAgICAgewog
ICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgS2luZCYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gb3Bjb2RlID09IG90aGVyLm9wY29kZQotICAgICAgICAg
ICAgJiYgZWZmZWN0cyA9PSBvdGhlci5lZmZlY3RzOwotICAgIH0KLSAgICAKLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgS2luZCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLaW5k
JikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcC5oCmluZGV4IDFlYzBmMzYyMjQxOTBm
Yzk2MGMzY2RkZmRiNzc2ZTU5NTZiOWVhMjcuLjZmZDU0YTRlYzAyNTNhZTUwZWIxZDNmZjE1ZTVl
MWU4ZDMzZDhiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
VG1wLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXAuaApAQCAtMTg1
LDE1ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhISp0aGlzOwogICAgIH0KIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUbXAmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKLSAgICB9Ci0KLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgVG1wJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRtcCYp
IGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBTZXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wU2V0LmgKaW5kZXggMTZkZDVj
OWM3YmU1M2U1NWE4NjhiMDFiYjRhNzZkMjUzODg5MDVlNC4uZGU0NWZjZDI5NzI0ZjBlMGRjMTJj
OWI5NmRiZWQzNzljYjY1ZGE0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJUbXBTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRt
cFNldC5oCkBAIC05OCwxNiArOTgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBp
dGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2dw
SXRlciA9PSBvdGhlci5tX2dwSXRlcgotICAgICAgICAgICAgICAgICYmIG1fZnBJdGVyID09IG90
aGVyLm1fZnBJdGVyOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IGl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0OwogICAgICAgICAKICAgICBwcml2
YXRlOgogICAgICAgICBCaXRWZWN0b3I6Oml0ZXJhdG9yIG1fZ3BJdGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggZmUxY2ZmYmM2NTk4NWU4YzE0
NzlhMmNiNTM0YTJmMzg4OGY3NTNhNi4uMmVlOWFkNmIxYmMwNDNiNTA0MTNhZGY5ZDg3ZjZmNDFj
M2FmMzJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5o
CkBAIC0zODIsMTYgKzM4Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZCA9PSBiaXR3aXNlX2Nh
c3Q8UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oMSkpOyB9CiAKLSAgICAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5
JiBhLCBjb25zdCBLZXkmIGIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGEubV93cmFwcGVkID09IGIubV93cmFwcGVkCi0gICAgICAgICAgICAgICAgICAgICYmIGEubV9i
YXNlR1BSID09IGIubV9iYXNlR1BSCi0gICAgICAgICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQ
UiA9PSBiLm1fdmFsdWVHUFIKLSAgICAgICAgICAgICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09
IGIubV9leHRyYUdQUgotICAgICAgICAgICAgICAgICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0g
Yi5tX3N0dWJJbmZvR1BSCi0gICAgICAgICAgICAgICAgICAgICYmIGEubV9hcnJheVByb2ZpbGVH
UFIgPT0gYi5tX2FycmF5UHJvZmlsZUdQUgotICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdXNl
ZFJlZ2lzdGVycyA9PSBiLm1fdXNlZFJlZ2lzdGVyczsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXkmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICAg
ICAgICAgIFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUqIG1fd3JhcHBlZCB7IG51bGxw
dHIgfTsKICAgICAgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbmRleC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW5kZXguaAppbmRleCBhODRiZGExNmVmYjdjYjdjMzI1
YWM2YzIwN2IwOTA3M2MxODIzMDgzLi44ZTI0ZTY3NjJkM2Q0ODJmODkxYzc0MWJhYjQyZjQwMDNh
YjVjZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVJbmRleC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUlu
ZGV4LmgKQEAgLTY5LDE0ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENvbXBhcmlzb24gb3Bl
cmF0b3JzLgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3Bh
Y2tlZEJpdHMgIT0gaW52YWxpZE9mZnNldCAmJiBtX3BhY2tlZEJpdHMgIT0gZGVsZXRlZFZhbHVl
KCkub2Zmc2V0KCk7IH0KLSAgICBib29sIG9wZXJhdG9yID09KGNvbnN0IEJ5dGVjb2RlSW5kZXgm
IG90aGVyKSBjb25zdCB7IHJldHVybiBhc0JpdHMoKSA9PSBvdGhlci5hc0JpdHMoKTsgfQotICAg
IGJvb2wgb3BlcmF0b3IgIT0oY29uc3QgQnl0ZWNvZGVJbmRleCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KLSAgICBib29sIG9wZXJhdG9yIDwoY29uc3QgQnl0
ZWNvZGVJbmRleCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGFzQml0cygpIDwgb3RoZXIuYXNCaXRz
KCk7IH0KLSAgICBib29sIG9wZXJhdG9yID4oY29uc3QgQnl0ZWNvZGVJbmRleCYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIGFzQml0cygpID4gb3RoZXIuYXNCaXRzKCk7IH0KLSAgICBib29sIG9wZXJh
dG9yIDw9KGNvbnN0IEJ5dGVjb2RlSW5kZXgmIG90aGVyKSBjb25zdCB7IHJldHVybiBhc0JpdHMo
KSA8PSBvdGhlci5hc0JpdHMoKTsgfQotICAgIGJvb2wgb3BlcmF0b3IgPj0oY29uc3QgQnl0ZWNv
ZGVJbmRleCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGFzQml0cygpID49IG90aGVyLmFzQml0cygp
OyB9Ci0KKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihCeXRlY29kZUluZGV4LCBCeXRlY29k
ZUluZGV4KSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVSZXdyaXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3
cml0ZXIuaAppbmRleCA4OTBhYjIzYzAwMGRhZGJhYWQ4ZGI0YzYzZWVlMjVhZTU1YjhkYjA3Li5h
N2U4ZGEyOTIwNGRkOGEyY2I3YjJhYjEzOTcxZDg1YzBiOTlmNmM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKQEAgLTk1LDI2ICs5
NSw5IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RydWN0IEluc2VydGlvblBvaW50IHsKLSAg
ICAgICAgaW50MzJfdCBieXRlY29kZU9mZnNldDsKKyAgICAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQ7CiAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uOwotCi0gICAgICAgIEluc2VydGlvblBv
aW50KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0LCBQb3NpdGlvbiBwb3MpCi0gICAg
ICAgICAgICA6IGJ5dGVjb2RlT2Zmc2V0KG9mZnNldCkKLSAgICAgICAgICAgICwgcG9zaXRpb24o
cG9zKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPChjb25z
dCBJbnNlcnRpb25Qb2ludCYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChieXRlY29kZU9mZnNldCA9PSBvdGhlci5ieXRlY29kZU9mZnNldCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb24gPCBvdGhlci5wb3NpdGlvbjsKLSAgICAgICAgICAgIHJldHVybiBi
eXRlY29kZU9mZnNldCA8IG90aGVyLmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEluc2VydGlvblBvaW50JiBvdGhlcikgY29uc3QKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID09IG90aGVyLmJ5dGVj
b2RlT2Zmc2V0ICYmIHBvc2l0aW9uID09IG90aGVyLnBvc2l0aW9uOwotICAgICAgICB9CisgICAg
ICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KEluc2VydGlvblBvaW50LCBJbnNlcnRpb25Qb2lu
dCkgPSBkZWZhdWx0OwogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xODksNyArMTcyLDcgQEAgcHVi
bGljOgogICAgICAgICBGcmFnbWVudCBmcmFnbWVudChtX2J5dGVjb2RlR2VuZXJhdG9yLCB3cml0
ZXIsIGluY2x1ZGVCcmFuY2gpOwogICAgICAgICBmdW5jdGlvbihmcmFnbWVudCk7CiAgICAgICAg
IGZyYWdtZW50LmFsaWduKCk7Ci0gICAgICAgIGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQoaW5z
dHJ1Y3Rpb24ub2Zmc2V0KCksIFBvc2l0aW9uOjpCZWZvcmUpLCBpbmNsdWRlQnJhbmNoLCBXVEZN
b3ZlKHdyaXRlcikpOworICAgICAgICBpbnNlcnRJbXBsKHsgaW5zdHJ1Y3Rpb24ub2Zmc2V0KCks
IFBvc2l0aW9uOjpCZWZvcmUgfSwgaW5jbHVkZUJyYW5jaCwgV1RGTW92ZSh3cml0ZXIpKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KQEAgLTIwMCwxMiArMTgzLDEyIEBA
IHB1YmxpYzoKICAgICAgICAgRnJhZ21lbnQgZnJhZ21lbnQobV9ieXRlY29kZUdlbmVyYXRvciwg
d3JpdGVyLCBpbmNsdWRlQnJhbmNoKTsKICAgICAgICAgZnVuY3Rpb24oZnJhZ21lbnQpOwogICAg
ICAgICBmcmFnbWVudC5hbGlnbigpOwotICAgICAgICBpbnNlcnRJbXBsKEluc2VydGlvblBvaW50
KGluc3RydWN0aW9uLm9mZnNldCgpLCBQb3NpdGlvbjo6QWZ0ZXIpLCBpbmNsdWRlQnJhbmNoLCBX
VEZNb3ZlKHdyaXRlcikpOworICAgICAgICBpbnNlcnRJbXBsKHsgaW5zdHJ1Y3Rpb24ub2Zmc2V0
KCksIFBvc2l0aW9uOjpBZnRlciB9LCBpbmNsdWRlQnJhbmNoLCBXVEZNb3ZlKHdyaXRlcikpOwog
ICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlQnl0ZWNvZGUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06
OlJlZiYgaW5zdHJ1Y3Rpb24pCiAgICAgewotICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKElu
c2VydGlvbiB7IEluc2VydGlvblBvaW50KGluc3RydWN0aW9uLm9mZnNldCgpLCBQb3NpdGlvbjo6
T3JpZ2luYWxCeXRlY29kZVBvaW50KSwgSW5zZXJ0aW9uOjpUeXBlOjpSZW1vdmUsIEluY2x1ZGVC
cmFuY2g6Ok5vLCBpbnN0cnVjdGlvbi0+c2l6ZSgpLCB7IH0gfSk7CisgICAgICAgIG1faW5zZXJ0
aW9ucy5hcHBlbmQoSW5zZXJ0aW9uIHsgeyBpbnN0cnVjdGlvbi5vZmZzZXQoKSwgUG9zaXRpb246
Ok9yaWdpbmFsQnl0ZWNvZGVQb2ludCB9LCBJbnNlcnRpb246OlR5cGU6OlJlbW92ZSwgSW5jbHVk
ZUJyYW5jaDo6Tm8sIGluc3RydWN0aW9uLT5zaXplKCksIHsgfSB9KTsKICAgICB9CiAKICAgICB2
b2lkIGV4ZWN1dGUoKTsKQEAgLTIxNCwxMiArMTk3LDEyIEBAIHB1YmxpYzoKIAogICAgIGludDMy
X3QgYWRqdXN0QWJzb2x1dGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBhYnNvbHV0
ZU9mZnNldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZGp1c3RKdW1wVGFyZ2V0KEluc2VydGlv
blBvaW50KDAsIFBvc2l0aW9uOjpFbnRyeVBvaW50KSwgSW5zZXJ0aW9uUG9pbnQoYWJzb2x1dGVP
ZmZzZXQsIFBvc2l0aW9uOjpMYWJlbFBvaW50KSk7CisgICAgICAgIHJldHVybiBhZGp1c3RKdW1w
VGFyZ2V0KHsgMCwgUG9zaXRpb246OkVudHJ5UG9pbnQgfSwgeyBhYnNvbHV0ZU9mZnNldCwgUG9z
aXRpb246OkxhYmVsUG9pbnQgfSk7CiAgICAgfQogCi0gICAgaW50MzJfdCBhZGp1c3RKdW1wVGFy
Z2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3JpZ2luYWxCeXRlY29kZU9mZnNldCwgaW50
MzJfdCBvcmlnaW5hbEp1bXBUYXJnZXQpCisgICAgaW50MzJfdCBhZGp1c3RKdW1wVGFyZ2V0KElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3JpZ2luYWxCeXRlY29kZU9mZnNldCwgdWludDMyX3Qg
b3JpZ2luYWxKdW1wVGFyZ2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkanVzdEp1bXBUYXJn
ZXQoSW5zZXJ0aW9uUG9pbnQob3JpZ2luYWxCeXRlY29kZU9mZnNldCwgUG9zaXRpb246OkxhYmVs
UG9pbnQpLCBJbnNlcnRpb25Qb2ludChvcmlnaW5hbEp1bXBUYXJnZXQsIFBvc2l0aW9uOjpMYWJl
bFBvaW50KSk7CisgICAgICAgIHJldHVybiBhZGp1c3RKdW1wVGFyZ2V0KHsgb3JpZ2luYWxCeXRl
Y29kZU9mZnNldCwgUG9zaXRpb246OkxhYmVsUG9pbnQgfSwgeyBvcmlnaW5hbEp1bXBUYXJnZXQs
IFBvc2l0aW9uOjpMYWJlbFBvaW50IH0pOwogICAgIH0KIAogICAgIHZvaWQgYWRqdXN0SnVtcFRh
cmdldHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
VmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgK
aW5kZXggMzkyODBlOWZhZmNjMTNhYjg4OWZjNTg2Y2UzMDAzYmU2MGRmZDVjYS4uOTAzN2FkZjQw
MGIxYjc5MTMxZDkyNzkzZWNmZDNkNjVjMGYxZGQyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKQEAgLTY3LDE0ICs2NywxNCBAQCBwdWJsaWM6CiAg
ICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBDYWxs
VmFyaWFudChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAgICAgIDogbV9jYWxs
ZWUoZGVsZXRlZFRva2VuKCkpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbGVlOyB9Ci0gICAgCisKICAgICAv
LyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5nZSBpdCB0byByZWZl
ciB0byBpdHMgZXhlY3V0YWJsZS4KICAgICBBTFdBWVNfSU5MSU5FIENhbGxWYXJpYW50IGRlc3Bl
Y2lmaWVkQ2xvc3VyZSgpIGNvbnN0CiAgICAgewpAQCAtODIsNDEgKzgyLDQxIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiBDYWxsVmFyaWFudChqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2Fs
bGVlKS0+ZXhlY3V0YWJsZSgpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KLSAgICAK
KwogICAgIEpTQ2VsbCogcmF3Q2FsbGVlQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlOyB9
Ci0gICAgCisKICAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEludGVybmFsRnVuY3Rpb24qPiht
X2NhbGxlZS0+dm0oKSwgbV9jYWxsZWUpOwogICAgIH0KLSAgICAKKwogICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
RnVuY3Rpb24qPihtX2NhbGxlZS0+dm0oKSwgbV9jYWxsZWUpOwogICAgIH0KLSAgICAKKwogICAg
IGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJuICEhanNEeW5hbWljQ2FzdDxFeGVj
dXRhYmxlQmFzZSo+KG1fY2FsbGVlLT52bSgpLCBtX2NhbGxlZSk7IH0KLSAgICAKKwogICAgIEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IHRoaXMtPmZ1bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RXhl
Y3V0YWJsZUJhc2UqPihtX2NhbGxlZS0+dm0oKSwgbV9jYWxsZWUpOwogICAgIH0KLSAgICAKKwog
ICAgIEpTQ2VsbCogbm9uRXhlY3V0YWJsZUNhbGxlZSgpIGNvbnN0CiAgICAgewogICAgICAgICBS
RUxFQVNFX0FTU0VSVCghaXNDbG9zdXJlQ2FsbCgpKTsKICAgICAgICAgcmV0dXJuIG1fY2FsbGVl
OwogICAgIH0KLSAgICAKKwogICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGV4
ZWN1dGFibGUtPmludHJpbnNpY0ZvcihraW5kKTsKICAgICAgICAgcmV0dXJuIE5vSW50cmluc2lj
OwogICAgIH0KLSAgICAKKwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJs
ZSA9IHRoaXMtPmV4ZWN1dGFibGUoKSkKQEAgLTEzNyw1MCArMTM3LDIyIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlLT5zaWduYXR1cmVGb3Ioa2luZCk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgZmluYWxpemUo
Vk0mKTsKLSAgICAKKwogICAgIGJvb2wgbWVyZ2UoY29uc3QgQ2FsbFZhcmlhbnQmKTsKLSAgICAK
KwogICAgIHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7Ci0gICAgCisKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0gICAgCisKICAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBkZWxl
dGVkVG9rZW4oKTsKICAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxW
YXJpYW50JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBv
dGhlci5tX2NhbGxlZTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENh
bGxWYXJpYW50JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQ2FsbFZhcmlh
bnQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY2FsbGVlIDwgb3RoZXIu
bV9jYWxsZWU7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IENhbGxWYXJp
YW50JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBvdGhlciA8ICp0aGlzOwot
ICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPCBvdGhlcik7Ci0gICAgfQot
ICAgIAotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gb3RoZXIgPD0gKnRoaXM7Ci0gICAgfQotICAgIAorCisg
ICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oQ2FsbFZhcmlhbnQsIENhbGxWYXJpYW50KSA9IGRl
ZmF1bHQ7CisKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBXVEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2gobV9jYWxsZWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0hhc2guaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmgKaW5kZXggYjgyOGZlODA4YjVkNmI3
NmFkMDBlMzc2MzUwYTQyMzEzMTRkODYyNi4uYzE5YzE5YWU4NWVjNjY1OGYzYjBhYzQ3NzUyMDI5
YWExNDk4NDczZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9ja0hhc2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrSGFzaC5oCkBAIC00MiwzNSArNDIsMjUgQEAgY2xhc3MgU291cmNlQ29kZTsKIAogY2xhc3Mg
Q29kZUJsb2NrSGFzaCB7CiBwdWJsaWM6Ci0gICAgQ29kZUJsb2NrSGFzaCgpCi0gICAgICAgIDog
bV9oYXNoKDApCi0gICAgewotICAgIH0KLSAgICAKLSAgICBleHBsaWNpdCBDb2RlQmxvY2tIYXNo
KHVuc2lnbmVkIGhhc2gpCisgICAgZXhwbGljaXQgQ29kZUJsb2NrSGFzaCh1bnNpZ25lZCBoYXNo
ID0gMCkKICAgICAgICAgOiBtX2hhc2goaGFzaCkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAg
Q29kZUJsb2NrSGFzaChjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7
Ci0gICAgCisKICAgICBleHBsaWNpdCBDb2RlQmxvY2tIYXNoKGNvbnN0IGNoYXIqKTsKIAogICAg
IGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1faGFzaDsgfQogICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KLSAgICAKKwogICAgIHVuc2lnbmVkIGhh
c2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KLSAgICAKKwogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwotICAgIAotICAgIC8vIENvbXBhcmlzb24gbWV0aG9kcyB1c2VmdWwg
Zm9yIGJpc2VjdGlvbi4KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZUJsb2NrSGFzaCYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhhc2goKSA9PSBvdGhlci5oYXNoKCk7IH0KLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgQ29kZUJsb2NrSGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhh
c2goKSAhPSBvdGhlci5oYXNoKCk7IH0KLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBDb2RlQmxv
Y2tIYXNoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gaGFzaCgpIDwgb3RoZXIuaGFzaCgpOyB9Ci0g
ICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgQ29kZUJsb2NrSGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIGhhc2goKSA+IG90aGVyLmhhc2goKTsgfQotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBD
b2RlQmxvY2tIYXNoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gaGFzaCgpIDw9IG90aGVyLmhhc2go
KTsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBDb2RlQmxvY2tIYXNoJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gaGFzaCgpID49IG90aGVyLmhhc2goKTsgfQotICAgIAorCisgICAgLy8gQ29t
cGFyaXNvbiBmdW5jdGlvbnMgdXNlZnVsIGZvciBiaXNlY3Rpb24uCisgICAgZnJpZW5kIGF1dG8g
b3BlcmF0b3I8PT4oQ29kZUJsb2NrSGFzaCwgQ29kZUJsb2NrSGFzaCkgPSBkZWZhdWx0OworCiBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1faGFzaDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVPcmlnaW4uaAppbmRleCAzNDk3MTM4MTRhM2VhNjRmNTY0YjUwYzNhMmIx
ZGRhZWZmNzk2MWU4Li45Yjk1M2NhY2Y4OTUxZjBjNzBhMDhhMGRjMzFjYzY4MWJlOGFmMzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgKQEAgLTE1NSw4
ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgaW50IHN0YWNrT2Zmc2V0KCkgY29uc3Q7CiAgICAgCiAg
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2Rl
T3JpZ2luJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVPcmln
aW4mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDb2RlT3JpZ2luJikgY29uc3Q7CiAgICAgCiAgICAgLy8gVGhpcyBj
aGVja3MgaWYgdGhlIHR3byBjb2RlIG9yaWdpbnMgY29ycmVzcG9uZCB0byB0aGUgc2FtZSBzdGFj
ayB0cmFjZSBzbmlwcGV0cywKICAgICAvLyBidXQgaWdub3JlIHdoZXRoZXIgdGhlIElubGluZUNh
bGxGcmFtZSdzIGFyZSBpZGVudGljYWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCmluZGV4IDI0ZGU1
NmZkN2E5MzVhZmM0YzI5M2M0OWQxZTRmODFlZWNmNTY4ZTkuLmVlZWNmOTRkYzg0MzI3MWFhZjM1
YWYzYTI2NzI3ZmVkMjEwMDc0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCkBAIC0xMTUsMTEg
KzExNSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgbGhz
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgcmhzKQotICAgIHsKLSAgICAgICAg
cmV0dXJuICEobGhzID09IHJocyk7Ci0gICAgfQotICAgIAogICAgIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uIGZvck9iamVjdChKU09iamVjdCopIGNvbnN0OwogICAgIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uIGZvckNvbmRpdGlvbktpbmQoUHJvcGVydHlDb25kaXRpb246OktpbmQpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCmluZGV4IDA0YzUxZTVl
MTExNzFlZGNiMTg1ZTJmOTc5ZjU5NDMwOTBlMjM5MWIuLjQ1ZDg0NDMyYjlmZDFlZTc2MjI5Njcx
ZTRlZGY4NWRlODdhOThjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGVyYW5kcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVy
YW5kcy5oCkBAIC00MDEsMTEgKzQwMSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fdmFs
dWVzID09IG90aGVyLm1fdmFsdWVzOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBPcGVyYW5kcyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Ci0gICAgfQotICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAppbmRleCBhMjliNGJmNjlkYTc0NzEz
YjFjNjI4NGI1MDNhNjQxZTk2M2M3Yzc5Li5jYmE4NThmMWYyYjkwNmY1NjZkOGY1NTRlMDM5ZjJh
ZWVkZTBiNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eVByb3RvQWNjZXNzQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seVByb3RvQWNjZXNzQ2hhaW4uaApAQCAtNDgsMTEgKzQ4LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBkdW1wKFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSwgUHJpbnRTdHJlYW0mIG91dCkgY29u
c3Q7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9seVByb3RvQWNjZXNzQ2hhaW4mIG90
aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9seVByb3RvQWNjZXNzQ2hh
aW4mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9seVByb3RvQWNjZXNzQ2hhaW4m
KSBjb25zdDsKIAogICAgIGJvb2wgbmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChWTSYpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5oCmluZGV4IDYxN2FmMDBmMjIzODQxM2Q5NzQ1NTljNGVjZDcwZjQ3Nzg1ZDAwNDku
LjRkMGZjYzBkYTc0ODA5MWVkOWZkYjRiMWJlYjIyMzBiMDFjZjBmMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCkBAIC01OCwx
OSArNTgsMTggQEAgcHVibGljOgogICAgICAgICBHZW5lcmF0ZWRGaW5hbENvZGUsIC8vIEdlbmVy
YXRlZCBzbyBtdWNoIGNvZGUgdGhhdCB3ZSBuZXZlciB3YW50IHRvIGdlbmVyYXRlIGNvZGUgYWdh
aW4uCiAgICAgICAgIFJlc2V0U3R1YkFuZEZpcmVXYXRjaHBvaW50cyAvLyBXZSBmb3VuZCBvdXQg
c29tZSBkYXRhIHRoYXQgbWFrZXMgdXMgd2FudCB0byBzdGFydCBvdmVyIGZyZXNoIHdpdGggdGhp
cyBzdHViLiBDdXJyZW50bHksIHRoaXMgaGFwcGVucyB3aGVuIHdlIGRldGVjdCBwb2x5IHByb3Rv
LgogICAgIH07Ci0gICAgCiAKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KCkgPSBkZWZhdWx0
OwogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQoQWNjZXNzR2VuZXJhdGlvblJlc3VsdCYmKSA9
IGRlZmF1bHQ7CiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCYgb3BlcmF0b3I9KEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQmJikgPSBkZWZhdWx0OwotICAgIAorCiAgICAgQWNjZXNzR2VuZXJhdGlv
blJlc3VsdChLaW5kIGtpbmQpCiAgICAgICAgIDogbV9raW5kKGtpbmQpCiAgICAgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChraW5kICE9IEdlbmVyYXRlZE5ld0NvZGUpOwogICAgICAgICBSRUxF
QVNFX0FTU0VSVChraW5kICE9IEdlbmVyYXRlZEZpbmFsQ29kZSk7CiAgICAgfQotICAgIAorCiAg
ICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdChLaW5kIGtpbmQsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKSVRTdHViUm91dGluZVB0clRhZz4gY29kZSkKICAgICAgICAgOiBtX2tpbmQoa2luZCkKICAg
ICAgICAgLCBtX2NvZGUoY29kZSkKQEAgLTc4LDIyICs3NywxNyBAQCBwdWJsaWM6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gR2VuZXJhdGVkTmV3Q29kZSB8fCBraW5kID09IEdlbmVy
YXRlZEZpbmFsQ29kZSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvZGUpOwogICAgIH0KLSAg
ICAKKwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0JiBv
dGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2tpbmQgPT0gb3RoZXIubV9raW5k
ICYmIG1fY29kZSA9PSBvdGhlci5tX2NvZGU7CiAgICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgCisKICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAqdGhpcyAh
PSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KCk7CiAgICAgfQotICAgIAorCiAgICAgS2luZCBraW5k
KCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CiAgICAgCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAppbmRleCA0NDM1ZmMzMjI2MzkxOWMzMGIzZDhjODZmMDIxOWYzMDVmMmExZmQy
Li5mYzAxZDAwOTY4OGYzNjZlMDc5YWU4NTNiZThjYThiYTQ5MmRjYmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtMzE2
LDE1ICszMTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGhhc2g7CiAgICAgICAg
IH0KIAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJ1ZmZlcmVkU3RydWN0
dXJlJiBhLCBjb25zdCBCdWZmZXJlZFN0cnVjdHVyZSYgYikKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGEubV9zdHJ1Y3R1cmUgPT0gYi5tX3N0cnVjdHVyZSAmJiBhLm1fYnlWYWxJZCA9
PSBiLm1fYnlWYWxJZDsKLSAgICAgICAgfQotCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
IT0oY29uc3QgQnVmZmVyZWRTdHJ1Y3R1cmUmIGEsIGNvbnN0IEJ1ZmZlcmVkU3RydWN0dXJlJiBi
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIShhID09IGIpOwotICAgICAgICB9Cisg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCdWZmZXJlZFN0cnVjdHVyZSYpIGNvbnN0ID0g
ZGVmYXVsdDsKIAogICAgICAgICBzdHJ1Y3QgSGFzaCB7CiAgICAgICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBCdWZmZXJlZFN0cnVjdHVyZSYga2V5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAppbmRleCA1ZjY2M2IyZmY1YTVl
M2NlMDhjZTQxMjk1YjgwYTliNzEwNmM4OTc5Li41NDZjYWQ3NmVjODhkNzEwNTQxZTZhM2U1OTg1
ZmE2NDk1ZmI0ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3VwZXJTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Vw
ZXJTYW1wbGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNp
bmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8
d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxS
ZWdpc3Rlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rl
ci5oCmluZGV4IGZiOTFhZjE5MDJiMTYxNzg0Y2FjZmFhYmJmMzQ2NjYyZGRmYTY0NzUuLmY2YTI5
M2RhMWVlOTc4ZTM2YWEwYzZkMGRkYTFiYThjYTJlZDNhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKQEAgLTc4LDEyICs3OCw3IEBA
IHB1YmxpYzoKICAgICBpbnQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0
ZXI7IH0KICAgICBpbnQgb2Zmc2V0SW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlydHVhbFJl
Z2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVyKTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KFZpcnR1
YWxSZWdpc3RlciBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPT0gb3Ro
ZXIubV92aXJ0dWFsUmVnaXN0ZXI7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oVmlydHVhbFJlZ2lz
dGVyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciAhPSBvdGhlci5tX3Zp
cnR1YWxSZWdpc3RlcjsgfQotICAgIGJvb2wgb3BlcmF0b3I8KFZpcnR1YWxSZWdpc3RlciBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPCBvdGhlci5tX3ZpcnR1YWxSZWdp
c3RlcjsgfQotICAgIGJvb2wgb3BlcmF0b3I+KFZpcnR1YWxSZWdpc3RlciBvdGhlcikgY29uc3Qg
eyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPiBvdGhlci5tX3ZpcnR1YWxSZWdpc3RlcjsgfQot
ICAgIGJvb2wgb3BlcmF0b3I8PShWaXJ0dWFsUmVnaXN0ZXIgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fdmlydHVhbFJlZ2lzdGVyIDw9IG90aGVyLm1fdmlydHVhbFJlZ2lzdGVyOyB9Ci0gICAgYm9v
bCBvcGVyYXRvcj49KFZpcnR1YWxSZWdpc3RlciBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92aXJ0
dWFsUmVnaXN0ZXIgPj0gb3RoZXIubV92aXJ0dWFsUmVnaXN0ZXI7IH0KKyAgICBmcmllbmQgYXV0
byBvcGVyYXRvcjw9PihWaXJ0dWFsUmVnaXN0ZXIsIFZpcnR1YWxSZWdpc3RlcikgPSBkZWZhdWx0
OwogICAgIAogICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYXRvcisoaW50IHZhbHVlKSBjb25zdAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
clNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5o
CmluZGV4IDJlOTA1MjAxNjIyMGYwOTYxZDk5NjBhMmM4YmY2NjMwMmQwZDdiMDUuLjAyNjc0Yjc1
Mzk3NjIyM2M4ODAzNzQxZDQxMDFlZWE2MzYwNWIxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApAQCAtNzAsOCArNzAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyBtX25vZGUgPSBtX25vZGUtPm5leHQo
KTsgcmV0dXJuICp0aGlzOyB9CiAgICAgICAgIC8vIHBvc3RmaXggKysgaW50ZW50aW9uYWxseSBv
bWl0dGVkCiAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZTsgfQotICAgICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX25vZGUgIT0g
b3RoZXIubV9ub2RlOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYp
IGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIERlYnVnZ2VyU2NvcGUq
IG1fbm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCmlu
ZGV4IGZmODRmNmI3YzBkOTBmYzRjYjE0Yzc4N2NkMGYxYjQzZTdkYmRjYTkuLmE2ZjFiODIyZDky
ZjViNmI2MGZiYjk5NjAxY2QwMjhlM2UxNjM5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEhlYXAuaApAQCAtMTUzLDE2ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUoKSk7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXlsb2FkJiBvdGhlcikg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1faXNUb3AgPT0gb3RoZXIubV9p
c1RvcAotICAgICAgICAgICAgICAgICYmIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBheWxvYWQmIG90
aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7Ci0gICAgICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBheWxvYWQmKSBj
b25zdCA9IGRlZmF1bHQ7CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBQ
YXlsb2FkJiBvdGhlcikgY29uc3QKICAgICAgICAgewpAQCAtMjkxLDE1ICsyODIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBXVEY6OkludEhhc2g8aW50NjRfdD46Omhhc2gobV92YWx1ZSk7
CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBYnN0cmFjdEhlYXAmIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1
ZTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFic3RyYWN0SGVhcCYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBYnN0cmFjdEhlYXAmKSBjb25zdCA9IGRl
ZmF1bHQ7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQWJzdHJhY3RIZWFwJiBvdGhl
cikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RW
YWx1ZS5oCmluZGV4IGU4NjlhMWIyZWMxYzJlOWFiOTk5MjVlY2IzZTJkOTYxOWViN2Q2NDAuLjYz
Y2IxNTU4NzA2ZjNjNjY0NWI3Y2RlOGUzNzI5YTY4NjEyNmMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCkBAIC0yNzMsMTAgKzI3Myw2IEBAIHN0
cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgICAgICYmIG1fc3RydWN0dXJlID09IG90aGVy
Lm1fc3RydWN0dXJlCiAgICAgICAgICAgICAmJiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7CiAg
ICAgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CiAgICAg
CiAgICAgQUxXQVlTX0lOTElORSBib29sIG1lcmdlKGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVy
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RWYWx1ZUNsb2JiZXJFcG9jaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFZhbHVlQ2xvYmJlckVwb2NoLmgKaW5kZXggNDAyMTA1OWRjNDJmZWJjNzQ5YWNlZmE5YTRk
ZTY0NGY1MWE3OGJiZi4uMGFlYTk3M2NmMWY3OGU4MzMzNWEzN2JhZjA2ZmM2ZWVhYzM2NjA4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlQ2xv
YmJlckVwb2NoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlQ2xvYmJlckVwb2NoLmgKQEAgLTY0LDE1ICs2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV92
YWx1ZSB8PSB3YXRjaGVkRmxhZzsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEFic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2gmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKLSAgICB9Ci0gICAgCi0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEFic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2gmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQWJzdHJhY3RWYWx1ZUNsb2JiZXJFcG9jaCYpIGNvbnN0ID0g
ZGVmYXVsdDsKICAgICAKICAgICBTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUgc3RydWN0dXJlQ2xvYmJl
clN0YXRlKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuaAppbmRleCBkZjc1Yzc4OTBkNjRhYmYyZmE3Mzk4OGNiOTNiZTVhMzZhOGZjNTI0Li5hYWY5
MjJiOTgwOGNlYzBlOWQwZjNlMGJjMTg4Njk2ZDc1NjhkZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKQEAgLTU0MCwxMCArNTQwLDYgQEAgcHVibGljOgogICAg
ICAgICAgICAgJiYgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlw
ZWRBcnJheSgpOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJyYXlN
b2RlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLSAgICB9CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFycmF5TW9kZSh1bnNpZ25lZCB3b3Jk
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXZhaWxh
YmlsaXR5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5oCmlu
ZGV4IDZhYmY0Y2RlODIyNDE0ODRlZDYzZDU1NTJjNWU3NjRkMWE5ZjFkN2YuLmI5YzRmYWM1Y2Ez
ZGZmMGNlNGE0ODgzNjY4NmM3M2FmMzRhOTU0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXZhaWxhYmlsaXR5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBdmFpbGFiaWxpdHkuaApAQCAtMTE4LDE2ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBub2RlSXNVbmF2YWlsYWJsZSgp
ICYmIGZsdXNoZWRBdCgpLmZvcm1hdCgpID09IENvbmZsaWN0aW5nRmx1c2g7IH0KIAotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBdmFpbGFiaWxpdHkmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fbm9kZSA9PSBvdGhlci5tX25vZGUKLSAgICAgICAgICAgICYmIG1fZmx1
c2hlZEF0ID09IG90aGVyLm1fZmx1c2hlZEF0OwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQXZhaWxhYmlsaXR5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEF2YWlsYWJpbGl0eSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAKICAgICBBdmFpbGFiaWxpdHkg
bWVyZ2UoY29uc3QgQXZhaWxhYmlsaXR5JiBvdGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrU2V0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Jsb2NrU2V0LmgKaW5kZXggNjBiNDQ5NmQwODRiOTdkNzg2NTlmYTVh
YTQ0NzdhYjZkZWVmYWU4OS4uNGFmNmI1YWFmNDI0YjYyYjUxMDcyOGRkZjRmMTY4ODM1OTFmYzcz
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja1NldC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tTZXQuaApAQCAtNzksMTEgKzc5
LDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRl
eDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0
ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0gICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBCbG9ja1NldDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0eS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydHkuaAppbmRleCAxYTUyODA2OGM2
YmQwOGE4MzI3YjkyNTI3OGY1NmI3NzYxZWFiNjk0Li42NGM5YWYxZTk1MjIxODIxZWIwMWI4ODg4
MGQwM2E2NmM3ZDMyZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Rlc2lyZWRHbG9iYWxQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGVzaXJlZEdsb2JhbFByb3BlcnR5LmgKQEAgLTU2LDE1ICs1Niw3IEBAIHB1YmxpYzoKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxP
YmplY3Q7IH0KICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudGlmaWVyTnVtYmVyOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGVzaXJl
ZEdsb2JhbFByb3BlcnR5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ds
b2JhbE9iamVjdCA9PSBvdGhlci5tX2dsb2JhbE9iamVjdCAmJiBtX2lkZW50aWZpZXJOdW1iZXIg
PT0gb3RoZXIubV9pZGVudGlmaWVyTnVtYmVyOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBEZXNpcmVkR2xvYmFsUHJvcGVydHkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRGVzaXJlZEdsb2JhbFByb3BlcnR5JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0VkZ2UuaAppbmRleCA0YTI1NWIwNjA4NjE3MjdmZmMyM2I5MjNhY2UwMjQ5MTEyMDI3
MzI0Li40NjZjYzExYzIxODk2MGRlZTA5OWZlMzdiZTI4MTFkYzYxNzM2ZWU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0VkZ2UuaApAQCAtMTY4LDEwICsxNjgsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlICYmIG1fZW5jb2RlZFdvcmQgPT0gb3Ro
ZXIubV9lbmNvZGVkV29yZDsKICNlbmRpZgogICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oRWRn
ZSBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
LSAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCkBA
IC0yMzEsMTggKzIyNyw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oRWRnZSBlZGdlLCBOb2Rl
KiBub2RlKQogewogICAgIHJldHVybiBlZGdlLm5vZGUoKSA9PSBub2RlOwogfQotaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShOb2RlKiBub2RlLCBFZGdlIGVkZ2UpCi17Ci0gICAgcmV0dXJuIGVkZ2Uu
bm9kZSgpID09IG5vZGU7Ci19Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KEVkZ2UgZWRnZSwgTm9k
ZSogbm9kZSkKLXsKLSAgICByZXR1cm4gZWRnZS5ub2RlKCkgIT0gbm9kZTsKLX0KLWlubGluZSBi
b29sIG9wZXJhdG9yIT0oTm9kZSogbm9kZSwgRWRnZSBlZGdlKQotewotICAgIHJldHVybiBlZGdl
Lm5vZGUoKSAhPSBub2RlOwotfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRXBvY2guaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRXBvY2guaAppbmRleCA2ODgyMzQwMTg3N2M2ZGNkZThiMDRjNGZk
YTcxNjFjN2ViZThhZGNjLi5jMWZkZGZmNjE1YjI3NTM3YzIzZGRjN2MwYzAzZmM5MTg4ODdhZmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Vwb2NoLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFcG9jaC5oCkBAIC0zOSw4NCArMzksNTYgQEAg
cHVibGljOgogICAgICAgICA6IG1fZXBvY2goc19ub25lKQogICAgIHsKICAgICB9Ci0gICAgCisK
ICAgICBzdGF0aWMgRXBvY2ggZnJvbVVuc2lnbmVkKHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAg
ICAgICAgRXBvY2ggcmVzdWx0OwogICAgICAgICByZXN1bHQubV9lcG9jaCA9IHZhbHVlOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKwogICAgIHVuc2lnbmVkIHRvVW5zaWdu
ZWQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZXBvY2g7CiAgICAgfQotICAgIAor
CiAgICAgc3RhdGljIEVwb2NoIGZpcnN0KCkKICAgICB7CiAgICAgICAgIEVwb2NoIHJlc3VsdDsK
ICAgICAgICAgcmVzdWx0Lm1fZXBvY2ggPSBzX2ZpcnN0OwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX2Vwb2NoID09IHNfbm9uZTsKICAgICB9Ci0gICAgCisKICAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhISp0aGlzOwog
ICAgIH0KLSAgICAKKwogICAgIEVwb2NoIG5leHQoKSBjb25zdAogICAgIHsKICAgICAgICAgRXBv
Y2ggcmVzdWx0OwogICAgICAgICByZXN1bHQubV9lcG9jaCA9IG1fZXBvY2ggKyAxOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKwogICAgIHZvaWQgYnVtcCgpCiAgICAgewog
ICAgICAgICAqdGhpcyA9IG5leHQoKTsKICAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEVwb2NoJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vwb2No
ID09IG90aGVyLm1fZXBvY2g7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBFcG9jaCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEVwb2NoJiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vwb2NoIDwgb3RoZXIubV9lcG9jaDsK
LSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgRXBvY2gmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG90aGVyIDwgKnRoaXM7Ci0gICAgfQotICAgIAotICAg
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBFcG9jaCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gISgqdGhpcyA+IG90aGVyKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRv
cj49KGNvbnN0IEVwb2NoJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzIDwgb3RoZXIpOwotICAgIH0KLSAgICAKKworICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+
KEVwb2NoLCBFcG9jaCkgPSBkZWZhdWx0OworCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7Ci0gICAgCisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBz
X25vbmUgPSAwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc19maXJzdCA9IDE7Ci0g
ICAgCisKICAgICB1bnNpZ25lZCBtX2Vwb2NoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaGVkQXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRmx1c2hlZEF0LmgKaW5kZXggMTFhY2U0NTQ5ZTQ5NGVmYTZjMDdhODZkMWEyOWI3YjZk
MTYwNzZmYy4uZTcyNzhiMTZkNDIxOTkxMzdjMDdmNWNkMjI4YjE3NjI3NjE2Mjg5MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaGVkQXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoZWRBdC5oCkBAIC0zOCwxMyArMzgsMTMgQEAg
cHVibGljOgogICAgICAgICA6IG1fZm9ybWF0KERlYWRGbHVzaCkKICAgICB7CiAgICAgfQotICAg
IAorCiAgICAgZXhwbGljaXQgRmx1c2hlZEF0KEZsdXNoRm9ybWF0IGZvcm1hdCkKICAgICAgICAg
OiBtX2Zvcm1hdChmb3JtYXQpCiAgICAgewogICAgICAgICBBU1NFUlQoZm9ybWF0ID09IERlYWRG
bHVzaCB8fCBmb3JtYXQgPT0gQ29uZmxpY3RpbmdGbHVzaCk7CiAgICAgfQotICAgIAorCiAgICAg
Rmx1c2hlZEF0KEZsdXNoRm9ybWF0IGZvcm1hdCwgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdp
c3RlcikKICAgICAgICAgOiBtX2Zvcm1hdChmb3JtYXQpCiAgICAgICAgICwgbV92aXJ0dWFsUmVn
aXN0ZXIodmlydHVhbFJlZ2lzdGVyKQpAQCAtNTIsMjAgKzUyLDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKGZvcm1hdCA9PSBEZWFkRmx1c2gpCiAgICAgICAgICAgICBBU1NFUlQoIXZpcnR1YWxS
ZWdpc3Rlci5pc1ZhbGlkKCkpOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gbV9mb3JtYXQgPT0gRGVhZEZsdXNoOyB9Ci0gICAgCisKICAgICBGbHVz
aEZvcm1hdCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rl
cjsgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbHVzaGVkQXQmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZm9ybWF0ID09IG90aGVyLm1fZm9ybWF0Ci0g
ICAgICAgICAgICAmJiBtX3ZpcnR1YWxSZWdpc3RlciA9PSBvdGhlci5tX3ZpcnR1YWxSZWdpc3Rl
cjsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZsdXNoZWRBdCYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgCisKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRmx1c2hlZEF0JikgY29uc3QgPSBkZWZhdWx0OworCiAgICAgRmx1
c2hlZEF0IG1lcmdlKGNvbnN0IEZsdXNoZWRBdCYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoISp0aGlzKQpAQCAtNzYsMTAgKzcwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICAgICAgcmV0dXJuIEZsdXNoZWRBdChDb25mbGljdGluZ0ZsdXNoKTsK
ICAgICB9Ci0gICAgCisKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2
b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwotICAg
IAorCiBwcml2YXRlOgogICAgIEZsdXNoRm9ybWF0IG1fZm9ybWF0OwogICAgIFZpcnR1YWxSZWdp
c3RlciBtX3ZpcnR1YWxSZWdpc3RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApp
bmRleCAxYmVjOGRlZWQ5ZGJkYmE1MDdkOWEzZmIxYjAzOWUyNmVlMWFkZDc3Li40MGI5N2FkNmJh
MDk2ZmU5NmZmN2VhZWEyOTE1ODc0YzczMTViNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCkBAIC03MjEsMTEgKzcyMSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBj
b25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICBwcml2YXRlOgogICAg
ICAgICAgICAgQmxvY2tJbmRleCBmaW5kTmV4dChCbG9ja0luZGV4IGluZGV4KQogICAgICAgICAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
dGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCBkODZkZTBlODA1MTMxNWU5NTdm
ZmE0M2FmM2Q0ZDFhM2RhZDczMTE0Li4wOWNlMjk2MDA0YzFiNzA4ZGMzYTc3OTk2NzFkOTZiNjA0
NGRjY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJS
YW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtMjQyLDI4ICsyNDIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlbGF0aW9uc2hpcCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gc2FtZU5vZGVzQXMob3RoZXIpCi0gICAgICAgICAgICAmJiBtX2tpbmQgPT0gb3Ro
ZXIubV9raW5kCi0gICAgICAgICAgICAmJiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldDsKLSAg
ICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlbGF0aW9uc2hpcCYgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQot
ICAgIAotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFJlbGF0aW9uc2hpcCYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICBpZiAobV9sZWZ0ICE9IG90aGVyLm1fbGVmdCkKLSAgICAgICAgICAg
IHJldHVybiBtX2xlZnQgPCBvdGhlci5tX2xlZnQ7Ci0gICAgICAgIGlmIChtX3JpZ2h0ICE9IG90
aGVyLm1fcmlnaHQpCi0gICAgICAgICAgICByZXR1cm4gbV9yaWdodCA8IG90aGVyLm1fcmlnaHQ7
Ci0gICAgICAgIGlmIChtX2tpbmQgIT0gb3RoZXIubV9raW5kKQotICAgICAgICAgICAgcmV0dXJu
IG1fa2luZCA8IG90aGVyLm1fa2luZDsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0IDwgb3RoZXIu
bV9vZmZzZXQ7Ci0gICAgfQorICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KFJlbGF0aW9uc2hp
cCwgUmVsYXRpb25zaGlwKSA9IGRlZmF1bHQ7CiAgICAgCiAgICAgLy8gSWYgcG9zc2libGUsIHJl
dHVybnMgYSBmb3JtIG9mIHRoaXMgcmVsYXRpb25zaGlwIHdoZXJlIHRoZSBnaXZlbiBub2RlIGlz
IHRoZSBsZWZ0CiAgICAgLy8gc2lkZS4gUmV0dXJucyBhIG51bGwgcmVsYXRpb25zaGlwIGlmIHRo
aXMgcmVsYXRpb25zaGlwIGNhbm5vdCBzYXkgYW55dGhpbmcgYWJvdXQgdGhpcwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5Tm9kZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMYXp5Tm9kZS5oCmluZGV4IGIzZmZmOTY1OGE1ZGVmMjBiOTAwMGEx
NjcyNWYxMTJkMzk1NGEwNzcuLmM1M2NkNDYzN2VjMTEzNzlhMjEwODM4Y2I1YTM3NWFlODcyN2Y0
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eU5vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlOb2RlLmgKQEAgLTEyMiwxMSAr
MTIyLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZTsK
ICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF6eU5vZGUmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAg
IE5vZGUqIGVuc3VyZUlzTm9kZShJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9j
ayogYmxvY2ssIHVuc2lnbmVkIG5vZGVJbmRleCkKICAgICB7CiAgICAgICAgIGlmICghbV9ub2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZElELmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkSUQuaAppbmRleCAxNjcyODYx
MDI3MDBiYzdiNjc0NmM2NDcxOGRiNWUzOTcyNDczMjU4Li44MTU4MmM1ZjcxMmExOTdkY2VhYTBi
ZGMxZTMwZDY2MWYzZTM0OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01pbmlmaWVkSUQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlm
aWVkSUQuaApAQCAtNDUsMTIgKzQ1LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleC5nZXQoKSA9PSBpbnZhbGlkSW5kZXgoKTsgfQog
ICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNaW5pZmllZElEJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gbV9pbmRleC5nZXQoKSA9PSBvdGhlci5tX2luZGV4LmdldCgpOyB9Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE1pbmlmaWVkSUQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4LmdldCgpICE9IG90aGVyLm1faW5kZXguZ2V0KCk7IH0KLSAgICBib29sIG9wZXJhdG9yPChj
b25zdCBNaW5pZmllZElEJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmRleC5nZXQoKSA8IG90
aGVyLm1faW5kZXguZ2V0KCk7IH0KLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBNaW5pZmllZElE
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmRleC5nZXQoKSA+IG90aGVyLm1faW5kZXguZ2V0
KCk7IH0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgTWluaWZpZWRJRCYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXguZ2V0KCkgPD0gb3RoZXIubV9pbmRleC5nZXQoKTsgfQotICAgIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBNaW5pZmllZElEJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9p
bmRleC5nZXQoKSA+PSBvdGhlci5tX2luZGV4LmdldCgpOyB9CisgICAgZnJpZW5kIGF1dG8gb3Bl
cmF0b3I8PT4oTWluaWZpZWRJRCwgTWluaWZpZWRJRCkgPSBkZWZhdWx0OwogICAgIAogICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBXVEY6OkludEhhc2g8dW5zaWduZWQ+OjpoYXNo
KG1faW5kZXguZ2V0KCkpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmlu
ZGV4IDg2NmY2M2RiM2RmMDgwZmZhYTcwMjQyMDRiMmI1MWYyNWIwZTcxNjguLjgwYWVhZGMyYzkx
YjMzMDg2M2VjMWQ2MTBlN2Q0MTFhOWNmZjI0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCkBAIC0xNzIxLDEwICsxNzIxLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJl
dHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNv
bnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOwotICAgICAgICAgICAgfQogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgTm9kZSog
bV90ZXJtaW5hbDsKICAgICAgICAgICAgIHVuc2lnbmVkIG1faW5kZXg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbG93UHJvamVjdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxvd1Byb2plY3Rpb24uaAppbmRleCAzNDk3MWVh
YmUzZjk2NWY0N2MyNmU1NmE5YjVhMzFiMDc5NGE5YmRlLi44MTk3YzNjOTMxMTc5ZTIxYjI3Y2Iw
MDkxNTY0MjI0NDFkN2IxM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVGbG93UHJvamVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZUZsb3dQcm9qZWN0aW9uLmgKQEAgLTcyLDM4ICs3MiwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX3dvcmQ7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShOb2Rl
Rmxvd1Byb2plY3Rpb24gb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV93b3Jk
ID09IG90aGVyLm1fd29yZDsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KE5vZGVG
bG93UHJvamVjdGlvbiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcjwoTm9kZUZsb3dQcm9q
ZWN0aW9uIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGtpbmQoKSAhPSBvdGhlci5r
aW5kKCkpCi0gICAgICAgICAgICByZXR1cm4ga2luZCgpIDwgb3RoZXIua2luZCgpOwotICAgICAg
ICByZXR1cm4gbm9kZSgpIDwgb3RoZXIubm9kZSgpOwotICAgIH0KLSAgICAKLSAgICBib29sIG9w
ZXJhdG9yPihOb2RlRmxvd1Byb2plY3Rpb24gb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gb3RoZXIgPCAqdGhpczsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcjw9KE5v
ZGVGbG93UHJvamVjdGlvbiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzID4gb3RoZXIpOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPj0oTm9kZUZsb3dQ
cm9qZWN0aW9uIG90aGVyKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb2RlRmxv
d1Byb2plY3Rpb24mKSBjb25zdCA9IGRlZmF1bHQ7CisKKyAgICBmcmllbmQgYXV0byBvcGVyYXRv
cjw9PihOb2RlRmxvd1Byb2plY3Rpb24gYSwgTm9kZUZsb3dQcm9qZWN0aW9uIGIpCiAgICAgewot
ICAgICAgICByZXR1cm4gISgqdGhpcyA8IG90aGVyKTsKKyAgICAgICAgLy8gTm90ZSB0aGF0IHRo
aXMgaW50ZW50aW9uYWxseSBzb3J0cyBieSB0aGUgYWRkcmVzcyBvZiB0aGUgbm9kZSBwb2ludGVy
LgorICAgICAgICBpZiAoYS5raW5kKCkgIT0gYi5raW5kKCkpCisgICAgICAgICAgICByZXR1cm4g
YS5raW5kKCkgPD0+IGIua2luZCgpOworICAgICAgICByZXR1cm4gYS5ub2RlKCkgPD0+IGIubm9k
ZSgpOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICp0aGlzID09IE5vZGVGbG93UHJvamVjdGlvbihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVPcmlnaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZU9yaWdpbi5oCmluZGV4IDc2Yjc0N2UzY2Q3ZDM4YmIyZmE2MWYzOTBhZTZjZjdiMjY1ZGEy
MjMuLjEyMWUzZWY2YzQ4ODdkOWRmZmYyNjYxNmVlMzk2YTg1NzYxNWI3MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZU9yaWdpbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZU9yaWdpbi5oCkBAIC0xMTMsMTEgKzExMyw2IEBAIHN0
cnVjdCBOb2RlT3JpZ2luIHsKICAgICAgICAgICAgICYmIGV4aXRPSyA9PSBvdGhlci5leGl0T0s7
CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGVPcmlnaW4mIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQog
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCiAgICAgLy8gVXNlZCBmb3IgZGV0
ZXJtaW5pbmcgd2hhdCBieXRlY29kZSB0aGlzIGNhbWUgZnJvbS4gVGhpcyBpcyBpbXBvcnRhbnQg
Zm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCAxZjQxODMxOGE0YzBkZWM2ZDJlOTlk
NDA5ZjcxZGFmYTQ2OTdiMmQxLi4yMjlmYjFlM2E0NTc4Yjg5NTJkNWI1ZGI5NzBlMWI3NWI5MDIw
ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKQEAgLTI2OCwxOSArMjY4LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9raW5kID09IEtpbmQ6OlJlZ0V4cE9iamVjdDsKICAgICB9
CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyID09IG90aGVyLm1faWRlbnRpZmllcgot
ICAgICAgICAgICAgJiYgbV9raW5kID09IG90aGVyLm1fa2luZAotICAgICAgICAgICAgJiYgbV9m
aWVsZHMgPT0gb3RoZXIubV9maWVsZHMKLSAgICAgICAgICAgICYmIG1fc3RydWN0dXJlcyA9PSBv
dGhlci5tX3N0cnVjdHVyZXMKLSAgICAgICAgICAgICYmIG1fc3RydWN0dXJlc0Zvck1hdGVyaWFs
aXphdGlvbiA9PSBvdGhlci5tX3N0cnVjdHVyZXNGb3JNYXRlcmlhbGl6YXRpb247Ci0gICAgfQot
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFsbG9jYXRpb24mIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQWxsb2NhdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIHsKQEAgLTY0MywxMSArNjMxLDYgQEAg
cHVibGljOgogICAgICAgICAgICAgJiYgbV9wb2ludGVycyA9PSBvdGhlci5tX3BvaW50ZXJzOwog
ICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMb2NhbEhlYXAmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAg
IGNvbnN0IEhhc2hNYXA8Tm9kZSosIEFsbG9jYXRpb24+JiBhbGxvY2F0aW9ucygpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV9hbGxvY2F0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAppbmRleCA0ZjEyNTIzMzg0
MjE1MTQ5NzYxMmVhMThmN2JmNTVlNDM4YjE1YjAyLi42NTAwMTEyNzNjYzU4MjA3ZWQ0NjI2ZjA1
MGM0NGZiMTU2ZjU4ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1Byb21vdGVkSGVhcExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCkBAIC04NywyOCArODcsMTkgQEAgcHVibGljOgogICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEludmFsaWRQcm9tb3Rl
ZExvY2F0aW9uS2luZDsgfQogCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuICEhKnRoaXM7IH0KLSAgICAKKwogICAgIFByb21vdGVkTG9jYXRpb25LaW5kIGtpbmQo
KSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICB1bnNpZ25lZCBpbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmZvOyB9Ci0gICAgCisKICAgICB1bnNpZ25lZCBpbW0xKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fa2luZCk7IH0KICAgICB1bnNpZ25lZCBpbW0yKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5mbyk7IH0KLSAgICAKKwog
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fa2luZCAr
IG1faW5mbzsKICAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb21vdGVk
TG9jYXRpb25EZXNjcmlwdG9yJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2tpbmQgPT0gb3RoZXIubV9raW5kCi0gICAgICAgICAgICAmJiBtX2luZm8gPT0gb3RoZXIubV9p
bmZvOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvbW90ZWRMb2Nh
dGlvbkRlc2NyaXB0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOwotICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm9tb3Rl
ZExvY2F0aW9uRGVzY3JpcHRvciYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJvcGVydHlUeXBlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb3BlcnR5VHlwZUtleS5oCmluZGV4IDc4NzkzYjhlOTI1MzA2Nzk5YjAxY2Qw
Yjg3ZDkxNWIxODU3YWUzNTEuLjJkYzg3OTlmOTg2ODI5Y2E2ZTBhYzQ2MjVjZWFhODY3NzIxNTMx
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGVydHlUeXBl
S2V5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wZXJ0eVR5cGVLZXku
aApAQCAtNTksMTYgKzU5LDcgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KCkgY29uc3QgeyByZXR1cm4gbV91aWQ7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQ
cm9wZXJ0eVR5cGVLZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3Ry
dWN0dXJlID09IG90aGVyLm1fc3RydWN0dXJlCi0gICAgICAgICAgICAmJiBtX3VpZCA9PSBvdGhl
ci5tX3VpZDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvcGVydHlUeXBl
S2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3BlcnR5VHlwZUtleSYpIGNv
bnN0ID0gZGVmYXVsdDsKIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgKaW5k
ZXggNWNiMjE3YjNjM2NjYTRkZjM2Mjk4YTBiM2FmNmU4YWU4Y2NmOTA0ZS4uMWIzMzkzMTA0Zjhl
NDRmOGZkMDE4MmRhZTZhMTM1ZjA1MDY1Yzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgKQEAgLTQ1LDExICs0NSw2IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGdldCgpID09IG90aGVyLmdldCgpOwogICAgIH0KIAotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlJiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhIWdl
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFw
UmFuZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgK
aW5kZXggYWFiMDJiZjAxNjUzOWRlOGUyMjVlNzg0MGRmOWQ3NTFhYzE2M2UwMC4uOTBlOGRhOGZk
MWNhOTA5MGI4ZDU2MDk0Nzk0YjA1Mzg1MGMzMjgxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBAIC03NywxMSArNzcsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX2JlZ2luID09IG90aGVyLm1fYmVnaW4gJiYgbV9lbmQgPT0gb3Ro
ZXIubV9lbmQ7CiAgICAgfQogCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBI
ZWFwUmFuZ2UmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFvcGVyYXRvcj09
KG90aGVyKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx1aW50MTZfdCBiZWdpbiwgdWludDE2X3Qg
ZW5kPgogICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIGZyb21Db25zdGFudCgpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3IuaAppbmRleCA3MjM5ZDIyOWZjZTky
YmJhMDQ1NDAwM2U0OWQ1MjhmMDdlMzI3Y2Y3Li4xNzgxZmMyZGE3ODgxYzg3MWE2MjM2ZmM4MWU3
YzA4YjAxZjY5ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxv
Y2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3IuaApAQCAt
NTIsOCArNTIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTG9jYWxBbGxvY2F0b3IqIGxvY2FsQWxs
b2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFsbG9jYXRvcjsgfQogICAgIAotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBbGxvY2F0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2xv
Y2FsQWxsb2NhdG9yID09IG90aGVyLmxvY2FsQWxsb2NhdG9yKCk7IH0KLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQWxsb2NhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWxsb2NhdG9yJikgY29uc3QgPSBk
ZWZhdWx0OwogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhp
cyAhPSBBbGxvY2F0b3IoKTsgfQogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaAppbmRleCAwYjQ4NzI5ZmIzNzIyOWU0YmVjZjVh
MTcyMTI2MDVmNTE4ZmI3ZmJjLi5iOWI0ZGUyYjQ3MjUzZjgxNThkY2ViNGIyOTBkNjQ0MzhiN2Zi
ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFy
cmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5o
CkBAIC0xMzIsMTEgKzEzMiw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY3VycmVudFNl
Z21lbnQgPT0gb3RoZXIubV9jdXJyZW50U2VnbWVudCAmJiBtX2N1cnJlbnRPZmZzZXQgPT0gb3Ro
ZXIubV9jdXJyZW50T2Zmc2V0OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBH
Q1NlZ21lbnRlZEFycmF5SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAgIEdDU2VnbWVudGVkQXJyYXlJdGVy
YXRvciYgb3BlcmF0b3IrKygpCiAgICAgewogICAgICAgICBBU1NFUlQobV9jdXJyZW50U2VnbWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCmluZGV4IGNlNjVkZDYyZWFiODhiNTYw
MmVhYzQ1MDZlNTlkNDc4YjIyZWEyNTMuLjNkYWRkNDNhMDVhOGRmYjk4MGQ4MjYyN2NhNGRlMTk5
NTk1YTQ5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCkBAIC0xNTAsMzQgKzE1
MCw0IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEhhbmRsZTxUPiYgYSwgVSoKICAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJh
dG9yPT0oVCogYSwgY29uc3QgSGFuZGxlPFU+JiBiKSAKLXsKLSAgICByZXR1cm4gYSA9PSBiLmdl
dCgpOyAKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBjb25zdCBIYW5kbGU8VT4mIGIpCi17IAot
ICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7IAotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYW5kbGU8VD4mIGEs
IFUqIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYjsgCi19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IEhh
bmRsZTxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsgCi19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhh
bmRsZTxUPiYgYSwgSlNWYWx1ZSBiKQotewotICAgIHJldHVybiBhLmdldCgpICE9IGI7IAotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShKU1ZhbHVlIGEsIGNvbnN0IEhhbmRsZTxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEgIT0gYi5n
ZXQoKTsgCi19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcEZpbmFsaXplckNhbGxiYWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwRmluYWxpemVyQ2FsbGJhY2suaAppbmRleCBiZDZhMzg2Njk0MTFkZDQw
NjUzMDkzYzM5ZmMyZDE5YzhhMTBjZmU3Li5iNDQ0NDZhYzc3MzEzYTM3ODBmZWY4NmJjN2I5OTYx
MGQ3MmU2OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwRmlu
YWxpemVyQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwRmlu
YWxpemVyQ2FsbGJhY2suaApAQCAtNDAsMTYgKzQwLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBGaW5hbGl6ZXJDYWxsYmFjayYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9maW5hbGl6ZXIgPT0gb3RoZXIu
bV9maW5hbGl6ZXIKLSAgICAgICAgICAgICYmIG1fdXNlckRhdGEgPT0gb3RoZXIubV91c2VyRGF0
YTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhlYXBGaW5hbGl6ZXJD
YWxsYmFjayYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZWFwRmluYWxpemVyQ2Fs
bGJhY2smKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
VmlzaXRSYWNlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WaXNpdFJhY2VLZXku
aAppbmRleCAxZjU5ODdjZmUyNWY3MWMyMzQ4MzY2MjhmNjY4OWIwNzZmNjcwYzI5Li43ZGVjMThl
YTY1NDA5NzdkYTNkZTExMzA2ZWZiNzI5YjAxYzc3NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9WaXNpdFJhY2VLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9WaXNpdFJhY2VLZXkuaApAQCAtMzUsNDQgKzM1LDM1IEBAIGNsYXNzIEpTQ2VsbDsK
IGNsYXNzIFZpc2l0UmFjZUtleSB7CiBwdWJsaWM6CiAgICAgVmlzaXRSYWNlS2V5KCkgeyB9Ci0g
ICAgCisKICAgICBWaXNpdFJhY2VLZXkoSlNDZWxsKiBjZWxsLCBjb25zdCBjaGFyKiByYWNlTmFt
ZSkKICAgICAgICAgOiBtX2NlbGwoY2VsbCkKICAgICAgICAgLCBtX3JhY2VOYW1lKHJhY2VOYW1l
KQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBWaXNpdFJhY2VLZXkoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQogICAgICAgICA6IG1fcmFjZU5hbWUobV9kZWxldGVkVmFsdWVSYWNl
TmFtZSkKICAgICB7CiAgICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWaXNp
dFJhY2VLZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY2VsbCA9PSBv
dGhlci5tX2NlbGwKLSAgICAgICAgICAgICYmIG1fcmFjZU5hbWUgPT0gb3RoZXIubV9yYWNlTmFt
ZTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZpc2l0UmFjZUtleSYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgfQotICAgIAorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZpc2l0UmFjZUtleSYpIGNv
bnN0ID0gZGVmYXVsdDsKKwogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuICp0aGlzICE9IFZpc2l0UmFjZUtleSgpOwogICAgIH0KLSAgICAK
KwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLSAgICAKKwogICAgIEpT
Q2VsbCogY2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2VsbDsgfQogICAgIGNvbnN0IGNoYXIqIHJh
Y2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9yYWNlTmFtZTsgfQotICAgIAorCiAgICAgYm9vbCBp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gKnRo
aXMgPT0gVmlzaXRSYWNlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsKICAgICB9Ci0g
ICAgCisKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBX
VEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2gobV9jZWxsKSBeIFdURjo6UHRySGFzaDxjb25zdCBj
aGFyKj46Omhhc2gobV9yYWNlTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1NoYWRvd0NoaWNrZW4uaAppbmRleCBhMTA3NDYzOWYzNzA5YTg0MDRkNDhmNDM5
OTczZjIwM2I3YTBhZTY2Li40ZTA1NDUxMGI5MTVlZTA5YjY1MDk3MTM0Yzg1NDljYjA3ZDg5NjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hp
Y2tlbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlj
a2VuLmgKQEAgLTE1MSwyMSArMTUxLDcgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFtZSYgb3RoZXIpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjYWxsZWUgPT0gb3RoZXIuY2FsbGVl
Ci0gICAgICAgICAgICAgICAgJiYgZnJhbWUgPT0gb3RoZXIuZnJhbWUKLSAgICAgICAgICAgICAg
ICAmJiB0aGlzVmFsdWUgPT0gb3RoZXIudGhpc1ZhbHVlCi0gICAgICAgICAgICAgICAgJiYgc2Nv
cGUgPT0gb3RoZXIuc2NvcGUKLSAgICAgICAgICAgICAgICAmJiBjb2RlQmxvY2sgPT0gb3RoZXIu
Y29kZUJsb2NrCi0gICAgICAgICAgICAgICAgJiYgY2FsbFNpdGVJbmRleC5iaXRzKCkgPT0gb3Ro
ZXIuY2FsbFNpdGVJbmRleC5iaXRzKCkKLSAgICAgICAgICAgICAgICAmJiBpc1RhaWxEZWxldGVk
ID09IG90aGVyLmlzVGFpbERlbGV0ZWQ7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBGcmFtZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQorICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRnJhbWUmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgICAgIAogICAg
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDUyYTEzYWFhZmI3N2I2ZTQ0ZmE3ZWIxOTJiMDY4NDNj
MmNjYjkyMjYuLjA5Y2YwNTYxZjAzYWE3MWVmZTNiMTU0MDBhODgwZjA0N2IxMDY2ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCkBAIC02OSw4ICs2OSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IEludmFsaWRHUFJSZWc7
IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9ncHIgIT0g
SW52YWxpZEdQUlJlZzsgfQogCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShKU1ZhbHVl
UmVncyBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gb3RoZXIubV9ncHI7IH0KLSAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KEpTVmFsdWVSZWdzIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU1ZhbHVl
UmVncyYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAKICAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyBy
ZXR1cm4gbV9ncHI7IH0KICAgICBjb25zdGV4cHIgR1BSUmVnIHRhZ0dQUigpIGNvbnN0IHsgcmV0
dXJuIEludmFsaWRHUFJSZWc7IH0KQEAgLTE5NSwxMiArMTk0LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgfHwgc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3BheWxvYWRHUFIpICE9IEludmFsaWRHUFJS
ZWc7CiAgICAgfQogCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShKU1ZhbHVlUmVncyBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3RhZ0dQUiA9PSBvdGhlci5tX3Rh
Z0dQUgotICAgICAgICAgICAgJiYgbV9wYXlsb2FkR1BSID09IG90aGVyLm1fcGF5bG9hZEdQUjsK
LSAgICB9Ci0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0o
SlNWYWx1ZVJlZ3MpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAKICAgICBjb25zdGV4cHIgR1BSUmVn
IHRhZ0dQUigpIGNvbnN0IHsgcmV0dXJuIG1fdGFnR1BSOyB9CiAgICAgY29uc3RleHByIEdQUlJl
ZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkR1BSOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDkxYjNiMzE1NTEwZGE2ODI0YjNjOTYzNDEwZTMzNmQ5
NTg5YWJjN2MuLmE4NDRmZWMwZDM1NjE5ZmNjMTNhM2RmZjNiMDMzNDRjYTg3OTVmOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC0xMjgsMTEgKzEyOCw2IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICYmIG1fcHJvcGVydHlOYW1lID09IG90aGVyLm1fcHJvcGVydHlOYW1lOwog
ICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSUNFdmVudCYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotICAg
IAogICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IElDRXZlbnQmIG90aGVyKSBjb25zdDsKICAgICBi
b29sIG9wZXJhdG9yPihjb25zdCBJQ0V2ZW50JiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIg
PCAqdGhpczsgfQogICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBJQ0V2ZW50JiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA+IG90aGVyKTsgfQpAQCAtMTY0LDcgKzE1OSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGxvZygpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICAKICAgICBLaW5k
IG1fa2luZCB7IEludmFsaWRLaW5kIH07CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5m
byB7IG51bGxwdHIgfTsKICAgICBJZGVudGlmaWVyIG1fcHJvcGVydHlOYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBbGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQWxsb2NhdG9yLmgKaW5kZXggMDUxYzc2ZWFkNzA3ODFlZDc3NGIy
N2NiNjg5MGFkYTRmNWFiYzQ0Ny4uOGFjY2ViNTEzNWIxYjhjYjc4YzFkOTk1YmNjZjM4YmRjN2Vj
NTBiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBbGxvY2F0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFsbG9jYXRvci5oCkBAIC01Mywx
NyArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKSVRBbGxvY2F0b3ImIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYm
IG1fYWxsb2NhdG9yID09IG90aGVyLm1fYWxsb2NhdG9yOwotICAgIH0KLSAgICAKLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgSklUQWxsb2NhdG9yJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEpJVEFsbG9jYXRvciYpIGNvbnN0ID0gZGVmYXVsdDsKKwogICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICp0aGlzICE9
IEpJVEFsbG9jYXRvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmgKaW5kZXggMGIyMjlhYTBmYTM0
MDViOWNmM2UyNWQ3NDcyNDZlNWQ4ZDBhNTQ4Ni4uYTZmMWVmYTExYThiMjRhZTUxODZjZjQ3OWU0
ZjhiOTg1YzMwMWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZy5oCkBAIC0xMzYsMzUgKzEzNiw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIo
KSArIChtX2luZGV4IC0gTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0ZXJzKCkpKTsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwotICAgIH0KLSAg
ICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2luZGV4ICE9IG90aGVyLm1faW5kZXg7Ci0gICAgfQotICAgIAotICAg
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9pbmRleCA8IG90aGVyLm1faW5kZXg7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3Bl
cmF0b3I+KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9p
bmRleCA+IG90aGVyLm1faW5kZXg7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBSZWcmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW5kZXggPD0g
b3RoZXIubV9pbmRleDsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFJl
ZyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbmRleCA+PSBvdGhlci5t
X2luZGV4OwotICAgIH0KKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihSZWcsIFJlZykgPSBk
ZWZhdWx0OwogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKQEAgLTE5NSwx
NSArMTY3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBv
dGhlcikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9yZWdJ
bmRleCA9PSBvdGhlci5tX3JlZ0luZGV4OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYpIGNvbnN0ID0g
ZGVmYXVsdDsKIAogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgdW5zaWduZWQgbV9yZWdJ
bmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAppbmRleCBjOWUzN2Y0
OTQ3NGNmNzU4MjZkNGMxNWMzOTE5ZmNjNWI2ZTA4YjgzLi43YWYyNzc5ODA1MDlmNmQ0MmVhYWZm
YmY4OTQ3NTY1Zjg2Y2NkOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlZ2lzdGVyU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNl
dC5oCkBAIC0xMzMsOCArMTMzLDcgQEAgcHVibGljOgogICAgIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyA9PSBv
dGhlci5tX2JpdHM7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnaXN0ZXJTZXQmIG90
aGVyKSBjb25zdCB7IHJldHVybiBtX2JpdHMgIT0gb3RoZXIubV9iaXRzOyB9CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyU2V0JikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2JpdHMuaGFzaCgpOyB9CiAgICAgCkBA
IC0xNjYsMTYgKzE2NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1faXRlciA9PSBv
dGhlci5tX2l0ZXI7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotICAgICAgICAKKyAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0OworCiAgICAgcHJp
dmF0ZToKICAgICAgICAgUmVnaXN0ZXJCaXRtYXA6Oml0ZXJhdG9yIG1faXRlcjsKICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDFhZDU1OGQyMDg4NGQzZGFlYzNj
Mjk0MTg4ZDE0N2I3MjMxNTI3NzIuLmEwZDk2YjQyZTAwZWI0NDcwNWI0OGZmN2ZiZjk3OGYyZDE4
NmFhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTIyMjcsMTAgKzIy
MjcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbGFzdExpbmUoKSBjb25z
dCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlJikgY29uc3Q7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBGdW5jdGlvbk1ldGFkYXRhTm9kZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQogCiAgICAgcHVibGlj
OgogICAgICAgICB1bnNpZ25lZCBtX2xleGljYWxTY29wZUZlYXR1cmVzIDogNDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDQ0YTJlYmEwOTIwNjVhOTBhM2JjOGExMWZl
ZWRkYzNkYWZjNjU4N2EuLjk1M2NhMzE1ZjM3MzJjYjg4NjU3OGI3MDNkYmIyZjU0NmUyZjQ4YzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtOTU2LDExICs5NTYsNiBA
QCBzdHJ1Y3QgU2NvcGVSZWYgewogICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2lu
ZGV4OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTY29wZVJlZiYgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQot
CiBwcml2YXRlOgogICAgIFNjb3BlU3RhY2sqIG1fc2NvcGVTdGFjazsKICAgICB1bnNpZ25lZCBt
X2luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJU
b2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5k
ZXggYWQyYTBjZDMyMjJhYTNlMTlkMWQ1NTNjZGQ5NDk2YTUxOTZkOGEwNy4uODJkNDgyM2QyOTg5
YjZhN2M0MDI2MWE5NTg4NTRkMTIxNTA0M2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0yMTksMTYgKzIxOSw3IEBAIHN0cnVjdCBKU1RleHRQ
b3NpdGlvbiB7CiAKICAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7IHJldHVybiBvZmZzZXQ7IH0K
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU1RleHRQb3NpdGlvbiYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbGluZSA9PSBvdGhlci5saW5lCi0gICAgICAgICAgICAm
JiBvZmZzZXQgPT0gb3RoZXIub2Zmc2V0Ci0gICAgICAgICAgICAmJiBsaW5lU3RhcnRPZmZzZXQg
PT0gb3RoZXIubGluZVN0YXJ0T2Zmc2V0OwotICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgSlNUZXh0UG9zaXRpb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNUZXh0
UG9zaXRpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBpbnQgY29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gb2Zmc2V0IC0gbGluZVN0YXJ0T2Zmc2V0OyB9CiAgICAgdm9pZCBjaGVja0NvbnNpc3Rl
bmN5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29k
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKaW5kZXggODZm
ZTEyNGE4NzNjZTc1MWM2MGFlZWM4ZDc5MDczOTYzOWE0YzM2MS4uOGQzYjViMDA1Y2NlOGVjY2Vk
MWI4Mzk5NDE1MzY3MjMzZTBmMDM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
b3VyY2VDb2RlLmgKQEAgLTg2LDExICs4Niw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICYmIG1f
ZW5kT2Zmc2V0ID09IG90aGVyLm1fZW5kT2Zmc2V0OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBTb3VyY2VDb2RlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgT3JkaW5hbE51bWJl
ciBtX2ZpcnN0TGluZTsKICAgICBPcmRpbmFsTnVtYmVyIG1fc3RhcnRDb2x1bW47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtleS5oCmluZGV4IDAwZDNhZjk0ZDMx
YzMyYWE3MTUwZGNmMjM3YjQwYTQ4YjQwYzY5YTYuLmE5ZjA0ZTMxNjkyYTlhY2VkYWU3ZWZkMGEw
MDE3MDM3MjYwMjU4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlQ29kZUtleS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
Q29kZUtleS5oCkBAIC0xMTksMTEgKzExOSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICYmIHN0
cmluZygpID09IG90aGVyLnN0cmluZygpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTb3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KICAgICBzdHJ1Y3QgSGFzaCB7CiAgICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSkgeyByZXR1cm4ga2V5
Lmhhc2goKTsgfQogICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTb3VyY2VDb2RlS2V5
JiBhLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9yaWdpbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmgKaW5kZXggMWVlYWJl
NzBkYmQzNWQ3MWE1NDI3YjVmYmY2OGQ5NTYyNTQ5ZTRmZi4uNGRkN2Q4NzZhNjVlNzYwZjJkMjFl
M2NlMmQ1YmUxMjhmOGVlMmJlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVyT3JpZ2luLmgKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgogICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleDsg
fQogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcmlnaW4mKSBjb25zdDsKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgT3JpZ2luJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAgICAgCiAgICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQuaAppbmRleCAwZTQyMzI0Y2YyYTliMGQwNWQ4ZTM0ZDNm
YjhkNGM2MDY4N2FkZWFlLi5iMjMxNmZiNDljNTg1OGZhYWQyNzBjYjAxNDZlNDZkNTk0MmFkZmNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQuaApAQCAt
NjEsMTEgKzYxLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV91aWQgPT0gb3RoZXIubV91
aWQ7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVSUQmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLSAg
ICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiAqdGhpcyAhPSBVSUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlYWJsZUlkZW50aWZpZXIuaAppbmRleCAxMWZmYjg5ODMxZGU3MTc5MzNlMmU0OTY0
MmU1NTc3NzY5YjhiN2RmLi41MWE3MjM4MzA4OGY2YzE4MTkzMmI1MDhmN2M1Y2NhM2ZkNGQ1ZDFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVu
dGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRl
bnRpZmllci5oCkBAIC01NSw5ICs1NSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgaW5saW5lIENh
Y2hlYWJsZUlkZW50aWZpZXIgY3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihVbmlxdWVkU3Ry
aW5nSW1wbCopOwogICAgIHN0YXRpYyBjb25zdGV4cHIgQ2FjaGVhYmxlSWRlbnRpZmllciBjcmVh
dGVGcm9tUmF3Qml0cyh1aW50cHRyX3QgcmF3Qml0cykgeyByZXR1cm4gQ2FjaGVhYmxlSWRlbnRp
ZmllcihyYXdCaXRzKTsgfQogCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllcihjb25zdCBDYWNoZWFi
bGVJZGVudGlmaWVyJikgPSBkZWZhdWx0OwotICAgIENhY2hlYWJsZUlkZW50aWZpZXIoQ2FjaGVh
YmxlSWRlbnRpZmllciYmKSA9IGRlZmF1bHQ7Ci0KICAgICBDYWNoZWFibGVJZGVudGlmaWVyKHN0
ZDo6bnVsbHB0cl90KQogICAgICAgICA6IG1fYml0cygwKQogICAgIHsgfQpAQCAtNzYsMTIgKzcz
LDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIHVpZCgp
LT5zeW1ib2xBd2FyZUhhc2goKTsgfQogCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciYgb3BlcmF0
b3I9KGNvbnN0IENhY2hlYWJsZUlkZW50aWZpZXImKSA9IGRlZmF1bHQ7Ci0gICAgQ2FjaGVhYmxl
SWRlbnRpZmllciYgb3BlcmF0b3I9KENhY2hlYWJsZUlkZW50aWZpZXImJikgPSBkZWZhdWx0Owot
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhY2hlYWJsZUlkZW50aWZpZXImIG90aGVyKSBj
b25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2FjaGVhYmxlSWRlbnRpZmllciYgb3Ro
ZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiBvdGhlcikg
Y29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhY2hlYWJsZUlkZW50aWZpZXImKSBj
b25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogCiAg
ICAgc3RhdGljIGlubGluZSBib29sIGlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoSlNDZWxsKik7
CiAgICAgc3RhdGljIGlubGluZSBib29sIGlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoSlNWYWx1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJ
ZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVh
YmxlSWRlbnRpZmllcklubGluZXMuaAppbmRleCBmYTkxYmNmODljMDAwZDlhZTA4ODU5YjNmMmNj
YzdlNzUxMzk5YWVmLi5hZTUyZWM0ODc5NzQ3Y2MyM2Q5ZTYxN2I1YmY2ZWYyZGEwNjg2M2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlm
aWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJs
ZUlkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTEzNSwxNyArMTM1LDExIEBAIGlubGluZSB2b2lkIENh
Y2hlYWJsZUlkZW50aWZpZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0
CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY2VsbCgpKTsKIH0KIAotCiBpbmxp
bmUgYm9vbCBDYWNoZWFibGVJZGVudGlmaWVyOjpvcGVyYXRvcj09KGNvbnN0IENhY2hlYWJsZUlk
ZW50aWZpZXImIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiB1aWQoKSA9PSBvdGhlci51aWQo
KTsKIH0KIAotaW5saW5lIGJvb2wgQ2FjaGVhYmxlSWRlbnRpZmllcjo6b3BlcmF0b3IhPShjb25z
dCBDYWNoZWFibGVJZGVudGlmaWVyJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gdWlkKCkg
IT0gb3RoZXIudWlkKCk7Ci19Ci0KIGlubGluZSBib29sIENhY2hlYWJsZUlkZW50aWZpZXI6Om9w
ZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHVp
ZCgpID09IG90aGVyLmltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhZ2VkQmFycmllclB0ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FnZWRCYXJyaWVyUHRyLmgKaW5kZXggMzhiZWY1MDZlZDkxN2JlYWI2ZWNhZmY0NzcxMjFjYjli
MjZhNDFkNi4uZTYwYTJiYzM5MjAyZDdlNDI5YTgwYmEwMjJlNzA0YmUwNTU2M2Y0MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FnZWRCYXJyaWVyUHRyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FnZWRCYXJyaWVyUHRyLmgKQEAgLTcy
LDExICs3Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYmFycmllci5nZXQoKSA9PSBv
dGhlci5tX2JhcnJpZXIuZ2V0KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBDYWdlZEJhcnJpZXJQdHImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLSAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhIW1fYmFycmllci5nZXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUFubm90YXRpb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUFubm90YXRpb24uaAppbmRleCAwN2Ux
MmVkZWI4OGJiNDE1Y2ZlYjZhYzVhZDNhODZhY2ViMzhmNzA3Li41Njk1ODc0OTJlZGRjZDU0ODlk
YWI1YzkxOWUwNjdmZDQ3YWZlNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9ET01Bbm5vdGF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRE9NQW5ub3RhdGlvbi5oCkBAIC0zNiwyMCArMzYsMTAgQEAgY2xhc3MgR2V0dGVyU2V0dGVy
OwogfQogCiBzdHJ1Y3QgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci1wdWJsaWM6CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvOwogICAgIGNvbnN0IERPTUpJVDo6R2V0
dGVyU2V0dGVyKiBkb21KSVQ7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERPTUF0dHJpYnV0
ZUFubm90YXRpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IERPTUF0dHJpYnV0ZUFubm90YXRpb24mIGxlZnQsIGNvbnN0IERPTUF0dHJpYnV0
ZUFubm90YXRpb24mIHJpZ2h0KQotewotICAgIHJldHVybiBsZWZ0LmNsYXNzSW5mbyA9PSByaWdo
dC5jbGFzc0luZm8gJiYgbGVmdC5kb21KSVQgPT0gcmlnaHQuZG9tSklUOwotfQotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IERPTUF0dHJpYnV0ZUFubm90YXRpb24mIGxlZnQsIGNvbnN0
IERPTUF0dHJpYnV0ZUFubm90YXRpb24mIHJpZ2h0KQotewotICAgIHJldHVybiAhKGxlZnQgPT0g
cmlnaHQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNPZmZzZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyaWNPZmZzZXQuaAppbmRleCAxNDEzYjUxNDEyOGQzM2ZmZTI4ZTMxMjMx
MTA2MzM4ODViMTQ0MGQ5Li5lZmY0MWQ2ZGIyMjYwOTUwOGJiMzIwNGU5OGQ5Nzc1MWQ3ZDQxOWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljT2Zmc2V0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY09mZnNldC5oCkBA
IC02MCwzMCArNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29mZnNldDsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdlbmVyaWNPZmZzZXQmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0Owot
ICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR2VuZXJpY09mZnNldCYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9vZmZzZXQgIT0gb3RoZXIubV9vZmZzZXQ7Ci0g
ICAgfQotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEdlbmVyaWNPZmZzZXQmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0IDwgb3RoZXIubV9vZmZzZXQ7Ci0gICAg
fQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IEdlbmVyaWNPZmZzZXQmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID4gb3RoZXIubV9vZmZzZXQ7Ci0gICAgfQot
ICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBHZW5lcmljT2Zmc2V0JiBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX29mZnNldCA8PSBvdGhlci5tX29mZnNldDsKLSAgICB9Ci0g
ICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IEdlbmVyaWNPZmZzZXQmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID49IG90aGVyLm1fb2Zmc2V0OwotICAgIH0KKyAg
ICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihHZW5lcmljT2Zmc2V0LCBHZW5lcmljT2Zmc2V0KSA9
IGRlZmF1bHQ7CiAgICAgCiAgICAgVCBvcGVyYXRvcisoaW50IHZhbHVlKSBjb25zdAogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCBjMDdlNzdlNDEzM2I5
NWY4NjZjZjA3MzA0MmEyNTMzMzk0OWIxMzkwLi42Yjg4M2QwMTQwNTc0ZjdmYzM5YjNiYTNkNjEz
MzNhMTc1OWNiNGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
U084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBA
IC0xNDUsMzAgKzE0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vj
b25kcyA+PSBFeGFjdFRpbWU6Om1pblZhbHVlICYmIG1fZXBvY2hOYW5vc2Vjb25kcyA8PSBFeGFj
dFRpbWU6Om1heFZhbHVlOwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChF
eGFjdFRpbWUgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9z
ZWNvbmRzIDwgb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwotICAgIH0KLSAgICBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcjw9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPD0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwotICAg
IH0KLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KEV4YWN0VGltZSBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPT0gb3RoZXIubV9lcG9j
aE5hbm9zZWNvbmRzOwotICAgIH0KLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KEV4YWN0
VGltZSBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29u
ZHMgIT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwotICAgIH0KLSAgICBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj49KEV4YWN0VGltZSBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2Vwb2NoTmFub3NlY29uZHMgPj0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwotICAgIH0K
LSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRXhhY3RUaW1lIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA+IG90aGVyLm1fZXBvY2hOYW5v
c2Vjb25kczsKLSAgICB9CisgICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oRXhhY3RUaW1lLCBF
eGFjdFRpbWUpID0gZGVmYXVsdDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiBhZGQo
RHVyYXRpb24pIGNvbnN0OwogICAgIEludDEyOCBkaWZmZXJlbmNlKEV4YWN0VGltZSBvdGhlciwg
dW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggMWM5ZmU1NTY1
MDFmMGEyYTdjZjBkMDhlMTE4MmI2NTk3YzAxYzBmZi4uN2E0OWRiNDY5Y2IxNGE1ZWY2NDhkMzZh
MmM0Y2JjMTdjODdhMWYzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuaApAQCAtMTQ2LDEyICsxNDYsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1ByaXZhdGVO
YW1lKCkgY29uc3QgeyByZXR1cm4gaXNTeW1ib2woKSAmJiBzdGF0aWNfY2FzdDxjb25zdCBTeW1i
b2xJbXBsKj4oaW1wbCgpKS0+aXNQcml2YXRlKCk7IH0KIAogICAgIGZyaWVuZCBib29sIG9wZXJh
dG9yPT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICBmcmllbmQg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyJik7CiAK
ICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBMQ2hh
ciopOwogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IGNoYXIqKTsKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBMQ2hhciopOwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IGNoYXIqKTsKIAogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0lt
cGwqLCBjb25zdCBMQ2hhciopOwogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBT
dHJpbmdJbXBsKmEsIGNvbnN0IGNoYXIqYikgeyByZXR1cm4gSWRlbnRpZmllcjo6ZXF1YWwoYSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfTsKQEAgLTIzNSwxMSArMjMyLDYg
QEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBJZGVu
dGlmaWVyJiBiKQogICAgIHJldHVybiBJZGVudGlmaWVyOjplcXVhbChhLCBiKTsKIH0KIAotaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBJZGVudGlmaWVy
JiBiKQotewotICAgIHJldHVybiAhSWRlbnRpZmllcjo6ZXF1YWwoYSwgYik7Ci19Ci0KIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgTENoYXIqIGIpCiB7
CiAgICAgcmV0dXJuIElkZW50aWZpZXI6OmVxdWFsKGEsIGIpOwpAQCAtMjUwLDE2ICsyNDIsNiBA
QCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IGNoYXIq
IGIpCiAgICAgcmV0dXJuIElkZW50aWZpZXI6OmVxdWFsKGEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihiKSk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSWRlbnRp
ZmllciYgYSwgY29uc3QgTENoYXIqIGIpCi17Ci0gICAgcmV0dXJuICFJZGVudGlmaWVyOjplcXVh
bChhLCBiKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiBh
LCBjb25zdCBjaGFyKiBiKQotewotICAgIHJldHVybiAhSWRlbnRpZmllcjo6ZXF1YWwoYSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsKLX0KLQogaW5saW5lIGJvb2wgSWRlbnRp
Zmllcjo6ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogciwgY29uc3QgTENoYXIqIHMpCiB7CiAgICAg
cmV0dXJuIFdURjo6ZXF1YWwociwgcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKaW5kZXggZThhNGU3YTYyMzM5ZDM2YmVhMGY3MjU3YjQxNzM1ZWM4MjQzZWY1
Ny4uYjE3MWJkM2NlODFlODYzNWQ4ZjE3NzFkNDAyYWZlNWU0ZGE0Mzg1MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjEwLDcgKzIxMCw2IEBAIHB1
YmxpYzoKIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3Q7CiAKICAgICBib29sIGlzSW50MzIoKSBjb25z
dDsKICAgICBib29sIGlzVUludDMyKCkgY29uc3Q7CkBAIC02NzMsMTAgKzY3Miw2IEBAIEFMV0FZ
U19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEpTVmFsdWUoKQogfQogCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUgYSwgY29uc3QgSlNDZWxsKiBiKSB7IHJldHVybiBh
ID09IEpTVmFsdWUoYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNDZWxsKiBh
LCBjb25zdCBKU1ZhbHVlIGIpIHsgcmV0dXJuIEpTVmFsdWUoYSkgPT0gYjsgfQotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUgYSwgY29uc3QgSlNDZWxsKiBiKSB7IHJldHVy
biBhICE9IEpTVmFsdWUoYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNDZWxs
KiBhLCBjb25zdCBKU1ZhbHVlIGIpIHsgcmV0dXJuIEpTVmFsdWUoYSkgIT0gYjsgfQogCiAKIGJv
b2wgaXNUaGlzVmFsdWVBbHRlcmVkKGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCmluZGV4IDhmNWMwNzE5ODg2ZjUyNGYyY2EyYjZlN2NmNGJmNWExNTA0Mzk1
NTIuLmM2MTZhNDIzOWFlNjY3ODVmZDhhNjI2Njk5NWQ4ODBlOTgwZGFlMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtMzI1
LDExICszMjUsNiBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IEpTVmFs
dWUmIG90aGVyKSBjb25zdAogICAgIHJldHVybiB1LmFzSW50NjQgPT0gb3RoZXIudS5hc0ludDY0
OwogfQogCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUmIG90
aGVyKSBjb25zdAotewotICAgIHJldHVybiB1LmFzSW50NjQgIT0gb3RoZXIudS5hc0ludDY0Owot
fQotCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0VtcHR5KCkgY29uc3QKIHsKICAgICByZXR1cm4g
dGFnKCkgPT0gRW1wdHlWYWx1ZVRhZzsKQEAgLTQ3NywxMSArNDcyLDYgQEAgaW5saW5lIGJvb2wg
SlNWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3QKICAgICByZXR1
cm4gdS5hc0ludDY0ID09IG90aGVyLnUuYXNJbnQ2NDsKIH0KIAotaW5saW5lIGJvb2wgSlNWYWx1
ZTo6b3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4g
dS5hc0ludDY0ICE9IG90aGVyLnUuYXNJbnQ2NDsKLX0KLQogaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHUuYXNJbnQ2NCA9PSBWYWx1ZUVtcHR5Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCmluZGV4IDg0ZjdhOTk3MjJhNWI4
ZDA0YWFjMDkyMWRkOTk4ZTBlOGRjOGNiYjIuLjM3ZTE1MDMyMGRkMWI0NGUzYWRiY2ZiMWQxYzAx
NmU0Nzk5ODllMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKQEAg
LTExNiw3ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5
IG9taXR0ZWQKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY29wZUNoYWluSXRlcmF0b3Im
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlOyB9Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFNjb3BlQ2hhaW5JdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fbm9kZSAhPSBvdGhlci5tX25vZGU7IH0KIAogcHJpdmF0ZToKICAgICBKU1Njb3BlKiBt
X25vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24u
aAppbmRleCBjZTA3MTEzZTJhYjE4MTUwNzVlNTQ0ZjI4MzgzYjExZGM2OTIyNTIxLi5lMmZlOWQ0
ZmQzYTI4ZWNjYTUxNTk2N2I2NzkzMDA4YzQyMDAxMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uLmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGlj
OgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcHRyOyB9
CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KICAgICBib29s
IG9wZXJhdG9yPT0oTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09
IG90aGVyLm1fcHRyOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KE5hdGl2ZUZ1bmN0aW9uIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBvdGhlci5tX3B0cjsgfQogCiAgICAgRW5jb2RlZEpT
VmFsdWUgb3BlcmF0b3IoKShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkgeyByZXR1cm4gbV9wdHIoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOyB9CiAK
QEAgLTc5LDcgKzc4LDYgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhIW1fcHRyOyB9CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJl
dHVybiAhbV9wdHI7IH0KICAgICBib29sIG9wZXJhdG9yPT0oVGFnZ2VkTmF0aXZlRnVuY3Rpb24g
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09IG90aGVyLm1fcHRyOyB9Ci0gICAgYm9vbCBv
cGVyYXRvciE9KFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0
ciAhPSBvdGhlci5tX3B0cjsgfQogCiAgICAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0b3IoKShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4g
TmF0aXZlRnVuY3Rpb24oKnRoaXMpKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4IDgxYTVjOTA5NjVjNmZk
ZTQyNGE2YTE2Y2UwMDQ0NzJmY2IxN2RhMDMuLjM2ZmVhYTg5MWM2OTcyNmI2ZjVkZDhlYWY2NWEx
NTMwZjQwMGNhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CkBAIC05NDksOCArOTQ5LDcgQEAgc3RydWN0IE9wdGlvblJlYWRlciB7CiAgICAgcHVibGljOgog
ICAgICAgICB2b2lkIGR1bXAoU3RyaW5nQnVpbGRlciYpIGNvbnN0OwogCi0gICAgICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdDsKLSAgICAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb24mKSBjb25zdDsKIAog
ICAgICAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19jb25z
dE1ldGFEYXRhW21faWRdLm5hbWU7IH0KICAgICAgICAgY29uc3QgY2hhciogZGVzY3JpcHRpb24o
KSBjb25zdCB7IHJldHVybiBPcHRpb25zOjpzX2NvbnN0TWV0YURhdGFbbV9pZF0uZGVzY3JpcHRp
b247IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVO
YW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCmluZGV4
IGY3MDBiNWQ3YjNjMTJkZDEzOGRkMzY5MDM5MDhmMmVhMmMzZDViM2UuLjk4N2VmYjFmM2Y1N2U2
MzY0YjMxZWFlNzZlZWVmZTIxYTkwNTAyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJpdmF0ZU5hbWUuaApAQCAtNjQsNyArNjQsNiBAQCBwdWJsaWM6CiAgICAgU3ltYm9s
SW1wbCYgdWlkKCkgY29uc3QgeyByZXR1cm4gbV91aWQ7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICZ1aWQoKSA9PSAmb3Ro
ZXIudWlkKCk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJpdmF0ZU5hbWUmIG90aGVy
KSBjb25zdCB7IHJldHVybiAmdWlkKCkgIT0gJm90aGVyLnVpZCgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgUmVmPFN5bWJvbEltcGw+IG1fdWlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU5hbWUuaAppbmRleCA0ZTgyZDA5OGJhMmE5YjhhM2YzODQ3Y2FlNjM5MDNkOGYx
YzZkNTE0Li5lMDBlYTZjZjJlYTU4MThjYTEwMTBkNmE5NWQ1ZmFmOGIyYTAxMjFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaApAQCAtMTA2LDIxICsx
MDYsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFByb3BlcnR5TmFtZSBhLCBjb25zdCBjaGFy
KiBiKQogICAgIHJldHVybiBlcXVhbChhLnVpZCgpLCBiKTsKIH0KIAotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShQcm9wZXJ0eU5hbWUgYSwgY29uc3QgSWRlbnRpZmllciYgYikKLXsKLSAgICByZXR1
cm4gYS51aWQoKSAhPSBiLmltcGwoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBJZGVudGlmaWVyJiBhLCBQcm9wZXJ0eU5hbWUgYikKLXsKLSAgICByZXR1cm4gYS5pbXBsKCkg
IT0gYi51aWQoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShQcm9wZXJ0eU5hbWUgYSwg
UHJvcGVydHlOYW1lIGIpCi17Ci0gICAgcmV0dXJuIGEudWlkKCkgIT0gYi51aWQoKTsKLX0KLQog
QUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgYXV0byB1aWQgPSBwcm9wZXJ0eU5hbWUudWlkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgKaW5kZXgg
Nzk5MGViNjA4MWRhNDI2MmY4ZDAzYWIyODJjZTk5YmY0MjlhMjQxNS4uZWVlNjdmODRlNDAzOWYz
MTU1NDgzY2YyZGE3MGQ1MWM4OGU5ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5VGFibGUuaApAQCAtOTYsMTEgKzk2LDYgQEAgY2xhc3MgUHJvcGVydHlU
YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQ
dHIgPT0gb3RoZXIubV92YWx1ZVB0cjsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBvcmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQdHIgIT0gb3RoZXIubV92YWx1ZVB0cjsKLSAgICAg
ICAgfQotCiAgICAgICAgIFQmIG9wZXJhdG9yKigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiAqbV92YWx1ZVB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3RvdHlwZUtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90
eXBlS2V5LmgKaW5kZXggYTdmOTQ3MGYxOTQyYTk5NWZjNDkxY2E0MjdkMWEzMDlhZGY4NWIyYS4u
MGFjYTY5NGE2ZDE0NmZhNzMyOWQxNTQ1NmI0YjNiOGIyYjUzNGU1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmgKQEAgLTU3LDE2ICs1Nyw4IEBAIHB1
YmxpYzoKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xhc3NJbmZvOyB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFByb3RvdHlwZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9wcm90
b3R5cGUgPT0gb3RoZXIubV9wcm90b3R5cGUKLSAgICAgICAgICAgICYmIG1fZXhlY3V0YWJsZSA9
PSBvdGhlci5tX2V4ZWN1dGFibGUKLSAgICAgICAgICAgICYmIG1faW5saW5lQ2FwYWNpdHkgPT0g
b3RoZXIubV9pbmxpbmVDYXBhY2l0eQotICAgICAgICAgICAgJiYgbV9jbGFzc0luZm8gPT0gb3Ro
ZXIubV9jbGFzc0luZm8KLSAgICAgICAgICAgICYmIG1fZ2xvYmFsT2JqZWN0ID09IG90aGVyLm1f
Z2xvYmFsT2JqZWN0OwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvdG90eXBl
S2V5JikgY29uc3QgPSBkZWZhdWx0OwogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQ
cm90b3R5cGVLZXkmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBQcm90
b3R5cGVLZXkoKTsgfQogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7
IHJldHVybiAqdGhpcyA9PSBQcm90b3R5cGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
OyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCmluZGV4IDgwNjJjMmM3ODdjM2Y1YThiZDZiMmJhYzdl
Mzg4YTJjNjNiNDZmYTEuLmJiNzNlMGM5NTRjYTM0MzMxZTA3ZjJmOTViN2ZkMGM2YzYzODgxNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5z
aXRpb25UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZS5oCkBAIC0xODYsMTUgKzE4Niw3IEBAIGNsYXNzIFN0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZSB7CiAgICAgICAgICAgICBUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiAobV9lbmNvZGVkRGF0YSA+PiBhdHRyaWJ1dGVz
U2hpZnQpICYgVUlOVDhfTUFYOyB9CiAgICAgICAgICAgICBUcmFuc2l0aW9uS2luZCB0cmFuc2l0
aW9uS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRyYW5zaXRpb25LaW5kPihtX2Vu
Y29kZWREYXRhID4+IHRyYW5zaXRpb25LaW5kU2hpZnQpOyB9CiAKLSAgICAgICAgICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGEubV9lbmNvZGVkRGF0YSA9PSBiLm1fZW5jb2Rl
ZERhdGE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
IT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGEubV9lbmNvZGVkRGF0YSAhPSBiLm1fZW5jb2RlZERhdGE7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JikgY29uc3QgPSBk
ZWZhdWx0OwogCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICB1aW50cHRyX3QgbV9lbmNv
ZGVkRGF0YSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgKaW5kZXggY2NmOTA0Zjg4OGM4NDRkYmY5ZjIz
NmFiOTdmN2YxOGMxYjYyNDJjMi4uOGY0ODQyMzYyMmVhMGQ3MmJhNTc1NTk2NTc5MWM4N2ZiYjdk
MDcwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHVibGljOgogICAgIGNv
bnN0IE9wdGlvbmFsU3RyaW5nVmVjdG9yJiBjb29rZWRTdHJpbmdzKCkgY29uc3QgeyByZXR1cm4g
bV9jb29rZWRTdHJpbmdzOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9oYXNoID09IG90aGVyLm1f
aGFzaCAmJiBtX3Jhd1N0cmluZ3MgPT0gb3RoZXIubV9yYXdTdHJpbmdzOyB9Ci0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG1faGFzaCAhPSBvdGhlci5tX2hhc2ggfHwgbV9yYXdTdHJpbmdzICE9IG90aGVyLm1f
cmF3U3RyaW5nczsgfQogCiAgICAgc3RydWN0IEhhc2hlciB7CiAgICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciYga2V5KSB7IHJldHVybiBr
ZXkuaGFzaCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
YXJPZmZzZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Zhck9mZnNldC5oCmlu
ZGV4IDQyYzM3YzExYTFhY2U0MjQ0ZGY3ZDM4MWU0NjU1Y2VlZmM5NjIxOWUuLjBhNGNhYzFiM2Mx
ZjdlNjdkY2M5NDgzZjI0MzcyNTg2Zjc3YzljMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Zhck9mZnNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Zhck9mZnNldC5oCkBAIC0xOTAsMTYgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBWYXJPZmZzZXQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2lu
ZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zm
c2V0OwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVmFyT2Zmc2V0JiBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAg
ICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZhck9mZnNldCYpIGNvbnN0ID0gZGVmYXVs
dDsKICAgICAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCA1YmM0MjYw
OTJiOTE3NjhhMGY5MjAxYTliN2QxM2Q4MWU5NGYyNGQ0Li4wOWEyYjI5Yjg1MjA2ZDBhYWM2ZWUz
ZmY5Mjg3YWVjZjA1ZjY3MDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTk1LDE5ICs5NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgLCBtX3R5cGUodHlwZSkKICAgICB7IH0KIAotICAgIFR5cGVkVG1wKGNvbnN0IFR5cGVkVG1w
JikgPSBkZWZhdWx0OwotICAgIFR5cGVkVG1wKFR5cGVkVG1wJiYpID0gZGVmYXVsdDsKLSAgICBU
eXBlZFRtcCYgb3BlcmF0b3I9KFR5cGVkVG1wJiYpID0gZGVmYXVsdDsKLSAgICBUeXBlZFRtcCYg
b3BlcmF0b3I9KGNvbnN0IFR5cGVkVG1wJikgPSBkZWZhdWx0OwotCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFR5cGVkVG1wJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X3RtcCA9PSBvdGhlci5tX3RtcCAmJiBtX3R5cGUgPT0gb3RoZXIubV90eXBlOwotICAgIH0KLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgVHlwZWRUbXAmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgVHlwZWRUbXAmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISF0bXAoKTsgfQogCkBAIC0xMjIsNyArMTEwLDYg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLQogICAgIFRtcCBtX3RtcDsKICAgICBUeXBl
IG1fdHlwZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
UGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgK
aW5kZXggYjdkOGM5ZmNmNzJiMTQ3OWMzYTNmMTIzYmZhMmI0ZDJkMjQ3Y2NlMi4uM2NhZjFiNDU5
MmI5YThkZjQzZDNhZWY2YTljNzgxNDdkMmIzYjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21QYWdlQ291bnQuaApAQCAtODMsOSArODMsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3BhZ2VDb3VudCAhPSBVSU5UX01BWDsKICAgICB9CiAKLSAgICBib29sIG9wZXJh
dG9yPChjb25zdCBQYWdlQ291bnQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDb3VudCA8
IG90aGVyLm1fcGFnZUNvdW50OyB9Ci0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUGFnZUNvdW50
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wYWdlQ291bnQgPiBvdGhlci5tX3BhZ2VDb3VudDsg
fQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBQYWdlQ291bnQmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VDb3VudCA+PSBvdGhlci5tX3BhZ2VDb3VudDsgfQorICAgIGZyaWVuZCBhdXRv
IG9wZXJhdG9yPD0+KFBhZ2VDb3VudCwgUGFnZUNvdW50KSA9IGRlZmF1bHQ7CisKICAgICBQYWdl
Q291bnQgb3BlcmF0b3IrKGNvbnN0IFBhZ2VDb3VudCYgb3RoZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoc3VtT3ZlcmZsb3dzPHVpbnQzMl90PihtX3BhZ2VDb3VudCwgb3RoZXIubV9wYWdl
Q291bnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhZy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhZy5oCmluZGV4IGJkZmNmYjY4OGUy
ZDFlOTc5YWQwY2NmNGMxYWFmMDZmOTkyNDA1MjQuLjVlZjdkNmU3N2Y0MDQ1MDY5OWMyN2U0MjAz
YjNjZWVkYjZjNGIzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21UYWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFnLmgKQEAgLTQz
LDcgKzQzLDYgQEAgcHVibGljOgogICAgIC8vIFNpbmNlICgxKSB3ZSBkbyBub3QgY29weSBXYXNt
OjpUYWcgYW5kICgyKSB3ZSBhbHdheXMgYWxsb2NhdGUgV2FzbTo6VGFnIGZyb20gaGVhcCwgd2Ug
Y2FuIHVzZQogICAgIC8vIHBvaW50ZXIgY29tcGFyaXNvbiBmb3IgaWRlbnRpdHkgY2hlY2suCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRhZyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHRoaXMg
PT0gJm90aGVyOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRhZyYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIHRoaXMgIT0gJm90aGVyOyB9CiAKICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbmF0dXJlLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRv
bWF0aWNUaHJlYWQuY3BwCmluZGV4IGY0ZWE3OGQxM2UxY2RkYjYxOWI4MjI4NjhkMzNjNzI3Yzlm
MmY5OGIuLjg4MjdiNTA5MWZkMTNmY2VlOTQ2MmEzNDkxODMzNjBlMTk4ZjI1MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvQXV0b21hdGljVGhyZWFkLmNwcApAQCAtMjQ1LDQgKzI0NSwzIEBAIHZvaWQgQXV0b21hdGlj
VGhyZWFkOjp0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV1RGCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JhZy5oIGIvU291
cmNlL1dURi93dGYvQmFnLmgKaW5kZXggNTA0MmE0ZGRkMWVjYjBjN2I2YjllYjMzOGZmNzhhMzE4
MTJlNjZlNy4uNzZjZmFjMjBiNWM2MTVhZDE0ZGE3YmU2MWM3OGE0YWNiMWU5NWRmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvQmFnLmgKKysrIGIvU291cmNlL1dURi93dGYvQmFnLmgKQEAg
LTEyNCwxNSArMTI0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3Im
IG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9ub2RlID09IG90
aGVyLm1fbm9kZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBp
dGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
aXRlcmF0b3ImKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBwcml2YXRlOgogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBXVEY6OkJhZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvQml0VmVjdG9y
LmgKaW5kZXggMTliZTQ3MjYyOGNmZmI4M2Y5Nzk4MGFjYzNmYTY2MDA3YWI5ZTI0YS4uNzQyNWZj
ZGJkNWYxZGUzYTAxMjY0ZGNhNTZlZWEwOWNlOGIyOTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmgKQEAgLTMz
NywxMCArMzM3LDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3Ro
ZXIubV9pbmRleDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9CiAgICAgcHJpdmF0ZToKICAgICAgICAg
Y29uc3QgQml0VmVjdG9yKiBtX2JpdFZlY3RvcjsKICAgICAgICAgc2l6ZV90IG1faW5kZXg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaCBiL1NvdXJjZS9XVEYvd3RmL0JpdG1h
cC5oCmluZGV4IGJkYjM5MDhiYTYxZTQzYWU4ODI0YmJmMWRlNjUwZjRlODQ2MzdmZDMuLjEyMjQ5
YmY0MThkOTIwZWY0MTRjZjgxZDg1NWRmZGUwODNhZDNhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0JpdG1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCkBAIC0xMDUsMTEg
KzEwNSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1f
aW5kZXg7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgY29u
c3QgQml0bWFwKiBtX2JpdG1hcDsKICAgICAgICAgc2l6ZV90IG1faW5kZXg7CkBAIC0xMjQsOCAr
MTE5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRFYWNoTnRoQml0KHNpemVfdCBuLCBzaXpl
X3Qgc3RhcnQgPSAwLCBzaXplX3QgZW5kID0gYml0bWFwU2l6ZSk7CiAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQml0bWFwJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJp
dG1hcCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCaXRtYXAmKSBjb25zdCA9
IGRlZmF1bHQ7CiAKICAgICB2b2lkIG9wZXJhdG9yfD0oY29uc3QgQml0bWFwJik7CiAgICAgdm9p
ZCBvcGVyYXRvciY9KGNvbnN0IEJpdG1hcCYpOwpAQCAtNDY3LDIyICs0NjEsNiBAQCBpbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRFYWNoTnRoQml0KHNpemVfdCBu
LCBzaXplX3Qgc3RhcnQsCiAgICAgfQogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwg
dHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5
cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7Ci0gICAgICAgIGlmIChiaXRzW2ldICE9IG90
aGVyLmJpdHNbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvciE9
KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOwotfQotCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CiBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvcnw9KGNv
bnN0IEJpdG1hcCYgb3RoZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Cb3hQdHIu
aCBiL1NvdXJjZS9XVEYvd3RmL0JveFB0ci5oCmluZGV4IDk4NDg4MDJkMTA3N2M5MWU1ZWFlYzM4
OWZiMmM1ODliYzljMjZjMzQuLjE1OTBhZWUzOGY1MDMwNDU1ZGE1ZjY3NWVjNWEzNDJlOTllMjU4
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0JveFB0ci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0JveFB0ci5oCkBAIC02OCwxMSArNjgsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29s
IG9wZXJhdG9yPT0oY29uc3QgQm94UHRyPFQ+JiBsaHMsIGNvbnN0IEJveFB0cjxUPiYgcmhzKQog
ICAgIHJldHVybiAqbGhzID09ICpyaHM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wg
b3BlcmF0b3IhPShjb25zdCBCb3hQdHI8VD4mIGxocywgY29uc3QgQm94UHRyPFQ+JiByaHMpCi17
Ci0gICAgcmV0dXJuICEobGhzID09IHJocyk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1
c2luZyBXVEY6OmFkb3B0SW5Cb3hQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DYWdl
ZFB0ci5oIGIvU291cmNlL1dURi93dGYvQ2FnZWRQdHIuaAppbmRleCA2NGE4YzAxODY0MDU4MDA4
YTVlNWU5OTM5MmRmNDQ4NzdmMTg5NzFmLi5lMjc3Nzg5MmNmNzI5YWNlYzgwYmFlNGI5OTliMjQ0
MDhkYTU0NDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DYWdlZFB0ci5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0NhZ2VkUHRyLmgKQEAgLTEyNCwxMSArMTI0LDYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgQ2FnZWRQdHImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOwotICAgIH0KLSAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBnZXRVbnNhZmUoKSAhPSBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3Rm
L0NoZWNrZWRBcml0aG1ldGljLmgKaW5kZXggOWMxYTVmYzc0MjQxODVkZDI5N2EwMWJlZGJmY2Ew
MmNiZWYxOTU1OS4uZjAzYzlhYWFhZjhiM2NiNzgwMjI0N2Y1YTJjM2YzNzQzMjg4YmU0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCkBAIC04NDEsNDggKzg0MSwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiAqdGhpcyAqPSByaHMubV92YWx1ZTsKICAgICB9CiAKLSAgICAvLyBF
cXVhbGl0eSBjb21wYXJpc29ucwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPiBib29sIG9wZXJh
dG9yPT0oQ2hlY2tlZDxULCBWPiByaHMpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5k
IGF1dG8gb3BlcmF0b3I8PT4oQ2hlY2tlZCBhLCBVIGIpCiAgICAgewotICAgICAgICByZXR1cm4g
dmFsdWUoKSA9PSByaHMudmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGEudmFsdWUoKSA8PT4gYjsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj09KFUgcmhz
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I9PShVIHJocykgY29uc3QK
ICAgICB7Ci0gICAgICAgIGlmICh0aGlzLT5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgICAgICB0
aGlzLT5jcmFzaCgpOwotICAgICAgICByZXR1cm4gc2FmZUVxdWFscyhtX3ZhbHVlLCByaHMpOwot
ICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gYm9vbCBv
cGVyYXRvcj09KENoZWNrZWQ8VSwgVj4gcmhzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVl
KCkgPT0gQ2hlY2tlZChyaHMudmFsdWUoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFU+IGJvb2wgb3BlcmF0b3IhPShVIHJocykKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzID09IHJocyk7Ci0gICAgfQotCi0gICAgLy8gT3RoZXIgY29tcGFyaXNvbnMKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVj4gYm9vbCBvcGVyYXRvcjwoQ2hlY2tlZDxULCBWPiByaHMpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gdmFsdWUoKSA8IHJocy52YWx1ZSgpOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPiBib29sIG9wZXJhdG9yPD0oQ2hlY2tlZDxULCBWPiBy
aHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdmFsdWUoKSA8PSByaHMudmFsdWUoKTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVj4gYm9vbCBvcGVyYXRvcj4oQ2hlY2tl
ZDxULCBWPiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdmFsdWUoKSA+IHJocy52
YWx1ZSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPiBib29sIG9wZXJhdG9y
Pj0oQ2hlY2tlZDxULCBWPiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdmFsdWUo
KSA+PSByaHMudmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHNhZmVFcXVhbHModmFsdWUoKSwgcmhz
KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2Vk
UHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkUHRyLmgKaW5kZXggYTFjZjE2MzFmZGNhOWMy
ZmE4ZDk4OWFjNzhkOTUwOWEzYjc4ODNiZi4uMGE3YjA2YTIyODY5MzU4YTZkYzJiZjM3ZjQwMTNk
NTVlNTQ1ZjBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tlZFB0ci5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRQdHIuaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVCogb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRy
ID09IG90aGVyOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj09KFUq
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBvdGhlcjsgfQogCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENoZWNrZWRQdHImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBv
dGhlci5tX3B0cjsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDaGVja2VkUHRyJikgY29u
c3QgPSBkZWZhdWx0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJUeXBlLCB0eXBlbmFt
ZSBPdGhlclB0clRyYWl0cz4KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2hlY2tlZFB0cjxP
dGhlclR5cGUsIE90aGVyUHRyVHJhaXRzPiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09
IG90aGVyLm1fcHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVj
dG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKaW5kZXggODg0ZWQ3MzIz
Mzc2MWEyOWZiNDk2ZjBhZDA5ODk2NzU0NWU3MDM0OC4uZjFlN2ZmN2NiMjNlNzVjZDgxMGRjMjk1
ZWM2ZmZmMjBmNTk4YjM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZl
Y3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaApAQCAtNTksMTEg
KzU5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4
ICYmICZtX3ZlY3RvciA9PSAmb3RoZXIubV92ZWN0b3I7CiAgICAgfQogCi0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2luZGV4ICE9IG90aGVyLm1faW5kZXggfHwgJm1fdmVjdG9yICE9ICZvdGhlci5tX3ZlY3Rv
cjsKLSAgICB9Ci0KICAgICBDb25jdXJyZW50VmVjdG9ySXRlcmF0b3ImIG9wZXJhdG9yPShjb25z
dCBDb25jdXJyZW50VmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+JiBvdGhlcikKICAgICB7
CiAgICAgICAgIG1fdmVjdG9yID0gb3RoZXIubV92ZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9Db3VudGluZ0xvY2suaCBiL1NvdXJjZS9XVEYvd3RmL0NvdW50aW5nTG9jay5oCmlu
ZGV4IGM3ZGIwNWUxMWE2ODkwNjliMjU2NjliOWI0OTczMDEzNTkzNjFjMTcuLjUxOTNjYjAzNjI1
OTUxNTIwODdkYTg4MWYwMmEyMGRiYWMwNzYwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0NvdW50aW5nTG9jay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvdW50aW5nTG9jay5oCkBAIC0x
MTUsOCArMTE1LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV92YWx1ZTsgfQogICAgICAgICAKLSAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92
YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBD
b3VudCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgIT0gb3RoZXIubV92YWx1ZTsgfQor
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ291bnQmKSBjb25zdCA9IGRlZmF1bHQ7CiAg
ICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb3VudGluZ0xvY2s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRhUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9E
YXRhUmVmLmgKaW5kZXggYTI0ZjJmMjhkNTkzODQzNWE3YWYyNTkzN2ZmNDk1MDRjZTAwOTU2OS4u
OTRlNTJkNWVkYTA2NTQyYTlkMDI4NmI1MmUxNjQwNWI2MDZhZjViMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRGF0YVJlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGFSZWYuaApAQCAt
ODgsMTEgKzg4LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpID09IG90
aGVyLm1fZGF0YS5wdHIoKSB8fCBtX2RhdGEuZ2V0KCkgPT0gb3RoZXIubV9kYXRhLmdldCgpOwog
ICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEYXRhUmVmJiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KIHByaXZh
dGU6CiAgICAgUmVmPFQ+IG1fZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9E
YXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAppbmRleCAwN2RkZjM4NTQ2MzNj
YjVlNGNhOTY3OTM1OWMwNDhmMTMzOTVlNGFiLi4wZDdhNmIxMDdlYWQ2NjNkNTJlYjdkODYyMTM3
YmNlMmUxMGFmYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKQEAgLTY2LDE1ICs2Niw3IEBAIHN0cnVjdCBMb2Nh
bFRpbWVPZmZzZXQgewogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
TG9jYWxUaW1lT2Zmc2V0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc0RT
VCA9PSBvdGhlci5pc0RTVCAmJiBvZmZzZXQgPT0gb3RoZXIub2Zmc2V0OwotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBMb2NhbFRpbWVPZmZzZXQmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGlzRFNUICE9IG90aGVyLmlzRFNUIHx8IG9mZnNldCAhPSBvdGhl
ci5vZmZzZXQ7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMb2NhbFRpbWVPZmZz
ZXQmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBib29sIGlzRFNUIHsgZmFsc2UgfTsKICAgICBp
bnQgb2Zmc2V0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGVxdWUuaCBiL1Nv
dXJjZS9XVEYvd3RmL0RlcXVlLmgKaW5kZXggYzk1MjQyYjU4OGZmNjFhMGUwY2ExZjI0NGY3Mjdi
NWFlNzY5MGQ4ZS4uNDNkZWUwN2JlYTM3N2MxM2VjNTliNTFiNWNhZWFhMTNhYWI4ZTkwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGVxdWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EZXF1
ZS5oCkBAIC0yMDEsNyArMjAxLDYgQEAgcHVibGljOgogICAgIFQqIG9wZXJhdG9yLT4oKSBjb25z
dCB7IHJldHVybiBCYXNlOjphZnRlcigpOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBCYXNlOjppc0VxdWFsKG90aGVyKTsgfQot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
ICFCYXNlOjppc0VxdWFsKG90aGVyKTsgfQogCiAgICAgSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7
IEJhc2U6OmluY3JlbWVudCgpOyByZXR1cm4gKnRoaXM7IH0KICAgICAvLyBwb3N0Zml4ICsrIGlu
dGVudGlvbmFsbHkgb21pdHRlZApAQCAtMjM2LDcgKzIzNSw2IEBAIHB1YmxpYzoKICAgICBjb25z
dCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gQmFzZTo6YWZ0ZXIoKTsgfQogCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gQmFz
ZTo6aXNFcXVhbChvdGhlcik7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3Im
IG90aGVyKSBjb25zdCB7IHJldHVybiAhQmFzZTo6aXNFcXVhbChvdGhlcik7IH0KIAogICAgIEl0
ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyBCYXNlOjppbmNyZW1lbnQoKTsgcmV0dXJuICp0aGlzOyB9
CiAgICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5IG9taXR0ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0VtYmVkZGVkRml4ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0VtYmVk
ZGVkRml4ZWRWZWN0b3IuaAppbmRleCA0ZGZiNzk2MzRiZDg2NmI0NDQ4YTIxZDg3NmIyMWQ4NTll
OTdlYjMwLi41YTA2NDhhMGU1ODcxMjE5NjZmYTViMzYwZmNmMjQ0YTRhYTk3OTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oCkBAIC03MiwxMSArNzIsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBjcmVhdGUoQmFzZTo6YmVnaW4oKSwgQmFzZTo6ZW5kKCkpOwogICAgIH0K
IAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbWJlZGRlZEZpeGVkVmVjdG9yJiBvdGhlcikg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0K
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRW1iZWRkZWRGaXhlZFZlY3RvciYgb3RoZXIpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoQmFzZTo6c2l6ZSgpICE9IG90aGVyLnNpemUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9FeHBl
Y3RlZC5oCmluZGV4IDc0NzJmZmFhMjIyY2RjZmE1NDQ5MTQzYzMzNmI0NzgxZGNkMDRhN2QuLjFl
MDQxYjRmMzQ5YTNjMjc0MGJhOTFlYWJmOWMxNGZiNzMxMDRmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0V4cGVjdGVkLmgKKysrIGIvU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaApAQCAt
NTU5LDE5ICs1NTksOSBAQCBwdWJsaWM6CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBF
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25z
dCBleHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gYm9vbCh4KSA9PSBib29sKHkpICYmICh4ID8g
eC52YWx1ZSgpID09IHkudmFsdWUoKSA6IHguZXJyb3IoKSA9PSB5LmVycm9yKCkpOyB9Ci10ZW1w
bGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGV4
cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gISh4ID09
IHkpOyB9Ci0KIHRlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgZXhwZWN0ZWQ8dm9pZCwgRT4mIHgsIGNvbnN0IGV4cGVjdGVkPHZvaWQsIEU+JiB5KSB7IHJl
dHVybiBib29sKHgpID09IGJvb2woeSkgJiYgKHggPyB0cnVlIDogeC5lcnJvcigpID09IHkuZXJy
b3IoKSk7IH0KLQogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4geCA/
ICp4ID09IHkgOiBmYWxzZTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkgeyBy
ZXR1cm4geSA/IHggPT0gKnkgOiBmYWxzZTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3Qg
VCYgeSkgeyByZXR1cm4geCA/ICp4ICE9IHkgOiB0cnVlOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBj
bGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHgsIGNvbnN0IGV4cGVj
dGVkPFQsIEU+JiB5KSB7IHJldHVybiB5ID8geCAhPSAqeSA6IHRydWU7IH0KLQogdGVtcGxhdGU8
Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3Rl
ZDxULCBFPiYgeCwgY29uc3QgdW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCA/IGZhbHNlIDog
eC5lcnJvcigpID09IHkudmFsdWUoKTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1bmV4cGVjdGVkPEU+JiB4LCBjb25zdCBleHBl
Y3RlZDxULCBFPiYgeSkgeyByZXR1cm4geSA/IGZhbHNlIDogeC52YWx1ZSgpID09IHkuZXJyb3Io
KTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3QgdW5leHBlY3RlZDxFPiYgeSkgeyByZXR1
cm4geCA/IHRydWUgOiB4LmVycm9yKCkgIT0geS52YWx1ZSgpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBU
LCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVuZXhwZWN0ZWQ8RT4m
IHgsIGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiB5ID8gdHJ1ZSA6IHgudmFsdWUo
KSAhPSB5LmVycm9yKCk7IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRT4gdm9p
ZCBzd2FwKGV4cGVjdGVkPFQsIEU+JiB4LCBleHBlY3RlZDxULCBFPiYgeSkgeyB4LnN3YXAoeSk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4IGI1MWU3Y2RmOGJiNTQ0MTQxODZlZDQwMDhi
NmU4ZGVmMDE3NmI1OGQuLmE1NGI5MDI0MjJiZjliNTg2ZjI1NDJjODFjNTc2MDA2ODUyODY5MDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTI5MiwxMSArMjkyLDYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEZhc3RCaXRWZWN0b3JJbXBsJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgCiAgICAgYm9vbCBhdChzaXplX3QgaW5kZXgp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gYXRJbXBsKGluZGV4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2Mu
aAppbmRleCAxMjY1MjY2ZDE5NWQxZjg4OWJhYjg3MDM1NDA2NGM3ODE3NmZmNGUzLi45NDNjZmQ3
NTQ3NDA4MzY4OTkzYmY2NGU5ZjFjMmY3MWQzMTA5YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCkBAIC0y
MTMsNyArMjEzLDYgQEAgcHVibGljOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGYXN0QWxsb2NhdG9yPFQ+JiwgY29u
c3QgRmFzdEFsbG9jYXRvcjxVPiYpIHsgcmV0dXJuIHRydWU7IH0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRmFzdEFsbG9jYXRv
cjxUPiYsIGNvbnN0IEZhc3RBbGxvY2F0b3I8VT4mKSB7IHJldHVybiBmYWxzZTsgfQogCiBzdHJ1
Y3QgRmFzdE1hbGxvYyB7CiAgICAgc3RhdGljIHZvaWQqIG1hbGxvYyhzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gZmFzdE1hbGxvYyhzaXplKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRml4
ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKaW5kZXggYjNhYWRhMTIx
YjY3MzUxMTc3MzQ3MmVlZWNhZDRiZDBhMGQwNGQzZi4uNDQ5OTdhNWM2NjAyYjZhNTM4YTcyMGNl
ZDRiMWRhNWNmN2MxYTYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3Iu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCkBAIC0xMzQsMTEgKzEzNCw2IEBA
IHB1YmxpYzoKICAgICAgICAgbV9zdG9yYWdlLT5maWxsKHZhbCk7CiAgICAgfQogCi0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEZpeGVkVmVjdG9yPFQ+JiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgRml4ZWRWZWN0b3I8VD4mIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKCFtX3N0b3JhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBi
L1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCAzY2U3NjEyNDJjMzJlYzE2OTRjNjVhNzdl
NzQwZTljNjY5M2MzYmI0Li4zNjQ4NzJhMjAxYzZkYmVmZmM5N2U0YzkwYzY1NjFiZjU5ZDA3NGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93
dGYvRm9yd2FyZC5oCkBAIC0xNDksNiArMTQ5LDcgQEAgdXNpbmcgV1RGOjpSZWZQdHI7CiB1c2lu
ZyBXVEY6OlJldGFpblB0cjsKIHVzaW5nIFdURjo6U0hBMTsKIHVzaW5nIFdURjo6U2NvcGVkTGFt
YmRhOwordXNpbmcgV1RGOjpTZWNvbmRzOwogdXNpbmcgV1RGOjpTdHJpbmc7CiB1c2luZyBXVEY6
OlN0cmluZ0J1ZmZlcjsKIHVzaW5nIFdURjo6U3RyaW5nQnVpbGRlcjsKQEAgLTE2MSw2ICsxNjIs
NyBAQCB1c2luZyBXVEY6OlRleHRTdHJlYW07CiB1c2luZyBXVEY6OlVSTDsKIHVzaW5nIFdURjo6
VW5pcXVlUmVmOwogdXNpbmcgV1RGOjpWZWN0b3I7Cit1c2luZyBXVEY6OldhbGxUaW1lOwogdXNp
bmcgV1RGOjpXZWFrUHRyOwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiB1c2luZyBFeHBl
Y3RlZCA9IHN0ZDo6ZXhwZXJpbWVudGFsOjpleHBlY3RlZDxULCBFPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0dlbmVyaWNUaW1lTWl4aW4uaCBiL1NvdXJjZS9XVEYvd3RmL0dlbmVyaWNU
aW1lTWl4aW4uaAppbmRleCA0MTIwOTRiNTdjMGU0ZDUzYjRhNmUzMjJlYTc0NDg1YTA3NjZhYzhm
Li45NDY2OWM5M2VjNDcyODc2MzgzYjkxOTg1MTQzZTY5Njg5ZDk0NThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9HZW5lcmljVGltZU1peGluLmgKKysrIGIvU291cmNlL1dURi93dGYvR2Vu
ZXJpY1RpbWVNaXhpbi5oCkBAIC04NCwzNSArODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBTZWNvbmRzKG1fdmFsdWUgLSBvdGhlci5tX3ZhbHVlKTsKICAgICB9CiAKLSAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdlbmVyaWNUaW1lTWl4aW4mIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKLSAgICB9Ci0K
LSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdlbmVyaWNUaW1lTWl4aW4mIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgIT0gb3RoZXIubV92YWx1
ZTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgR2VuZXJpY1Rp
bWVNaXhpbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA8IG90
aGVyLm1fdmFsdWU7Ci0gICAgfQotCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0
IEdlbmVyaWNUaW1lTWl4aW4mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
dmFsdWUgPiBvdGhlci5tX3ZhbHVlOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPD0oY29uc3QgR2VuZXJpY1RpbWVNaXhpbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV92YWx1ZSA8PSBvdGhlci5tX3ZhbHVlOwotICAgIH0KLQotICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPj0oY29uc3QgR2VuZXJpY1RpbWVNaXhpbiYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA+PSBvdGhlci5tX3ZhbHVlOwotICAgIH0KKyAg
ICBmcmllbmQgYXV0byBvcGVyYXRvcjw9Pihjb25zdCBHZW5lcmljVGltZU1peGluJiwgY29uc3Qg
R2VuZXJpY1RpbWVNaXhpbiYpID0gZGVmYXVsdDsKIAogICAgIERlcml2ZWRUaW1lIGlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaEl0ZXJh
dG9ycy5oIGIvU291cmNlL1dURi93dGYvSGFzaEl0ZXJhdG9ycy5oCmluZGV4IDZhYTAyMWE1NDkx
YzU5YTY3OTY3MTk3ZWYyOThjYWRiOGJjYTk2ZTEuLjYzMjY2MGNjZGY3ZDI0NjVkYmNlY2NiMjVl
NGVhMDM3MTI4MjU4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hJdGVyYXRvcnMu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoSXRlcmF0b3JzLmgKQEAgLTI5LDE3ICsyOSwxMyBA
QAogCiBuYW1lc3BhY2UgV1RGIHsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGVBcmcs
IHR5cGVuYW1lIFZhbHVlVHlwZUFyZz4KLSAgICBzdHJ1Y3QgS2V5VmFsdWVQYWlyOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleVR5cGVBcmcsIHR5cGVuYW1lIFZhbHVlVHlwZUFyZz4gc3RydWN0
IEtleVZhbHVlUGFpcjsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5
cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25z
dEtleXNJdGVyYXRvcjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBl
bmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RW
YWx1ZXNJdGVyYXRvcjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBl
bmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlS2V5c0l0
ZXJhdG9yOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtl
eVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRv
cjsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIFZhbHVl
VHlwZT4gc3RydWN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4gc3RydWN0IEhhc2hU
YWJsZUl0ZXJhdG9yQWRhcHRlcjsKLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5
cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBLZXlWYWx1ZVBhaXI8S2V5VHlw
ZSwgTWFwcGVkVHlwZT4+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHVzaW5nIGl0ZXJhdG9yX2Nh
dGVnb3J5ID0gc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZzsKQEAgLTk0LDcgKzkwLDggQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlciYgb3BlcmF0b3Ir
KygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsgfQogICAgICAgICAvLyBwb3N0Zml4ICsrIGlu
dGVudGlvbmFsbHkgb21pdHRlZAogCi0gICAgICAgIG9wZXJhdG9yIEhhc2hUYWJsZUNvbnN0SXRl
cmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4oKSB7CisgICAgICAgIG9wZXJh
dG9yIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlw
ZT4oKSBjb25zdAorICAgICAgICB7CiAgICAgICAgICAgICB0eXBlbmFtZSBIYXNoVGFibGVUeXBl
Ojpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOwogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAg
ICAgIH0KQEAgLTE3NSw3ICsxNzIsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgSGFzaFRh
YmxlS2V5c0l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyArK21faW1wbDsgcmV0dXJuICp0aGlzOyB9
CiAgICAgICAgIC8vIHBvc3RmaXggKysgaW50ZW50aW9uYWxseSBvbWl0dGVkCiAKLSAgICAgICAg
b3BlcmF0b3IgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3I8SGFzaFRhYmxlVHlwZSwgS2V5VHlw
ZSwgTWFwcGVkVHlwZT4oKSB7CisgICAgICAgIG9wZXJhdG9yIEhhc2hUYWJsZUNvbnN0S2V5c0l0
ZXJhdG9yPEhhc2hUYWJsZVR5cGUsIEtleVR5cGUsIE1hcHBlZFR5cGU+KCkgY29uc3QKKyAgICAg
ICAgewogICAgICAgICAgICAgQ29uc3RJdGVyYXRvciBpID0gbV9pbXBsOwogICAgICAgICAgICAg
cmV0dXJuIGk7CiAgICAgICAgIH0KQEAgLTIwNSw3ICsyMDMsOCBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgSGFzaFRhYmxlVmFsdWVzSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7ICsrbV9pbXBs
OyByZXR1cm4gKnRoaXM7IH0KICAgICAgICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5IG9t
aXR0ZWQKIAotICAgICAgICBvcGVyYXRvciBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yPEhh
c2hUYWJsZVR5cGUsIEtleVR5cGUsIE1hcHBlZFR5cGU+KCkgeworICAgICAgICBvcGVyYXRvciBI
YXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yPEhhc2hUYWJsZVR5cGUsIEtleVR5cGUsIE1hcHBl
ZFR5cGU+KCkgY29uc3QKKyAgICAgICAgewogICAgICAgICAgICAgQ29uc3RJdGVyYXRvciBpID0g
bV9pbXBsOwogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KQEAgLTIxOSw0NiArMjE4
LDIyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2lt
cGw7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoVGFibGVDb25z
dEtleXNJdGVyYXRvcjxULCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0
b3I8VCwgVSwgVj4mIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2lt
cGw7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KICAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVDb25z
dFZhbHVlc0l0ZXJhdG9yPFQsIFUsIFY+JiBhLCBjb25zdCBIYXNoVGFibGVDb25zdFZhbHVlc0l0
ZXJhdG9yPFQsIFUsIFY+JiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIu
bV9pbXBsOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFY+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxl
Q29uc3RWYWx1ZXNJdGVyYXRvcjxULCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RWYWx1
ZXNJdGVyYXRvcjxULCBVLCBWPiYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLm1faW1wbCAh
PSBiLm1faW1wbDsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWPgogICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hU
YWJsZUtleXNJdGVyYXRvcjxULCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxlS2V5c0l0ZXJhdG9y
PFQsIFUsIFY+JiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBs
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFY+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxlS2V5c0l0
ZXJhdG9yPFQsIFUsIFY+JiBhLCBjb25zdCBIYXNoVGFibGVLZXlzSXRlcmF0b3I8VCwgVSwgVj4m
IGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7Ci0gICAgfQot
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KICAgICAg
ICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvcjxU
LCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxlVmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGIpCiAg
ICAgewogICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICAgICAgaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvcjxULCBVLCBW
PiYgYSwgY29uc3QgSGFzaFRhYmxlVmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGIpCi0gICAgewot
ICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7Ci0gICAgfQotCiB9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaCBiL1NvdXJjZS9X
VEYvd3RmL0hhc2hNYXAuaAppbmRleCAyNmFkZGM0MWU0NzUxNjhiODExODc1NWE2NDM0YjFlMDYz
ZjBkOGE5Li5lMmFhMWEyODEzYjNhNjU4NDBlMWJjMWRhNWU2NmM3NTAxOTk3NWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaE1h
cC5oCkBAIC02MDYsMTIgKzYwNiw2IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFgsIFk+JiBhLCBjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT4mIGEsIGNvbnN0IEhhc2hNYXA8
VCwgVSwgViwgVywgWCwgWT4mIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6SGFzaE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAppbmRleCA0NmU1
YmI5NWI4YTE2MmE5MzNhMWUyNTczZWRkZTY3MGQ0NDUwMjE4Li41NjdjMTc3NWI1NjM3YTQ2MmNm
ODhiZThhY2QxZWJmY2IxZDI4ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0
LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCkBAIC0xNDIsOSArMTQyLDYgQEAgcHVi
bGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJDb2xsZWN0aW9uPgogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBPdGhlckNvbGxlY3Rpb24mKSBjb25zdDsKLSAgICAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPdGhlckNvbGxlY3Rpb24+Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IE90aGVyQ29sbGVjdGlvbiYpIGNvbnN0OwogCiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkg
Y29uc3Q7CiAKQEAgLTQyMiwxMyArNDE5LDYgQEAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBW
LCBXPjo6b3BlcmF0b3I9PShjb25zdCBPdGhlckNvbGxlY3Rpb24mIG90aGVyQ29sbGVjdGkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVz4KLXRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQ29sbGVjdGlvbj4K
LWlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgViwgVz46Om9wZXJhdG9yIT0oY29uc3QgT3RoZXJD
b2xsZWN0aW9uJiBvdGhlckNvbGxlY3Rpb24pIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXJDb2xsZWN0aW9uKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVz4KIHZvaWQgSGFzaFNldDxULCBVLCBWLCBXPjo6YWRk
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZhbHVl
VHlwZT4+IGxpc3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCBi
L1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IDJlNjQ0MTRmN2FjMDYzYjFjOWMyZmI1
NDA3ZmYxYWI1Y2Y5ZDM1NDEuLjE2MTM3OWYyNzljZWQ5ZDQ1NjBhMDBmZDAxYTI3ODg1ZjA4Y2Y0
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0hhc2hUYWJsZS5oCkBAIC0yMDUsMTkgKzIwNSwxMCBAQCBERUNMQVJFX0FMTE9DQVRP
Ul9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAgICAgICAgICAgY2hlY2tWYWxp
ZGl0eShvdGhlcik7CiAgICAgICAgICAgICByZXR1cm4gbV9wb3NpdGlvbiA9PSBvdGhlci5tX3Bv
c2l0aW9uOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjb25zdF9p
dGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNoZWNrVmFsaWRp
dHkob3RoZXIpOwotICAgICAgICAgICAgcmV0dXJuIG1fcG9zaXRpb24gIT0gb3RoZXIubV9wb3Np
dGlvbjsKLSAgICAgICAgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3Im
IG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnRoaXMgPT0gc3Rh
dGljX2Nhc3Q8Y29uc3RfaXRlcmF0b3I+KG90aGVyKTsKICAgICAgICAgfQotICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gKnRoaXMgIT0gc3RhdGljX2Nhc3Q8Y29uc3RfaXRlcmF0b3I+KG90aGVy
KTsKLSAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBjaGVja1ZhbGlkaXR5
KCkgY29uc3QKQEAgLTI5MCw5ICsyODEsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBf
SURFTlRJRklFUihIYXNoVGFibGUpOwogCiAgICAgICAgIC8vIENvbXBhcmlzb24uCiAgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1f
aXRlcmF0b3IgPT0gb3RoZXIubV9pdGVyYXRvcjsgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yICE9IG90aGVy
Lm1faXRlcmF0b3I7IH0KICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNvbnN0X2l0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciA9PSBvdGhlcjsgfQotICAgICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX2l0ZXJhdG9yICE9IG90aGVyOyB9CiAKICAgICAgICAgb3BlcmF0b3IgY29uc3RfaXRl
cmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yOyB9CiAKQEAgLTMwNSw4ICsyOTQsOCBA
QCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJiBr
ZXkpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6Omhhc2goa2V5KTsgfQogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUJiBhLCBj
b25zdCBVJiBiKSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbChhLCBiKTsgfQogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBzdGF0aWMgdm9p
ZCB0cmFuc2xhdGUoVCYgbG9jYXRpb24sIGNvbnN0IFUmLCBWJiYgdmFsdWUpCi0gICAgICAgIHsg
Ci0gICAgICAgICAgICBWYWx1ZVRyYWl0czo6YXNzaWduVG9FbXB0eShsb2NhdGlvbiwgc3RkOjpm
b3J3YXJkPFY+KHZhbHVlKSk7IAorICAgICAgICB7CisgICAgICAgICAgICBWYWx1ZVRyYWl0czo6
YXNzaWduVG9FbXB0eShsb2NhdGlvbiwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7CiAgICAgICAg
IH0KICAgICB9OwogCkBAIC00MjIsOSArNDExLDkgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9I
RUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICNlbmRpZgogCiAgICAgICAgIEhhc2hUYWJsZSgp
OwotICAgICAgICB+SGFzaFRhYmxlKCkgCisgICAgICAgIH5IYXNoVGFibGUoKQogICAgICAgICB7
Ci0gICAgICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKHRoaXMpOyAKKyAgICAgICAgICAgIGlu
dmFsaWRhdGVJdGVyYXRvcnModGhpcyk7CiAgICAgICAgICAgICBpZiAobV90YWJsZSkKICAgICAg
ICAgICAgICAgICBkZWFsbG9jYXRlVGFibGUobV90YWJsZSk7CiAjaWYgQ0hFQ0tfSEFTSFRBQkxF
X1VTRV9BRlRFUl9ERVNUUlVDVElPTgpAQCAtMTA3OCw3ICsxMDY3LDcgQEAgREVDTEFSRV9BTExP
Q0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
PgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgogICAgIGF1
dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IFQmIGtleSkgLT4gaXRlcmF0b3IKICAgICB7CiAgICAg
ICAgIGlmICghbV90YWJsZSkKQEAgLTEwOTIsNyArMTA4MSw3IEBAIERFQ0xBUkVfQUxMT0NBVE9S
X1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IAorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4KICAgICBhdXRvIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6ZmluZChjb25zdCBUJiBrZXkpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCiAgICAg
ewogICAgICAgICBpZiAoIW1fdGFibGUpCkBAIC0xMTA2LDcgKzEwOTUsNyBAQCBERUNMQVJFX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiAK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CiAgICAg
Ym9vbCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46OmNvbnRhaW5zKGNvbnN0IFQmIGtleSkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmICghbV90YWJsZSkKQEAgLTE2MTcsNyArMTYwNiw4IEBAIERFQ0xBUkVfQUxMT0NBVE9S
X1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgIEhhc2hUYWJsZUl0ZXJh
dG9yQWRhcHRlciYgb3BlcmF0b3IrKygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsgfQogICAg
ICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlvbmFsbHkgb21pdHRlZAogCi0gICAgICAgIG9wZXJh
dG9yIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlw
ZT4oKSB7CisgICAgICAgIG9wZXJhdG9yIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhh
c2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4oKSBjb25zdAorICAgICAgICB7CiAgICAgICAgICAgICB0
eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOwogICAgICAg
ICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KQEAgLTE2MzEsNDkgKzE2MjEsMTggQEAgREVDTEFS
RV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICAgICAgcmV0
dXJuIGEubV9pbXBsID09IGIubV9pbXBsOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVy
YXRvckFkYXB0ZXI8VCwgVT4mIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0g
Yi5tX2ltcGw7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
ICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRl
cjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBiKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOwogICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJs
ZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLm1faW1w
bCAhPSBiLm1faW1wbDsKLSAgICB9Ci0KLSAgICAvLyBBbGwgNCBjb21iaW5hdGlvbnMgb2YgPT0s
ICE9IGFuZCBDb25zdCxub24gY29uc3QuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRl
cmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwg
VT4mIGIpCiAgICAgewogICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgICBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBh
LCBjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCi0gICAgewotICAgICAg
ICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhh
c2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVy
YXRvckFkYXB0ZXI8VCwgVT4mIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0g
Yi5tX2ltcGw7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
LSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRl
cjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIp
Ci0gICAgewotICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7Ci0gICAgfQotCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIAogI2luY2x1ZGUgPHd0Zi9IYXNoSXRlcmF0b3JzLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRleFNldC5oIGIvU291cmNlL1dURi93dGYvSW5kZXhT
ZXQuaAppbmRleCAxNjM2NTI3NmY0OWU4NTE0YTY1NDdjNjRkZGQyMzQ1ZWE2NGIzYTM1Li5hNjIw
MWExMmM1Y2M4ZjczZGFhYTU0MjMzYmQyNDNhM2ViNDEyMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9JbmRleFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0luZGV4U2V0LmgKQEAgLTEy
MCwxMSArMTIwLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBtX2l0ZXIgPT0g
b3RoZXIubV9pdGVyOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgICAgIH0KLQogICAgICAg
ICBwcml2YXRlOgogICAgICAgICAgICAgY29uc3QgQ29sbGVjdGlvblR5cGUqIG1fY29sbGVjdGlv
bjsKICAgICAgICAgICAgIEJpdFZlY3Rvcjo6aXRlcmF0b3IgbV9pdGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggYi9Tb3VyY2UvV1RGL3d0
Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaAppbmRleCBkN2ExMmJjODdkNTUxMjc3Y2RjZTY3
ZDFhODI5MzFjODdhZDlhMDAxLi45NTYxZTdlYTcxMmUzNWY0NzMwYTRmZDMwN2U5MmVmYjIxNjRi
N2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3Iu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaApAQCAtNjIs
MTEgKzYyLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2lu
ZGV4OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmRleGVkQ29udGFpbmVy
SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBmaW5kTmV4dCh1bnNpZ25l
ZCBpbmRleCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnNlcnRpb24uaCBi
L1NvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCmluZGV4IDRmMWQzNzRkZmQ0NDkxN2ZhNmFlOWUz
NDI0ZmQ3Y2UxYmE5NjQyYTkuLmY0Y2JiOTZhYThmYmM1ZDAwMjMyOTE3NDVkOTY2MTYxNDJiMzJj
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0luc2VydGlvbi5oCkBAIC00NCwxMCArNDQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
VCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgIFQmIGVsZW1lbnQo
KSB7IHJldHVybiBtX2VsZW1lbnQ7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBJ
bnNlcnRpb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW5kZXggPCBv
dGhlci5tX2luZGV4OwotICAgIH0KKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9Pihjb25zdCBJ
bnNlcnRpb24mIGEsIGNvbnN0IEluc2VydGlvbiYgYikgeyByZXR1cm4gYS5tX2luZGV4IDw9PiBi
Lm1faW5kZXg7IH0KICAgICAKIHByaXZhdGU6CiAgICAgc2l6ZV90IG1faW5kZXggeyAwIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnQxMjguaCBiL1NvdXJjZS9XVEYvd3RmL0ludDEy
OC5oCmluZGV4IDFhZmRjOWNlMTZlMjlhYmY2YjYxZWMzNTlmNTJhN2U1ZjgzZGEyZTUuLjU0M2Jk
NjQyNDZiMjQ2N2E1MWNmOGM4MmVjODVmZDZiMzIzNGE0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ludDEyOC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ludDEyOC5oCkBAIC02ODQsOCAr
Njg0LDYgQEAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShVSW50MTI4SW1wbCBsaHMsIFVJbnQx
MjhJbXBsIHJocykgewogICAgICAgICAgIFVJbnQxMjhIaWdoNjQobGhzKSA9PSBVSW50MTI4SGln
aDY0KHJocykpOwogfQogCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KFVJbnQxMjhJbXBsIGxo
cywgVUludDEyOEltcGwgcmhzKSB7IHJldHVybiAhKGxocyA9PSByaHMpOyB9Ci0KIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPChVSW50MTI4SW1wbCBsaHMsIFVJbnQxMjhJbXBsIHJocykgewogICBy
ZXR1cm4gKFVJbnQxMjhIaWdoNjQobGhzKSA9PSBVSW50MTI4SGlnaDY0KHJocykpCiAgICAgICAg
ICAgICAgPyAoVUludDEyOExvdzY0KGxocykgPCBVSW50MTI4TG93NjQocmhzKSkKQEAgLTk0MSw5
ICs5MzksNiBAQCBpbmxpbmUgSW50MTI4SW1wbCYgSW50MTI4SW1wbDo6b3BlcmF0b3I+Pj0oaW50
IGFtb3VudCkgewogICByZXR1cm4gKnRoaXM7CiB9CiAKLS8vIEZvcndhcmQgZGVjbGFyYXRpb24g
Zm9yIGNvbXBhcmlzb24gb3BlcmF0b3JzLgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShJbnQx
MjhJbXBsIGxocywgSW50MTI4SW1wbCByaHMpOwotCiBuYW1lc3BhY2UgaW50MTI4X2ludGVybmFs
IHsKIAogLy8gQ2FzdHMgZnJvbSB1bnNpZ25lZCB0byBzaWduZWQgd2hpbGUgcHJlc2VydmluZyB0
aGUgdW5kZXJseWluZyBiaW5hcnkKQEAgLTExMTUsMjQgKzExMTAsMTIgQEAgY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShJbnQxMjhJbXBsIGxocywgSW50MTI4SW1wbCByaHMpIHsKICAgICAgICAg
ICBJbnQxMjhIaWdoNjQobGhzKSA9PSBJbnQxMjhIaWdoNjQocmhzKSk7CiB9CiAKLWNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oSW50MTI4SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKSB7IHJldHVy
biAhKGxocyA9PSByaHMpOyB9Ci0KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChJbnQxMjhJbXBs
IGxocywgSW50MTI4SW1wbCByaHMpIHsKLSAgcmV0dXJuIChJbnQxMjhIaWdoNjQobGhzKSA9PSBJ
bnQxMjhIaWdoNjQocmhzKSkKLSAgICAgICAgICAgICA/IChJbnQxMjhMb3c2NChsaHMpIDwgSW50
MTI4TG93NjQocmhzKSkKLSAgICAgICAgICAgICA6IChJbnQxMjhIaWdoNjQobGhzKSA8IEludDEy
OEhpZ2g2NChyaHMpKTsKLX0KLQotY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KEludDEyOEltcGwg
bGhzLCBJbnQxMjhJbXBsIHJocykgeworY29uc3RleHByIGF1dG8gb3BlcmF0b3I8PT4oSW50MTI4
SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKSB7CiAgIHJldHVybiAoSW50MTI4SGlnaDY0KGxocykg
PT0gSW50MTI4SGlnaDY0KHJocykpCi0gICAgICAgICAgICAgPyAoSW50MTI4TG93NjQobGhzKSA+
IEludDEyOExvdzY0KHJocykpCi0gICAgICAgICAgICAgOiAoSW50MTI4SGlnaDY0KGxocykgPiBJ
bnQxMjhIaWdoNjQocmhzKSk7CisgICAgICAgICAgICAgPyAoSW50MTI4TG93NjQobGhzKSA8PT4g
SW50MTI4TG93NjQocmhzKSkKKyAgICAgICAgICAgICA6IChJbnQxMjhIaWdoNjQobGhzKSA8PT4g
SW50MTI4SGlnaDY0KHJocykpOwogfQogCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KEludDEy
OEltcGwgbGhzLCBJbnQxMjhJbXBsIHJocykgeyByZXR1cm4gIShsaHMgPiByaHMpOyB9Ci0KLWNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPj0oSW50MTI4SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKSB7
IHJldHVybiAhKGxocyA8IHJocyk7IH0KLQogLy8gVW5hcnkgb3BlcmF0b3JzLgogCiBjb25zdGV4
cHIgSW50MTI4SW1wbCBvcGVyYXRvci0oSW50MTI4SW1wbCB2KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9JbnRlcmZlcmVuY2VHcmFwaC5oIGIvU291cmNlL1dURi93dGYvSW50ZXJmZXJl
bmNlR3JhcGguaAppbmRleCAwNDJmYWRhOWI2MDdkNDkzMmJkNzRkYmEyZmNhMmI2MWYwMzdhYTc1
Li5kZGI5ZGQyY2Y3OTAxN2E1ODY3MWMyNWVjOWM5NzE2ZmE5ZDBhOTI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9JbnRlcmZlcmVuY2VHcmFwaC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0lu
dGVyZmVyZW5jZUdyYXBoLmgKQEAgLTEzNCwxMSArMTM0LDYgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBjb25zdCBJdGVyYWJsZSYgbV9pdGVyYWJs
ZTsKICAgICAgICAgICAgIHVuc2lnbmVkIG1faW5kZXg7CiAgICAgICAgIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9JdGVyYXRvckFkYXB0b3JzLmggYi9Tb3VyY2UvV1RGL3d0Zi9JdGVy
YXRvckFkYXB0b3JzLmgKaW5kZXggYTRlMDdlYmEyOGI4NjNhYmViNDY5MzcyNWM5YjIzM2EyMmYy
M2I0Ny4uMjM5ODVkNTA4NGVjMTgwZDA3M2M0MjJmOWZmZTBiMzk0N2U0NzNjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvSXRlcmF0b3JBZGFwdG9ycy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0l0ZXJhdG9yQWRhcHRvcnMuaApAQCAtOTUsOCArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX3RyYW5zZm9ybSgqbV9pdGVyKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRyYW5zZm9ybUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9p
dGVyID09IG90aGVyLm1faXRlcjsgfQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
VHJhbnNmb3JtSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXIgIT0gb3RoZXIu
bV9pdGVyOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybUl0ZXJhdG9yJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsgfQogCiBwcml2YXRl
OgogICAgIGNvbnN0IFRyYW5zZm9ybSBtX3RyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0tleVZhbHVlUGFpci5oIGIvU291cmNlL1dURi93dGYvS2V5VmFsdWVQYWlyLmgKaW5k
ZXggZmZlYjU3ZjM5ZjBkMDViZWU0ZTZlNmU4MzlhZTU2NGFhMzQyYmRhZC4uZTY3M2YxM2ViYWMz
YjUxMmZmODNlNTFhMWMzMTdhMjJiNDUzZGQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
S2V5VmFsdWVQYWlyLmgKKysrIGIvU291cmNlL1dURi93dGYvS2V5VmFsdWVQYWlyLmgKQEAgLTYw
LDYgKzYwLDggQEAgc3RydWN0IEtleVZhbHVlUGFpciB7CiAgICAgewogICAgIH0KIAorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBLZXlWYWx1ZVBhaXImKSBjb25zdCA9IGRlZmF1bHQ7CisKICAg
ICBLZXlUeXBlIGtleTsKICAgICBWYWx1ZVR5cGUgdmFsdWUgeyB9OwogfTsKQEAgLTcwLDExICs3
Miw2IEBAIGlubGluZSBLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgc3RkOjpkZWNheTxLPjo6dHlwZSwg
dHlwZW5hbWUgc3RkOjpkZWNheTxWPjo6dHlwZT4KICAgICByZXR1cm4gS2V5VmFsdWVQYWlyPHR5
cGVuYW1lIHN0ZDo6ZGVjYXk8Sz46OnR5cGUsIHR5cGVuYW1lIHN0ZDo6ZGVjYXk8Vj46OnR5cGU+
IHsgc3RkOjpmb3J3YXJkPEs+KGtleSksIHN0ZDo6Zm9yd2FyZDxWPih2YWx1ZSkgfTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEtleVZhbHVlUGFpcjxLZXlUeXBlLCBWYWx1ZVR5cGU+JiBh
LCBjb25zdCBLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgVmFsdWVUeXBlPiYgYikKLXsKLSAgICByZXR1
cm4gYS5rZXkgPT0gYi5rZXkgJiYgYS52YWx1ZSA9PSBiLnZhbHVlOwotfQotCiB9CiAKIHVzaW5n
IFdURjo6S2V5VmFsdWVQYWlyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTGlrZWx5RGVu
c2VVbnNpZ25lZEludGVnZXJTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0xpa2VseURlbnNlVW5zaWdu
ZWRJbnRlZ2VyU2V0LmgKaW5kZXggNTE0MTZjZWZlYTg4ZTQ5OWE3Yjg1N2NlNWU0ODMxNzdiNWQ3
MWVjNy4uM2Y1Yzg2NTBkZTZiZmYzMDQxYjkzYzE1NjAxNDEzZTk4YzljYjcyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvTGlrZWx5RGVuc2VVbnNpZ25lZEludGVnZXJTZXQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9MaWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5oCkBAIC0yMDksMTQg
KzIwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBbXShjb25zdCB0eXBlbmFtZSBTZXQ6
Oml0ZXJhdG9yJiBpdCkgLT4gSW5kZXhUeXBlIHsgcmV0dXJuICppdDsgfSk7CiAgICAgICAgIH0K
IAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV91bmRlcmx5aW5nID09IG90aGVyLm1fdW5k
ZXJseWluZyAmJiBtX3NoaWZ0ID09IG90aGVyLm1fc2hpZnQ7Ci0gICAgICAgIH0KLSAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1fdW5kZXJseWluZyAhPSBvdGhlci5tX3VuZGVybHlpbmcgfHwg
bV9zaGlmdCAhPSBvdGhlci5tX3NoaWZ0OwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBpdGVyYXRvciYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHN0ZDo6dmFyaWFudDxCaXRWZWN0b3I6Oml0ZXJhdG9yLCB0eXBlbmFtZSBTZXQ6Oml0
ZXJhdG9yPiBtX3VuZGVybHlpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFz
aFNldC5oIGIvU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaAppbmRleCA5MTY0NTY2Y2QyMzdk
MGZhMmY3MWVjYzBmMzY4ODY2ODgxZDg3ZmQ5Li40NTBmMWY0M2JhMGZkNWM1MDdmMTIyZjJkZjQ0
ZTY0ZjA4MjIyOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKQEAgLTIzMSw5ICsyMzEsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBwb3N0Zml4IC0tIGludGVudGlvbmFsbHkgb21pdHRlZAogCi0gICAgLy8g
Q29tcGFyaXNvbi4KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBj
b25zdCB7IHJldHVybiBtX2l0ZXJhdG9yID09IG90aGVyLm1faXRlcmF0b3I7IH0KLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJh
dG9yICE9IG90aGVyLm1faXRlcmF0b3I7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRl
cmF0b3ImKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBvcGVyYXRvciBjb25zdF9pdGVyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3I7IH0KIApAQCAtMzI2LDEwICszMjQsNiBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9wb3NpdGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9u
OwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcG9zaXRpb24gIT0gb3RoZXIubV9wb3Np
dGlvbjsKLSAgICB9CiAKIHByaXZhdGU6CiAgICAgTm9kZSogbm9kZSgpIHsgcmV0dXJuIG1fcG9z
aXRpb247IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xpdmVuZXNzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9MaXZlbmVzcy5oCmluZGV4IGMyZjhmOTYyNmI4YmEzNTYxNzM2ODE4OGJhZDRlZDcx
YjFiMjczZDUuLjFkMmRlNGQ2ZGI0Y2Y1ZjkyZTU1Nzk5ODM0NTAyNTdhMjgyMzQwYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xpdmVuZXNzLmgKKysrIGIvU291cmNlL1dURi93dGYvTGl2
ZW5lc3MuaApAQCAtNzcsMjkgKzc3LDI4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNsYXNzIGl0
ZXJhdG9yIHsKICAgICAgICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgICAgICBpdGVyYXRvcihBZGFwdGVyJiBhZGFwdGVy
LCBXb3Jrc2V0Ojpjb25zdF9pdGVyYXRvciBzcGFyY2VTZXRJdGVyYXRvcikKKyAgICAgICAgICAg
ICAgICBpdGVyYXRvcihBZGFwdGVyJiBhZGFwdGVyLCBXb3Jrc2V0Ojpjb25zdF9pdGVyYXRvciBz
cGFyc2VTZXRJdGVyYXRvcikKICAgICAgICAgICAgICAgICAgICAgOiBtX2FkYXB0ZXIoYWRhcHRl
cikKLSAgICAgICAgICAgICAgICAgICAgLCBtX3NwYXJjZVNldEl0ZXJhdG9yKHNwYXJjZVNldEl0
ZXJhdG9yKQorICAgICAgICAgICAgICAgICAgICAsIG1fc3BhcnNlU2V0SXRlcmF0b3Ioc3BhcnNl
U2V0SXRlcmF0b3IpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICsrbV9zcGFyY2VTZXRJdGVyYXRvcjsKKyAgICAgICAgICAgICAg
ICAgICAgKyttX3NwYXJzZVNldEl0ZXJhdG9yOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQWRh
cHRlcjo6VGhpbmcgb3BlcmF0b3IqKCkgY29uc3QKICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtX2FkYXB0ZXIuaW5kZXhUb1ZhbHVlKCptX3NwYXJjZVNldEl0
ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fYWRhcHRlci5pbmRleFRvVmFs
dWUoKm1fc3BhcnNlU2V0SXRlcmF0b3IpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fc3BhcmNlU2V0SXRlcmF0b3IgPT0gb3RoZXIubV9zcGFyY2VTZXRJdGVyYXRvcjsgfQot
ICAgICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG1fc3BhcmNlU2V0SXRlcmF0b3IgIT0gb3RoZXIubV9zcGFyY2VTZXRJdGVy
YXRvcjsgfQorICAgICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3BhcnNlU2V0SXRlcmF0b3IgPT0gb3RoZXIubV9zcGFy
c2VTZXRJdGVyYXRvcjsgfQogCiAgICAgICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgICAg
IEFkYXB0ZXImIG1fYWRhcHRlcjsKLSAgICAgICAgICAgICAgICBXb3Jrc2V0Ojpjb25zdF9pdGVy
YXRvciBtX3NwYXJjZVNldEl0ZXJhdG9yOworICAgICAgICAgICAgICAgIFdvcmtzZXQ6OmNvbnN0
X2l0ZXJhdG9yIG1fc3BhcnNlU2V0SXRlcmF0b3I7CiAgICAgICAgICAgICB9OwogCiAgICAgICAg
ICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKG1fbGl2ZW5lc3Ms
IG1fbGl2ZW5lc3MubV93b3Jrc2V0LmJlZ2luKCkpOyB9CkBAIC0xOTksMTEgKzE5OCw2IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgcHJpdmF0ZToKICAgICAg
ICAgICAgIExpdmVuZXNzKiBtX2xpdmVuZXNzOwogICAgICAgICAgICAgdHlwZW5hbWUgVW5kZXJs
eWluZ0l0ZXJhYmxlOjpjb25zdF9pdGVyYXRvciBtX2l0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9Mb2NrLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKaW5kZXggNDJlNGFhYzBjOWE0
YWFlNTllNzFiNWU5MzU4Y2I4NjAxOGQ3ZTQzYS4uYzhmNmMzMGQyZjA3MGQzMTY5MGM2NDJlYmI3
YmI3NmVhNzY5OTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9jay5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0xvY2suaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0xvY2tBbGdvcml0aG0uaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZXR5QW5hbHlzaXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2luZ0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3Rm
L0xvZ2dpbmdIYXNoU2V0LmgKaW5kZXggMDcwMGQ1MTY0NDZmYTYwYjc5ZWEzNjRjNWE2OWYzOTQ4
NTBiYzI0Ny4uNTZkYzdiMGRlYjYwZjhiZWZlYjEzN2JmOGZkYmRmYjc0NTkyNjg0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2luZ0hhc2hTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9Mb2dnaW5nSGFzaFNldC5oCkBAIC0yMzUsMTIgKzIzNSw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQ29s
bGVjdGlvbj4KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3RoZXJDb2xsZWN0aW9uJiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9
Ci0gICAgCiBwcml2YXRlOgogICAgIEhhc2hTZXQgbV9zZXQ7CiAgICAgTG9nZ2luZ0hhc2hJRCBt
X2lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFya2FibGUuaCBiL1NvdXJjZS9XVEYv
d3RmL01hcmthYmxlLmgKaW5kZXggMTBlZWNjM2EyMmZlMmRlODM3Y2NmZDc5MTFkNDE3NWUyN2Fj
NzMyZS4uOTkyODUxZjM5NjQ5OTI3ZGMzOTU1MThhOWUxN2UzM2M2NjVkNjMwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvTWFya2FibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYXJrYWJs
ZS5oCkBAIC0xNjAsMTEgKzE2MCw2IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBU
cmFpdHM+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgTWFya2FibGU8CiAgICAgcmV0
dXJuIHgudmFsdWUoKSA9PSB5LnZhbHVlKCk7CiB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVHJhaXRzPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hcmthYmxlPFQs
IFRyYWl0cz4mIHgsIGNvbnN0IFQmIHYpIHsgcmV0dXJuIGJvb2woeCkgJiYgeC52YWx1ZSgpID09
IHY7IH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVCYgdiwgY29uc3QgTWFya2FibGU8VCwgVHJhaXRzPiYgeCkg
eyByZXR1cm4gYm9vbCh4KSAmJiB2ID09IHgudmFsdWUoKTsgfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVHJhaXRzPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1h
cmthYmxlPFQsIFRyYWl0cz4mIHgsIGNvbnN0IE1hcmthYmxlPFQsIFRyYWl0cz4mIHkpIHsgcmV0
dXJuICEoeCA9PSB5KTsgfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXJrYWJsZTxULCBUcmFpdHM+JiB4LCBj
b25zdCBUJiB2KSB7IHJldHVybiAhKHggPT0gdik7IH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBUcmFpdHM+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgdiwgY29u
c3QgTWFya2FibGU8VCwgVHJhaXRzPiYgeCkgeyByZXR1cm4gISh2ID09IHgpOyB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3Bw
IGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAppbmRleCAyMjRlNzc0OTVmYjkzODM0ZjU4
ZjljZjMyMzQzN2YzOTE2OTM5NDJmLi4yNGFmYjNjYWU5MWY0NjI5NTdjYmY2ZDIyYWFjOWVhMzdl
ZTFmMTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKQEAgLTcyLDkgKzcyLDkgQEAgc3RhdGljIGludDY0
X3Qgc2lnbnVtKGludDY0X3QgdmFsKQogCiBjb25zdCB1aW50MzJfdCBNZWRpYVRpbWU6Ok1heGlt
dW1UaW1lU2NhbGUgPSAxMDAwMDAwMDAwOwogCi1NZWRpYVRpbWU6Ok1lZGlhVGltZShjb25zdCBN
ZWRpYVRpbWUmIHJocykKK2NvbnN0ZXhwciBNZWRpYVRpbWU6Ok1lZGlhVGltZShVc2VEb3VibGVG
bGFnLCBkb3VibGUgdmFsdWUpCisgICAgOiBtX3ZhbHVlQXNEb3VibGUodmFsdWUpCiB7Ci0gICAg
KnRoaXMgPSByaHM7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChm
bG9hdCBmbG9hdFRpbWUpCkBAIC04NCw1NyArODQsNTEgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6
Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSkKICAgICBpZiAoc3RkOjppc2luZihmbG9h
dFRpbWUpKQogICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGZsb2F0VGltZSkgPyBuZWdhdGl2
ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKIAotICAgIE1lZGlhVGlt
ZSB2YWx1ZSgwLCBEZWZhdWx0VGltZVNjYWxlLCBWYWxpZCB8IERvdWJsZVZhbHVlKTsKLSAgICB2
YWx1ZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0gZmxvYXRUaW1lOwotICAgIHJldHVybiB2YWx1ZTsK
KyAgICBkb3VibGUgdmFsdWUgPSBmbG9hdFRpbWU7CisgICAgcmV0dXJuIHsgVXNlRG91YmxlLCB2
YWx1ZSB9OwogfQogCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQg
ZmxvYXRUaW1lLCB1aW50MzJfdCB0aW1lU2NhbGUpCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRmxvYXQoZmxvYXQgdmFsdWUsIHVpbnQzMl90IHRpbWVTY2FsZSkKIHsKLSAgICBpZiAo
ZmxvYXRUaW1lICE9IGZsb2F0VGltZSkKKyAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCiAgICAg
ICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwotICAgIGlmIChzdGQ6OmlzaW5mKGZsb2F0VGltZSkp
Ci0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5p
dGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChmbG9hdFRpbWUgPj0g
bWF4UGx1c09uZTxpbnQ2NF90PikKKyAgICBpZiAodmFsdWUgPj0gbWF4UGx1c09uZTxpbnQ2NF90
PikKICAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgaWYgKGZsb2F0
VGltZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQorICAgIGlmICh2YWx1
ZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQogICAgICAgICByZXR1cm4g
bmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICBpZiAoIXRpbWVTY2FsZSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6c2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBv
c2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUp
ID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAKLSAg
ICB3aGlsZSAoZmxvYXRUaW1lICogdGltZVNjYWxlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCisg
ICAgd2hpbGUgKHZhbHVlICogdGltZVNjYWxlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAg
ICAgIHRpbWVTY2FsZSAvPSAyOwotICAgIHJldHVybiBNZWRpYVRpbWUoc3RhdGljX2Nhc3Q8aW50
NjRfdD4oZmxvYXRUaW1lICogdGltZVNjYWxlKSwgdGltZVNjYWxlLCBWYWxpZCk7CisgICAgaW50
NjRfdCBzY2FsZWRWYWx1ZSA9IHZhbHVlICogdGltZVNjYWxlOworICAgIHJldHVybiB7IHNjYWxl
ZFZhbHVlLCB0aW1lU2NhbGUgfTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShkb3VibGUgZG91YmxlVGltZSkKK01lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUoZG91YmxlIHZhbHVlKQogewotICAgIGlmIChkb3VibGVUaW1lICE9IGRvdWJsZVRp
bWUpCisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1cm4gaW52YWxpZFRp
bWUoKTsKLSAgICBpZiAoc3RkOjppc2luZihkb3VibGVUaW1lKSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2
ZUluZmluaXRlVGltZSgpOwotCi0gICAgTWVkaWFUaW1lIHZhbHVlKDAsIERlZmF1bHRUaW1lU2Nh
bGUsIFZhbGlkIHwgRG91YmxlVmFsdWUpOwotICAgIHZhbHVlLm1fdGltZVZhbHVlQXNEb3VibGUg
PSBkb3VibGVUaW1lOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBpZiAoc3RkOjppc2luZih2YWx1
ZSkpCisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUpID8gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgcmV0dXJuIHsgVXNlRG91Ymxl
LCB2YWx1ZSB9OwogfQogCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRv
dWJsZSBkb3VibGVUaW1lLCB1aW50MzJfdCB0aW1lU2NhbGUpCitNZWRpYVRpbWUgTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSB2YWx1ZSwgdWludDMyX3QgdGltZVNjYWxlKQogewot
ICAgIGlmIChkb3VibGVUaW1lICE9IGRvdWJsZVRpbWUpCisgICAgaWYgKHN0ZDo6aXNuYW4odmFs
dWUpKQogICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2luZihk
b3VibGVUaW1lKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChk
b3VibGVUaW1lID49IG1heFBsdXNPbmU8aW50NjRfdD4pCisgICAgaWYgKHZhbHVlID49IG1heFBs
dXNPbmU8aW50NjRfdD4pCiAgICAgICAgIHJldHVybiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwot
ICAgIGlmIChkb3VibGVUaW1lIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkp
CisgICAgaWYgKHZhbHVlIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpCiAg
ICAgICAgIHJldHVybiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwogICAgIGlmICghdGltZVNjYWxl
KQotICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGRvdWJsZVRpbWUpID8gbmVnYXRpdmVJbmZp
bml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgIHJldHVybiBzdGQ6
OnNpZ25iaXQodmFsdWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5p
dGVUaW1lKCk7CiAKLSAgICB3aGlsZSAoZG91YmxlVGltZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVz
T25lPGludDY0X3Q+KQorICAgIHdoaWxlICh2YWx1ZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVzT25l
PGludDY0X3Q+KQogICAgICAgICB0aW1lU2NhbGUgLz0gMjsKLSAgICByZXR1cm4gTWVkaWFUaW1l
KHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6cm91bmQoZG91YmxlVGltZSAqIHRpbWVTY2FsZSkp
LCB0aW1lU2NhbGUsIFZhbGlkKTsKKyAgICBpbnQ2NF90IHNjYWxlZFZhbHVlID0gc3RkOjpyb3Vu
ZCh2YWx1ZSAqIHRpbWVTY2FsZSk7CisgICAgcmV0dXJuIHsgc2NhbGVkVmFsdWUsIHRpbWVTY2Fs
ZSB9OwogfQogCiBmbG9hdCBNZWRpYVRpbWU6OnRvRmxvYXQoKSBjb25zdApAQCAtMTQ2LDggKzE0
MCw5IEBAIGZsb2F0IE1lZGlhVGltZTo6dG9GbG9hdCgpIGNvbnN0CiAgICAgaWYgKGlzTmVnYXRp
dmVJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjppbmZpbml0eSgpOwogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICByZXR1cm4g
bV90aW1lVmFsdWVBc0RvdWJsZTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdGlt
ZVZhbHVlKSAvIG1fdGltZVNjYWxlOworICAgICAgICByZXR1cm4gbV92YWx1ZUFzRG91YmxlOwor
ICAgIGZsb2F0IHZhbHVlID0gbV92YWx1ZTsKKyAgICByZXR1cm4gdmFsdWUgLyBtX3NjYWxlOwog
fQogCiBkb3VibGUgTWVkaWFUaW1lOjp0b0RvdWJsZSgpIGNvbnN0CkBAIC0xNTksMTkgKzE1NCwx
MiBAQCBkb3VibGUgTWVkaWFUaW1lOjp0b0RvdWJsZSgpIGNvbnN0CiAgICAgaWYgKGlzTmVnYXRp
dmVJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6aW5maW5pdHkoKTsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJu
IG1fdGltZVZhbHVlQXNEb3VibGU7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV90
aW1lVmFsdWUpIC8gbV90aW1lU2NhbGU7CisgICAgICAgIHJldHVybiBtX3ZhbHVlQXNEb3VibGU7
CisgICAgZG91YmxlIHZhbHVlID0gbV92YWx1ZTsKKyAgICByZXR1cm4gdmFsdWUgLyBtX3NjYWxl
OwogfQogCi1NZWRpYVRpbWUmIE1lZGlhVGltZTo6b3BlcmF0b3I9KGNvbnN0IE1lZGlhVGltZSYg
cmhzKQotewotICAgIG1fdGltZVZhbHVlID0gcmhzLm1fdGltZVZhbHVlOwotICAgIG1fdGltZVNj
YWxlID0gcmhzLm1fdGltZVNjYWxlOwotICAgIG1fdGltZUZsYWdzID0gcmhzLm1fdGltZUZsYWdz
OwotICAgIHJldHVybiAqdGhpczsKLX0KLQotTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3Ir
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0
b3IrKE1lZGlhVGltZSByaHMpIGNvbnN0CiB7CiAgICAgaWYgKHJocy5pc0ludmFsaWQoKSB8fCBp
c0ludmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CkBAIC0xOTIsNyArMTgw
LDcgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IrKGNvbnN0IE1lZGlhVGltZSYgcmhz
KSBjb25zdAogICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKIAogICAgIGlm
IChoYXNEb3VibGVWYWx1ZSgpICYmIHJocy5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICByZXR1
cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVlQXNEb3VibGUgKyByaHMu
bV90aW1lVmFsdWVBc0RvdWJsZSk7CisgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUobV92YWx1ZUFzRG91YmxlICsgcmhzLm1fdmFsdWVBc0RvdWJsZSk7CiAKICAgICBp
ZiAoaGFzRG91YmxlVmFsdWUoKSB8fCByaHMuaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSh0b0RvdWJsZSgpICsgcmhzLnRvRG91Ymxl
KCkpOwpAQCAtMjAxLDEzICsxODksMTMgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3Ir
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAgIE1lZGlhVGltZSBiID0gcmhzOwogCiAg
ICAgdWludDMyX3QgY29tbW9uVGltZVNjYWxlOwotICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBs
ZShhLm1fdGltZVNjYWxlLCBiLm1fdGltZVNjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1v
blRpbWVTY2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCisgICAgaWYgKCFsZWFzdENvbW1vbk11bHRp
cGxlKGEubV9zY2FsZSwgYi5tX3NjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRpbWVT
Y2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSA9IE1heGlt
dW1UaW1lU2NhbGU7CiAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICBi
LnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwotICAgIHdoaWxlICghc2FmZUFkZChhLm1f
dGltZVZhbHVlLCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgeworICAgIHdoaWxlICgh
c2FmZUFkZChhLm1fdmFsdWUsIGIubV92YWx1ZSwgYS5tX3ZhbHVlKSkgewogICAgICAgICBpZiAo
Y29tbW9uVGltZVNjYWxlID09IDEpCi0gICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVWYWx1ZSA+
IDAgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBhLm1fdmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSAvPSAyOwog
ICAgICAgICBhLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwogICAgICAgICBiLnNldFRp
bWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwpAQCAtMjE1LDcgKzIwMyw3IEBAIE1lZGlhVGltZSBN
ZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICByZXR1
cm4gYTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGlt
ZSYgcmhzKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKE1lZGlhVGltZSBy
aHMpIGNvbnN0CiB7CiAgICAgaWYgKHJocy5pc0ludmFsaWQoKSB8fCBpc0ludmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CkBAIC0yMzYsNyArMjI0LDcgQEAgTWVkaWFUaW1l
IE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAgICAg
ICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKIAogICAgIGlmIChoYXNEb3VibGVWYWx1
ZSgpICYmIHJocy5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVlQXNEb3VibGUgLSByaHMubV90aW1lVmFsdWVBc0Rv
dWJsZSk7CisgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV92YWx1
ZUFzRG91YmxlIC0gcmhzLm1fdmFsdWVBc0RvdWJsZSk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFs
dWUoKSB8fCByaHMuaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6
Y3JlYXRlV2l0aERvdWJsZSh0b0RvdWJsZSgpIC0gcmhzLnRvRG91YmxlKCkpOwpAQCAtMjQ1LDEz
ICsyMzMsMTMgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGlt
ZSYgcmhzKSBjb25zdAogICAgIE1lZGlhVGltZSBiID0gcmhzOwogCiAgICAgdWludDMyX3QgY29t
bW9uVGltZVNjYWxlOwotICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZSh0aGlzLT5tX3RpbWVT
Y2FsZSwgcmhzLm1fdGltZVNjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRpbWVTY2Fs
ZSA+IE1heGltdW1UaW1lU2NhbGUpCisgICAgaWYgKCFsZWFzdENvbW1vbk11bHRpcGxlKHRoaXMt
Pm1fc2NhbGUsIHJocy5tX3NjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRpbWVTY2Fs
ZSA+IE1heGltdW1UaW1lU2NhbGUpCiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSA9IE1heGltdW1U
aW1lU2NhbGU7CiAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICBiLnNl
dFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwotICAgIHdoaWxlICghc2FmZVN1YihhLm1fdGlt
ZVZhbHVlLCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgeworICAgIHdoaWxlICghc2Fm
ZVN1YihhLm1fdmFsdWUsIGIubV92YWx1ZSwgYS5tX3ZhbHVlKSkgewogICAgICAgICBpZiAoY29t
bW9uVGltZVNjYWxlID09IDEpCi0gICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVWYWx1ZSA+IDAg
PyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAg
ICAgICAgIHJldHVybiBhLm1fdmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSAvPSAyOwogICAg
ICAgICBhLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwogICAgICAgICBiLnNldFRpbWVT
Y2FsZShjb21tb25UaW1lU2NhbGUpOwpAQCAtMjc1LDkgKzI2Myw5IEBAIE1lZGlhVGltZSBNZWRp
YVRpbWU6Om9wZXJhdG9yLSgpIGNvbnN0CiAKICAgICBNZWRpYVRpbWUgbmVnYXRpdmVUaW1lID0g
KnRoaXM7CiAgICAgaWYgKG5lZ2F0aXZlVGltZS5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICBu
ZWdhdGl2ZVRpbWUubV90aW1lVmFsdWVBc0RvdWJsZSA9IC1uZWdhdGl2ZVRpbWUubV90aW1lVmFs
dWVBc0RvdWJsZTsKKyAgICAgICAgbmVnYXRpdmVUaW1lLm1fdmFsdWVBc0RvdWJsZSA9IC1uZWdh
dGl2ZVRpbWUubV92YWx1ZUFzRG91YmxlOwogICAgIGVsc2UKLSAgICAgICAgbmVnYXRpdmVUaW1l
Lm1fdGltZVZhbHVlID0gLW5lZ2F0aXZlVGltZS5tX3RpbWVWYWx1ZTsKKyAgICAgICAgbmVnYXRp
dmVUaW1lLm1fdmFsdWUgPSAtbmVnYXRpdmVUaW1lLm1fdmFsdWU7CiAgICAgcmV0dXJuIG5lZ2F0
aXZlVGltZTsKIH0KIApAQCAtMzA3LDE0ICsyOTUsMTQgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6
b3BlcmF0b3IqKGludDMyX3QgcmhzKSBjb25zdAogICAgIE1lZGlhVGltZSBhID0gKnRoaXM7CiAK
ICAgICBpZiAoYS5oYXNEb3VibGVWYWx1ZSgpKSB7Ci0gICAgICAgIGEubV90aW1lVmFsdWVBc0Rv
dWJsZSAqPSByaHM7CisgICAgICAgIGEubV92YWx1ZUFzRG91YmxlICo9IHJoczsKICAgICAgICAg
cmV0dXJuIGE7CiAgICAgfQogCi0gICAgd2hpbGUgKCFzYWZlTXVsdGlwbHkoYS5tX3RpbWVWYWx1
ZSwgcmhzLCBhLm1fdGltZVZhbHVlKSkgewotICAgICAgICBpZiAoYS5tX3RpbWVTY2FsZSA9PSAx
KQotICAgICAgICAgICAgcmV0dXJuIHNpZ251bShhLm1fdGltZVZhbHVlKSA9PSBzaWdudW0ocmhz
KSA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwotICAg
ICAgICBhLnNldFRpbWVTY2FsZShhLm1fdGltZVNjYWxlIC8gMik7CisgICAgd2hpbGUgKCFzYWZl
TXVsdGlwbHkoYS5tX3ZhbHVlLCByaHMsIGEubV92YWx1ZSkpIHsKKyAgICAgICAgaWYgKGEubV9z
Y2FsZSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIHNpZ251bShhLm1fdmFsdWUpID09IHNpZ251
bShyaHMpID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7
CisgICAgICAgIGEuc2V0VGltZVNjYWxlKGEubV9zY2FsZSAvIDIpOwogICAgIH0KIAogICAgIHJl
dHVybiBhOwpAQCAtMzIyLDE3NiArMzEwLDExMCBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVy
YXRvciooaW50MzJfdCByaHMpIGNvbnN0CiAKIGJvb2wgTWVkaWFUaW1lOjpvcGVyYXRvciEoKSBj
b25zdAogewotICAgIHJldHVybiAobV90aW1lRmxhZ3MgPT0gVmFsaWQgJiYgIW1fdGltZVZhbHVl
KQotICAgICAgICB8fCAobV90aW1lRmxhZ3MgPT0gKFZhbGlkIHwgRG91YmxlVmFsdWUpICYmICFt
X3RpbWVWYWx1ZUFzRG91YmxlKQotICAgICAgICB8fCBpc0ludmFsaWQoKTsKKyAgICByZXR1cm4g
aXNJbnZhbGlkKCkgfHwgKGhhc0RvdWJsZVZhbHVlKCkgPyAhbV92YWx1ZUFzRG91YmxlIDogIW1f
dmFsdWUpOwogfQogCiBNZWRpYVRpbWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewotICAgIHJl
dHVybiAhKG1fdGltZUZsYWdzID09IFZhbGlkICYmICFtX3RpbWVWYWx1ZSkKLSAgICAgICAgJiYg
IShtX3RpbWVGbGFncyA9PSAoVmFsaWQgfCBEb3VibGVWYWx1ZSkgJiYgIW1fdGltZVZhbHVlQXNE
b3VibGUpCi0gICAgICAgICYmICFpc0ludmFsaWQoKTsKKyAgICByZXR1cm4gISEqdGhpczsKIH0K
IAotTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3MgTWVkaWFUaW1lOjpjb21wYXJlKGNvbnN0IE1l
ZGlhVGltZSYgcmhzKSBjb25zdAorc3RhdGljIHN0ZDo6d2Vha19vcmRlcmluZyBhc3NlcnROb3RV
bm9yZGVyZWQoc3RkOjpwYXJ0aWFsX29yZGVyaW5nIG9yZGVyKQogewotICAgIGF1dG8gYW5kRmxh
Z3MgPSBtX3RpbWVGbGFncyAmIHJocy5tX3RpbWVGbGFnczsKLSAgICBpZiAoYW5kRmxhZ3MgJiAo
UG9zaXRpdmVJbmZpbml0ZSB8IE5lZ2F0aXZlSW5maW5pdGUgfCBJbmRlZmluaXRlKSkKLSAgICAg
ICAgcmV0dXJuIEVxdWFsVG87Ci0KLSAgICBhdXRvIG9yRmxhZ3MgPSBtX3RpbWVGbGFncyB8IHJo
cy5tX3RpbWVGbGFnczsKLSAgICBpZiAoIShvckZsYWdzICYgVmFsaWQpKQotICAgICAgICByZXR1
cm4gRXF1YWxUbzsKLQotICAgIGlmICghKGFuZEZsYWdzICYgVmFsaWQpKQotICAgICAgICByZXR1
cm4gaXNJbnZhbGlkKCkgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwotCi0gICAgaWYgKG9yRmxh
Z3MgJiBOZWdhdGl2ZUluZmluaXRlKQotICAgICAgICByZXR1cm4gaXNOZWdhdGl2ZUluZmluaXRl
KCkgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwotCi0gICAgaWYgKG9yRmxhZ3MgJiBQb3NpdGl2
ZUluZmluaXRlKQotICAgICAgICByZXR1cm4gaXNQb3NpdGl2ZUluZmluaXRlKCkgPyBHcmVhdGVy
VGhhbiA6IExlc3NUaGFuOwotCi0gICAgaWYgKG9yRmxhZ3MgJiBJbmRlZmluaXRlKQotICAgICAg
ICByZXR1cm4gaXNJbmRlZmluaXRlKCkgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwotCi0gICAg
aWYgKGFuZEZsYWdzICYgRG91YmxlVmFsdWUpIHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVlQXNE
b3VibGUgPT0gcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpCi0gICAgICAgICAgICByZXR1cm4gRXF1
YWxUbzsKLQotICAgICAgICByZXR1cm4gbV90aW1lVmFsdWVBc0RvdWJsZSA8IHJocy5tX3RpbWVW
YWx1ZUFzRG91YmxlID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9Ci0KLSAgICBpZiAo
b3JGbGFncyAmIERvdWJsZVZhbHVlKSB7Ci0gICAgICAgIGRvdWJsZSBhID0gdG9Eb3VibGUoKTsK
LSAgICAgICAgZG91YmxlIGIgPSByaHMudG9Eb3VibGUoKTsKLSAgICAgICAgaWYgKGEgPiBiKQot
ICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOwotICAgICAgICBpZiAoYSA8IGIpCi0gICAg
ICAgICAgICByZXR1cm4gTGVzc1RoYW47Ci0gICAgICAgIHJldHVybiBFcXVhbFRvOwotICAgIH0K
LQotICAgIGlmICgobV90aW1lVmFsdWUgPCAwKSAhPSAocmhzLm1fdGltZVZhbHVlIDwgMCkpCi0g
ICAgICAgIHJldHVybiBtX3RpbWVWYWx1ZSA8IDAgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwor
ICAgIEFTU0VSVChvcmRlciAhPSBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OnVub3JkZXJlZCk7Cisg
ICAgcmV0dXJuIGlzX2x0KG9yZGVyKSA/IHN0ZDo6d2Vha19vcmRlcmluZzo6bGVzcyA6IGlzX2d0
KG9yZGVyKSA/IHN0ZDo6d2Vha19vcmRlcmluZzo6bGVzcyA6IHN0ZDo6d2Vha19vcmRlcmluZzo6
ZXF1aXZhbGVudDsKK30KIAotICAgIGlmICghbV90aW1lVmFsdWUgJiYgIXJocy5tX3RpbWVWYWx1
ZSkKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87CitzdGQ6OndlYWtfb3JkZXJpbmcgb3BlcmF0b3I8
PT4oTWVkaWFUaW1lIGEsIE1lZGlhVGltZSBiKQoreworICAgIGF1dG8gb3JkZXJpbmdDbGFzcyA9
IFtdKE1lZGlhVGltZSB0aW1lKSB7CisgICAgICAgIGlmICh0aW1lLmlzTmVnYXRpdmVJbmZpbml0
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAodGltZS5pc0luZGVmaW5p
dGUoKSkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBpZiAodGltZS5pc1Bvc2l0aXZl
SW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICBpZiAodGltZS5pc0lu
dmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
OworICAgIGF1dG8gYUNsYXNzID0gb3JkZXJpbmdDbGFzcyhhKTsKKyAgICBhdXRvIGJDbGFzcyA9
IG9yZGVyaW5nQ2xhc3MoYik7CisgICAgaWYgKGFDbGFzcyB8fCBiQ2xhc3MpCisgICAgICAgIHJl
dHVybiBhQ2xhc3MgPD0+IGJDbGFzczsKIAotICAgIGlmIChtX3RpbWVTY2FsZSA9PSByaHMubV90
aW1lU2NhbGUpIHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVlID09IHJocy5tX3RpbWVWYWx1ZSkK
LSAgICAgICAgICAgIHJldHVybiBFcXVhbFRvOwotICAgICAgICByZXR1cm4gbV90aW1lVmFsdWUg
PCByaHMubV90aW1lVmFsdWUgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwotICAgIH0KKyAgICBp
ZiAoYS5oYXNEb3VibGVWYWx1ZSgpIHx8IGIuaGFzRG91YmxlVmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuIGFzc2VydE5vdFVub3JkZXJlZChhLnRvRG91YmxlKCkgPD0+IGIudG9Eb3VibGUoKSk7CiAK
LSAgICBpZiAobV90aW1lVmFsdWUgPT0gcmhzLm1fdGltZVZhbHVlKQotICAgICAgICByZXR1cm4g
bV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwor
ICAgIGlmICgoYS5tX3ZhbHVlIDwgMCkgIT0gKGIubV92YWx1ZSA8IDApIHx8ICFhLm1fdmFsdWUg
fHwgIWIubV92YWx1ZSB8fCBhLm1fc2NhbGUgPT0gYi5tX3NjYWxlKQorICAgICAgICByZXR1cm4g
YS5tX3ZhbHVlIDw9PiBiLm1fdmFsdWU7CiAKLSAgICBpZiAobV90aW1lVmFsdWUgPj0gMCkgewot
ICAgICAgICBpZiAobV90aW1lVmFsdWUgPCByaHMubV90aW1lVmFsdWUgJiYgbV90aW1lU2NhbGUg
PiByaHMubV90aW1lU2NhbGUpCi0gICAgICAgICAgICByZXR1cm4gTGVzc1RoYW47CisgICAgaWYg
KGEubV92YWx1ZSA9PSBiLm1fdmFsdWUpCisgICAgICAgIHJldHVybiBiLm1fc2NhbGUgPD0+IGEu
bV9zY2FsZTsKIAotICAgICAgICBpZiAobV90aW1lVmFsdWUgPiByaHMubV90aW1lVmFsdWUgJiYg
bV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUpCi0gICAgICAgICAgICByZXR1cm4gR3JlYXRl
clRoYW47CisgICAgaWYgKGEubV92YWx1ZSA+PSAwKSB7CisgICAgICAgIGlmIChhLm1fdmFsdWUg
PCBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlID4gYi5tX3NjYWxlKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6d2Vha19vcmRlcmluZzo6bGVzczsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIubV92
YWx1ZSAmJiBhLm1fc2NhbGUgPCBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjp3
ZWFrX29yZGVyaW5nOjpncmVhdGVyOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX3RpbWVW
YWx1ZSA8IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA8IHJocy5tX3RpbWVTY2FsZSkK
LSAgICAgICAgICAgIHJldHVybiBMZXNzVGhhbjsKLQotICAgICAgICBpZiAobV90aW1lVmFsdWUg
PiByaHMubV90aW1lVmFsdWUgJiYgbV90aW1lU2NhbGUgPiByaHMubV90aW1lU2NhbGUpCi0gICAg
ICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47CisgICAgICAgIGlmIChhLm1fdmFsdWUgPCBiLm1f
dmFsdWUgJiYgYS5tX3NjYWxlIDwgYi5tX3NjYWxlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
d2Vha19vcmRlcmluZzo6bGVzczsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIubV92YWx1ZSAm
JiBhLm1fc2NhbGUgPiBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjp3ZWFrX29y
ZGVyaW5nOjpncmVhdGVyOwogICAgIH0KIAotICAgIGludDY0X3QgbGhzRmFjdG9yOwotICAgIGlu
dDY0X3QgcmhzRmFjdG9yOwotICAgIGlmIChzYWZlTXVsdGlwbHkobV90aW1lVmFsdWUsIHN0YXRp
Y19jYXN0PGludDY0X3Q+KHJocy5tX3RpbWVTY2FsZSksIGxoc0ZhY3RvcikKLSAgICAgICAgJiYg
c2FmZU11bHRpcGx5KHJocy5tX3RpbWVWYWx1ZSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4obV90aW1l
U2NhbGUpLCByaHNGYWN0b3IpKSB7Ci0gICAgICAgIGlmIChsaHNGYWN0b3IgPT0gcmhzRmFjdG9y
KQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAgICAgIHJldHVybiBsaHNGYWN0b3Ig
PCByaHNGYWN0b3IgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwotICAgIH0KKyAgICBpbnQ2NF90
IGFQcm9kdWN0OworICAgIGludDY0X3QgYlByb2R1Y3Q7CisgICAgaW50NjRfdCBhVGltZVNjYWxl
ID0gYS5tX3NjYWxlOworICAgIGludDY0X3QgYlRpbWVTY2FsZSA9IGIubV9zY2FsZTsKKyAgICBp
ZiAoc2FmZU11bHRpcGx5KGEubV92YWx1ZSwgYVRpbWVTY2FsZSwgYVByb2R1Y3QpICYmIHNhZmVN
dWx0aXBseShiLm1fdmFsdWUsIGJUaW1lU2NhbGUsIGJQcm9kdWN0KSkKKyAgICAgICAgcmV0dXJu
IGFQcm9kdWN0IDw9PiBiUHJvZHVjdDsKKworICAgIGF1dG8gYVF1b3RpZW50ID0gYS5tX3ZhbHVl
IC8gYS5tX3NjYWxlOworICAgIGF1dG8gYlF1b3RpZW50ID0gYi5tX3ZhbHVlIC8gYi5tX3NjYWxl
OworICAgIGlmIChhUXVvdGllbnQgIT0gYlF1b3RpZW50KQorICAgICAgICByZXR1cm4gYVF1b3Rp
ZW50IDw9PiBiUXVvdGllbnQ7CiAKLSAgICBpbnQ2NF90IHJoc1dob2xlID0gcmhzLm1fdGltZVZh
bHVlIC8gcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhzV2hvbGUgPSBtX3RpbWVWYWx1
ZSAvIG1fdGltZVNjYWxlOwotICAgIGlmIChsaHNXaG9sZSA+IHJoc1dob2xlKQotICAgICAgICBy
ZXR1cm4gR3JlYXRlclRoYW47Ci0gICAgaWYgKGxoc1dob2xlIDwgcmhzV2hvbGUpCi0gICAgICAg
IHJldHVybiBMZXNzVGhhbjsKLQotICAgIGludDY0X3QgcmhzUmVtYWluID0gcmhzLm1fdGltZVZh
bHVlICUgcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhzUmVtYWluID0gbV90aW1lVmFs
dWUgJSBtX3RpbWVTY2FsZTsKLSAgICBsaHNGYWN0b3IgPSBsaHNSZW1haW4gKiByaHMubV90aW1l
U2NhbGU7Ci0gICAgcmhzRmFjdG9yID0gcmhzUmVtYWluICogbV90aW1lU2NhbGU7Ci0KLSAgICBp
ZiAobGhzRmFjdG9yID09IHJoc0ZhY3RvcikKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAg
cmV0dXJuIGxoc0ZhY3RvciA+IHJoc0ZhY3RvciA/IEdyZWF0ZXJUaGFuIDogTGVzc1RoYW47Cisg
ICAgYXV0byBhUmVtYWluZGVyID0gYS5tX3ZhbHVlICUgYS5tX3NjYWxlICogYS5tX3NjYWxlOwor
ICAgIGF1dG8gYlJlbWFpbmRlciA9IGIubV92YWx1ZSAlIGIubV9zY2FsZSAqIGIubV9zY2FsZTsK
KyAgICByZXR1cm4gYVJlbWFpbmRlciA8PT4gYlJlbWFpbmRlcjsKIH0KIAotYm9vbCBNZWRpYVRp
bWU6OmlzQmV0d2Vlbihjb25zdCBNZWRpYVRpbWUmIGEsIGNvbnN0IE1lZGlhVGltZSYgYikgY29u
c3QKK2Jvb2wgTWVkaWFUaW1lOjppc0JldHdlZW4oTWVkaWFUaW1lIGEsIE1lZGlhVGltZSBiKSBj
b25zdAogewogICAgIGlmIChhID4gYikKICAgICAgICAgcmV0dXJuICp0aGlzID4gYiAmJiAqdGhp
cyA8IGE7CiAgICAgcmV0dXJuICp0aGlzID4gYSAmJiAqdGhpcyA8IGI7CiB9CiAKLWNvbnN0IE1l
ZGlhVGltZSYgTWVkaWFUaW1lOjp6ZXJvVGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlh
VGltZSB0aW1lKDAsIDEsIFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVk
aWFUaW1lJiBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVk
aWFUaW1lIHRpbWUoLTEsIDEsIDApOwotICAgIHJldHVybiB0aW1lOwotfQotCi1jb25zdCBNZWRp
YVRpbWUmIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKQotewotICAgIHN0YXRpYyBj
b25zdCBNZWRpYVRpbWUgdGltZSgwLCAxLCBQb3NpdGl2ZUluZmluaXRlIHwgVmFsaWQpOwotICAg
IHJldHVybiB0aW1lOwotfQotCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6bmVnYXRpdmVJ
bmZpbml0ZVRpbWUoKQotewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgtMSwgMSwg
TmVnYXRpdmVJbmZpbml0ZSB8IFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3Qg
TWVkaWFUaW1lJiBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29u
c3QgTWVkaWFUaW1lIHRpbWUoMCwgMSwgSW5kZWZpbml0ZSB8IFZhbGlkKTsKLSAgICByZXR1cm4g
dGltZTsKLX0KLQotTWVkaWFUaW1lIE1lZGlhVGltZTo6dG9UaW1lU2NhbGUodWludDMyX3QgdGlt
ZVNjYWxlLCBSb3VuZGluZ0ZsYWdzIGZsYWdzKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhVGltZTo6
dG9UaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGluZ01vZGUgbW9kZSkgY29uc3QK
IHsKICAgICBNZWRpYVRpbWUgcmVzdWx0ID0gKnRoaXM7Ci0gICAgcmVzdWx0LnNldFRpbWVTY2Fs
ZSh0aW1lU2NhbGUsIGZsYWdzKTsKKyAgICByZXN1bHQuc2V0VGltZVNjYWxlKHRpbWVTY2FsZSwg
bW9kZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBNZWRpYVRpbWU6OnNldFRpbWVT
Y2FsZSh1aW50MzJfdCB0aW1lU2NhbGUsIFJvdW5kaW5nRmxhZ3MgZmxhZ3MpCit2b2lkIE1lZGlh
VGltZTo6c2V0VGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdNb2RlIG1vZGUp
CiB7CiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkpIHsKLSAgICAgICAgKnRoaXMgPSBNZWRpYVRp
bWU6OmNyZWF0ZVdpdGhEb3VibGUobV90aW1lVmFsdWVBc0RvdWJsZSwgdGltZVNjYWxlKTsKKyAg
ICAgICAgKnRoaXMgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV92YWx1ZUFzRG91Ymxl
LCB0aW1lU2NhbGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCF0aW1lU2Nh
bGUpIHsKLSAgICAgICAgKnRoaXMgPSBtX3RpbWVWYWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRl
VGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAgKnRoaXMgPSBtX3ZhbHVl
IDwgMCA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHRpbWVTY2FsZSA9PSBtX3RpbWVTY2Fs
ZSkKKyAgICBpZiAodGltZVNjYWxlID09IG1fc2NhbGUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IHRpbWVTY2FsZSA9IHN0ZDo6bWluKE1heGltdW1UaW1lU2NhbGUsIHRpbWVTY2FsZSk7CiAKLSAg
ICBJbnQxMjggbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxJbnQxMjg+KG1fdGltZVZhbHVlKSAqIHRp
bWVTY2FsZTsKLSAgICBpbnQ2NF90IHJlbWFpbmRlciA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG5l
d1ZhbHVlICUgbV90aW1lU2NhbGUpOwotICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgLyBtX3RpbWVT
Y2FsZTsKKyAgICBJbnQxMjggbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxJbnQxMjg+KG1fdmFsdWUp
ICogdGltZVNjYWxlOworICAgIGludDY0X3QgcmVtYWluZGVyID0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4obmV3VmFsdWUgJSBtX3NjYWxlKTsKKyAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlIC8gbV9zY2Fs
ZTsKIAogICAgIGlmIChuZXdWYWx1ZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1p
bigpKSB7CiAgICAgICAgICp0aGlzID0gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKQEAgLTUwMyw0
MiArNDI1LDQyIEBAIHZvaWQgTWVkaWFUaW1lOjpzZXRUaW1lU2NhbGUodWludDMyX3QgdGltZVNj
YWxlLCBSb3VuZGluZ0ZsYWdzIGZsYWdzKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV90aW1lVmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihuZXdWYWx1ZSk7Ci0gICAgc3RkOjpz
d2FwKG1fdGltZVNjYWxlLCB0aW1lU2NhbGUpOworICAgIG1fdmFsdWUgPSBuZXdWYWx1ZTsKKyAg
ICBhdXRvIG9sZFRpbWVTY2FsZSA9IHN0ZDo6ZXhjaGFuZ2UobV9zY2FsZSwgdGltZVNjYWxlKTsK
IAogICAgIGlmICghcmVtYWluZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVGbGFn
cyB8PSBIYXNCZWVuUm91bmRlZDsKLSAgICBzd2l0Y2ggKGZsYWdzKSB7Ci0gICAgY2FzZSBSb3Vu
ZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50
NjRfdD4obGxhYnMocmVtYWluZGVyKSkgKiAyID49IHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVT
Y2FsZSkpIHsKKyAgICBtX2ZsYWdzLmFkZChIYXNCZWVuUm91bmRlZCk7CisgICAgc3dpdGNoICht
b2RlKSB7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm86CisgICAgICAg
IGlmIChzdGQ6OmFicyhyZW1haW5kZXIpICogMiA+PSBvbGRUaW1lU2NhbGUpIHsKICAgICAgICAg
ICAgIC8vIHJvdW5kIHVwIChhd2F5IGZyb20gemVybykKICAgICAgICAgICAgIGlmIChyZW1haW5k
ZXIgPCAwKQotICAgICAgICAgICAgICAgIG1fdGltZVZhbHVlLS07CisgICAgICAgICAgICAgICAg
bV92YWx1ZS0tOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fdGltZVZhbHVl
Kys7CisgICAgICAgICAgICAgICAgbV92YWx1ZSsrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogCi0gICAgY2FzZSBSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvOgorICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpUb3dhcmRaZXJvOgogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgUm91bmRpbmdG
bGFnczo6QXdheUZyb21aZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm86
CiAgICAgICAgIGlmIChyZW1haW5kZXIgPCAwKQotICAgICAgICAgICAgbV90aW1lVmFsdWUtLTsK
KyAgICAgICAgICAgIG1fdmFsdWUtLTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90aW1l
VmFsdWUrKzsKKyAgICAgICAgICAgIG1fdmFsdWUrKzsKICAgICAgICAgYnJlYWs7CiAKLSAgICBj
YXNlIFJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CisgICAgY2FzZSBSb3Vu
ZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CiAgICAgICAgIGlmIChyZW1haW5kZXIg
PiAwKQotICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAgICAgIG1fdmFsdWUrKzsK
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6VG93YXJk
TmVnYXRpdmVJbmZpbml0eToKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eToKICAgICAgICAgaWYgKHJlbWFpbmRlciA8IDApCi0gICAgICAgICAgICBtX3RpbWVW
YWx1ZS0tOworICAgICAgICAgICAgbV92YWx1ZS0tOwogICAgICAgICBicmVhazsKICAgICB9CiB9
CkBAIC01NDcsNyArNDY5LDcgQEAgdm9pZCBNZWRpYVRpbWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoInsiKTsKICAgICBpZiAoIWhhc0RvdWJsZVZhbHVl
KCkpCi0gICAgICAgIG91dC5wcmludChtX3RpbWVWYWx1ZSwgIi8iLCBtX3RpbWVTY2FsZSwgIiA9
ICIpOworICAgICAgICBvdXQucHJpbnQobV92YWx1ZSwgIi8iLCBtX3NjYWxlLCAiID0gIik7CiAg
ICAgb3V0LnByaW50KHRvRG91YmxlKCksICJ9Iik7CiB9CiAKQEAgLTU1Niw3ICs0NzgsNyBAQCBT
dHJpbmcgTWVkaWFUaW1lOjp0b1N0cmluZygpIGNvbnN0CiAgICAgY29uc3QgY2hhciogaW52YWxp
ZCA9IGlzSW52YWxpZCgpID8gIiwgaW52YWxpZCIgOiAiIjsKICAgICBpZiAoaGFzRG91YmxlVmFs
dWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCB0b0RvdWJsZSgpLCBpbnZhbGlk
LCAnfScpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKCd7JywgbV90aW1lVmFsdWUsICcvJywgbV90
aW1lU2NhbGUsICIgPSAiLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOworICAgIHJldHVybiBt
YWtlU3RyaW5nKCd7JywgbV92YWx1ZSwgJy8nLCBtX3NjYWxlLCAiID0gIiwgdG9Eb3VibGUoKSwg
aW52YWxpZCwgJ30nKTsKIH0KIAogUmVmPEpTT046Ok9iamVjdD4gTWVkaWFUaW1lOjp0b0pTT05P
YmplY3QoKSBjb25zdApAQCAtNTc5LDkgKzUwMSw5IEBAIFJlZjxKU09OOjpPYmplY3Q+IE1lZGlh
VGltZTo6dG9KU09OT2JqZWN0KCkgY29uc3QKICAgICBlbHNlCiAgICAgICAgIG9iamVjdC0+c2V0
RG91YmxlKCJ2YWx1ZSJfcywgdG9Eb3VibGUoKSk7CiAKLSAgICBvYmplY3QtPnNldERvdWJsZSgi
bnVtZXJhdG9yIl9zLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVlKSk7Ci0gICAgb2Jq
ZWN0LT5zZXRJbnRlZ2VyKCJkZW5vbWluYXRvciJfcywgbV90aW1lU2NhbGUpOwotICAgIG9iamVj
dC0+c2V0SW50ZWdlcigiZmxhZ3MiX3MsIG1fdGltZUZsYWdzKTsKKyAgICBvYmplY3QtPnNldERv
dWJsZSgibnVtZXJhdG9yIl9zLCBtX3ZhbHVlKTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImRl
bm9taW5hdG9yIl9zLCBtX3NjYWxlKTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImZsYWdzIl9z
LCBtX2ZsYWdzLnRvUmF3KCkpOwogCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KQEAgLTU5MSwzMyAr
NTEzLDI4IEBAIFN0cmluZyBNZWRpYVRpbWU6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgcmV0
dXJuIHRvSlNPTk9iamVjdCgpLT50b0pTT05TdHJpbmcoKTsKIH0KIAotTWVkaWFUaW1lIGFicyhj
b25zdCBNZWRpYVRpbWUmIHJocykKK01lZGlhVGltZSBhYnMoTWVkaWFUaW1lIHRpbWUpCiB7Ci0g
ICAgaWYgKHJocy5pc0ludmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6aW52YWxp
ZFRpbWUoKTsKLSAgICBpZiAocmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpIHx8IHJocy5pc1Bvc2l0
aXZlSW5maW5pdGUoKSkKKyAgICBpZiAodGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAg
ICAgcmV0dXJuIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAocmhz
Lmhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhE
b3VibGUoZmFicyhyaHMubV90aW1lVmFsdWVBc0RvdWJsZSkpOwotCi0gICAgTWVkaWFUaW1lIHZh
bCA9IHJoczsKLSAgICB2YWwubV90aW1lVmFsdWUgPSBzdGQ6OmFicyhyaHMubV90aW1lVmFsdWUp
OwotICAgIHJldHVybiB2YWw7CisgICAgaWYgKHRpbWUuaGFzRG91YmxlVmFsdWUoKSkKKyAgICAg
ICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGQ6OmFicyh0aW1lLm1fdmFs
dWVBc0RvdWJsZSkpOworICAgIE1lZGlhVGltZSByZXN1bHQgPSB0aW1lOworICAgIHJlc3VsdC5t
X3ZhbHVlID0gc3RkOjphYnMocmVzdWx0Lm1fdmFsdWUpOworICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIFN0cmluZyBNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKIHsKICAgICBh
dXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0KICAgICBvYmplY3QtPnNldE9i
amVjdCgic3RhcnQiX3MsIHN0YXJ0LnRvSlNPTk9iamVjdCgpKTsKICAgICBvYmplY3QtPnNldE9i
amVjdCgiZW5kIl9zLCBlbmQudG9KU09OT2JqZWN0KCkpOwotCiAgICAgcmV0dXJuIG9iamVjdC0+
dG9KU09OU3RyaW5nKCk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCiAKLVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCitUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgTWVkaWFUaW1lIHRpbWUpCiB7CiAg
ICAgcmV0dXJuIHN0cmVhbSA8PCB0aW1lLnRvSlNPTlN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTWVkaWFUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaApp
bmRleCA3MWFjZjMyOWViMzk4OTMzNTEyZmQ3ZjNmNThkNjBiZWNmZjIzYzUwLi5kZDgyNjBlYTJl
MTU0ZjdlM2I4Mzc1YTljYTE4NzU3Y2ZiODNhMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9NZWRpYVRpbWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaApAQCAtMzAsMjEg
KzMwLDE2IEBACiAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9K
U09OVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpbmNsdWRl
IDxjbWF0aD4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUg
PHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFtZXNwYWNlIFdURiB7
CiAKIGNsYXNzIFByaW50U3RyZWFtOwogCi1jbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFU
aW1lIGZpbmFsIHsKK2NsYXNzIE1lZGlhVGltZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZW51bSB7CisgICAgZW51bSBGbGFnIDogdWludDhfdCB7
CiAgICAgICAgIFZhbGlkID0gMSA8PCAwLAogICAgICAgICBIYXNCZWVuUm91bmRlZCA9IDEgPDwg
MSwKICAgICAgICAgUG9zaXRpdmVJbmZpbml0ZSA9IDEgPDwgMiwKQEAgLTUyLDY3ICs0Nyw1MyBA
QCBwdWJsaWM6CiAgICAgICAgIEluZGVmaW5pdGUgPSAxIDw8IDQsCiAgICAgICAgIERvdWJsZVZh
bHVlID0gMSA8PCA1LAogICAgIH07Ci0KLSAgICBjb25zdGV4cHIgTWVkaWFUaW1lKCk7Ci0gICAg
Y29uc3RleHByIE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgdWludDhf
dCBmbGFncyA9IFZhbGlkKTsKLSAgICBNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiByaHMpOwot
Ci0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lKTsK
LSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUsIHVp
bnQzMl90IHRpbWVTY2FsZSk7Ci0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRG91Ymxl
KGRvdWJsZSBkb3VibGVUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3Vi
bGUoZG91YmxlIGRvdWJsZVRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7Ci0KLSAgICBmbG9hdCB0
b0Zsb2F0KCkgY29uc3Q7Ci0gICAgZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7Ci0KLSAgICBNZWRp
YVRpbWUmIG9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocyk7Ci0gICAgTWVkaWFUaW1lJiBv
cGVyYXRvcis9KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzICsg
cmhzOyB9Ci0gICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7
IHJldHVybiAqdGhpcyA9ICp0aGlzIC0gcmhzOyB9Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yKyhj
b25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLShjb25z
dCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLSgpIGNvbnN0
OwotICAgIE1lZGlhVGltZSBvcGVyYXRvciooaW50MzJfdCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVy
YXRvcjwoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9
PSBMZXNzVGhhbjsgfQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBj
b25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhz
KSAhPSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhVGltZSYgcmhz
KSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gRXF1YWxUbzsgfQotICAgIGJvb2wgb3Bl
cmF0b3I+PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMp
ID49IEVxdWFsVG87IH0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgTWVkaWFUaW1lJiByaHMp
IGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA8PSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdDsKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Q7Ci0KLSAg
ICB0eXBlZGVmIGVudW0gewotICAgICAgICBMZXNzVGhhbiA9IC0xLAotICAgICAgICBFcXVhbFRv
ID0gMCwKLSAgICAgICAgR3JlYXRlclRoYW4gPSAxLAotICAgIH0gQ29tcGFyaXNvbkZsYWdzOwot
Ci0gICAgQ29tcGFyaXNvbkZsYWdzIGNvbXBhcmUoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0
OwotICAgIGJvb2wgaXNCZXR3ZWVuKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYp
IGNvbnN0OwotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3Mg
JiBWYWxpZDsgfQorICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUoKSA6IE1lZGlhVGltZSB7IGludDY0
X3QgeyB9LCBEZWZhdWx0VGltZVNjYWxlIH0geyB9CisgICAgY29uc3RleHByIE1lZGlhVGltZShp
bnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgT3B0aW9uU2V0PEZsYWc+ID0geyBWYWxpZCB9
KTsKKworICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZhbHVlKTsK
KyAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCB2YWx1ZSwgdWludDMy
X3Qgc2NhbGUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0
ZVdpdGhEb3VibGUoZG91YmxlIHZhbHVlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IE1lZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSB2YWx1ZSwgdWludDMyX3Qgc2NhbGUp
OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0IHRvRmxvYXQoKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7CisKKyAgICBNZWRpYVRp
bWUmIG9wZXJhdG9yKz0oTWVkaWFUaW1lIHJocykgeyByZXR1cm4gKnRoaXMgPSAqdGhpcyArIHJo
czsgfQorICAgIE1lZGlhVGltZSYgb3BlcmF0b3ItPShNZWRpYVRpbWUgcmhzKSB7IHJldHVybiAq
dGhpcyA9ICp0aGlzIC0gcmhzOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBv
cGVyYXRvcisoTWVkaWFUaW1lKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFU
aW1lIG9wZXJhdG9yLShNZWRpYVRpbWUpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBN
ZWRpYVRpbWUgb3BlcmF0b3ItKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlh
VGltZSBvcGVyYXRvciooaW50MzJfdCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdDsKKworICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
Ojp3ZWFrX29yZGVyaW5nIG9wZXJhdG9yPD0+KE1lZGlhVGltZSwgTWVkaWFUaW1lKTsKKyAgICBi
b29sIG9wZXJhdG9yPT0oTWVkaWFUaW1lIG90aGVyKSBjb25zdCB7IHJldHVybiBpc19lcSgqdGhp
cyA8PT4gb3RoZXIpOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNCZXR3ZWVuKE1l
ZGlhVGltZSwgTWVkaWFUaW1lKSBjb25zdDsKKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoVmFsaWQpOyB9CiAgICAgYm9vbCBpc0ludmFsaWQoKSBj
b25zdCB7IHJldHVybiAhaXNWYWxpZCgpOyB9Ci0gICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgSGFzQmVlblJvdW5kZWQ7IH0KLSAgICBib29sIGlz
UG9zaXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgUG9zaXRpdmVJ
bmZpbml0ZTsgfQotICAgIGJvb2wgaXNOZWdhdGl2ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lRmxhZ3MgJiBOZWdhdGl2ZUluZmluaXRlOyB9Ci0gICAgYm9vbCBpc0luZGVmaW5pdGUo
KSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIEluZGVmaW5pdGU7IH0KKyAgICBib29sIGhh
c0JlZW5Sb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhIYXNCZWVuUm91
bmRlZCk7IH0KKyAgICBib29sIGlzUG9zaXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmxhZ3MuY29udGFpbnMoUG9zaXRpdmVJbmZpbml0ZSk7IH0KKyAgICBib29sIGlzTmVnYXRpdmVJ
bmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoTmVnYXRpdmVJbmZpbml0
ZSk7IH0KKyAgICBib29sIGlzSW5kZWZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29u
dGFpbnMoSW5kZWZpbml0ZSk7IH0KICAgICBib29sIGlzRmluaXRlKCkgY29uc3QgeyByZXR1cm4g
IWlzSW52YWxpZCgpICYmICFpc0luZGVmaW5pdGUoKSAmJiAhaXNQb3NpdGl2ZUluZmluaXRlKCkg
JiYgIWlzTmVnYXRpdmVJbmZpbml0ZSgpOyB9Ci0gICAgYm9vbCBoYXNEb3VibGVWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgRG91YmxlVmFsdWU7IH0KLSAgICB1aW50OF90IHRp
bWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzOyB9CisgICAgYm9vbCBoYXNEb3Vi
bGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRG91YmxlVmFsdWUpOyB9
CisgICAgT3B0aW9uU2V0PEZsYWc+IHRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7
IH0KIAotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIHplcm9UaW1lKCk7Ci0gICAgc3RhdGlj
IGNvbnN0IE1lZGlhVGltZSYgaW52YWxpZFRpbWUoKTsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFU
aW1lJiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUm
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgaW5k
ZWZpbml0ZVRpbWUoKTsKKyAgICBzdGF0aWMgY29uc3RleHByIE1lZGlhVGltZSB6ZXJvVGltZSgp
IHsgcmV0dXJuIHsgMCwgMSwgVmFsaWQgfTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgTWVkaWFU
aW1lIGludmFsaWRUaW1lKCkgeyByZXR1cm4geyAtMSwgMSwgeyB9IH07IH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIE1lZGlhVGltZSBwb3NpdGl2ZUluZmluaXRlVGltZSgpIHsgcmV0dXJuIHsgMCwg
MSwgeyBQb3NpdGl2ZUluZmluaXRlLCBWYWxpZCB9IH07IH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IE1lZGlhVGltZSBuZWdhdGl2ZUluZmluaXRlVGltZSgpIHsgcmV0dXJuIHsgLTEsIDEsIHsgTmVn
YXRpdmVJbmZpbml0ZSwgVmFsaWQgfSB9OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRp
bWUgaW5kZWZpbml0ZVRpbWUoKSB7IHJldHVybiB7IDAsIDEsIHsgSW5kZWZpbml0ZSwgVmFsaWQg
fSB9OyB9CiAKLSAgICBjb25zdCBpbnQ2NF90JiB0aW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3RpbWVWYWx1ZTsgfQotICAgIGNvbnN0IHVpbnQzMl90JiB0aW1lU2NhbGUoKSBjb25zdCB7IHJl
dHVybiBtX3RpbWVTY2FsZTsgfQorICAgIGludDY0X3QgdGltZVZhbHVlKCkgY29uc3QgeyBBU1NF
UlQoIWhhc0RvdWJsZVZhbHVlKCkpOyByZXR1cm4gbV92YWx1ZTsgfQorICAgIHVpbnQzMl90IHRp
bWVTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KIAotICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwotICAgIFJlZjxKU09OOjpPYmplY3Q+IHRvSlNPTk9i
amVjdCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgdG9KU09OU3RyaW5n
KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxKU09OOjpPYmplY3Q+IHRvSlNP
Tk9iamVjdCgpIGNvbnN0OwogCiAgICAgLy8gTWFrZSB0aGUgZm9sbG93aW5nIGNhc3RzIGVycm9y
czoKICAgICBvcGVyYXRvciBkb3VibGUoKSBjb25zdCA9IGRlbGV0ZTsKQEAgLTEyMCw5MyArMTAx
LDk5IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBpbnQoKSBjb25zdCA9IGRlbGV0ZTsKICAgICBN
ZWRpYVRpbWUoaW50KSA9IGRlbGV0ZTsKIAotICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUg
TWVkaWFUaW1lIGFicyhjb25zdCBNZWRpYVRpbWUmIHJocyk7CisgICAgZnJpZW5kIFdURl9FWFBP
UlRfUFJJVkFURSBNZWRpYVRpbWUgYWJzKE1lZGlhVGltZSk7CiAKLSAgICBzdGF0aWMgY29uc3Qg
dWludDMyX3QgRGVmYXVsdFRpbWVTY2FsZSA9IDEwMDAwMDAwOwotICAgIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBNYXhpbXVtVGltZVNjYWxlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
RGVmYXVsdFRpbWVTY2FsZSA9IDEwMDAwMDAwOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgY29uc3QgdWludDMyX3QgTWF4aW11bVRpbWVTY2FsZTsKIAotICAgIGVudW0gY2xhc3MgUm91
bmRpbmdGbGFncyB7Ci0gICAgICAgIEhhbGZBd2F5RnJvbVplcm8gPSAwLAorICAgIGVudW0gY2xh
c3MgUm91bmRpbmdNb2RlIDogdWludDMyX3QgeworICAgICAgICBIYWxmQXdheUZyb21aZXJvLAog
ICAgICAgICBUb3dhcmRaZXJvLAogICAgICAgICBBd2F5RnJvbVplcm8sCiAgICAgICAgIFRvd2Fy
ZFBvc2l0aXZlSW5maW5pdHksCiAgICAgICAgIFRvd2FyZE5lZ2F0aXZlSW5maW5pdHksCiAgICAg
fTsKLQotICAgIE1lZGlhVGltZSB0b1RpbWVTY2FsZSh1aW50MzJfdCwgUm91bmRpbmdGbGFncyA9
IFJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNZWRpYVRpbWUgdG9UaW1lU2NhbGUodWludDMyX3Qgc2NhbGUsIFJvdW5kaW5nTW9k
ZSA9IFJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykgY29uc3Q7CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShE
ZWNvZGVyJiwgTWVkaWFUaW1lJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRUaW1lU2NhbGUo
dWludDMyX3QsIFJvdW5kaW5nRmxhZ3MgPSBSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJv
KTsKKyAgICBlbnVtIFVzZURvdWJsZUZsYWcgeyBVc2VEb3VibGUgfTsKKyAgICBjb25zdGV4cHIg
TWVkaWFUaW1lKFVzZURvdWJsZUZsYWcsIGRvdWJsZSB2YWx1ZSk7CisKKyAgICB2b2lkIHNldFRp
bWVTY2FsZSh1aW50MzJfdCwgUm91bmRpbmdNb2RlID0gUm91bmRpbmdNb2RlOjpIYWxmQXdheUZy
b21aZXJvKTsKIAogICAgIHVuaW9uIHsKLSAgICAgICAgaW50NjRfdCBtX3RpbWVWYWx1ZTsKLSAg
ICAgICAgZG91YmxlIG1fdGltZVZhbHVlQXNEb3VibGU7CisgICAgICAgIGludDY0X3QgbV92YWx1
ZTsKKyAgICAgICAgZG91YmxlIG1fdmFsdWVBc0RvdWJsZTsKICAgICB9OwotICAgIHVpbnQzMl90
IG1fdGltZVNjYWxlOwotICAgIHVpbnQ4X3QgbV90aW1lRmxhZ3M7CisgICAgdWludDMyX3QgbV9z
Y2FsZSB7IERlZmF1bHRUaW1lU2NhbGUgfTsKKyAgICBPcHRpb25TZXQ8RmxhZz4gbV9mbGFncyB7
IFZhbGlkIH07CiB9OwogCi1jb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoKQotICAgIDog
bV90aW1lVmFsdWUoMCkKLSAgICAsIG1fdGltZVNjYWxlKERlZmF1bHRUaW1lU2NhbGUpCi0gICAg
LCBtX3RpbWVGbGFncyhWYWxpZCkKLXsKLX0KLQotY29uc3RleHByIE1lZGlhVGltZTo6TWVkaWFU
aW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCB1aW50OF90IGZsYWdzKQotICAgIDog
bV90aW1lVmFsdWUodmFsdWUpCi0gICAgLCBtX3RpbWVTY2FsZShzY2FsZSkKLSAgICAsIG1fdGlt
ZUZsYWdzKGZsYWdzKQotewotICAgIGlmIChzY2FsZSB8fCAhKGZsYWdzICYgVmFsaWQpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAqdGhpcyA9IHZhbHVlIDwgMCA/IG5lZ2F0aXZlSW5maW5pdGVU
aW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotfQotCi1pbmxpbmUgTWVkaWFUaW1lIG9w
ZXJhdG9yKihpbnQzMl90IGxocywgY29uc3QgTWVkaWFUaW1lJiByaHMpIHsgcmV0dXJuIHJocy5v
cGVyYXRvcioobGhzKTsgfQotCi1XVEZfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIE1lZGlhVGltZSBh
YnMoY29uc3QgTWVkaWFUaW1lJiByaHMpOworV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBh
YnMoTWVkaWFUaW1lKTsKIAotc3RydWN0IFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWVSYW5n
ZSB7CitzdHJ1Y3QgTWVkaWFUaW1lUmFuZ2UgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKIAotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogCi0gICAgY29uc3QgTWVk
aWFUaW1lIHN0YXJ0OwotICAgIGNvbnN0IE1lZGlhVGltZSBlbmQ7CisgICAgTWVkaWFUaW1lIHN0
YXJ0OworICAgIE1lZGlhVGltZSBlbmQ7CiB9OwogCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgot
dm9pZCBNZWRpYVRpbWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorY29uc3RleHBy
IE1lZGlhVGltZTo6TWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCBPcHRp
b25TZXQ8RmxhZz4gZmxhZ3MpCisgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICwgbV9zY2FsZShz
Y2FsZSkKKyAgICAsIG1fZmxhZ3MoZmxhZ3MpCit7CisgICAgaWYgKCEoc2NhbGUgfHwgIShmbGFn
cyAmIFZhbGlkKSkpCisgICAgICAgICp0aGlzID0gdmFsdWUgPCAwID8gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBNZWRpYVRpbWUgb3BlcmF0b3IqKGNvbnN0IFQmIGEsIE1lZGlhVGltZSBiKQog
ewotICAgIGVuY29kZXIgPDwgbV90aW1lVmFsdWUgPDwgbV90aW1lU2NhbGUgPDwgbV90aW1lRmxh
Z3M7CisgICAgcmV0dXJuIGIgKiBhOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotYm9v
bCBNZWRpYVRpbWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVRpbWUmIHRpbWUpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIE1lZGlhVGltZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1l
VmFsdWUpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lU2NhbGUpCi0gICAg
ICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lRmxhZ3MpOworICAgIGVuY29kZXIgPDwg
bV92YWx1ZSA8PCBtX3NjYWxlIDw8IG1fZmxhZ3M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERl
Y29kZXI+IGJvb2wgTWVkaWFUaW1lOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFUaW1l
JiB0aW1lKQoreworICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh0aW1lLm1fdmFsdWUpCisgICAg
ICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV9zY2FsZSkKKyAgICAgICAgJiYgZGVjb2Rlci5k
ZWNvZGUodGltZS5tX2ZsYWdzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dB
cmd1bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFUaW1lPiB7Ci0g
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBNZWRpYVRpbWUmIHRpbWUpIHsgcmV0dXJu
IHRpbWUudG9KU09OU3RyaW5nKCk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKE1lZGlh
VGltZSB0aW1lKSB7IHJldHVybiB0aW1lLnRvSlNPTlN0cmluZygpOyB9CiB9OwogdGVtcGxhdGU8
PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFUaW1lUmFuZ2U+IHsKICAgICBzdGF0aWMgU3RyaW5n
IHRvU3RyaW5nKGNvbnN0IE1lZGlhVGltZVJhbmdlJiByYW5nZSkgeyByZXR1cm4gcmFuZ2UudG9K
U09OU3RyaW5nKCk7IH0KIH07CiAKICNpZm5kZWYgTkRFQlVHCi1XVEZfRVhQT1JUX1BSSVZBVEUg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgTWVkaWFUaW1lJik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgTWVk
aWFUaW1lKTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPE1lZGlhVGlt
ZTo6RmxhZz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIE1lZGlh
VGltZTo6RmxhZywKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpWYWxpZCwKKyAgICAgICAgTWVk
aWFUaW1lOjpGbGFnOjpIYXNCZWVuUm91bmRlZCwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpQ
b3NpdGl2ZUluZmluaXRlLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6Ok5lZ2F0aXZlSW5maW5p
dGUsCisgICAgICAgIE1lZGlhVGltZTo6RmxhZzo6SW5kZWZpbml0ZSwKKyAgICAgICAgTWVkaWFU
aW1lOjpGbGFnOjpEb3VibGVWYWx1ZQorICAgID47Cit9OworCiB9CiAKIHVzaW5nIFdURjo6TWVk
aWFUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvclB0ci5oIGIv
U291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvclB0ci5oCmluZGV4IDU1MGMxYjFlMGU4MWJiYmFm
MGY4YmU2MjlkNjgwOTZkZjdhODc5ODAuLmYwNzM3YzU0YzgyN2NjYTdlNjQ4ODVjMjY0ZjkzNmFj
ZGFhNzAyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3JQdHIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9yUHRyLmgKQEAgLTYxLDggKzYxLDcgQEAg
cHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1f
cHRyOyB9CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShNZXRhQWxsb2NhdG9yUHRyIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX3B0ciA9PSBvdGhlci5tX3B0cjsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShNZXRhQWxsb2Nh
dG9yUHRyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciAhPSBvdGhlci5tX3B0cjsgfQorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBNZXRhQWxsb2NhdG9yUHRyJikgY29uc3QgPSBkZWZhdWx0
OwogCiAgICAgTWV0YUFsbG9jYXRvclB0ciBvcGVyYXRvcisoc2l6ZV90IHNpemVJbkJ5dGVzKSBj
b25zdCB7IHJldHVybiBNZXRhQWxsb2NhdG9yUHRyKHVudGFnZ2VkUHRyPHVpbnQ4X3QqPigpICsg
c2l6ZUluQnl0ZXMpOyB9CiAgICAgTWV0YUFsbG9jYXRvclB0ciBvcGVyYXRvci0oc2l6ZV90IHNp
emVJbkJ5dGVzKSBjb25zdCB7IHJldHVybiBNZXRhQWxsb2NhdG9yUHRyKHVudGFnZ2VkUHRyPHVp
bnQ4X3QqPigpIC0gc2l6ZUluQnl0ZXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9P
YmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKaW5k
ZXggOTFlMmZiZjg4MDRmMGZhMTQ3YWE5MmIwYzk1MGRjYzRkMjlkMjk0NC4uZjZlMzkwYzNkOTE5
MzczZDIyNWNlN2U3YTAwMTM5YjhmZjhhZWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
T2JqZWN0SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIu
aApAQCAtODUsMTEgKzg1LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVy
ID09IG90aGVyLm1faWRlbnRpZmllcjsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgT2JqZWN0SWRlbnRpZmllciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmllcjsKLSAgICB9Ci0KICAgICB1aW50NjRf
dCB0b1VJbnQ2NCgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25T
ZXQuaAppbmRleCA2ZTY0OTNmMGFkNDJhMDk3ZmQ2MzJkMGM2NGZlMGQ1MzNmMzFlMDJiLi5hMjUy
MzFkODI2YzVkZjg1YTQwZmM1ZDk2NzBjNmQ4YTc2ODA1NWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9PcHRpb25TZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaApAQCAt
MTIzLDggKzEyMyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBJdGVyYXRvciYgb3BlcmF0b3IrKyhp
bnQpID0gZGVsZXRlOwogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsgfQotICAgICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlICE9IG90aGVyLm1fdmFsdWU7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSXRl
cmF0b3IoU3RvcmFnZVR5cGUgdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9CkBAIC0yMTIsMTUg
KzIxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhhc0V4YWN0bHlPbmVCaXRTZXQoKSA/
IHN0ZDo6b3B0aW9uYWw8RT4oc3RhdGljX2Nhc3Q8RT4obV9zdG9yYWdlKSkgOiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCi0gICAgY29uc3RleHByIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9u
U2V0IGxocywgT3B0aW9uU2V0IHJocykKLSAgICB7Ci0gICAgICAgIHJldHVybiBsaHMubV9zdG9y
YWdlID09IHJocy5tX3N0b3JhZ2U7Ci0gICAgfQotCi0gICAgY29uc3RleHByIGZyaWVuZCBib29s
IG9wZXJhdG9yIT0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykKLSAgICB7Ci0gICAgICAg
IHJldHVybiBsaHMubV9zdG9yYWdlICE9IHJocy5tX3N0b3JhZ2U7Ci0gICAgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBPcHRpb25TZXQmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBjb25z
dGV4cHIgZnJpZW5kIE9wdGlvblNldCBvcGVyYXRvcnwoT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0
IHJocykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcmRlck1ha2VyLmggYi9T
b3VyY2UvV1RGL3d0Zi9PcmRlck1ha2VyLmgKaW5kZXggZjZmMmM5OTIwMmU3MmRmZDNjMGMxMTYw
OGFlZjI4Yzk3ZjIxZDdiMC4uYzY1ZmNiZmYzOTY0MGMzMzgxN2IxY2E0M2NhYzYxMzYxODFlOWVm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT3JkZXJNYWtlci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL09yZGVyTWFrZXIuaApAQCAtODQsMTEgKzg0LDcgQEAgcHVibGljOgogCiAgICAgY2xh
c3MgaXRlcmF0b3IgewogICAgIHB1YmxpYzoKLSAgICAgICAgaXRlcmF0b3IoKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvcihOb2RlKiBub2RlKQorICAgICAgICBpdGVy
YXRvcihOb2RlKiBub2RlID0gbnVsbHB0cikKICAgICAgICAgICAgIDogbV9ub2RlKG5vZGUpCiAg
ICAgICAgIHsKICAgICAgICAgfQpAQCAtMTA0LDE1ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgICAgIAogICAg
IHByaXZhdGU6CiAgICAgICAgIE5vZGUqIG1fbm9kZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BhY2tlZC5oIGIvU291cmNlL1dURi93dGYvUGFja2VkLmgKaW5kZXgg
MGQ5NGY4OTBlYWVjNWFhMDE1MDI2MWZjMTkxYzc5ZmU4NWNmM2I0Mi4uZmQ2YzQ0ZGQ1N2NiN2Ni
NTQ1NTQxYTRiOWE3MDAzNjdiYmI5ZWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGFj
a2VkLmgKKysrIGIvU291cmNlL1dURi93dGYvUGFja2VkLmgKQEAgLTEwMCw2ICsxMDAsOSBAQCBw
dWJsaWM6CiAgICAgICAgIHNldCh0MSk7CiAgICAgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KFBh
Y2tlZCBvdGhlcikgY29uc3QgeyByZXR1cm4gZ2V0KCkgPT0gb3RoZXIuZ2V0KCk7IH0KKyAgICBm
cmllbmQgYXV0byBvcGVyYXRvcjw9PihQYWNrZWQgYSwgUGFja2VkIGIpIHsgcmV0dXJuIGEuZ2V0
KCkgPD0+IGIuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIHNp
emVvZihUKT4gbV9zdG9yYWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Jhbmdl
LmggYi9Tb3VyY2UvV1RGL3d0Zi9SYW5nZS5oCmluZGV4IGE5NmJmOWEwNjFjNzEyZmIzY2ZhNjMx
YmE0Yzk4YjNhMTA4NmZhMWEuLmYzNDcxY2U5ZTVhNjM5MWU2MzI5ZDdiNmQ0ZDc2YTllMzNkOGQ0
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JhbmdlLmgKKysrIGIvU291cmNlL1dURi93
dGYvUmFuZ2UuaApAQCAtNzMsMTYgKzczLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gUmFu
Z2Uoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlPjo6bWluKCksIHN0ZDo6bnVtZXJpY19saW1pdHM8
VHlwZT46Om1heCgpKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmFuZ2Um
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9i
ZWdpbgotICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7Ci0gICAgfQotCi0gICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFJhbmdlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJhbmdlJikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1fZW5kOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1JlZi5oIGIvU291cmNlL1dURi93dGYvUmVmLmgKaW5kZXggNTc0OTlh
ZDlhMDk0NWI1YTYxN2YxMGUwYzI3NWYwMmMwNDA1YzZiZS4uNmU4ODFlNTBkMzIyMTRiN2UwNzVm
YjAyZTJlZjNmNmJkYmM2NDY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmLmgKKysr
IGIvU291cmNlL1dURi93dGYvUmVmLmgKQEAgLTI5NCwzMCArMjk0LDYgQEAgaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBSZWY8VCwgVT4mIGEsIFYmIGIpCiAgICAgcmV0dXJuIGEucHRyKCkg
PT0gJmI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQmIGEsIGNvbnN0IFJlZjxVLCBWPiYgYikKLXsKLSAg
ICByZXR1cm4gJmEgPT0gYi5wdHIoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVz4KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgUmVmPFQsIFU+JiBhLCBjb25zdCBSZWY8ViwgVz4mIGIpCi17Ci0gICAgcmV0dXJuIGEucHRy
KCkgIT0gYi5wdHIoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmPFQsIFU+JiBhLCBWJiBi
KQotewotICAgIHJldHVybiBhLnB0cigpICE9ICZiOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUJiBhLCBj
b25zdCBSZWY8VSwgVj4mIGIpCi17Ci0gICAgcmV0dXJuICZhICE9IGIucHRyKCk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OlJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1JlZkNvdW50ZWRGaXhlZFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRl
ZEZpeGVkVmVjdG9yLmgKaW5kZXggY2JlNzIzYjcxYzAyZWZhMzI0ZWFlZGM1MDk4OWJjYzlhZTZl
NDUzYy4uMWRiZTU0NGQ0OTQzNGNhYjFjOTQ5NTNhMDY5MDI5ZGNiOTdjYzgzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmgKQEAgLTcwLDExICs3MCw2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZShCYXNlOjpiZWdpbigpLCBCYXNlOjplbmQoKSk7CiAgICAg
fQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2Um
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwot
ICAgIH0KLQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZDb3VudGVkRml4ZWRWZWN0b3JC
YXNlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChCYXNlOjpzaXplKCkgIT0gb3Ro
ZXIuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAppbmRleCAwYWVjMTBjM2RlNjA2NWFiMTBkNWU5NDA1MzEzYjMyNWU1
M2EzNGJiLi4wNmVlYjhhMzFlYzE0YTVhZmZjNWI3MTFiODU4NjA5MWU1N2Y4NWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aApAQCAtMjEyLDMwICsyMTIsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZlB0
cjxULCBVLCBWPiYgYSwgWCogYikKICAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4KLWlu
bGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgUmVmUHRyPFgsIFksIFo+JiBiKQotewot
ICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSBaPgot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VCwgVSwgVj4mIGEsIGNvbnN0IFJl
ZlB0cjxYLCBZLCBaPiYgYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCi19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFg+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZlB0cjxULCBVLCBWPiYgYSwgWCog
YikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4KLWlubGluZSBib29sIG9wZXJh
dG9yIT0oVCogYSwgY29uc3QgUmVmUHRyPFgsIFksIFo+JiBiKQoteyAKLSAgICByZXR1cm4gYSAh
PSBiLmdldCgpOyAKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSA9IFJhd1B0
clRyYWl0czxUPiwgdHlwZW5hbWUgViA9IERlZmF1bHRSZWZEZXJlZlRyYWl0czxUPiwgdHlwZW5h
bWUgWCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4KIGlubGluZSBSZWZQdHI8VCwgVSwgVj4gc3Rh
dGljX3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8WCwgWSwgWj4mIHApCiB7IApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUmV0YWluUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIu
aAppbmRleCBkZDQ3NzliZmE1OGEwYTc4OGExMDI3YWQ0NmQ5ZDk3NjhiOTEzZDMyLi45ZDZjOWFm
OGFjYTM1YzczNTJlZGQzMGI0MzFlOWJjNWFiNWRlMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9SZXRhaW5QdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaApAQCAtMjky
LDI2ICsyOTIsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFJldGFpblB0cjxUPiYgYQogICAgIHJldHVybiBhLmdldCgp
ID09IGI7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IFJldGFpblB0cjxVPiYgYikKLXsKLSAgICByZXR1
cm4gYSA9PSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXRhaW5QdHI8VD4mIGEsIGNvbnN0IFJl
dGFpblB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCi19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmV0YWluUHRyPFQ+JiBhLCBVKiBiKQotewotICAgIHJldHVybiBhLmdldCgpICE9
IGI7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IFJldGFpblB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJu
IGEgIT0gYi5nZXQoKTsgCi19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBSZXRh
aW5QdHI8VD4gYWRvcHRDRihUIENGX1JFTEVBU0VTX0FSR1VNRU5UIHB0cikKIHsKICNpZmRlZiBf
X09CSkNfXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oIGIvU291cmNlL1dU
Ri93dGYvU2Vjb25kcy5oCmluZGV4IGQyODJkYmJmNzE1YmU3NDI3ODllYTEwZjFjY2IyOWFkMTQ1
MzU2NGYuLjNiYTU0MmVjZTViYjYyNmVmODA3OTFiYmE1NzAxMDk3OWY3NzVlNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRz
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTE4OCwzNSArMTg5LDcgQEAgcHVi
bGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBBcHByb3hpbWF0ZVRpbWUgb3BlcmF0b3ItKEFw
cHJveGltYXRlVGltZSkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRpbWVXaXRoRHlu
YW1pY0Nsb2NrVHlwZSBvcGVyYXRvci0oY29uc3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJikg
Y29uc3Q7CiAgICAgCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShTZWNvbmRzIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsK
LSAgICB9Ci0gICAgCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShTZWNvbmRzIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgIT0gb3RoZXIubV92YWx1ZTsK
LSAgICB9Ci0gICAgCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KFNlY29uZHMgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA8IG90aGVyLm1fdmFsdWU7Ci0g
ICAgfQotICAgIAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihTZWNvbmRzIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPiBvdGhlci5tX3ZhbHVlOwotICAg
IH0KLSAgICAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KFNlY29uZHMgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA8PSBvdGhlci5tX3ZhbHVlOwotICAg
IH0KLSAgICAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KFNlY29uZHMgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA+PSBvdGhlci5tX3ZhbHVlOwotICAg
IH0KKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihTZWNvbmRzLCBTZWNvbmRzKSA9IGRlZmF1
bHQ7CiAgICAgCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OwogICAgIApAQCAtMzcyLDQgKzM0NSwzIEBAIGlubGluZSBib29sIGlzZmluaXRlKFdU
Rjo6U2Vjb25kcyBzZWNvbmRzKQogfSAvLyBuYW1lc3BhY2Ugc3RkCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXVEY6OnNlY29uZHNfbGl0ZXJhbHM7Ci11c2luZyBXVEY6OlNlY29uZHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1NlZ21l
bnRlZFZlY3Rvci5oCmluZGV4IGM1YjllOGExZWNkZDM1ZDVjYjNkZDlkZTU1MTBlMGM0ODI5YzYz
NTEuLmY1ODExZGZjYjEwZDVjYjMxZGFmMThlZjFjMDhmYmU4YWZiYzY2NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Nl
Z21lbnRlZFZlY3Rvci5oCkBAIC01MCw4ICs1MCw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICB1c2luZyBwb2ludGVyID0gY29uc3QgVCo7CiAgICAgICAgIHVzaW5nIHJlZmVyZW5jZSA9IGNv
bnN0IFQmOwogCi0gICAgICAgIH5TZWdtZW50ZWRWZWN0b3JJdGVyYXRvcigpIHsgfQotCiAgICAg
ICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmF0KG1faW5kZXgpOyB9
CiAgICAgICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV92ZWN0b3IuYXQobV9p
bmRleCk7IH0KIApAQCAtNjcsMTggKzY1LDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAg
ICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4ICYmICZtX3ZlY3RvciA9PSAmb3RoZXIu
bV92ZWN0b3I7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRl
cmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pbmRl
eCAhPSBvdGhlci5tX2luZGV4IHx8ICZtX3ZlY3RvciAhPSAmb3RoZXIubV92ZWN0b3I7Ci0gICAg
ICAgIH0KLQotICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0
IFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPiYgb3RoZXIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG1fdmVjdG9yID0gb3RoZXIubV92ZWN0b3I7Ci0gICAgICAgICAgICBt
X2luZGV4ID0gb3RoZXIubV9pbmRleDsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAg
ICAgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IoU2Vn
bWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPiYgdmVjdG9yLCBzaXplX3QgaW5kZXgpCiAgICAg
ICAgICAgICA6IG1fdmVjdG9yKHZlY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Np
bmdsZVJvb3RHcmFwaC5oIGIvU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgKaW5kZXgg
NGQzYjVlYmI1M2FmMGY0NGIwNGMxOTUzNTZmNThiMDU0NGZmNWFjNy4uZTNlYmYzOTM1MTZjZmFj
Nzk4ZTFiYWEzNDNjNjkzYjAyZTlhMThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2lu
Z2xlUm9vdEdyYXBoLmgKKysrIGIvU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgKQEAg
LTUzLDE2ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQotICAgICAg
ICAgICAgJiYgbV9pc1Jvb3QgPT0gb3RoZXIubV9pc1Jvb3Q7Ci0gICAgfQotCi0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFNpbmdsZVJvb3RHcmFwaE5vZGUmIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBTaW5nbGVS
b290R3JhcGhOb2RlKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU21hbGxTZXQu
aCBiL1NvdXJjZS9XVEYvd3RmL1NtYWxsU2V0LmgKaW5kZXggYzBlNGZmNjU3YzdkZWIyNjMzOTBk
ZWNhNTM5OTc3MGE4OWQ2NGEwMS4uYjc0ZTlkNzA1NmFjNTRiZDljODU2ZTQyMzA2NjJkMzIzODE5
MDZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU21hbGxTZXQuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9TbWFsbFNldC5oCkBAIC0xNTQsNyArMTU0LDYgQEAgcHVibGljOgogICAgICAgICAK
ICAgICAgICAgVCBvcGVyYXRvciooKSBjb25zdCB7IEFTU0VSVChtX2luZGV4IDwgbV9jYXBhY2l0
eSk7IHJldHVybiBzdGF0aWNfY2FzdDxUPihtX2J1ZmZlclttX2luZGV4XSk7IH0KICAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyBBU1NFUlQobV9i
dWZmZXIgPT0gb3RoZXIubV9idWZmZXIpOyByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4
OyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0
IHsgQVNTRVJUKG1fYnVmZmVyID09IG90aGVyLm1fYnVmZmVyKTsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0
eXBlbmFtZSBILCB1bnNpZ25lZCBTPiBmcmllbmQgY2xhc3MgV1RGOjpTbWFsbFNldDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9T
b3J0ZWRBcnJheU1hcC5oCmluZGV4IGI5YjZmNDhmOWJhYjEwNzA2YjZmMGQzYWNjZWQwYTdmMWE3
YzlhYjcuLjE2MjM2OGM2YTgwMmVlOTg2MGE1MmZkYzc2N2QzZDM2ZGNhNGU5NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFwLmgKKysrIGIvU291cmNlL1dURi93dGYv
U29ydGVkQXJyYXlNYXAuaApAQCAtMTEyLDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx1bnNpZ25lZCBzaXplPiBjb25zdGV4cHIgUGFja2VkQVNDSUlMb3dlckNvZGVzKGNvbnN0IGNo
YXIgKCZjaGFyYWN0ZXJzKVtzaXplXSk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGFja2Vk
QVNDSUlMb3dlckNvZGVzPiBwYXJzZShTdHJpbmdWaWV3KTsKICAgICBjb25zdGV4cHIgU3RvcmFn
ZUludGVnZXIgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgZnJpZW5kIGF1
dG8gb3BlcmF0b3I8PT4oUGFja2VkQVNDSUlMb3dlckNvZGVzLCBQYWNrZWRBU0NJSUxvd2VyQ29k
ZXMpID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBzaXplPiBz
dGF0aWMgY29uc3RleHByIFN0b3JhZ2VJbnRlZ2VyIHBhY2soY29uc3QgY2hhciAoJmNoYXJhY3Rl
cnMpW3NpemVdKTsKQEAgLTExOSw5ICsxMjAsNiBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VJbnRl
Z2VyIG1fdmFsdWUgeyAwIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yYWdlSW50ZWdl
cj4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShQYWNrZWRBU0NJSUxvd2VyQ29kZXM8U3RvcmFn
ZUludGVnZXI+LCBQYWNrZWRBU0NJSUxvd2VyQ29kZXM8U3RvcmFnZUludGVnZXI+KTsKLXRlbXBs
YXRlPHR5cGVuYW1lIFN0b3JhZ2VJbnRlZ2VyPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoUGFj
a2VkQVNDSUlMb3dlckNvZGVzPFN0b3JhZ2VJbnRlZ2VyPiwgUGFja2VkQVNDSUlMb3dlckNvZGVz
PFN0b3JhZ2VJbnRlZ2VyPik7Ci0KIHRlbXBsYXRlPEFTQ0lJU3Vic2V0IHN1YnNldD4gY29uc3Rl
eHByIGJvb2wgaXNJblN1YnNldChjaGFyIGNoYXJhY3RlcikKIHsKICAgICBpZiAoIShjaGFyYWN0
ZXIgJiYgaXNBU0NJSShjaGFyYWN0ZXIpKSkKQEAgLTM2MSwxNiArMzU5LDYgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgU3RvcmFnZUludGVnZXI+IGF1dG8gUGFja2VkQVNDSUlMb3dlckNvZGVzPFN0b3Jh
Z2VJbnRlZ2VyPjo6cGEKICAgICByZXR1cm4gUGFja2VkQVNDSUlMb3dlckNvZGVzKHJlc3VsdCk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFN0b3JhZ2VJbnRlZ2VyPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KFBhY2tlZEFTQ0lJTG93ZXJDb2RlczxTdG9yYWdlSW50ZWdlcj4gYSwgUGFja2Vk
QVNDSUlMb3dlckNvZGVzPFN0b3JhZ2VJbnRlZ2VyPiBiKQotewotICAgIHJldHVybiBhLnZhbHVl
KCkgPT0gYi52YWx1ZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yYWdlSW50ZWdlcj4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I8KFBhY2tlZEFTQ0lJTG93ZXJDb2RlczxTdG9yYWdlSW50
ZWdlcj4gYSwgUGFja2VkQVNDSUlMb3dlckNvZGVzPFN0b3JhZ2VJbnRlZ2VyPiBiKQotewotICAg
IHJldHVybiBhLnZhbHVlKCkgPCBiLnZhbHVlKCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlVHlwZT4gY29uc3RleHByIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtYWtlT3B0aW9uYWxG
cm9tUG9pbnRlcihjb25zdCBWYWx1ZVR5cGUqIHBvaW50ZXIpCiB7CiAgICAgaWYgKCFwb2ludGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RG
L3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCBlY2QzNzFjNjIzMjZjOGJjOGNlOGE0YThiYThiNGFj
OWMwOWJjMDgyLi5hYmMyMzcxOWM2NWQ3NmY4ZmJiN2FhM2IzMGYzN2JjMThlMmJiNzkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9TdGRMaWJFeHRyYXMuaApAQCAtNTI5LDYgKzUyOSwxMCBAQCBBTFdBWVNfSU5MSU5FIGNvbnN0
ZXhwciB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlJiYgbW92ZShUJiYgdmFsdWUp
CiAgICAgcmV0dXJuIG1vdmUoZm9yd2FyZDxUPih2YWx1ZSkpOwogfQogCisvLyBGSVhNRTogRm9y
IHNvbWUgcmVhc29uIHRoaXMgaXMgbWlzc2luZyBmcm9tIHRoZSA8b3JkZXJpbmc+IGhlYWRlciBp
biB0aGUgU0RLLgorY29uc3RleHByIGJvb2wgaXNfZXEocGFydGlhbF9vcmRlcmluZyBvcmRlcmlu
Zykgbm9leGNlcHQgeyByZXR1cm4gb3JkZXJpbmcgPT0gcGFydGlhbF9vcmRlcmluZzo6ZXF1aXZh
bGVudDsgfQorY29uc3RleHByIGJvb2wgaXNfbmVxKHBhcnRpYWxfb3JkZXJpbmcgb3JkZXJpbmcp
IG5vZXhjZXB0IHsgcmV0dXJuIG9yZGVyaW5nICE9IHBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxl
bnQ7IH0KKwogfSAvLyBuYW1lc3BhY2Ugc3RkCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oIGIvU291cmNlL1dURi93dGYv
VGhyZWFkaW5nUHJpbWl0aXZlcy5oCmluZGV4IGZkNTU5YjI0MmRkZmZkNWU4ZDhmMTMzZWM0MTNi
YTNhYjViNTI2NDcuLmU1YTNjYjYzNWVhZjFjYTg4OWRkMjIwOTc1MjVmY2Q0MjhlMzE4NTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKQEAgLTMyLDkgKzMyLDkgQEAKIAogI2lu
Y2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAKICNpZiBPUyhXSU5ET1dT
KQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RpbWVX
aXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaW1lV2l0aER5bmFtaWND
bG9ja1R5cGUuY3BwCmluZGV4IGUyODVhM2ExNGIyODJjMTBkY2U3N2M2N2QwMzZkMWMwZGQ0MDk3
YWUuLjY0NjEyYWZkOWY4YjA4MWM2OTQ0MDNkMWQ3NDBmN2M0YWM1MDU1ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcApAQCAtMTA0LDMwICsxMDQsNiBA
QCBTZWNvbmRzIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZTo6b3BlcmF0b3ItKGNvbnN0IFRpbWVX
aXRoRHluYW1pY0Nsb2NrVHlwZSYgb3RoZQogICAgIHJldHVybiBTZWNvbmRzKG1fdmFsdWUgLSBv
dGhlci5tX3ZhbHVlKTsKIH0KIAotYm9vbCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGU6Om9wZXJh
dG9yPChjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIG90aGVyKSBjb25zdAotewotICAg
IFJFTEVBU0VfQVNTRVJUKG1fdHlwZSA9PSBvdGhlci5tX3R5cGUpOwotICAgIHJldHVybiBtX3Zh
bHVlIDwgb3RoZXIubV92YWx1ZTsKLX0KLQotYm9vbCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGU6
Om9wZXJhdG9yPihjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIG90aGVyKSBjb25zdAot
ewotICAgIFJFTEVBU0VfQVNTRVJUKG1fdHlwZSA9PSBvdGhlci5tX3R5cGUpOwotICAgIHJldHVy
biBtX3ZhbHVlID4gb3RoZXIubV92YWx1ZTsKLX0KLQotYm9vbCBUaW1lV2l0aER5bmFtaWNDbG9j
a1R5cGU6Om9wZXJhdG9yPD0oY29uc3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJiBvdGhlcikg
Y29uc3QKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChtX3R5cGUgPT0gb3RoZXIubV90eXBlKTsKLSAg
ICByZXR1cm4gbV92YWx1ZSA8PSBvdGhlci5tX3ZhbHVlOwotfQotCi1ib29sIFRpbWVXaXRoRHlu
YW1pY0Nsb2NrVHlwZTo6b3BlcmF0b3I+PShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUm
IG90aGVyKSBjb25zdAotewotICAgIFJFTEVBU0VfQVNTRVJUKG1fdHlwZSA9PSBvdGhlci5tX3R5
cGUpOwotICAgIHJldHVybiBtX3ZhbHVlID49IG90aGVyLm1fdmFsdWU7Ci19Ci0KIHZvaWQgVGlt
ZVdpdGhEeW5hbWljQ2xvY2tUeXBlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAg
ICAgb3V0LnByaW50KG1fdHlwZSwgIigiLCBtX3ZhbHVlLCAiIHNlYykiKTsKQEAgLTE1Myw1ICsx
MjksMyBAQCBib29sIGhhc0VsYXBzZWQoY29uc3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJiB0
aW1lKQogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuaCBiL1NvdXJjZS9XVEYvd3RmL1RpbWVXaXRo
RHluYW1pY0Nsb2NrVHlwZS5oCmluZGV4IDRjM2U0MWU3OWJhZGI2OGRiMjc4YmVkNjFjZWQxMTU2
ZTgwODIxYzkuLjkxOTZlMjM1NDM0MTI5MDAwMWQzNDhmNDAxYzZkYmNlZDU2YzM0ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oCkBAIC0zOCwxMyArMzgsMTMg
QEAgY2xhc3MgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIGZpbmFsIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUoKSB7
IH0KLSAgICAKKwogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZShXYWxsVGltZSB0aW1lKQog
ICAgICAgICA6IG1fdmFsdWUodGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpCiAgICAg
ICAgICwgbV90eXBlKENsb2NrVHlwZTo6V2FsbCkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAg
VGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlKE1vbm90b25pY1RpbWUgdGltZSkKICAgICAgICAgOiBt
X3ZhbHVlKHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKQogICAgICAgICAsIG1fdHlw
ZShDbG9ja1R5cGU6Ok1vbm90b25pYykKQEAgLTY0LDUxICs2NCw1MSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJlc3VsdC5tX3R5cGUgPSB0eXBlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
LSAgICAKKwogICAgIFNlY29uZHMgc2Vjb25kc1NpbmNlRXBvY2goKSBjb25zdCB7IHJldHVybiBT
ZWNvbmRzKG1fdmFsdWUpOyB9CiAgICAgQ2xvY2tUeXBlIGNsb2NrVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQotICAgIAorCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBUaW1l
V2l0aER5bmFtaWNDbG9ja1R5cGUgbm93KENsb2NrVHlwZSk7Ci0gICAgCisKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIG5vd1dpdGhTYW1lQ2xvY2soKSBj
b25zdDsKLSAgICAKKwogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSB3aXRoU2FtZUNsb2Nr
QW5kUmF3U2Vjb25kcyhkb3VibGUgdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
VGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlOjpmcm9tUmF3U2Vjb25kcyh2YWx1ZSwgY2xvY2tUeXBl
KCkpOwogICAgIH0KLSAgICAKKwogICAgIC8vIEFzc2VydHMgdGhhdCB0aGUgdGltZSBpcyBvZiB0
aGUgdHlwZSB5b3Ugd2FudC4KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgV2FsbFRpbWUgd2FsbFRp
bWUoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTW9ub3RvbmljVGltZSBtb25vdG9u
aWNUaW1lKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEFwcHJveGltYXRlVGltZSBh
cHByb3hpbWF0ZVRpbWUoKSBjb25zdDsKLSAgICAKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBX
YWxsVGltZSBhcHByb3hpbWF0ZVdhbGxUaW1lKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIE1vbm90b25pY1RpbWUgYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCkgY29uc3Q7Ci0gICAg
CisKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX3ZhbHVl
OyB9Ci0gICAgCisKICAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgb3BlcmF0b3IrKFNlY29u
ZHMgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gd2l0aFNhbWVDbG9ja0FuZFJh
d1NlY29uZHMobV92YWx1ZSArIG90aGVyLnZhbHVlKCkpOwogICAgIH0KLSAgICAKKwogICAgIFRp
bWVXaXRoRHluYW1pY0Nsb2NrVHlwZSBvcGVyYXRvci0oU2Vjb25kcyBvdGhlcikgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiB3aXRoU2FtZUNsb2NrQW5kUmF3U2Vjb25kcyhtX3ZhbHVlIC0g
b3RoZXIudmFsdWUoKSk7CiAgICAgfQotICAgIAorCiAgICAgLy8gVGltZSBpcyBhIHNjYWxhciBh
bmQgc2NhbGFycyBjYW4gYmUgbmVnYXRlZCBhcyB0aGlzIGNvdWxkIGFyaXNlIGZyb20gYWxnZWJy
YWljCiAgICAgLy8gdHJhbnNmb3JtYXRpb25zLiBTbywgd2UgYWxsb3cgaXQuCiAgICAgVGltZVdp
dGhEeW5hbWljQ2xvY2tUeXBlIG9wZXJhdG9yLSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1
cm4gd2l0aFNhbWVDbG9ja0FuZFJhd1NlY29uZHMoLW1fdmFsdWUpOwogICAgIH0KLSAgICAKKwog
ICAgIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSBvcGVyYXRvcis9KFNlY29uZHMgb3RoZXIpCiAg
ICAgewogICAgICAgICByZXR1cm4gKnRoaXMgPSAqdGhpcyArIG90aGVyOwogICAgIH0KLSAgICAK
KwogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSBvcGVyYXRvci09KFNlY29uZHMgb3RoZXIp
CiAgICAgewogICAgICAgICByZXR1cm4gKnRoaXMgPSAqdGhpcyAtIG90aGVyOwpAQCAtMTE2LDIz
ICsxMTYsMTUgQEAgcHVibGljOgogICAgIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBTZWNvbmRz
IG9wZXJhdG9yLShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmKSBjb25zdDsKICAgICAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWUK
LSAgICAgICAgICAgICYmIG1fdHlwZSA9PSBvdGhlci5tX3R5cGU7Ci0gICAgfQotICAgIAotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIG90aGVyKSBj
b25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUm
KSBjb25zdCA9IGRlZmF1bHQ7CisKKyAgICAvLyBUbyBkbyByZWxhdGl2ZSBjb21wYXJpc29ucywg
eW91IG11c3QgYmUgdXNpbmcgdGltZXMgd2l0aCB0aGUgc2FtZSBjbG9jayB0eXBlLgorICAgIGZy
aWVuZCBhdXRvIG9wZXJhdG9yPD0+KFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSBhLCBUaW1lV2l0
aER5bmFtaWNDbG9ja1R5cGUgYikKICAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYS5tX3R5cGUgPT0gYi5tX3R5cGUpOworICAg
ICAgICByZXR1cm4gYS5tX3ZhbHVlIDw9PiBiLm1fdmFsdWU7CiAgICAgfQotICAgIAotICAgIC8v
IFRvIGRvIHJlbGF0aXZlIGNvbXBhcmlzb25zLCB5b3UgbXVzdCBiZSB1c2luZyB0aW1lcyB3aXRo
IHRoZSBzYW1lIGNsb2NrIHR5cGUuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYpIGNvbnN0OwotICAgIFdURl9FWFBP
UlRfUFJJVkFURSBib29sIG9wZXJhdG9yPihjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUm
KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFRp
bWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIG9wZXJhdG9yPj0oY29uc3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJikgY29uc3Q7Ci0g
ICAgCisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7CiAgICAgCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGlueVB0clNl
dC5oIGIvU291cmNlL1dURi93dGYvVGlueVB0clNldC5oCmluZGV4IDk2ZjRmMmM1OWQxMjdiNGQy
MDgzMTQ2NzcyZmZkZDVkYWUyNWYzZGMuLjg4Y2QzYjQ4YjE4NDlhZTNmZWFkOWVhMDBiMDkwZDFi
YjQ0YmUzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RpbnlQdHJTZXQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9UaW55UHRyU2V0LmgKQEAgLTMzNCw3ICszMzQsNiBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmRleCA9PSBvdGhl
ci5tX2luZGV4OyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgICAgIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIGNvbnN0IFRpbnlQdHJTZXQqIG1fc2V0OwpAQCAtMzUxLDExICszNTAs
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBpc1N1YnNldE9mKG90aGVyKTsKICAgICB9CiAg
ICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRpbnlQdHJTZXQmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLSAgICAKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaCBiL1NvdXJjZS9XVEYvd3RmL1VS
TC5oCmluZGV4IGI0YmFhZDE4ZTNlNzFhNDdjNGVmZDdlY2U1MTNjMTEzYzkwYjk4OWYuLjg5NTlj
ZGQ3ZjU5Mjc4YmVmZTVhN2RkYmVlZDg1NTc1ZGYxYzI1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VSTC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5oCkBAIC0yNDIsMTAgKzI0Miw2
IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFVSTCkgPT0gc2l6ZW9mKFN0cmluZykgKyA4ICogc2l6
ZW9mKHVuc2lnbmVkKSwgIlVSTCBzaG91bGQKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYpOwogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYp
OwotYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwotYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYpOwotYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYsIGNvbnN0
IFVSTCYpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJ
ZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwogV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwpA
QCAtMzI2LDI2ICszMjIsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTCYgYSwg
Y29uc3QgU3RyaW5nJiBiKQogICAgIHJldHVybiBhLnN0cmluZygpID09IGI7CiB9CiAKLWlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCi17Ci0gICAg
cmV0dXJuIGEgPT0gYi5zdHJpbmcoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAgICByZXR1cm4gYS5zdHJpbmcoKSAhPSBiLnN0
cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYgYSwgY29uc3Qg
U3RyaW5nJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpICE9IGI7Ci19Ci0KLWlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBVUkwmIGIpCi17Ci0gICAgcmV0
dXJuIGEgIT0gYi5zdHJpbmcoKTsKLX0KLQogaW5saW5lIFVSTDo6VVJMKEhhc2hUYWJsZURlbGV0
ZWRWYWx1ZVR5cGUpCiAgICAgOiBtX3N0cmluZyhIYXNoVGFibGVEZWxldGVkVmFsdWUpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmggYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmgK
aW5kZXggNThhNTI0YTY0ZDM2YTYzMTEwNGVmYTEyZGM4Y2U2ZGEyMzZjZmQwZi4uN2Q0MTAyMTc5
NTI0MWI4ZjUxYWJiNTNhNDE2NzZiZTdmOWUxMWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvVVVJRC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VVSUQuaApAQCAtNjMsNyArNjMsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgVVVJRCYgb3BlcmF0b3I9KGNvbnN0IFVVSUQmKSA9IGRlZmF1
bHQ7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVVSUQmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2RhdGEgPT0gb3RoZXIubV9kYXRhOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVV
SUQmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VVVJRD4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1VuZXhwZWN0ZWQuaCBiL1NvdXJjZS9XVEYvd3RmL1VuZXhwZWN0ZWQuaApp
bmRleCBkZDkyMGExMWU3NWUxNmUzNTFmNTZkYzg1NTg4M2Y5ZDBmYWIyM2QyLi40MzJiOTllODI2
ZDBmNzEzNWUzMDMzNzFiNTVmNjBlZWE5NzJkZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9VbmV4cGVjdGVkLmgKKysrIGIvU291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oCkBAIC04OCw3
ICs4OCw2IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIGxocywgY29uc3QgdW5leHBlY3RlZDxF
PiYgcmhzKSB7IHJldHVybiBsaHMudmFsdWUoKSA9PSByaHMudmFsdWUoKTsgfQotdGVtcGxhdGU8
Y2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCB1bmV4cGVjdGVkPEU+JiBs
aHMsIGNvbnN0IHVuZXhwZWN0ZWQ8RT4mIHJocykgeyByZXR1cm4gbGhzLnZhbHVlKCkgIT0gcmhz
LnZhbHVlKCk7IH0KIAogfX19IC8vIG5hbWVzcGFjZSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFt
ZW50YWxzX3YzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Vuc2FmZVBvaW50ZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL1Vuc2FmZVBvaW50ZXIuaAppbmRleCBkMTY1YThjYjg1MTU0NGYxODI0
ZDk3NDA0YmFlZjk4MTE5MWQ3NTRiLi4zNGZjMmEyN2U5MjA3ZmNmYmQ1NDg1NjAzMDhhZDZjMGRm
ZTRkODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VbnNhZmVQb2ludGVyLmgKKysrIGIv
U291cmNlL1dURi93dGYvVW5zYWZlUG9pbnRlci5oCkBAIC01NCwxMiArNTQsNiBAQCBib29sIG9w
ZXJhdG9yPT0odHlwZW5hbWUgVW5zYWZlUG9pbnRlcjxUPjo6UHRyVHlwZSBiYXJlUG9pbnRlciwg
Y29uc3QgVW5zYWZlUG9pbgogICAgIHJldHVybiB1bnNhZmVQb2ludGVyID09IGJhcmVQb2ludGVy
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotYm9vbCBvcGVyYXRvciE9KHR5cGVuYW1lIFVu
c2FmZVBvaW50ZXI8VD46OlB0clR5cGUgYmFyZVBvaW50ZXIsIGNvbnN0IFVuc2FmZVBvaW50ZXI8
VD4mIHVuc2FmZVBvaW50ZXIpCi17Ci0gICAgcmV0dXJuIHVuc2FmZVBvaW50ZXIgIT0gYmFyZVBv
aW50ZXI7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OlVuc2FmZVBvaW50
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3Rm
L1ZlY3Rvci5oCmluZGV4IGUxNDRhMzBjYmI4ZjQ2YjM2NGY3MjFlYzAyMTAzZDc0YmVlMDIwZGMu
LmZmN2FjY2UwZTZjMTI0ZDBlYzA2YWYyNTliYTQ3MzUwZGUzZmMxOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC0x
NjQyLDEyICsxNjQyLDYgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVD
YXBhY2l0eUEsIE92ZXJmbG93SGFuZGxlckEsIG1pbkNhcGFjaXR5QSwKICAgICByZXR1cm4gVmVj
dG9yVHlwZU9wZXJhdGlvbnM8VD46OmNvbXBhcmUoYS5kYXRhKCksIGIuZGF0YSgpLCBhLnNpemUo
KSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eUEsIHR5
cGVuYW1lIE92ZXJmbG93SGFuZGxlckEsIHNpemVfdCBtaW5DYXBhY2l0eUEsIHR5cGVuYW1lIE1h
bGxvY0EsIHNpemVfdCBpbmxpbmVDYXBhY2l0eUIsIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlckIs
IHNpemVfdCBtaW5DYXBhY2l0eUIsIHR5cGVuYW1lIE1hbGxvY0I+Ci1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eUEsIE92ZXJmbG93SGFuZGxlckEs
IG1pbkNhcGFjaXR5QSwgTWFsbG9jQT4mIGEsIGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eUIsIE92ZXJmbG93SGFuZGxlckIsIG1pbkNhcGFjaXR5QiwgTWFsbG9jQj4mIGIpCi17Ci0gICAg
cmV0dXJuICEoYSA9PSBiKTsKLX0KLQogI2lmIEFTU0VSVF9FTkFCTEVECiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgVmFsdWVDaGVjazxWZWN0b3I8VD4+IHsKICAgICB0eXBlZGVmIFZlY3Rv
cjxUPiBUcmFpdFR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oIGIv
U291cmNlL1dURi93dGYvV2FsbFRpbWUuaAppbmRleCA0ZDRhZjlkYjliMDEwZTQ4MTFhOTliMTcx
NWYzMTU1YTk4ZTliYWMzLi5jMDFlMThiNGE5ZjNlYWMyN2UyMGMxMTVkZDhmMzAxNjRiN2ViYzIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1dhbGxUaW1lLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8d3RmL0Nsb2NrVHlwZS5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL0dlbmVyaWNUaW1lTWl4aW4uaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05Nyw1ICs5OCwz
IEBAIGlubGluZSBib29sIGlzZmluaXRlKFdURjo6V2FsbFRpbWUgdGltZSkKIH0KIAogfSAvLyBu
YW1lc3BhY2Ugc3RkCi0KLXVzaW5nIFdURjo6V2FsbFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9XZWFrSGFzaE1hcC5oIGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hNYXAuaAppbmRl
eCAxMzE4ODU3ZTExNTcwNjVhYjZjMGI5MjZmMDAxMmY1YWY5YzFjODU0Li44MTgxY2FiNzJkNTc4
ZmNiMGI1Zjc3MjBiNDRiOTQxNzY4MDJmZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9X
ZWFrSGFzaE1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNoTWFwLmgKQEAgLTE2NCw3
ICsxNjQsNiBAQCBwdWJsaWM6CiAgICAgICAgIHVzaW5nIEJhc2UgPSBXZWFrSGFzaE1hcEl0ZXJh
dG9yQmFzZTxjb25zdCBXZWFrSGFzaE1hcCwgdHlwZW5hbWUgV2Vha0hhc2hJbXBsTWFwOjpjb25z
dF9pdGVyYXRvciwgY29uc3QgUGVla1B0clR5cGUsIGNvbnN0IFBlZWtUeXBlPjsKIAogICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgV2Vha0hhc2hNYXBDb25zdEl0ZXJhdG9yJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gQmFzZTo6bV9wb3NpdGlvbiA9PSBvdGhlci5CYXNlOjptX3Bvc2l0aW9u
OyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXZWFrSGFzaE1hcENvbnN0SXRlcmF0
b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBCYXNlOjptX3Bvc2l0aW9uICE9IG90aGVyLkJhc2U6
Om1fcG9zaXRpb247IH0KIAogICAgICAgICBjb25zdCBQZWVrUHRyVHlwZSBnZXQoKSBjb25zdCB7
IHJldHVybiBCYXNlOjptYWtlUGVlaygpOyB9CiAgICAgICAgIGNvbnN0IFBlZWtUeXBlIG9wZXJh
dG9yKigpIGNvbnN0IHsgcmV0dXJuIEJhc2U6Om1ha2VQZWVrKCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1dlYWtIYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5o
CmluZGV4IDgyYzc1OTViYmFiNTk0MjFjNmRlNTQ1NGNiNDNlYmFmZThkMDg5Y2UuLmNlN2RhYjNh
OTM4ZTYxMWJiNzM5NWNjOTg0YjFjM2MwOTZhM2FiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1dlYWtIYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaApAQCAt
NzcsMTEgKzc3LDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG1fcG9zaXRpb24gPT0g
b3RoZXIubV9wb3NpdGlvbjsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBXZWFrSGFzaFNldENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9wb3NpdGlvbiAhPSBvdGhlci5tX3Bvc2l0aW9uOwotICAgICAg
ICB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1l
PiBmcmllbmQgY2xhc3MgV2Vha0hhc2hTZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rlci5oIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVu
Y2UvUGVyc2lzdGVudENvZGVyLmgKaW5kZXggYWZjMzNmMzhkNDIzMzViZDllNjEyNmE0YTc4YTUw
NzEwZGIyNjA4YS4uMjA3ZmEwNDQ2OWZiOTQ4Mzg3NjhlOWY0MWEyYTMyODk3ZjVjYjA4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmgKKysr
IGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmgKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPG9wdGlvbmFsPgogCiBuYW1lc3BhY2UgV1RGIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgv
VGhyZWFkaW5nUE9TSVguY3BwCmluZGV4IGQ5MjQ0OTBkMWI1N2YzZWUwNmVlNWVhZDhhMmQzYzEx
YzIwY2I1ZDEuLjZkMzQwZTQ2ZjJiMjg0NDBiMTEzZWQ3NzA5ZWEzNzEwMWE4MmY4NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZ1ByaW1p
dGl2ZXMuaD4KICNpbmNsdWRlIDx3dGYvV1RGQ29uZmlnLmg+CisjaW5jbHVkZSA8d3RmL1dhbGxU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmRMb2NrLmg+CiAKICNpZiBPUyhMSU5VWCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggMzNiMGU1OTU4ZDgzOTU2M2E2NWUxM2RjYTIwYTI3YmYz
MzE5NGJmMi4uODNhMjVkNjU2OWQ0OTE3ZDEyYjg1NjFmYjc1ZGQ3ZTYyOThiMzczMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTE4NCwxOCArMTg0LDYgQEAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBMQ2hhciopOwogaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBXVEY6OmVxdWFs
KGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxVQ2hhcj4m
IGIpIHsgcmV0dXJuIGEuaW1wbCgpICYmIGVxdWFsKGEuaW1wbCgpLCBiLmRhdGEoKSwgYi5zaXpl
KCkpOyB9ICAgIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9tU3RyaW5nJiBhLCBj
b25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KLWlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgTENoYXIqIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIp
IHsgcmV0dXJuIGIgPT0gYTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcm
IGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmltcGwo
KSk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPFVDaGFyPiYgYSwgY29u
c3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gYiA9PSBhOyB9Ci0KLWlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4g
YS5pbXBsKCkgIT0gYi5pbXBsKCk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXRv
bVN0cmluZyYgYSwgY29uc3QgTENoYXIqIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQotaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7IHJl
dHVybiAhKGEgPT0gYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXRvbVN0cmlu
ZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgp
KTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBW
ZWN0b3I8VUNoYXI+JiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLWlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgTENoYXIqIGEsIGNvbnN0IEF0b21TdHJpbmcmIGIpIHsgcmV0dXJuICEoYiA9
PSBhKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IEF0
b21TdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5pbXBsKCkpOyB9Ci1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlY3RvcjxVQ2hhcj4mIGEsIGNvbnN0IEF0b21TdHJp
bmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEF0b21TdHJpbmcmKTsKIGJvb2wgZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4
dC9DU3RyaW5nLmNwcAppbmRleCBmOWU5ZTY1MWUwYWRmMzJmNWFmOTMxNzIxNTY0NjhiM2EzYzI0
MjhhLi5jOWQzZWMyMTNlYzRkYzE5YWNjNTUyNjlmMzYyYmM2NzYwN2YxYzEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQ1N0cmluZy5jcHAKQEAgLTEyMCwxNiArMTIwLDE2IEBAIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKGEubGVuZ3RoKCkgIT0gYi5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiAhbWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgYS5sZW5ndGgoKSk7CisgICAg
cmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYi5kYXRhKCksIGEubGVuZ3RoKCkpOwogfQog
CiBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgY2hhciogYikKIHsKICAg
ICBpZiAoYS5pc051bGwoKSAhPSAhYikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICgh
YikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuICFzdHJjbXAoYS5kYXRhKCksIGIp
OworICAgIGlmIChhLmxlbmd0aCgpICE9IHN0ZDo6c3RybGVuKGIpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuICFzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYiwgYS5sZW5ndGgoKSk7
CiB9CiAKIHVuc2lnbmVkIENTdHJpbmc6Omhhc2goKSBjb25zdApAQCAtMTQyLDEzICsxNDIsMjYg
QEAgdW5zaWduZWQgQ1N0cmluZzo6aGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIGhhc2hlci5oYXNo
KCk7CiB9CiAKLWJvb2wgb3BlcmF0b3I8KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcm
IGIpCitzdGQ6OnN0cm9uZ19vcmRlcmluZyBvcGVyYXRvcjw9Pihjb25zdCBDU3RyaW5nJiBhLCBj
b25zdCBDU3RyaW5nJiBiKQogewotICAgIGlmIChhLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4g
IWIuaXNOdWxsKCk7Ci0gICAgaWYgKGIuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gc3RyY21wKGEuZGF0YSgpLCBiLmRhdGEoKSkgPCAwOworICAgIGlmIChhLmlz
TnVsbCgpICE9IGIuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBhLmlzTnVsbCgpID8gc3RkOjpz
dHJvbmdfb3JkZXJpbmc6Omxlc3MgOiBzdGQ6OnN0cm9uZ19vcmRlcmluZzo6Z3JlYXRlcjsKKyAg
ICBhdXRvIGFMZW5ndGggPSBhLmxlbmd0aCgpOworICAgIGF1dG8gYkxlbmd0aCA9IGIubGVuZ3Ro
KCk7CisgICAgaWYgKGF1dG8gY2hhcmFjdGVyT3JkZXJpbmcgPSBzdGQ6Om1lbWNtcChhLmRhdGEo
KSwgYi5kYXRhKCksIHN0ZDo6bWluKGFMZW5ndGgsIGJMZW5ndGgpKSkKKyAgICAgICAgcmV0dXJu
IGNoYXJhY3Rlck9yZGVyaW5nIDwgMCA/IHN0ZDo6c3Ryb25nX29yZGVyaW5nOjpsZXNzIDogc3Rk
OjpzdHJvbmdfb3JkZXJpbmc6OmdyZWF0ZXI7CisgICAgcmV0dXJuIGFMZW5ndGggPD0+IGJMZW5n
dGg7Cit9CisKK3N0ZDo6c3Ryb25nX29yZGVyaW5nIG9wZXJhdG9yPD0+KGNvbnN0IENTdHJpbmcm
IGEsIGNvbnN0IGNoYXIqIGIpCit7CisgICAgaWYgKGEuaXNOdWxsKCkgIT0gIWIpCisgICAgICAg
IHJldHVybiBhLmlzTnVsbCgpID8gc3RkOjpzdHJvbmdfb3JkZXJpbmc6Omxlc3MgOiBzdGQ6OnN0
cm9uZ19vcmRlcmluZzo6Z3JlYXRlcjsKKyAgICBhdXRvIGFMZW5ndGggPSBhLmxlbmd0aCgpOwor
ICAgIGF1dG8gYkxlbmd0aCA9IHN0ZDo6c3RybGVuKGIpOworICAgIGlmIChhdXRvIGNoYXJhY3Rl
ck9yZGVyaW5nID0gc3RkOjptZW1jbXAoYS5kYXRhKCksIGIsIHN0ZDo6bWluKGFMZW5ndGgsIGJM
ZW5ndGgpKSkKKyAgICAgICAgcmV0dXJuIGNoYXJhY3Rlck9yZGVyaW5nIDwgMCA/IHN0ZDo6c3Ry
b25nX29yZGVyaW5nOjpsZXNzIDogc3RkOjpzdHJvbmdfb3JkZXJpbmc6OmdyZWF0ZXI7CisgICAg
cmV0dXJuIGFMZW5ndGggPD0+IGJMZW5ndGg7CiB9CiAKIGJvb2wgQ1N0cmluZ0hhc2g6OmVxdWFs
KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0NTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCmlu
ZGV4IDI3MDBjNjZkZGFhMTg3MDU0ZGE1OWRhOTM0ZTAyODc3ZjRlYTQ0MDguLmFmZThhYWY0NWE0
ZDQwOTQ0Y2FhOTNlMGQzNjkwYjU1MjIxMDU1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQ1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCkBAIC01
NCw4ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3Qgc2l6ZV90IG1fbGVuZ3RoOwogfTsKIAot
Ly8gQSBjb250YWluZXIgZm9yIGEgbnVsbC10ZXJtaW5hdGVkIGNoYXIgYXJyYXkgc3VwcG9ydGlu
ZyBjb3B5LW9uLXdyaXRlCi0vLyBhc3NpZ25tZW50LiAgVGhlIGNvbnRhaW5lZCBjaGFyIGFycmF5
IG1heSBiZSBudWxsLgorLy8gQSBjb250YWluZXIgZm9yIGEgbnVsbC10ZXJtaW5hdGVkIGNoYXIg
YXJyYXkgc3VwcG9ydGluZyBjb3B5LW9uLXdyaXRlIGFzc2lnbm1lbnQuCiBjbGFzcyBDU3RyaW5n
IGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTExMiwx
MSArMTExLDExIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPENTdHJpbmdCdWZmZXI+IG1fYnVmZmVy
OwogfTsKIAotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5n
JiBhLCBjb25zdCBDU3RyaW5nJiBiKTsKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ1N0
cmluZyYgYSwgY29uc3QgQ1N0cmluZyYgYikgeyByZXR1cm4gIShhID09IGIpOyB9Ci1XVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IGNoYXIq
IGIpOwotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBjaGFy
KiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLVdURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJh
dG9yPChjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKTsKKy8vIE51bGwgc3RyaW5n
cyBlcXVhbCBvbmx5IHRvIG90aGVyIG51bGwgc3RyaW5ncyBhbmQgbnVsbCBzdHJpbmdzIHNvcnQg
Zmlyc3QuCitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcm
LCBjb25zdCBDU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IENTdHJpbmcmLCBjb25zdCBjaGFyKik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpzdHJv
bmdfb3JkZXJpbmcgb3BlcmF0b3I8PT4oY29uc3QgQ1N0cmluZyYsIGNvbnN0IENTdHJpbmcmKTsK
K1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6OnN0cm9uZ19vcmRlcmluZyBvcGVyYXRvcjw9Pihjb25z
dCBDU3RyaW5nJiwgY29uc3QgY2hhciopOwogCiBzdHJ1Y3QgQ1N0cmluZ0hhc2ggewogICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IENTdHJpbmcmIHN0cmluZykgeyByZXR1cm4gc3RyaW5n
Lmhhc2goKTsgfQpAQCAtMTI0LDEwICsxMjMsMTAgQEAgc3RydWN0IENTdHJpbmdIYXNoIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0
cnVlOwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoOwordGVt
cGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEZWZhdWx0SGFzaDsKIHRlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPENTdHJpbmc+IDogQ1N0cmluZ0hhc2ggeyB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKK3RlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgSGFzaFRy
YWl0czsKIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8Q1N0cmluZz4gOiBTaW1wbGVDbGFz
c0hhc2hUcmFpdHM8Q1N0cmluZz4geyB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ29kZVBvaW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvQ29kZVBvaW50SXRlcmF0b3IuaAppbmRleCAyZTEwZjRiM2ZlY2EwZjJhMDA4M2Y2
MmM3NmZmODRiMmE3MGU1ZTZmLi42ZWU5NDZjNTYzZGY4MTQ2MWFlYjcyOWU5ODg3NjlhYjM3YWUy
MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NvZGVQb2ludEl0ZXJhdG9yLmgK
KysrIGIvU291cmNlL1dURi93dGYvdGV4dC9Db2RlUG9pbnRJdGVyYXRvci5oCkBAIC01MSwxMiAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBVQ2hhcjMyIG9wZXJhdG9yKigpIGNv
bnN0OwogICAgIEFMV0FZU19JTkxJTkUgQ29kZVBvaW50SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsK
IAotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2JlZ2luID09IG90aGVy
Lm1fYmVnaW4KLSAgICAgICAgICAgICYmIG1fZW5kID09IG90aGVyLm1fZW5kOwotICAgIH0KLSAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2RlUG9pbnRJdGVyYXRvciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENvZGVQb2ludEl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAg
QUxXQVlTX0lOTElORSBib29sIGF0RW5kKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L09yZGluYWxOdW1iZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvT3Jk
aW5hbE51bWJlci5oCmluZGV4IDk0NzI1NDY1NjRiZTAyZDVjNzk3YjBmNjBjNTJkOTRiNmJmYmZm
YzQuLjNhNDEwZmI2M2YyNjM1OWE1MjJlNmUxMTQ5Y2Q1ZGExMzZjMDcwZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvT3JkaW5hbE51bWJlci5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvT3JkaW5hbE51bWJlci5oCkBAIC00MSw5ICs0MSw3IEBAIHB1YmxpYzoKICAgICBpbnQg
emVyb0Jhc2VkSW50KCkgY29uc3QgeyByZXR1cm4gbV96ZXJvQmFzZWRWYWx1ZTsgfQogICAgIGlu
dCBvbmVCYXNlZEludCgpIGNvbnN0IHsgcmV0dXJuIG1femVyb0Jhc2VkVmFsdWUgKyAxOyB9CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oT3JkaW5hbE51bWJlciBvdGhlcikgY29uc3QgeyByZXR1cm4g
bV96ZXJvQmFzZWRWYWx1ZSA9PSBvdGhlci5tX3plcm9CYXNlZFZhbHVlOyB9Ci0gICAgYm9vbCBv
cGVyYXRvciE9KE9yZGluYWxOdW1iZXIgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKCp0aGlzKSA9
PSBvdGhlcik7IH0KLSAgICBib29sIG9wZXJhdG9yPihPcmRpbmFsTnVtYmVyIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX3plcm9CYXNlZFZhbHVlID4gb3RoZXIubV96ZXJvQmFzZWRWYWx1ZTsgfQor
ICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KE9yZGluYWxOdW1iZXIsIE9yZGluYWxOdW1iZXIp
ID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICBPcmRpbmFsTnVtYmVyKGludCB6ZXJvQmFzZWRJ
bnQpIDogbV96ZXJvQmFzZWRWYWx1ZSh6ZXJvQmFzZWRJbnQpIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5jcHAKaW5kZXggYTIxNDgyMDczNDc4NzYwMjMzZDRhZGY5MGRmZDk2YjNhMGE5ZWEw
Ny4uMTFkYmI5MmNlYzMyMzQ4N2Y2ZjQ0ZmM3M2IzNjg5YjY0NjdhODg0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0yMTIsMTIgKzIxMiw3IEBAIFN0cmluZ1ZpZXcgU3RyaW5n
Vmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0CiAKIGJv
b2wgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29u
c3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiAqbV9pbXBsID09ICoob3Ro
ZXIubV9pbXBsKTsKLX0KLQotYm9vbCBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVy
YXRvcjo6b3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIHJldHVybiAqbV9pbXBsID09ICpvdGhlci5tX2lt
cGw7CiB9CiAKIGVudW0gY2xhc3MgQVNDSUlDYXNlIHsgTG93ZXIsIFVwcGVyIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5oCmluZGV4IDQ0OGFmNzY4OWY3NGE4ODUwMjgxOWUyYzY2OWU4MmUzYmEw
ZGIxODAuLjI0NWVkZmYxMDUyYzdmOTI0NjYxOTg4MWNmZWI4Nzc1NWYzNDc3ZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nVmlldy5oCkBAIC0yMjMsMTUgKzIyMyw4IEBAIHRlbXBsYXRlPHVuc2lnbmVk
IGxlbmd0aD4gYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBj
b25zdCBjCiB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgc3RhcnRzV2l0aExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3LCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVy
cylbbGVuZ3RoXSk7CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oU3RyaW5nVmlldyBhLCBTdHJp
bmdWaWV3IGIpIHsgcmV0dXJuIGVxdWFsKGEsIGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09
KFN0cmluZ1ZpZXcgYSwgY29uc3QgTENoYXIgKmIpOwotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShT
dHJpbmdWaWV3IGEsIGNvbnN0IGNoYXIgKmIpIHsgcmV0dXJuIGVxdWFsKGEsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Y2hhciogYSwgU3RyaW5nVmlldyBiKSB7IHJldHVybiBlcXVhbChiLCBhKTsgfQotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmlldyBiKSB7IHJldHVybiAhZXF1
YWwoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oU3RyaW5nVmlldyBhLCBjb25zdCBM
Q2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEsIGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9
KFN0cmluZ1ZpZXcgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEsIGIpOyB9Ci1p
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFyKmEsIFN0cmluZ1ZpZXcgYikgeyByZXR1
cm4gIWVxdWFsKGIsIGEpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqYSwg
U3RyaW5nVmlldyBiKSB7IHJldHVybiAhZXF1YWwoYiwgYSk7IH0KK2lubGluZSBib29sIG9wZXJh
dG9yPT0oU3RyaW5nVmlldywgY29uc3QgTENoYXIqKTsKK2lubGluZSBib29sIG9wZXJhdG9yPT0o
U3RyaW5nVmlldyBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBlcXVhbChhLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CiAKIHN0cnVjdCBTdHJpbmdWaWV3V2l0aFVuZGVy
bHlpbmdTdHJpbmc7CiAKQEAgLTc0Nyw3ICs3NDAsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiAKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSXRlcmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0
b3ImKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBlbnVtIFBvc2l0aW9uVGFnIHsgQXRFbmQgfTsK
QEAgLTc4MCw3ICs3NzIsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIEl0ZXJh
dG9yJiBvcGVyYXRvcisrKCk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEl0ZXJhdG9yJikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGNsYXNz
IEltcGw7CkBAIC03OTcsNyArNzg4LDYgQEAgcHVibGljOgogICAgIEl0ZXJhdG9yJiBvcGVyYXRv
cisrKCk7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBjb25zdCB2b2lkKiBtX2N1cnJlbnQ7CkBAIC04MTcsNyArODA3LDYgQEAgcHVibGljOgogICAg
IEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRl
cmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBTdHJpbmdWaWV3IG1fc3RyaW5nVmlldzsKQEAgLTkxNywxMSAr
OTA2LDYgQEAgaW5saW5lIGJvb2wgU3RyaW5nVmlldzo6Q29kZVBvaW50czo6SXRlcmF0b3I6Om9w
ZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKQogICAgIHJldHVybiBtX2N1cnJlbnQgPT0g
b3RoZXIubV9jdXJyZW50OwogfQogCi1pbmxpbmUgYm9vbCBTdHJpbmdWaWV3OjpDb2RlUG9pbnRz
OjpJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCiBpbmxpbmUgYXV0byBTdHJpbmdWaWV3
OjpDb2RlUG9pbnRzOjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCiB7CiAgICAgcmV0dXJuIEl0
ZXJhdG9yKG1fc3RyaW5nVmlldywgMCk7CkBAIC05NjEsMTEgKzk0NSw2IEBAIGlubGluZSBib29s
IFN0cmluZ1ZpZXc6OkNvZGVVbml0czo6SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgSXRlcmF0
b3ImIG90aGVyKSBjCiAgICAgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKIH0KIAot
aW5saW5lIGJvb2wgU3RyaW5nVmlldzo6Q29kZVVuaXRzOjpJdGVyYXRvcjo6b3BlcmF0b3IhPShj
b25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOwotfQotCiBpbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpDb2RlVW5pdHM6OmJlZ2luKCkgY29u
c3QgLT4gSXRlcmF0b3IKIHsKICAgICByZXR1cm4gSXRlcmF0b3IobV9zdHJpbmdWaWV3LCAwKTsK
QEAgLTEwMzAsMTEgKzEwMDksNiBAQCBpbmxpbmUgYm9vbCBTdHJpbmdWaWV3OjpTcGxpdFJlc3Vs
dDo6SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKQogICAgIHJldHVy
biBtX3Bvc2l0aW9uID09IG90aGVyLm1fcG9zaXRpb24gJiYgbV9pc0RvbmUgPT0gb3RoZXIubV9p
c0RvbmU7CiB9CiAKLWlubGluZSBib29sIFN0cmluZ1ZpZXc6OlNwbGl0UmVzdWx0OjpJdGVyYXRv
cjo6b3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
LCB0eXBlbmFtZSBNYXRjaGVkQ2hhcmFjdGVyUHJlZGljYXRlPgogaW5saW5lIFN0cmluZ1ZpZXcg
U3RyaW5nVmlldzo6c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhjb25z
dCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBjb25zdCBNYXRjaGVkQ2hhcmFjdGVyUHJlZGlj
YXRlJiBwcmVkaWNhdGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRQ
b3NpdGlvbi5oIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0UG9zaXRpb24uaAppbmRleCBkZTdh
ZWZkOGFhY2NlZmJhMjJhZjdlZTE2NDliZjdhY2RiZDdkMDQxLi5lYmI1YmJmM2Y0ODE5ODUxYTU3
ZjdkMDU4MDI4YWRiMzMyOThiNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1Rl
eHRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFBvc2l0aW9uLmgKQEAg
LTQwLDggKzQwLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIFRleHRQb3NpdGlvbigpIHsgfQot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0UG9zaXRpb24mIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX2xpbmUgPT0gb3RoZXIubV9saW5lICYmIG1fY29sdW1uID09IG90aGVyLm1fY29sdW1u
OyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRQb3NpdGlvbiYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFRleHRQb3NpdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIC8vIEEgdmFsdWUgd2l0aCBs
aW5lIHZhbHVlIGxlc3MgdGhhbiBhIG1pbmltdW07IHVzZWQgYXMgYW4gaW1wb3NzaWJsZSBwb3Np
dGlvbi4KICAgICBzdGF0aWMgVGV4dFBvc2l0aW9uIGJlbG93UmFuZ2VQb3NpdGlvbigpIHsgcmV0
dXJuIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpLCBPcmRpbmFsTnVt
YmVyOjpiZWZvcmVGaXJzdCgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggNTExYjlj
MTY0YTFhNThjMTFkNGNmZDUzMjFlMzJmNTI3YjRjOWVkNi4uYmViMGFkYWJlYzFhZjRkNTgwZWY3
MzhiOGM5MmEyMGU5MWU3M2ViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0zNjEsMjEg
KzM2MSw3IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBT
dHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgTENoYXIqIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgp
LCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IGNo
YXIqIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oYikpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgQVND
SUlMaXRlcmFsIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oYi5jaGFyYWN0ZXJzKCkpKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBMQ2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChhLCBiLmltcGwo
KSk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgY2hhciogYSwgY29uc3QgU3RyaW5n
JiBiKSB7IHJldHVybiBlcXVhbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYSksIGIu
aW1wbCgpKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShBU0NJSUxpdGVyYWwgYSwgY29uc3Qg
U3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
YS5jaGFyYWN0ZXJzKCkpLCBiLmltcGwoKSk7IH0KLXRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2Fw
YWNpdHk+JiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGIuaW1wbCgpLCBhLmRh
dGEoKSwgYS5zaXplKCkpOyB9Ci10ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hhciwgaW5s
aW5lQ2FwYWNpdHk+JiBiKSB7IHJldHVybiBiID09IGE7IH0KLQotaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGEu
aW1wbCgpLCBiLmltcGwoKSk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5n
JiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCBiKTsgfQotaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0
dXJuICFlcXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsg
fQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIEFTQ0lJTGl0ZXJhbCBi
KSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihiLmNoYXJhY3RlcnMoKSkpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFy
KiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLCBiLmltcGwoKSk7IH0KLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJl
dHVybiAhZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEpLCBiLmltcGwoKSk7
IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gIWVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhLmNoYXJh
Y3RlcnMoKSksIGIuaW1wbCgpKTsgfQotdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBp
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlY3RvcjxjaGFyLCBpbmxpbmVDYXBhY2l0eT4m
IGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIShhID09IGIpOyB9Ci10ZW1wbGF0ZTxzaXpl
X3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBh
LCBjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBiKSB7IHJldHVybiBiICE9IGE7
IH0KK3RlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGIp
IHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiLmRhdGEoKSwgYi5zaXplKCkpOyB9CiAKIGJvb2wg
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKIGJv
b2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaCBiL1NvdXJjZS9XVEYv
d3RmL3RocmVhZHMvU2lnbmFscy5oCmluZGV4IDhiNDBjMTRjODQyM2ZkNGVjYmY2MzUwNmQ2MGJm
ZjFjMGZkODU2MGYuLjlmMTg2ZjYzNTQ4NDFhNzU1YWJjMGQ4OWVjMzNmMGI1ZmUwZWY4NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RocmVhZHMvU2lnbmFscy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBPUyhVTklY
KQogCisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8
dHVwbGU+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRSYW5nZURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCmluZGV4IGI1
ZGFmNjAyNTM5OGEzZjdlNmYxZDM3YWJlY2U4NDRkNGYxYzY1NDguLjE3NDMxM2M1NzZmNTRjODUy
NWI0MWQyYzk4ZDg0NDE0OTRlZjBmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oCkBAIC00NSwzMSArNDUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB0ZXh0RGF0YTsKICAgICAgICAgdWludDMyX3Qg
cGF0aEluZGV4IHsgMCB9OwogCi0gICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KFN0cmluZyYmIGVs
ZW1lbnRJZGVudGlmaWVyLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBkYXRhLCB1aW50MzJfdCBp
bmRleCkKLSAgICAgICAgICAgIDogaWRlbnRpZmllcihXVEZNb3ZlKGVsZW1lbnRJZGVudGlmaWVy
KSkKLSAgICAgICAgICAgICwgbm9kZU5hbWUoV1RGTW92ZShuYW1lKSkKLSAgICAgICAgICAgICwg
dGV4dERhdGEoV1RGTW92ZShkYXRhKSkKLSAgICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQot
ICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBOb2RlUGF0aENvbXBvbmVudChjb25zdCBT
dHJpbmcmIGVsZW1lbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgdWludDMyX3QgaW5kZXgpCi0gICAgICAgICAgICA6IGlkZW50aWZpZXIoZWxlbWVu
dElkZW50aWZpZXIpCi0gICAgICAgICAgICAsIG5vZGVOYW1lKG5hbWUpCi0gICAgICAgICAgICAs
IHRleHREYXRhKGRhdGEpCi0gICAgICAgICAgICAsIHBhdGhJbmRleChpbmRleCkKLSAgICAgICAg
ewotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGVQYXRoQ29t
cG9uZW50JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGlkZW50
aWZpZXIgPT0gb3RoZXIuaWRlbnRpZmllciAmJiBub2RlTmFtZSA9PSBvdGhlci5ub2RlTmFtZSAm
JiB0ZXh0RGF0YSA9PSBvdGhlci50ZXh0RGF0YSAmJiBwYXRoSW5kZXggPT0gb3RoZXIucGF0aElu
ZGV4OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGVQYXRo
Q29tcG9uZW50JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBOb2RlUGF0aENvbXBvbmVudCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE5vZGVQYXRoQ29tcG9u
ZW50PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAppbmRleCA2YzBiMWI0ZjJhYjBj
MDMzMDc2NjU0ZWE0YjI3NjU1OTQ0NTg5NTM2Li45NTVjNzA2MGY2ZWFmZTgzNjE1ZjhkMmEwMmZm
ZWQwNDUwMzI5MDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaApAQCAtNzIsMTAgKzcyLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9kYXRhYmFzZU5hbWUuaXNOdWxsKCk7CiAgICAgfQogCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gb3RoZXIubV9kYXRhYmFzZU5hbWUgPT0gbV9kYXRhYmFz
ZU5hbWUgJiYgb3RoZXIubV9vcmlnaW4gPT0gbV9vcmlnaW4gJiYgb3RoZXIubV9pc1RyYW5zaWVu
dCA9PSBtX2lzVHJhbnNpZW50OwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSURC
RGF0YWJhc2VJZGVudGlmaWVyJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlTmFtZTsgfQogICAgIGNv
bnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKaW5kZXgg
MmEzN2M1MjhlZjViZjlkOTU3NzNhMGIxMGYwMjUyMjliZGU1YTQxOC4uNWI1NWFiYTlkOWVhMmUw
MzM2ODNmOTQ1MTgxMzU2MzhmOTU2ZmFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKQEAgLTQ0MCwyOCArNDQwLDYgQEAgYm9vbCBJREJL
ZXlEYXRhOjpvcGVyYXRvcjwoY29uc3QgSURCS2V5RGF0YSYgcmhzKSBjb25zdAogICAgIHJldHVy
biBjb21wYXJlKHJocykgPCAwOwogfQogCi1ib29sIElEQktleURhdGE6Om9wZXJhdG9yPT0oY29u
c3QgSURCS2V5RGF0YSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgaWYgKG1fdHlwZSAhPSBvdGhlci5t
X3R5cGUgfHwgbV9pc051bGwgIT0gb3RoZXIubV9pc051bGwgfHwgbV9pc0RlbGV0ZWRWYWx1ZSAh
PSBvdGhlci5tX2lzRGVsZXRlZFZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgc3dp
dGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6SW52YWxpZDoKLSAg
ICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6TWF4OgotICAgIGNhc2UgSW5kZXhlZERCOjpLZXlU
eXBlOjpNaW46Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2UgSW5kZXhlZERCOjpLZXlU
eXBlOjpOdW1iZXI6Ci0gICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OkRhdGU6Ci0gICAgICAg
IHJldHVybiBzdGQ6OmdldDxkb3VibGU+KG1fdmFsdWUpID09IHN0ZDo6Z2V0PGRvdWJsZT4ob3Ro
ZXIubV92YWx1ZSk7Ci0gICAgY2FzZSBJbmRleGVkREI6OktleVR5cGU6OlN0cmluZzoKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6Z2V0PFN0cmluZz4obV92YWx1ZSkgPT0gc3RkOjpnZXQ8U3RyaW5nPihv
dGhlci5tX3ZhbHVlKTsKLSAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6QmluYXJ5OgotICAg
ICAgICByZXR1cm4gc3RkOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG1fdmFsdWUpID09IHN0
ZDo6Z2V0PFRocmVhZFNhZmVEYXRhQnVmZmVyPihvdGhlci5tX3ZhbHVlKTsKLSAgICBjYXNlIElu
ZGV4ZWREQjo6S2V5VHlwZTo6QXJyYXk6Ci0gICAgICAgIHJldHVybiBzdGQ6OmdldDxWZWN0b3I8
SURCS2V5RGF0YT4+KG1fdmFsdWUpID09IHN0ZDo6Z2V0PFZlY3RvcjxJREJLZXlEYXRhPj4ob3Ro
ZXIubV92YWx1ZSk7Ci0gICAgfQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KIHNpemVfdCBJREJLZXlEYXRhOjpzaXplKCkgY29uc3QKIHsKICAgICBpZiAobV9pc051bGwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKaW5kZXgg
NGI5Nzg1MzY5ZDE5MGE2YjE5NjkxZDEzN2FlMTU2N2U1YzM3OTVkOS4uMDFiZjg2YWE1YTRkMDNh
YTk2OTMyZWI3Yzg1NjA5OWYwMzgxOGVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleURhdGEuaApAQCAtMTExLDExICsxMTEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiAhKCp0aGlzIDwgb3RoZXIpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBJREJLZXlEYXRhJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IElEQktleURhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSURCS2V5RGF0
YSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJS
ZXNvdXJjZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaAppbmRleCBiZTE2MTk3ZjYzNGE1OTZjMzllNTEz
MDI4NTkwNjgzNTc0NTg2ODJhLi4yMWFkNjQ3OGMxMzEyM2RkZmM0OTY5NzFiZmZmOWEwOTJmNTE3
MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVzb3VyY2VJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCkBAIC02MSwxMSArNjEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhh
c2hDb2Rlcyk+KGhhc2hDb2Rlcyk7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1faWRiQ29ubmVjdGlvbklkZW50aWZpZXIgPT0gb3RoZXIubV9pZGJDb25uZWN0aW9u
SWRlbnRpZmllcgotICAgICAgICAgICAgJiYgbV9yZXNvdXJjZU51bWJlciA9PSBvdGhlci5tX3Jl
c291cmNlTnVtYmVyOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAgIElEQkNvbm5lY3Rpb25J
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGJDb25u
ZWN0aW9uSWRlbnRpZmllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc2Vzc2lvbi9NZWRpYVBvc2l0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzZXNzaW9uL01lZGlhUG9zaXRpb25TdGF0ZS5oCmluZGV4IDBhYmNiNTkyMmZmOTAz
MzA4YWY1OTVjYjU0YmNhYmY0YzY5ZWY1NWYuLmQzZThhYmZlNjE5MzE1NjViYWYyZWQzZGI3NDVl
MTBkMGM5MzdhOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL01lZGlhUG9zaXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL01lZGlhUG9zaXRpb25TdGF0ZS5oCkBAIC0zOSw3ICszOSw3IEBAIHN0cnVjdCBN
ZWRpYVBvc2l0aW9uU3RhdGUgewogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxNZWRpYVBvc2l0aW9uU3RhdGU+IGRlY29kZShEZWNvZGVyJik7CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVkaWFQb3NpdGlvblN0YXRlJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gZHVyYXRpb24gPT0gb3RoZXIuZHVyYXRpb24gJiYgcGxheWJhY2tSYXRlID09IG90
aGVyLnBsYXliYWNrUmF0ZSAmJiBwb3NpdGlvbiA9PSBvdGhlci5wb3NpdGlvbjsgfQorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBNZWRpYVBvc2l0aW9uU3RhdGUmKSBjb25zdCA9IGRlZmF1bHQ7
CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiBpbmxpbmUgdm9pZCBNZWRpYVBvc2l0aW9u
U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmgKaW5kZXggYzI0OWYw
NGFlNjFmYmU1NjY1Y2JhNGU1ODI4NjRmNjBhMDA0MzRjNS4uYmE0YjVmY2NiZDg3MTQ4OWY3MDU1
ODE5Yzg0YTU4OTJhYzM0MDA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5oCkBAIC02NiwxMCArNjYsNiBAQCBwcml2YXRl
OgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJUQ1J0cFRyYW5zZm9ybSYsIGNvbnN0IFJU
Q1J0cFRyYW5zZm9ybSYpOwotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSVENSdHBUcmFu
c2Zvcm0mIGEsIGNvbnN0IFJUQ1J0cFRyYW5zZm9ybSYgYikKLXsKLSAgICByZXR1cm4gIShhID09
IGIpOwotfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcGVybWlzc2lvbnMvUGVybWlzc2lvbkRlc2NyaXB0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcGVybWlzc2lvbnMvUGVybWlzc2lvbkRlc2NyaXB0b3IuaAppbmRl
eCA0ZjJmZDIwM2ViNTVlNzFmOWI3YzY0OTQxZDVhZjVkZmM5NjY4NjExLi43OWM2NzE3NWVkNzQ5
NzU2MTQzODdlMGFmYzUxNjNkMGZiN2EyZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3Blcm1pc3Npb25zL1Blcm1pc3Npb25EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9wZXJtaXNzaW9ucy9QZXJtaXNzaW9uRGVzY3JpcHRvci5oCkBAIC0zMyw3
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBQZXJtaXNzaW9uRGVzY3JpcHRv
ciB7CiAgICAgUGVybWlzc2lvbk5hbWUgbmFtZTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBQZXJtaXNzaW9uRGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QgeyByZXR1cm4gbmFtZSA9
PSBkZXNjcmlwdG9yLm5hbWU7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGVybWlzc2lv
bkRlc2NyaXB0b3ImKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBlcm1pc3Npb25EZXNjcmlwdG9yPiBkZWNvZGUoRGVj
b2RlciYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QmFzZUF1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNl
QXVkaW9Db250ZXh0LmgKaW5kZXggNGFmZmFjMzNlMzQyNGMzZmFiNWFhNWIyYmVkMGQ3NDQ3Njcy
MmZkNS4uNjUzZTMwOWU0MDc2NjIxMjk4MGIxMTk1M2E5NGUwYjliOGViZjAwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CYXNlQXVkaW9Db250ZXh0LmgKQEAg
LTMwOCw3ICszMDgsNyBAQCBwcml2YXRlOgogICAgICAgICBUYWlsUHJvY2Vzc2luZ05vZGUmIG9w
ZXJhdG9yPShjb25zdCBUYWlsUHJvY2Vzc2luZ05vZGUmKSA9IGRlbGV0ZTsKICAgICAgICAgVGFp
bFByb2Nlc3NpbmdOb2RlJiBvcGVyYXRvcj0oVGFpbFByb2Nlc3NpbmdOb2RlJiYpID0gZGVsZXRl
OwogICAgICAgICBBdWRpb05vZGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBtX25vZGUu
Z2V0KCk7IH0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRhaWxQcm9jZXNzaW5nTm9k
ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZSA9PSBvdGhlci5tX25vZGU7IH0KKyAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRhaWxQcm9jZXNzaW5nTm9kZSYpIGNvbnN0ID0gZGVm
YXVsdDsKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1ZGlvTm9kZSYgbm9kZSkgY29u
c3QgeyByZXR1cm4gbV9ub2RlID09ICZub2RlOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVm
UHRyPEF1ZGlvTm9kZT4gbV9ub2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9TZXNzaW9uSUQuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lvbklELmgKaW5kZXgg
ZDJkNjMyMWQ3MDRjMmVmNzI0MWNiMTM0ODZkODc4MmUyMmVlOTY4Mi4uNWI2NWRjNTFkYmVhYjM2
OTlhNzc0OWIyMmRjNmNmMGNjNTg2YzZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9TZXNzaW9uSUQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Nlc3Npb25JRC5o
CkBAIC03MCw4ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZh
bHVlKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyID09IEhhc2hUYWJsZURlbGV0ZWRWYWx1
ZUlEOyB9CiAKICAgICB1aW50NjRfdCB0b1VJbnQ2NCgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXIgPT0gc2Vzc2lvbklELm1faWRlbnRpZmllcjsgfQotICAgIGJv
b2wgb3BlcmF0b3IhPShTZXNzaW9uSUQgc2Vzc2lvbklEKSBjb25zdCB7IHJldHVybiBtX2lkZW50
aWZpZXIgIT0gc2Vzc2lvbklELm1faWRlbnRpZmllcjsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTZXNzaW9uSUQmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgYm9vbCBpc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiAhaXNFcGhlbWVyYWwoKTsgfQogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3Vu
ZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGlt
ZUFWRm91bmRhdGlvbi5jcHAKaW5kZXggMDY1OTg0MDY4OWU0YWJiNTIyMGU1YmRkODA1MjNkNzQw
MmY0YWNlMi4uODg4YmVmMzIzNjgyZWEyMjk5N2VmNjQwOWEwZDcxZDg1NWZmZmVhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3Vu
ZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRp
YVRpbWVBVkZvdW5kYXRpb24uY3BwCkBAIC0zMiwzNyArMzIsMjggQEAKIAogbmFtZXNwYWNlIFBB
TCB7CiAKLXN0YXRpYyBib29sIENNVGltZUhhc0ZsYWdzKGNvbnN0IENNVGltZSYgY21UaW1lLCB1
aW50MzJfdCBmbGFncykKK01lZGlhVGltZSB0b01lZGlhVGltZShDTVRpbWUgdGltZSkKIHsKLSAg
ICByZXR1cm4gKGNtVGltZS5mbGFncyAmIGZsYWdzKSA9PSBmbGFnczsKKyAgICBPcHRpb25TZXQ8
TWVkaWFUaW1lOjpGbGFnPiBmbGFnczsKKyAgICBpZiAodGltZS5mbGFncyAmIGtDTVRpbWVGbGFn
c19WYWxpZCkgeworICAgICAgICBmbGFncy5hZGQoTWVkaWFUaW1lOjpWYWxpZCk7CisgICAgICAg
IGlmICh0aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX1Bvc2l0aXZlSW5maW5pdHkpCisgICAgICAg
ICAgICBmbGFncy5hZGQoTWVkaWFUaW1lOjpQb3NpdGl2ZUluZmluaXRlKTsKKyAgICAgICAgZWxz
ZSBpZiAodGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5KQorICAgICAg
ICAgICAgZmxhZ3MuYWRkKE1lZGlhVGltZTo6TmVnYXRpdmVJbmZpbml0ZSk7CisgICAgICAgIGVs
c2UgaWYgKHRpbWUuZmxhZ3MgJiBrQ01UaW1lRmxhZ3NfSW5kZWZpbml0ZSkKKyAgICAgICAgICAg
IGZsYWdzLmFkZChNZWRpYVRpbWU6OkluZGVmaW5pdGUpOworICAgIH0KKyAgICByZXR1cm4gTWVk
aWFUaW1lKHRpbWUudmFsdWUsIHRpbWUudGltZXNjYWxlLCBmbGFncyk7CiB9CiAKLU1lZGlhVGlt
ZSB0b01lZGlhVGltZShjb25zdCBDTVRpbWUmIGNtVGltZSkKLXsKLSAgICB1aW50MzJfdCBmbGFn
cyA9IDA7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlk
KSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpWYWxpZDsKLSAgICBpZiAoQ01UaW1lSGFz
RmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQgfCBrQ01UaW1lRmxhZ3NfSGFzQmVlblJv
dW5kZWQpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6Okhhc0JlZW5Sb3VuZGVkOwotICAg
IGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVG
bGFnc19Qb3NpdGl2ZUluZmluaXR5KSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpQb3Np
dGl2ZUluZmluaXRlOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFn
c19WYWxpZCB8IGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5KSkKLSAgICAgICAgZmxhZ3Mg
fD0gTWVkaWFUaW1lOjpOZWdhdGl2ZUluZmluaXRlOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhj
bVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19JbmRlZmluaXRlKSkKLSAg
ICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpJbmRlZmluaXRlOwotCi0gICAgcmV0dXJuIE1lZGlh
VGltZShjbVRpbWUudmFsdWUsIGNtVGltZS50aW1lc2NhbGUsIGZsYWdzKTsKLX0KLQotQ01UaW1l
IHRvQ01UaW1lKGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lKQorQ01UaW1lIHRvQ01UaW1lKE1l
ZGlhVGltZSBtZWRpYVRpbWUpCiB7CiAgICAgQ01UaW1lIHRpbWU7Ci0KICAgICBpZiAobWVkaWFU
aW1lLmhhc0RvdWJsZVZhbHVlKCkpCiAgICAgICAgIHRpbWUgPSBDTVRpbWVNYWtlV2l0aFNlY29u
ZHMobWVkaWFUaW1lLnRvRG91YmxlKCksIG1lZGlhVGltZS50aW1lU2NhbGUoKSk7CiAgICAgZWxz
ZQogICAgICAgICB0aW1lID0gQ01UaW1lTWFrZShtZWRpYVRpbWUudGltZVZhbHVlKCksIG1lZGlh
VGltZS50aW1lU2NhbGUoKSk7Ci0KICAgICBpZiAobWVkaWFUaW1lLmlzVmFsaWQoKSkKICAgICAg
ICAgdGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfVmFsaWQ7CiAgICAgaWYgKG1lZGlhVGltZS5o
YXNCZWVuUm91bmRlZCgpKQpAQCAtNzEsNyArNjIsNiBAQCBDTVRpbWUgdG9DTVRpbWUoY29uc3Qg
TWVkaWFUaW1lJiBtZWRpYVRpbWUpCiAgICAgICAgIHRpbWUuZmxhZ3MgfD0ga0NNVGltZUZsYWdz
X1Bvc2l0aXZlSW5maW5pdHk7CiAgICAgaWYgKG1lZGlhVGltZS5pc05lZ2F0aXZlSW5maW5pdGUo
KSkKICAgICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfTmVnYXRpdmVJbmZpbml0eTsK
LQogICAgIHJldHVybiB0aW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCmluZGV4IGIzZGJl
MTdhYTliYzEyNTFkY2UyZWM4YWRlZTdjYjg0OTQ3OWJmNzAuLmEyYmNkYWU5ZjhlOTlkMGYwNGUz
ZjNjM2VkMjBhM2YzNmEyOTA2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
YXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCkBAIC0zMiw4ICsz
Miw4IEBACiAKIG5hbWVzcGFjZSBQQUwgewogCi1QQUxfRVhQT1JUIENNVGltZSB0b0NNVGltZShj
b25zdCBNZWRpYVRpbWUmKTsKLVBBTF9FWFBPUlQgTWVkaWFUaW1lIHRvTWVkaWFUaW1lKGNvbnN0
IENNVGltZSYpOworUEFMX0VYUE9SVCBDTVRpbWUgdG9DTVRpbWUoTWVkaWFUaW1lKTsKK1BBTF9F
WFBPUlQgTWVkaWFUaW1lIHRvTWVkaWFUaW1lKENNVGltZSk7CiAKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZy5oCmluZGV4IGY0NjY0YzkxZWE0MzVlYTVjZGRi
OTkxY2ZjZDIyNDc3NmIyY2IxN2YuLmNlMTA3MzhjOGU3ZTI1MWQxNDM1MTY5NGIwMGNhZGM4NDRi
NWUzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0RW5jb2Rp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nLmgKQEAg
LTY2LDcgKzY2LDYgQEAgcHJpdmF0ZToKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgVGV4dEVuY29kaW5nJiBhLCBjb25zdCBUZXh0RW5jb2RpbmcmIGIpIHsgcmV0dXJuIGEubmFt
ZSgpID09IGIubmFtZSgpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRFbmNv
ZGluZyYgYSwgY29uc3QgVGV4dEVuY29kaW5nJiBiKSB7IHJldHVybiBhLm5hbWUoKSAhPSBiLm5h
bWUoKTsgfQogCiBjb25zdCBUZXh0RW5jb2RpbmcmIEFTQ0lJRW5jb2RpbmcoKTsKIGNvbnN0IFRl
eHRFbmNvZGluZyYgTGF0aW4xRW5jb2RpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDBlMWFkNzI0NWZlMTZlMWU5NmUz
ZGExY2I1ODRiOWE0YTZkODlmM2IuLmNmMGVlYzk3ZjNhMDJhZjkwN2FiNjRjYjc3NTAxMWJkYjJi
ZjAwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFu
aW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmNwcApAQCAtMTIxLDggKzEyMSw4IEBAIHN0YXRpYyBpbmxpbmUgR2FwTGVuZ3RoIGJs
ZW5kRnVuYyhjb25zdCBHYXBMZW5ndGgmIGZyb20sIGNvbnN0IEdhcExlbmd0aCYgdG8sIGNvCiAK
IHN0YXRpYyBpbmxpbmUgVGFiU2l6ZSBibGVuZEZ1bmMoY29uc3QgVGFiU2l6ZSYgZnJvbSwgY29u
c3QgVGFiU2l6ZSYgdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
KQogewotICAgIGF1dG8gYmxlbmRlZFZhbHVlID0gYmxlbmQoZnJvbS52YWx1ZSgpLCB0by52YWx1
ZSgpLCBjb250ZXh0KTsKLSAgICByZXR1cm4geyBibGVuZGVkVmFsdWUgPCAwID8gMCA6IGJsZW5k
ZWRWYWx1ZSwgZnJvbS5pc1NwYWNlcygpID8gU3BhY2VWYWx1ZVR5cGUgOiBMZW5ndGhWYWx1ZVR5
cGUgfTsKKyAgICBhdXRvIGJsZW5kZWRWYWx1ZSA9IGJsZW5kKGZyb20udmFsdWUsIHRvLnZhbHVl
LCBjb250ZXh0KTsKKyAgICByZXR1cm4geyBibGVuZGVkVmFsdWUgPCAwID8gMCA6IGJsZW5kZWRW
YWx1ZSwgZnJvbS5pc1NwYWNlcyA/IFRhYlNpemU6OlNwYWNlcyA6IFRhYlNpemU6Okxlbmd0aCB9
OwogfQogCiBzdGF0aWMgaW5saW5lIExlbmd0aFNpemUgYmxlbmRGdW5jKGNvbnN0IExlbmd0aFNp
emUmIGZyb20sIGNvbnN0IExlbmd0aFNpemUmIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5n
Q29udGV4dCYgY29udGV4dCkKQEAgLTk3OCwxMCArOTc4LDkgQEAgcHJpdmF0ZToKICAgICAvLyBp
dCdzIG9ubHkgcG9zc2libGUgaWYgdGhleSdyZSBib3RoIG5vdCBhdXRvLgogICAgIGJvb2wgY2Fu
SW50ZXJwb2xhdGUoY29uc3QgUmVuZGVyU3R5bGUmIGZyb20sIGNvbnN0IFJlbmRlclN0eWxlJiB0
bywgQ29tcG9zaXRlT3BlcmF0aW9uKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgYm9vbCBm
cm9tSXNBdXRvID0gdmFsdWUoZnJvbSkueCgpLmlzQXV0bygpICYmIHZhbHVlKGZyb20pLnkoKS5p
c0F1dG8oKTsKLSAgICAgICAgYm9vbCB0b0lzQXV0byA9IHZhbHVlKHRvKS54KCkuaXNBdXRvKCkg
JiYgdmFsdWUodG8pLnkoKS5pc0F1dG8oKTsKLQotICAgICAgICByZXR1cm4gKCFmcm9tSXNBdXRv
ICYmICF0b0lzQXV0byk7IAorICAgICAgICBib29sIGZyb21Jc0F1dG8gPSB2YWx1ZShmcm9tKS54
LmlzQXV0bygpICYmIHZhbHVlKGZyb20pLnkuaXNBdXRvKCk7CisgICAgICAgIGJvb2wgdG9Jc0F1
dG8gPSB2YWx1ZSh0bykueC5pc0F1dG8oKSAmJiB2YWx1ZSh0bykueS5pc0F1dG8oKTsKKyAgICAg
ICAgcmV0dXJuICFmcm9tSXNBdXRvICYmICF0b0lzQXV0bzsKICAgICB9CiB9OwogCkBAIC0xMjky
LDIwICsxMjkxLDIwIEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IHNoYWRvd0xpc3RMZW5ndGgoY29u
c3QgU2hhZG93RGF0YSogc2hhZG93KQogICAgIHJldHVybiBjb3VudDsKIH0KIAotc3RhdGljIGlu
bGluZSBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dGb3JCbGVuZGluZyhjb25zdCBTaGFkb3dEYXRh
KiBzcmNTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIG90aGVyU2hhZG93KQorc3RhdGljIGlubGlu
ZSBjb25zdCBTaGFkb3dEYXRhJiBzaGFkb3dGb3JCbGVuZGluZyhjb25zdCBTaGFkb3dEYXRhKiBz
cmNTaGFkb3csIGNvbnN0IFNoYWRvd0RhdGEqIG90aGVyU2hhZG93KQogewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0U2hhZG93RGF0YShMZW5ndGhQb2ludChM
ZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpKSwgTGVu
Z3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93
U3R5bGU6Ok5vcm1hbCwgZmFsc2UsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0U2hhZG93RGF0YShMZW5n
dGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4
ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVk
KSwgU2hhZG93U3R5bGU6Okluc2V0LCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0V2ViS2l0Qm94U2hh
ZG93RGF0YShMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVu
Z3RoVHlwZTo6Rml4ZWQpKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0
aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFy
ZW50QmxhY2spOwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0
SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpG
aXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4
ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQsIHRydWUs
IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hh
ZG93RGF0YT4gZGVmYXVsdFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0aFR5cGU6OkZp
eGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQp
LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCBmYWxzZSwg
Q29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFk
b3dEYXRhPiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsgeyBMZW5ndGhUeXBl
OjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZp
eGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Okluc2V0LCBmYWxz
ZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
aGFkb3dEYXRhPiBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YShMZW5ndGhQb2ludCB7IHsgTGVu
Z3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhlZCB9IH0sIExlbmd0aChMZW5ndGhU
eXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3Jt
YWwsIHRydWUsIENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U2hhZG93RGF0YT4gZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YShMZW5ndGhQ
b2ludCB7IHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhlZCB9IH0sIExl
bmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRv
d1N0eWxlOjpJbnNldCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwogCiAgICAgaWYg
KHNyY1NoYWRvdykKLSAgICAgICAgcmV0dXJuIHNyY1NoYWRvdzsKKyAgICAgICAgcmV0dXJuICpz
cmNTaGFkb3c7CiAKICAgICBpZiAob3RoZXJTaGFkb3ctPnN0eWxlKCkgPT0gU2hhZG93U3R5bGU6
Okluc2V0KQotICAgICAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94U2hhZG93KCkg
PyAmZGVmYXVsdEluc2V0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6ICZkZWZhdWx0SW5zZXRT
aGFkb3dEYXRhLmdldCgpOworICAgICAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94
U2hhZG93KCkgPyBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDogZGVmYXVs
dEluc2V0U2hhZG93RGF0YS5nZXQoKTsKIAotICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJr
aXRCb3hTaGFkb3coKSA/ICZkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6ICZkZWZh
dWx0U2hhZG93RGF0YS5nZXQoKTsKKyAgICByZXR1cm4gb3RoZXJTaGFkb3ctPmlzV2Via2l0Qm94
U2hhZG93KCkgPyBkZWZhdWx0V2ViS2l0Qm94U2hhZG93RGF0YS5nZXQoKSA6IGRlZmF1bHRTaGFk
b3dEYXRhLmdldCgpOwogfQogCiBjbGFzcyBQcm9wZXJ0eVdyYXBwZXJTaGFkb3cgZmluYWwgOiBw
dWJsaWMgQW5pbWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZSB7CkBAIC0xNDI4LDExICsxNDI3LDEx
IEBAIHByaXZhdGU6CiAgICAgICAgIFNoYWRvd0RhdGEqIGxhc3RTaGFkb3cgPSBudWxscHRyOwog
CiAgICAgICAgIHdoaWxlIChzaGFkb3dBIHx8IHNoYWRvd0IpIHsKLSAgICAgICAgICAgIGNvbnN0
IFNoYWRvd0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRvd0EsIHNoYWRv
d0IpOwotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogZHN0U2hhZG93ID0gc2hhZG93Rm9y
QmxlbmRpbmcoc2hhZG93Qiwgc2hhZG93QSk7CisgICAgICAgICAgICBhdXRvJiBzcmNTaGFkb3cg
PSBzaGFkb3dGb3JCbGVuZGluZyhzaGFkb3dBLCBzaGFkb3dCKTsKKyAgICAgICAgICAgIGF1dG8m
IGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRvd0IsIHNoYWRvd0EpOwogCi0gICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gYmxlbmRlZFNoYWRvdyA9IGJsZW5k
RnVuYyhzcmNTaGFkb3csIGRzdFNoYWRvdywgY29udGV4dCk7Ci0gICAgICAgICAgICBTaGFkb3dE
YXRhKiBibGVuZGVkU2hhZG93UHRyID0gYmxlbmRlZFNoYWRvdy5nZXQoKTsKKyAgICAgICAgICAg
IGF1dG8gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYygmc3JjU2hhZG93LCAmZHN0U2hhZG93LCBj
b250ZXh0KTsKKyAgICAgICAgICAgIGF1dG8gYmxlbmRlZFNoYWRvd1B0ciA9IGJsZW5kZWRTaGFk
b3cuZ2V0KCk7CiAKICAgICAgICAgICAgIGlmICghbGFzdFNoYWRvdykKICAgICAgICAgICAgICAg
ICBuZXdTaGFkb3dEYXRhID0gV1RGTW92ZShibGVuZGVkU2hhZG93KTsKQEAgLTE0NDEsOCArMTQ0
MCw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGxhc3RTaGFkb3cgPSBibGVuZGVkU2hhZG93
UHRyOwogCi0gICAgICAgICAgICBzaGFkb3dBID0gc2hhZG93QSA/IHNoYWRvd0EtPm5leHQoKSA6
IDA7Ci0gICAgICAgICAgICBzaGFkb3dCID0gc2hhZG93QiA/IHNoYWRvd0ItPm5leHQoKSA6IDA7
CisgICAgICAgICAgICBzaGFkb3dBID0gc2hhZG93QSA/IHNoYWRvd0EtPm5leHQoKSA6IG51bGxw
dHI7CisgICAgICAgICAgICBzaGFkb3dCID0gc2hhZG93QiA/IHNoYWRvd0ItPm5leHQoKSA6IG51
bGxwdHI7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbmV3U2hhZG93RGF0YTsKQEAgLTE0
NzEsMTMgKzE0NzAsMTQgQEAgcHJpdmF0ZToKIAogICAgICAgICBpbnQgbWF4TGVuZ3RoID0gc3Rk
OjptYXgoZnJvbUxlbmd0aCwgdG9MZW5ndGgpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG1heExlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBmcm9tU2hh
ZG93ID0gaSA8IGZyb21MZW5ndGggPyBmcm9tU2hhZG93c1tpXSA6IDA7Ci0gICAgICAgICAgICBj
b25zdCBTaGFkb3dEYXRhKiB0b1NoYWRvdyA9IGkgPCB0b0xlbmd0aCA/IHRvU2hhZG93c1tpXSA6
IDA7CisgICAgICAgICAgICBhdXRvIGZyb21TaGFkb3cgPSBpIDwgZnJvbUxlbmd0aCA/IGZyb21T
aGFkb3dzW2ldIDogbnVsbHB0cjsKKyAgICAgICAgICAgIGF1dG8gdG9TaGFkb3cgPSBpIDwgdG9M
ZW5ndGggPyB0b1NoYWRvd3NbaV0gOiBudWxscHRyOworCisgICAgICAgICAgICBhdXRvJiBzcmNT
aGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyhmcm9tU2hhZG93LCB0b1NoYWRvdyk7CisgICAgICAg
ICAgICBhdXRvJiBkc3RTaGFkb3cgPSBzaGFkb3dGb3JCbGVuZGluZyh0b1NoYWRvdywgZnJvbVNo
YWRvdyk7CiAKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRv
d0ZvckJsZW5kaW5nKGZyb21TaGFkb3csIHRvU2hhZG93KTsKLSAgICAgICAgICAgIGNvbnN0IFNo
YWRvd0RhdGEqIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHRvU2hhZG93LCBmcm9tU2hh
ZG93KTsKKyAgICAgICAgICAgIGF1dG8gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYygmc3JjU2hh
ZG93LCAmZHN0U2hhZG93LCBjb250ZXh0KTsKIAotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFNoYWRvd0RhdGE+IGJsZW5kZWRTaGFkb3cgPSBibGVuZEZ1bmMoc3JjU2hhZG93LCBkc3RTaGFk
b3csIGNvbnRleHQpOwogICAgICAgICAgICAgLy8gSW5zZXJ0IGF0IHRoZSBzdGFydCBvZiB0aGUg
bGlzdCB0byBwcmVzZXJ2ZSB0aGUgb3JkZXIuCiAgICAgICAgICAgICBibGVuZGVkU2hhZG93LT5z
ZXROZXh0KFdURk1vdmUobmV3U2hhZG93RGF0YSkpOwogICAgICAgICAgICAgbmV3U2hhZG93RGF0
YSA9IFdURk1vdmUoYmxlbmRlZFNoYWRvdyk7CkBAIC0yMzU5LDcgKzIzNTksNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGJvb2wgY2FuSW50ZXJwb2xhdGUoY29uc3QgUmVuZGVyU3R5bGUmIGZy
b20sIGNvbnN0IFJlbmRlclN0eWxlJiB0bywgQ29tcG9zaXRlT3BlcmF0aW9uKSBjb25zdCBmaW5h
bAogICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlKGZyb20pLmlzU3BhY2VzKCkgPT0gdmFsdWUo
dG8pLmlzU3BhY2VzKCk7CisgICAgICAgIHJldHVybiB2YWx1ZShmcm9tKS5pc1NwYWNlcyA9PSB2
YWx1ZSh0bykuaXNTcGFjZXM7CiAgICAgfQogCiAgICAgdm9pZCBibGVuZChSZW5kZXJTdHlsZSYg
ZGVzdGluYXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiBmcm9tLCBjb25zdCBSZW5kZXJTdHlsZSYg
dG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KSBjb25zdCBmaW5h
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbkFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCmluZGV4IGRiNmY1MDhjNGI3NzAyMDAxOGViYTMyMmUw
MWIxNDI4OTQ4MjBkODIuLjMxNTk2ZTMwNWE1MmMxNTY0YzE2ZjE2YjBlYTVkYjExMWFhNWViYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25BY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKQEAgLTEyMiwxMyArMTIyLDYgQEAgTW9kaWZ5SGVh
ZGVyc0FjdGlvbiBNb2RpZnlIZWFkZXJzQWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdAogICAg
IH07CiB9CiAKLWJvb2wgTW9kaWZ5SGVhZGVyc0FjdGlvbjo6b3BlcmF0b3I9PShjb25zdCBNb2Rp
ZnlIZWFkZXJzQWN0aW9uJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gb3RoZXIuaGFzaFRh
YmxlVHlwZSA9PSB0aGlzLT5oYXNoVGFibGVUeXBlCi0gICAgICAgICYmIG90aGVyLnJlcXVlc3RI
ZWFkZXJzID09IHRoaXMtPnJlcXVlc3RIZWFkZXJzCi0gICAgICAgICYmIG90aGVyLnJlc3BvbnNl
SGVhZGVycyA9PSB0aGlzLT5yZXNwb25zZUhlYWRlcnM7Ci19Ci0KIHZvaWQgTW9kaWZ5SGVhZGVy
c0FjdGlvbjo6c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKSBjb25zdAogewogICAg
IGF1dG8gYmVnaW5JbmRleCA9IHZlY3Rvci5zaXplKCk7CkBAIC0yMjksMTEgKzIyMiw2IEBAIGF1
dG8gTW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVySW5mbzo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QgLT4gTW9kaWZ5SGVhZGVyCiAgICAgfTsKIH0KIAotYm9vbCBNb2RpZnlIZWFkZXJzQWN0
aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjpvcGVyYXRvcj09KGNvbnN0IE1vZGlmeUhlYWRlckluZm8m
IG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBvdGhlci5vcGVyYXRpb24gPT0gdGhpcy0+b3Bl
cmF0aW9uOwotfQotCiB2b2lkIE1vZGlmeUhlYWRlcnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86
OnNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mIHZlY3RvcikgY29uc3QKIHsKICAgICBhdXRvIGJl
Z2luSW5kZXggPSB2ZWN0b3Iuc2l6ZSgpOwpAQCAtMzIxLDEyICszMDksNiBAQCBSZWRpcmVjdEFj
dGlvbiBSZWRpcmVjdEFjdGlvbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICB9OwogfQogCi1i
b29sIFJlZGlyZWN0QWN0aW9uOjpvcGVyYXRvcj09KGNvbnN0IFJlZGlyZWN0QWN0aW9uJiBvdGhl
cikgY29uc3QKLXsKLSAgICByZXR1cm4gb3RoZXIuaGFzaFRhYmxlVHlwZSA9PSB0aGlzLT5oYXNo
VGFibGVUeXBlCi0gICAgICAgICYmIG90aGVyLmFjdGlvbiA9PSB0aGlzLT5hY3Rpb247Ci19Ci0K
IHZvaWQgUmVkaXJlY3RBY3Rpb246OnNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mIHZlY3Rvcikg
Y29uc3QKIHsKICAgICBhdXRvIGJlZ2luSW5kZXggPSB2ZWN0b3Iuc2l6ZSgpOwpAQCAtNDQ2LDE4
ICs0MjgsNiBAQCBhdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246Omlzb2xh
dGVkQ29weSgpIGNvbnN0IC0+IFVSTFRyYW5zZm9ybUFjdAogICAgIH07CiB9CiAKLWJvb2wgUmVk
aXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6b3BlcmF0b3I9PShjb25zdCBVUkxUcmFu
c2Zvcm1BY3Rpb24mIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBvdGhlci5mcmFnbWVudCA9
PSB0aGlzLT5mcmFnbWVudAotICAgICAgICAmJiBvdGhlci5ob3N0ID09IHRoaXMtPmhvc3QKLSAg
ICAgICAgJiYgb3RoZXIucGFzc3dvcmQgPT0gdGhpcy0+cGFzc3dvcmQKLSAgICAgICAgJiYgb3Ro
ZXIucGF0aCA9PSB0aGlzLT5wYXRoCi0gICAgICAgICYmIG90aGVyLnBvcnQgPT0gdGhpcy0+cG9y
dAotICAgICAgICAmJiBvdGhlci5xdWVyeVRyYW5zZm9ybSA9PSB0aGlzLT5xdWVyeVRyYW5zZm9y
bQotICAgICAgICAmJiBvdGhlci5zY2hlbWUgPT0gdGhpcy0+c2NoZW1lCi0gICAgICAgICYmIG90
aGVyLnVzZXJuYW1lID09IHRoaXMtPnVzZXJuYW1lOwotfQotCiB2b2lkIFJlZGlyZWN0QWN0aW9u
OjpVUkxUcmFuc2Zvcm1BY3Rpb246OnNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mIHZlY3Rvcikg
Y29uc3QKIHsKICAgICB1aW50OF90IGhhc0ZyYWdtZW50ID0gISFmcmFnbWVudDsKQEAgLTcwNywx
MiArNjc3LDYgQEAgYXV0byBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVy
eVRyYW5zZm9ybTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4KICAgICB9OwogfQogCi1ib29sIFJl
ZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpvcGVyYXRv
cj09KGNvbnN0IFF1ZXJ5VHJhbnNmb3JtJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gb3Ro
ZXIuYWRkT3JSZXBsYWNlUGFyYW1zID09IHRoaXMtPmFkZE9yUmVwbGFjZVBhcmFtcwotICAgICAg
ICAmJiBvdGhlci5yZW1vdmVQYXJhbXMgPT0gdGhpcy0+cmVtb3ZlUGFyYW1zOwotfQotCiB2b2lk
IFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpzZXJp
YWxpemUoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpIGNvbnN0CiB7CiAgICAgYXV0byBiZWdpbklu
ZGV4ID0gdmVjdG9yLnNpemUoKTsKQEAgLTc4OCwxMyArNzUyLDYgQEAgYXV0byBSZWRpcmVjdEFj
dGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpRdWVyeVRyYW5zZm9ybTo6UXVlcnlLZXlWYWx1ZTo6
aXNvbGF0ZWQKICAgICB9OwogfQogCi1ib29sIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1B
Y3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpRdWVyeUtleVZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IFF1
ZXJ5S2V5VmFsdWUmIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBvdGhlci5rZXkgPT0gdGhp
cy0+a2V5Ci0gICAgICAgICYmIG90aGVyLnJlcGxhY2VPbmx5ID09IHRoaXMtPnJlcGxhY2VPbmx5
Ci0gICAgICAgICYmIG90aGVyLnZhbHVlID09IHRoaXMtPnZhbHVlOwotfQotCiB2b2lkIFJlZGly
ZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpRdWVyeUtleVZh
bHVlOjpzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpIGNvbnN0CiB7CiAgICAgY29u
c3RleHByIGF1dG8gaGVhZGVyTGVuZ3RoID0gc2l6ZW9mKHVpbnQzMl90KSArIHNpemVvZih1aW50
MzJfdCkgKyBzaXplb2YoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaAppbmRleCBhZDNiOTE3Y2I0
N2QyYzZmYWQwMjY2NTdmODYwYjM5YmNhNzhkMzA4Li5kZTkzY2JiMDJmYzE4ZDNlYTJlOGMzMzEw
YjNjZDRkZjM5ZDlkZTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgKQEAgLTc2LDcgKzc2LDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEFjdGlvbldpdGhvdXRNZXRhZGF0YSB7CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQWN0aW9uV2l0aFN0cmluZ01ldGFkYXRhIHsKICAgICBj
b25zdCBTdHJpbmcgc3RyaW5nOwogICAgIFQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4g
eyB7IHN0cmluZy5pc29sYXRlZENvcHkoKSB9IH07IH0KLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQWN0aW9uV2l0aFN0cmluZ01ldGFkYXRhJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIu
c3RyaW5nID09IHRoaXMtPnN0cmluZzsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBY3Rp
b25XaXRoU3RyaW5nTWV0YWRhdGEmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgdm9pZCBzZXJpYWxp
emUoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpIGNvbnN0IHsgc2VyaWFsaXplU3RyaW5nKHZlY3Rv
ciwgc3RyaW5nKTsgfQogICAgIHN0YXRpYyBUIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhf
dD4gc3BhbikgeyByZXR1cm4geyB7IGRlc2VyaWFsaXplU3RyaW5nKHNwYW4pIH0gfTsgfQogICAg
IHN0YXRpYyBzaXplX3Qgc2VyaWFsaXplZExlbmd0aChTcGFuPGNvbnN0IHVpbnQ4X3Q+IHNwYW4p
IHsgcmV0dXJuIHN0cmluZ1NlcmlhbGl6ZWRMZW5ndGgoc3Bhbik7IH0KQEAgLTk3LDcgKzk3LDcg
QEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIE1vZGlmeUhlYWRlcnNBY3Rpb24gewogCiAgICAgICAg
ICAgICB1aW50MzJfdCBoYXNoKCkgY29uc3QgeyByZXR1cm4gcGFpckludEhhc2goaGVhZGVyLmhh
c2goKSwgdmFsdWUuaGFzaCgpKTsgfQogICAgICAgICAgICAgQXBwZW5kT3BlcmF0aW9uIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5p
c29sYXRlZENvcHkoKSB9OyB9Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXBw
ZW5kT3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIuaGVhZGVyID09IHRoaXMt
PmhlYWRlciAmJiBvdGhlci52YWx1ZSA9PSB0aGlzLT52YWx1ZTsgfQorICAgICAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEFwcGVuZE9wZXJhdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKICAg
ICAgICAgfTsKICAgICAgICAgc3RydWN0IFNldE9wZXJhdGlvbiB7CiAgICAgICAgICAgICBTdHJp
bmcgaGVhZGVyOwpAQCAtMTA1LDE0ICsxMDUsMTQgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIE1v
ZGlmeUhlYWRlcnNBY3Rpb24gewogCiAgICAgICAgICAgICB1aW50MzJfdCBoYXNoKCkgY29uc3Qg
eyByZXR1cm4gcGFpckludEhhc2goaGVhZGVyLmhhc2goKSwgdmFsdWUuaGFzaCgpKTsgfQogICAg
ICAgICAgICAgU2V0T3BlcmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgaGVh
ZGVyLmlzb2xhdGVkQ29weSgpLCB2YWx1ZS5pc29sYXRlZENvcHkoKSB9OyB9Ci0gICAgICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2V0T3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gb3RoZXIuaGVhZGVyID09IHRoaXMtPmhlYWRlciAmJiBvdGhlci52YWx1ZSA9PSB0aGlzLT52
YWx1ZTsgfQorICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNldE9wZXJhdGlvbiYp
IGNvbnN0ID0gZGVmYXVsdDsKICAgICAgICAgfTsKICAgICAgICAgc3RydWN0IFJlbW92ZU9wZXJh
dGlvbiB7CiAgICAgICAgICAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgICAgICAgICB1aW50MzJf
dCBoYXNoKCkgY29uc3QgeyByZXR1cm4gaGVhZGVyLmhhc2goKTsgfQogICAgICAgICAgICAgUmVt
b3ZlT3BlcmF0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgaGVhZGVyLmlzb2xh
dGVkQ29weSgpIH07IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW1vdmVP
cGVyYXRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5oZWFkZXIgPT0gdGhpcy0+aGVh
ZGVyOyB9CisgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVtb3ZlT3BlcmF0aW9u
JikgY29uc3QgPSBkZWZhdWx0OwogICAgICAgICB9OwogICAgICAgICB1c2luZyBPcGVyYXRpb25W
YXJpYW50ID0gc3RkOjp2YXJpYW50PEFwcGVuZE9wZXJhdGlvbiwgU2V0T3BlcmF0aW9uLCBSZW1v
dmVPcGVyYXRpb24+OwogICAgICAgICBPcGVyYXRpb25WYXJpYW50IG9wZXJhdGlvbjsKQEAgLTEy
MCw3ICsxMjAsNyBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgTW9kaWZ5SGVhZGVyc0FjdGlvbiB7
CiAgICAgICAgIHVpbnQzMl90IGhhc2goKSBjb25zdCB7IHJldHVybiBWYXJpYW50SGFzaGVyOjpo
YXNoKG9wZXJhdGlvbik7IH0KICAgICAgICAgc3RhdGljIEV4cGVjdGVkPE1vZGlmeUhlYWRlcklu
Zm8sIHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2UoY29uc3QgSlNPTjo6VmFsdWUmKTsKICAgICAgICAg
TW9kaWZ5SGVhZGVySW5mbyBpc29sYXRlZENvcHkoKSBjb25zdDsKLSAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IE1vZGlmeUhlYWRlckluZm8mKSBjb25zdDsKKyAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IE1vZGlmeUhlYWRlckluZm8mKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgICAg
IHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwogICAgICAgICBzdGF0aWMg
TW9kaWZ5SGVhZGVySW5mbyBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKICAgICAg
ICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4pOwpA
QCAtMTQ1LDcgKzE0NSw3IEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBNb2RpZnlIZWFkZXJzQWN0
aW9uIHsKICAgICB1aW50MzJfdCBoYXNoKCkgY29uc3QgeyByZXR1cm4gcGFpckludEhhc2goVmVj
dG9ySGFzaGVyOjpoYXNoKHJlcXVlc3RIZWFkZXJzKSwgVmVjdG9ySGFzaGVyOjpoYXNoKHJlc3Bv
bnNlSGVhZGVycykpOyB9CiAgICAgc3RhdGljIEV4cGVjdGVkPE1vZGlmeUhlYWRlcnNBY3Rpb24s
IHN0ZDo6ZXJyb3JfY29kZT4gcGFyc2UoY29uc3QgSlNPTjo6T2JqZWN0Jik7CiAgICAgTW9kaWZ5
SGVhZGVyc0FjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgTW9kaWZ5SGVhZGVyc0FjdGlvbiYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBNb2RpZnlIZWFkZXJzQWN0aW9uJikgY29uc3QgPSBkZWZhdWx0OwogICAgIHZvaWQgc2Vy
aWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0OwogICAgIHN0YXRpYyBNb2RpZnlIZWFkZXJz
QWN0aW9uIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwogICAgIHN0YXRpYyBzaXpl
X3Qgc2VyaWFsaXplZExlbmd0aChTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTE1OCwxNCArMTU4
LDE0IEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAKICAgICAgICAg
dWludDMyX3QgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIGV4dGVuc2lvblBhdGguaGFzaCgpOyB9CiAg
ICAgICAgIEV4dGVuc2lvblBhdGhBY3Rpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4g
eyBleHRlbnNpb25QYXRoLmlzb2xhdGVkQ29weSgpIH07IH0KLSAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEV4dGVuc2lvblBhdGhBY3Rpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhl
ci5leHRlbnNpb25QYXRoID09IHRoaXMtPmV4dGVuc2lvblBhdGg7IH0KKyAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEV4dGVuc2lvblBhdGhBY3Rpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiAg
ICAgfTsKICAgICBzdHJ1Y3QgUmVnZXhTdWJzdGl0dXRpb25BY3Rpb24gewogICAgICAgICBTdHJp
bmcgcmVnZXhTdWJzdGl0dXRpb247CiAKICAgICAgICAgdWludDMyX3QgaGFzaCgpIGNvbnN0IHsg
cmV0dXJuIHJlZ2V4U3Vic3RpdHV0aW9uLmhhc2goKTsgfQogICAgICAgICBSZWdleFN1YnN0aXR1
dGlvbkFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHJlZ2V4U3Vic3RpdHV0
aW9uLmlzb2xhdGVkQ29weSgpIH07IH0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
Z2V4U3Vic3RpdHV0aW9uQWN0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIucmVnZXhT
dWJzdGl0dXRpb24gPT0gdGhpcy0+cmVnZXhTdWJzdGl0dXRpb247IH0KKyAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlZ2V4U3Vic3RpdHV0aW9uQWN0aW9uJikgY29uc3QgPSBkZWZhdWx0
OwogICAgIH07CiAgICAgc3RydWN0IFVSTFRyYW5zZm9ybUFjdGlvbiB7CiAgICAgICAgIHN0cnVj
dCBRdWVyeVRyYW5zZm9ybSB7CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RydWN0IFdFQkNPUkVfRVhQ
T1JUIFJlZGlyZWN0QWN0aW9uIHsKICAgICAgICAgICAgICAgICB1aW50MzJfdCBoYXNoKCkgY29u
c3QgeyByZXR1cm4gY29tcHV0ZUhhc2goa2V5LCByZXBsYWNlT25seSwgdmFsdWUpOyB9CiAgICAg
ICAgICAgICAgICAgc3RhdGljIEV4cGVjdGVkPFF1ZXJ5S2V5VmFsdWUsIHN0ZDo6ZXJyb3JfY29k
ZT4gcGFyc2UoY29uc3QgSlNPTjo6VmFsdWUmKTsKICAgICAgICAgICAgICAgICBRdWVyeUtleVZh
bHVlIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBRdWVyeUtleVZhbHVlJikgY29uc3Q7CisgICAgICAgICAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFF1ZXJ5S2V5VmFsdWUmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgICAgICAg
ICAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgICAgICAg
ICAgICAgc3RhdGljIFF1ZXJ5S2V5VmFsdWUgZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90
Pik7CiAgICAgICAgICAgICAgICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48
Y29uc3QgdWludDhfdD4pOwpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9S
VCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgICAgICAgICB1aW50MzJfdCBoYXNoKCkgY29uc3QgeyBy
ZXR1cm4gY29tcHV0ZUhhc2goVmVjdG9ySGFzaGVyOjpoYXNoKGFkZE9yUmVwbGFjZVBhcmFtcyks
IHJlbW92ZVBhcmFtcyk7IH0KICAgICAgICAgICAgIHN0YXRpYyBFeHBlY3RlZDxRdWVyeVRyYW5z
Zm9ybSwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKICAgICAg
ICAgICAgIFF1ZXJ5VHJhbnNmb3JtIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgICAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFF1ZXJ5VHJhbnNmb3JtJikgY29uc3Q7CisgICAgICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVlcnlUcmFuc2Zvcm0mKSBjb25zdCA9IGRlZmF1bHQ7
CiAgICAgICAgICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mKSBjb25zdDsKICAg
ICAgICAgICAgIHN0YXRpYyBRdWVyeVRyYW5zZm9ybSBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVp
bnQ4X3Q+KTsKICAgICAgICAgICAgIHN0YXRpYyBzaXplX3Qgc2VyaWFsaXplZExlbmd0aChTcGFu
PGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTIwOSw3ICsyMDksNyBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBP
UlQgUmVkaXJlY3RBY3Rpb24gewogICAgICAgICB1aW50MzJfdCBoYXNoKCkgY29uc3QgeyByZXR1
cm4gY29tcHV0ZUhhc2goZnJhZ21lbnQuaGFzaCgpLCBob3N0Lmhhc2goKSwgcGFzc3dvcmQuaGFz
aCgpLCBwYXRoLmhhc2goKSwgcG9ydCwgVmFyaWFudEhhc2hlcjo6aGFzaChxdWVyeVRyYW5zZm9y
bSksIHNjaGVtZS5oYXNoKCksIHVzZXJuYW1lLmhhc2goKSk7IH0KICAgICAgICAgc3RhdGljIEV4
cGVjdGVkPFVSTFRyYW5zZm9ybUFjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBK
U09OOjpPYmplY3QmKTsKICAgICAgICAgVVJMVHJhbnNmb3JtQWN0aW9uIGlzb2xhdGVkQ29weSgp
IGNvbnN0OwotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMVHJhbnNmb3JtQWN0aW9u
JikgY29uc3Q7CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkxUcmFuc2Zvcm1BY3Rp
b24mKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50
OF90PiYpIGNvbnN0OwogICAgICAgICBzdGF0aWMgVVJMVHJhbnNmb3JtQWN0aW9uIGRlc2VyaWFs
aXplKFNwYW48Y29uc3QgdWludDhfdD4pOwogICAgICAgICBzdGF0aWMgc2l6ZV90IHNlcmlhbGl6
ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90Pik7CkBAIC0yMjAsNyArMjIwLDcgQEAgc3RydWN0
IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKIAogICAgICAgICB1aW50MzJfdCBoYXNo
KCkgY29uc3QgeyByZXR1cm4gdXJsLmhhc2goKTsgfQogICAgICAgICBVUkxBY3Rpb24gaXNvbGF0
ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyB1cmwuaXNvbGF0ZWRDb3B5KCkgfTsgfQotICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMQWN0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
b3RoZXIudXJsID09IHRoaXMtPnVybDsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VVJMQWN0aW9uJikgY29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAKICAgICBlbnVtIGNsYXNzIEhh
c2hUYWJsZVR5cGUgOiB1aW50OF90IHsgRW1wdHksIERlbGV0ZWQsIEZ1bGwgfSBoYXNoVGFibGVU
eXBlOwpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBSZWRpcmVjdEFj
dGlvbiB7CiAKICAgICBzdGF0aWMgRXhwZWN0ZWQ8UmVkaXJlY3RBY3Rpb24sIHN0ZDo6ZXJyb3Jf
Y29kZT4gcGFyc2UoY29uc3QgSlNPTjo6T2JqZWN0Jik7CiAgICAgUmVkaXJlY3RBY3Rpb24gaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZGlyZWN0QWN0
aW9uJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZGlyZWN0QWN0aW9uJikg
Y29uc3QgPSBkZWZhdWx0OwogICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNv
bnN0OwogICAgIHN0YXRpYyBSZWRpcmVjdEFjdGlvbiBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVp
bnQ4X3Q+KTsKICAgICBzdGF0aWMgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1
aW50OF90Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblJ1bGUuaAppbmRleCBjNGJjMWYwMDg4NTA4NWZjYjIxMDUwMzk4M2Fm
NjE4YzM0MGI2MDUzLi40MjQ2NjBhZTdlYWU1Y2IyMWFkYjFiZmJhMjc5NTA1NGMwOTMyMjkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25SdWxlLmgKQEAgLTY5LDE1ICs2OSw3IEBAIHN0cnVjdCBUcmlnZ2VyIHsKICAgICAg
ICAgICAgICYmIGNvbmRpdGlvbnMuaXNFbXB0eSgpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUcmlnZ2VyJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1
cmxGaWx0ZXIgPT0gb3RoZXIudXJsRmlsdGVyCi0gICAgICAgICAgICAmJiB1cmxGaWx0ZXJJc0Nh
c2VTZW5zaXRpdmUgPT0gb3RoZXIudXJsRmlsdGVySXNDYXNlU2Vuc2l0aXZlCi0gICAgICAgICAg
ICAmJiB0b3BVUkxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUgPT0gb3RoZXIudG9wVVJMRmlsdGVySXND
YXNlU2Vuc2l0aXZlCi0gICAgICAgICAgICAmJiBmcmFtZVVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2
ZSA9PSBvdGhlci5mcmFtZVVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZQotICAgICAgICAgICAgJiYg
ZmxhZ3MgPT0gb3RoZXIuZmxhZ3MKLSAgICAgICAgICAgICYmIGNvbmRpdGlvbnMgPT0gb3RoZXIu
Y29uZGl0aW9uczsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyaWdnZXImKSBj
b25zdCA9IGRlZmF1bHQ7CiB9OwogCiBzdHJ1Y3QgVHJpZ2dlckhhc2ggewpAQCAtMTIxLDggKzEx
Myw3IEBAIHN0cnVjdCBBY3Rpb24gewogICAgIEFjdGlvbihBY3Rpb25EYXRhJiYgZGF0YSkKICAg
ICAgICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQWN0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9kYXRhID09IG90aGVyLm1fZGF0
YTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBY3Rpb24mIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBY3Rp
b24mKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBjb25zdCBBY3Rpb25EYXRhJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKQEAgLTE1NywxMCArMTQ4LDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIHsgbV90cmlnZ2VyLmlzb2xhdGVkQ29weSgpLCBtX2FjdGlvbi5p
c29sYXRlZENvcHkoKSB9OwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29udGVu
dEV4dGVuc2lvblJ1bGUmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHJp
Z2dlciA9PSBvdGhlci5tX3RyaWdnZXIgJiYgbV9hY3Rpb24gPT0gb3RoZXIubV9hY3Rpb247Ci0g
ICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb250ZW50RXh0ZW5zaW9uUnVsZSYpIGNv
bnN0ID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICBjb25zdCBUcmlnZ2VyIG1fdHJpZ2dlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU5vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQU5vZGUuaAppbmRleCBlYTZjNDdj
MDdiMmQ3OWUwZGE2NTBiM2VlMjIyYjQzMjdhNTYzMzg2Li5iN2I4N2I1NDhhNmI4NmM1NTNiMDRj
ZTNlNmUyODhkYTM2MTg2ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkFOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
REZBTm9kZS5oCkBAIC01NCwxMCArNTQsOSBAQCBwdWJsaWM6CiAKICAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENvbnN0UmFuZ2VJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVCgmZGZhICA9PSAmb3RoZXIuZGZhKTsKKyAgICAgICAgICAgIEFT
U0VSVCgmZGZhID09ICZvdGhlci5kZmEpOwogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uID09
IG90aGVyLnBvc2l0aW9uOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBDb25zdFJhbmdlSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQogCiAgICAgICAgIENvbnN0UmFuZ2VJdGVyYXRvciYgb3BlcmF0b3IrKygpCiAgICAg
ICAgIHsKQEAgLTk4LDcgKzk3LDYgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUKCZkZmEg
ID09ICZvdGhlci5kZmEpOwogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uID09IG90aGVyLnBv
c2l0aW9uOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSYW5nZUl0
ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAg
ICAgICBSYW5nZUl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSGFzaGFibGVBY3Rpb25MaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9IYXNoYWJsZUFjdGlvbkxpc3QuaAppbmRl
eCA4ODc1NzAzZTE5ZWQ5NDg2MWI0YzA3ODI2MDg1NmE3MDk0ZTFjMzBiLi40MDYwODIyNTU3OTFh
N2NkYmVhZmQ2NTQ5NDJmZWQ5M2U1OWEwMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9IYXNoYWJsZUFjdGlvbkxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9IYXNoYWJsZUFjdGlvbkxpc3QuaApAQCAtNTgsMTEgKzU4LDYg
QEAgc3RydWN0IEhhc2hhYmxlQWN0aW9uTGlzdCB7CiAgICAgICAgIHJldHVybiBzdGF0ZSA9PSBv
dGhlci5zdGF0ZSAmJiBhY3Rpb25zID09IG90aGVyLmFjdGlvbnM7CiAgICAgfQogCi0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEhhc2hhYmxlQWN0aW9uTGlzdCYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCiAgICAgVmVjdG9y
PHVpbnQ2NF90PiBhY3Rpb25zOwogICAgIHVuc2lnbmVkIGhhc2g7CiAgICAgZW51bSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkFOb2Rl
QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZB
Tm9kZUJ1aWxkZXIuaAppbmRleCBlOWRkNmIzMmQ0NWRmNWZjMjk3Yzc2NGNjOWIyZTE3YmRhMzNj
ZTJlLi43YmUzNTdlMTAyMDMzNmMyYTgwYzg4N2JkYjFiMzBkNjExZTdjY2I3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFibGVORkFOb2RlQnVpbGRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5v
ZGVCdWlsZGVyLmgKQEAgLTk1LDcgKzk1LDYgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gdGhpcy0+aXNFbmQgPT0gb3RoZXIuaXNFbmQ7CiAgICAgICAgIH0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZha2VSYW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAgICAgRmFrZVJhbmdlSXRlcmF0b3Ig
b3BlcmF0b3IrKygpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlzRW5kID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL011dGFibGVSYW5nZUxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL011dGFibGVSYW5nZUxpc3QuaApp
bmRleCA5YjIwNjg3YjhhNTFlYzg4ZDMzMGYxNWQ1NmZkMDZkZGQ0MDc3MWI5Li4zNDFiOTllZTc5
ODQ1ZDBmNTlkMTI4NTk3MTEyM2NlY2EwZTJlNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2VMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdlTGlzdC5oCkBAIC01OCw3ICs1OCw2IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gYXRFbmQgPT0gb3RoZXIuYXRFbmQ7CiAg
ICAgICAgICAgICByZXR1cm4gaW5kZXggPT0gb3RoZXIuaW5kZXg7CiAgICAgICAgIH0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgICAgIENvbnN0SXRlcmF0b3ImIG9wZXJh
dG9yKysoKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ORkFUb0RGQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9O
RkFUb0RGQS5jcHAKaW5kZXggYjA0YjUyMWQzYWRlZDEzYWFkOWM3NTc4MjNiZDA1MjI5MTYwMmNi
Ni4uNjgxNjViMmRmNTJlZmE3NzEwMDY1ZDA3YWM4ODIyYTM2Y2E0MWIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcApAQCAtMTYyLDEwICsxNjIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGZhc3RGcmVlKG1fdW5pcXVlTm9kZUlkU2V0QnVmZmVyKTsK
ICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5pcXVlTm9kZUlkU2V0JiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3VuaXF1ZU5vZGVJZFNldEJ1ZmZlciA9
PSBvdGhlci5tX3VuaXF1ZU5vZGVJZFNldEJ1ZmZlcjsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFVuaXF1ZU5vZGVJZFNldCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBOb2RlSWRTZXQmIG90aGVyKSBjb25zdAogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuaAppbmRleCBhOTY5
YjU0MzVkYTg3NWIwOTdiMDVkM2E3MjgzNjNjZDE4ZjkxZTdlLi5kOGEwNmM3MWU4N2Q5NWU0ZDVh
OWZkYTBlZDg3YjhmZGMzMGVlMzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5oCkBAIC05MCw3ICs5MCw2IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIEFTU0VSVCgmc2VyaWFsaXplZE5GQSA9PSAmb3RoZXIuc2VyaWFsaXplZE5GQSk7CiAg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gPT0gb3RoZXIucG9zaXRpb247CiAgICAgICAgIH0K
LSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbnN0VGFyZ2V0SXRlcmF0b3ImIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgICAgIENvbnN0VGFy
Z2V0SXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7CkBAIC0xMTcsNyArMTE2LDYgQEAg
cHVibGljOgogICAgICAgICAgICAgQVNTRVJUKCZzZXJpYWxpemVkTkZBID09ICZvdGhlci5zZXJp
YWxpemVkTkZBKTsKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbiA9PSBvdGhlci5wb3NpdGlv
bjsKICAgICAgICAgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29uc3RSYW5nZUl0
ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAg
ICAgICBDb25zdFJhbmdlSXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgKaW5kZXggZjA2MmVmY2U3MmUzMmZlYmY4NmJi
MjNjNGJjZTZiNzhjMmRhODM4My4uYzdiMDI2NmQ3MmExZmZhZTkwZTJjYTVmOTEwODI0YjQwODQy
MTVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVGVybS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0uaApAQCAtMTU4LDEy
ICsxNTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIFdURjo6Yml0Q291bnQobV9j
aGFyYWN0ZXJzWzBdKSArIFdURjo6Yml0Q291bnQobV9jaGFyYWN0ZXJzWzFdKTsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENoYXJhY3RlclNldCYg
b3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBvdGhlci5tX2ludmVy
dGVkID09IG1faW52ZXJ0ZWQKLSAgICAgICAgICAgICAgICAmJiBvdGhlci5tX2NoYXJhY3RlcnNb
MF0gPT0gbV9jaGFyYWN0ZXJzWzBdCi0gICAgICAgICAgICAgICAgJiYgb3RoZXIubV9jaGFyYWN0
ZXJzWzFdID09IG1fY2hhcmFjdGVyc1sxXTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ2hhcmFjdGVyU2V0JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdAogICAgICAgICB7CkBAIC0xNzgsMTAgKzE3Myw3IEBAIHByaXZh
dGU6CiAgICAgc3RydWN0IEdyb3VwIHsKICAgICAgICAgVmVjdG9yPFRlcm0+IHRlcm1zOwogCi0g
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcm91cCYgb3RoZXIpIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBvdGhlci50ZXJtcyA9PSB0ZXJtczsKLSAgICAgICAgfQor
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR3JvdXAmKSBjb25zdCA9IGRlZmF1bHQ7CiAK
ICAgICAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggN2MzODU4
YmI2NDdiMjk0OWQ2NmVmODhmMDQzM2VjNWQ3NGQ4NTg2MS4uYzUxZGEwODBjZmYyOTM1ZGNhNmE1
ZDY2MzBjNjM5NWU3N2U1MDlhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTE1MTQsMTQgKzE1MTQsMTQgQEAgc3RhdGlj
IEVsZW1lbnQqIHN0eWxlRWxlbWVudEZvck5vZGUoTm9kZSogbm9kZSkKIHN0YXRpYyBSZWY8Q1NT
VmFsdWU+IHZhbHVlRm9yUG9zaXRpb24oY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBM
ZW5ndGhQb2ludCYgcG9zaXRpb24pCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOwotICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlRm9yTGVuZ3RoKHBvc2l0aW9uLngoKSwgc3R5bGUpKTsKLSAgICBsaXN0LT5hcHBlbmQo
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChwb3NpdGlvbi55KCksIHN0eWxlKSk7Cisg
ICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24u
eCwgc3R5bGUpKTsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxl
bmd0aChwb3NpdGlvbi55LCBzdHlsZSkpOwogICAgIHJldHVybiBsaXN0OwogfQogCiBzdGF0aWMg
UmVmPENTU1ZhbHVlPiB2YWx1ZUZvclBvc2l0aW9uT3JBdXRvKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgTGVuZ3RoUG9pbnQmIHBvc2l0aW9uKQogewotICAgIGlmIChwb3NpdGlvbi54
KCkuaXNBdXRvKCkgJiYgcG9zaXRpb24ueSgpLmlzQXV0bygpKQorICAgIGlmIChwb3NpdGlvbi54
LmlzQXV0bygpICYmIHBvc2l0aW9uLnkuaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwog
CiAgICAgcmV0dXJuIHZhbHVlRm9yUG9zaXRpb24oc3R5bGUsIHBvc2l0aW9uKTsKQEAgLTE5MTcs
NyArMTkxNyw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWVMaXN0PiBjb250ZW50VG9DU1NWYWx1ZShj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byogY29udGVudERhdGEgPSBzdHls
ZS5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+
bmV4dCgpKSB7CiAgICAgICAgIGlmIChpczxDb3VudGVyQ29udGVudERhdGE+KCpjb250ZW50RGF0
YSkpCi0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRv
d25jYXN0PENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5jb3VudGVyKCkuaWRlbnRp
ZmllcigpLCBDU1NVbml0VHlwZTo6Q1NTX0NPVU5URVJfTkFNRSkpOworICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShkb3duY2FzdDxDb3VudGVyQ29udGVu
dERhdGE+KCpjb250ZW50RGF0YSkuY291bnRlcigpLmlkZW50aWZpZXIsIENTU1VuaXRUeXBlOjpD
U1NfQ09VTlRFUl9OQU1FKSk7CiAgICAgICAgIGVsc2UgaWYgKGlzPEltYWdlQ29udGVudERhdGE+
KCpjb250ZW50RGF0YSkpCiAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoZG93bmNhc3Q8SW1hZ2VD
b250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5pbWFnZSgpLmNzc1ZhbHVlKCkpOwogICAgICAgICBl
bHNlIGlmIChpczxUZXh0Q29udGVudERhdGE+KCpjb250ZW50RGF0YSkpCkBAIC0zMDM3LDcgKzMw
MzcsNyBAQCBSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
UHJvcGVydHlJblN0eWxlKGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CiAgICAgICAg
ICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzdHlsZS5jb2x1bW5XaWR0aCgpLCBz
dHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJTaXplOgotICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50YWJTaXplKCkud2lkdGhJblBpeGVs
cygxLjApLCBzdHlsZS50YWJTaXplKCkuaXNTcGFjZXMoKSA/IENTU1VuaXRUeXBlOjpDU1NfTlVN
QkVSIDogQ1NTVW5pdFR5cGU6OkNTU19QWCk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRhYlNpemUoKS53aWR0aEluUGl4ZWxzKDEuMCksIHN0eWxl
LnRhYlNpemUoKS5pc1NwYWNlcyA/IENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSIDogQ1NTVW5pdFR5
cGU6OkNTU19QWCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDdXJzb3I6IHsKICAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Q7CiAgICAgICAgICAgICBhdXRvKiBjdXJzb3Jz
ID0gc3R5bGUuY3Vyc29ycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAppbmRleCAxYjhjZWFh
NmUyNTFmZjhlYmU1N2JmNDAxNWZhMTJhMTZhNTE0ZWIwLi5iYTg0ZjMyZDQ2OGNiMDg4N2MxZDNj
NjdkZGRmZGMxMDhmMzM1ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaApAQCAtMTMzLDgg
KzEzMyw3IEBAIHB1YmxpYzoKICAgICBzdHJ1Y3QgVW5pY29kZVJhbmdlIHsKICAgICAgICAgVUNo
YXIzMiBmcm9tOwogICAgICAgICBVQ2hhcjMyIHRvOwotICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVW5pY29kZVJhbmdlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gZnJvbSA9PSBvdGhlci5m
cm9tICYmIHRvID09IG90aGVyLnRvOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBV
bmljb2RlUmFuZ2UmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQor
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVW5pY29kZVJhbmdlJikgY29uc3QgPSBkZWZh
dWx0OwogICAgIH07CiAKICAgICBib29sIHJhbmdlc01hdGNoQ29kZVBvaW50KFVDaGFyMzIpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYW1pbHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFtaWx5LmgKaW5kZXggODdhNjQ3ZDQ2OTc0ZWUyOWVm
NzJmMDk4ZDNhOWUwMmZhZGY3NTc4MC4uZTY5NDk0MjBkNzJkYTFhOTJmN2Q0MTRlNGY5YTFiYmVk
ZjgwNGQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYW1pbHkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhbWlseS5oCkBAIC00MSwxMSArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgQ1NTRm9udEZhbWlseSB7CiAgICAgU3RyaW5n
IGZhbWlseU5hbWU7CiAgICAgYm9vbCBmcm9tU3lzdGVtRm9udElEOworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDU1NGb250RmFtaWx5JikgY29uc3QgPSBkZWZhdWx0OwogfTsKIAotaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NGb250RmFtaWx5JiBhLCBjb25zdCBDU1NGb250RmFt
aWx5JiBiKQotewotICAgIHJldHVybiBhLmZhbWlseU5hbWUgPT0gYi5mYW1pbHlOYW1lICYmIGEu
ZnJvbVN5c3RlbUZvbnRJRCA9PSBiLmZyb21TeXN0ZW1Gb250SUQ7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAppbmRleCBjODczNDE0
NjE3YjgxZWM3YTExOWMxYzE0MzAwN2RkMGQ3MGQ3MWNhLi5mZjQ0OTI3NTgyZGIzNzdiYzQxNjM0
ODg5ODNlOGQ3MmNiM2U5ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBA
IC0zNSwxMSArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUmVzb2x2ZWRVUkwmIGEsIGNvbnN0IFJlc29sdmVkVVJMJiBiKQotewot
ICAgIHJldHVybiBhLnNwZWNpZmllZFVSTFN0cmluZyA9PSBiLnNwZWNpZmllZFVSTFN0cmluZyAm
JiBhLnJlc29sdmVkVVJMID09IGIucmVzb2x2ZWRVUkw7Ci19Ci0KIC8vIGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy9jc3MtdmFsdWVzLyN1cmwtbG9jYWwtdXJsLWZsYWcKIGJvb2wgUmVzb2x2ZWRV
Ukw6OmlzTG9jYWxVUkwoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKaW5k
ZXggNWI4ZWI4YTJlMWUxMzM0MzllOTU0NTczZGZmZjhhYmRmYWVkMGY5Ny4uMWU1MzlkZjI3MzRl
MGZlMmZiNjdjZGY4ZmJkZDE2N2VhNGUxNjBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1
ZS5oCkBAIC00Miw2ICs0Miw3IEBAIHN0cnVjdCBSZXNvbHZlZFVSTCB7CiAgICAgU3RyaW5nIHNw
ZWNpZmllZFVSTFN0cmluZzsKICAgICBVUkwgcmVzb2x2ZWRVUkw7CiAgICAgYm9vbCBpc0xvY2Fs
VVJMKCkgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc29sdmVkVVJMJikgY29u
c3QgPSBkZWZhdWx0OwogfTsKIAogY2xhc3MgQ1NTSW1hZ2VWYWx1ZSBmaW5hbCA6IHB1YmxpYyBD
U1NWYWx1ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oCmluZGV4IGJiMDdmNzdlYTZmZjU4N2Qw
NDBkNzcwOWYwMzEzNzQ5YjgwM2Q0ODQuLjI1Y2ZlOWIzOGNkZjhiY2UzMDI3MTA1OTE1YTAyNDMx
ZDZjY2Y3ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oCkBAIC00MSwxNSArNDEsNyBAQCBz
dHJ1Y3QgU3R5bGVQcm9wZXJ0eU1ldGFkYXRhIHsKIAogICAgIENTU1Byb3BlcnR5SUQgc2hvcnRo
YW5kSUQoKSBjb25zdDsKICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVQcm9w
ZXJ0eU1ldGFkYXRhJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3Byb3Bl
cnR5SUQgPT0gb3RoZXIubV9wcm9wZXJ0eUlECi0gICAgICAgICAgICAmJiBtX2lzU2V0RnJvbVNo
b3J0aGFuZCA9PSBvdGhlci5tX2lzU2V0RnJvbVNob3J0aGFuZAotICAgICAgICAgICAgJiYgbV9p
bmRleEluU2hvcnRoYW5kc1ZlY3RvciA9PSBvdGhlci5tX2luZGV4SW5TaG9ydGhhbmRzVmVjdG9y
Ci0gICAgICAgICAgICAmJiBtX2ltcG9ydGFudCA9PSBvdGhlci5tX2ltcG9ydGFudAotICAgICAg
ICAgICAgJiYgbV9pbXBsaWNpdCA9PSBvdGhlci5tX2ltcGxpY2l0Ci0gICAgICAgICAgICAmJiBt
X2luaGVyaXRlZCA9PSBvdGhlci5tX2luaGVyaXRlZDsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFN0eWxlUHJvcGVydHlNZXRhZGF0YSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAg
IHVpbnQxNl90IG1fcHJvcGVydHlJRCA6IDEwOwogICAgIHVpbnQxNl90IG1faXNTZXRGcm9tU2hv
cnRoYW5kIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlv
bnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKaW5kZXggZjVi
YzhjYTk2YjkwZDYwNTUwZGNhNTgyMWU4Mzg1NDlhNGIyZjdlZi4uZDZhMTJjYmI5NjkyMjczODU0
MmY0ZTA5NzQ3M2U3YjhlYzdkZTY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0xl
bmd0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9u
cy5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBMYXlvdXRTaXplIHNpemVGb3JMZW5ndGhTaXplKGNv
bnN0IExlbmd0aFNpemUmIGxlbmd0aCwgY29uc3QgTGF5b3V0U2l6ZSYgbWF4aW11bQogCiBMYXlv
dXRQb2ludCBwb2ludEZvckxlbmd0aFBvaW50KGNvbnN0IExlbmd0aFBvaW50JiBsZW5ndGhQb2lu
dCwgY29uc3QgTGF5b3V0U2l6ZSYgbWF4aW11bVZhbHVlKQogewotICAgIHJldHVybiB7IHZhbHVl
Rm9yTGVuZ3RoKGxlbmd0aFBvaW50LngoKSwgbWF4aW11bVZhbHVlLndpZHRoKCkpLCB2YWx1ZUZv
ckxlbmd0aChsZW5ndGhQb2ludC55KCksIG1heGltdW1WYWx1ZS5oZWlnaHQoKSkgfTsKKyAgICBy
ZXR1cm4geyB2YWx1ZUZvckxlbmd0aChsZW5ndGhQb2ludC54LCBtYXhpbXVtVmFsdWUud2lkdGgo
KSksIHZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LnksIG1heGltdW1WYWx1ZS5oZWlnaHQoKSkg
fTsKIH0KIAogRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6
ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBib3hTaXplKQpAQCAtMTMzLDcgKzEzMyw3
IEBAIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXplKGNvbnN0IExlbmd0aFNpemUmIGxl
bmd0aFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYKIAogRmxvYXRQb2ludCBmbG9hdFBvaW50Rm9yTGVu
Z3RoUG9pbnQoY29uc3QgTGVuZ3RoUG9pbnQmIGxlbmd0aFBvaW50LCBjb25zdCBGbG9hdFNpemUm
IGJveFNpemUpCiB7Ci0gICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQb2lu
dC54KCksIGJveFNpemUud2lkdGgoKSksIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQu
eSgpLCBib3hTaXplLmhlaWdodCgpKSB9OworICAgIHJldHVybiB7IGZsb2F0VmFsdWVGb3JMZW5n
dGgobGVuZ3RoUG9pbnQueCwgYm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChs
ZW5ndGhQb2ludC55LCBib3hTaXplLmhlaWdodCgpKSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNw
cAppbmRleCA3MzFiMmQ4ZDUwNGM4MmQzMzhhNDdlY2E2ODllYjk0ZmU5MzExNTdjLi5lMzhiZTQ4
ZDdiNTg2OTdlMDg3NjliM2M3YzdiNGJiMjY0NWUxOTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAKQEAgLTExNSw1NSArMTE1LDYgQEAgQ1NT
UGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgc2hlZXRCYXMKIHsKIH0KIAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1Bh
cnNlckNvbnRleHQmIGEsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGIpCi17Ci0gICAgcmV0dXJu
IGEuYmFzZVVSTCA9PSBiLmJhc2VVUkwKLSAgICAgICAgJiYgYS5jaGFyc2V0ID09IGIuY2hhcnNl
dAotICAgICAgICAmJiBhLm1vZGUgPT0gYi5tb2RlCi0gICAgICAgICYmIGEuZW5jbG9zaW5nUnVs
ZVR5cGUgPT0gYi5lbmNsb3NpbmdSdWxlVHlwZQotICAgICAgICAmJiBhLmlzSFRNTERvY3VtZW50
ID09IGIuaXNIVE1MRG9jdW1lbnQKLSAgICAgICAgJiYgYS5oYXNEb2N1bWVudFNlY3VyaXR5T3Jp
Z2luID09IGIuaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbgotICAgICAgICAmJiBhLmlzQ29udGVu
dE9wYXF1ZSA9PSBiLmlzQ29udGVudE9wYXF1ZQotICAgICAgICAmJiBhLnVzZVN5c3RlbUFwcGVh
cmFuY2UgPT0gYi51c2VTeXN0ZW1BcHBlYXJhbmNlCi0gICAgICAgICYmIGEuYWNjZW50Q29sb3JF
bmFibGVkID09IGIuYWNjZW50Q29sb3JFbmFibGVkCi0gICAgICAgICYmIGEuYXNwZWN0UmF0aW9F
bmFibGVkID09IGIuYXNwZWN0UmF0aW9FbmFibGVkCi0gICAgICAgICYmIGEuY29sb3JDb250cmFz
dEVuYWJsZWQgPT0gYi5jb2xvckNvbnRyYXN0RW5hYmxlZAotICAgICAgICAmJiBhLmNvbG9yRmls
dGVyRW5hYmxlZCA9PSBiLmNvbG9yRmlsdGVyRW5hYmxlZAotICAgICAgICAmJiBhLmNvbG9yTWl4
RW5hYmxlZCA9PSBiLmNvbG9yTWl4RW5hYmxlZAotICAgICAgICAmJiBhLmNvbnN0YW50UHJvcGVy
dGllc0VuYWJsZWQgPT0gYi5jb25zdGFudFByb3BlcnRpZXNFbmFibGVkCi0gICAgICAgICYmIGEu
Y29udGFpbm1lbnRFbmFibGVkID09IGIuY29udGFpbm1lbnRFbmFibGVkCi0gICAgICAgICYmIGEu
Y291bnRlclN0eWxlQXRSdWxlc0VuYWJsZWQgPT0gYi5jb3VudGVyU3R5bGVBdFJ1bGVzRW5hYmxl
ZAotICAgICAgICAmJiBhLmNvdW50ZXJTdHlsZUF0UnVsZUltYWdlU3ltYm9sc0VuYWJsZWQgPT0g
Yi5jb3VudGVyU3R5bGVBdFJ1bGVJbWFnZVN5bWJvbHNFbmFibGVkCi0gICAgICAgICYmIGEuY3Nz
Q29sb3I0ID09IGIuY3NzQ29sb3I0Ci0gICAgICAgICYmIGEuZGVmZXJyZWRDU1NQYXJzZXJFbmFi
bGVkID09IGIuZGVmZXJyZWRDU1NQYXJzZXJFbmFibGVkCi0gICAgICAgICYmIGEuaW5kaXZpZHVh
bFRyYW5zZm9ybVByb3BlcnRpZXNFbmFibGVkID09IGIuaW5kaXZpZHVhbFRyYW5zZm9ybVByb3Bl
cnRpZXNFbmFibGVkCi0jaWYgRU5BQkxFKE9WRVJGTE9XX1NDUk9MTElOR19UT1VDSCkKLSAgICAg
ICAgJiYgYS5sZWdhY3lPdmVyZmxvd1Njcm9sbGluZ1RvdWNoRW5hYmxlZCA9PSBiLmxlZ2FjeU92
ZXJmbG93U2Nyb2xsaW5nVG91Y2hFbmFibGVkCi0jZW5kaWYKLSAgICAgICAgJiYgYS5vdmVyc2Ny
b2xsQmVoYXZpb3JFbmFibGVkID09IGIub3ZlcnNjcm9sbEJlaGF2aW9yRW5hYmxlZAotICAgICAg
ICAmJiBhLnJlbGF0aXZlQ29sb3JTeW50YXhFbmFibGVkID09IGIucmVsYXRpdmVDb2xvclN5bnRh
eEVuYWJsZWQKLSAgICAgICAgJiYgYS5zY3JvbGxCZWhhdmlvckVuYWJsZWQgPT0gYi5zY3JvbGxC
ZWhhdmlvckVuYWJsZWQKLSAgICAgICAgJiYgYS5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQg
PT0gYi5zcHJpbmdUaW1pbmdGdW5jdGlvbkVuYWJsZWQKLSNpZiBFTkFCTEUoVEVYVF9BVVRPU0la
SU5HKQotICAgICAgICAmJiBhLnRleHRBdXRvc2l6aW5nRW5hYmxlZCA9PSBiLnRleHRBdXRvc2l6
aW5nRW5hYmxlZAotI2VuZGlmCi0jaWYgRU5BQkxFKENTU19UUkFOU0ZPUk1fU1RZTEVfT1BUSU1J
WkVEXzNEKQotICAgICAgICAmJiBhLnRyYW5zZm9ybVN0eWxlT3B0aW1pemVkM0RFbmFibGVkID09
IGIudHJhbnNmb3JtU3R5bGVPcHRpbWl6ZWQzREVuYWJsZWQKLSNlbmRpZgotICAgICAgICAmJiBh
LnVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgPT0gYi51c2VMZWdhY3lC
YWNrZ3JvdW5kU2l6ZVNob3J0aGFuZEJlaGF2aW9yCi0gICAgICAgICYmIGEuZm9jdXNWaXNpYmxl
RW5hYmxlZCA9PSBiLmZvY3VzVmlzaWJsZUVuYWJsZWQKLSAgICAgICAgJiYgYS5oYXNQc2V1ZG9D
bGFzc0VuYWJsZWQgPT0gYi5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQKLSAgICAgICAgJiYgYS5jYXNj
YWRlTGF5ZXJzRW5hYmxlZCA9PSBiLmNhc2NhZGVMYXllcnNFbmFibGVkCi0gICAgICAgICYmIGEu
Y29udGFpbmVyUXVlcmllc0VuYWJsZWQgPT0gYi5jb250YWluZXJRdWVyaWVzRW5hYmxlZAotICAg
ICAgICAmJiBhLm92ZXJmbG93Q2xpcEVuYWJsZWQgPT0gYi5vdmVyZmxvd0NsaXBFbmFibGVkCi0g
ICAgICAgICYmIGEuZ3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxl
ZCA9PSBiLmdyYWRpZW50UHJlbXVsdGlwbGllZEFscGhhSW50ZXJwb2xhdGlvbkVuYWJsZWQKLSAg
ICAgICAgJiYgYS5ncmFkaWVudEludGVycG9sYXRpb25Db2xvclNwYWNlc0VuYWJsZWQgPT0gYi5n
cmFkaWVudEludGVycG9sYXRpb25Db2xvclNwYWNlc0VuYWJsZWQKLSNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQotICAgICAgICAmJiBhLmF0dGFjaG1lbnRFbmFibGVkID09IGIuYXR0YWNo
bWVudEVuYWJsZWQKLSNlbmRpZgotICAgIDsKLX0KLQogdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIs
IGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgdWludDY0X3QgYml0cyA9
IGNvbnRleHQuaXNIVE1MRG9jdW1lbnQgICAgICAgICAgICAgICAgICA8PCAwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCmluZGV4IDhjMjM0ZGY0NjJlMzBl
ZTJjYzM4NjJjZTg3Y2EyODA4MWE5NTE4M2IuLmFlMjI5ZjNlMDIxOGE5ZGU2Mzk2OWQwODNiMmFi
YzA5M2QxNTc3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29u
dGV4dC5oCkBAIC05OCwxMSArOTgsOSBAQCBzdHJ1Y3QgQ1NTUGFyc2VyQ29udGV4dCB7CiAgICAg
V0VCQ09SRV9FWFBPUlQgQ1NTUGFyc2VyQ29udGV4dChjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVS
TCYgYmFzZVVSTCA9IFVSTCgpLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQgPSBlbXB0eVN0cmluZygp
KTsKICAgICBib29sIGlzUHJvcGVydHlSdW50aW1lRGlzYWJsZWQoQ1NTUHJvcGVydHlJRCkgY29u
c3Q7CiAgICAgUmVzb2x2ZWRVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3Q7Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlckNvbnRleHQmKSBjb25zdCA9IGRlZmF1
bHQ7CiB9OwogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYsIGNvbnN0
IENTU1BhcnNlckNvbnRleHQmKTsKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgYSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgYikgeyByZXR1cm4gIShhID09
IGIpOyB9Ci0KIHZvaWQgYWRkKEhhc2hlciYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKIAog
V0VCQ09SRV9FWFBPUlQgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgc3RyaWN0Q1NTUGFyc2VyQ29u
dGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJU
b2tlbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oCmluZGV4
IDg3NGI0NjM3N2QwNzJhYjcwYzEyMTIzZWI4MGU5NmI1NzRiMzc0NjkuLmIzYjMzYTE1MGMxZjQ1
NWQ0ZTQwYWI2YzhjMGU1ZWY1MjYxNTZkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlclRva2VuLmgKQEAgLTEwNSw4ICsxMDUsNyBAQCBwdWJsaWM6CiAKICAgICBDU1NQ
YXJzZXJUb2tlbihIYXNoVG9rZW5UeXBlLCBTdHJpbmdWaWV3KTsKIAotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDU1NQYXJzZXJUb2tlbiYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBDU1NQYXJzZXJUb2tlbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU1BhcnNlclRva2VuJikg
Y29uc3Q7CiAKICAgICAvLyBDb252ZXJ0cyBOdW1iZXJUb2tlbiB0byBEaW1lbnNpb25Ub2tlbi4K
ICAgICB2b2lkIGNvbnZlcnRUb0RpbWVuc2lvbldpdGhVbml0KFN0cmluZ1ZpZXcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCmluZGV4IGNiMTIwNjc1MGY4YmIxMTRhYzNlMDgwYjIz
ZGY0OTRmZDIxMDc0YjUuLmRjZDdlMzNhMGJhZWJhMDA2MWQ2MzM5YjNkNmQ4NDBiZTkzNWMyOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAKQEAgLTI5LDkgKzI5LDkgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi10ZW1wbGF0ZSBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVy
PFRyZWU+KGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7Ci10ZW1w
bGF0ZSBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyPCBTaGFkb3dJbmNsdWRpbmdUcmVlID4oY29u
c3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKLXRlbXBsYXRlIFBhcnRp
YWxPcmRlcmluZyB0cmVlT3JkZXI8Q29tcG9zZWRUcmVlPihjb25zdCBCb3VuZGFyeVBvaW50Jiwg
Y29uc3QgQm91bmRhcnlQb2ludCYpOwordGVtcGxhdGUgc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRy
ZWVPcmRlcjxUcmVlPihjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgQm91bmRhcnlQb2ludCYp
OwordGVtcGxhdGUgc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcjwgU2hhZG93SW5jbHVk
aW5nVHJlZSA+KGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7Cit0
ZW1wbGF0ZSBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oY29u
c3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKIAogc3RkOjpvcHRpb25h
bDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGUoTm9kZSYgbm9kZSkK
IHsKQEAgLTY2LDE2ICs2NiwxNiBAQCBzdGF0aWMgYm9vbCBpc09mZnNldEJlZm9yZUNoaWxkKENv
bnRhaW5lck5vZGUmIGNvbnRhaW5lciwgdW5zaWduZWQgb2Zmc2V0LCBOb2RlJgogCiAvLyBGSVhN
RTogT25jZSB3ZSBtb3ZlIHRvIEMrKzIwLCByZXBsYWNlIHdpdGggdGhlIEMrKzIwIDw9PiBvcGVy
YXRvci4KIC8vIEZJWE1FOiBUaGlzIGNvdWxkIHJldHVybiBzdGQ6OnN0cm9uZ19vcmRlcmluZyBp
ZiB3ZSBoYWQgdGhhdCwgb3IgdGhlIGVxdWl2YWxlbnQuCi1zdGF0aWMgUGFydGlhbE9yZGVyaW5n
IG9yZGVyKHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIpCitzdGF0aWMgc3RkOjpwYXJ0aWFsX29yZGVy
aW5nIG9yZGVyKHVuc2lnbmVkIGEsIHVuc2lnbmVkIGIpCiB7CiAgICAgaWYgKGEgPCBiKQotICAg
ICAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjpsZXNzOworICAgICAgICByZXR1cm4gc3RkOjpw
YXJ0aWFsX29yZGVyaW5nOjpsZXNzOwogICAgIGlmIChhID4gYikKLSAgICAgICAgcmV0dXJuIFBh
cnRpYWxPcmRlcmluZzo6Z3JlYXRlcjsKLSAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjplcXVp
dmFsZW50OworICAgICAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjpncmVhdGVyOwor
ICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxlbnQ7CiB9CiAKLXRlbXBs
YXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IEJv
dW5kYXJ5UG9pbnQmIGEsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGIpCit0ZW1wbGF0ZTxUcmVlVHlw
ZSB0cmVlVHlwZT4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBCb3VuZGFy
eVBvaW50JiBhLCBjb25zdCBCb3VuZGFyeVBvaW50JiBiKQogewogICAgIGlmIChhLmNvbnRhaW5l
ci5wdHIoKSA9PSBiLmNvbnRhaW5lci5wdHIoKSkKICAgICAgICAgcmV0dXJuIG9yZGVyKGEub2Zm
c2V0LCBiLm9mZnNldCk7CkBAIC04MywyMSArODMsMjEgQEAgdGVtcGxhdGU8VHJlZVR5cGUgdHJl
ZVR5cGU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgQm91bmRhcnlQb2ludCYgYSwg
Y28KICAgICBmb3IgKGF1dG8gYW5jZXN0b3IgPSBiLmNvbnRhaW5lci5wdHIoKTsgYW5jZXN0b3I7
ICkgewogICAgICAgICBhdXRvIG5leHRBbmNlc3RvciA9IHBhcmVudDx0cmVlVHlwZT4oKmFuY2Vz
dG9yKTsKICAgICAgICAgaWYgKG5leHRBbmNlc3RvciA9PSBhLmNvbnRhaW5lci5wdHIoKSkKLSAg
ICAgICAgICAgIHJldHVybiBpc09mZnNldEJlZm9yZUNoaWxkKCpuZXh0QW5jZXN0b3IsIGEub2Zm
c2V0LCAqYW5jZXN0b3IpID8gUGFydGlhbE9yZGVyaW5nOjpsZXNzIDogUGFydGlhbE9yZGVyaW5n
OjpncmVhdGVyOworICAgICAgICAgICAgcmV0dXJuIGlzT2Zmc2V0QmVmb3JlQ2hpbGQoKm5leHRB
bmNlc3RvciwgYS5vZmZzZXQsICphbmNlc3RvcikgPyBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6Omxl
c3MgOiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXI7CiAgICAgICAgIGFuY2VzdG9yID0g
bmV4dEFuY2VzdG9yOwogICAgIH0KIAogICAgIGZvciAoYXV0byBhbmNlc3RvciA9IGEuY29udGFp
bmVyLnB0cigpOyBhbmNlc3RvcjsgKSB7CiAgICAgICAgIGF1dG8gbmV4dEFuY2VzdG9yID0gcGFy
ZW50PHRyZWVUeXBlPigqYW5jZXN0b3IpOwogICAgICAgICBpZiAobmV4dEFuY2VzdG9yID09IGIu
Y29udGFpbmVyLnB0cigpKQotICAgICAgICAgICAgcmV0dXJuIGlzT2Zmc2V0QmVmb3JlQ2hpbGQo
Km5leHRBbmNlc3RvciwgYi5vZmZzZXQsICphbmNlc3RvcikgPyBQYXJ0aWFsT3JkZXJpbmc6Omdy
ZWF0ZXIgOiBQYXJ0aWFsT3JkZXJpbmc6Omxlc3M7CisgICAgICAgICAgICByZXR1cm4gaXNPZmZz
ZXRCZWZvcmVDaGlsZCgqbmV4dEFuY2VzdG9yLCBiLm9mZnNldCwgKmFuY2VzdG9yKSA/IHN0ZDo6
cGFydGlhbF9vcmRlcmluZzo6Z3JlYXRlciA6IHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6bGVzczsK
ICAgICAgICAgYW5jZXN0b3IgPSBuZXh0QW5jZXN0b3I7CiAgICAgfQogCiAgICAgcmV0dXJuIHRy
ZWVPcmRlcjx0cmVlVHlwZT4oYS5jb250YWluZXIsIGIuY29udGFpbmVyKTsKIH0KIAotUGFydGlh
bE9yZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUgdHlwZSwgY29uc3QgQm91bmRh
cnlQb2ludCYgYSwgY29uc3QgQm91bmRhcnlQb2ludCYgYikKK3N0ZDo6cGFydGlhbF9vcmRlcmlu
ZyB0cmVlT3JkZXJGb3JUZXN0aW5nKFRyZWVUeXBlIHR5cGUsIGNvbnN0IEJvdW5kYXJ5UG9pbnQm
IGEsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGIpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
Y2FzZSBUcmVlOgpAQCAtMTA4LDcgKzEwOCw3IEBAIFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXJG
b3JUZXN0aW5nKFRyZWVUeXBlIHR5cGUsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGEsIGNvbnN0CiAg
ICAgICAgIHJldHVybiB0cmVlT3JkZXI8Q29tcG9zZWRUcmVlPihhLCBiKTsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFBhcnRpYWxPcmRlcmluZzo6dW5vcmRl
cmVkOworICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OnVub3JkZXJlZDsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmgKaW5kZXggNTk2MTExMjM5YjAzNWJkMTdkMDNi
NzMzY2FkNjAxNTU1ZWZkYWYxYy4uNjlhODFjMWNhY2MwMThjMzA4ZmY2YzY5YjdkMmQ1YjBjMTk1
ZWQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oCkBAIC0zNiwxOSArMzYsMTggQEAg
c3RydWN0IEJvdW5kYXJ5UG9pbnQgewogICAgIEJvdW5kYXJ5UG9pbnQoUmVmPE5vZGU+JiYsIHVu
c2lnbmVkKTsKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0OwotfTsKIAotYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7Ci1i
b29sIG9wZXJhdG9yIT0oY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQm
KTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQm91bmRhcnlQb2ludCYpIGNvbnN0ID0gZGVm
YXVsdDsKK307CiAKLXRlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gUGFydGlhbE9yZGVyaW5nIHRy
ZWVPcmRlcihjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwordGVt
cGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyKGNv
bnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7CiAKIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4gbWFrZUJvdW5kYXJ5UG9pbnRCZWZvcmVO
b2RlKE5vZGUmKTsKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQb2ludD4g
bWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGUoTm9kZSYpOwogQm91bmRhcnlQb2ludCBtYWtlQm91
bmRhcnlQb2ludEJlZm9yZU5vZGVDb250ZW50cyhOb2RlJik7CiBCb3VuZGFyeVBvaW50IG1ha2VC
b3VuZGFyeVBvaW50QWZ0ZXJOb2RlQ29udGVudHMoTm9kZSYpOwogCi1XRUJDT1JFX0VYUE9SVCBQ
YXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyRm9yVGVzdGluZyhUcmVlVHlwZSwgY29uc3QgQm91bmRh
cnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6cGFy
dGlhbF9vcmRlcmluZyB0cmVlT3JkZXJGb3JUZXN0aW5nKFRyZWVUeXBlLCBjb25zdCBCb3VuZGFy
eVBvaW50JiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwogCiBpbmxpbmUgQm91bmRhcnlQb2ludDo6
Qm91bmRhcnlQb2ludChSZWY8Tm9kZT4mJiBjb250YWluZXIsIHVuc2lnbmVkIG9mZnNldCkKICAg
ICA6IGNvbnRhaW5lcihXVEZNb3ZlKGNvbnRhaW5lcikpCkBAIC02MSwxMSArNjAsNiBAQCBpbmxp
bmUgRG9jdW1lbnQmIEJvdW5kYXJ5UG9pbnQ6OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4g
Y29udGFpbmVyLT5kb2N1bWVudCgpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEJvdW5kYXJ5UG9pbnQmIGEsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGIpCi17Ci0gICAgcmV0dXJu
IGEuY29udGFpbmVyLnB0cigpID09IGIuY29udGFpbmVyLnB0cigpICYmIGEub2Zmc2V0ID09IGIu
b2Zmc2V0OwotfQotCiBpbmxpbmUgQm91bmRhcnlQb2ludCBtYWtlQm91bmRhcnlQb2ludEJlZm9y
ZU5vZGVDb250ZW50cyhOb2RlJiBub2RlKQogewogICAgIHJldHVybiB7IG5vZGUsIDAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRUcmVlQW5jZXN0b3JJdGVyYXRvci5oCmlu
ZGV4IGM2NjFiY2U1YzhmYzJmYWRlNmMxODY0MjU1ZjNkZGFjODA0NzBmMDcuLjZhNDJhY2U5NTAw
NTllN2RkZjRiOWU5ZjljNzliNTcxNTQ3NDVlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaApAQCAtNDEsOCArNDEsNyBAQCBwdWJs
aWM6CiAgICAgRWxlbWVudCYgb3BlcmF0b3IqKCkgeyByZXR1cm4gZ2V0KCk7IH0KICAgICBFbGVt
ZW50KiBvcGVyYXRvci0+KCkgeyByZXR1cm4gJmdldCgpOyB9CiAKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ29tcG9zZWRUcmVlQW5jZXN0b3JJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7IH0KLSAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgQ29tcG9zZWRUcmVlQW5jZXN0b3JJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudCAhPSBvdGhlci5tX2N1cnJlbnQ7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ29tcG9zZWRUcmVlQW5jZXN0b3JJdGVyYXRvciYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAg
IENvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2
ZXJzZVBhcmVudCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3Nl
ZFRyZWVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkVHJlZUl0ZXJhdG9y
LmgKaW5kZXggY2M0ZjIwMjU2ZjVlY2ZlNzZmMWJhNjE1NThkNjZmMmYyYTM1MDM1My4uZWE0OWU5
MTAzNGQzNmQ2NTYxMTAxODg2OTAyMmM1Mjc1MDVkNjE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2VkVHJlZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbXBvc2VkVHJlZUl0ZXJhdG9yLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgcHVibGljOgogICAgIE5v
ZGUqIG9wZXJhdG9yLT4oKSB7IHJldHVybiAmY3VycmVudCgpOyB9CiAKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQ29tcG9zZWRUcmVlSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBj
b250ZXh0KCkuaXRlcmF0b3IgPT0gb3RoZXIuY29udGV4dCgpLml0ZXJhdG9yOyB9Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IENvbXBvc2VkVHJlZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gY29udGV4dCgpLml0ZXJhdG9yICE9IG90aGVyLmNvbnRleHQoKS5pdGVyYXRvcjsgfQog
CiAgICAgQ29tcG9zZWRUcmVlSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJz
ZU5leHQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyYzdlMmQxYTM4NjQzNmVl
YTk1ODRiNTcwZmE2NjViYTk2ZmEzMzYyLi5lZjI2NTdlOGJjYWRkYzJmMDcyOGIxOTgwMjlmYTY1
ZTk4YjQ1MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEzMDQsNyArMTMwNCw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoVUNoYXIzMiBhLCBjb25zdCBVbmljb2RlQ29k
ZVBvaW50UmFuZ2UmIGIpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1BvdGVudGlhbEN1c3RvbUVs
ZW1lbnROYW1lQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKQogewotICAgIHN0YXRpYyBjb25z
dCBVbmljb2RlQ29kZVBvaW50UmFuZ2UgcmFuZ2VzW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBVbmljb2RlQ29kZVBvaW50UmFuZ2UgcmFuZ2VzW10gPSB7CiAgICAgICAgIHsgJy0nLCAnLicg
fSwKICAgICAgICAgeyAnMCcsICc5JyB9LAogICAgICAgICB7ICdfJywgJ18nIH0sCkBAIC0xMzIz
LDcgKzEzMjMsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNQb3RlbnRpYWxDdXN0b21FbGVtZW50
TmFtZUNoYXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlcikKICAgICAgICAgeyAweEZERjAsIDB4RkZG
RCB9LAogICAgICAgICB7IDB4MTAwMDAsIDB4RUZGRkYgfSwKICAgICB9OwotCiAgICAgQVNTRVJU
KHN0ZDo6aXNfc29ydGVkKHN0ZDo6YmVnaW4ocmFuZ2VzKSwgc3RkOjplbmQocmFuZ2VzKSkpOwog
ICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goc3RkOjpiZWdpbihyYW5nZXMpLCBzdGQ6OmVu
ZChyYW5nZXMpLCBjaGFyYWN0ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaAppbmRleCBkMWRkYjBmNzM3NTAxNTY0
NTk3YjBhMDIzNGUyYjQ2MjAxZDVkZTc1Li5lMDQ5NzAxNDliY2E4ODc4MzEyNTUyNDQzNWUwNzAz
YjMyOTg2MzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuZFRleHRE
ZXNjZW5kYW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuZFRl
eHREZXNjZW5kYW50SXRlcmF0b3IuaApAQCAtNDcsNyArNDcsNiBAQCBwdWJsaWM6CiAgICAgY29u
c3QgTm9kZSogb3BlcmF0b3ItPigpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9yJiBvdGhl
cikgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2RlcHRo
OyB9CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVwdGg7
IH0KQEAgLTI4OSwxMSArMjg4LDYgQEAgaW5saW5lIGJvb2wgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgRWxlbWVudEFuZFRleHREZXMKICAgICByZXR1
cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudCB8fCAoIW1fZGVwdGggJiYgIW90aGVyLm1f
ZGVwdGgpOwogfQogCi1pbmxpbmUgYm9vbCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRv
cjo6b3BlcmF0b3IhPShjb25zdCBFbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCiAvLyBFbGVt
ZW50QW5kVGV4dERlc2NlbmRhbnRSYW5nZQogCiBpbmxpbmUgRWxlbWVudEFuZFRleHREZXNjZW5k
YW50UmFuZ2U6OkVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlKGNvbnN0IENvbnRhaW5lck5v
ZGUmIHJvb3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q29udGV4dC5oCmluZGV4IDlkMDliMDg5YjNh
YzQ5NDNhMGQ5YTIyYzNkNjZlN2Y1NTA1NGRjMWYuLjhmMmQxOGQzYmJlY2ViNDc3MGYxODFlZTg1
MDJhNzFmZTBiYzM4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q29udGV4dC5oCkBAIC00Myw2
ICs0Myw4IEBAIHN0cnVjdCBFbGVtZW50Q29udGV4dCB7CiAKICAgICB+RWxlbWVudENvbnRleHQo
KSA9IGRlZmF1bHQ7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRWxlbWVudENvbnRleHQm
KSBjb25zdCA9IGRlZmF1bHQ7CisKICAgICBib29sIGlzU2FtZUVsZW1lbnQoY29uc3QgRWxlbWVu
dENvbnRleHQmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHdlYlBhZ2VJZGVu
dGlmaWVyID09IG90aGVyLndlYlBhZ2VJZGVudGlmaWVyICYmIGRvY3VtZW50SWRlbnRpZmllciA9
PSBvdGhlci5kb2N1bWVudElkZW50aWZpZXIgJiYgZWxlbWVudElkZW50aWZpZXIgPT0gb3RoZXIu
ZWxlbWVudElkZW50aWZpZXI7CkBAIC01MiwxMSArNTQsNiBAQCBzdHJ1Y3QgRWxlbWVudENvbnRl
eHQgewogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVs
ZW1lbnRDb250ZXh0PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFbGVtZW50Q29udGV4dCYgYSwgY29uc3QgRWxlbWVudENvbnRleHQmIGIpCi17
Ci0gICAgcmV0dXJuIGEuYm91bmRpbmdSZWN0ID09IGIuYm91bmRpbmdSZWN0ICYmIGEuaXNTYW1l
RWxlbWVudChiKTsKLX0KLQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRWxlbWVudENv
bnRleHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dERhdGEuaAppbmRleCA1MTE2ZTMyMDg5N2Y4ZGI1MjhiYjExNGI3OTY4MmU5ZGU2Y2RjZjhlLi4x
YjgxNTZlMDQ5OWE5NzQzYmE4MDJiZTE2MDczZjViMDBlMjNlNzU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudERhdGEuaApAQCAtNTAsNyArNTAsNiBAQCBwdWJsaWM6CiAgICAgQXR0cmlidXRlQ29uc3RJ
dGVyYXRvciYgb3BlcmF0b3IrKygpIHsgKyttX29mZnNldDsgcmV0dXJuICp0aGlzOyB9CiAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXR0cmlidXRlQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0OyB9Ci0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEF0dHJpYnV0ZUNvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQogCiBwcml2YXRlOgogICAgIGNvbnN0IEF0dHJpYnV0ZSog
bV9hcnJheTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydElkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaAppbmRl
eCAwNDZmY2ExNGIyNzFiNWQ3ZjA2MGU3NTY1MjQ2NDRjMmFjZDk0MzRjLi5jNWRkODYyZGM3MjA5
YzgzYmZjYjgwMjUyMjI5YWRlMjk0ZWY2ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnRJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0SWRlbnRpZmllci5oCkBAIC0zOCw2ICszOCw4IEBAIHN0cnVjdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXIgewogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpIGNvbnN0ID0gZGVmYXVsdDsKKwog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZXNzYWdl
UG9ydElkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CiAKQEAgLTQ2LDExICs0OCw2IEBAIHN0
cnVjdCBNZXNzYWdlUG9ydElkZW50aWZpZXIgewogI2VuZGlmCiB9OwogCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgYSwgY29uc3QgTWVzc2FnZVBv
cnRJZGVudGlmaWVyJiBiKQotewotICAgIHJldHVybiBhLnByb2Nlc3NJZGVudGlmaWVyID09IGIu
cHJvY2Vzc0lkZW50aWZpZXIgJiYgIGEucG9ydElkZW50aWZpZXIgPT0gYi5wb3J0SWRlbnRpZmll
cjsKLX0KLQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgTWVzc2FnZVBvcnRJZGVudGlm
aWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRl
eCA1MWUwYWNhMzQ0NDlmYzNjM2Q2NTliMjY0Y2Y4ODVhYjMzZjdmOGNkLi45YTYyYjg0NmQ0NWYx
ZDZkMTVhNzJkOTA5YzA2ZWNiOTFlMDdiYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yNzI4LDM1
ICsyNzI4LDM1IEBAIHN0YXRpYyBib29sIGlzU2libGluZ1N1YnNlcXVlbnQoY29uc3QgTm9kZSYg
c2libGluZ0EsIGNvbnN0IE5vZGUmIHNpYmxpbmdCKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29u
c3QgTm9kZSYgYSwgY29uc3QgTm9kZSYgYikKK3RlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBz
dGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IE5vZGUmIGEsIGNvbnN0IE5vZGUm
IGIpCiB7CiAgICAgaWYgKCZhID09ICZiKQotICAgICAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5n
OjplcXVpdmFsZW50OworICAgICAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjplcXVp
dmFsZW50OwogICAgIGF1dG8gcmVzdWx0ID0gY29tbW9uSW5jbHVzaXZlQW5jZXN0b3JBbmRDaGls
ZHJlbjx0cmVlVHlwZT4oYSwgYik7CiAgICAgaWYgKCFyZXN1bHQuY29tbW9uQW5jZXN0b3IpCi0g
ICAgICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6OnVub3JkZXJlZDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6dW5vcmRlcmVkOwogICAgIGlmICghcmVzdWx0LmRpc3Rp
bmN0QW5jZXN0b3JBKQotICAgICAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjpsZXNzOworICAg
ICAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjpsZXNzOwogICAgIGlmICghcmVzdWx0
LmRpc3RpbmN0QW5jZXN0b3JCKQotICAgICAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjpncmVh
dGVyOworICAgICAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjpncmVhdGVyOwogICAg
IGJvb2wgaXNTaGFkb3dSb290QSA9IHJlc3VsdC5kaXN0aW5jdEFuY2VzdG9yQS0+aXNTaGFkb3dS
b290KCk7CiAgICAgYm9vbCBpc1NoYWRvd1Jvb3RCID0gcmVzdWx0LmRpc3RpbmN0QW5jZXN0b3JC
LT5pc1NoYWRvd1Jvb3QoKTsKICAgICBpZiAoaXNTaGFkb3dSb290QSB8fCBpc1NoYWRvd1Jvb3RC
KSB7CiAgICAgICAgIGlmICghaXNTaGFkb3dSb290QikKLSAgICAgICAgICAgIHJldHVybiBQYXJ0
aWFsT3JkZXJpbmc6Omxlc3M7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVy
aW5nOjpsZXNzOwogICAgICAgICBpZiAoIWlzU2hhZG93Um9vdEEpCi0gICAgICAgICAgICByZXR1
cm4gUGFydGlhbE9yZGVyaW5nOjpncmVhdGVyOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cGFy
dGlhbF9vcmRlcmluZzo6Z3JlYXRlcjsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6OnVub3JkZXJlZDsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6dW5vcmRlcmVkOwogICAgIH0KLSAgICByZXR1cm4gaXNT
aWJsaW5nU3Vic2VxdWVudCgqcmVzdWx0LmRpc3RpbmN0QW5jZXN0b3JBLCAqcmVzdWx0LmRpc3Rp
bmN0QW5jZXN0b3JCKSA/IFBhcnRpYWxPcmRlcmluZzo6bGVzcyA6IFBhcnRpYWxPcmRlcmluZzo6
Z3JlYXRlcjsKKyAgICByZXR1cm4gaXNTaWJsaW5nU3Vic2VxdWVudCgqcmVzdWx0LmRpc3RpbmN0
QW5jZXN0b3JBLCAqcmVzdWx0LmRpc3RpbmN0QW5jZXN0b3JCKSA/IHN0ZDo6cGFydGlhbF9vcmRl
cmluZzo6bGVzcyA6IHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6Z3JlYXRlcjsKIH0KIAotdGVtcGxh
dGUgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcjxUcmVlPihjb25zdCBOb2RlJiwgY29uc3QgTm9k
ZSYpOwotdGVtcGxhdGUgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcjxTaGFkb3dJbmNsdWRpbmdU
cmVlPihjb25zdCBOb2RlJiwgY29uc3QgTm9kZSYpOwotdGVtcGxhdGUgUGFydGlhbE9yZGVyaW5n
IHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KGNvbnN0IE5vZGUmLCBjb25zdCBOb2RlJik7Cit0ZW1w
bGF0ZSBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyPFRyZWU+KGNvbnN0IE5vZGUmLCBj
b25zdCBOb2RlJik7Cit0ZW1wbGF0ZSBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyPFNo
YWRvd0luY2x1ZGluZ1RyZWU+KGNvbnN0IE5vZGUmLCBjb25zdCBOb2RlJik7Cit0ZW1wbGF0ZSBz
dGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oY29uc3QgTm9kZSYs
IGNvbnN0IE5vZGUmKTsKIAotUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJl
ZVR5cGUgdHlwZSwgY29uc3QgTm9kZSYgYSwgY29uc3QgTm9kZSYgYikKK3N0ZDo6cGFydGlhbF9v
cmRlcmluZyB0cmVlT3JkZXJGb3JUZXN0aW5nKFRyZWVUeXBlIHR5cGUsIGNvbnN0IE5vZGUmIGEs
IGNvbnN0IE5vZGUmIGIpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBUcmVlOgpA
QCAtMjc2Nyw3ICsyNzY3LDcgQEAgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlckZvclRlc3Rpbmco
VHJlZVR5cGUgdHlwZSwgY29uc3QgTm9kZSYgYSwgY29uc3QgTm9kZSYgYikKICAgICAgICAgcmV0
dXJuIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KGEsIGIpOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjp1bm9yZGVyZWQ7CisgICAg
cmV0dXJuIHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6dW5vcmRlcmVkOwogfQogCiBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBOb2RlJiBub2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
aW5kZXggYjQ1OGRhOWEzMzM1YWIxYTZjZjEzMWE5ODkzNmZkODUzMDIzMWMyZi4uYTgxYzQ4ZTY0
ZWRhYzI4ZjY3Y2E5ZDYxMzcwNmNjYmYyMjAyNWNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC03MzgsMzgg
KzczOCwxMiBAQCBwcml2YXRlOgogCiBib29sIGNvbm5lY3RlZEluU2FtZVRyZWVTY29wZShjb25z
dCBOb2RlKiwgY29uc3QgTm9kZSopOwogCi0vLyBEZXNpZ25lZCB0byBiZSB1c2VkIHRoZSBzYW1l
IHdheSBhcyBDKysyMCBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgY2xhc3MuCi0vLyBGSVhNRTogQ29u
c2lkZXIgcHV0dGluZyB0aGlzIGluIGEgc2VwYXJhdGUgaGVhZGVyLgotLy8gRklYTUU6IE9uY2Ug
d2UgY2FuIHJlcXVpcmUgQysrMjAsIHJlcGxhY2Ugd2l0aCBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcu
Ci1jbGFzcyBQYXJ0aWFsT3JkZXJpbmcgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBQYXJ0
aWFsT3JkZXJpbmcgbGVzczsKLSAgICBzdGF0aWMgY29uc3QgUGFydGlhbE9yZGVyaW5nIGVxdWl2
YWxlbnQ7Ci0gICAgc3RhdGljIGNvbnN0IFBhcnRpYWxPcmRlcmluZyBncmVhdGVyOwotICAgIHN0
YXRpYyBjb25zdCBQYXJ0aWFsT3JkZXJpbmcgdW5vcmRlcmVkOwotCi0gICAgZnJpZW5kIGNvbnN0
ZXhwciBib29sIGlzX2VxKFBhcnRpYWxPcmRlcmluZyk7Ci0gICAgZnJpZW5kIGNvbnN0ZXhwciBi
b29sIGlzX2x0KFBhcnRpYWxPcmRlcmluZyk7Ci0gICAgZnJpZW5kIGNvbnN0ZXhwciBib29sIGlz
X2d0KFBhcnRpYWxPcmRlcmluZyk7Ci0KLXByaXZhdGU6Ci0gICAgZW51bSBjbGFzcyBUeXBlIDog
dWludDhfdCB7IExlc3MsIEVxdWl2YWxlbnQsIEdyZWF0ZXIsIFVub3JkZXJlZCB9OwotICAgIGNv
bnN0ZXhwciBQYXJ0aWFsT3JkZXJpbmcoVHlwZSB0eXBlKSA6IG1fdHlwZSB7IHR5cGUgfSB7IH0K
LSAgICBUeXBlIG1fdHlwZTsKLX07Ci1jb25zdGV4cHIgYm9vbCBpc19lcShQYXJ0aWFsT3JkZXJp
bmcpOwotY29uc3RleHByIGJvb2wgaXNfbHQoUGFydGlhbE9yZGVyaW5nKTsKLWNvbnN0ZXhwciBi
b29sIGlzX2d0KFBhcnRpYWxPcmRlcmluZyk7Ci1jb25zdGV4cHIgYm9vbCBpc19uZXEoUGFydGlh
bE9yZGVyaW5nKTsKLWNvbnN0ZXhwciBib29sIGlzX2x0ZXEoUGFydGlhbE9yZGVyaW5nKTsKLWNv
bnN0ZXhwciBib29sIGlzX2d0ZXEoUGFydGlhbE9yZGVyaW5nKTsKLQogZW51bSBUcmVlVHlwZSB7
IFRyZWUsIFNoYWRvd0luY2x1ZGluZ1RyZWUsIENvbXBvc2VkVHJlZSB9OwogdGVtcGxhdGU8VHJl
ZVR5cGUgPSBUcmVlPiBDb250YWluZXJOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSYpOwogdGVtcGxh
dGU8VHJlZVR5cGUgPSBUcmVlPiBOb2RlKiBjb21tb25JbmNsdXNpdmVBbmNlc3Rvcihjb25zdCBO
b2RlJiwgY29uc3QgTm9kZSYpOwotdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBQYXJ0aWFsT3Jk
ZXJpbmcgdHJlZU9yZGVyKGNvbnN0IE5vZGUmLCBjb25zdCBOb2RlJik7Cit0ZW1wbGF0ZTxUcmVl
VHlwZSA9IFRyZWU+IHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgTm9kZSYs
IGNvbnN0IE5vZGUmKTsKIAotV0VCQ09SRV9FWFBPUlQgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRl
ckZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0IE5vZGUmLCBjb25zdCBOb2RlJik7CitXRUJDT1JF
X0VYUE9SVCBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyRm9yVGVzdGluZyhUcmVlVHlw
ZSwgY29uc3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAKQEAg
LTg5OCw0MSArODcyLDYgQEAgaW5saW5lIHZvaWQgTm9kZTo6c2V0VHJlZVNjb3BlUmVjdXJzaXZl
bHkoVHJlZVNjb3BlJiBuZXdUcmVlU2NvcGUpCiAgICAgICAgIG1vdmVUcmVlVG9OZXdTY29wZSgq
dGhpcywgKm1fdHJlZVNjb3BlLCBuZXdUcmVlU2NvcGUpOwogfQogCi1pbmxpbmUgY29uc3RleHBy
IFBhcnRpYWxPcmRlcmluZyBQYXJ0aWFsT3JkZXJpbmc6Omxlc3MoVHlwZTo6TGVzcyk7Ci1pbmxp
bmUgY29uc3RleHByIFBhcnRpYWxPcmRlcmluZyBQYXJ0aWFsT3JkZXJpbmc6OmVxdWl2YWxlbnQo
VHlwZTo6RXF1aXZhbGVudCk7Ci1pbmxpbmUgY29uc3RleHByIFBhcnRpYWxPcmRlcmluZyBQYXJ0
aWFsT3JkZXJpbmc6OmdyZWF0ZXIoVHlwZTo6R3JlYXRlcik7Ci1pbmxpbmUgY29uc3RleHByIFBh
cnRpYWxPcmRlcmluZyBQYXJ0aWFsT3JkZXJpbmc6OnVub3JkZXJlZChUeXBlOjpVbm9yZGVyZWQp
OwotCi1jb25zdGV4cHIgYm9vbCBpc19lcShQYXJ0aWFsT3JkZXJpbmcgb3JkZXJpbmcpCi17Ci0g
ICAgcmV0dXJuIG9yZGVyaW5nLm1fdHlwZSA9PSBQYXJ0aWFsT3JkZXJpbmc6OlR5cGU6OkVxdWl2
YWxlbnQ7Ci19Ci0KLWNvbnN0ZXhwciBib29sIGlzX2x0KFBhcnRpYWxPcmRlcmluZyBvcmRlcmlu
ZykKLXsKLSAgICByZXR1cm4gb3JkZXJpbmcubV90eXBlID09IFBhcnRpYWxPcmRlcmluZzo6VHlw
ZTo6TGVzczsKLX0KLQotY29uc3RleHByIGJvb2wgaXNfZ3QoUGFydGlhbE9yZGVyaW5nIG9yZGVy
aW5nKQotewotICAgIHJldHVybiBvcmRlcmluZy5tX3R5cGUgPT0gUGFydGlhbE9yZGVyaW5nOjpU
eXBlOjpHcmVhdGVyOwotfQotCi1jb25zdGV4cHIgYm9vbCBpc19uZXEoUGFydGlhbE9yZGVyaW5n
IG9yZGVyaW5nKQotewotICAgIHJldHVybiBpc19sdChvcmRlcmluZykgfHwgaXNfZ3Qob3JkZXJp
bmcpOwotfQotCi1jb25zdGV4cHIgYm9vbCBpc19sdGVxKFBhcnRpYWxPcmRlcmluZyBvcmRlcmlu
ZykKLXsKLSAgICByZXR1cm4gaXNfbHQob3JkZXJpbmcpIHx8IGlzX2VxKG9yZGVyaW5nKTsKLX0K
LQotY29uc3RleHByIGJvb2wgaXNfZ3RlcShQYXJ0aWFsT3JkZXJpbmcgb3JkZXJpbmcpCi17Ci0g
ICAgcmV0dXJuIGlzX2d0KG9yZGVyaW5nKSB8fCBpc19lcShvcmRlcmluZyk7Ci19Ci0KIFdFQkNP
UkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBj
b25zdCBOb2RlJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwCmluZGV4IDlhNTEyZWZlN2M5YzAxZWY4MjAxMmNiNDNmOWI2MTE1NTg5NjdhMmEuLmMxZmFm
YmQzYzRjMjdlZWU2YzI4MTFiYTFmZmU1NTI1YTI5M2E2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmNwcApAQCAtMTYxNiwyMiArMTYxNiwyMiBAQCBzdGQ6Om9wdGlvbmFsPEJvdW5kYXJ5UG9pbnQ+
IG1ha2VCb3VuZGFyeVBvaW50KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKICAgICByZXR1cm4g
Qm91bmRhcnlQb2ludCB7IGNvbnRhaW5lci5yZWxlYXNlTm9uTnVsbCgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocG9zaXRpb24uY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpKSB9OwogfQog
Ci10ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcihj
b25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpCit0ZW1wbGF0ZTxUcmVlVHlwZSB0
cmVlVHlwZT4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBQb3NpdGlvbiYg
YSwgY29uc3QgUG9zaXRpb24mIGIpCiB7CiAgICAgaWYgKGEuaXNOdWxsKCkgfHwgYi5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuIGEuaXNOdWxsKCkgJiYgYi5pc051bGwoKSA/IFBhcnRpYWxPcmRl
cmluZzo6ZXF1aXZhbGVudCA6IFBhcnRpYWxPcmRlcmluZzo6dW5vcmRlcmVkOworICAgICAgICBy
ZXR1cm4gYS5pc051bGwoKSAmJiBiLmlzTnVsbCgpID8gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjpl
cXVpdmFsZW50IDogc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjp1bm9yZGVyZWQ7CiAKICAgICBhdXRv
IGFDb250YWluZXIgPSBhLmNvbnRhaW5lck5vZGUoKTsKICAgICBhdXRvIGJDb250YWluZXIgPSBi
LmNvbnRhaW5lck5vZGUoKTsKIAogICAgIGlmICghYUNvbnRhaW5lciB8fCAhYkNvbnRhaW5lcikg
ewogICAgICAgICBpZiAoIWNvbW1vbkluY2x1c2l2ZUFuY2VzdG9yPHRyZWVUeXBlPigqYS5hbmNo
b3JOb2RlKCksICpiLmFuY2hvck5vZGUoKSkpCi0gICAgICAgICAgICByZXR1cm4gUGFydGlhbE9y
ZGVyaW5nOjp1bm9yZGVyZWQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVy
aW5nOjp1bm9yZGVyZWQ7CiAgICAgICAgIGlmICghYUNvbnRhaW5lciAmJiAhYkNvbnRhaW5lciAm
JiBhLmFuY2hvclR5cGUoKSA9PSBiLmFuY2hvclR5cGUoKSkKLSAgICAgICAgICAgIHJldHVybiBQ
YXJ0aWFsT3JkZXJpbmc6OmVxdWl2YWxlbnQ7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpwYXJ0
aWFsX29yZGVyaW5nOjplcXVpdmFsZW50OwogICAgICAgICBpZiAoYkNvbnRhaW5lcikKLSAgICAg
ICAgICAgIHJldHVybiBhLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9y
ZUFuY2hvciA/IFBhcnRpYWxPcmRlcmluZzo6bGVzcyA6IFBhcnRpYWxPcmRlcmluZzo6Z3JlYXRl
cjsKLSAgICAgICAgcmV0dXJuIGIuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklz
QmVmb3JlQW5jaG9yID8gUGFydGlhbE9yZGVyaW5nOjpncmVhdGVyIDogUGFydGlhbE9yZGVyaW5n
OjpsZXNzOworICAgICAgICAgICAgcmV0dXJuIGEuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQ
b3NpdGlvbklzQmVmb3JlQW5jaG9yID8gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjpsZXNzIDogc3Rk
OjpwYXJ0aWFsX29yZGVyaW5nOjpncmVhdGVyOworICAgICAgICByZXR1cm4gYi5hbmNob3JUeXBl
KCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IgPyBzdGQ6OnBhcnRpYWxfb3Jk
ZXJpbmc6OmdyZWF0ZXIgOiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6Omxlc3M7CiAgICAgfQogCiAg
ICAgLy8gRklYTUU6IEF2b2lkIGNvbXB1dGluZyBub2RlIG9mZnNldCBmb3IgY2FzZXMgd2hlcmUg
d2UgZG9uJ3QgbmVlZCB0by4KQEAgLTE2MzksMTMgKzE2MzksMTMgQEAgdGVtcGxhdGU8VHJlZVR5
cGUgdHJlZVR5cGU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgUG9zaXRpb24mIGEs
IGNvbnN0IFAKICAgICByZXR1cm4gdHJlZU9yZGVyPHRyZWVUeXBlPigqbWFrZUJvdW5kYXJ5UG9p
bnQoYSksICptYWtlQm91bmRhcnlQb2ludChiKSk7CiB9CiAKLVBhcnRpYWxPcmRlcmluZyBkb2N1
bWVudE9yZGVyKGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKK3N0ZDo6cGFy
dGlhbF9vcmRlcmluZyBkb2N1bWVudE9yZGVyKGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3Np
dGlvbiYgYikKIHsKICAgICByZXR1cm4gdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oYSwgYik7CiB9
CiAKLXRlbXBsYXRlIFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXI8Q29tcG9zZWRUcmVlPihjb25z
dCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7Ci10ZW1wbGF0ZSBQYXJ0aWFsT3JkZXJpbmcg
dHJlZU9yZGVyPFNoYWRvd0luY2x1ZGluZ1RyZWU+KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9z
aXRpb24mKTsKK3RlbXBsYXRlIHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3JkZXI8Q29tcG9z
ZWRUcmVlPihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7Cit0ZW1wbGF0ZSBzdGQ6
OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyPFNoYWRvd0luY2x1ZGluZ1RyZWU+KGNvbnN0IFBv
c2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5oCmluZGV4IDljOTk0YzA5NzhjNmE0ODdkN2UyMmJhMGJkNmUwYTQ4OGM1
NGJjMWUuLjY3ODUxYmE3YTBhYjljY2RmMjMzYjNkM2Q3NzFmNjRmMjMwOGE3ZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5oCkBAIC0yMTgsMTQgKzIxOCwxMCBAQCBwcml2YXRlOgogfTsKIAogYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKLWJvb2wgb3BlcmF0
b3IhPShjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CiAKLXRlbXBsYXRlPFRyZWVU
eXBlIHRyZWVUeXBlPiBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IFBvc2l0aW9uJiwg
Y29uc3QgUG9zaXRpb24mKTsKLVdFQkNPUkVfRVhQT1JUIFBhcnRpYWxPcmRlcmluZyBkb2N1bWVu
dE9yZGVyKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKLWJvb2wgb3BlcmF0b3I8
KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKLWJvb2wgb3BlcmF0b3I+KGNvbnN0
IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKLWJvb2wgb3BlcmF0b3I+PShjb25zdCBQb3Np
dGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7Ci1ib29sIG9wZXJhdG9yPD0oY29uc3QgUG9zaXRpb24m
LCBjb25zdCBQb3NpdGlvbiYpOwordGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IHN0ZDo6cGFy
dGlhbF9vcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYp
OworV0VCQ09SRV9FWFBPUlQgc3RkOjpwYXJ0aWFsX29yZGVyaW5nIGRvY3VtZW50T3JkZXIoY29u
c3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOworc3RkOjpwYXJ0aWFsX29yZGVyaW5nIG9w
ZXJhdG9yPD0+KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKIAogUG9zaXRpb24g
bWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKE5vZGUqLCB1bnNpZ25lZCBvZmZzZXQpOwogV0VC
Q09SRV9FWFBPUlQgUG9zaXRpb24gbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKGNvbnN0IEJv
dW5kYXJ5UG9pbnQmKTsKQEAgLTI3OSwyOSArMjc1LDkgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpCiAgICAgcmV0dXJuIGEuYW5j
aG9yTm9kZSgpID09IGIuYW5jaG9yTm9kZSgpICYmIGEuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSA9PSBiLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgJiYgYS5hbmNob3JUeXBlKCkgPT0gYi5h
bmNob3JUeXBlKCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9zaXRpb24m
IGEsIGNvbnN0IFBvc2l0aW9uJiBiKQoraW5saW5lIHN0ZDo6cGFydGlhbF9vcmRlcmluZyBvcGVy
YXRvcjw9Pihjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpCiB7Ci0gICAgcmV0
dXJuICEoYSA9PSBiKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFBvc2l0aW9u
JiBhLCBjb25zdCBQb3NpdGlvbiYgYikKLXsKLSAgICByZXR1cm4gaXNfbHQoZG9jdW1lbnRPcmRl
cihhLCBiKSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBQb3NpdGlvbiYgYSwg
Y29uc3QgUG9zaXRpb24mIGIpIAotewotICAgIHJldHVybiBpc19ndChkb2N1bWVudE9yZGVyKGEs
IGIpKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBQb3NpdGlvbiYgYSwgY29u
c3QgUG9zaXRpb24mIGIpIAotewotICAgIHJldHVybiBpc19ndGVxKGRvY3VtZW50T3JkZXIoYSwg
YikpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25z
dCBQb3NpdGlvbiYgYikgCi17Ci0gICAgcmV0dXJuIGlzX2x0ZXEoZG9jdW1lbnRPcmRlcihhLCBi
KSk7CisgICAgcmV0dXJuIGRvY3VtZW50T3JkZXIoYSwgYik7CiB9CiAKIC8vIHBvc2l0aW9uQmVm
b3JlTm9kZSBhbmQgcG9zaXRpb25BZnRlck5vZGUgcmV0dXJuIG5laWdoYm9yLWFuY2hvcmVkIHBv
c2l0aW9ucywgY29uc3RydWN0aW9uIGlzIE8oMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9RdWFsaWZpZWROYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5o
CmluZGV4IDQyOWZjNTU5NjQzNTFmMTI0OWJjMWM4ZjI4OWUzNzdhNGRkM2UzMzYuLmM3N2NmMmM0
ZTFlNTdlY2U0YmE2NDIxNWUxNTdhNThlYTMwZTdmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmll
ZE5hbWUuaApAQCAtNzgsOCArNzgsNyBAQCBwdWJsaWM6CiAgICAgUXVhbGlmaWVkTmFtZSgpIHsg
fQogI2VuZGlmCiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVhbGlmaWVkTmFtZSYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA9PSBvdGhlci5tX2ltcGw7IH0KLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgUXVhbGlmaWVkTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBib29sIG1hdGNoZXMoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA9PSBvdGhlci5tX2ltcGwgfHwgKGxvY2Fs
TmFtZSgpID09IG90aGVyLmxvY2FsTmFtZSgpICYmIG5hbWVzcGFjZVVSSSgpID09IG90aGVyLm5h
bWVzcGFjZVVSSSgpKTsgfQogCkBAIC0xMTUsOSArMTE0LDYgQEAgaW5saW5lIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGFueVFOYW1lKCkgeyByZXR1cm4gYW55TmFtZTsgfQogY29uc3QgUXVhbGlmaWVk
TmFtZSYgbnVsbFFOYW1lKCk7CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0
cmluZyYgYSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgcSkgeyByZXR1cm4gYSA9PSBxLmxvY2FsTmFt
ZSgpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHEpIHsgcmV0dXJuIGEgIT0gcS5sb2NhbE5hbWUoKTsgfQotaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBRdWFsaWZpZWROYW1lJiBxLCBjb25zdCBBdG9tU3RyaW5n
JiBhKSB7IHJldHVybiBhID09IHEubG9jYWxOYW1lKCk7IH0KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgUXVhbGlmaWVkTmFtZSYgcSwgY29uc3QgQXRvbVN0cmluZyYgYSkgeyByZXR1cm4g
YSAhPSBxLmxvY2FsTmFtZSgpOyB9CiAKIGlubGluZSB1bnNpZ25lZCBoYXNoQ29tcG9uZW50cyhj
b25zdCBRdWFsaWZpZWROYW1lQ29tcG9uZW50cyYgYnVmKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVS
YW5nZS5jcHAKaW5kZXggYWIyNTg5OTNjMGVmMTMwYmZkZGU5N2E3MTMxZjM2ZTc1MDJkYmI4Ny4u
N2VjNGZiYjYzNWU1MDk4MzBkYTdiMzU5MTczN2MwZDBkN2MxZjAxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2ltcGxlUmFuZ2UuY3BwCkBAIC00NiwxMSArNDYsNiBAQCBTaW1wbGVSYW5nZTo6U2ltcGxlUmFu
Z2UoQm91bmRhcnlQb2ludCYmIHN0YXJ0LCBCb3VuZGFyeVBvaW50JiYgZW5kKQogewogfQogCi1i
b29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxlUmFuZ2UmIGEsIGNvbnN0IFNpbXBsZVJhbmdlJiBi
KQotewotICAgIHJldHVybiBhLnN0YXJ0ID09IGIuc3RhcnQgJiYgYS5lbmQgPT0gYi5lbmQ7Ci19
Ci0KIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoTm9k
ZSYgbm9kZSkKIHsKICAgICBhdXRvIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZSgpOwpAQCAtMTcx
LDI2ICsxNjYsMjYgQEAgYm9vbCBjb250YWluc0ZvclRlc3RpbmcoVHJlZVR5cGUgdHlwZSwgY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBCb3VuZGFyeVAKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXRlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9y
ZGVyKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQp
Cit0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVP
cmRlcihjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmIHBvaW50
KQogewogICAgIGlmIChhdXRvIG9yZGVyID0gdHJlZU9yZGVyPHRyZWVUeXBlPihyYW5nZS5zdGFy
dCwgcG9pbnQpOyAhaXNfbHQob3JkZXIpKQogICAgICAgICByZXR1cm4gb3JkZXI7CiAgICAgaWYg
KGF1dG8gb3JkZXIgPSB0cmVlT3JkZXI8dHJlZVR5cGU+KHJhbmdlLmVuZCwgcG9pbnQpOyAhaXNf
Z3Qob3JkZXIpKQogICAgICAgICByZXR1cm4gb3JkZXI7Ci0gICAgcmV0dXJuIFBhcnRpYWxPcmRl
cmluZzo6ZXF1aXZhbGVudDsKKyAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjplcXVp
dmFsZW50OwogfQogCi10ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gUGFydGlhbE9yZGVyaW5n
IHRyZWVPcmRlcihjb25zdCBCb3VuZGFyeVBvaW50JiBwb2ludCwgY29uc3QgU2ltcGxlUmFuZ2Um
IHJhbmdlKQordGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IHN0ZDo6cGFydGlhbF9vcmRlcmlu
ZyB0cmVlT3JkZXIoY29uc3QgQm91bmRhcnlQb2ludCYgcG9pbnQsIGNvbnN0IFNpbXBsZVJhbmdl
JiByYW5nZSkKIHsKICAgICBpZiAoYXV0byBvcmRlciA9IHRyZWVPcmRlcjx0cmVlVHlwZT4ocG9p
bnQsIHJhbmdlLnN0YXJ0KTsgIWlzX2d0KG9yZGVyKSkKICAgICAgICAgcmV0dXJuIG9yZGVyOwog
ICAgIGlmIChhdXRvIG9yZGVyID0gdHJlZU9yZGVyPHRyZWVUeXBlPihwb2ludCwgcmFuZ2UuZW5k
KTsgIWlzX2x0KG9yZGVyKSkKICAgICAgICAgcmV0dXJuIG9yZGVyOwotICAgIHJldHVybiBQYXJ0
aWFsT3JkZXJpbmc6OmVxdWl2YWxlbnQ7CisgICAgcmV0dXJuIHN0ZDo6cGFydGlhbF9vcmRlcmlu
Zzo6ZXF1aXZhbGVudDsKIH0KIAotdGVtcGxhdGUgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcjxU
cmVlPihjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKLXRlbXBsYXRl
IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXI8VHJlZT4oY29uc3QgQm91bmRhcnlQb2ludCYsIGNv
bnN0IFNpbXBsZVJhbmdlJik7Cit0ZW1wbGF0ZSBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9y
ZGVyPFRyZWU+KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwordGVt
cGxhdGUgc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcjxUcmVlPihjb25zdCBCb3VuZGFy
eVBvaW50JiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5
cGU+IGJvb2wgY29udGFpbnMoY29uc3QgU2ltcGxlUmFuZ2UmIG91dGVyUmFuZ2UsIGNvbnN0IFNp
bXBsZVJhbmdlJiBpbm5lclJhbmdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NpbXBsZVJhbmdlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaAppbmRleCAw
MjVhYzg3NTQ3YWFiYzkxYmNjMTYxMWQ3YjY1MzU4NzU5MzZiZDk0Li4zZGI4NzNmOGQ3MjIyODRk
YTU2MGI3MDllY2MyMzM2MDljMjU4MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2ltcGxlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuaApAQCAt
NDIsNiArNDIsOCBAQCBzdHJ1Y3QgU2ltcGxlUmFuZ2UgewogCiAgICAgV0VCQ09SRV9FWFBPUlQg
U2ltcGxlUmFuZ2UoY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBTaW1wbGVSYW5nZShCb3VuZGFyeVBvaW50JiYsIEJvdW5kYXJ5
UG9pbnQmJik7CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2ltcGxlUmFuZ2UmKSBjb25z
dCA9IGRlZmF1bHQ7CiB9OwogCiBTaW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFuZ2VIZWxwZXIoQm91
bmRhcnlQb2ludCYmLCBCb3VuZGFyeVBvaW50JiYpOwpAQCAtNjEsOCArNjMsNiBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSAuLi5UPiBhdXRvIG1ha2VTaW1wbGVSYW5nZShUJiYgLi4uYXJndW1lbnRzKSAt
PiBkZWNsdHlwZShtYWtlUwogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShOb2RlJik7CiBXRUJDT1JFX0VYUE9SVCBTaW1wbGVS
YW5nZSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoTm9kZSYpOwogCi1ib29sIG9wZXJh
dG9yPT0oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpOwotCiB0ZW1wbGF0
ZTxUcmVlVHlwZSA9IFRyZWU+IE5vZGUqIGNvbW1vbkluY2x1c2l2ZUFuY2VzdG9yKGNvbnN0IFNp
bXBsZVJhbmdlJik7CiAKIHRlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gYm9vbCBjb250YWlucyhj
b25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKQEAgLTgxLDggKzgxLDgg
QEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpbnRlcnNlY3RzRm9yVGVzdGluZyhUcmVlVHlwZSwgY29u
c3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW0KIFdFQkNPUkVfRVhQT1JUIGJvb2wgaW50ZXJzZWN0
c0ZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgTm9kZSYpOwog
CiAvLyBSZXR1cm5zIGVxdWl2YWxlbnQgaWYgcG9pbnQgaXMgaW4gcmFuZ2UuCi10ZW1wbGF0ZTxU
cmVlVHlwZSA9IFRyZWU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgU2ltcGxlUmFu
Z2UmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7Ci10ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IFBh
cnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IFNpbXBs
ZVJhbmdlJik7Cit0ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IHN0ZDo6cGFydGlhbF9vcmRlcmlu
ZyB0cmVlT3JkZXIoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7Cit0
ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3JkZXIo
Y29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IFNpbXBsZVJhbmdlJik7CiAKIHN0cnVjdCBPZmZz
ZXRSYW5nZSB7CiAgICAgdW5zaWduZWQgc3RhcnQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3
cG9ydEFyZ3VtZW50cy5oCmluZGV4IGRjNzE4NzNiZjlhNDBhYTdkMjg5NzhiYjE2NWNhYzRiOTk5
MDQ3ZjQuLmMwMGRkZDU1OGRjMWEwZWUzZmZlZDJhZTU0M2I2N2NlYTI5ZTFhNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCkBAIC0xMjUsMTEgKzEyNSw2IEBAIHN0cnVj
dCBWaWV3cG9ydEFyZ3VtZW50cyB7CiAgICAgICAgICAgICAmJiB3aWR0aFdhc0V4cGxpY2l0ID09
IG90aGVyLndpZHRoV2FzRXhwbGljaXQ7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFZpZXdwb3J0QXJndW1lbnRzJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KICNpZiBQTEFURk9STShHVEspCiAgICAgLy8g
RklYTUU6IFdlJ3JlIGdvaW5nIHRvIGtlZXAgdGhpcyBjb25zdGFudCBhcm91bmQgdW50aWwgYWxs
IGVtYmVkZGVycwogICAgIC8vIHJlZmFjdG9yIHRoZWlyIGNvZGUgdG8gbm8gbG9uZ2VyIG5lZWQg
aXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAppbmRleCA3ZmRlNTJlOWU0NTUw
OTM3ZmM4ODI5NjIyODI0YmZmZThhMTNhMzIxLi5kNjdkNDI0MDM5NjU1N2IxODQ2NjkyODkxNzVl
MGY4NTg1ZjMzNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKQEAgLTIy
MCwxMCArMjIwLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBmb250U2l6ZSgpIHsgcmV0dXJuIG1f
YXBwbHlGb250U2l6ZTsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlQ2hhbmdl
Jik7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlQ2hhbmdlJiBvdGhlcikKLSAgICB7
Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisKIHByaXZhdGU6CiAg
ICAgdm9pZCBleHRyYWN0VGV4dFN0eWxlcyhEb2N1bWVudCYsIE11dGFibGVTdHlsZVByb3BlcnRp
ZXMmLCBib29sIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAppbmRleCAyMTMyMjNkOWM1MTY0ZWM0YTc5MjBi
OTVjN2RiMTQxZjZkZDNhMjdjLi4zMDcyN2RiOTZlZmFmNTE0NTllOTkwNjE1ZmFhODkwYjBhYzFj
OTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaApAQCAtNzEs
NyArNzEsNiBAQCBwdWJsaWM6CiAgICAgSW50UmVjdCBhYnNvbHV0ZVJlY3QoQ2FyZXRSZWN0TW9k
ZSA9IENhcmV0UmVjdE1vZGU6Ok5vcm1hbCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlbmRlcmVkUG9zaXRpb24mKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIGV4cGxpY2l0IFJlbmRlcmVkUG9zaXRpb24oY29uc3QgUmVuZGVyT2JqZWN0KiwgSW5s
aW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciwgdW5zaWduZWQgb2Zmc2V0KTsKIAogICAgIElu
bGluZUl0ZXJhdG9yOjpMZWFmQm94SXRlcmF0b3IgcHJldmlvdXNMZWFmT25MaW5lKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggMmMzZTA3
OGEzMmEyZmVmMjFkYTRmZWNmOWRkYWRiNzE0MmFlZjMzMy4uYTFjMDRiZmU1NTVmMTViZWFjMWU2
MTVmYmJmNWFkODk4MmFmZjZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBv
c2l0aW9uLmNwcApAQCAtODA1LDcgKzgwNSw3IEBAIFZpc2libGVQb3NpdGlvblJhbmdlIG1ha2VW
aXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYKICAg
ICByZXR1cm4geyBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24ocmFuZ2UtPnN0YXJ0KSwgbWFr
ZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKHJhbmdlLT5lbmQpIH07CiB9CiAKLVBhcnRpYWxPcmRl
cmluZyBkb2N1bWVudE9yZGVyKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYSwgY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBiKQorc3RkOjpwYXJ0aWFsX29yZGVyaW5nIGRvY3VtZW50T3JkZXIoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCiB7CiAgICAgLy8g
RklYTUU6IFNob3VsZCB0d28gcG9zaXRpb25zIHdpdGggZGlmZmVyZW50IGFmZmluaXR5IGJlIGNv
bnNpZGVyZWQgZXF1aXZhbGVudCBvciBub3Q/CiAgICAgcmV0dXJuIHRyZWVPcmRlcjxDb21wb3Nl
ZFRyZWU+KGEuZGVlcEVxdWl2YWxlbnQoKSwgYi5kZWVwRXF1aXZhbGVudCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCmluZGV4IGE5MmNhODFiY2VmZTNlNDc2YzRj
NTQ2NjBkOTcyMDg0ZWVlY2ZhYzYuLjdkMjc2ODY4YzFhNzNjZmE5MTNjMzNhZWZhOGY4MDUwODdh
ODdjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaApAQCAtMTA2
LDEzICsxMDYsOSBAQCBwcml2YXRlOgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogCi1XRUJDT1JF
X0VYUE9SVCBQYXJ0aWFsT3JkZXJpbmcgZG9jdW1lbnRPcmRlcihjb25zdCBWaXNpYmxlUG9zaXRp
b24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKLWJvb2wgb3BlcmF0b3I8KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotYm9vbCBvcGVyYXRvcj4oY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci1ib29sIG9wZXJh
dG9yPD0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci1i
b29sIG9wZXJhdG9yPj0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgZG9jdW1lbnRPcmRl
cihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKK3N0ZDo6
cGFydGlhbF9vcmRlcmluZyBvcGVyYXRvcjw9Pihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mKTsKIAogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxCb3Vu
ZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludChjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKIApA
QCAtMTUzLDI5ICsxNDksOSBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgYSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBiKQogICAgIHJldHVybiBhLmRlZXBF
cXVpdmFsZW50KCkgPT0gYi5kZWVwRXF1aXZhbGVudCgpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBi
KQoraW5saW5lIHN0ZDo6cGFydGlhbF9vcmRlcmluZyBvcGVyYXRvcjw9Pihjb25zdCBWaXNpYmxl
UG9zaXRpb24mIGEsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYikKIHsKLSAgICByZXR1cm4gIShh
ID09IGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCi17Ci0gICAgcmV0dXJuIGlzX2x0KGRvY3Vt
ZW50T3JkZXIoYSwgYikpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCi17Ci0gICAgcmV0dXJuIGlz
X2d0KGRvY3VtZW50T3JkZXIoYSwgYikpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgYSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBiKQotewotICAg
IHJldHVybiBpc19sdGVxKGRvY3VtZW50T3JkZXIoYSwgYikpOwotfQotCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj49KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYSwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBiKQotewotICAgIHJldHVybiBpc19ndGVxKGRvY3VtZW50T3JkZXIoYSwgYikpOworICAgIHJl
dHVybiBkb2N1bWVudE9yZGVyKGEsIGIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCmluZGV4IGE0YWQ4ZDlmNWJh
MzZlNzc1MTIwYzFiMmMwYzg1NTQ4ODQ5YTcwNTguLjc0OGM5MjYzOGYwYTc5ZmNlOWRkNTBkYjZi
NTZhMWNiMjYzNmE1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlv
bi5oCkBAIC0xNjcsMTEgKzE2Nyw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgYSwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgYikKICAgICByZXR1cm4g
YS5zdGFydCgpID09IGIuc3RhcnQoKSAmJiBhLmVuZCgpID09IGIuZW5kKCkgJiYgYS5hZmZpbml0
eSgpID09IGIuYWZmaW5pdHkoKSAmJiBhLmlzQmFzZUZpcnN0KCkgPT0gYi5pc0Jhc2VGaXJzdCgp
ICYmIGEuaXNEaXJlY3Rpb25hbCgpID09IGIuaXNEaXJlY3Rpb25hbCgpOwogfQogCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGEsIGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDMwMzZjZDMyZDZjZDgzMmMyMjAyODNhODQ0
NWE4OTlhNWE2NmNhM2MuLjcxNzgzNTBkMDAwMmJkOTBlMTViNjQ1NGFhNTBhYjQ2NmU0YTg1OWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTIyMCw3ICsyMjAs
NyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOb2RlKiBub2RlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQogewogICAgIEFTU0VSVChub2RlKTsKIAotICAg
IGlmIChub2RlLT5kb2N1bWVudCgpICE9IG1fZG9jdW1lbnQpCisgICAgaWYgKCZub2RlLT5kb2N1
bWVudCgpICE9ICZtX2RvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8RG9jdW1l
bnQ+IHByb3RlY3RvcihtX2RvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgKaW5kZXggYzNhOGViZWQ5N2JjNzUyN2EyMzVk
ZDhmN2FlOTM0NjFkNWRkYzBmZC4uZjkyZGIyYzVhZTk1Y2M2YWEwNDlkODcxNjBlYzA5N2Y1MTgz
MTA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyLmgKQEAgLTM5LDYgKzM5LDcgQEAgc3RydWN0IEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXIgewogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBwcm9jZXNzSWRlbnRpZmllciAmJiBpdGVtSWRlbnRp
ZmllcjsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+IGRlY29kZShEZWNv
ZGVyJik7CkBAIC02MSwxNiArNjIsNiBAQCBpbmxpbmUgY29uc3QgY2hhciogQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllcjo6bG9nU3RyaW5nKCkgY29uc3QKIAogI2VuZGlmCiAKLWlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgYSwgY29uc3QgQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciYgYikKLXsKLSAgICByZXR1cm4gYS5wcm9jZXNzSWRlbnRp
ZmllciA9PSBiLnByb2Nlc3NJZGVudGlmaWVyICYmICBhLml0ZW1JZGVudGlmaWVyID09IGIuaXRl
bUlkZW50aWZpZXI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllciYgYSwgY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgYikK
LXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgog
dm9pZCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QuaAppbmRleCBlNmFiMWVhNTdiMTRkMjFkOTgxM2RmN2ZlZGEwYzY1
NmM5ZDBhN2Y0Li42ZjNmZGE5NzQxMTUyMDAxZDVjYTQ3MjkzYjJmYjkxODM1MjFjZDNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGluZ0VsZW1lbnRM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVt
ZW50TGlzdC5oCkBAIC02OCw5ICs2OCw4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICB2
b2lkIHJlcGxhY2VFbGVtZW50KFJlZjxIVE1MU3RhY2tJdGVtPiYmIGl0ZW0pIHsgbV9pdGVtID0g
V1RGTW92ZShpdGVtKTsgfQogCi0gICAgICAgIC8vIE5lZWRlZCBmb3IgdXNlIHdpdGggVmVjdG9y
LiAgVGhlc2UgYXJlIHN1cGVyLWhvdCBhbmQgbXVzdCBiZSBpbmxpbmUuCisgICAgICAgIC8vIE5l
ZWRlZCBmb3IgdXNlIHdpdGggVmVjdG9yLiBTdXBlci1ob3QgYW5kIG11c3QgYmUgaW5saW5lLgog
ICAgICAgICBib29sIG9wZXJhdG9yPT0oRWxlbWVudCogZWxlbWVudCkgY29uc3QgeyByZXR1cm4g
IW1faXRlbSA/ICFlbGVtZW50IDogJm1faXRlbS0+ZWxlbWVudCgpID09IGVsZW1lbnQ7IH0KLSAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0IHsgcmV0dXJuICFt
X2l0ZW0gPyAhIWVsZW1lbnQgOiAmbV9pdGVtLT5lbGVtZW50KCkgIT0gZWxlbWVudDsgfQogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPEhUTUxTdGFja0l0ZW0+IG1faXRlbTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAppbmRleCA4OTUxNmIx
YjliZWU5ZTE5YzY2MTg1MWMyMjQ3ODJiOGFmNWQ2NDkwLi4xZWQwOTBhNzYwY2I2ZTMyZWQ5YjBh
MGJjNzZiZjBhNjViM2VlYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFBhcnNlcklkaW9tcy5oCkBAIC03MSw3ICs3MSw3IEBAIFdFQkNPUkVfRVhQT1JUIEV4cGVjdGVk
PHVuc2lnbmVkLCBIVE1MSW50ZWdlclBhcnNpbmdFcnJvcj4gcGFyc2VIVE1MTm9uTmVnYXRpdmVJ
CiBzdGQ6Om9wdGlvbmFsPGludD4gcGFyc2VWYWxpZEhUTUxOb25OZWdhdGl2ZUludGVnZXIoU3Ry
aW5nVmlldyk7CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3ZhbGlkLWZsb2F0
aW5nLXBvaW50LW51bWJlcgotc3RkOjpvcHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxv
YXRpbmdQb2ludE51bWJlcihTdHJpbmdWaWV3KTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9u
YWw8ZG91YmxlPiBwYXJzZVZhbGlkSFRNTEZsb2F0aW5nUG9pbnROdW1iZXIoU3RyaW5nVmlldyk7
CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2luZnJhc3RydWN0
dXJlLmh0bWwjcnVsZXMtZm9yLXBhcnNpbmctZmxvYXRpbmctcG9pbnQtbnVtYmVyLXZhbHVlcwog
VmVjdG9yPGRvdWJsZT4gcGFyc2VIVE1MTGlzdE9mT2ZGbG9hdGluZ1BvaW50TnVtYmVyVmFsdWVz
KFN0cmluZ1ZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKaW5kZXggNzJmNDIzZmY2MTI3N2VlZjRiZDM1NjMy
OGM0NmQzYmQ5MTMxZmY2NS4uYzZhZTczYjlmNzBjMzc2NTAwOTY1NzY4ODAyOGY3ZGFmYmNhZDk2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oCkBAIC0yMzQsMTMgKzIzNCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGJvb2wgaXNSZWdleCB7IGZhbHNlIH07CiAgICAgICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6Ok5ldHdvcmtTdGFnZSBuZXR3b3JrU3RhZ2UgeyBJbnNwZWN0b3I6OlByb3RvY29sOjpO
ZXR3b3JrOjpOZXR3b3JrU3RhZ2U6OlJlc3BvbnNlIH07CiAKLSAgICAgICAgaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBJbnRlcmNlcHQmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gdXJsID09IG90aGVyLnVybAotICAgICAgICAgICAgICAgICYmIGNhc2VT
ZW5zaXRpdmUgPT0gb3RoZXIuY2FzZVNlbnNpdGl2ZQotICAgICAgICAgICAgICAgICYmIGlzUmVn
ZXggPT0gb3RoZXIuaXNSZWdleAotICAgICAgICAgICAgICAgICYmIG5ldHdvcmtTdGFnZSA9PSBv
dGhlci5uZXR3b3JrU3RhZ2U7Ci0gICAgICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEludGVyY2VwdCYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9OwogICAgIFZlY3RvcjxJbnRl
cmNlcHQ+IG1faW50ZXJjZXB0czsKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRy
PFBlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0Pj4gbV9wZW5kaW5nSW50ZXJjZXB0UmVxdWVzdHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCmluZGV4IDhiYTljZDdhYzViYmZjNWJlM2QzMTBj
NGMyOTk1NDM4ZGFkNzNmYTkuLjRkNzQzZjM3NzRlMzkwNzZlNWE5YmNkN2JkNzMyOTEzOTAyZjEz
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCkBAIC01NSwxOCArNTUsOSBAQCB1
c2luZyBJbmxpbmVMYXlvdXRSZWN0ID0gTGF5b3V0UmVjdDsKIHN0cnVjdCBQb3NpdGlvbiB7CiAg
ICAgb3BlcmF0b3IgTGF5b3V0VW5pdCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9CiAgICAgTGF5
b3V0VW5pdCB2YWx1ZTsKKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihQb3NpdGlvbiwgUG9z
aXRpb24pID0gZGVmYXVsdDsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBQb3Np
dGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpCi17Ci0gICAgcmV0dXJuIGEudmFsdWUgPCBiLnZh
bHVlOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25z
dCBQb3NpdGlvbiYgYikKLXsKLSAgICByZXR1cm4gYS52YWx1ZSA9PSBiLnZhbHVlOwotfQotCiBz
dHJ1Y3QgUG9pbnQgewogICAgIC8vIEZJWE1FOiBVc2UgUG9zaXRpb248SG9yaXpvbnRhbD4sIFBv
c2l0aW9uPFZlcnRpY2FsPiB0byBhdm9pZCB0b3AvbGVmdCB2cy4geC95IGNvbmZ1c2lvbi4KICAg
ICBMYXlvdXRVbml0IHg7IC8vIGxlZnQKQEAgLTE5NiwyMyArMTg3LDExIEBAIGlubGluZSBJbmxp
bmVMYXlvdXRVbml0IG1heElubGluZUxheW91dFVuaXQoKQogfQogCiBzdHJ1Y3QgU2xvdFBvc2l0
aW9uIHsKLSAgICBTbG90UG9zaXRpb24oKSA9IGRlZmF1bHQ7Ci0gICAgU2xvdFBvc2l0aW9uKHNp
emVfdCBjb2x1bW4sIHNpemVfdCByb3cpOwotCiAgICAgc2l6ZV90IGNvbHVtbiB7IDAgfTsKICAg
ICBzaXplX3Qgcm93IHsgMCB9OwotfTsKLQotaW5saW5lIFNsb3RQb3NpdGlvbjo6U2xvdFBvc2l0
aW9uKHNpemVfdCBjb2x1bW4sIHNpemVfdCByb3cpCi0gICAgOiBjb2x1bW4oY29sdW1uKQotICAg
ICwgcm93KHJvdykKLXsKLX0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTbG90UG9z
aXRpb24mIGEsIGNvbnN0IFNsb3RQb3NpdGlvbiYgYikKLXsKLSAgICByZXR1cm4gYS5jb2x1bW4g
PT0gYi5jb2x1bW4gJiYgYS5yb3cgPT0gYi5yb3c7Ci19CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNsb3RQb3NpdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKK307CiAKIHN0cnVjdCBDZWxsU3Bh
biB7CiAgICAgc2l6ZV90IGNvbHVtbiB7IDEgfTsKQEAgLTIyOSw3ICsyMDgsNyBAQCBzdHJ1Y3Qg
U2xvdFBvc2l0aW9uSGFzaCB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRv
RW1wdHlPckRlbGV0ZWQgPSB0cnVlOwogfTsKIHRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8
V2ViQ29yZTo6TGF5b3V0OjpTbG90UG9zaXRpb24+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29y
ZTo6TGF5b3V0OjpTbG90UG9zaXRpb24+IHsKLSAgICBzdGF0aWMgV2ViQ29yZTo6TGF5b3V0OjpT
bG90UG9zaXRpb24gZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIFdlYkNvcmU6OkxheW91dDo6U2xvdFBv
c2l0aW9uKDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOyB9CisgICAgc3Rh
dGljIFdlYkNvcmU6OkxheW91dDo6U2xvdFBvc2l0aW9uIGVtcHR5VmFsdWUoKSB7IHJldHVybiB7
IDAsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgfTsgfQogCiAgICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkxheW91dDo6U2xvdFBvc2l0aW9u
JiBzbG90KSB7IHNsb3QuY29sdW1uID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KTsgfQogICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkxheW91
dDo6U2xvdFBvc2l0aW9uJiBzbG90KSB7IHJldHVybiBzbG90LmNvbHVtbiA9PSBzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKaW5kZXggZDM1Zjk0MjBlNWE3MDZhNzgyMzRkYzkz
ZTA5MzdkZmNlZTM3YzFjNy4uNThiOTQxNGE0NjM1Nzg5ZGQwNmE5ZDQxNmVjM2YyYzU4NzU2NDk1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0
LmNwcApAQCAtMTAyLDcgKzEwMiw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBGbG9hdFBhaXImIG9w
ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudDsgfQogICAgIEl0ZXJhdG9yJiBvcGVy
YXRvcisrKCk7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJikgY29uc3Q7Ci0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJikgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBzZXQoUG9zaXRpb25JbkNvbnRleHRSb290IHZlcnRpY2FsUG9zaXRpb24pOwpAQCAt
NzMwLDExICs3MjksNiBAQCBib29sIEl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsK
IH0KIAotYm9vbCBJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCiB9CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxldmVsQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oCmluZGV4IDUyOWEyMThlNTJkNTEwODEyZDhl
ZTk3ZTVjZjFhM2I0ODRjMDUxMDQuLjRjNDc1MjM2NmIxZDQ5YTI2YjZiMmU3NDlhNGRjYjI2ZjE0
YmU3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxldmVsQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaApAQCAtNTMsNyArNTMsNyBA
QCBwdWJsaWM6CiAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMv
I2xheW91dC1ib3VuZHMKICAgICBzdHJ1Y3QgTGF5b3V0Qm91bmRzIHsKICAgICAgICAgSW5saW5l
TGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBhc2NlbnQgKyBkZXNjZW50OyB9Ci0g
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMYXlvdXRCb3VuZHMmIG90aGVyKSBjb25zdCB7
IHJldHVybiBhc2NlbnQgPT0gb3RoZXIuYXNjZW50ICYmIGRlc2NlbnQgPT0gb3RoZXIuZGVzY2Vu
dDsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGF5b3V0Qm91bmRzJikgY29uc3Qg
PSBkZWZhdWx0OwogCiAgICAgICAgIElubGluZUxheW91dFVuaXQgYXNjZW50IHsgMCB9OwogICAg
ICAgICBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oCmluZGV4IDgxM2Y1
YjBlNjU5MDM0MTNmZjQ2MmU0OWUxZjg5Mzc4MTg2MzZjN2UuLjE4MGY2MGI5NmU0YjJkOWFhMmQz
NDU2ZTVjMmFhMDQyYzVjOGFjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oCkBAIC0xMTksMTAgKzExOSw3IEBAIHB1
YmxpYzoKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWF0RW5k
KCk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3hJdGVyYXRvciYpIGNvbnN0Owot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCb3hJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KICAgICBib29sIG9wZXJhdG9yPT0oRW5kSXRlcmF0
b3IpIGNvbnN0IHsgcmV0dXJuIGF0RW5kKCk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oRW5kSXRl
cmF0b3IpIGNvbnN0IHsgcmV0dXJuICFhdEVuZCgpOyB9CiAKICAgICBjb25zdCBCb3gmIG9wZXJh
dG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fYm94OyB9CiAgICAgY29uc3QgQm94KiBvcGVyYXRvci0+
KCkgY29uc3QgeyByZXR1cm4gJm1fYm94OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmgK
aW5kZXggYjU5YWI4MGU4Y2MxMjRkMDk1YTViMTEzYTE5YzU3NmZjMWViYTg1NS4uZjI4MmRkZTA4
MWQ0ZmU5MDVhOTAxYWUxZTFlNWY2ODc2YTM3MGI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TGVnYWN5UGF0aC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveExlZ2Fj
eVBhdGguaApAQCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHsgaW5s
aW5lRmxvd0JveCgpLT5sYXN0TGVhZkRlc2NlbmRhbnQoKSB9OwogICAgIH0KIAotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBCb3hMZWdhY3lQYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9p
bmxpbmVCb3ggPT0gb3RoZXIubV9pbmxpbmVCb3g7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQm94TGVnYWN5UGF0aCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGJvb2wgYXRFbmQoKSBj
b25zdCB7IHJldHVybiAhbV9pbmxpbmVCb3g7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0aC5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0
aC5oCmluZGV4IDI1MmFhYjhmMzQ0MTE4NzRlMzFmYzI3MjM0ODQ3NGQ3ZGE0ZTcyOWYuLjZhNDk0
YTRhMTQ1NjRlYjMwYjRjYjE0NjRkMTM3MWFiNzNmODc1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveE1vZGVyblBhdGguaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hN
b2Rlcm5QYXRoLmgKQEAgLTIwMiw3ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBs
YXN0OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3hNb2Rlcm5QYXRoJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVDb250ZW50ID09IG90aGVyLm1faW5saW5lQ29u
dGVudCAmJiBtX2JveEluZGV4ID09IG90aGVyLm1fYm94SW5kZXg7IH0KKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQm94TW9kZXJuUGF0aCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGJvb2wg
YXRFbmQoKSBjb25zdCB7IHJldHVybiBtX2JveEluZGV4ID09IGJveGVzKCkuc2l6ZSgpOyB9CiAg
ICAgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94JiBib3goKSBjb25zdCB7IHJldHVybiBib3hlcygp
W21fYm94SW5kZXhdOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vSW5saW5lSXRlcmF0b3JMaW5lLmgKaW5kZXggOGE4ZjA3MGYzNGY0OGU1NTUwZDExMTQ2
OGE5YjZlZWJmOGI0ZjdkNS4uZTY4MWM5YjRkODNhYTI1NzA3MmUxY2M5ZWYzNGQ4YmJiNTUxZDQ5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0
ZXJhdG9yTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9Jbmxp
bmVJdGVyYXRvckxpbmUuaApAQCAtMTEzLDEwICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFhdEVuZCgpOyB9CiAKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTGluZUl0ZXJhdG9yJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IExpbmVJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9Ci0KICAgICBib29sIG9wZXJhdG9yPT0oRW5kTGluZUl0ZXJhdG9yKSBjb25zdCB7
IHJldHVybiBhdEVuZCgpOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KEVuZExpbmVJdGVyYXRvcikg
Y29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KIAogICAgIGNvbnN0IExpbmUmIG9wZXJhdG9yKigp
IGNvbnN0IHsgcmV0dXJuIG1fbGluZTsgfQogICAgIGNvbnN0IExpbmUqIG9wZXJhdG9yLT4oKSBj
b25zdCB7IHJldHVybiAmbV9saW5lOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZUxlZ2FjeVBhdGguaApp
bmRleCAwN2RkYTllOWU3ZjRhY2QxMzAzMzM0NjA4NmFjYTM3NTEzOTI1NTNlLi44NjQyNmI5MmNh
MmJkZWRhY2JkMDg1NDUzNDk1NTRhNmEzMWJmNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0aC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdh
Y3lQYXRoLmgKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgICAgICBtX3Jvb3RJbmxpbmVC
b3ggPSBtX3Jvb3RJbmxpbmVCb3gtPnByZXZSb290Qm94KCk7CiAgICAgfQogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IExpbmVJdGVyYXRvckxlZ2FjeVBhdGgmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX3Jvb3RJbmxpbmVCb3ggPT0gb3RoZXIubV9yb290SW5saW5lQm94OyB9CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IExpbmVJdGVyYXRvckxlZ2FjeVBhdGgmKSBjb25zdCA9IGRlZmF1
bHQ7CiAKICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1fcm9vdElubGluZUJveDsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5l
SXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0lubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaAppbmRleCBlMTc4M2U1NzM5ZTc1ZDky
ZmM1NDdlMzg4ZDc4ZjAwYTI4MDI5ZDhlLi5mMzMzZTIyZDBlN2I4ZDg0MGE1OTQyOTQxMGE1ZjNm
NmQzZDY3ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
SW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmgKQEAgLTkxLDcgKzkx
LDcgQEAgcHVibGljOgogICAgICAgICAtLW1fbGluZUluZGV4OwogICAgIH0KIAotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9pbmxpbmVDb250ZW50ID09IG90aGVyLm1faW5saW5lQ29udGVudCAmJiBtX2xpbmVJ
bmRleCA9PSBvdGhlci5tX2xpbmVJbmRleDsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBM
aW5lSXRlcmF0b3JNb2Rlcm5QYXRoJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBhdEVu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUluZGV4ID09IGxpbmVzKCkuc2l6ZSgpOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5p
bmdCbG9ja0NoYWluSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3IuaAppbmRleCBkNGFjZDJlYzhlYzk1
NmQyOTBkYjIxMmFkZTc3MjJkMDJlNjM0MDkyLi44YjkwNTAwZGM4NjUxNGViNTEwZjU5OTAwNGM3
ZGYzY2EwOTFkMDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvci5o
CkBAIC00MCw4ICs0MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBDb250YWluZXJCb3gqIG9wZXJh
dG9yLT4oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnQ7IH0KIAogICAgIExheW91dENvbnRhaW5p
bmdCbG9ja0NoYWluSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7IH0KLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvciYgb3RoZXIpIGNvbnN0
IHsgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0Owog
CiBwcml2YXRlOgogICAgIGNvbnN0IENvbnRhaW5lckJveCogbV9jdXJyZW50IHsgbnVsbHB0ciB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0RGVz
Y2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXREZXNjZW5kYW50SXRlcmF0b3IuaAppbmRleCBlZThmNjEyODIxYjA0ZTE4M2YzMmNlMmU4NTFi
ZTY1NzJlMWYxZGFmLi4zNmI0ZWU1ZjI5MzE4NDVmNmM0MjQ3MTUyNjdkMGZlYmQ2MzNkODVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXREZXNjZW5k
YW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXREZXNjZW5kYW50SXRlcmF0b3IuaApAQCAtMTEwLDQgKzExMCw1IEBAIGlubGluZSBMYXlvdXRE
ZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPFQ+IGRlc2NlbmRhbnRzT2ZUeXBlKGNvbnN0IENvbnRh
aW5lckJveCYKIAogfQogfQorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRJdGVyYXRvci5oCmluZGV4IDYxYzBkNjFkNmYxODNlNmQyNmNjZTYx
YTY0ZGUwY2YzYTZiMjM4MjAuLmI2ZTViNDJiMmI0ZTU5ZjMxMjNmZDE1M2JmMGZhOWNlMGExMzFj
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEl0
ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SXRl
cmF0b3IuaApAQCAtMjksOCArMjksNyBAQAogCiAjaW5jbHVkZSAiTGF5b3V0SW5pdGlhbENvbnRh
aW5pbmdCbG9jay5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgTGF5b3V0IHsK
K25hbWVzcGFjZSBXZWJDb3JlOjpMYXlvdXQgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNs
YXNzIExheW91dEl0ZXJhdG9yIHsKQEAgLTQyLDcgKzQxLDYgQEAgcHVibGljOgogICAgIGNvbnN0
IFQqIG9wZXJhdG9yLT4oKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMYXlv
dXRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMYXlv
dXRJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwogCiAgICAgTGF5b3V0SXRlcmF0b3ImIHRyYXZlcnNl
TmV4dCgpOwogICAgIExheW91dEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRTaWJsaW5nKCk7CkBAIC0x
OTIsMTQgKzE5MCw2IEBAIGlubGluZSBib29sIExheW91dEl0ZXJhdG9yPFQ+OjpvcGVyYXRvcj09
KGNvbnN0IExheW91dEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gbV9jdXJyZW50
ID09IG90aGVyLm1fY3VycmVudDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUg
Ym9vbCBMYXlvdXRJdGVyYXRvcjxUPjo6b3BlcmF0b3IhPShjb25zdCBMYXlvdXRJdGVyYXRvciYg
b3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCi19CiB9
Ci0jaW5jbHVkZSAiTGF5b3V0Q2hpbGRJdGVyYXRvci5oIgogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qb2xpY3lDb250YWluZXIuaAppbmRleCA0MzFjZjFjNWIyYmQxZjkwM2QxNmJlYWY3
NzEyMGQ3MWE2MTA1OWNkLi4yYzI1MWMwN2U2YTg2OWVjYmE0NWM5NzdhOWI3NjA2NjI4NTNhOGQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q29udGFpbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5lci5oCkBAIC0zNiwxNiArMzYs
MTIgQEAgc3RydWN0IFBvbGljeUNvbnRhaW5lciB7CiAgICAgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3kgY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3k7CiAgICAgLy8gRklYTUU6IENTUCBsaXN0IGFuZCBy
ZWZlcnJlciBwb2xpY3kgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIFBvbGljeUNvbnRhaW5lci4KIAor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQb2xpY3lDb250YWluZXImKSBjb25zdCA9IGRlZmF1
bHQ7CiAgICAgUG9saWN5Q29udGFpbmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQb2xpY3lDb250YWluZXI+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBv
bGljeUNvbnRhaW5lciYgYSwgY29uc3QgUG9saWN5Q29udGFpbmVyJiBiKQotewotICAgIHJldHVy
biBhLmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kgPT0gYi5jcm9zc09yaWdpbkVtYmVkZGVyUG9s
aWN5ICYmIGEuY3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kgPT0gYi5jcm9zc09yaWdpbk9wZW5lclBv
bGljeTsKLX0KLQogaW5saW5lIFBvbGljeUNvbnRhaW5lciBQb2xpY3lDb250YWluZXI6Omlzb2xh
dGVkQ29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKaW5kZXggMzgxZjYyN2FjNjM0YzcyOTViMDlh
M2ZlMjA5N2M0MTY2ZGQ3MWVmMS4uYTc5Mzc0NGViYTkyMzIzYzk3OTMxM2E5ZjU2ZDE5MjczMDhk
MDdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50LmgKQEAgLTc5LDE1ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBTb3VyY2VTaXRlIGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNvdXJjZVNpdGUgeyByZWdpc3RyYWJsZURvbWFp
bi5pc29sYXRlZENvcHkoKSB9OyB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNv
dXJjZVNpdGUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmVn
aXN0cmFibGVEb21haW4gPT0gb3RoZXIucmVnaXN0cmFibGVEb21haW47Ci0gICAgICAgIH0KLQot
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU291cmNlU2l0ZSYgb3RoZXIpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWdpc3RyYWJsZURvbWFpbiAhPSBvdGhlci5y
ZWdpc3RyYWJsZURvbWFpbjsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgU291cmNlU2l0ZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgICAgICBib29sIG1hdGNoZXMo
Y29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgICAgIHsKQEAgLTEyNSwxNSArMTE3LDcgQEAgcHVi
bGljOgogCiAgICAgICAgIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlIGlzb2xhdGVkQ29weSgp
IGNvbnN0IHsgcmV0dXJuIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlIHsgcmVnaXN0cmFibGVE
b21haW4uaXNvbGF0ZWRDb3B5KCkgfTsgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiByZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhlci5yZWdpc3RyYWJsZURv
bWFpbjsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdHRyaWJ1
dGlvbkRlc3RpbmF0aW9uU2l0ZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiByZWdpc3RyYWJsZURvbWFpbiAhPSBvdGhlci5yZWdpc3RyYWJsZURvbWFpbjsKLSAg
ICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXR0cmlidXRpb25EZXN0aW5h
dGlvblNpdGUmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICAgICAgYm9vbCBtYXRjaGVzKGNvbnN0
IFVSTCYgdXJsKSBjb25zdAogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKaW5kZXggODNiODYxM2NmZGEyMzI5YWUz
MGJiZjZhYmMxNGI5OWQ0NDIzN2IwMi4uYjM4NGEyYmViYzE4ODIzNjdkMjU2NTBlMzRhODRlZGU2
MTcwNDRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3QuaApAQCAtNDksMTUgKzQ5LDcgQEAgc3RydWN0IFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdCB7CiAgICAgQWxnb3JpdGhtIGFsZ29yaXRobTsKICAgICBWZWN0b3I8dWlu
dDhfdD4gdmFsdWU7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhbGdvcml0
aG0gPT0gb3RoZXIuYWxnb3JpdGhtICYmIHZhbHVlID09IG90aGVyLnZhbHVlOwotICAgIH0KLQot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QmIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAg
IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
JikgY29uc3QgPSBkZWZhdWx0OwogfTsKIAogc3RydWN0IEVuY29kZWRSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VIYW5kbGUuaAppbmRleCBmZTBjNWVlMWQwOWEyNWYzZDU4ZDQ4MjlhOGZmY2I2NmRk
OGJlODk2Li4yMGZmMDczNWU4NDA4NzY5ZmU0YmM0MTA3NDQ0MmRiM2I5OTQ0NzdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaApA
QCAtNzUsNyArNzUsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGUmIG8pIGNvbnN0IHsgcmV0dXJuIG9wZXJhdG9yPT0oc3RhdGljX2Nh
c3Q8Y29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlJj4obykpOyB9CiAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSYgbykgY29uc3QgeyByZXR1cm4g
Z2V0KCkgPT0gby5nZXQoKTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDYWNoZWRSZXNv
dXJjZUhhbmRsZUJhc2UmIG8pIGNvbnN0IHsgcmV0dXJuIGdldCgpICE9IG8uZ2V0KCk7IH0KIH07
CiAKIHRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBSUj4gYm9vbCBvcGVyYXRvcj09KGNvbnN0IENh
Y2hlZFJlc291cmNlSGFuZGxlPFI+JiBoLCBjb25zdCBSUiogcmVzKSAKQEAgLTg2LDEzICs4NSw1
IEBAIHRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBSUj4gYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJS
KiByZXMsIGNvbnN0IENhY2hlZFJlc291cmNlCiB7IAogICAgIHJldHVybiBoLmdldCgpID09IHJl
czsgCiB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgUlI+IGJvb2wgb3BlcmF0b3IhPShjb25z
dCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxSPiYgaCwgY29uc3QgUlIqIHJlcykgCi17IAotICAgIHJl
dHVybiBoLmdldCgpICE9IHJlczsgCi19Ci10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgUlI+IGJv
b2wgb3BlcmF0b3IhPShjb25zdCBSUiogcmVzLCBjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxS
PiYgaCkgCi17IAotICAgIHJldHVybiBoLmdldCgpICE9IHJlczsgCi19CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2lu
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IGQ3NzNkOWIzMTJi
MzZhOTU2MGRjZjQ0ZDUxOGIxMWNiYzBhZGNhZmIuLjdjYTBmZmNkN2E3NDJhMmY1MzcxNmE3MWNk
YzI5NzhiYTZkNGVlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3Jp
Z2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtMzYsNyAr
MzYsNyBAQCBzdHJ1Y3QgQ2xpZW50T3JpZ2luIHsKICAgICBzdGF0aWMgQ2xpZW50T3JpZ2luIGVt
cHR5S2V5KCkgeyByZXR1cm4geyB9OyB9CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7Ci0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENsaWVudE9yaWdpbiYpIGNvbnN0OworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDbGllbnRPcmlnaW4mKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3JpZ2lu
PiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNTksMTEgKzU5LDYgQEAgaW5saW5lIHVuc2lnbmVkIENs
aWVudE9yaWdpbjo6aGFzaCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1l
bW9yeShoYXNoZXMsIHNpemVvZihoYXNoZXMpKTsKIH0KIAotaW5saW5lIGJvb2wgQ2xpZW50T3Jp
Z2luOjpvcGVyYXRvcj09KGNvbnN0IENsaWVudE9yaWdpbiYgb3RoZXIpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHRvcE9yaWdpbiA9PSBvdGhlci50b3BPcmlnaW4gJiYgY2xpZW50T3JpZ2luID09IG90
aGVyLmNsaWVudE9yaWdpbjsKLX0KLQogaW5saW5lIENsaWVudE9yaWdpbiBDbGllbnRPcmlnaW46
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsgdG9wT3JpZ2luLmlzb2xhdGVk
Q29weSgpLCBjbGllbnRPcmlnaW4uaXNvbGF0ZWRDb3B5KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCmluZGV4IDYwMmQ2MGM5Yzk3MDU1ZjY0OGNhNDhmZmZiZjljNDJiNWMxNmY5MzMuLjg3NGM0
N2EyY2Y4YmM0YWMyYWVmOWMxYmYzNjI4ZmNkM2EwNmE1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaApAQCAtODYzLDcgKzg2Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
ZmxvYXQ+IHdpZHRoOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0PiBoZWlnaHQ7CiAKLSAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE92ZXJyaWRlVmlld3BvcnRTaXplJiByaHMpIGNv
bnN0IHsgcmV0dXJuIHJocy53aWR0aCA9PSB3aWR0aCAmJiByaHMuaGVpZ2h0ID09IGhlaWdodDsg
fQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3ZlcnJpZGVWaWV3cG9ydFNpemUmKSBj
b25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKICAgICBGbG9hdFNpemUgY2FsY3VsYXRlU2l6ZUZvckNT
U1ZpZXdwb3J0VW5pdHNPdmVycmlkZShzdGQ6Om9wdGlvbmFsPE92ZXJyaWRlVmlld3BvcnRTaXpl
PikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsV2luZG93
SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVy
LmgKaW5kZXggYzA0NjdkN2M3ZGMwOGE2YmI2YmJjOTBmYTk0Mjc0OThiYTZjYmM0Mi4uNzMxNTIx
YjM2ODQwMzJjZmJjOWNlYzJiY2QyYzhmNDdhNGRlZWVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9HbG9iYWxXaW5kb3dJZGVudGlmaWVyLmgKQEAgLTM5LDE3ICszOSwxNCBAQCBzdHJ1Y3Qg
R2xvYmFsV2luZG93SWRlbnRpZmllciB7CiAgICAgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lk
ZW50aWZpZXI7CiAgICAgV2luZG93SWRlbnRpZmllciB3aW5kb3dJZGVudGlmaWVyOwogCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEdsb2JhbFdpbmRvd0lkZW50aWZpZXImKSBjb25zdCA9IGRl
ZmF1bHQ7CisKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8R2xvYmFsV2luZG93SWRlbnRpZmllcj4g
ZGVjb2RlKERlY29kZXImKTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgR2xv
YmFsV2luZG93SWRlbnRpZmllciYgYSwgY29uc3QgR2xvYmFsV2luZG93SWRlbnRpZmllciYgYikK
LXsKLSAgICByZXR1cm4gYS5wcm9jZXNzSWRlbnRpZmllciA9PSBiLnByb2Nlc3NJZGVudGlmaWVy
ICYmICBhLndpbmRvd0lkZW50aWZpZXIgPT0gYi53aW5kb3dJZGVudGlmaWVyOwotfQotCiBpbmxp
bmUgdW5zaWduZWQgR2xvYmFsV2luZG93SWRlbnRpZmllcjo6aGFzaCgpIGNvbnN0CiB7CiAgICAg
dWludDY0X3QgaWRlbnRpZmllcnNbMl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L09yaWdpbkFjY2Vzc0VudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL09yaWdpbkFjY2Vzc0Vu
dHJ5LmgKaW5kZXggZjU1ZjdkOTM4YzcwOWNmMTA2ZmFkZWQ0MWUwZGQxZjRkMGZlN2JhYS4uZTQz
NTQyNTY4M2RiZTk3ZTdkMzlkOWYwNmE4YTFiOTkwNmE1YWY4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvT3JpZ2luQWNjZXNzRW50cnkuaApAQCAtNzMsOSArNzMsNCBAQCBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IE9yaWdpbkFjY2Vzc0VudHJ5JiBhLCBjb25zdCBPcmlnaW5BY2Nlc3NFbnRy
eSYgYikKICAgICAgICAgJiYgYS5pcEFkZHJlc3NTZXR0aW5ncygpID09IGIuaXBBZGRyZXNzU2V0
dGluZ3MoKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPcmlnaW5BY2Nlc3NF
bnRyeSYgYSwgY29uc3QgT3JpZ2luQWNjZXNzRW50cnkmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9
PSBiKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGU0OWNkY2QzNjJhZTdkYWI1ZGNhMzE4NjJiYTk1
ZThmYjdlN2VmOWUuLjk2MDI4ODFkMGJkZjg0YWQyNmQxNGRlNzU0YWEwMjYzNDc4YTFkNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTEzNywxNCAr
MTM3LDQgQEAgU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3VyaXR5T3JpZ2luRGF0YTo6aXNvbGF0ZWRD
b3B5KCkgJiYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIG9wZXJhdG9yPT0oY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBhLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGIpCi17Ci0g
ICAgaWYgKCZhID09ICZiKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBhLnBy
b3RvY29sID09IGIucHJvdG9jb2wKLSAgICAgICAgJiYgYS5ob3N0ID09IGIuaG9zdAotICAgICAg
ICAmJiBhLnBvcnQgPT0gYi5wb3J0OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuaAppbmRleCBmZGZjODY0M2VhZGYwNDY4
MDFhMWVlODA5NmMxNWU1NzNmYjM2YTQ1Li5hYTgzYjhhNWI1NGQwYzg0MTkwYjIzYmU5Y2FjNjQ0
ZjBmMWE2MDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmgKQEAg
LTc5LDEyICs3OSwxNCBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKICAgICB7CiAgICAg
ICAgIHJldHVybiBwcm90b2NvbC5pc051bGwoKSAmJiBob3N0LmlzTnVsbCgpICYmIHBvcnQgPT0g
c3RkOjpudWxsb3B0OwogICAgIH0KLSAgICAKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdCA9IGRlZmF1bHQ7CisKICAgICBib29sIGlzSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBwcm90b2NvbC5p
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOwogICAgIH0KLSAgICAKKwogICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtOTIs
OSArOTQsNiBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhIHsKICNlbmRpZgogfTsKIAotV0VC
Q09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpOwotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIGZpcnN0LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY29u
ZCkgeyByZXR1cm4gIShmaXJzdCA9PSBzZWNvbmQpOyB9Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAppbmRl
eCAxNDYzNjJjNTJhZDBkYzMxZjg1ODhkZDRkM2U3YTM5ODFiZDU1YzI3Li5jZTAzNDUyMDU0YWE1
NzcxM2U1M2VmZDBkMjVkMTc0NjhkYTQ3YWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmll
d3BvcnRDb25maWd1cmF0aW9uLmgKQEAgLTU3LDEzICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAg
Ym9vbCBoZWlnaHRJc1NldCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgaW5pdGlhbFNjYWxlSXNT
ZXQgeyBmYWxzZSB9OwogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXJhbWV0ZXJz
JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHdpZHRoID09IG90
aGVyLndpZHRoICYmIGhlaWdodCA9PSBvdGhlci5oZWlnaHQKLSAgICAgICAgICAgICAgICAmJiBp
bml0aWFsU2NhbGUgPT0gb3RoZXIuaW5pdGlhbFNjYWxlICYmIGluaXRpYWxTY2FsZUlnbm9yaW5n
TGF5b3V0U2NhbGVGYWN0b3IgPT0gb3RoZXIuaW5pdGlhbFNjYWxlSWdub3JpbmdMYXlvdXRTY2Fs
ZUZhY3RvciAmJiBtaW5pbXVtU2NhbGUgPT0gb3RoZXIubWluaW11bVNjYWxlICYmIG1heGltdW1T
Y2FsZSA9PSBvdGhlci5tYXhpbXVtU2NhbGUKLSAgICAgICAgICAgICAgICAmJiBhbGxvd3NVc2Vy
U2NhbGluZyA9PSBvdGhlci5hbGxvd3NVc2VyU2NhbGluZyAmJiBhbGxvd3NTaHJpbmtUb0ZpdCA9
PSBvdGhlci5hbGxvd3NTaHJpbmtUb0ZpdCAmJiBhdm9pZHNVbnNhZmVBcmVhID09IG90aGVyLmF2
b2lkc1Vuc2FmZUFyZWEKLSAgICAgICAgICAgICAgICAmJiB3aWR0aElzU2V0ID09IG90aGVyLndp
ZHRoSXNTZXQgJiYgaGVpZ2h0SXNTZXQgPT0gb3RoZXIuaGVpZ2h0SXNTZXQgJiYgaW5pdGlhbFNj
YWxlSXNTZXQgPT0gb3RoZXIuaW5pdGlhbFNjYWxlSXNTZXQ7Ci0gICAgICAgIH0KKyAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFBhcmFtZXRlcnMmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAg
fTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFZpZXdwb3J0Q29uZmlndXJhdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXgg
MjEwMDc2ODQ0NmJkMzg1NGI0MGI2NDUwZjIwYmU1YWUyNTNkYzhhOC4uYmNhZTU5OThiNTU5MWE1
NzUxZjM1YTNhYjQ4ZDFmMjJlMGYxYzIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGVmZmVj
dGl2ZVZpb2xhdGVkRGlyZWMKICAgICAgICAgbV9jbGllbnQtPmVucXVldWVTZWN1cml0eVBvbGlj
eVZpb2xhdGlvbkV2ZW50KFdURk1vdmUodmlvbGF0aW9uRXZlbnRJbml0KSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCptX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVu
dCgpID09IGRvY3VtZW50KQorICAgICAgICBpZiAoZWxlbWVudCAmJiAmZWxlbWVudC0+ZG9jdW1l
bnQoKSA9PSAmZG9jdW1lbnQpCiAgICAgICAgICAgICBlbGVtZW50LT5lbnF1ZXVlU2VjdXJpdHlQ
b2xpY3lWaW9sYXRpb25FdmVudChXVEZNb3ZlKHZpb2xhdGlvbkV2ZW50SW5pdCkpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBkb2N1bWVudC5lbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRp
b25FdmVudChXVEZNb3ZlKHZpb2xhdGlvbkV2ZW50SW5pdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAppbmRleCA3YTk0
YmE4NGI4YWFjNTMxYWM0YWQ5NDM2YTJkODBiYmRiMzBhNWQ4Li42MjViNzIzZjA2ZTNkNzQ3M2Ux
ZmU4NGYzYzMxYzc0MDVlYzJiOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaApAQCAtMzksMTIgKzM5LDEzIEBAIGNs
YXNzIFNjcm9sbGFibGVBcmVhOwogY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgUmVuZGVyU3R5bGU7
CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IFNuYXBPZmZzZXQgewotICAgIFQgb2Zm
c2V0OwordGVtcGxhdGU8dHlwZW5hbWUgVW5pdFR5cGU+IHN0cnVjdCBTbmFwT2Zmc2V0IHsKKyAg
ICBVbml0VHlwZSBvZmZzZXQ7CiAgICAgU2Nyb2xsU25hcFN0b3Agc3RvcDsKICAgICBib29sIGhh
c1NuYXBBcmVhTGFyZ2VyVGhhblZpZXdwb3J0OwogICAgIFZlY3RvcjxzaXplX3Q+IHNuYXBBcmVh
SW5kaWNlczsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTbmFwT2Zmc2V0JikgY29uc3Qg
PSBkZWZhdWx0OwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFVuaXRUeXBlLCB0eXBlbmFtZSBS
ZWN0VHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0NvbnN0cmFpbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb25zdHJhaW50cy5oCmluZGV4IGUzNDliODBhMjA1MGJlNGUzZWVmNzJhYWQyYzlhNjdmMzc2
MzU2OGYuLmU0MzcxY2Q2OGRlY2JhMTAzZmFiZTMyNDRmMzRkMjcxY2M5N2FhODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMu
aApAQCAtMzUsMTMgKzM1LDcgQEAgY2xhc3MgQWJzb2x1dGVQb3NpdGlvbkNvbnN0cmFpbnRzIHsK
IHB1YmxpYzoKICAgICBBYnNvbHV0ZVBvc2l0aW9uQ29uc3RyYWludHMoKSA9IGRlZmF1bHQ7CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWJzb2x1dGVQb3NpdGlvbkNvbnN0cmFpbnRzJiBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhbGlnbm1lbnRPZmZzZXQoKSA9PSBv
dGhlci5hbGlnbm1lbnRPZmZzZXQoKQotICAgICAgICAgICAgJiYgbGF5ZXJQb3NpdGlvbkF0TGFz
dExheW91dCgpID09IG90aGVyLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKTsKLSAgICB9Ci0K
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQWJzb2x1dGVQb3NpdGlvbkNvbnN0cmFpbnRzJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQWJzb2x1dGVQb3NpdGlvbkNvbnN0cmFpbnRzJikgY29uc3QgPSBkZWZhdWx0
OwogICAgIAogICAgIEZsb2F0U2l6ZSBhbGlnbm1lbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X2FsaWdubWVudE9mZnNldDsgfQogICAgIHZvaWQgc2V0QWxpZ25tZW50T2Zmc2V0KEZsb2F0U2l6
ZSBvZmZzZXQpIHsgbV9hbGlnbm1lbnRPZmZzZXQgPSBvZmZzZXQ7IH0KQEAgLTg0LDYgKzc4LDgg
QEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSBhbGlnbm1lbnRPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2FsaWdubWVudE9mZnNldDsgfQogICAgIHZvaWQgc2V0QWxpZ25tZW50T2Zmc2V0KEZsb2F0
U2l6ZSBvZmZzZXQpIHsgbV9hbGlnbm1lbnRPZmZzZXQgPSBvZmZzZXQ7IH0KIAorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBWaWV3cG9ydENvbnN0cmFpbnRzJikgY29uc3QgPSBkZWZhdWx0Owor
CiBwcm90ZWN0ZWQ6CiAgICAgVmlld3BvcnRDb25zdHJhaW50cygpCiAgICAgICAgIDogbV9hbmNo
b3JFZGdlcygwKQpAQCAtMTA3LDE1ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRQ
b2ludCYgbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJQ
b3NpdGlvbkF0TGFzdExheW91dDsgfQogICAgIHZvaWQgc2V0TGF5ZXJQb3NpdGlvbkF0TGFzdExh
eW91dChGbG9hdFBvaW50IHBvc2l0aW9uKSB7IG1fbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCA9
IHBvc2l0aW9uOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRml4ZWRQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWludHMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YWxpZ25tZW50T2Zmc2V0ID09IG90aGVyLm1fYWxpZ25tZW50T2Zmc2V0Ci0gICAgICAgICAgICAm
JiBtX2FuY2hvckVkZ2VzID09IG90aGVyLm1fYW5jaG9yRWRnZXMKLSAgICAgICAgICAgICYmIG1f
dmlld3BvcnRSZWN0QXRMYXN0TGF5b3V0ID09IG90aGVyLm1fdmlld3BvcnRSZWN0QXRMYXN0TGF5
b3V0Ci0gICAgICAgICAgICAmJiBtX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQgPT0gb3RoZXIu
bV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZp
eGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2
YXRlOgogICAgIENvbnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gRml4ZWRQb3NpdGlvbkNvbnN0cmFpbnQ7IH07CkBAIC0xODAsOCArMTY4LDYgQEAg
cHVibGljOgogICAgICAgICAgICAgJiYgbV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0ID09IG90
aGVyLm1fbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dDsKICAgICB9CiAKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLQogcHJpdmF0ZToKICAgICBDb25zdHJh
aW50VHlwZSBjb25zdHJhaW50VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0aWNreVBv
c2l0aW9uQ29uc3RyYWludDsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCmluZGV4IDg1MTkwNWFhZDY0
YjMyZmQ2ODdhYzMyMjQyZTkwY2ZlMDQ1Y2FjNjAuLmFiZDQ5MDJhYjVhZDJjN2ZkNDQ3MWMxNzIz
ODUwMWNhMjY2NmE4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgKQEAgLTg4LDIwICs4OCw3IEBAIHN0
cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgewogCiAgICAgYm9vbCB1c2VEYXJrQXBwZWFy
YW5jZUZvclNjcm9sbGJhcnMgeyBmYWxzZSB9OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gaG9yaXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPT0gb3RoZXIuaG9yaXpvbnRhbFNjcm9s
bEVsYXN0aWNpdHkKLSAgICAgICAgICAgICYmIHZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9PSBv
dGhlci52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkKLSAgICAgICAgICAgICYmIGhvcml6b250YWxT
Y3JvbGxiYXJNb2RlID09IG90aGVyLmhvcml6b250YWxTY3JvbGxiYXJNb2RlCi0gICAgICAgICAg
ICAmJiB2ZXJ0aWNhbFNjcm9sbGJhck1vZGUgPT0gb3RoZXIudmVydGljYWxTY3JvbGxiYXJNb2Rl
Ci0gICAgICAgICAgICAmJiBob3Jpem9udGFsT3ZlcnNjcm9sbEJlaGF2aW9yID09IG90aGVyLmhv
cml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IKLSAgICAgICAgICAgICYmIHZlcnRpY2FsT3ZlcnNj
cm9sbEJlaGF2aW9yID09IG90aGVyLnZlcnRpY2FsT3ZlcnNjcm9sbEJlaGF2aW9yCi0gICAgICAg
ICAgICAmJiBhbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nID09IG90aGVyLmFsbG93c0hvcml6b250
YWxTY3JvbGxpbmcKLSAgICAgICAgICAgICYmIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nID09IG90
aGVyLmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nCi0gICAgICAgICAgICAmJiBob3Jpem9udGFsU2Ny
b2xsYmFySGlkZGVuQnlTdHlsZSA9PSBvdGhlci5ob3Jpem9udGFsU2Nyb2xsYmFySGlkZGVuQnlT
dHlsZQotICAgICAgICAgICAgJiYgdmVydGljYWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlID09IG90
aGVyLnZlcnRpY2FsU2Nyb2xsYmFySGlkZGVuQnlTdHlsZQotICAgICAgICAgICAgJiYgdXNlRGFy
a0FwcGVhcmFuY2VGb3JTY3JvbGxiYXJzID09IG90aGVyLnVzZURhcmtBcHBlYXJhbmNlRm9yU2Ny
b2xsYmFyczsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcm9sbGFibGVBcmVh
UGFyYW1ldGVycyYpIGNvbnN0ID0gZGVmYXVsdDsKIH07CiAKIGVudW0gY2xhc3MgVmlld3BvcnRS
ZWN0U3RhYmlsaXR5IHsKQEAgLTEyMiwxNCArMTA5LDcgQEAgc3RydWN0IFJlcXVlc3RlZFNjcm9s
bERhdGEgewogICAgIFNjcm9sbENsYW1waW5nIGNsYW1waW5nIHsgU2Nyb2xsQ2xhbXBpbmc6OkNs
YW1wZWQgfTsKICAgICBTY3JvbGxJc0FuaW1hdGVkIGFuaW1hdGVkIHsgU2Nyb2xsSXNBbmltYXRl
ZDo6Tm8gfTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXF1ZXN0ZWRTY3JvbGxEYXRh
JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiByZXF1ZXN0VHlwZSA9PSBvdGhl
ci5yZXF1ZXN0VHlwZQotICAgICAgICAgICAgJiYgc2Nyb2xsUG9zaXRpb24gPT0gb3RoZXIuc2Ny
b2xsUG9zaXRpb24KLSAgICAgICAgICAgICYmIHNjcm9sbFR5cGUgPT0gb3RoZXIuc2Nyb2xsVHlw
ZQotICAgICAgICAgICAgJiYgY2xhbXBpbmcgPT0gb3RoZXIuY2xhbXBpbmcKLSAgICAgICAgICAg
ICYmIGFuaW1hdGVkID09IG90aGVyLmFuaW1hdGVkOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVxdWVzdGVkU2Nyb2xsRGF0YSYpIGNvbnN0ID0gZGVmYXVsdDsKIH07CiAKIGVu
dW0gY2xhc3MgU2Nyb2xsVXBkYXRlVHlwZSA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
ZWNpbWFsLmNwcAppbmRleCA5ZWMwMTcyYTIxYTk4ZGM4MDdhNGMxNjc3NTdlNzM1YWJlMjM1ODQ4
Li44MTE1ZTIwODNhNTE2ODE3ODU2NGI2NzJiYWExODIxNTY5Y2Q5ODRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtMjcwLDE0ICsyNzAsNiBAQCBEZWNpbWFsOjpFbmNvZGVk
RGF0YTo6RW5jb2RlZERhdGEoU2lnbiBzaWduLCBpbnQgZXhwb25lbnQsIHVpbnQ2NF90IGNvZWZm
aWNpZW50KQogICAgIG1fZXhwb25lbnQgPSBzdGF0aWNfY2FzdDxpbnQxNl90PihleHBvbmVudCk7
CiB9CiAKLWJvb2wgRGVjaW1hbDo6RW5jb2RlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgRW5jb2Rl
ZERhdGEmIGFub3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2lnbiA9PSBhbm90aGVyLm1f
c2lnbgotICAgICAgICAmJiBtX2Zvcm1hdENsYXNzID09IGFub3RoZXIubV9mb3JtYXRDbGFzcwot
ICAgICAgICAmJiBtX2V4cG9uZW50ID09IGFub3RoZXIubV9leHBvbmVudAotICAgICAgICAmJiBt
X2NvZWZmaWNpZW50ID09IGFub3RoZXIubV9jb2VmZmljaWVudDsKLX0KLQogRGVjaW1hbDo6RGVj
aW1hbChpbnQzMl90IGkzMikKICAgICA6IG1fZGF0YShpMzIgPCAwID8gTmVnYXRpdmUgOiBQb3Np
dGl2ZSwgMCwgaTMyIDwgMCA/IHN0YXRpY19jYXN0PHVpbnQ2NF90Pigtc3RhdGljX2Nhc3Q8aW50
NjRfdD4oaTMyKSkgOiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oaTMyKSkKIHsKQEAgLTUxNCw1MCAr
NTA2LDE2IEBAIGJvb2wgRGVjaW1hbDo6b3BlcmF0b3I9PShjb25zdCBEZWNpbWFsJiByaHMpIGNv
bnN0CiAgICAgcmV0dXJuIG1fZGF0YSA9PSByaHMubV9kYXRhIHx8IGNvbXBhcmVUbyhyaHMpLmlz
WmVybygpOwogfQogCi1ib29sIERlY2ltYWw6Om9wZXJhdG9yIT0oY29uc3QgRGVjaW1hbCYgcmhz
KSBjb25zdAotewotICAgIGlmIChtX2RhdGEgPT0gcmhzLm1fZGF0YSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gY29tcGFyZVRvKHJocyk7Ci0gICAg
aWYgKHJlc3VsdC5pc05hTigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuICFy
ZXN1bHQuaXNaZXJvKCk7Ci19Ci0KLWJvb2wgRGVjaW1hbDo6b3BlcmF0b3I8KGNvbnN0IERlY2lt
YWwmIHJocykgY29uc3QKLXsKLSAgICBjb25zdCBEZWNpbWFsIHJlc3VsdCA9IGNvbXBhcmVUbyhy
aHMpOwotICAgIGlmIChyZXN1bHQuaXNOYU4oKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiAhcmVzdWx0LmlzWmVybygpICYmIHJlc3VsdC5pc05lZ2F0aXZlKCk7Ci19Ci0KLWJv
b2wgRGVjaW1hbDo6b3BlcmF0b3I8PShjb25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Ci17Ci0gICAg
aWYgKG1fZGF0YSA9PSByaHMubV9kYXRhKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjb25z
dCBEZWNpbWFsIHJlc3VsdCA9IGNvbXBhcmVUbyhyaHMpOwotICAgIGlmIChyZXN1bHQuaXNOYU4o
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiByZXN1bHQuaXNaZXJvKCkgfHwg
cmVzdWx0LmlzTmVnYXRpdmUoKTsKLX0KLQotYm9vbCBEZWNpbWFsOjpvcGVyYXRvcj4oY29uc3Qg
RGVjaW1hbCYgcmhzKSBjb25zdAotewotICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gY29tcGFy
ZVRvKHJocyk7Ci0gICAgaWYgKHJlc3VsdC5pc05hTigpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuICFyZXN1bHQuaXNaZXJvKCkgJiYgcmVzdWx0LmlzUG9zaXRpdmUoKTsKLX0K
LQotYm9vbCBEZWNpbWFsOjpvcGVyYXRvcj49KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKK3N0
ZDo6cGFydGlhbF9vcmRlcmluZyBvcGVyYXRvcjw9Pihjb25zdCBEZWNpbWFsJiBhLCBjb25zdCBE
ZWNpbWFsJiBiKQogewotICAgIGlmIChtX2RhdGEgPT0gcmhzLm1fZGF0YSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgY29uc3QgRGVjaW1hbCByZXN1bHQgPSBjb21wYXJlVG8ocmhzKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGEuY29tcGFyZVRvKGIpOwogICAgIGlmIChyZXN1bHQuaXNOYU4oKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiByZXN1bHQuaXNaZXJvKCkgfHwgIXJl
c3VsdC5pc05lZ2F0aXZlKCk7CisgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6
OnVub3JkZXJlZDsKKyAgICBpZiAocmVzdWx0LmlzWmVybygpKQorICAgICAgICByZXR1cm4gc3Rk
OjpwYXJ0aWFsX29yZGVyaW5nOjplcXVpdmFsZW50OworICAgIGlmIChyZXN1bHQuaXNOZWdhdGl2
ZSgpKQorICAgICAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjpsZXNzOworICAgIHJl
dHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXI7CiB9CiAKIERlY2ltYWwgRGVjaW1h
bDo6YWJzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2lt
YWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuaAppbmRleCA1OWNkYjE4ZDgy
MWM2YmM2MWFiOThiZTU4ZWE4N2E1MGRmMGI1MzE5Li43MTkyZGFlNWRlYTg2NWI0Y2Y0OTFlYzRl
MTk5YjQxZmFlN2Y5NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNp
bWFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oCkBAIC02Miw4ICs2
Miw3IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIEVuY29kZWREYXRhKFNpZ24sIGlu
dCBleHBvbmVudCwgdWludDY0X3QgY29lZmZpY2llbnQpOwogCi0gICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFbmNvZGVkRGF0YSYpIGNvbnN0OwotICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgRW5jb2RlZERhdGEmIGFub3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KGFu
b3RoZXIpOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbmNvZGVkRGF0YSYpIGNv
bnN0ID0gZGVmYXVsdDsKIAogICAgICAgICB1aW50NjRfdCBjb2VmZmljaWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fY29lZmZpY2llbnQ7IH0KICAgICAgICAgaW50IGNvdW50RGlnaXRzKCkgY29uc3Q7
CkBAIC0xMDYsMTEgKzEwNSw3IEBAIHB1YmxpYzoKICAgICBEZWNpbWFsIG9wZXJhdG9yLSgpIGNv
bnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgRGVjaW1hbCYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I8
KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgRGVjaW1h
bCYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IERlY2ltYWwmKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yPj0oY29uc3QgRGVjaW1hbCYpIGNvbnN0OworICAgIGZyaWVuZCBzdGQ6
OnBhcnRpYWxfb3JkZXJpbmcgb3BlcmF0b3I8PT4oY29uc3QgRGVjaW1hbCYsIGNvbnN0IERlY2lt
YWwmKTsKIAogICAgIERlY2ltYWwgb3BlcmF0b3IrKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKICAg
ICBEZWNpbWFsIG9wZXJhdG9yLShjb25zdCBEZWNpbWFsJikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9FdmVudFRyYWNraW5nUmVnaW9ucy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRXZlbnRUcmFja2luZ1JlZ2lvbnMuaAppbmRleCAzZDU4YmE1NWVmZDYz
ZWQ5YmFlNDA1MDFlMzA5Yjg2MWZjOWU5YzA1Li5kNmY1YmIxOGM3YzgwZDhjMGNmNzNhODM3MDBl
ZDlkNjZiNWZkYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9FdmVudFRy
YWNraW5nUmVnaW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0V2ZW50VHJhY2tp
bmdSZWdpb25zLmgKQEAgLTU2LDYgKzU2LDUgQEAgc3RydWN0IEV2ZW50VHJhY2tpbmdSZWdpb25z
IHsKIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudFRyYWNraW5nUmVnaW9ucyYsIGNv
bnN0IEV2ZW50VHJhY2tpbmdSZWdpb25zJik7Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEV2ZW50VHJhY2tpbmdSZWdpb25zJiBhLCBjb25zdCBFdmVudFRyYWNraW5nUmVnaW9ucyYgYikg
eyByZXR1cm4gIShhID09IGIpOyB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFVuaXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTGF5b3V0VW5pdC5jcHAKaW5kZXggMmFjNTYwYzg1ZGY1Y2FlNzU4NWM5MzJk
MzIzZmYxZTkzYmEzM2U3Ni4uYWZjODFmMzQ5NDdlZmQ0ZTRlOGU0Nzg5YmQzOWY3MDQyMDgyODc4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VW5pdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VW5pdC5jcHAKQEAgLTMwLDcgKzMwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBMYXlvdXRVbml0JiB2KQorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgTGF5b3V0VW5pdCB2KQogewogICAgIHJldHVybiB0cyA8PCBUZXh0U3Ry
ZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnModi50b0Zsb2F0KCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VW5pdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGF5b3V0VW5pdC5oCmluZGV4IDBjNTI0MGM0OTEzMmM2YmU2ZTY0N2Jl
MThlYjJiY2I0YmQzNjQ5MGIuLmFlMGZiYWY0NTRjNmZlZWM2ZDgxODA1NWI0Njc2YjljMzRhN2My
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFVuaXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmgKQEAgLTU4LDE0ICs1OCwxMyBA
QCB3aGlsZSAoMCkKIAogI2VuZGlmCiAKLXN0YXRpYyBjb25zdCBpbnQga0ZpeGVkUG9pbnREZW5v
bWluYXRvciA9IDY0OwotY29uc3QgaW50IGludE1heEZvckxheW91dFVuaXQgPSBJTlRfTUFYIC8g
a0ZpeGVkUG9pbnREZW5vbWluYXRvcjsKLWNvbnN0IGludCBpbnRNaW5Gb3JMYXlvdXRVbml0ID0g
SU5UX01JTiAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7Citjb25zdGV4cHIgaW50IGtGaXhlZFBv
aW50RGVub21pbmF0b3IgPSA2NDsKK2NvbnN0ZXhwciBpbnQgaW50TWF4Rm9yTGF5b3V0VW5pdCA9
IElOVF9NQVggLyBrRml4ZWRQb2ludERlbm9taW5hdG9yOworY29uc3RleHByIGludCBpbnRNaW5G
b3JMYXlvdXRVbml0ID0gSU5UX01JTiAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7CiAKIGNsYXNz
IExheW91dFVuaXQgewogcHVibGljOgogICAgIExheW91dFVuaXQoKSA6IG1fdmFsdWUoMCkgeyB9
Ci0gICAgTGF5b3V0VW5pdChjb25zdCBMYXlvdXRVbml0JikgPSBkZWZhdWx0OwogICAgIExheW91
dFVuaXQoaW50IHZhbHVlKSB7IHNldFZhbHVlKHZhbHVlKTsgfQogICAgIExheW91dFVuaXQodW5z
aWduZWQgc2hvcnQgdmFsdWUpIHsgc2V0VmFsdWUodmFsdWUpOyB9CiAgICAgTGF5b3V0VW5pdCh1
bnNpZ25lZCB2YWx1ZSkgeyBzZXRWYWx1ZSh2YWx1ZSk7IH0KQEAgLTg2LDggKzg1LDcgQEAgcHVi
bGljOgogICAgICAgICBtX3ZhbHVlID0gY2xhbXBUb0ludGVnZXIodmFsdWUgKiBrRml4ZWRQb2lu
dERlbm9taW5hdG9yKTsKICAgICB9CiAKLSAgICBMYXlvdXRVbml0JiBvcGVyYXRvcj0oY29uc3Qg
TGF5b3V0VW5pdCYpID0gZGVmYXVsdDsKLSAgICBMYXlvdXRVbml0JiBvcGVyYXRvcj0oY29uc3Qg
ZmxvYXQmIG90aGVyKSB7IHJldHVybiAqdGhpcyA9IExheW91dFVuaXQob3RoZXIpOyB9CisgICAg
TGF5b3V0VW5pdCYgb3BlcmF0b3I9KGZsb2F0IG90aGVyKSB7IHJldHVybiAqdGhpcyA9IExheW91
dFVuaXQob3RoZXIpOyB9CiAKICAgICBzdGF0aWMgTGF5b3V0VW5pdCBmcm9tRmxvYXRDZWlsKGZs
b2F0IHZhbHVlKQogICAgIHsKQEAgLTIyNCw2ICsyMjIsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBjbGFtcFRvPExheW91dFVuaXQ+KHZhbHVlLCBMYXlvdXRVbml0OjptaW4oKSwgTGF5b3V0
VW5pdDo6bWF4KCkpOwogICAgIH0KIAorICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KExheW91
dFVuaXQsIExheW91dFVuaXQpID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9v
bCBpc0luQm91bmRzKGludCB2YWx1ZSkKICAgICB7CkBAIC0yNTgsMTY4ICsyNTgsMTEzIEBAIHBy
aXZhdGU6CiAgICAgaW50IG1fdmFsdWU7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNv
bnN0IExheW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCi17Ci0gICAgcmV0dXJuIGEu
cmF3VmFsdWUoKSA8PSBiLnJhd1ZhbHVlKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPD0o
Y29uc3QgTGF5b3V0VW5pdCYgYSwgZmxvYXQgYikKK2lubGluZSBib29sIG9wZXJhdG9yPD0oTGF5
b3V0VW5pdCBhLCBmbG9hdCBiKQogewogICAgIHJldHVybiBhLnRvRmxvYXQoKSA8PSBiOwogfQog
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IExheW91dFVuaXQmIGEsIGludCBiKQoraW5s
aW5lIGJvb2wgb3BlcmF0b3I8PShMYXlvdXRVbml0IGEsIGludCBiKQogewogICAgIHJldHVybiBh
IDw9IExheW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgZmxv
YXQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBib29sIG9wZXJhdG9yPD0oZmxvYXQg
YSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBhIDw9IGIudG9GbG9hdCgpOwogfQogCi1p
bmxpbmUgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IGludCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQor
aW5saW5lIGJvb2wgb3BlcmF0b3I8PShpbnQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVy
biBMYXlvdXRVbml0KGEpIDw9IGI7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3Qg
TGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKLXsKLSAgICByZXR1cm4gYS5yYXdW
YWx1ZSgpID49IGIucmF3VmFsdWUoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25z
dCBMYXlvdXRVbml0JiBhLCBpbnQgYikKK2lubGluZSBib29sIG9wZXJhdG9yPj0oTGF5b3V0VW5p
dCBhLCBpbnQgYikKIHsKICAgICByZXR1cm4gYSA+PSBMYXlvdXRVbml0KGIpOwogfQogCi1pbmxp
bmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IGZsb2F0IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitp
bmxpbmUgYm9vbCBvcGVyYXRvcj49KGZsb2F0IGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1
cm4gYSA+PSBiLnRvRmxvYXQoKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBM
YXlvdXRVbml0JiBhLCBmbG9hdCBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I+PShMYXlvdXRVbml0
IGEsIGZsb2F0IGIpCiB7CiAgICAgcmV0dXJuIGEudG9GbG9hdCgpID49IGI7CiB9CiAKLWlubGlu
ZSBib29sIG9wZXJhdG9yPj0oY29uc3QgaW50IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxp
bmUgYm9vbCBvcGVyYXRvcj49KGludCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIExh
eW91dFVuaXQoYSkgPj0gYjsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IExheW91
dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCi17Ci0gICAgcmV0dXJuIGEucmF3VmFsdWUo
KSA8IGIucmF3VmFsdWUoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IExheW91
dFVuaXQmIGEsIGludCBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I8KExheW91dFVuaXQgYSwgaW50
IGIpCiB7CiAgICAgcmV0dXJuIGEgPCBMYXlvdXRVbml0KGIpOwogfQogCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcjwoY29uc3QgTGF5b3V0VW5pdCYgYSwgZmxvYXQgYikKK2lubGluZSBib29sIG9wZXJh
dG9yPChMYXlvdXRVbml0IGEsIGZsb2F0IGIpCiB7CiAgICAgcmV0dXJuIGEudG9GbG9hdCgpIDwg
YjsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IExheW91dFVuaXQmIGEsIGRvdWJs
ZSBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I8KExheW91dFVuaXQgYSwgZG91YmxlIGIpCiB7CiAg
ICAgcmV0dXJuIGEudG9Eb3VibGUoKSA8IGI7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPChj
b25zdCBpbnQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBib29sIG9wZXJhdG9yPChp
bnQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBMYXlvdXRVbml0KGEpIDwgYjsKIH0K
IAotaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IGZsb2F0IGEsIGNvbnN0IExheW91dFVuaXQm
IGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwoZmxvYXQgYSwgTGF5b3V0VW5pdCBiKQogewogICAg
IHJldHVybiBhIDwgYi50b0Zsb2F0KCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPihjb25z
dCBMYXlvdXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQotewotICAgIHJldHVybiBhLnJh
d1ZhbHVlKCkgPiBiLnJhd1ZhbHVlKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPihjb25z
dCBMYXlvdXRVbml0JiBhLCBkb3VibGUgYikKK2lubGluZSBib29sIG9wZXJhdG9yPihMYXlvdXRV
bml0IGEsIGRvdWJsZSBiKQogewogICAgIHJldHVybiBhLnRvRG91YmxlKCkgPiBiOwogfQogCi1p
bmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgTGF5b3V0VW5pdCYgYSwgZmxvYXQgYikKK2lubGlu
ZSBib29sIG9wZXJhdG9yPihMYXlvdXRVbml0IGEsIGZsb2F0IGIpCiB7CiAgICAgcmV0dXJuIGEu
dG9GbG9hdCgpID4gYjsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IExheW91dFVu
aXQmIGEsIGludCBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I+KExheW91dFVuaXQgYSwgaW50IGIp
CiB7CiAgICAgcmV0dXJuIGEgPiBMYXlvdXRVbml0KGIpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVy
YXRvcj4oY29uc3QgaW50IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgYm9vbCBvcGVy
YXRvcj4oaW50IGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChhKSA+
IGI7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBmbG9hdCBhLCBjb25zdCBMYXlv
dXRVbml0JiBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I+KGZsb2F0IGEsIExheW91dFVuaXQgYikK
IHsKICAgICByZXR1cm4gYSA+IGIudG9GbG9hdCgpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRv
cj4oY29uc3QgZG91YmxlIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgYm9vbCBvcGVy
YXRvcj4oZG91YmxlIGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gYSA+IGIudG9Eb3Vi
bGUoKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMYXlvdXRVbml0JiBhLCBj
b25zdCBMYXlvdXRVbml0JiBiKQotewotICAgIHJldHVybiBhLnJhd1ZhbHVlKCkgIT0gYi5yYXdW
YWx1ZSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExheW91dFVuaXQmIGEs
IGZsb2F0IGIpCi17Ci0gICAgcmV0dXJuIGEgIT0gTGF5b3V0VW5pdChiKTsKLX0KLQotaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBpbnQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKLXsKLSAg
ICByZXR1cm4gTGF5b3V0VW5pdChhKSAhPSBiOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IExheW91dFVuaXQmIGEsIGludCBiKQotewotICAgIHJldHVybiBhICE9IExheW91dFVu
aXQoYik7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgTGF5b3V0VW5pdCYgYSwg
Y29uc3QgTGF5b3V0VW5pdCYgYikKLXsKLSAgICByZXR1cm4gYS5yYXdWYWx1ZSgpID09IGIucmF3
VmFsdWUoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMYXlvdXRVbml0JiBh
LCBpbnQgYikKK2lubGluZSBib29sIG9wZXJhdG9yPT0oTGF5b3V0VW5pdCBhLCBpbnQgYikKIHsK
ICAgICByZXR1cm4gYSA9PSBMYXlvdXRVbml0KGIpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IGludCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQotewotICAgIHJldHVybiBMYXlv
dXRVbml0KGEpID09IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgTGF5b3V0
VW5pdCYgYSwgZmxvYXQgYikKK2lubGluZSBib29sIG9wZXJhdG9yPT0oTGF5b3V0VW5pdCBhLCBm
bG9hdCBiKQogewogICAgIHJldHVybiBhLnRvRmxvYXQoKSA9PSBiOwogfQogCi1pbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IGZsb2F0IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCi17Ci0gICAg
cmV0dXJuIGEgPT0gYi50b0Zsb2F0KCk7Ci19Ci0KIC8vIEZvciBtdWx0aXBsaWNhdGlvbiB0aGF0
J3MgcHJvbmUgdG8gb3ZlcmZsb3csIHRoaXMgYm91bmRzIGl0IHRvIExheW91dFVuaXQ6Om1heCgp
IGFuZCA6Om1pbigpCi1pbmxpbmUgTGF5b3V0VW5pdCBib3VuZGVkTXVsdGlwbHkoY29uc3QgTGF5
b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0IGJvdW5k
ZWRNdWx0aXBseShMYXlvdXRVbml0IGEsIExheW91dFVuaXQgYikKIHsKICAgICBpbnQ2NF90IHJl
c3VsdCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KGEucmF3VmFsdWUoKSkgKiBzdGF0aWNfY2FzdDxp
bnQ2NF90PihiLnJhd1ZhbHVlKCkpIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsKICAgICBpbnQz
Ml90IGhpZ2ggPSBzdGF0aWNfY2FzdDxpbnQzMl90PihyZXN1bHQgPj4gMzIpOwpAQCAtNDM0LDgy
ICszNzksODIgQEAgaW5saW5lIExheW91dFVuaXQgYm91bmRlZE11bHRpcGx5KGNvbnN0IExheW91
dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCiAgICAgcmV0dXJuIHJldHVyblZhbDsKIH0K
IAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IqKGNvbnN0IExheW91dFVuaXQmIGEsIGNvbnN0
IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciooTGF5b3V0VW5pdCBh
LCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIGJvdW5kZWRNdWx0aXBseShhLCBiKTsKIH0K
IAotaW5saW5lIGRvdWJsZSBvcGVyYXRvciooY29uc3QgTGF5b3V0VW5pdCYgYSwgZG91YmxlIGIp
CitpbmxpbmUgZG91YmxlIG9wZXJhdG9yKihMYXlvdXRVbml0IGEsIGRvdWJsZSBiKQogewogICAg
IHJldHVybiBhLnRvRG91YmxlKCkgKiBiOwogfQogCi1pbmxpbmUgZmxvYXQgb3BlcmF0b3IqKGNv
bnN0IExheW91dFVuaXQmIGEsIGZsb2F0IGIpCitpbmxpbmUgZmxvYXQgb3BlcmF0b3IqKExheW91
dFVuaXQgYSwgZmxvYXQgYikKIHsKICAgICByZXR1cm4gYS50b0Zsb2F0KCkgKiBiOwogfQogCi1p
bmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciooY29uc3QgTGF5b3V0VW5pdCYgYSwgaW50IGIpCitp
bmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciooTGF5b3V0VW5pdCBhLCBpbnQgYikKIHsKICAgICBy
ZXR1cm4gYSAqIExheW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9y
Kihjb25zdCBMYXlvdXRVbml0JiBhLCB1bnNpZ25lZCBzaG9ydCBiKQoraW5saW5lIExheW91dFVu
aXQgb3BlcmF0b3IqKExheW91dFVuaXQgYSwgdW5zaWduZWQgc2hvcnQgYikKIHsKICAgICByZXR1
cm4gYSAqIExheW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKihj
b25zdCBMYXlvdXRVbml0JiBhLCB1bnNpZ25lZCBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0
b3IqKExheW91dFVuaXQgYSwgdW5zaWduZWQgYikKIHsKICAgICByZXR1cm4gYSAqIExheW91dFVu
aXQoYik7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKihjb25zdCBMYXlvdXRVbml0
JiBhLCB1bnNpZ25lZCBsb25nIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciooTGF5b3V0
VW5pdCBhLCB1bnNpZ25lZCBsb25nIGIpCiB7CiAgICAgcmV0dXJuIGEgKiBMYXlvdXRVbml0KGIp
OwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciooY29uc3QgTGF5b3V0VW5pdCYgYSwg
dW5zaWduZWQgbG9uZyBsb25nIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciooTGF5b3V0
VW5pdCBhLCB1bnNpZ25lZCBsb25nIGxvbmcgYikKIHsKICAgICByZXR1cm4gYSAqIExheW91dFVu
aXQoYik7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKih1bnNpZ25lZCBzaG9ydCBh
LCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IqKHVuc2ln
bmVkIHNob3J0IGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChhKSAq
IGI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKih1bnNpZ25lZCBhLCBjb25zdCBM
YXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IqKHVuc2lnbmVkIGEsIExh
eW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChhKSAqIGI7CiB9CiAKLWlubGlu
ZSBMYXlvdXRVbml0IG9wZXJhdG9yKih1bnNpZ25lZCBsb25nIGEsIGNvbnN0IExheW91dFVuaXQm
IGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvcioodW5zaWduZWQgbG9uZyBhLCBMYXlvdXRV
bml0IGIpCiB7CiAgICAgcmV0dXJuIExheW91dFVuaXQoYSkgKiBiOwogfQogCi1pbmxpbmUgTGF5
b3V0VW5pdCBvcGVyYXRvcioodW5zaWduZWQgbG9uZyBsb25nIGEsIGNvbnN0IExheW91dFVuaXQm
IGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvcioodW5zaWduZWQgbG9uZyBsb25nIGEsIExh
eW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChhKSAqIGI7CiB9CiAKLWlubGlu
ZSBMYXlvdXRVbml0IG9wZXJhdG9yKihjb25zdCBpbnQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikK
K2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKihpbnQgYSwgTGF5b3V0VW5pdCBiKQogewogICAg
IHJldHVybiBMYXlvdXRVbml0KGEpICogYjsKIH0KIAotaW5saW5lIGZsb2F0IG9wZXJhdG9yKihj
b25zdCBmbG9hdCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIGZsb2F0IG9wZXJhdG9y
KihmbG9hdCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIGEgKiBiLnRvRmxvYXQoKTsK
IH0KIAotaW5saW5lIGRvdWJsZSBvcGVyYXRvciooY29uc3QgZG91YmxlIGEsIGNvbnN0IExheW91
dFVuaXQmIGIpCitpbmxpbmUgZG91YmxlIG9wZXJhdG9yKihkb3VibGUgYSwgTGF5b3V0VW5pdCBi
KQogewogICAgIHJldHVybiBhICogYi50b0RvdWJsZSgpOwogfQogCi1pbmxpbmUgTGF5b3V0VW5p
dCBvcGVyYXRvci8oY29uc3QgTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lu
bGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLyhMYXlvdXRVbml0IGEsIExheW91dFVuaXQgYikKIHsK
ICAgICBMYXlvdXRVbml0IHJldHVyblZhbDsKICAgICBsb25nIGxvbmcgcmF3VmFsID0gc3RhdGlj
X2Nhc3Q8bG9uZyBsb25nPihrRml4ZWRQb2ludERlbm9taW5hdG9yKSAqIGEucmF3VmFsdWUoKSAv
IGIucmF3VmFsdWUoKTsKQEAgLTUxNywxNDYgKzQ2MiwxNDYgQEAgaW5saW5lIExheW91dFVuaXQg
b3BlcmF0b3IvKGNvbnN0IExheW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCiAgICAg
cmV0dXJuIHJldHVyblZhbDsKIH0KIAotaW5saW5lIGZsb2F0IG9wZXJhdG9yLyhjb25zdCBMYXlv
dXRVbml0JiBhLCBmbG9hdCBiKQoraW5saW5lIGZsb2F0IG9wZXJhdG9yLyhMYXlvdXRVbml0IGEs
IGZsb2F0IGIpCiB7CiAgICAgcmV0dXJuIGEudG9GbG9hdCgpIC8gYjsKIH0KIAotaW5saW5lIGRv
dWJsZSBvcGVyYXRvci8oY29uc3QgTGF5b3V0VW5pdCYgYSwgZG91YmxlIGIpCitpbmxpbmUgZG91
YmxlIG9wZXJhdG9yLyhMYXlvdXRVbml0IGEsIGRvdWJsZSBiKQogewogICAgIHJldHVybiBhLnRv
RG91YmxlKCkgLyBiOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8oY29uc3QgTGF5
b3V0VW5pdCYgYSwgaW50IGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8oTGF5b3V0VW5p
dCBhLCBpbnQgYikKIHsKICAgICByZXR1cm4gYSAvIExheW91dFVuaXQoYik7CiB9CiAKLWlubGlu
ZSBMYXlvdXRVbml0IG9wZXJhdG9yLyhjb25zdCBMYXlvdXRVbml0JiBhLCB1bnNpZ25lZCBzaG9y
dCBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKExheW91dFVuaXQgYSwgdW5zaWduZWQg
c2hvcnQgYikKIHsKICAgICByZXR1cm4gYSAvIExheW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBM
YXlvdXRVbml0IG9wZXJhdG9yLyhjb25zdCBMYXlvdXRVbml0JiBhLCB1bnNpZ25lZCBiKQoraW5s
aW5lIExheW91dFVuaXQgb3BlcmF0b3IvKExheW91dFVuaXQgYSwgdW5zaWduZWQgYikKIHsKICAg
ICByZXR1cm4gYSAvIExheW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJh
dG9yLyhjb25zdCBMYXlvdXRVbml0JiBhLCB1bnNpZ25lZCBsb25nIGIpCitpbmxpbmUgTGF5b3V0
VW5pdCBvcGVyYXRvci8oTGF5b3V0VW5pdCBhLCB1bnNpZ25lZCBsb25nIGIpCiB7CiAgICAgcmV0
dXJuIGEgLyBMYXlvdXRVbml0KGIpOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8o
Y29uc3QgTGF5b3V0VW5pdCYgYSwgdW5zaWduZWQgbG9uZyBsb25nIGIpCitpbmxpbmUgTGF5b3V0
VW5pdCBvcGVyYXRvci8oTGF5b3V0VW5pdCBhLCB1bnNpZ25lZCBsb25nIGxvbmcgYikKIHsKICAg
ICByZXR1cm4gYSAvIExheW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBmbG9hdCBvcGVyYXRvci8o
Y29uc3QgZmxvYXQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBmbG9hdCBvcGVyYXRv
ci8oZmxvYXQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBhIC8gYi50b0Zsb2F0KCk7
CiB9CiAKLWlubGluZSBkb3VibGUgb3BlcmF0b3IvKGNvbnN0IGRvdWJsZSBhLCBjb25zdCBMYXlv
dXRVbml0JiBiKQoraW5saW5lIGRvdWJsZSBvcGVyYXRvci8oZG91YmxlIGEsIExheW91dFVuaXQg
YikKIHsKICAgICByZXR1cm4gYSAvIGIudG9Eb3VibGUoKTsKIH0KIAotaW5saW5lIExheW91dFVu
aXQgb3BlcmF0b3IvKGNvbnN0IGludCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExh
eW91dFVuaXQgb3BlcmF0b3IvKGludCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIExh
eW91dFVuaXQoYSkgLyBiOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8odW5zaWdu
ZWQgc2hvcnQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJh
dG9yLyh1bnNpZ25lZCBzaG9ydCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIExheW91
dFVuaXQoYSkgLyBiOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8odW5zaWduZWQg
YSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLyh1bnNp
Z25lZCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIExheW91dFVuaXQoYSkgLyBiOwog
fQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8odW5zaWduZWQgbG9uZyBhLCBjb25zdCBM
YXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKHVuc2lnbmVkIGxvbmcg
YSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBMYXlvdXRVbml0KGEpIC8gYjsKIH0KIAot
aW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKHVuc2lnbmVkIGxvbmcgbG9uZyBhLCBjb25zdCBM
YXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKHVuc2lnbmVkIGxvbmcg
bG9uZyBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIExheW91dFVuaXQoYSkgLyBiOwog
fQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvcisoY29uc3QgTGF5b3V0VW5pdCYgYSwgY29u
c3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKyhMYXlvdXRVbml0
IGEsIExheW91dFVuaXQgYikKIHsKICAgICBMYXlvdXRVbml0IHJldHVyblZhbDsKICAgICByZXR1
cm5WYWwuc2V0UmF3VmFsdWUoc2F0dXJhdGVkU3VtPGludD4oYS5yYXdWYWx1ZSgpLCBiLnJhd1Zh
bHVlKCkpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvcisoY29uc3QgTGF5b3V0VW5pdCYgYSwgaW50IGIpCitpbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvcisoTGF5b3V0VW5pdCBhLCBpbnQgYikKIHsKICAgICByZXR1cm4gYSArIExheW91dFVu
aXQoYik7CiB9CiAKLWlubGluZSBmbG9hdCBvcGVyYXRvcisoY29uc3QgTGF5b3V0VW5pdCYgYSwg
ZmxvYXQgYikKK2lubGluZSBmbG9hdCBvcGVyYXRvcisoTGF5b3V0VW5pdCBhLCBmbG9hdCBiKQog
ewogICAgIHJldHVybiBhLnRvRmxvYXQoKSArIGI7CiB9CiAKLWlubGluZSBkb3VibGUgb3BlcmF0
b3IrKGNvbnN0IExheW91dFVuaXQmIGEsIGRvdWJsZSBiKQoraW5saW5lIGRvdWJsZSBvcGVyYXRv
cisoTGF5b3V0VW5pdCBhLCBkb3VibGUgYikKIHsKICAgICByZXR1cm4gYS50b0RvdWJsZSgpICsg
YjsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IrKGNvbnN0IGludCBhLCBjb25zdCBM
YXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IrKGludCBhLCBMYXlvdXRV
bml0IGIpCiB7CiAgICAgcmV0dXJuIExheW91dFVuaXQoYSkgKyBiOwogfQogCi1pbmxpbmUgZmxv
YXQgb3BlcmF0b3IrKGNvbnN0IGZsb2F0IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUg
ZmxvYXQgb3BlcmF0b3IrKGZsb2F0IGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gYSAr
IGIudG9GbG9hdCgpOwogfQogCi1pbmxpbmUgZG91YmxlIG9wZXJhdG9yKyhjb25zdCBkb3VibGUg
YSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBkb3VibGUgb3BlcmF0b3IrKGRvdWJsZSBh
LCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIGEgKyBiLnRvRG91YmxlKCk7CiB9CiAKLWlu
bGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLShjb25zdCBMYXlvdXRVbml0JiBhLCBjb25zdCBMYXlv
dXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3ItKExheW91dFVuaXQgYSwgTGF5
b3V0VW5pdCBiKQogewogICAgIExheW91dFVuaXQgcmV0dXJuVmFsOwogICAgIHJldHVyblZhbC5z
ZXRSYXdWYWx1ZShzYXR1cmF0ZWREaWZmZXJlbmNlPGludD4oYS5yYXdWYWx1ZSgpLCBiLnJhd1Zh
bHVlKCkpKTsKICAgICByZXR1cm4gcmV0dXJuVmFsOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvci0oY29uc3QgTGF5b3V0VW5pdCYgYSwgaW50IGIpCitpbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvci0oTGF5b3V0VW5pdCBhLCBpbnQgYikKIHsKICAgICByZXR1cm4gYSAtIExheW91dFVu
aXQoYik7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLShjb25zdCBMYXlvdXRVbml0
JiBhLCB1bnNpZ25lZCBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3ItKExheW91dFVuaXQg
YSwgdW5zaWduZWQgYikKIHsKICAgICByZXR1cm4gYSAtIExheW91dFVuaXQoYik7CiB9CiAKLWlu
bGluZSBmbG9hdCBvcGVyYXRvci0oY29uc3QgTGF5b3V0VW5pdCYgYSwgZmxvYXQgYikKK2lubGlu
ZSBmbG9hdCBvcGVyYXRvci0oTGF5b3V0VW5pdCBhLCBmbG9hdCBiKQogewogICAgIHJldHVybiBh
LnRvRmxvYXQoKSAtIGI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLShjb25zdCBp
bnQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLShp
bnQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBMYXlvdXRVbml0KGEpIC0gYjsKIH0K
IAotaW5saW5lIGZsb2F0IG9wZXJhdG9yLShjb25zdCBmbG9hdCBhLCBjb25zdCBMYXlvdXRVbml0
JiBiKQoraW5saW5lIGZsb2F0IG9wZXJhdG9yLShmbG9hdCBhLCBMYXlvdXRVbml0IGIpCiB7CiAg
ICAgcmV0dXJuIGEgLSBiLnRvRmxvYXQoKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0
b3ItKGNvbnN0IExheW91dFVuaXQmIGEpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci0oTGF5
b3V0VW5pdCBhKQogewogICAgIExheW91dFVuaXQgcmV0dXJuVmFsOwogICAgIHJldHVyblZhbC5z
ZXRSYXdWYWx1ZSgtYS5yYXdWYWx1ZSgpKTsKQEAgLTY2NCw3ICs2MDksNyBAQCBpbmxpbmUgTGF5
b3V0VW5pdCBvcGVyYXRvci0oY29uc3QgTGF5b3V0VW5pdCYgYSkKIH0KIAogLy8gRm9yIHJldHVy
bmluZyB0aGUgcmVtYWluZGVyIGFmdGVyIGEgZGl2aXNpb24gd2l0aCBpbnRlZ2VyIHJlc3VsdHMu
Ci1pbmxpbmUgTGF5b3V0VW5pdCBpbnRNb2QoY29uc3QgTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5
b3V0VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0IGludE1vZChMYXlvdXRVbml0IGEsIExheW91
dFVuaXQgYikKIHsKICAgICAvLyBUaGlzIGNhbGN1bGF0ZXMgdGhlIG1vZHVsbyBzbyB0aGF0OiBh
ID0gc3RhdGljX2Nhc3Q8aW50PihhIC8gYikgKiBiICsgaW50TW9kKGEsIGIpLgogICAgIExheW91
dFVuaXQgcmV0dXJuVmFsOwpAQCAtNjcyLDcgKzYxNyw3IEBAIGlubGluZSBMYXlvdXRVbml0IGlu
dE1vZChjb25zdCBMYXlvdXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQogICAgIHJldHVy
biByZXR1cm5WYWw7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yJShjb25zdCBMYXlv
dXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0
b3IlKExheW91dFVuaXQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIC8vIFRoaXMgY2FsY3VsYXRl
cyB0aGUgbW9kdWxvIHNvIHRoYXQ6IGEgPSAoYSAvIGIpICogYiArIGEgJSBiLgogICAgIExheW91
dFVuaXQgcmV0dXJuVmFsOwpAQCAtNjgxLDE3ICs2MjYsMTcgQEAgaW5saW5lIExheW91dFVuaXQg
b3BlcmF0b3IlKGNvbnN0IExheW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCiAgICAg
cmV0dXJuIHJldHVyblZhbDsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IlKGNvbnN0
IExheW91dFVuaXQmIGEsIGludCBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IlKExheW91
dFVuaXQgYSwgaW50IGIpCiB7CiAgICAgcmV0dXJuIGEgJSBMYXlvdXRVbml0KGIpOwogfQogCi1p
bmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciUoaW50IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitp
bmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciUoaW50IGEsIExheW91dFVuaXQgYikKIHsKICAgICBy
ZXR1cm4gTGF5b3V0VW5pdChhKSAlIGI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0JiBvcGVyYXRv
cis9KExheW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5p
dCYgb3BlcmF0b3IrPShMYXlvdXRVbml0JiBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgYS5zZXRS
YXdWYWx1ZShzYXR1cmF0ZWRTdW08aW50PihhLnJhd1ZhbHVlKCksIGIucmF3VmFsdWUoKSkpOwog
ICAgIHJldHVybiBhOwpAQCAtNzA5LDcgKzY1NCw3IEBAIGlubGluZSBMYXlvdXRVbml0JiBvcGVy
YXRvcis9KExheW91dFVuaXQmIGEsIGZsb2F0IGIpCiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGlu
ZSBmbG9hdCYgb3BlcmF0b3IrPShmbG9hdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGlu
ZSBmbG9hdCYgb3BlcmF0b3IrPShmbG9hdCYgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIGEgPSBh
ICsgYjsKICAgICByZXR1cm4gYTsKQEAgLTcyMSw3ICs2NjYsNyBAQCBpbmxpbmUgTGF5b3V0VW5p
dCYgb3BlcmF0b3ItPShMYXlvdXRVbml0JiBhLCBpbnQgYikKICAgICByZXR1cm4gYTsKIH0KIAot
aW5saW5lIExheW91dFVuaXQmIG9wZXJhdG9yLT0oTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0
VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0JiBvcGVyYXRvci09KExheW91dFVuaXQmIGEsIExh
eW91dFVuaXQgYikKIHsKICAgICBhLnNldFJhd1ZhbHVlKHNhdHVyYXRlZERpZmZlcmVuY2U8aW50
PihhLnJhd1ZhbHVlKCksIGIucmF3VmFsdWUoKSkpOwogICAgIHJldHVybiBhOwpAQCAtNzMzLDEz
ICs2NzgsMTMgQEAgaW5saW5lIExheW91dFVuaXQmIG9wZXJhdG9yLT0oTGF5b3V0VW5pdCYgYSwg
ZmxvYXQgYikKICAgICByZXR1cm4gYTsKIH0KIAotaW5saW5lIGZsb2F0JiBvcGVyYXRvci09KGZs
b2F0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIGZsb2F0JiBvcGVyYXRvci09KGZs
b2F0JiBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgYSA9IGEgLSBiOwogICAgIHJldHVybiBhOwog
fQogCi1pbmxpbmUgTGF5b3V0VW5pdCYgb3BlcmF0b3IqPShMYXlvdXRVbml0JiBhLCBjb25zdCBM
YXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQmIG9wZXJhdG9yKj0oTGF5b3V0VW5pdCYg
YSwgTGF5b3V0VW5pdCBiKQogewogICAgIGEgPSBhICogYjsKICAgICByZXR1cm4gYTsKQEAgLTc1
MiwxMyArNjk3LDEzIEBAIGlubGluZSBMYXlvdXRVbml0JiBvcGVyYXRvcio9KExheW91dFVuaXQm
IGEsIGZsb2F0IGIpCiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGluZSBmbG9hdCYgb3BlcmF0b3Iq
PShmbG9hdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBmbG9hdCYgb3BlcmF0b3Iq
PShmbG9hdCYgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIGEgPSBhICogYjsKICAgICByZXR1cm4g
YTsKIH0KIAotaW5saW5lIExheW91dFVuaXQmIG9wZXJhdG9yLz0oTGF5b3V0VW5pdCYgYSwgY29u
c3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0JiBvcGVyYXRvci89KExheW91dFVu
aXQmIGEsIExheW91dFVuaXQgYikKIHsKICAgICBhID0gYSAvIGI7CiAgICAgcmV0dXJuIGE7CkBA
IC03NzEsMTMgKzcxNiwxMyBAQCBpbmxpbmUgTGF5b3V0VW5pdCYgb3BlcmF0b3IvPShMYXlvdXRV
bml0JiBhLCBmbG9hdCBiKQogICAgIHJldHVybiBhOwogfQogCi1pbmxpbmUgZmxvYXQmIG9wZXJh
dG9yLz0oZmxvYXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgZmxvYXQmIG9wZXJh
dG9yLz0oZmxvYXQmIGEsIExheW91dFVuaXQgYikKIHsKICAgICBhID0gYSAvIGI7CiAgICAgcmV0
dXJuIGE7CiB9CiAKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChX
VEY6OlRleHRTdHJlYW0mLCBjb25zdCBMYXlvdXRVbml0Jik7CitXRUJDT1JFX0VYUE9SVCBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgTGF5b3V0VW5pdCk7CiAK
IGlubGluZSBpbnQgcm91bmRUb0ludChMYXlvdXRVbml0IHZhbHVlKQogewpAQCAtODIwLDE0ICs3
NjUsMTQgQEAgaW5saW5lIGZsb2F0IHJvdW5kVG9EZXZpY2VQaXhlbChmbG9hdCB2YWx1ZSwgZmxv
YXQgcGl4ZWxTbmFwcGluZ0ZhY3RvciwgYm9vbCBuZWUKIGlubGluZSBmbG9hdCBmbG9vclRvRGV2
aWNlUGl4ZWwoZmxvYXQgdmFsdWUsIGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpIHsgcmV0dXJu
IGZsb29yVG9EZXZpY2VQaXhlbChMYXlvdXRVbml0KHZhbHVlKSwgcGl4ZWxTbmFwcGluZ0ZhY3Rv
cik7IH0KIGlubGluZSBmbG9hdCBjZWlsVG9EZXZpY2VQaXhlbChmbG9hdCB2YWx1ZSwgZmxvYXQg
cGl4ZWxTbmFwcGluZ0ZhY3RvcikgeyByZXR1cm4gY2VpbFRvRGV2aWNlUGl4ZWwoTGF5b3V0VW5p
dCh2YWx1ZSksIHBpeGVsU25hcHBpbmdGYWN0b3IpOyB9CiAKLWlubGluZSBMYXlvdXRVbml0IGFi
c29sdXRlVmFsdWUoY29uc3QgTGF5b3V0VW5pdCYgdmFsdWUpCitpbmxpbmUgTGF5b3V0VW5pdCBh
YnNvbHV0ZVZhbHVlKExheW91dFVuaXQgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHZhbHVlLmFicygp
OwogfQogCi1pbmxpbmUgYm9vbCBpc0ludGVnZXJWYWx1ZShjb25zdCBMYXlvdXRVbml0IHZhbHVl
KQoraW5saW5lIGJvb2wgaXNJbnRlZ2VyVmFsdWUoTGF5b3V0VW5pdCB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gdmFsdWUudG9JbnQoKSA9PSB2YWx1ZTsKKyAgICByZXR1cm4gTGF5b3V0VW5pdCB7IHZh
bHVlLnRvSW50KCkgfSA9PSB2YWx1ZTsKIH0KIAogaW5saW5lIG5hbWVzcGFjZSBTdHJpbmdMaXRl
cmFscyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCmluZGV4IDMxOTViNzJkNzllMjg0MzZkMzhl
MGQ5N2NiNGY2NTQxZDA3ZDA2MTcuLjVlNjg0OGI4NzU1YjY0MzhkZWUxYzkzM2IyMjQ0MGJkOWMw
OTg2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCkBAIC04NCw3ICs4NCw2IEBAIHB1Ymxp
YzoKICAgICBMZW5ndGgmIG9wZXJhdG9yKj0oZmxvYXQpOwogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IExlbmd0aCYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5ndGgm
KSBjb25zdDsKIAogICAgIGZsb2F0IHZhbHVlKCkgY29uc3Q7CiAgICAgaW50IGludFZhbHVlKCkg
Y29uc3Q7CkBAIC0zMTYsMTEgKzMxNSw2IEBAIGlubGluZSBib29sIExlbmd0aDo6b3BlcmF0b3I9
PShjb25zdCBMZW5ndGgmIG90aGVyKSBjb25zdAogICAgIHJldHVybiB2YWx1ZSgpID09IG90aGVy
LnZhbHVlKCk7CiB9CiAKLWlubGluZSBib29sIExlbmd0aDo6b3BlcmF0b3IhPShjb25zdCBMZW5n
dGgmIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLX0KLQog
aW5saW5lIExlbmd0aCYgTGVuZ3RoOjpvcGVyYXRvcio9KGZsb2F0IHZhbHVlKQogewogICAgIEFT
U0VSVCghaXNDYWxjdWxhdGVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vTGVuZ3RoUG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQu
Y3BwCmluZGV4IDlhMzY3NTk2ZGQwMjY5ZDU5ZjYzZWIwZjZjODllMzRkZDgyMTgyZDkuLmQyMTZk
NzhhNmY1N2U5MDgwMmUzMjY4OTlkMzViNTI4YTg4MGE1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGhQb2ludC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBMZW5ndGhQ
b2ludCYgc2l6ZSkKIHsKLSAgICByZXR1cm4gdHMgPDwgc2l6ZS54KCkgPDwgIiAiIDw8IHNpemUu
eSgpOworICAgIHJldHVybiB0cyA8PCBzaXplLnggPDwgJyAnIDw8IHNpemUueTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFBvaW50LmgKaW5k
ZXggODEyMDViYjEzZGRhNTAzM2IyYzkwZmJlYTA1MzBjMmY1NmY5OTM2Yi4uZjAwMzY5MTFlYzNi
ZGQ2NDIyMzAzZGQzNmM2OTFhOTM5ODgyN2YzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGhQb2ludC5oCkBAIC0zMiw0NCArMzIsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0
IEJsZW5kaW5nQ29udGV4dDsKIAogc3RydWN0IExlbmd0aFBvaW50IHsKLXB1YmxpYzoKLSAgICBM
ZW5ndGhQb2ludCgpCi0gICAgewotICAgIH0KLSAgICAKLSAgICBMZW5ndGhQb2ludChMZW5ndGgg
eCwgTGVuZ3RoIHkpCi0gICAgICAgIDogbV94KFdURk1vdmUoeCkpCi0gICAgICAgICwgbV95KFdU
Rk1vdmUoeSkpCi0gICAgewotICAgIH0KKyAgICBMZW5ndGggeDsKKyAgICBMZW5ndGggeTsKIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGhQb2ludCYgbykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX3ggPT0gby5tX3ggJiYgbV95ID09IG8ubV95OwotICAgIH0KKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoUG9pbnQmKSBjb25zdCA9IGRlZmF1bHQ7CiAKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGVuZ3RoUG9pbnQmIG8pIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFgoTGVuZ3Ro
IHgpIHsgbV94ID0gV1RGTW92ZSh4KTsgfQotICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsg
cmV0dXJuIG1feDsgfQotCi0gICAgdm9pZCBzZXRZKExlbmd0aCB5KSB7IG1feSA9IFdURk1vdmUo
eSk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KLQotICAg
IGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gbV94LmlzWmVybygpICYmIG1feS5pc1plcm8o
KTsgfQotCi1wcml2YXRlOgotICAgIC8vIEZJWE1FOiBpdCB3b3VsZCBiZSBuaWNlIHRvIHBhY2sg
dGhlIHR3byBMZW5ndGhzIHRvZ2V0aGVyIGJldHRlciBzb21laG93ICh0byBhdm9pZCBwYWRkaW5n
IGJldHdlZW4gdGhlbSkuCi0gICAgTGVuZ3RoIG1feDsKLSAgICBMZW5ndGggbV95OworICAgIGJv
b2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4geC5pc1plcm8oKSAmJiB5LmlzWmVybygpOyB9CiB9
OwogCiBpbmxpbmUgTGVuZ3RoUG9pbnQgYmxlbmQoY29uc3QgTGVuZ3RoUG9pbnQmIGZyb20sIGNv
bnN0IExlbmd0aFBvaW50JiB0bywgY29uc3QgQmxlbmRpbmdDb250ZXh0JiBjb250ZXh0KQogewot
ICAgIHJldHVybiBMZW5ndGhQb2ludChibGVuZChmcm9tLngoKSwgdG8ueCgpLCBjb250ZXh0KSwg
YmxlbmQoZnJvbS55KCksIHRvLnkoKSwgY29udGV4dCkpOworICAgIHJldHVybiB7IGJsZW5kKGZy
b20ueCwgdG8ueCwgY29udGV4dCksIGJsZW5kKGZyb20ueSwgdG8ueSwgY29udGV4dCkgfTsKIH0K
IAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IExl
bmd0aFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhT
aXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhTaXplLmgKaW5kZXggODIzMmVi
YmQ5MTVmYWVmZmI3MDhiYzJkMGVlYzUwMjU5YzAzZGFiZi4uMjQ2ZDUzNDJiZTE5OTdlMzYxMDE1
NjFkNDMxZGFjNGJlMjU3YzJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TGVuZ3RoU2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUuaApA
QCAtMzAsMTUgKzMwLDEyIEBAIHN0cnVjdCBMZW5ndGhTaXplIHsKICAgICBMZW5ndGggd2lkdGg7
CiAgICAgTGVuZ3RoIGhlaWdodDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGhT
aXplJikgY29uc3QgPSBkZWZhdWx0OworCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gd2lkdGguaXNaZXJvKCkgfHwgaGVpZ2h0LmlzWmVybygpOyB9CiAgICAgYm9vbCBpc1plcm8o
KSBjb25zdCB7IHJldHVybiB3aWR0aC5pc1plcm8oKSAmJiBoZWlnaHQuaXNaZXJvKCk7IH0KIH07
CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aFNpemUmIGEsIGNv
bnN0IExlbmd0aFNpemUmIGIpCi17Ci0gICAgcmV0dXJuIGEud2lkdGggPT0gYi53aWR0aCAmJiBh
LmhlaWdodCA9PSBiLmhlaWdodDsKLX0KLQogaW5saW5lIExlbmd0aFNpemUgYmxlbmQoY29uc3Qg
TGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6ZSYgdG8sIGNvbnN0IEJsZW5kaW5nQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICByZXR1cm4geyBibGVuZChmcm9tLndpZHRoLCB0by53aWR0
aCwgY29udGV4dCksIGJsZW5kKGZyb20uaGVpZ2h0LCB0by5oZWlnaHQsIGNvbnRleHQpIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWwuaAppbmRleCBiODg4NjMxMjNhNGZmZDljYTZm
ZmYzMzRhYzZlNjdlODk1ZjNjZjM0Li41MWJmMDQ0ZDUzYjVkODc2YzI3ZGY5N2JmZGZmMDkyYjE5
NWEzN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsLmgKQEAgLTEwNiwxNyAr
MTA2LDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcjwoY29u
c3QgUE9ESW50ZXJ2YWwmIG90aGVyKSBjb25zdAorICAgIGZyaWVuZCBzdGQ6OnBhcnRpYWxfb3Jk
ZXJpbmcgb3BlcmF0b3I8PT4oY29uc3QgUE9ESW50ZXJ2YWwmIGEsIGNvbnN0IFBPREludGVydmFs
JiBiKQogICAgIHsKLSAgICAgICAgaWYgKEJhc2U6OmxvdygpIDwgb3RoZXIuQmFzZTo6bG93KCkp
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKG90aGVyLkJhc2U6Omxvdygp
IDwgQmFzZTo6bG93KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChC
YXNlOjpoaWdoKCkgPCBvdGhlci5CYXNlOjpoaWdoKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgaWYgKG90aGVyLkJhc2U6OmhpZ2goKSA8IEJhc2U6OmhpZ2goKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmRhdGEoKSA8IG90aGVy
LkJhc2U6OmRhdGEoKTsKKyAgICAgICAgaWYgKGEuQmFzZTo6bG93KCkgIT0gYi5CYXNlOjpsb3co
KSkKKyAgICAgICAgICAgIHJldHVybiBhLkJhc2U6OmxvdygpIDw9PiBiLkJhc2U6OmxvdygpOwor
ICAgICAgICBpZiAoYS5CYXNlOjpoaWdoKCkgIT0gYi5CYXNlOjpoaWdoKCkpCisgICAgICAgICAg
ICByZXR1cm4gYS5CYXNlOjpoaWdoKCkgPD0+IGIuQmFzZTo6aGlnaCgpOworICAgICAgICByZXR1
cm4gYS5CYXNlOjpkYXRhKCkgPD0+IGIuQmFzZTo6ZGF0YSgpOwogICAgIH0KIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBQT0RJbnRlcnZhbCYgb3RoZXIpIGNvbnN0CkBAIC0xMzcsMTMgKzEz
MywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0
IFBPREludGVydmFsJiBvdGhlcikgY29uc3QKKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9Pihj
b25zdCBQT0RJbnRlcnZhbCYgYSwgY29uc3QgUE9ESW50ZXJ2YWwmIGIpCiAgICAgewotICAgICAg
ICBpZiAoQmFzZTo6bG93KCkgPCBvdGhlci5CYXNlOjpsb3coKSkKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBpZiAob3RoZXIuQmFzZTo6bG93KCkgPCBCYXNlOjpsb3coKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIEJhc2U6OmhpZ2goKSA8IG90
aGVyLkJhc2U6OmhpZ2goKTsKKyAgICAgICAgaWYgKGEuQmFzZTo6bG93KCkgIT0gYi5CYXNlOjps
b3coKSkKKyAgICAgICAgICAgIHJldHVybiBhLkJhc2U6OmxvdygpIDw9PiBiLkJhc2U6Omxvdygp
OworICAgICAgICByZXR1cm4gYS5CYXNlOjpoaWdoKCkgPD0+IGIuQmFzZTo6aGlnaCgpOwogICAg
IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtTW91c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2
ZW50LmgKaW5kZXggNWZiZTMyMjBhODI4N2JmZGQyYjFlNjM0NzIwNzI5OTY5Y2E3MzZhZi4uZjg3
YmM1OTcxYTJhNDRhZmMyZGIzMjYyMWZlY2RjMWI2ZjAzNGJjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3VzZUV2ZW50LmgKQEAgLTExNSwxMSArMTE1LDYgQEAgY29u
c3QgZG91YmxlIEZvcmNlQXRGb3JjZUNsaWNrID0gMjsKICAgICB7CiAgICAgICAgIHJldHVybiBh
ID09IHN0YXRpY19jYXN0PHNob3J0PihiKTsKICAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KHNob3J0IGEsIE1vdXNlQnV0dG9uIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYSAh
PSBzdGF0aWNfY2FzdDxzaG9ydD4oYik7Ci0gICAgfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFs
aWZpZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQuaAppbmRl
eCAyODVhNDI1NTM5MmNhN2RlZTY5OGYxY2JhNzMzMTJjYTliMjNiYTJiLi5iZDQ1ZjU3ZDNmMWE2
YWIxYzIzMGJhNzM1OTM5MzQzMTUyOWE4MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Qcm9jZXNzUXVhbGlmaWVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHJvY2Vzc1F1YWxpZmllZC5oCkBAIC04MCwxNiArODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX3Byb2Nlc3NJZGVudGlmaWVyLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CiAgICAg
fQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb2Nlc3NRdWFsaWZpZWQmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0ID09IG90aGVyLm1fb2JqZWN0Ci0g
ICAgICAgICAgICAmJiBtX3Byb2Nlc3NJZGVudGlmaWVyID09IG90aGVyLm1fcHJvY2Vzc0lkZW50
aWZpZXI7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFByb2Nlc3NRdWFsaWZp
ZWQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvY2Vzc1F1YWxpZmllZCYpIGNv
bnN0ID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBQcm9jZXNzUXVhbGlmaWVkIGdlbmVyYXRlVGhy
ZWFkU2FmZSgpIHsgcmV0dXJuIHsgVDo6Z2VuZXJhdGVUaHJlYWRTYWZlKCksIFByb2Nlc3M6Omlk
ZW50aWZpZXIoKSB9OyB9CiAgICAgc3RhdGljIFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJhdGUoKSB7
IHJldHVybiB7IFQ6OmdlbmVyYXRlKCksIFByb2Nlc3M6OmlkZW50aWZpZXIoKSB9OyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWN0RWRnZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCmluZGV4IDBlMTIzMDE5MzM2MzU0ZDdjZWYyN2QxZmRm
N2E3MzIzNjA1MTlmYWEuLjM3MDgzNjRlOGIxODlkNmY1MTc5MjUxYTJhZWQ0ODZjMDQ4Mzg3NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCkBAIC04OCw4ICs4OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFN0YXJ0KGNvbnN0IFQmIHN0YXJ0LCBXcml0aW5nTW9kZSB3cml0aW5n
TW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsgdGhp
cy0+c3RhcnQod3JpdGluZ01vZGUsIGRpcmVjdGlvbikgPSBzdGFydDsgfQogICAgIHZvaWQgc2V0
RW5kKGNvbnN0IFQmIGVuZCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSKSB7IHRoaXMtPmVuZCh3cml0aW5nTW9kZSwg
ZGlyZWN0aW9uKSA9IGVuZDsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlY3RFZGdl
cyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXMgPT0gb3RoZXIubV9zaWRlczsgfQotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWN0RWRnZXMmIG90aGVyKSBjb25zdCB7IHJldHVybiBt
X3NpZGVzICE9IG90aGVyLm1fc2lkZXM7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVj
dEVkZ2VzJikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIHN0ZDo6YXJyYXk8VCwg
ND4gbV9zaWRlcyB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdp
c3RyYWJsZURvbWFpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21h
aW4uaAppbmRleCA3Y2UzZjYxMzZjMzE3ZGEzZmJlYzIyNDAxZjViZjI4MDE2NDk1YzYwLi5iZDY2
M2NjY2YxZDdjNDM0YWM1YTM5NmRkOGJlNWM4MzQzZGY3Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgKQEAgLTUzLDggKzUzLDcgQEAgcHVibGljOgog
ICAgIFN0cmluZyYgc3RyaW5nKCkgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogICAg
IGNvbnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFp
bjsgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbiAhPSBvdGhlci5tX3JlZ2lzdHJh
YmxlRG9tYWluOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhlci5tX3Jl
Z2lzdHJhYmxlRG9tYWluOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJikgY29uc3QgPSBkZWZhdWx0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFy
KiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhlcjsgfQog
CiAgICAgYm9vbCBtYXRjaGVzKGNvbnN0IFVSTCYgdXJsKSBjb25zdApAQCAtMTAwLDggKzk5LDYg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxSZWdpc3RyYWJsZURvbWFpbj4gZGVjb2RlKERlY29kZXImKTsKIAotcHJvdGVjdGVkOgot
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJlZ2lzdHJhYmxlRG9tYWluKFN0cmluZyYmIGRvbWFp
bikKICAgICAgICAgOiBtX3JlZ2lzdHJhYmxlRG9tYWluIHsgZG9tYWluLmlzRW1wdHkoKSA/ICJu
dWxsT3JpZ2luIl9zIDogV1RGTW92ZShkb21haW4pIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmgKaW5kZXggY2FlZjNmMjYyMDAzM2RkOGNmZjE1NjIzZjIzYzZiNmM5YjUzNGIz
Ny4uNmVlNTM0MGY0Y2I5ZDZlMTI2N2ZlOWNiNjhiZWQ0MTFlNWFkOTMyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTIwMCw3ICsyMDAsNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogCiAgICAgV0VCQ09SRV9F
WFBPUlQgUmVmPFNoYXJlZEJ1ZmZlcj4gbWFrZUNvbnRpZ3VvdXMoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVGltZXIuY3BwCmluZGV4IDE4OTA1M2Y5Mjg1Zjk4ODZmYTU5Yjg4N2E3MmEwZDVl
YzkxMDQ4OTMuLjZhN2JhMTYyYTRhYWUzZjE1NGRmYmQ3NzIxYWUxM2Q5NmZkY2UxYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKQEAgLTE4MywxMyArMTgzLDggQEAgcHJpdmF0ZToKICAg
ICAgICAgQVNTRVJUX1VOVVNFRChvZmZzZXQsIG1fcG9pbnRlciArIG9mZnNldCA8PSB0aHJlYWRH
bG9iYWxUaW1lckhlYXAoKS5kYXRhKCkgKyB0aHJlYWRHbG9iYWxUaW1lckhlYXAoKS5zaXplKCkp
OwogICAgIH0KIAotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oVGltZXJIZWFwSXRlcmF0b3Is
IFRpbWVySGVhcEl0ZXJhdG9yKTsKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KFRpbWVySGVh
cEl0ZXJhdG9yLCBUaW1lckhlYXBJdGVyYXRvcik7Ci0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8
KFRpbWVySGVhcEl0ZXJhdG9yLCBUaW1lckhlYXBJdGVyYXRvcik7Ci0gICAgZnJpZW5kIGJvb2wg
b3BlcmF0b3I+KFRpbWVySGVhcEl0ZXJhdG9yLCBUaW1lckhlYXBJdGVyYXRvcik7Ci0gICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3I8PShUaW1lckhlYXBJdGVyYXRvciwgVGltZXJIZWFwSXRlcmF0b3Ip
OwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPj0oVGltZXJIZWFwSXRlcmF0b3IsIFRpbWVySGVh
cEl0ZXJhdG9yKTsKLSAgICAKKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihUaW1lckhlYXBJ
dGVyYXRvciwgVGltZXJIZWFwSXRlcmF0b3IpOworCiAgICAgZnJpZW5kIFRpbWVySGVhcEl0ZXJh
dG9yIG9wZXJhdG9yKyhUaW1lckhlYXBJdGVyYXRvciwgc2l6ZV90KTsKICAgICBmcmllbmQgVGlt
ZXJIZWFwSXRlcmF0b3Igb3BlcmF0b3IrKHNpemVfdCwgVGltZXJIZWFwSXRlcmF0b3IpOwogICAg
IApAQCAtMTk5LDEzICsxOTQsNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxUaHJlYWRUaW1lckhl
YXBJdGVtPiogbV9wb2ludGVyOwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShUaW1lckhl
YXBJdGVyYXRvciBhLCBUaW1lckhlYXBJdGVyYXRvciBiKSB7IHJldHVybiBhLm1fcG9pbnRlciA9
PSBiLm1fcG9pbnRlcjsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUaW1lckhlYXBJdGVyYXRv
ciBhLCBUaW1lckhlYXBJdGVyYXRvciBiKSB7IHJldHVybiBhLm1fcG9pbnRlciAhPSBiLm1fcG9p
bnRlcjsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I8KFRpbWVySGVhcEl0ZXJhdG9yIGEsIFRpbWVy
SGVhcEl0ZXJhdG9yIGIpIHsgcmV0dXJuIGEubV9wb2ludGVyIDwgYi5tX3BvaW50ZXI7IH0KLWlu
bGluZSBib29sIG9wZXJhdG9yPihUaW1lckhlYXBJdGVyYXRvciBhLCBUaW1lckhlYXBJdGVyYXRv
ciBiKSB7IHJldHVybiBhLm1fcG9pbnRlciA+IGIubV9wb2ludGVyOyB9Ci1pbmxpbmUgYm9vbCBv
cGVyYXRvcjw9KFRpbWVySGVhcEl0ZXJhdG9yIGEsIFRpbWVySGVhcEl0ZXJhdG9yIGIpIHsgcmV0
dXJuIGEubV9wb2ludGVyIDw9IGIubV9wb2ludGVyOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj49
KFRpbWVySGVhcEl0ZXJhdG9yIGEsIFRpbWVySGVhcEl0ZXJhdG9yIGIpIHsgcmV0dXJuIGEubV9w
b2ludGVyID49IGIubV9wb2ludGVyOyB9Ci0KIGlubGluZSBUaW1lckhlYXBJdGVyYXRvciBvcGVy
YXRvcisoVGltZXJIZWFwSXRlcmF0b3IgYSwgc2l6ZV90IGIpIHsgcmV0dXJuIFRpbWVySGVhcEl0
ZXJhdG9yKGEubV9wb2ludGVyICsgYik7IH0KIGlubGluZSBUaW1lckhlYXBJdGVyYXRvciBvcGVy
YXRvcisoc2l6ZV90IGEsIFRpbWVySGVhcEl0ZXJhdG9yIGIpIHsgcmV0dXJuIFRpbWVySGVhcEl0
ZXJhdG9yKGEgKyBiLm1fcG9pbnRlcik7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL0FuaW1hdGlvbi5oCmluZGV4IDJlOGJkZWU3YWFhMTlkZjgwNmM3ODU4MDRjMDIw
NzRlY2E5OWU2YzEuLmMyYjdjODQyNjA4YzI2NWNmMzlhZTJkYzc3MGY5MmMzNWZhOTg3NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgKQEAgLTE4
Miw3ICsxODIsNiBAQCBwdWJsaWM6CiAKICAgICAvLyByZXR1cm4gdHJ1ZSBldmVyeSBBbmltYXRp
b24gaW4gdGhlIGNoYWluIChkZWZpbmVkIGJ5IG1fbmV4dCkgbWF0Y2ggCiAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEFuaW1hdGlvbiYgbykgY29uc3QgeyByZXR1cm4gYW5pbWF0aW9uc01hdGNo
KG8pOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFuaW1hdGlvbiYgbykgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCiAgICAgYm9vbCBmaWxsc0JhY2t3YXJkcygpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsbE1vZGVTZXQgJiYgKGZpbGxNb2RlKCkgPT0gQW5pbWF0aW9uRmlsbE1v
ZGU6OkJhY2t3YXJkcyB8fCBmaWxsTW9kZSgpID09IEFuaW1hdGlvbkZpbGxNb2RlOjpCb3RoKTsg
fQogICAgIGJvb2wgZmlsbHNGb3J3YXJkcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbE1vZGVTZXQg
JiYgKGZpbGxNb2RlKCkgPT0gQW5pbWF0aW9uRmlsbE1vZGU6OkZvcndhcmRzIHx8IGZpbGxNb2Rl
KCkgPT0gQW5pbWF0aW9uRmlsbE1vZGU6OkJvdGgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvbkxpc3QuaAppbmRleCBhYjZlMDI0ZGY3NDQ5ZjBm
ODJhZTg0ZjY5NTU1ZWEwMjA4MWJhZTU4Li5iNTgzNjM1NWVmZDUyNzIxZjkwZWVmOWI5OTVlMWU3
MDYzYmNhMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24v
QW5pbWF0aW9uTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9B
bmltYXRpb25MaXN0LmgKQEAgLTQwLDEwICs0MCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmls
bFVuc2V0UHJvcGVydGllcygpOwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbmltYXRpb25M
aXN0JikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFuaW1hdGlvbkxpc3QmIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAg
IH0KICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW9ucy5z
aXplKCk7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvbnMu
aXNFbXB0eSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRp
b24vVGltaW5nRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9U
aW1pbmdGdW5jdGlvbi5oCmluZGV4IDZmY2I0OWI2Zjk1MWFjZTNiMjA0ODlhODUxMTcwOWJkNjBj
ZTRiZmYuLjZjZGNkYzI5OTk3ZjgxYmM1ZjI3MWExOTI1MTE1NTQyYjI2YjJiNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCkBA
IC01MSw3ICs1MSw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzU3ByaW5nVGltaW5nRnVuY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gU3ByaW5nRnVuY3Rpb247IH0KIAogICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJikgY29uc3QgPSAwOwotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmUHRy
PFRpbWluZ0Z1bmN0aW9uPj4gY3JlYXRlRnJvbUNTU1RleHQoY29uc3QgU3RyaW5nJik7CiAgICAg
c3RhdGljIFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY3JlYXRlRnJvbUNTU1ZhbHVlKGNvbnN0IENT
U1ZhbHVlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQ
bGF5aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0lu
Zm8uaAppbmRleCAxZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0NDhkNmNkYWRjY2NjZTFiLi4wZmRm
MjljZWQ4ZmZjNWFkZWM1NjEzY2I3N2Q0MmEwMDQ5YmM3MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTQzLDExICs0Myw2IEBAIHN0
cnVjdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsgewogICAgICAgICByZXR1cm4gc3JjID09IG90aGVy
LnNyYyAmJiBtaW1lVHlwZSA9PSBvdGhlci5taW1lVHlwZTsKICAgICB9CiAKLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgTm93UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3
b3JrPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKQEAgLTg3LDI1ICs4Miw3IEBAIHN0cnVjdCBOb3dQ
bGF5aW5nSW5mbyB7CiAgICAgYm9vbCBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5
IHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvQXJ0d29yaz4gYXJ0
d29yazsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb3dQbGF5aW5nSW5mbyYgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGl0bGUgPT0gb3RoZXIudGl0bGUKLSAgICAg
ICAgICAgICYmIGFydGlzdCA9PSBvdGhlci5hcnRpc3QKLSAgICAgICAgICAgICYmIGFsYnVtID09
IG90aGVyLmFsYnVtCi0gICAgICAgICAgICAmJiBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIg
PT0gb3RoZXIuc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyCi0gICAgICAgICAgICAmJiBkdXJh
dGlvbiA9PSBvdGhlci5kdXJhdGlvbgotICAgICAgICAgICAgJiYgY3VycmVudFRpbWUgPT0gb3Ro
ZXIuY3VycmVudFRpbWUKLSAgICAgICAgICAgICYmIHN1cHBvcnRzU2Vla2luZyA9PSBvdGhlci5z
dXBwb3J0c1NlZWtpbmcKLSAgICAgICAgICAgICYmIHVuaXF1ZUlkZW50aWZpZXIgPT0gb3RoZXIu
dW5pcXVlSWRlbnRpZmllcgotICAgICAgICAgICAgJiYgaXNQbGF5aW5nID09IG90aGVyLmlzUGxh
eWluZwotICAgICAgICAgICAgJiYgYWxsb3dzTm93UGxheWluZ0NvbnRyb2xzVmlzaWJpbGl0eSA9
PSBvdGhlci5hbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmlsaXR5Ci0gICAgICAgICAgICAm
JiBhcnR3b3JrID09IG90aGVyLmFydHdvcms7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IE5vd1BsYXlpbmdJbmZvJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5v
d1BsYXlpbmdJbmZvJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE5vd1BsYXlpbmdJbmZvPiBkZWNvZGUoRGVjb2Rl
ciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAKaW5kZXggNTdjYzE0MjhkNWNlOTY2
NDA5NmIzYWZiZDZiMDkwNmNkOThmMjAxNy4uZDZkNTk0ZTIxY2Y5ZjM1NzYzMDVlNDY0ODI4MDZj
NjI3ZWZhYzEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29j
b2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCkBAIC0yMjQsMTEg
KzIyNCw2IEBAIGJvb2wgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpvcGVyYXRvcj09KGNvbnN0
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgb3RoCiAgICAgcmV0dXJuIG1fc3RyZWFtRGVz
Y3JpcHRpb24gPT0gb3RoZXI7CiB9CiAKLWJvb2wgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpv
cGVyYXRvciE9KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsKLX0KLQogYm9vbCBDQUF1ZGlvU3Ry
ZWFtRGVzY3JpcHRpb246Om9wZXJhdG9yPT0oY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYg
b3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKG90aGVyLnBsYXRmb3JtRGVzY3JpcHRpb24oKS50eXBl
ICE9IFBsYXRmb3JtRGVzY3JpcHRpb246OkNBQXVkaW9TdHJlYW1CYXNpY1R5cGUpCkBAIC0yMzcs
MTEgKzIzMiw2IEBAIGJvb2wgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uOjpvcGVyYXRvcj09KGNv
bnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG90aGVyKSBjCiAgICAgcmV0dXJuIG9wZXJhdG9y
PT0oKnN0ZDo6Z2V0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KG90aGVyLnBs
YXRmb3JtRGVzY3JpcHRpb24oKS5kZXNjcmlwdGlvbikpOwogfQogCi1ib29sIENBQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbjo6b3BlcmF0b3IhPShjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBv
dGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOwotfQotCiBjb25z
dCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIENBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbjo6
c3RyZWFtRGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIHJldHVybiBtX3N0cmVhbURlc2NyaXB0
aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQ0FB
dWRpb1N0cmVhbURlc2NyaXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9j
b2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaAppbmRleCA2M2FlYzYzNmEwM2VmYzU2NjA1
M2U3ZGZiY2FkZjNjOTQxOTRmNDAxLi45MTNmYWZmYWQzZmI3NDViY2UyNDY5N2E3OTIyZjA1YTIz
ZjU4NDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9D
QUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaApAQCAtMzEsNyArMzEsNiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29u
c3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uJik7Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiYgYSwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBiKSB7
IHJldHVybiAhKGEgPT0gYik7IH0KIAogY2xhc3MgV0VCQ09SRV9FWFBPUlQgQ0FBdWRpb1N0cmVh
bURlc2NyaXB0aW9uIGZpbmFsIDogcHVibGljIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNjEsMTAgKzYwLDggQEAgcHVibGljOgogICAg
IHVpbnQzMl90IGZvcm1hdEZsYWdzKCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3BlcmF0
b3I9PShzdGF0aWNfY2FzdDxjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJj4ob3RoZXIpKTsg
fQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24m
IG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXVkaW9TdHJlYW1CYXNp
Y0Rlc2NyaXB0aW9uJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mKSBjb25zdDsKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYpIGNvbnN0OwogCiAg
ICAgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzdHJlYW1EZXNjcmlwdGlvbigp
IGNvbnN0OwogICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgc3RyZWFtRGVzY3JpcHRp
b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NhbGMvQ2FsY0V4cHJl
c3Npb25CbGVuZExlbmd0aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2FsYy9DYWxjRXhw
cmVzc2lvbkJsZW5kTGVuZ3RoLmgKaW5kZXggOWI0NzcyMTQ4YzdlODM5MWRlZWQ0MmJmNjY5YjVk
MjY3ODE2Njc0My4uZTdmZmZjYmMzZWUzNmE3YmVhNTEzZGQwZWI0ODdmMmNlZTYxYTJlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2FsYy9DYWxjRXhwcmVzc2lvbkJsZW5k
TGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2FsYy9DYWxjRXhwcmVzc2lv
bkJsZW5kTGVuZ3RoLmgKQEAgLTM4LDYgKzM4LDggQEAgcHVibGljOgogICAgIGNvbnN0IExlbmd0
aCYgdG8oKSBjb25zdCB7IHJldHVybiBtX3RvOyB9CiAgICAgZmxvYXQgcHJvZ3Jlc3MoKSBjb25z
dCB7IHJldHVybiBtX3Byb2dyZXNzOyB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2Fs
Y0V4cHJlc3Npb25CbGVuZExlbmd0aCYpIGNvbnN0ID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAg
ICBmbG9hdCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENhbGNFeHByZXNzaW9uTm9kZSYpIGNvbnN0IGZpbmFsOwpAQCAtNDgs
MTEgKzUwLDYgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3Byb2dyZXNzOwogfTsKIAotaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoJiBhLCBjb25z
dCBDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoJiBiKQotewotICAgIHJldHVybiBhLnByb2dyZXNz
KCkgPT0gYi5wcm9ncmVzcygpICYmIGEuZnJvbSgpID09IGIuZnJvbSgpICYmIGEudG8oKSA9PSBi
LnRvKCk7Ci19Ci0KIH0KIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DQUxDRVhQUkVTU0lPTl9O
T0RFKENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGgsIHR5cGUoKSA9PSBXZWJDb3JlOjpDYWxjRXhw
cmVzc2lvbk5vZGVUeXBlOjpCbGVuZExlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5oCmluZGV4IDdkMDk1MWI0NDdkNTEwZDFiZmNjNmQ1Y2ZjZWE0YzgzM2Q1MGE4
OGIuLjBkNWRlZmRmMDQyOGI4NWZlNTFiNzA2ZjI4MjQ3YjVmZjA4N2U4OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMjYwLDcgKzI2MCw2IEBAIHByaXZh
dGU6CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwot
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENvbG9yJiwgY29uc3QgQ29sb3ImKTsKIAogLy8gT25lIG9y
IGJvdGggbXVzdCBiZSBvdXQgb2YgbGluZSBjb2xvcnMuCiBib29sIG91dE9mTGluZUNvbXBvbmVu
dHNzRXF1YWwoY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwpAQCAtMjgxLDExICsyODAsNiBA
QCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9yJiBhLCBjb25zdCBDb2xvciYgYikK
ICAgICByZXR1cm4gYS5tX2NvbG9yQW5kRmxhZ3MgPT0gYi5tX2NvbG9yQW5kRmxhZ3M7CiB9CiAK
LWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKQot
ewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIGlubGluZSBib29sIG91dE9mTGluZUNvbXBv
bmVudHNzRXF1YWwoY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9yJiBiKQogewogICAgIGlmIChh
LmlzT3V0T2ZMaW5lKCkgJiYgYi5pc091dE9mTGluZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb21wb25lbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaAppbmRleCBjMzlkZGRkNGFmOTE1
YmUxNTlmZjllMGYxNzgxY2U3YWNmNzdkODFiLi5iMTA4MTIzMzg2NGY1YWI3MTUyNjJhY2ZiYzYx
MmIwMWQ2NTQyZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbXBvbmVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbXBvbmVudHMuaApAQCAtNTEsNiArNTEsOCBAQCBzdHJ1Y3QgQ29sb3JDb21wb25l
bnRzIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGPgogICAgIGNvbnN0ZXhwciBhdXRvIG1hcChG
JiYgZnVuY3Rpb24pIGNvbnN0IC0+IENvbG9yQ29tcG9uZW50czxkZWNsdHlwZShmdW5jdGlvbihz
dGQ6OmRlY2x2YWw8VD4oKSkpLCBOPjsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xv
ckNvbXBvbmVudHMmKSBjb25zdCA9IGRlZmF1bHQ7CisKICAgICBjb25zdGV4cHIgQ29sb3JDb21w
b25lbnRzJiBvcGVyYXRvcis9KGNvbnN0IENvbG9yQ29tcG9uZW50cyYpOwogICAgIGNvbnN0ZXhw
ciBDb2xvckNvbXBvbmVudHMmIG9wZXJhdG9yLz0oVCk7CiAKQEAgLTE2MiwxOCArMTY0LDYgQEAg
Y29uc3RleHByIENvbG9yQ29tcG9uZW50czxULCBOPiBwZXJDb21wb25lbnRNaW4oY29uc3QgQ29s
b3JDb21wb25lbnRzPFQsIE4+JiBhLAogICAgIHJldHVybiBtYXBDb2xvckNvbXBvbmVudHMoW10o
VCBjMSwgVCBjMikgeyByZXR1cm4gc3RkOjptaW4oYzEsIGMyKTsgfSwgYSwgYik7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPgotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDb2xvckNvbXBvbmVudHM8VCwgTj4mIGEsIGNvbnN0IENvbG9yQ29tcG9uZW50czxULCBO
PiYgYikKLXsKLSAgICByZXR1cm4gYS5jb21wb25lbnRzID09IGIuY29tcG9uZW50czsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IENvbG9yQ29tcG9uZW50czxULCBOPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRzPFQs
IE4+JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogbmFtZXNwYWNlIHN0ZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb25NZXRob2QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5oCmluZGV4IGVlNmNi
YTBkMWQzYWQ3YmQxMTg2YzNjOTM3OWVmYThhODAzYWJjYjIuLmVkODU2MWI4NjlkMzQ3YzI1ZDlj
NmJhZWU2OGQyMzAwYTZmMGE3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5oCkBAIC02MCw0NSAr
NjAsNTUgQEAgc3RydWN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7CiAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xh
dGlvbkNvbG9yU3BhY2U6OkhTTDsKICAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6
SFNMQTxmbG9hdD47CiAgICAgICAgIEh1ZUludGVycG9sYXRpb25NZXRob2QgaHVlSW50ZXJwb2xh
dGlvbk1ldGhvZCA9IEh1ZUludGVycG9sYXRpb25NZXRob2Q6OlNob3J0ZXI7CisgICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBIU0wmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKICAgICBz
dHJ1Y3QgSFdCIHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9sYXRpb25D
b2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6SFdCOwogICAgICAgICB1
c2luZyBDb2xvclR5cGUgPSBXZWJDb3JlOjpIV0JBPGZsb2F0PjsKICAgICAgICAgSHVlSW50ZXJw
b2xhdGlvbk1ldGhvZCBodWVJbnRlcnBvbGF0aW9uTWV0aG9kID0gSHVlSW50ZXJwb2xhdGlvbk1l
dGhvZDo6U2hvcnRlcjsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhXQiYpIGNvbnN0
ID0gZGVmYXVsdDsKICAgICB9OwogICAgIHN0cnVjdCBMQ0ggewogICAgICAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9sYXRpb25D
b2xvclNwYWNlOjpMQ0g7CiAgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6OkxDSEE8
ZmxvYXQ+OwogICAgICAgICBIdWVJbnRlcnBvbGF0aW9uTWV0aG9kIGh1ZUludGVycG9sYXRpb25N
ZXRob2QgPSBIdWVJbnRlcnBvbGF0aW9uTWV0aG9kOjpTaG9ydGVyOworICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgTENIJikgY29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAgICAgc3RydWN0
IExhYiB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JT
cGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OkxhYjsKICAgICAgICAgdXNpbmcg
Q29sb3JUeXBlID0gV2ViQ29yZTo6TGFiPGZsb2F0PjsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IExhYiYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9OwogICAgIHN0cnVjdCBPS0xDSCB7
CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9
IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6Ok9LTENIOwogICAgICAgICB1c2luZyBDb2xv
clR5cGUgPSBXZWJDb3JlOjpPS0xDSEE8ZmxvYXQ+OwogICAgICAgICBIdWVJbnRlcnBvbGF0aW9u
TWV0aG9kIGh1ZUludGVycG9sYXRpb25NZXRob2QgPSBIdWVJbnRlcnBvbGF0aW9uTWV0aG9kOjpT
aG9ydGVyOworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT0tMQ0gmKSBjb25zdCA9IGRl
ZmF1bHQ7CiAgICAgfTsKICAgICBzdHJ1Y3QgT0tMYWIgewogICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9sYXRpb25Db2xv
clNwYWNlOjpPS0xhYjsKICAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6T0tMYWI8
ZmxvYXQ+OworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT0tMYWImKSBjb25zdCA9IGRl
ZmF1bHQ7CiAgICAgfTsKICAgICBzdHJ1Y3QgU1JHQiB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9y
U3BhY2U6OlNSR0I7CiAgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6OkV4dGVuZGVk
U1JHQkE8ZmxvYXQ+OworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU1JHQiYpIGNvbnN0
ID0gZGVmYXVsdDsKICAgICB9OwogICAgIHN0cnVjdCBTUkdCTGluZWFyIHsKICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9sYXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRlcnBv
bGF0aW9uQ29sb3JTcGFjZTo6U1JHQkxpbmVhcjsKICAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0g
V2ViQ29yZTo6RXh0ZW5kZWRMaW5lYXJTUkdCQTxmbG9hdD47CisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTUkdCTGluZWFyJikgY29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAgICAgc3Ry
dWN0IFhZWkQ1MCB7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9u
Q29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlhZWkQ1MDsKICAgICAg
ICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUw
PjsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFhZWkQ1MCYpIGNvbnN0ID0gZGVmYXVs
dDsKICAgICB9OwogICAgIHN0cnVjdCBYWVpENjUgewogICAgICAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9sYXRpb25Db2xvclNw
YWNlOjpYWVpENjU7CiAgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6OlhZWkE8Zmxv
YXQsIFdoaXRlUG9pbnQ6OkQ2NT47CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBYWVpE
NjUmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTEwNiw2ICsxMTYsOCBAQCBz
dHJ1Y3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsKIAogICAgIHN0ZDo6dmFyaWFudDxIU0ws
IEhXQiwgTENILCBMYWIsIE9LTENILCBPS0xhYiwgU1JHQiwgU1JHQkxpbmVhciwgWFlaRDUwLCBY
WVpENjU+IGNvbG9yU3BhY2U7CiAgICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11
bHRpcGxpY2F0aW9uOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZCYpIGNvbnN0ID0gZGVmYXVsdDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+IHZvaWQgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKQEAgLTE5OCw2MSArMjEwLDYgQEAgaW5saW5lIHZvaWQgYWRkKEhhc2hlciYg
aGFzaGVyLCBjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2QmIGNvbG9ySW50ZXJwb2xhdGkK
ICAgICApOwogfQogCi1pbmxpbmUgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xv
ckludGVycG9sYXRpb25NZXRob2Q6OkhTTCYgYSwgY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kOjpIU0wmIGIpCi17Ci0gICAgcmV0dXJuIGEuaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCA9PSBi
Lmh1ZUludGVycG9sYXRpb25NZXRob2Q7Ci19Ci0KLWlubGluZSBjb25zdGV4cHIgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6SFdCJiBhLCBjb25zdCBDb2xv
ckludGVycG9sYXRpb25NZXRob2Q6OkhXQiYgYikKLXsKLSAgICByZXR1cm4gYS5odWVJbnRlcnBv
bGF0aW9uTWV0aG9kID09IGIuaHVlSW50ZXJwb2xhdGlvbk1ldGhvZDsKLX0KLQotaW5saW5lIGNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpM
Q0gmIGEsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6TENIJiBiKQotewotICAgIHJl
dHVybiBhLmh1ZUludGVycG9sYXRpb25NZXRob2QgPT0gYi5odWVJbnRlcnBvbGF0aW9uTWV0aG9k
OwotfQotCi1pbmxpbmUgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvckludGVy
cG9sYXRpb25NZXRob2Q6Ok9LTENIJiBhLCBjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6
Ok9LTENIJiBiKQotewotICAgIHJldHVybiBhLmh1ZUludGVycG9sYXRpb25NZXRob2QgPT0gYi5o
dWVJbnRlcnBvbGF0aW9uTWV0aG9kOwotfQotCi1pbmxpbmUgY29uc3RleHByIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OkxhYiYsIGNvbnN0IENvbG9ySW50
ZXJwb2xhdGlvbk1ldGhvZDo6TGFiJikKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5l
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
OjpPS0xhYiYsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6T0tMYWImKQotewotICAg
IHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0ImLCBjb25zdCBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0ImKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgY29uc3Rl
eHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0JM
aW5lYXImLCBjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0JMaW5lYXImKQotewot
ICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlhZWkQ1MCYsIGNvbnN0IENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZDo6WFlaRDUwJikKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5l
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
OjpYWVpENjUmLCBjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlhZWkQ2NSYpCi17Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCYgYSwgY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kJiBiKQotewotICAgIHJldHVybiBhLmFscGhhUHJlbXVsdGlwbGljYXRpb24gPT0gYi5h
bHBoYVByZW11bHRpcGxpY2F0aW9uICYmIGEuY29sb3JTcGFjZSA9PSBiLmNvbG9yU3BhY2U7Ci19
Ci0KIH0KIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JNYXRyaXguaAppbmRleCBmMzJiNDk2YjY1YWQ4YjI4MTNmMGEzYWE0NzI5ZDhi
OWQ3MzZjZTQzLi44YTE2MzhjMWY5NDljNzMwMWNmZjg3NjEwNTJkZjk0OTUzYjUzNDkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvck1hdHJpeC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKQEAgLTUw
LDI5ICs1MCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX21hdHJpeFsocm93ICogQ29s
dW1uQ291bnQpICsgY29sdW1uXTsKICAgICB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q29sb3JNYXRyaXgmKSBjb25zdCA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgc3RkOjphcnJh
eTxmbG9hdCwgUm93Q291bnQgKiBDb2x1bW5Db3VudD4gbV9tYXRyaXg7CiB9OwogCi10ZW1wbGF0
ZTxzaXplX3QgQ29sdW1uQ291bnQsIHNpemVfdCBSb3dDb3VudD4KLWNvbnN0ZXhwciBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ29sb3JNYXRyaXg8Q29sdW1uQ291bnQsIFJvd0NvdW50PiYgYSwgY29u
c3QgQ29sb3JNYXRyaXg8Q29sdW1uQ291bnQsIFJvd0NvdW50PiYgYikKLXsKLSAgICBmb3IgKHNp
emVfdCByb3cgPSAwOyByb3cgPCBSb3dDb3VudDsgKytyb3cpIHsKLSAgICAgICAgZm9yIChzaXpl
X3QgY29sdW1uID0gMDsgY29sdW1uIDwgQ29sdW1uQ291bnQ7ICsrY29sdW1uKSB7Ci0gICAgICAg
ICAgICBpZiAoYS5hdChyb3csIGNvbHVtbikgIT0gYi5hdChyb3csIGNvbHVtbikpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVl
OwotfQotCi10ZW1wbGF0ZTxzaXplX3QgQ29sdW1uQ291bnQsIHNpemVfdCBSb3dDb3VudD4KLWNv
bnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29sb3JNYXRyaXg8Q29sdW1uQ291bnQsIFJv
d0NvdW50PiYgYSwgY29uc3QgQ29sb3JNYXRyaXg8Q29sdW1uQ291bnQsIFJvd0NvdW50PiYgYikK
LXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi0KIC8vIEZJWE1FOiBUaGVzZSBhcmUgb25s
eSB1c2VkIGluIEZpbHRlck9wZXJhdGlvbnMuY3BwLiBDb25zaWRlciBtb3ZpbmcgdGhlbSB0aGVy
ZS4KIGNvbnN0ZXhwciBDb2xvck1hdHJpeDwzLCAzPiBncmF5c2NhbGVDb2xvck1hdHJpeChmbG9h
dCBhbW91bnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5
cGVzLmgKaW5kZXggMjhlNzhkNGRmM2E1OWNiYjg2ZTFkM2ViMDYwM2YwOTdkZmE0ZWZhOS4uZmNj
MGRkYjVkYWRhMTg3NTMyZjRjM2Y1NDkwODEyMjk4OWIxNDMwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVHlwZXMuaApAQCAtMTkzLDEyICsxOTMsNiBAQCBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9yVHlwZSYgYSwgY29uc3QgQ29sb3JU
eXBlJiBiKQogICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhhLnVucmVzb2x2ZWQoKSkgPT0g
YXNDb2xvckNvbXBvbmVudHMoYi51bnJlc29sdmVkKCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBDb2xvclR5cGUsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SXNDb252ZXJ0aWJsZVRvQ29s
b3JDb21wb25lbnRzPENvbG9yVHlwZT4+KiA9IG51bGxwdHI+Ci1jb25zdGV4cHIgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IENvbG9yVHlwZSYgYSwgY29uc3QgQ29sb3JUeXBlJiBiKQotewotICAgIHJl
dHVybiAhKGEgPT0gYik7Ci19Ci0KIAogLy8gTUFSSzogLSBSR0IgQ29sb3IgVHlwZXMuCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgK
aW5kZXggN2JiZWMxMWM5NGFjNjVkZDdkYTExN2JiMTgzM2E2MGUzY2I3MTVmOC4uOWZlMmI0MzBj
YTQwOTJiYTAwYmFjY2I5NmU2ZDI3ZjM4Y2U4MjA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKQEAgLTUwLDEwICs1MCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlY29k
aW5nT3B0aW9ucyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9kZWNvZGlu
Z01vZGVPclNpemUgPT0gb3RoZXIubV9kZWNvZGluZ01vZGVPclNpemU7Ci0gICAgfQorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBEZWNvZGluZ09wdGlvbnMmKSBjb25zdCA9IGRlZmF1bHQ7CiAK
ICAgICBib29sIGlzQXV0bygpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAKaW5kZXgg
MDM2YWVlMjBmMWZhYWIzNjhhNDcwNGQ0YmM4NzU0NzNiYTFkZDIxYy4uNjU0OWQxMjFlMTdlNTQx
NTViODQyZTUwNDIwNDhhZTFjNDA1ZWRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCkBAIC0xMDMs
MTEgKzEwMyw2IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgYikKICNlbmRpZgogfQogCi1ib29sIG9w
ZXJhdG9yIT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogc3RkOjpvcHRp
b25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6YXNSR0Io
KSBjb25zdAogewogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKaW5kZXggM2JlOTA4Zjc1YzU0
NWM5NGIyN2ExODhiYTYxYmI5NWM2YmI3MTFlNi4uMThkZGMxYjE3NWMyY2FmODU3YjcyODNlZTEx
ODE5OWRmZDA0NTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKQEAgLTU0LDcgKzU0LDYgQEAgcHJpdmF0
ZToKIH07CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKLVdFQkNPUkVfRVhQ
T1JUIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKIAogV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAppbmRleCAyOTRh
Zjk3MTZkYmE4ZTIzYjVjYzRjNDFhNGZiZWNhNWVjYzlmYzdhLi4xMDQwNWRiNmQ4MzNlYjM1YWY1
ZGZmYWU5MzU3NmFjY2NjMWY4NzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRQb2ludC5oCkBAIC0xNzcsNiArMTc3LDggQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4geyBtX3ksIG1feCB9OwogICAgIH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
bG9hdFBvaW50JikgY29uc3QgPSBkZWZhdWx0OworCiAjaWYgVVNFKENHKQogICAgIFdFQkNPUkVf
RVhQT1JUIEZsb2F0UG9pbnQoY29uc3QgQ0dQb2ludCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIG9w
ZXJhdG9yIENHUG9pbnQoKSBjb25zdDsKQEAgLTIzOSwxNiArMjQxLDYgQEAgaW5saW5lIEZsb2F0
UG9pbnQgb3BlcmF0b3ItKGNvbnN0IEZsb2F0UG9pbnQmIGEpCiAgICAgcmV0dXJuIEZsb2F0UG9p
bnQoLWEueCgpLCAtYS55KCkpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZs
b2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0UG9pbnQmIGIpCi17Ci0gICAgcmV0dXJuIGEueCgpID09
IGIueCgpICYmIGEueSgpID09IGIueSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0UG9pbnQmIGIpCi17Ci0gICAgcmV0dXJuIGEu
eCgpICE9IGIueCgpIHx8IGEueSgpICE9IGIueSgpOwotfQotCiBpbmxpbmUgZmxvYXQgb3BlcmF0
b3IqKGNvbnN0IEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0UG9pbnQmIGIpCiB7CiAgICAgLy8g
ZG90IHByb2R1Y3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UG9pbnQzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQ
b2ludDNELmgKaW5kZXggZDJiM2U1ZWM0ZjgxZDRkZTUxNGNhZjc3NmRkMTc2YTIyOTNiMTFjYy4u
NzJiNGQzMjNiYWM4NDg3ZGIwMDZmZTAyNzg3ODViZGY0ZGI4NmYzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNELmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNELmgKQEAgLTExOSw2ICsxMTks
OCBAQCBwdWJsaWM6CiAgICAgCiAgICAgZmxvYXQgZGlzdGFuY2VUbyhjb25zdCBGbG9hdFBvaW50
M0QmIGEpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZsb2F0UG9pbnQzRCYp
IGNvbnN0ID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICBmbG9hdCBtX3ggeyAwIH07CiAgICAg
ZmxvYXQgbV95IHsgMCB9OwpAQCAtMTY5LDE2ICsxNzEsNiBAQCBpbmxpbmUgRmxvYXRQb2ludDNE
IG9wZXJhdG9yLShjb25zdCBGbG9hdFBvaW50M0QmIGEsIGNvbnN0IEZsb2F0UG9pbnQmIGIpCiAg
ICAgcmV0dXJuIEZsb2F0UG9pbnQzRChhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIueSgpLCBhLnoo
KSk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRmxvYXRQb2ludDNEJiBhLCBj
b25zdCBGbG9hdFBvaW50M0QmIGIpCi17Ci0gICAgcmV0dXJuIGEueCgpID09IGIueCgpICYmIGEu
eSgpID09IGIueSgpICYmIGEueigpID09IGIueigpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEZsb2F0UG9pbnQzRCYgYSwgY29uc3QgRmxvYXRQb2ludDNEJiBiKQotewotICAg
IHJldHVybiBhLngoKSAhPSBiLngoKSB8fCBhLnkoKSAhPSBiLnkoKSB8fCBhLnooKSAhPSBiLnoo
KTsKLX0KLQogaW5saW5lIGZsb2F0IG9wZXJhdG9yKihjb25zdCBGbG9hdFBvaW50M0QmIGEsIGNv
bnN0IEZsb2F0UG9pbnQzRCYgYikKIHsKICAgICAvLyBkb3QgcHJvZHVjdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaAppbmRleCAwZjYzMDNkMmQxZTQzMDdh
NTMzZDkyNDA3OTllZDk5YWU3YjlkN2I0Li5kMzQwYzA5YTU4M2RmMjQxOTAyZTU1ODUwY2I3OThk
NjNkNDE2YTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFF1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1
YWQuaApAQCAtMTUzLDYgKzE1Myw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmxvYXRRdWFkPiBkZWNvZGUoRGVjb2RlciYpOwog
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZsb2F0UXVhZCYpIGNvbnN0ID0gZGVmYXVsdDsK
KwogcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fcDE7CiAgICAgRmxvYXRQb2ludCBtX3AyOwpA
QCAtMjA1LDE2ICsyMDcsNiBAQCBpbmxpbmUgRmxvYXRRdWFkJiBvcGVyYXRvci09KEZsb2F0UXVh
ZCYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQogICAgIHJldHVybiBhOwogfQogCi1pbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEZsb2F0UXVhZCYgYSwgY29uc3QgRmxvYXRRdWFkJiBiKQotewot
ICAgIHJldHVybiBhLnAxKCkgPT0gYi5wMSgpICYmIGEucDIoKSA9PSBiLnAyKCkgJiYgYS5wMygp
ID09IGIucDMoKSAmJiBhLnA0KCkgPT0gYi5wNCgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEZsb2F0UXVhZCYgYSwgY29uc3QgRmxvYXRRdWFkJiBiKQotewotICAgIHJldHVy
biAhKGEgPT0gYik7Ci19Ci0KIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBGbG9hdFF1YWQmKTsKIAogVmVjdG9yPEZsb2F0
UmVjdD4gYm91bmRpbmdCb3hlcyhjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAppbmRleCAxN2I3YWNkMzI1MGFk
NTIwYmRiODk0YzRjMzdlNmU5ZjVjYWMyMjYwLi5kNjhjMWY1MzFmOWFkNjA2OGViNzI3YzIyOWI4
OGFiMDY0YWM4MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFJlY3QuaApAQCAtMjI5LDYgKzIyOSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmxvYXRSZWN0
IGluZmluaXRlUmVjdCgpOwogICAgIGJvb2wgaXNJbmZpbml0ZSgpIGNvbnN0OwogCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0ID0gZGVmYXVsdDsKKwogcHJpdmF0
ZToKICAgICBGbG9hdFBvaW50IG1fbG9jYXRpb247CiAgICAgRmxvYXRTaXplIG1fc2l6ZTsKQEAg
LTI3MCwxNiArMjcyLDYgQEAgaW5saW5lIEZsb2F0UmVjdCBvcGVyYXRvcisoY29uc3QgRmxvYXRS
ZWN0JiBhLCBjb25zdCBGbG9hdFJlY3QmIGIpCiAgICAgcmV0dXJuIGM7CiB9CiAKLWlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRmxvYXRSZWN0JiBhLCBjb25zdCBGbG9hdFJlY3QmIGIpCi17
Ci0gICAgcmV0dXJuIGEubG9jYXRpb24oKSA9PSBiLmxvY2F0aW9uKCkgJiYgYS5zaXplKCkgPT0g
Yi5zaXplKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRmxvYXRSZWN0JiBh
LCBjb25zdCBGbG9hdFJlY3QmIGIpCi17Ci0gICAgcmV0dXJuIGEubG9jYXRpb24oKSAhPSBiLmxv
Y2F0aW9uKCkgfHwgYS5zaXplKCkgIT0gYi5zaXplKCk7Ci19Ci0KIGlubGluZSBGbG9hdFJlY3Qg
RmxvYXRSZWN0OjppbmZpbml0ZVJlY3QoKQogewogICAgIHN0YXRpYyBGbG9hdFJlY3QgaW5maW5p
dGVSZWN0KC1zdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLCAtc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46Om1heCgpIC8gMiwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46
Om1heCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oCmluZGV4IDc3
MjRkMDNlMTgxNThjZmI1YjZkYzFlOWM0OWRjZjg4NmVkZmI3ZjAuLmFjMDFiMTEzZjZiMjQzNjQ0
ZjhmNzEwNzU3MDlhODYwZTQzNTFlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmgKQEAgLTk0LDYgKzk0LDggQEAgcHVibGlj
OgogICAgICAgICB2b2lkIHNocmluayhmbG9hdCB0b3BXaWR0aCwgZmxvYXQgYm90dG9tV2lkdGgs
IGZsb2F0IGxlZnRXaWR0aCwgZmxvYXQgcmlnaHRXaWR0aCkgeyBleHBhbmQoLXRvcFdpZHRoLCAt
Ym90dG9tV2lkdGgsIC1sZWZ0V2lkdGgsIC1yaWdodFdpZHRoKTsgfQogICAgICAgICB2b2lkIHNo
cmluayhmbG9hdCBzaXplKSB7IHNocmluayhzaXplLCBzaXplLCBzaXplLCBzaXplKTsgfQogCisg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSYWRpaSYpIGNvbnN0ID0gZGVmYXVsdDsKKwog
ICAgIHByaXZhdGU6CiAgICAgICAgIEZsb2F0U2l6ZSBtX3RvcExlZnQ7CiAgICAgICAgIEZsb2F0
U2l6ZSBtX3RvcFJpZ2h0OwpAQCAtMTQ0LDMxICsxNDYsMTMgQEAgcHVibGljOgogCiAgICAgYm9v
bCBpbnRlcnNlY3Rpb25Jc1JlY3Rhbmd1bGFyKGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwogCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKSBjb25zdCA9IGRlZmF1
bHQ7CisKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKICAgICBSYWRpaSBtX3JhZGlp
OwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYgYSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIGIpCi17Ci0gICAgcmV0dXJu
IGEudG9wTGVmdCgpID09IGIudG9wTGVmdCgpICYmIGEudG9wUmlnaHQoKSA9PSBiLnRvcFJpZ2h0
KCkgJiYgYS5ib3R0b21MZWZ0KCkgPT0gYi5ib3R0b21MZWZ0KCkgJiYgYS5ib3R0b21SaWdodCgp
ID09IGIuYm90dG9tUmlnaHQoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBG
bG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgYSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkm
IGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBhLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBiKQot
ewotICAgIHJldHVybiBhLnJlY3QoKSA9PSBiLnJlY3QoKSAmJiBhLnJhZGlpKCkgPT0gYi5yYWRp
aSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IGEsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsK
LX0KLQogaW5saW5lIGZsb2F0IGNhbGNCb3JkZXJSYWRpaUNvbnN0cmFpbnRTY2FsZUZvcihjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkK
IHsKICAgICAvLyBDb25zdHJhaW4gY29ybmVyIHJhZGlpIHVzaW5nIENTUzMgcnVsZXM6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCmluZGV4IGRlYjlhMTVm
ODMzOTg2OGY2NzdmMmYxMjkwY2I2MDQ2Y2NmMmFlYWQuLjMyZGYzZWJjN2E1M2VkYjNiNTk3NTg4
ZWZlNTEzM2JiYTIwZGQzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0U2l6ZS5oCkBAIC0xNTcsNiArMTU3LDggQEAgcHVibGljOgogICAgIFN0cmluZyB0b0pT
T05TdHJpbmcoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SlNPTjo6T2JqZWN0PiB0
b0pTT05PYmplY3QoKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFNp
emUmKSBjb25zdCA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgZmxvYXQgbV93aWR0aCB7IDAg
fTsKICAgICBmbG9hdCBtX2hlaWdodCB7IDAgfTsKQEAgLTIyMSwyMSArMjIzLDExIEBAIGlubGlu
ZSBGbG9hdFNpemUgb3BlcmF0b3IvKGZsb2F0IGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKICAgICBy
ZXR1cm4gRmxvYXRTaXplKGEgLyBiLndpZHRoKCksIGEgLyBiLmhlaWdodCgpKTsKIH0KIAotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IEZsb2F0U2l6ZSYg
YikKLXsKLSAgICByZXR1cm4gYS53aWR0aCgpID09IGIud2lkdGgoKSAmJiBhLmhlaWdodCgpID09
IGIuaGVpZ2h0KCk7Ci19Ci0KIGlubGluZSBib29sIGFyZUVzc2VudGlhbGx5RXF1YWwoY29uc3Qg
RmxvYXRTaXplJiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCiB7CiAgICAgcmV0dXJuIFdURjo6YXJl
RXNzZW50aWFsbHlFcXVhbChhLndpZHRoKCksIGIud2lkdGgoKSkgJiYgV1RGOjphcmVFc3NlbnRp
YWxseUVxdWFsKGEuaGVpZ2h0KCksIGIuaGVpZ2h0KCkpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQotewotICAgIHJl
dHVybiBhLndpZHRoKCkgIT0gYi53aWR0aCgpIHx8IGEuaGVpZ2h0KCkgIT0gYi5oZWlnaHQoKTsK
LX0KLQogaW5saW5lIEludFNpemUgcm91bmRlZEludFNpemUoY29uc3QgRmxvYXRTaXplJiBwKQog
ewogICAgIHJldHVybiBJbnRTaXplKGNsYW1wVG9JbnRlZ2VyKHJvdW5kZihwLndpZHRoKCkpKSwg
Y2xhbXBUb0ludGVnZXIocm91bmRmKHAuaGVpZ2h0KCkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDRlOTQ5ZGZhYjk3NjVhMmEwN2M0ODc4YWJlZTEw
M2ZiYWYyMWY1NzAuLjc1NjI2M2E5NWIxMGIxZDhkMDg0NGM1OWVkY2IzNmVlYzFiODlhNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBAIC01NjAsMTMgKzU2
MCw5IEBAIHN0cnVjdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleSB7CiAgICAgQXRvbVN0cmluZyBs
b2NhbGU7CiAgICAgVUNoYXIzMiBjaGFyYWN0ZXIgeyAwIH07CiAgICAgYm9vbCBpc0ZvclBsYXRm
b3JtRm9udCB7IGZhbHNlIH07CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENoYXJhY3RlckZh
bGxiYWNrTWFwS2V5JikgY29uc3QgPSBkZWZhdWx0OwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleSYgYSwgY29uc3QgQ2hhcmFjdGVyRmFs
bGJhY2tNYXBLZXkmIGIpCi17Ci0gICAgcmV0dXJuIGEubG9jYWxlID09IGIubG9jYWxlICYmIGEu
Y2hhcmFjdGVyID09IGIuY2hhcmFjdGVyICYmIGEuaXNGb3JQbGF0Zm9ybUZvbnQgPT0gYi5pc0Zv
clBsYXRmb3JtRm9udDsKLX0KLQogc3RydWN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5SGFzaCB7
CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkm
IGtleSkgeyByZXR1cm4gY29tcHV0ZUhhc2goa2V5LmxvY2FsZSwga2V5LmNoYXJhY3Rlciwga2V5
LmlzRm9yUGxhdGZvcm1Gb250KTsgfQogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENoYXJh
Y3RlckZhbGxiYWNrTWFwS2V5JiBhLCBjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01hcEtleSYgYikg
eyByZXR1cm4gYSA9PSBiOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmNwcAppbmRleCBiMjVlN2RmYjk3YTEwMjk5N2IwZmFlMzNkNzUzODE1Zjg5YTMw
M2VkLi5hNTM0OWY0NDgyN2E2MTE4N2U2NDAwYTAzZGM0ZGY0OWM3ZjczNjc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTc1LDI0ICs3
NSwxMyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBhLCBj
b25zdCBGb250RmFtaWx5TmFtZSYgYikKICAgICByZXR1cm4gKGEuc3RyaW5nKCkuaXNOdWxsKCkg
fHwgYi5zdHJpbmcoKS5pc051bGwoKSkgPyBhLnN0cmluZygpID09IGIuc3RyaW5nKCkgOiBGb250
Q2FzY2FkZURlc2NyaXB0aW9uOjpmYW1pbHlOYW1lc0FyZUVxdWFsKGEuc3RyaW5nKCksIGIuc3Ry
aW5nKCkpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRGYW1pbHlOYW1l
JiBhLCBjb25zdCBGb250RmFtaWx5TmFtZSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwot
fQotCiBzdHJ1Y3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5IHsKICAgICBGb250RGVzY3JpcHRp
b25LZXkgZGVzY3JpcHRpb25LZXk7CiAgICAgRm9udEZhbWlseU5hbWUgZmFtaWx5OwogICAgIEZv
bnRDcmVhdGlvbkNvbnRleHQgZm9udENyZWF0aW9uQ29udGV4dDsKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5JikgY29uc3QgPSBkZWZhdWx0OwogfTsK
IAotc3RhdGljIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkm
IGEsIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleSYgYikKLXsKLSAgICByZXR1cm4gYS5k
ZXNjcmlwdGlvbktleSA9PSBiLmRlc2NyaXB0aW9uS2V5Ci0gICAgICAgICYmIGEuZmFtaWx5ID09
IGIuZmFtaWx5Ci0gICAgICAgICYmIGEuZm9udENyZWF0aW9uQ29udGV4dCA9PSBiLmZvbnRDcmVh
dGlvbkNvbnRleHQ7Ci19Ci0KIHN0cnVjdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXlIYXNoIHsK
ICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkm
IGtleSkgeyByZXR1cm4gY29tcHV0ZUhhc2goa2V5LmRlc2NyaXB0aW9uS2V5LCBrZXkuZmFtaWx5
LCBrZXkuZm9udENyZWF0aW9uQ29udGV4dCk7IH0KICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25z
dCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkmIGEsIGNvbnN0IEZvbnRQbGF0Zm9ybURhdGFDYWNo
ZUtleSYgYikgeyByZXR1cm4gYSA9PSBiOyB9CkBAIC0zNTQsMTQgKzM0Myw2IEBAIHZvaWQgRm9u
dENhY2hlOjpwdXJnZUluYWN0aXZlRm9udERhdGEodW5zaWduZWQgcHVyZ2VDb3VudCkKICAgICBw
bGF0Zm9ybVB1cmdlSW5hY3RpdmVGb250RGF0YSgpOwogfQogCi1ib29sIG9wZXJhdG9yPT0oY29u
c3QgRm9udENhc2NhZGVDYWNoZUtleSYgYSwgY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYgYikK
LXsKLSAgICByZXR1cm4gYS5mb250RGVzY3JpcHRpb25LZXkgPT0gYi5mb250RGVzY3JpcHRpb25L
ZXkKLSAgICAgICAgJiYgYS5mb250U2VsZWN0b3JJZCA9PSBiLmZvbnRTZWxlY3RvcklkCi0gICAg
ICAgICYmIGEuZm9udFNlbGVjdG9yVmVyc2lvbiA9PSBiLmZvbnRTZWxlY3RvclZlcnNpb24KLSAg
ICAgICAgJiYgYS5mYW1pbGllcyA9PSBiLmZhbWlsaWVzOwotfQotCiB1bnNpZ25lZCBGb250Q2Fz
Y2FkZUNhY2hlS2V5SGFzaDo6aGFzaChjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBrZXkpCiB7
CiAgICAgcmV0dXJuIGNvbXB1dGVIYXNoKGtleS5mb250RGVzY3JpcHRpb25LZXksIGtleS5mb250
U2VsZWN0b3JJZCwga2V5LmZvbnRTZWxlY3RvclZlcnNpb24sIGtleS5mYW1pbGllcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5oCmluZGV4IDc2YmI5ZjNi
YmI1MTRiMDE0NWI3YTllMTc0NzczYzUzNDcxMzVmYTkuLjVhZDc1Y2M4MmU5MmNhYjZjNTE2OWY4
ZDFjZWM5Y2Y5MDJmZmMzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5oCkBAIC0xNjEsMTEgKzE2MSw2IEBAIHN0cnVjdCBGb250RGVzY3JpcHRpb25L
ZXkgewogICAgICAgICAgICAgJiYgYXJlUG9pbnRpbmdUb0VxdWFsRGF0YShtX3JhcmVEYXRhLCBv
dGhlci5tX3JhcmVEYXRhKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9u
dERlc2NyaXB0aW9uS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKLSAgICB9Ci0KICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9pc0RlbGV0ZWRWYWx1ZTsgfQogCiAgICAgZnJpZW5kIHZvaWQg
YWRkKEhhc2hlciYsIGNvbnN0IEZvbnREZXNjcmlwdGlvbktleSYpOwpAQCAtMjQ4LDE2ICsyNDMs
MTUgQEAgcHJpdmF0ZToKIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RmFtaWx5TmFt
ZSYsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJik7Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udEZh
bWlseU5hbWUmLCBjb25zdCBGb250RmFtaWx5TmFtZSYpOwogCiBzdHJ1Y3QgRm9udENhc2NhZGVD
YWNoZUtleSB7CiAgICAgRm9udERlc2NyaXB0aW9uS2V5IGZvbnREZXNjcmlwdGlvbktleTsgLy8g
U2hhcmVkIHdpdGggdGhlIGxvd2VyIGxldmVsIEZvbnRDYWNoZSAoY2FjaGluZyBGb250IG9iamVj
dHMpCiAgICAgVmVjdG9yPEZvbnRGYW1pbHlOYW1lLCAzPiBmYW1pbGllczsKICAgICB1bnNpZ25l
ZCBmb250U2VsZWN0b3JJZDsKICAgICB1bnNpZ25lZCBmb250U2VsZWN0b3JWZXJzaW9uOwotfTsK
IAotYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmLCBjb25zdCBGb250
Q2FzY2FkZUNhY2hlS2V5Jik7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRDYXNjYWRl
Q2FjaGVLZXkmKSBjb25zdCA9IGRlZmF1bHQ7Cit9OwogCiBzdHJ1Y3QgRm9udENhc2NhZGVDYWNo
ZUVudHJ5IHsKICAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuaAppbmRleCBjMzQ1NjgwMTdm
Y2RlOTgzZTZmNWFjNzBlZTE3ODNhOWY3M2U5MDUzLi5kMTAwYzc5ZTg1ODg5MzA3Zjc3ZGY4OWIz
MzM2MWI3YmZlNjVkMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlLmgKQEAgLTExMSw3ICsxMTEsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgRm9udENhc2NhZGUmIG9wZXJhdG9yPShjb25zdCBGb250Q2FzY2FkZSYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRDYXNjYWRlJiBvdGhlcikg
Y29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRDYXNjYWRlJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIGNvbnN0IEZvbnRDYXNjYWRl
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZm9udERlc2Ny
aXB0aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlRGVzY3JpcHRpb24uaAppbmRleCA2M2ViYTJiOTA3NmY2NmRlMTExNjg1
YTllZmE2OGEzMjlhZjljZGI1Li43NDVmYjQ2MWNiNjhlN2VlZDY3NDE1NmIzNTM5NmIyYThiODFk
MTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fz
Y2FkZURlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhc2NhZGVEZXNjcmlwdGlvbi5oCkBAIC01MCw3ICs1MCw2IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBGb250Q2FzY2FkZURlc2NyaXB0aW9uKCk7CiAKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYpIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIHVuc2lnbmVkIGZhbWlseUNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9mYW1pbGllcy0+c2l6ZSgpOyB9CiAgICAgY29uc3QgQXRvbVN0cmluZyYg
Zmlyc3RGYW1pbHkoKSBjb25zdCB7IHJldHVybiBmYW1pbHlBdCgwKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENyZWF0aW9uQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENyZWF0aW9uQ29udGV4dC5oCmlu
ZGV4IDYzNDJlYTAyMjJhYjFkYzgxM2I5ZWZmMDgxM2NlMTYwYTRhNmVhZTUuLmY3NjBmMjVlMjA5
NWE4Yjk5ZmZmM2U0YzlmOTBkNzJhODUwNGJjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDcmVhdGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q3JlYXRpb25Db250ZXh0LmgKQEAgLTU1LDExICs1
NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICYmIG1fZm9udFBhbGV0dGVWYWx1ZXMgPT0gb3Ro
ZXIubV9mb250UGFsZXR0ZVZhbHVlczsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgRm9udENyZWF0aW9uQ29udGV4dFJhcmVEYXRhJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgRm9u
dENyZWF0aW9uQ29udGV4dFJhcmVEYXRhKGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmIGZvbnRG
YWNlRmVhdHVyZXMsIGNvbnN0IEZvbnRQYWxldHRlVmFsdWVzJiBmb250UGFsZXR0ZVZhbHVlcykK
ICAgICAgICAgOiBtX2ZvbnRGYWNlRmVhdHVyZXMoZm9udEZhY2VGZWF0dXJlcykKQEAgLTEwNCwx
MSArOTksNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRh
KG1fcmFyZURhdGEsIG90aGVyLm1fcmFyZURhdGEpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBGb250Q3JlYXRpb25Db250ZXh0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgRm9u
dFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyBtX2ZvbnRGYWNlQ2FwYWJpbGl0aWVzOwog
ICAgIFJlZlB0cjxGb250Q3JlYXRpb25Db250ZXh0UmFyZURhdGE+IG1fcmFyZURhdGE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCmlu
ZGV4IDY4MTlhMjFhNWVhMGUzYzJiZGI2MDM4ZGE2MjcxMjM0MzYyYTAyNDUuLjljZjEwOTg4NGJi
MGQ0MWY1MzcwMzQ0ZTZiM2MzZTJlNmRkMjdlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCkBAIC00MSw4ICs0MSw3IEBAIGNs
YXNzIEZvbnREZXNjcmlwdGlvbiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgRm9udERl
c2NyaXB0aW9uKCk7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udERlc2NyaXB0aW9u
JikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGZsb2F0
IGNvbXB1dGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZWRTaXplOyB9CiAgICAgdW5z
aWduZWQgY29tcHV0ZWRQaXhlbFNpemUoKSBjb25zdCB7IHJldHVybiB1bnNpZ25lZChtX2NvbXB1
dGVkU2l6ZSArIDAuNWYpOyB9CkBAIC0xODIsNDEgKzE4MSw2IEBAIHByaXZhdGU6CiAgICAgdW5z
aWduZWQgbV9zaG91bGREaXNhYmxlTGlnYXR1cmVzRm9yU3BhY2luZyA6IDE7IC8vIElmIGxldHRl
ci1zcGFjaW5nIGlzIG5vbnplcm8sIHdlIG5lZWQgdG8gZGlzYWJsZSBsaWdhdHVyZXMsIHdoaWNo
IGFmZmVjdHMgZm9udCBwcmVwYXJhdGlvbgogfTsKIAotaW5saW5lIGJvb2wgRm9udERlc2NyaXB0
aW9uOjpvcGVyYXRvcj09KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fY29tcHV0ZWRTaXplID09IG90aGVyLm1fY29tcHV0ZWRTaXplCi0gICAgICAg
ICYmIG1fZm9udFNlbGVjdGlvblJlcXVlc3QgPT0gb3RoZXIubV9mb250U2VsZWN0aW9uUmVxdWVz
dAotICAgICAgICAmJiBtX3JlbmRlcmluZ01vZGUgPT0gb3RoZXIubV9yZW5kZXJpbmdNb2RlCi0g
ICAgICAgICYmIG1fdGV4dFJlbmRlcmluZyA9PSBvdGhlci5tX3RleHRSZW5kZXJpbmcKLSAgICAg
ICAgJiYgbV9vcmllbnRhdGlvbiA9PSBvdGhlci5tX29yaWVudGF0aW9uCi0gICAgICAgICYmIG1f
bm9uQ0pLR2x5cGhPcmllbnRhdGlvbiA9PSBvdGhlci5tX25vbkNKS0dseXBoT3JpZW50YXRpb24K
LSAgICAgICAgJiYgbV93aWR0aFZhcmlhbnQgPT0gb3RoZXIubV93aWR0aFZhcmlhbnQKLSAgICAg
ICAgJiYgbV9zcGVjaWZpZWRMb2NhbGUgPT0gb3RoZXIubV9zcGVjaWZpZWRMb2NhbGUKLSAgICAg
ICAgJiYgbV9mZWF0dXJlU2V0dGluZ3MgPT0gb3RoZXIubV9mZWF0dXJlU2V0dGluZ3MKLSAgICAg
ICAgJiYgbV92YXJpYXRpb25TZXR0aW5ncyA9PSBvdGhlci5tX3ZhcmlhdGlvblNldHRpbmdzCi0g
ICAgICAgICYmIG1fZm9udFN5bnRoZXNpcyA9PSBvdGhlci5tX2ZvbnRTeW50aGVzaXMKLSAgICAg
ICAgJiYgbV92YXJpYW50Q29tbW9uTGlnYXR1cmVzID09IG90aGVyLm1fdmFyaWFudENvbW1vbkxp
Z2F0dXJlcwotICAgICAgICAmJiBtX3ZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzID09IG90
aGVyLm1fdmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMKLSAgICAgICAgJiYgbV92YXJpYW50
SGlzdG9yaWNhbExpZ2F0dXJlcyA9PSBvdGhlci5tX3ZhcmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVz
Ci0gICAgICAgICYmIG1fdmFyaWFudENvbnRleHR1YWxBbHRlcm5hdGVzID09IG90aGVyLm1fdmFy
aWFudENvbnRleHR1YWxBbHRlcm5hdGVzCi0gICAgICAgICYmIG1fdmFyaWFudFBvc2l0aW9uID09
IG90aGVyLm1fdmFyaWFudFBvc2l0aW9uCi0gICAgICAgICYmIG1fdmFyaWFudENhcHMgPT0gb3Ro
ZXIubV92YXJpYW50Q2FwcwotICAgICAgICAmJiBtX3ZhcmlhbnROdW1lcmljRmlndXJlID09IG90
aGVyLm1fdmFyaWFudE51bWVyaWNGaWd1cmUKLSAgICAgICAgJiYgbV92YXJpYW50TnVtZXJpY1Nw
YWNpbmcgPT0gb3RoZXIubV92YXJpYW50TnVtZXJpY1NwYWNpbmcKLSAgICAgICAgJiYgbV92YXJp
YW50TnVtZXJpY0ZyYWN0aW9uID09IG90aGVyLm1fdmFyaWFudE51bWVyaWNGcmFjdGlvbgotICAg
ICAgICAmJiBtX3ZhcmlhbnROdW1lcmljT3JkaW5hbCA9PSBvdGhlci5tX3ZhcmlhbnROdW1lcmlj
T3JkaW5hbAotICAgICAgICAmJiBtX3ZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8gPT0gb3RoZXIu
bV92YXJpYW50TnVtZXJpY1NsYXNoZWRaZXJvCi0gICAgICAgICYmIG1fdmFyaWFudEFsdGVybmF0
ZXMgPT0gb3RoZXIubV92YXJpYW50QWx0ZXJuYXRlcwotICAgICAgICAmJiBtX3ZhcmlhbnRFYXN0
QXNpYW5WYXJpYW50ID09IG90aGVyLm1fdmFyaWFudEVhc3RBc2lhblZhcmlhbnQKLSAgICAgICAg
JiYgbV92YXJpYW50RWFzdEFzaWFuV2lkdGggPT0gb3RoZXIubV92YXJpYW50RWFzdEFzaWFuV2lk
dGgKLSAgICAgICAgJiYgbV92YXJpYW50RWFzdEFzaWFuUnVieSA9PSBvdGhlci5tX3ZhcmlhbnRF
YXN0QXNpYW5SdWJ5Ci0gICAgICAgICYmIG1fb3B0aWNhbFNpemluZyA9PSBvdGhlci5tX29wdGlj
YWxTaXppbmcKLSAgICAgICAgJiYgbV9mb250U3R5bGVBeGlzID09IG90aGVyLm1fZm9udFN0eWxl
QXhpcwotICAgICAgICAmJiBtX3Nob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzID09IG90aGVy
Lm1fc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMKLSAgICAgICAgJiYgbV9zaG91bGREaXNh
YmxlTGlnYXR1cmVzRm9yU3BhY2luZyA9PSBvdGhlci5tX3Nob3VsZERpc2FibGVMaWdhdHVyZXNG
b3JTcGFjaW5nCi0gICAgICAgICYmIG1fZm9udFBhbGV0dGUgPT0gb3RoZXIubV9mb250UGFsZXR0
ZTsKLX0KLQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgRm9udERlc2NyaXB0aW9uOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZS5oCmluZGV4IDU0MWIwNDhmZDUwODYyODUyYzY5ZmFj
OWE2YWYxZGFhODNkZTcyOTUuLmUzMjZhY2JhYzE2ZmVjOWEzMTkwMDNjYjE4OTQ3MzVjZTFmNGZh
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxl
dHRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGUu
aApAQCAtMzMsMTcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEZvbnRQ
YWxldHRlIHsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBhbGV0dGUmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6Q3VzdG9tKQotICAgICAgICAg
ICAgcmV0dXJuIG90aGVyLnR5cGUgPT0gVHlwZTo6Q3VzdG9tICYmIGlkZW50aWZpZXIgPT0gb3Ro
ZXIuaWRlbnRpZmllcjsKLSAgICAgICAgcmV0dXJuIHR5cGUgPT0gb3RoZXIudHlwZTsKLSAgICB9
Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udFBhbGV0dGUmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRm9udFBhbGV0dGUmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBl
bnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKICAgICAgICAgTm9ybWFsLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmgKaW5kZXgg
NGIxZmU0NDlkMDBlMjY1OTEwYjY0MWExOWVkNWE5M2E4MGNiYTJjNy4uMGE5MzFmNzg2NjE4MGNj
NmRiMDUxNjYxZmZiNTNiMmZmZTBjOWQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oCkBAIC01NiwxOSArNTYsNyBAQCBz
dHJ1Y3QgRm9udFBhbGV0dGVJbmRleCB7CiAgICAgICAgIHJldHVybiB0eXBlICE9IFR5cGU6Oklu
dGVnZXIgfHwgaW50ZWdlcjsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9u
dFBhbGV0dGVJbmRleCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAodHlwZSAhPSBv
dGhlci50eXBlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAodHlwZSA9
PSBUeXBlOjpJbnRlZ2VyKQotICAgICAgICAgICAgcmV0dXJuIGludGVnZXIgPT0gb3RoZXIuaW50
ZWdlcjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEZvbnRQYWxldHRlSW5kZXgmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Rm9udFBhbGV0dGVJbmRleCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xhc3MgVHlw
ZSA6IHVpbnQ4X3QgewogICAgICAgICBMaWdodCwKQEAgLTExNCwxNSArMTAyLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9iYXNlUGFsZXR0ZSB8fCAhbV9vdmVycmlkZUNvbG9ycy5pc0Vt
cHR5KCk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQYWxldHRlVmFs
dWVzJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Jhc2VQYWxldHRlID09
IG90aGVyLm1fYmFzZVBhbGV0dGUgJiYgbV9vdmVycmlkZUNvbG9ycyA9PSBvdGhlci5tX292ZXJy
aWRlQ29sb3JzOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250UGFsZXR0
ZVZhbHVlcyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGFsZXR0ZVZhbHVl
cyYpIGNvbnN0ID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPEZvbnRQ
YWxldHRlSW5kZXg+IG1fYmFzZVBhbGV0dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmgKaW5kZXggZTdhMTRi
OWFmMGExZWI0ZjU0ODMwNjZkYTFkNDE4Yjk3ZDA2MDAzZC4uMzk4ZjhiZThmOGFmOTQ1MjYwN2Rj
MjY3N2U1NWNjOTk5ZTc1ZTAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaApAQCAtNjUsMTEgKzY1LDEw
IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0ZXhwciBCYWNraW5nVHlwZSByYXdWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2luZzsgfQogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLSAg
ICB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WYWx1ZT4gZGVjb2RlKERlY29k
ZXImKTsKIAotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci0gICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIGZyaWVuZCBh
dXRvIG9wZXJhdG9yPD0+KEZvbnRTZWxlY3Rpb25WYWx1ZSwgRm9udFNlbGVjdGlvblZhbHVlKSA9
IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBSYXdUYWcgeyBSYXdUYWcgfTsK
QEAgLTE2MCwzNiArMTU5LDYgQEAgY29uc3RleHByIEZvbnRTZWxlY3Rpb25WYWx1ZSBvcGVyYXRv
ci0oRm9udFNlbGVjdGlvblZhbHVlIHZhbHVlKQogICAgIHJldHVybiB7IC12YWx1ZS5tX2JhY2tp
bmcsIEZvbnRTZWxlY3Rpb25WYWx1ZTo6UmF3VGFnOjpSYXdUYWcgfTsKIH0KIAotY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShGb250U2VsZWN0aW9uVmFsdWUgYSwgRm9udFNlbGVjdGlvblZhbHVl
IGIpCi17Ci0gICAgcmV0dXJuIGEucmF3VmFsdWUoKSA9PSBiLnJhd1ZhbHVlKCk7Ci19Ci0KLWNv
bnN0ZXhwciBib29sIG9wZXJhdG9yIT0oRm9udFNlbGVjdGlvblZhbHVlIGEsIEZvbnRTZWxlY3Rp
b25WYWx1ZSBiKQotewotICAgIHJldHVybiBhLnJhd1ZhbHVlKCkgIT0gYi5yYXdWYWx1ZSgpOwot
fQotCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoRm9udFNlbGVjdGlvblZhbHVlIGEsIEZvbnRT
ZWxlY3Rpb25WYWx1ZSBiKQotewotICAgIHJldHVybiBhLnJhd1ZhbHVlKCkgPCBiLnJhd1ZhbHVl
KCk7Ci19Ci0KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0oRm9udFNlbGVjdGlvblZhbHVlIGEs
IEZvbnRTZWxlY3Rpb25WYWx1ZSBiKQotewotICAgIHJldHVybiBhLnJhd1ZhbHVlKCkgPD0gYi5y
YXdWYWx1ZSgpOwotfQotCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRm9udFNlbGVjdGlvblZh
bHVlIGEsIEZvbnRTZWxlY3Rpb25WYWx1ZSBiKQotewotICAgIHJldHVybiBhLnJhd1ZhbHVlKCkg
PiBiLnJhd1ZhbHVlKCk7Ci19Ci0KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPj0oRm9udFNlbGVj
dGlvblZhbHVlIGEsIEZvbnRTZWxlY3Rpb25WYWx1ZSBiKQotewotICAgIHJldHVybiBhLnJhd1Zh
bHVlKCkgPj0gYi5yYXdWYWx1ZSgpOwotfQotCiBjb25zdGV4cHIgRm9udFNlbGVjdGlvblZhbHVl
IGl0YWxpY1RocmVzaG9sZCgpCiB7CiAgICAgcmV0dXJuIEZvbnRTZWxlY3Rpb25WYWx1ZSB7IDIw
IH07CkBAIC0zMTEsMTAgKzI4MCw3IEBAIHN0cnVjdCBGb250U2VsZWN0aW9uUmFuZ2UgewogICAg
IHsKICAgICB9CiAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRTZWxl
Y3Rpb25SYW5nZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gV1RGOjp0aWUo
bWluaW11bSwgbWF4aW11bSkgPT0gV1RGOjp0aWUob3RoZXIubWluaW11bSwgb3RoZXIubWF4aW11
bSk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250U2VsZWN0aW9uUmFuZ2Um
KSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBjb25zdGV4cHIgYm9vbCBpc1ZhbGlkKCkgY29uc3QK
ICAgICB7CkBAIC0zOTQsNiArMzYwLDggQEAgc3RydWN0IEZvbnRTZWxlY3Rpb25SZXF1ZXN0IHsK
ICAgICB7CiAgICAgICAgIHJldHVybiBXVEY6OnRpZSh3ZWlnaHQsIHdpZHRoLCBzbG9wZSk7CiAg
ICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRTZWxlY3Rpb25SZXF1ZXN0Jikg
Y29uc3QgPSBkZWZhdWx0OwogfTsKIAogaW5saW5lIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IEZvbnRTZWxlY3Rpb25WYWx1ZSYgZm9udFNlbGVjdGlvblZhbHVl
KQpAQCAtNDA4LDE2ICszNzYsNiBAQCBpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3Qgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0aW9uVgogICAgIHJldHVy
biB0czsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250U2VsZWN0aW9uUmVx
dWVzdCYgYSwgY29uc3QgRm9udFNlbGVjdGlvblJlcXVlc3QmIGIpCi17Ci0gICAgcmV0dXJuIGEu
dGllZCgpID09IGIudGllZCgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZv
bnRTZWxlY3Rpb25SZXF1ZXN0JiBhLCBjb25zdCBGb250U2VsZWN0aW9uUmVxdWVzdCYgYikKLXsK
LSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNo
ZXIsIGNvbnN0IEZvbnRTZWxlY3Rpb25SZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIGFkZChoYXNo
ZXIsIHJlcXVlc3QudGllZCgpKTsKQEAgLTQ0MSwxNyArMzk5LDkgQEAgc3RydWN0IEZvbnRTZWxl
Y3Rpb25DYXBhYmlsaXRpZXMgewogICAgIFJhbmdlIHdlaWdodCB7IG5vcm1hbFdlaWdodFZhbHVl
KCkgfTsKICAgICBSYW5nZSB3aWR0aCB7IG5vcm1hbFN0cmV0Y2hWYWx1ZSgpIH07CiAgICAgUmFu
Z2Ugc2xvcGUgeyBub3JtYWxJdGFsaWNWYWx1ZSgpIH07Ci19OwotCi1jb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMmIGEsIGNvbnN0IEZvbnRT
ZWxlY3Rpb25DYXBhYmlsaXRpZXMmIGIpCi17Ci0gICAgcmV0dXJuIGEudGllZCgpID09IGIudGll
ZCgpOwotfQogCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRTZWxlY3Rpb25D
YXBhYmlsaXRpZXMmIGEsIGNvbnN0IEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXMmIGIpCi17Ci0g
ICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFNl
bGVjdGlvbkNhcGFiaWxpdGllcyYpIGNvbnN0ID0gZGVmYXVsdDsKK307CiAKIHN0cnVjdCBGb250
U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzIHsKICAgICB1c2luZyBDYXBhYmlsaXRpZXMg
PSBGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzOwpAQCAtNDk0LDExICs0NDQsMTAgQEAgc3RydWN0
IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgewogICAgICAgICByZXR1cm4gc2xv
cGUudmFsdWVfb3IoUmFuZ2UgeyBub3JtYWxJdGFsaWNWYWx1ZSgpIH0pOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Ci0gICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250
U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250U2Vs
ZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzPiBkZWNvZGUoRGVjb2RlciYpOworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzJikgY29u
c3QgPSBkZWZhdWx0OwogCiAgICAgT3B0aW9uYWxSYW5nZSB3ZWlnaHQ7CiAgICAgT3B0aW9uYWxS
YW5nZSB3aWR0aDsKQEAgLTUzNCwxNiArNDgzLDYgQEAgc3RkOjpvcHRpb25hbDxGb250U2VsZWN0
aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzPiBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGkK
ICAgICByZXR1cm4ge3sgKndlaWdodCwgKndpZHRoLCAqc2xvcGUgfX07CiB9CiAKLWNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGll
cyYgYSwgY29uc3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyYgYikKLXsKLSAg
ICByZXR1cm4gYS50aWVkKCkgPT0gYi50aWVkKCk7Ci19Ci0KLWNvbnN0ZXhwciBib29sIG9wZXJh
dG9yIT0oY29uc3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyYgYSwgY29uc3Qg
Rm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyYgYikKLXsKLSAgICByZXR1cm4gIShh
ID09IGIpOwotfQotCiBjbGFzcyBGb250U2VsZWN0aW9uQWxnb3JpdGhtIHsKIHB1YmxpYzoKICAg
ICB1c2luZyBDYXBhYmlsaXRpZXMgPSBGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFRhZ2dlZFNldHRpbmdz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3Mu
aAppbmRleCA0MWJkNzVhNmUwZjVmMTNmNjNjYjUyYzlkMjk4ZDdkODIwMzViYzMwLi4wMWJhN2Ux
NzYwNDYwM2M2Mjk3MmY3ZjEwNTVjNWQxODI2Y2QyYTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0dGluZ3MuaApAQCAtNjgsOSAr
NjgsOCBAQCBwdWJsaWM6CiAgICAgRm9udFRhZ2dlZFNldHRpbmcoKSA9IGRlbGV0ZTsKICAgICBG
b250VGFnZ2VkU2V0dGluZyhGb250VGFnLCBUIHZhbHVlKTsKIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBGb250VGFnZ2VkU2V0dGluZzxUPiYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBGb250VGFnZ2VkU2V0dGluZzxUPiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgRm9udFRhZ2dl
ZFNldHRpbmc8VD4mIG90aGVyKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9u
dFRhZ2dlZFNldHRpbmc8VD4mKSBjb25zdCA9IGRlZmF1bHQ7CisgICAgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgRm9udFRhZ2dlZFNldHRpbmc8VD4mKSBjb25zdDsKIAogICAgIEZvbnRUYWcgdGFnKCkg
Y29uc3QgeyByZXR1cm4gbV90YWc7IH0KICAgICBUIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQpAQCAtOTEsMTIgKzkwLDYgQEAgRm9udFRhZ2dlZFNldHRpbmc8VD46OkZvbnRUYWdn
ZWRTZXR0aW5nKEZvbnRUYWcgdGFnLCBUIHZhbHVlKQogewogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLWJvb2wgRm9udFRhZ2dlZFNldHRpbmc8VD46Om9wZXJhdG9yPT0oY29uc3QgRm9udFRh
Z2dlZFNldHRpbmc8VD4mIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBtX3RhZyA9PSBvdGhl
ci5tX3RhZyAmJiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7Ci19Ci0KIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogYm9vbCBGb250VGFnZ2VkU2V0dGluZzxUPjo6b3BlcmF0b3I8KGNvbnN0IEZvbnRU
YWdnZWRTZXR0aW5nPFQ+JiBvdGhlcikgY29uc3QKIHsKQEAgLTE2MCw4ICsxNTMsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIEZvbnRUYWdnZWRTZXR0aW5ncyB7CiBwdWJsaWM6CiAg
ICAgdm9pZCBpbnNlcnQoRm9udFRhZ2dlZFNldHRpbmc8VD4mJik7Ci0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZvbnRUYWdnZWRTZXR0aW5nczxUPiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1f
bGlzdCA9PSBvdGhlci5tX2xpc3Q7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udFRh
Z2dlZFNldHRpbmdzPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFRhZ2dlZFNldHRpbmdzJikgY29uc3Qg
PSBkZWZhdWx0OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsg
fQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9saXN0LnNpemUoKTsgfQpAQCAt
MTc0LDcgKzE2Niw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udFRhZ2dl
ZFNldHRpbmdzPFQ+PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZvbnRUYWdnZWRTZXR0aW5ncz4gZGVjb2RlKERlY29k
ZXImKTsKIAogcHJpdmF0ZToKICAgICBWZWN0b3I8Rm9udFRhZ2dlZFNldHRpbmc8VD4+IG1fbGlz
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvdXJDQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91ckNDLmgKaW5kZXggMmE2NGM0
YmMxNTQ2M2NlYzE0YjNjMmYzOWYyNTRmZGQwNTNiZjFmMi4uYzgxMWI1NzJjMGUwYTQ2ZDhhODlm
ZjgzZDc0ZDY2NGFhOTkwYTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm91ckNDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm91ckNDLmgKQEAgLTMwLDExICszMCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgRm91ckNDIHsKLSAgICBGb3VyQ0MoKSA9IGRlZmF1bHQ7Ci0gICAgRm91ckNDKHVpbnQzMl90
IHZhbHVlKSA6IHZhbHVlKHZhbHVlKSB7IH0KKyAgICBjb25zdGV4cHIgRm91ckNDKHVpbnQzMl90
IHZhbHVlID0gMCkKKyAgICAgICAgOiB2YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgfQogCi0gICAg
dGVtcGxhdGU8c3RkOjpzaXplX3QgTj4KLSAgICBjb25zdGV4cHIgRm91ckNDKGNvbnN0IGNoYXIg
KCZkYXRhKVtOXSkKKyAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBOPiBjb25zdGV4cHIgRm91ckND
KGNvbnN0IGNoYXIgKCZkYXRhKVtOXSkKICAgICB7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoKE4g
LSAxKSA9PSA0LCAiRm91ckNDIGxpdGVyYWxzIG11c3QgYmUgZXhhY3RseSA0IGNoYXJhY3RlcnMg
bG9uZyIpOwogICAgICAgICB2YWx1ZSA9IGRhdGFbMF0gPDwgMjQgfCBkYXRhWzFdIDw8IDE2IHwg
ZGF0YVsyXSA8PCA4IHwgZGF0YVszXTsKQEAgLTQzLDggKzQ0LDcgQEAgc3RydWN0IEZvdXJDQyB7
CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Rm91ckNDPiBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZvdXJDQyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHZhbHVl
ID09IG90aGVyLnZhbHVlOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvdXJDQyYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIHZhbHVlICE9IG90aGVyLnZhbHVlOyB9CisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEZvdXJDQyYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHVpbnQzMl90IHZh
bHVlIHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGFlNTZmNTA0NTRiMTI5OTFlZDU0NzQxN2E5YTNk
YjAwNGExZTUyZmMuLjRjOWUwYWVkNThlZDNkMTQ3MWRlZDg3MzQyNjk1OGU3OWU0NTQ2ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcApAQCAtNjMsMTIgKzYzLDcgQEAgcHVibGljOgogICAgIFVDaGFyIGN1cnJlbnQoKSBj
b25zdCB7IHJldHVybiAoKm1fdGV4dFJ1bilbbV9vZmZzZXRdOyB9CiAgICAgVUNoYXJEaXJlY3Rp
b24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gYXRFbmQoKSA/IFVfT1RIRVJfTkVVVFJBTCA6
IHVfY2hhckRpcmVjdGlvbihjdXJyZW50KCkpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X29mZnNldCA9PSBvdGhlci5tX29mZnNldCAmJiBtX3RleHRSdW4gPT0gb3RoZXIubV90ZXh0UnVu
OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90
aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRl
OgogICAgIGNvbnN0IFRleHRSdW4qIG1fdGV4dFJ1bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCBmMmM5NjQwZDQ2ZDNhOTM1NjEx
NGYzM2FiMTQwNTJjN2ZlYzI3NzhjLi5hNjc0ZTI4Njk5NDNlMWE4NjlhY2M5MWU3Y2YzMzU2Zjhi
NzAwMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwCkBAIC02MjIsNyArNjIyLDcgQEAgU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJj
ZTo6bWF4aW11bVN1YnNhbXBsaW5nTGV2ZWwoKQogICAgIC8vIEZJWE1FOiB0aGlzIHZhbHVlIHdh
cyBjaG9zZW4gdG8gYmUgYXBwcm9wcmlhdGUgZm9yIGlPUyBzaW5jZSB0aGUgaW1hZ2UKICAgICAv
LyBzdWJzYW1wbGluZyBpcyBvbmx5IGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBpT1MuIENob29zZSBh
IGRpZmZlcmVudCB2YWx1ZQogICAgIC8vIGlmIGltYWdlIHN1YnNhbXBsaW5nIGlzIGVuYWJsZWQg
b24gb3RoZXIgcGxhdGZvcm0uCi0gICAgY29uc3QgaW50IG1heGltdW1JbWFnZUFyZWFCZWZvcmVT
dWJzYW1wbGluZyA9IDUgKiAxMDI0ICogMTAyNDsKKyAgICBjb25zdGV4cHIgdW5zaWduZWQgbWF4
aW11bUltYWdlQXJlYUJlZm9yZVN1YnNhbXBsaW5nID0gNSAqIDEwMjQgKiAxMDI0OwogICAgIFN1
YnNhbXBsaW5nTGV2ZWwgbGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpGaXJzdDsKIAogICAgIGZv
ciAoOyBsZXZlbCA8IFN1YnNhbXBsaW5nTGV2ZWw6Okxhc3Q7ICsrbGV2ZWwpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGY5ODE0MTdm
MjRlYmM3ZjJkYmQ1NzNkYWUwZTU5MjU5ODk0NGU2NmEuLmViNDNhM2U2ZGExMDkwMDFjYmE1ZjA3
MjA2NGY1ZGVlNDFjNzQzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaApAQCAtMTkxLDEwICsxOTEsNyBAQCBwcml2YXRlOgogICAgICAgICBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWw7CiAgICAgICAgIERlY29kaW5nT3B0aW9u
cyBkZWNvZGluZ09wdGlvbnM7CiAgICAgICAgIERlY29kaW5nU3RhdHVzIGRlY29kaW5nU3RhdHVz
OwotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW1hZ2VGcmFtZVJlcXVlc3QmIG90aGVy
KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW5kZXggPT0gb3RoZXIuaW5k
ZXggJiYgc3Vic2FtcGxpbmdMZXZlbCA9PSBvdGhlci5zdWJzYW1wbGluZ0xldmVsICYmIGRlY29k
aW5nT3B0aW9ucyA9PSBvdGhlci5kZWNvZGluZ09wdGlvbnMgJiYgZGVjb2RpbmdTdGF0dXMgPT0g
b3RoZXIuZGVjb2RpbmdTdGF0dXM7Ci0gICAgICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEltYWdlRnJhbWVSZXF1ZXN0JikgY29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAgICAg
dXNpbmcgRnJhbWVSZXF1ZXN0UXVldWUgPSBTeW5jaHJvbml6ZWRGaXhlZFF1ZXVlPEltYWdlRnJh
bWVSZXF1ZXN0LCBCdWZmZXJTaXplPjsKICAgICB1c2luZyBGcmFtZUNvbW1pdFF1ZXVlID0gRGVx
dWU8SW1hZ2VGcmFtZVJlcXVlc3QsIEJ1ZmZlclNpemU+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ludFBvaW50LmgKaW5kZXggM2E3NjFjODI3ZjgxYjgxN2NlYzNiNGRmYTZk
NjJlMDAzZGJiMDU4MS4uMGM2OWVjZDFlMDQ1NTNlZjhmZTFhYzNmYzVlNzQ1NzRjOWJmODA2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oCkBAIC0xMTUs
MTcgKzExNSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBJbnRQb2ludChtX3ksIG1feCk7
CiAgICAgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludFBvaW50JikgY29uc3QgPSBk
ZWZhdWx0OworCiAjaWYgVVNFKENHKQogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEludFBv
aW50KGNvbnN0IENHUG9pbnQmKTsgLy8gZG9uJ3QgZG8gdGhpcyBpbXBsaWNpdGx5IHNpbmNlIGl0
J3MgbG9zc3kKICAgICBXRUJDT1JFX0VYUE9SVCBvcGVyYXRvciBDR1BvaW50KCkgY29uc3Q7CiAj
ZW5kaWYKIAotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotI2lmIE9TKERBUldJTikgJiYgIWRl
ZmluZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpCisjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpICYmIE9TKERBUldJTikgJiYgIWRlZmluZWQoTlNHRU9NRVRSWV9U
WVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGlj
aXQgSW50UG9pbnQoY29uc3QgTlNQb2ludCYpOyAvLyBkb24ndCBkbyB0aGlzIGltcGxpY2l0bHkg
c2luY2UgaXQncyBsb3NzeQogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIE5TUG9pbnQoKSBj
b25zdDsKICNlbmRpZgotI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCiAjaWYgUExB
VEZPUk0oV0lOKQogICAgIEludFBvaW50KGNvbnN0IFBPSU5UJik7CkBAIC0xNzUsMTYgKzE3NSw2
IEBAIGlubGluZSBJbnRQb2ludCBvcGVyYXRvci0oY29uc3QgSW50UG9pbnQmIHBvaW50KQogICAg
IHJldHVybiBJbnRQb2ludCgtcG9pbnQueCgpLCAtcG9pbnQueSgpKTsKIH0KIAotaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBJbnRQb2ludCYgYSwgY29uc3QgSW50UG9pbnQmIGIpCi17Ci0g
ICAgcmV0dXJuIGEueCgpID09IGIueCgpICYmIGEueSgpID09IGIueSgpOwotfQotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEludFBvaW50JiBhLCBjb25zdCBJbnRQb2ludCYgYikKLXsK
LSAgICByZXR1cm4gYS54KCkgIT0gYi54KCkgfHwgYS55KCkgIT0gYi55KCk7Ci19Ci0KIGlubGlu
ZSBJbnRTaXplIHRvSW50U2l6ZShjb25zdCBJbnRQb2ludCYgYSkKIHsKICAgICByZXR1cm4gSW50
U2l6ZShhLngoKSwgYS55KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UmVjdC5oCmluZGV4IDQ2OGUwMTk2OGQzZTI2ZmJjOWFlMjg1NzU5NzM1ZDFkNTFmMWI1YTcuLjRk
ZjY3YmE5YzJhZjA1YzFkMGQzMDQzZjBiZTcyNmI1ODgxOThiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmgKQEAgLTE4OSw2ICsxODksOCBAQCBwdWJsaWM6
CiAgICAgLy8gUmV0dXJuIGZhbHNlIGlmIHggKyB3aWR0aCBvciB5ICsgaGVpZ2h0IG92ZXJmbG93
cy4KICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBJbnRSZWN0JikgY29uc3QgPSBkZWZhdWx0OworCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIElu
dFJlY3QoY29uc3QgUkVDVCYpOwogICAgIG9wZXJhdG9yIFJFQ1QoKSBjb25zdDsKQEAgLTIyNiwx
NiArMjI4LDYgQEAgaW5saW5lIEludFJlY3QgdW5pb25SZWN0KGNvbnN0IEludFJlY3QmIGEsIGNv
bnN0IEludFJlY3QmIGIpCiAgICAgcmV0dXJuIGM7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgSW50UmVjdCYgYSwgY29uc3QgSW50UmVjdCYgYikKLXsKLSAgICByZXR1cm4gYS5s
b2NhdGlvbigpID09IGIubG9jYXRpb24oKSAmJiBhLnNpemUoKSA9PSBiLnNpemUoKTsKLX0KLQot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbnRSZWN0JiBhLCBjb25zdCBJbnRSZWN0JiBi
KQotewotICAgIHJldHVybiBhLmxvY2F0aW9uKCkgIT0gYi5sb2NhdGlvbigpIHx8IGEuc2l6ZSgp
ICE9IGIuc2l6ZSgpOwotfQotCiBpbmxpbmUgSW50UmVjdCYgb3BlcmF0b3ItPShJbnRSZWN0JiBy
LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0KQogewogICAgIHIubW92ZSgtb2Zmc2V0LngoKSwgLW9m
ZnNldC55KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50UmVjdEV4dGVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVj
dEV4dGVudC5oCmluZGV4IDQzYzgzMmUwODhlMDQyNjI4ZjI3YmFlMjQ0OWI0MDhhMjAzYTYyNzAu
LjYwZDAwNWZmNDg2ZTNkYzUyZWJmN2QwNmZhYjViNDdjZWIyN2IzMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RFeHRlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0RXh0ZW50LmgKQEAgLTU4LDYgKzU4
LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhbGVmdCgp
ICYmICFyaWdodCgpICYmICF0b3AoKSAmJiAhYm90dG9tKCk7IH0KIAorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBJbnRSZWN0RXh0ZW50JikgY29uc3QgPSBkZWZhdWx0OworCiBwcml2YXRlOgog
ICAgIGludCBtX3RvcCB7IDAgfTsKICAgICBpbnQgbV9yaWdodCB7IDAgfTsKQEAgLTY1LDE2ICs2
Nyw2IEBAIHByaXZhdGU6CiAgICAgaW50IG1fbGVmdCB7IDAgfTsKIH07CiAKLWlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgSW50UmVjdEV4dGVudCYgYSwgY29uc3QgSW50UmVjdEV4dGVudCYg
YikKLXsKLSAgICByZXR1cm4gYS50b3AoKSA9PSBiLnRvcCgpICYmIGEucmlnaHQoKSA9PSBiLnJp
Z2h0KCkgJiYgYS5ib3R0b20oKSA9PSBiLmJvdHRvbSgpICYmIGEubGVmdCgpID09IGIubGVmdCgp
OwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludFJlY3RFeHRlbnQmIGEsIGNv
bnN0IEludFJlY3RFeHRlbnQmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogdGVt
cGxhdGU8dHlwZW5hbWUgUmVjdFR5cGU+CiBpbmxpbmUgUmVjdFR5cGUmIG9wZXJhdG9yKz0oUmVj
dFR5cGUmIHJlY3QsIGNvbnN0IEludFJlY3RFeHRlbnQmIGV4dGVudCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAppbmRleCAwYTBlNTAzZDQxZDYxOTg2MDcz
YWExYjVkZjhkMWI5M2YwYmJlNTZkLi45Y2ZlYzY3Y2M4MDdkY2UzYmMyNGFmNjk1MzE0NmVhYjgw
ZjBlNTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRT
aXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCkBA
IC0xNjUsNiArMTY1LDggQEAgcHVibGljOgogICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25z
dDsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3QoKSBjb25zdDsKIAorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBJbnRTaXplJikgY29uc3QgPSBkZWZhdWx0OworCiBwcml2YXRl
OgogICAgIGludCBtX3dpZHRoIHsgMCB9OwogICAgIGludCBtX2hlaWdodCB7IDAgfTsKQEAgLTE5
OSwxNiArMjAxLDYgQEAgY29uc3RleHByIEludFNpemUgb3BlcmF0b3ItKGNvbnN0IEludFNpemUm
IHNpemUpCiAgICAgcmV0dXJuIEludFNpemUoLXNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkp
OwogfQogCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludFNpemUmIGEsIGNvbnN0
IEludFNpemUmIGIpCi17Ci0gICAgcmV0dXJuIGEud2lkdGgoKSA9PSBiLndpZHRoKCkgJiYgYS5o
ZWlnaHQoKSA9PSBiLmhlaWdodCgpOwotfQotCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEludFNpemUmIGEsIGNvbnN0IEludFNpemUmIGIpCi17Ci0gICAgcmV0dXJuIGEud2lkdGgo
KSAhPSBiLndpZHRoKCkgfHwgYS5oZWlnaHQoKSAhPSBiLmhlaWdodCgpOwotfQotCiBXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29u
c3QgSW50U2l6ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRQb2ludC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UG9pbnQuaAppbmRleCA2ZjJmZTU2NmE5ZDVlYzRj
MzZkMWU2YTVkNTVlZDI1M2E3NDBlZTk1Li44NTk4N2RmMThmMzFkMWJiN2U5MjBjNDEyNGYzZWU3
Yzk3NjIxMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9M
YXlvdXRQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91
dFBvaW50LmgKQEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CiAKICAgICBvcGVyYXRvciBGbG9h
dFBvaW50KCkgY29uc3QgeyByZXR1cm4geyBtX3gsIG1feSB9OyB9CiAKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdCA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAg
ICAgTGF5b3V0VW5pdCBtX3gsIG1feTsKIH07CkBAIC0xNDgsMTYgKzE1MCw2IEBAIGlubGluZSBM
YXlvdXRQb2ludCBvcGVyYXRvci0oY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIHJldHVy
biBMYXlvdXRQb2ludCgtcG9pbnQueCgpLCAtcG9pbnQueSgpKTsKIH0KIAotaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBMYXlvdXRQb2ludCYgYSwgY29uc3QgTGF5b3V0UG9pbnQmIGIpCi17
Ci0gICAgcmV0dXJuIGEueCgpID09IGIueCgpICYmIGEueSgpID09IGIueSgpOwotfQotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExheW91dFBvaW50JiBhLCBjb25zdCBMYXlvdXRQb2lu
dCYgYikKLXsKLSAgICByZXR1cm4gYS54KCkgIT0gYi54KCkgfHwgYS55KCkgIT0gYi55KCk7Ci19
Ci0KIGlubGluZSBMYXlvdXRQb2ludCB0b0xheW91dFBvaW50KGNvbnN0IExheW91dFNpemUmIHNp
emUpCiB7CiAgICAgcmV0dXJuIExheW91dFBvaW50KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRS
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKaW5k
ZXggYWI2MjczOGQ5MTliN2NjMWNhMGM0NWY3NDhjY2FhNWM5MzEzNTIyZi4uN2NmMWZlMmIyOGE3
OTMxZDE0NzczY2JlY2I3NjEzZWM5M2ZkOGQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0xheW91dFJlY3QuaApAQCAtMjIzLDYgKzIyMyw4IEBAIHB1YmxpYzoKICAg
ICAKICAgICBvcGVyYXRvciBGbG9hdFJlY3QoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3QobV9s
b2NhdGlvbiwgbV9zaXplKTsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExheW91dFJl
Y3QmKSBjb25zdCA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRMb2NhdGlvbkFu
ZFNpemVGcm9tRWRnZXMoTGF5b3V0VW5pdCBsZWZ0LCBMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5p
dCByaWdodCwgTGF5b3V0VW5pdCBib3R0b20pOwogCkBAIC0yNDYsMTYgKzI0OCw2IEBAIGlubGlu
ZSBMYXlvdXRSZWN0IHVuaW9uUmVjdChjb25zdCBMYXlvdXRSZWN0JiBhLCBjb25zdCBMYXlvdXRS
ZWN0JiBiKQogCiBMYXlvdXRSZWN0IHVuaW9uUmVjdChjb25zdCBWZWN0b3I8TGF5b3V0UmVjdD4m
KTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMYXlvdXRSZWN0JiBhLCBjb25zdCBM
YXlvdXRSZWN0JiBiKQotewotICAgIHJldHVybiBhLmxvY2F0aW9uKCkgPT0gYi5sb2NhdGlvbigp
ICYmIGEuc2l6ZSgpID09IGIuc2l6ZSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IExheW91dFJlY3QmIGEsIGNvbnN0IExheW91dFJlY3QmIGIpCi17Ci0gICAgcmV0dXJuIGEu
bG9jYXRpb24oKSAhPSBiLmxvY2F0aW9uKCkgfHwgYS5zaXplKCkgIT0gYi5zaXplKCk7Ci19Ci0K
IGlubGluZSBib29sIExheW91dFJlY3Q6OmlzSW5maW5pdGUoKSBjb25zdAogewogICAgIHJldHVy
biAqdGhpcyA9PSBMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFNpemUuaAppbmRleCA0YTZkNzc4NTMwYWY0Y2I2YjA0
NGZiNzc3ZTNlNmZhOGU5N2MzYWViLi40NGI0ZDhiZGVjOWY2NzA0OGFjZjNjMmNhZGU5NzgzNjMx
OTQ1OGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlv
dXRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6
ZS5oCkBAIC0xNDEsNiArMTQxLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV93aWR0aC5t
aWdodEJlU2F0dXJhdGVkKCkgfHwgbV9oZWlnaHQubWlnaHRCZVNhdHVyYXRlZCgpOwogICAgIH0K
IAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMYXlvdXRTaXplJikgY29uc3QgPSBkZWZhdWx0
OworCiBwcml2YXRlOgogICAgIExheW91dFVuaXQgbV93aWR0aDsKICAgICBMYXlvdXRVbml0IG1f
aGVpZ2h0OwpAQCAtMTc1LDE2ICsxNzcsNiBAQCBpbmxpbmUgTGF5b3V0U2l6ZSBvcGVyYXRvci0o
Y29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKICAgICByZXR1cm4gTGF5b3V0U2l6ZSgtc2l6ZS53aWR0
aCgpLCAtc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3Qg
TGF5b3V0U2l6ZSYgYSwgY29uc3QgTGF5b3V0U2l6ZSYgYikKLXsKLSAgICByZXR1cm4gYS53aWR0
aCgpID09IGIud2lkdGgoKSAmJiBhLmhlaWdodCgpID09IGIuaGVpZ2h0KCk7Ci19Ci0KLWlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF5b3V0U2l6ZSYgYSwgY29uc3QgTGF5b3V0U2l6ZSYg
YikKLXsKLSAgICByZXR1cm4gYS53aWR0aCgpICE9IGIud2lkdGgoKSB8fCBhLmhlaWdodCgpICE9
IGIuaGVpZ2h0KCk7Ci19Ci0KIGlubGluZSBJbnRTaXplIGZsb29yZWRJbnRTaXplKGNvbnN0IExh
eW91dFNpemUmIHMpCiB7CiAgICAgcmV0dXJuIEludFNpemUocy53aWR0aCgpLmZsb29yKCksIHMu
aGVpZ2h0KCkuZmxvb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVVzYWdlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFVc2FnZUluZm8uaAppbmRleCBlMjY3YzY2ZjE4OGM1YjYyNWFjZTVlZDM5NTRiNDk4
ZDhiNTU1NjQyLi40MGYxZDkxNmVmMTQ0NjczMGI3MmU0MTlhZGMyYmY0NTcyNzg3ZGJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVVzYWdlSW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmgK
QEAgLTY0LDQ1ICs2NCw3IEBAIHN0cnVjdCBNZWRpYVVzYWdlSW5mbyB7CiAgICAgYm9vbCBvdXRz
aWRlT2ZGdWxsc2NyZWVuIHsgZmFsc2UgfTsKICAgICBib29sIGlzTGFyZ2VFbm91Z2hGb3JNYWlu
Q29udGVudCB7IGZhbHNlIH07CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVkaWFVc2Fn
ZUluZm8mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1lZGlhVVJMID09IG90
aGVyLm1lZGlhVVJMCi0gICAgICAgICAgICAmJiBpc1BsYXlpbmcgPT0gb3RoZXIuaXNQbGF5aW5n
Ci0gICAgICAgICAgICAmJiBjYW5TaG93Q29udHJvbHNNYW5hZ2VyID09IG90aGVyLmNhblNob3dD
b250cm9sc01hbmFnZXIKLSAgICAgICAgICAgICYmIGNhblNob3dOb3dQbGF5aW5nQ29udHJvbHMg
PT0gb3RoZXIuY2FuU2hvd05vd1BsYXlpbmdDb250cm9scwotICAgICAgICAgICAgJiYgaXNTdXNw
ZW5kZWQgPT0gb3RoZXIuaXNTdXNwZW5kZWQKLSAgICAgICAgICAgICYmIGlzSW5BY3RpdmVEb2N1
bWVudCA9PSBvdGhlci5pc0luQWN0aXZlRG9jdW1lbnQKLSAgICAgICAgICAgICYmIGlzRnVsbHNj
cmVlbiA9PSBvdGhlci5pc0Z1bGxzY3JlZW4KLSAgICAgICAgICAgICYmIGlzTXV0ZWQgPT0gb3Ro
ZXIuaXNNdXRlZAotICAgICAgICAgICAgJiYgaXNNZWRpYURvY3VtZW50SW5NYWluRnJhbWUgPT0g
b3RoZXIuaXNNZWRpYURvY3VtZW50SW5NYWluRnJhbWUKLSAgICAgICAgICAgICYmIGlzVmlkZW8g
PT0gb3RoZXIuaXNWaWRlbwotICAgICAgICAgICAgJiYgaXNBdWRpbyA9PSBvdGhlci5pc0F1ZGlv
Ci0gICAgICAgICAgICAmJiBoYXNBdWRpbyA9PSBvdGhlci5oYXNBdWRpbwotICAgICAgICAgICAg
JiYgaGFzVmlkZW8gPT0gb3RoZXIuaGFzVmlkZW8KLSAgICAgICAgICAgICYmIGhhc1JlbmRlcmVy
ID09IG90aGVyLmhhc1JlbmRlcmVyCi0gICAgICAgICAgICAmJiBhdWRpb0VsZW1lbnRXaXRoVXNl
ckdlc3R1cmUgPT0gb3RoZXIuYXVkaW9FbGVtZW50V2l0aFVzZXJHZXN0dXJlCi0gICAgICAgICAg
ICAmJiB1c2VySGFzUGxheWVkQXVkaW9CZWZvcmUgPT0gb3RoZXIudXNlckhhc1BsYXllZEF1ZGlv
QmVmb3JlCi0gICAgICAgICAgICAmJiBpc0VsZW1lbnRSZWN0TW9zdGx5SW5NYWluRnJhbWUgPT0g
b3RoZXIuaXNFbGVtZW50UmVjdE1vc3RseUluTWFpbkZyYW1lCi0gICAgICAgICAgICAmJiBwbGF5
YmFja1Blcm1pdHRlZCA9PSBvdGhlci5wbGF5YmFja1Blcm1pdHRlZAotICAgICAgICAgICAgJiYg
cGFnZU1lZGlhUGxheWJhY2tTdXNwZW5kZWQgPT0gb3RoZXIucGFnZU1lZGlhUGxheWJhY2tTdXNw
ZW5kZWQKLSAgICAgICAgICAgICYmIGlzTWVkaWFEb2N1bWVudEFuZE5vdE93bmVyRWxlbWVudCA9
PSBvdGhlci5pc01lZGlhRG9jdW1lbnRBbmROb3RPd25lckVsZW1lbnQKLSAgICAgICAgICAgICYm
IHBhZ2VFeHBsaWNpdGx5QWxsb3dzRWxlbWVudFRvQXV0b3BsYXlJbmxpbmUgPT0gb3RoZXIucGFn
ZUV4cGxpY2l0bHlBbGxvd3NFbGVtZW50VG9BdXRvcGxheUlubGluZQotICAgICAgICAgICAgJiYg
cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFja0FuZEZ1bGxzY3JlZW5Ob3RQZXJtaXR0
ZWQgPT0gb3RoZXIucmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFja0FuZEZ1bGxzY3Jl
ZW5Ob3RQZXJtaXR0ZWQKLSAgICAgICAgICAgICYmIGhhc0hhZFVzZXJJbnRlcmFjdGlvbkFuZFF1
aXJrc0NvbnRhaW5zU2hvdWxkQXV0b3BsYXlGb3JBcmJpdHJhcnlVc2VyR2VzdHVyZSA9PSBvdGhl
ci5oYXNIYWRVc2VySW50ZXJhY3Rpb25BbmRRdWlya3NDb250YWluc1Nob3VsZEF1dG9wbGF5Rm9y
QXJiaXRyYXJ5VXNlckdlc3R1cmUKLSAgICAgICAgICAgICYmIGlzVmlkZW9BbmRSZXF1aXJlc1Vz
ZXJHZXN0dXJlRm9yVmlkZW9SYXRlQ2hhbmdlID09IG90aGVyLmlzVmlkZW9BbmRSZXF1aXJlc1Vz
ZXJHZXN0dXJlRm9yVmlkZW9SYXRlQ2hhbmdlCi0gICAgICAgICAgICAmJiBpc0F1ZGlvQW5kUmVx
dWlyZXNVc2VyR2VzdHVyZUZvckF1ZGlvUmF0ZUNoYW5nZSA9PSBvdGhlci5pc0F1ZGlvQW5kUmVx
dWlyZXNVc2VyR2VzdHVyZUZvckF1ZGlvUmF0ZUNoYW5nZQotICAgICAgICAgICAgJiYgaXNWaWRl
b0FuZFJlcXVpcmVzVXNlckdlc3R1cmVGb3JWaWRlb0R1ZVRvTG93UG93ZXJNb2RlID09IG90aGVy
LmlzVmlkZW9BbmRSZXF1aXJlc1VzZXJHZXN0dXJlRm9yVmlkZW9EdWVUb0xvd1Bvd2VyTW9kZQot
ICAgICAgICAgICAgJiYgbm9Vc2VyR2VzdHVyZVJlcXVpcmVkID09IG90aGVyLm5vVXNlckdlc3R1
cmVSZXF1aXJlZAotICAgICAgICAgICAgJiYgcmVxdWlyZXNQbGF5YmFja0FuZElzTm90UGxheWlu
ZyA9PSBvdGhlci5yZXF1aXJlc1BsYXliYWNrQW5kSXNOb3RQbGF5aW5nCi0gICAgICAgICAgICAm
JiBoYXNFdmVyTm90aWZpZWRBYm91dFBsYXlpbmcgPT0gb3RoZXIuaGFzRXZlck5vdGlmaWVkQWJv
dXRQbGF5aW5nCi0gICAgICAgICAgICAmJiBvdXRzaWRlT2ZGdWxsc2NyZWVuID09IG90aGVyLm91
dHNpZGVPZkZ1bGxzY3JlZW4KLSAgICAgICAgICAgICYmIGlzTGFyZ2VFbm91Z2hGb3JNYWluQ29u
dGVudCA9PSBvdGhlci5pc0xhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQ7Ci0gICAgfQotCi0gICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IE1lZGlhVXNhZ2VJbmZvIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTWVkaWFVc2FnZUluZm8mKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWVkaWFVc2FnZUluZm8+
IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAppbmRleCBlZjAyYTFlODNmY2RjM2E1Yjli
ODQxYjA1ODY2YWI5ODk2MGJmODFjLi5hYjlmZjkxZTg5N2ZjODg1NzEyM2JiNDE1YjRhYmE5ZmYz
Y2FhMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRo
VHJhdmVyc2FsU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKQEAgLTQzLDEyICs0Myw3IEBAIHN0cnVjdCBRdWFkcmF0
aWNCZXppZXIgewogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVh
ZHJhdGljQmV6aWVyJiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhcnQgPT0g
cmhzLnN0YXJ0Ci0gICAgICAgICAgICAmJiBjb250cm9sID09IHJocy5jb250cm9sCi0gICAgICAg
ICAgICAmJiBlbmQgPT0gcmhzLmVuZDsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFF1YWRyYXRpY0JlemllciYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAKICAgICBmbG9hdCBhcHBy
b3hpbWF0ZURpc3RhbmNlKCkgY29uc3QKICAgICB7CkBAIC04NSwxMyArODAsNyBAQCBzdHJ1Y3Qg
Q3ViaWNCZXppZXIgewogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q3ViaWNCZXppZXImIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGFydCA9PSBy
aHMuc3RhcnQKLSAgICAgICAgICAgICYmIGNvbnRyb2wxID09IHJocy5jb250cm9sMQotICAgICAg
ICAgICAgJiYgY29udHJvbDIgPT0gcmhzLmNvbnRyb2wyCi0gICAgICAgICAgICAmJiBlbmQgPT0g
cmhzLmVuZDsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1YmljQmV6aWVyJikg
Y29uc3QgPSBkZWZhdWx0OwogCiAgICAgZmxvYXQgYXBwcm94aW1hdGVEaXN0YW5jZSgpIGNvbnN0
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZm
ZXIuY3BwCmluZGV4IDc1NDNmNDc1YTI3YTY1MTU5MDZjYzIyZWIzZjYwYTkxNDA5MjkwYmEuLjA3
NTYxOTRjZjJmNWU4YjlmYmIyN2ExMGNlNzhhMmUxOGMyM2NmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5jcHAKQEAgLTc0LDcgKzc0LDgg
QEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShjb25z
dCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWEKICAgICBhdXRvIGJ1ZmZlclNpemUgPSBjb21wdXRl
QnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOwogICAgIGlmIChidWZmZXJTaXplLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoYnVmZmVyU2l6ZSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKQorICAgIHVpbnQzMl90IG1heCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpOworICAgIGlmIChidWZmZXJTaXpl
ID4gbWF4KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gcGl4ZWxBcnJh
eSA9IFVpbnQ4Q2xhbXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKGJ1ZmZlclNpemUp
OwogICAgIGlmICghcGl4ZWxBcnJheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24u
aAppbmRleCBmNmJmMTc3MmFmYWM2ZmUzMzc5ZjdhZjA5NWNiNDJkNDdmYzA0MGQwLi5mNTcyN2M4
ZGY4ZGUyZjdlZjg3YTI5Y2RjZDMwOWQzNDg5NTQ3YjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUF1ZGlvVHJhY2tDb25maWd1cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1BdWRpb1RyYWNr
Q29uZmlndXJhdGlvbi5oCkBAIC0zNiwxOCArMzYsMTIgQEAgc3RydWN0IFBsYXRmb3JtQXVkaW9U
cmFja0NvbmZpZ3VyYXRpb24gOiBQbGF0Zm9ybVRyYWNrQ29uZmlndXJhdGlvbiB7CiAgICAgdWlu
dDMyX3QgbnVtYmVyT2ZDaGFubmVscyB7IDAgfTsKICAgICB1aW50NjRfdCBiaXRyYXRlIHsgMCB9
OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBsYXRmb3JtQXVkaW9UcmFja0NvbmZpZ3Vy
YXRpb24mKSBjb25zdCA9IGRlZmF1bHQ7CisKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBQbGF0Zm9y
bUF1ZGlvVHJhY2tDb25maWd1cmF0aW9uJik7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFBsYXRmb3JtQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24mIGEsIGNvbnN0IFBsYXRmb3Jt
QXVkaW9UcmFja0NvbmZpZ3VyYXRpb24mIGIpCi17Ci0gICAgcmV0dXJuIGEuY29kZWMgPT0gYi5j
b2RlYwotICAgICAgICAmJiBhLnNhbXBsZVJhdGUgPT0gYi5zYW1wbGVSYXRlCi0gICAgICAgICYm
IGEubnVtYmVyT2ZDaGFubmVscyA9PSBiLm51bWJlck9mQ2hhbm5lbHMKLSAgICAgICAgJiYgYS5i
aXRyYXRlID09IGIuYml0cmF0ZTsKLX0KLQogdGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+CiB2b2lk
IFBsYXRmb3JtQXVkaW9UcmFja0NvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1UcmFja0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtVHJhY2tDb25maWd1cmF0aW9uLmgKaW5kZXggZDBmOTdhNjAwZjg0ZTQz
MDc3NWI1ODkwMTYwZjRhMDY3ZjQ4ZDIyNy4uZmFiNDVmNmNmODA5MGZhZTVmN2U4Zjg3MzAzOTA5
MDVhMDc5MTA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1UcmFja0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVRyYWNrQ29uZmlndXJhdGlvbi5oCkBAIC0zMyw2ICszMyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFBsYXRmb3JtVHJhY2tDb25maWd1cmF0aW9u
IHsKICAgICBTdHJpbmcgY29kZWM7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBsYXRmb3Jt
VHJhY2tDb25maWd1cmF0aW9uJikgY29uc3QgPSBkZWZhdWx0OwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1WaWRlb0NvbG9yU3Bh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVmlkZW9Db2xv
clNwYWNlLmgKaW5kZXggNTBlNGFiOTI3NjQ1MDBhNWFjYTNmMWU3NGE5Yjg4OGZhMWI1NGM4Yi4u
NTQwNTEwMDI0NmVlZDdmZjkyMjgxYTRiNDY2ZjMyMjU2YTczOGVjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvQ29sb3JT
cGFjZS5oCkBAIC0zOSwyMiArMzksMTEgQEAgc3RydWN0IFBsYXRmb3JtVmlkZW9Db2xvclNwYWNl
IHsKICAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtVmlkZW9UcmFuc2ZlckNoYXJhY3RlcmlzdGlj
cz4gdHJhbnNmZXI7CiAgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVZpZGVvTWF0cml4Q29lZmZp
Y2llbnRzPiBtYXRyaXg7CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBmdWxsUmFuZ2U7Ci0gICAg
dGVtcGxhdGUgPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29s
IGRlY29kZShEZWNvZGVyJiwgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UmKTsKLX07Ci0KLWlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UmIGEsIGNvbnN0
IFBsYXRmb3JtVmlkZW9Db2xvclNwYWNlJiBiKQotewotICAgIHJldHVybiBhLnByaW1hcmllcyA9
PSBiLnByaW1hcmllcwotICAgICAgICAmJiBhLnRyYW5zZmVyID09IGIudHJhbnNmZXIKLSAgICAg
ICAgJiYgYS5tYXRyaXggPT0gYi5tYXRyaXgKLSAgICAgICAgJiYgYS5mdWxsUmFuZ2UgPT0gYi5m
dWxsUmFuZ2U7Ci19CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGxhdGZvcm1WaWRl
b0NvbG9yU3BhY2UmIGEsIGNvbnN0IFBsYXRmb3JtVmlkZW9Db2xvclNwYWNlJiBiKQotewotICAg
IHJldHVybiAhKGEgPT0gYik7Ci19CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBsYXRmb3Jt
VmlkZW9Db2xvclNwYWNlJikgY29uc3QgPSBkZWZhdWx0OworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBQbGF0Zm9ybVZpZGVvQ29sb3JTcGFjZSYpOworfTsKIAogdGVtcGxhdGUgPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIFBsYXRmb3JtVmlkZW9Db2xvclNwYWNlOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtVmlkZW9UcmFja0NvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BsYXRmb3JtVmlkZW9UcmFja0NvbmZpZ3VyYXRpb24uaAppbmRleCA2NTNi
MTkwYmNmNmYwYWU3ZjhmN2EyNGRkNjIxYWY1NzI5NmFlZmNiLi4wZjY0ZTRlNDY5OTAwMTBkOGY2
MzQwNTA5NDZhZDE2MzY1ZDg5ZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJhY2tDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1WaWRlb1RyYWNrQ29uZmlndXJhdGlv
bi5oCkBAIC0zOSwyMCArMzksMTEgQEAgc3RydWN0IFBsYXRmb3JtVmlkZW9UcmFja0NvbmZpZ3Vy
YXRpb24gOiBQbGF0Zm9ybVRyYWNrQ29uZmlndXJhdGlvbiB7CiAgICAgZG91YmxlIGZyYW1lcmF0
ZSB7IDAgfTsKICAgICB1aW50NjRfdCBiaXRyYXRlIHsgMCB9OwogCi0gICAgdGVtcGxhdGUgPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZSA8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNv
ZGVyJiwgUGxhdGZvcm1WaWRlb1RyYWNrQ29uZmlndXJhdGlvbiYpOworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBQbGF0Zm9ybVZpZGVvVHJhY2tDb25maWd1cmF0aW9uJikgY29uc3QgPSBkZWZh
dWx0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBQbGF0Zm9ybVZpZGVvVHJhY2tDb25maWd1
cmF0aW9uJik7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBsYXRmb3JtVmlk
ZW9UcmFja0NvbmZpZ3VyYXRpb24mIGEsIGNvbnN0IFBsYXRmb3JtVmlkZW9UcmFja0NvbmZpZ3Vy
YXRpb24mIGIpCi17Ci0gICAgcmV0dXJuIGEuY29kZWMgPT0gYi5jb2RlYwotICAgICAgICAmJiBh
LndpZHRoID09IGIud2lkdGgKLSAgICAgICAgJiYgYS5oZWlnaHQgPT0gYi5oZWlnaHQKLSAgICAg
ICAgJiYgYS5jb2xvclNwYWNlID09IGIuY29sb3JTcGFjZQotICAgICAgICAmJiBhLmZyYW1lcmF0
ZSA9PSBiLmZyYW1lcmF0ZQotICAgICAgICAmJiBhLmJpdHJhdGUgPT0gYi5iaXRyYXRlOwotfQot
CiB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgUGxhdGZvcm1WaWRlb1RyYWNrQ29uZmln
dXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCmluZGV4IDE5ZWVkY2Y1NmU1ZjVhYmY5YWE2MWQ4
ZDI1ZTQzYTlmNzg5MWNjOTEuLmVkY2MxMjA2Zjg3ZjQ4YWZkODNmNDY2YzQzMTY4YmRkMjc1OThk
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCkBAIC04NSw4
ICs4NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGludCB5IHsgMCB9OwogICAgICAgICBzaXplX3Qg
c2VnbWVudEluZGV4IHsgMCB9OwogCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3Bhbj4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNwYW4mKSBjb25zdCA9IGRlZmF1bHQ7CisgICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3Bh
bj4gZGVjb2RlKERlY29kZXImKTsKICAgICB9OwogCiAgICAgY2xhc3MgU2hhcGUgewpAQCAtMTIw
LDYgKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbXBhcmVP
cGVyYXRpb24+CiAgICAgICAgIHN0YXRpYyBib29sIGNvbXBhcmVTaGFwZXMoY29uc3QgU2hhcGUm
IHNoYXBlMSwgY29uc3QgU2hhcGUmIHNoYXBlMik7CiAKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNoYXBlJikgY29uc3QgPSBkZWZhdWx0OworCiAgICAgICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2hhcGU+IGRlY29kZShEZWNvZGVy
Jik7CiAKQEAgLTE0NCw4ICsxNDcsNiBAQCBwcml2YXRlOgogCiAgICAgICAgIFZlY3RvcjxpbnQs
IDMyPiBtX3NlZ21lbnRzOwogICAgICAgICBWZWN0b3I8U3BhbiwgMTY+IG1fc3BhbnM7Ci0KLSAg
ICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFwZSYsIGNvbnN0IFNoYXBlJik7
CiAgICAgfTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY29weVNoYXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9zaGFwZSA/IG1ha2VVbmlxdWU8U2hhcGU+KCptX3NoYXBlKSA6IG51bGxwdHI7
IH0KQEAgLTE1NSw5ICsxNTYsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFw
ZT4gbV9zaGFwZTsKIAogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaW9uJiwg
Y29uc3QgUmVnaW9uJik7Ci0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFwZSYs
IGNvbnN0IFNoYXBlJik7Ci0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTcGFuJiwg
Y29uc3QgU3BhbiYpOwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgU3BhbiYsIGNv
bnN0IFNwYW4mKTsKIH07CiAKIHN0YXRpYyBpbmxpbmUgUmVnaW9uIGludGVyc2VjdChjb25zdCBS
ZWdpb24mIGEsIGNvbnN0IFJlZ2lvbiYgYikKQEAgLTE4OCwyNSArMTg2LDYgQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBSZWdpb24mIGEsIGNvbnN0IFJlZ2lvbiYgYikKIHsKICAgICBy
ZXR1cm4gYS5tX2JvdW5kcyA9PSBiLm1fYm91bmRzICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEo
YS5tX3NoYXBlLCBiLm1fc2hhcGUpOwogfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBS
ZWdpb24mIGEsIGNvbnN0IFJlZ2lvbiYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQot
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lvbjo6U2hhcGUmIGEsIGNvbnN0IFJl
Z2lvbjo6U2hhcGUmIGIpCi17Ci0gICAgcmV0dXJuIGEubV9zcGFucyA9PSBiLm1fc3BhbnMgJiYg
YS5tX3NlZ21lbnRzID09IGIubV9zZWdtZW50czsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBSZWdpb246OlNwYW4mIGEsIGNvbnN0IFJlZ2lvbjo6U3BhbiYgYikKLXsKLSAgICBy
ZXR1cm4gYS55ID09IGIueSAmJiBhLnNlZ21lbnRJbmRleCA9PSBiLnNlZ21lbnRJbmRleDsKLX0K
LQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWdpb246OlNwYW4mIGEsIGNvbnN0IFJl
Z2lvbjo6U3BhbiYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQogCiBXRUJDT1JFX0VY
UE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3Qg
UmVnaW9uJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JvdW5kZWRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVk
UmVjdC5oCmluZGV4IDExN2JlZWY3YTMzYzJmZWIwMTg3NTIzMDY1ZGZlNTkyNDM0ZTA1OTAuLjJi
ODZhZjg1NTBiYjVmZTUyMjExNjcyMzhiMTRjOTc1ZWVkNzg4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRSZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaApAQCAtNzEsNiArNzEsOCBAQCBw
dWJsaWM6CiAKICAgICAgICAgUmFkaWkgdHJhbnNwb3NlZFJhZGlpKCkgY29uc3QgeyByZXR1cm4g
UmFkaWkobV90b3BMZWZ0LnRyYW5zcG9zZWRTaXplKCksIG1fdG9wUmlnaHQudHJhbnNwb3NlZFNp
emUoKSwgbV9ib3R0b21MZWZ0LnRyYW5zcG9zZWRTaXplKCksIG1fYm90dG9tUmlnaHQudHJhbnNw
b3NlZFNpemUoKSk7IH0KIAorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmFkaWkmKSBj
b25zdCA9IGRlZmF1bHQ7CisKICAgICBwcml2YXRlOgogICAgICAgICBMYXlvdXRTaXplIG1fdG9w
TGVmdDsKICAgICAgICAgTGF5b3V0U2l6ZSBtX3RvcFJpZ2h0OwpAQCAtMTEyLDIxICsxMTQsMTMg
QEAgcHVibGljOgogCiAgICAgUm91bmRlZFJlY3QgdHJhbnNwb3NlZFJlY3QoKSBjb25zdCB7IHJl
dHVybiBSb3VuZGVkUmVjdChtX3JlY3QudHJhbnNwb3NlZFJlY3QoKSwgbV9yYWRpaS50cmFuc3Bv
c2VkUmFkaWkoKSk7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3VuZGVkUmVjdCYp
IGNvbnN0ID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICBMYXlvdXRSZWN0IG1fcmVjdDsKICAg
ICBSYWRpaSBtX3JhZGlpOwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3Vu
ZGVkUmVjdDo6UmFkaWkmIGEsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgYikKLXsKLSAgICBy
ZXR1cm4gYS50b3BMZWZ0KCkgPT0gYi50b3BMZWZ0KCkgJiYgYS50b3BSaWdodCgpID09IGIudG9w
UmlnaHQoKSAmJiBhLmJvdHRvbUxlZnQoKSA9PSBiLmJvdHRvbUxlZnQoKSAmJiBhLmJvdHRvbVJp
Z2h0KCkgPT0gYi5ib3R0b21SaWdodCgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJvdW5kZWRSZWN0JiBhLCBjb25zdCBSb3VuZGVkUmVjdCYgYikKLXsKLSAgICByZXR1cm4g
YS5yZWN0KCkgPT0gYi5yZWN0KCkgJiYgYS5yYWRpaSgpID09IGIucmFkaWkoKTsKLX0KLQogLy8g
U25pcCBhd2F5IHJlY3RhbmdsZXMgZnJvbSBjb3JuZXJzLCByb3VnaGx5IG9uZSBwZXIgc3RlcCBs
ZW5ndGggb2YgYXJjLgogV0VCQ09SRV9FWFBPUlQgUmVnaW9uIGFwcHJveGltYXRlQXNSZWdpb24o
Y29uc3QgUm91bmRlZFJlY3QmLCB1bnNpZ25lZCBzdGVwTGVuZ3RoID0gMjApOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UYWJTaXplLmgKaW5kZXggMzRhNzA4MTA2MjhhYzk1
MjdmNGY1Y2YwNDc1ZDgzNWI3Y2MyZWFjZi4uODVjY2FhMGZlNGZjYTI2YzRmZjU2OWJjYWVmMTBl
ZTI5ZmJhNjZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGFiU2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUu
aApAQCAtMjksNDkgKzI5LDMxIEBACiAKICNwcmFnbWEgb25jZQogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CisjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKLWVudW0gVGFiU2l6ZVZhbHVl
VHlwZSB7Ci0gICAgTGVuZ3RoVmFsdWVUeXBlLAotICAgIFNwYWNlVmFsdWVUeXBlLAotfTsKK25h
bWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFRhYlNpemUgewotICAgIFRhYlNpemUoZmxvYXQg
bnVtT3JMZW5ndGgsIFRhYlNpemVWYWx1ZVR5cGUgaXNTcGFjZXMgPSBTcGFjZVZhbHVlVHlwZSkK
LSAgICAgICAgOiBtX3ZhbHVlKG51bU9yTGVuZ3RoKQotICAgICAgICAsIG1faXNTcGFjZXMoaXNT
cGFjZXMpCisgICAgZW51bSBWYWx1ZVR5cGUgeyBMZW5ndGgsIFNwYWNlcyB9OworICAgIFRhYlNp
emUoZmxvYXQgbnVtT3JMZW5ndGgsIFZhbHVlVHlwZSB0eXBlID0gU3BhY2VzKQorICAgICAgICA6
IHZhbHVlKG51bU9yTGVuZ3RoKQorICAgICAgICAsIGlzU3BhY2VzKHR5cGUgPT0gU3BhY2VzKQog
ICAgIHsKICAgICB9CiAKLSAgICBib29sIGlzU3BhY2VzKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2lzU3BhY2VzOwotICAgIH0KLQogICAgIGZsb2F0IHdpZHRoSW5QaXhlbHMoZmxv
YXQgc3BhY2VXaWR0aCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2lzU3BhY2VzID8g
bV92YWx1ZSAqIHNwYWNlV2lkdGggOiBtX3ZhbHVlOworICAgICAgICByZXR1cm4gaXNTcGFjZXMg
PyB2YWx1ZSAqIHNwYWNlV2lkdGggOiB2YWx1ZTsKICAgICB9CiAKLSAgICBmbG9hdCB2YWx1ZSgp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZTsKLSAgICB9CisgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlOyB9CiAKLSAgICBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gdmFsdWUoKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBUYWJTaXplJikgY29uc3QgPSBkZWZhdWx0OwogCi0gICAgZmxvYXQgbV92YWx1ZTsKLSAg
ICBib29sIG1faXNTcGFjZXM7CisgICAgZmxvYXQgdmFsdWU7CisgICAgYm9vbCBpc1NwYWNlczsK
IH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVGFiU2l6ZSYgYSwgY29uc3QgVGFi
U2l6ZSYgYikKLXsKLSAgICByZXR1cm4gKGEubV92YWx1ZSA9PSBiLm1fdmFsdWUpICYmIChhLm1f
aXNTcGFjZXMgPT0gYi5tX2lzU3BhY2VzKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBUYWJTaXplJiBhLCBjb25zdCBUYWJTaXplJiBiKQotewotICAgIHJldHVybiAhKGEgPT0g
Yik7Ci19CitpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiBzdHJlYW0s
IFRhYlNpemUgc2l6ZSkgeyByZXR1cm4gc3RyZWFtIDw8IHNpemUudmFsdWUgPDwgKHNpemUuaXNT
cGFjZXMgPyAiIHNwYWNlcyIgOiAiIik7IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVlA5VXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaAppbmRleCBi
NjEyNjRjMGZmMzIwNWFlZGEwY2IyZTM2NGZiNjgzZmE5MTA1YTYwLi41NzFjYzNhYWI5MjllNDM0
MTkyN2YyNDcyN2ZhMGQzOWZlZWZlZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9WUDlVdGlsaXRpZXMuaApAQCAtMTMyLDYgKzEzMiw4IEBAIHN0cnVjdCBTY3Jl
ZW5EYXRhT3ZlcnJpZGVzIHsKICAgICBkb3VibGUgaGVpZ2h0IHsgMCB9OwogICAgIGRvdWJsZSBz
Y2FsZSB7IDEgfTsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JlZW5EYXRhT3ZlcnJp
ZGVzJikgY29uc3QgPSBkZWZhdWx0OworCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KICAg
ICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKQEAgLTE1OCwxNCAr
MTYwLDQgQEAgc3RydWN0IFNjcmVlbkRhdGFPdmVycmlkZXMgewogICAgIH0KIH07CiAKLWlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyZWVuRGF0YU92ZXJyaWRlcyYgYSwgY29uc3QgU2Ny
ZWVuRGF0YU92ZXJyaWRlcyYgYikKLXsKLSAgICByZXR1cm4gYS53aWR0aCA9PSBiLndpZHRoICYm
IGEuaGVpZ2h0ID09IGIuaGVpZ2h0ICYmIGEuc2NhbGUgPT0gYi5zY2FsZTsKLX0KLQotaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTY3JlZW5EYXRhT3ZlcnJpZGVzJiBhLCBjb25zdCBTY3Jl
ZW5EYXRhT3ZlcnJpZGVzJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5oCmluZGV4IDU2YjU4YzI1YTI4NzA5ZmIzODIyMTgzOWU1NWJhZTQ1
ZWQ5M2NmNjIuLjAxOGE5YzNkZTc3NTMyMzMxOTk5YzBlYjU1YjkwMmUxMWM0ZWU2MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMuaApAQCAtMTgxLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICBzdHJ1
Y3QgUmVxdWVzdCB7CiAgICAgICAgIEF0b21TdHJpbmcgaW5pdFR5cGU7CiAgICAgICAgIFZlY3Rv
cjxSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4+IHJlcXVlc3RzOwotICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUmVxdWVzdCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGluaXRUeXBl
ID09IG90aGVyLmluaXRUeXBlICYmIHJlcXVlc3RzID09IG90aGVyLnJlcXVlc3RzOyB9CisgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXF1ZXN0JikgY29uc3QgPSBkZWZhdWx0OwogICAg
IH07CiAKICAgICBib29sIGhhc1JlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvSW5iYW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1By
aXZhdGVBVkZPYmpDLmgKaW5kZXggZWUxYTM3OWE1YmQ4MmEyNmFjMzIxMmMzZGRmNmU3YzA0MGMx
OGM1NS4uZDE5ZmU0ZDUzZjZiMGQ3OTEwNDFmMTEzODBhOTM3YzExMmI4N2Y0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5i
YW5kQ2hhcHRlclRyYWNrUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRl
QVZGT2JqQy5oCkBAIC02MCwxNCArNjAsMTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBs
b2dDbGFzc05hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiSW5iYW5kQ2hhcHRlclRyYWNrUHJp
dmF0ZUFWRk9iakMiOyB9CiAKICAgICBzdHJ1Y3QgQ2hhcHRlckRhdGEgewotICAgICAgICBNZWRp
YVRpbWUgbV9zdGFydFRpbWU7Ci0gICAgICAgIE1lZGlhVGltZSBtX2R1cmF0aW9uOwotICAgICAg
ICBTdHJpbmcgbV90aXRsZTsKLQotICAgICAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IENoYXB0ZXJEYXRhJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG1fc3RhcnRUaW1lID09IG90aGVyLm1fc3RhcnRUaW1lICYmIG1fZHVyYXRpb24gPT0gb3Ro
ZXIubV9kdXJhdGlvbiAmJiBtX3RpdGxlID09IG90aGVyLm1fdGl0bGU7Ci0gICAgICAgIH0KKyAg
ICAgICAgTWVkaWFUaW1lIHN0YXJ0VGltZTsKKyAgICAgICAgTWVkaWFUaW1lIGR1cmF0aW9uOwor
ICAgICAgICBTdHJpbmcgdGl0bGU7CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDaGFw
dGVyRGF0YSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9OwogCiAgICAgVmVjdG9yPENoYXB0ZXJE
YXRhPiBtX3Byb2Nlc3NlZENoYXB0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udEZhbWlseVNwZWNpZmljYXRpb25Db3JlVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lm
aWNhdGlvbkNvcmVUZXh0LmNwcAppbmRleCAzYjRkYTRmNTI3YmM4NGU1YTQ3MTY4YTk5NDZlN2Zi
Njg3NzRlN2UyLi43Nzk4MDUwOGQ0ZDg5OWNlNWVmZjU3YTg0Mzg3ODQ5ZjBjOWVhMTU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5
U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0LmNwcApAQCAtNTYs
MTEgKzU2LDYgQEAgc3RydWN0IEZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uS2V5IHsKICAgICAgICAg
cmV0dXJuIHNhZmVDRkVxdWFsKGZvbnREZXNjcmlwdG9yLmdldCgpLCBvdGhlci5mb250RGVzY3Jp
cHRvci5nZXQoKSkgJiYgZm9udERlc2NyaXB0aW9uS2V5ID09IG90aGVyLmZvbnREZXNjcmlwdGlv
bktleTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udEZhbWlseVNwZWNp
ZmljYXRpb25LZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOwotICAgIH0KLQogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdCB7IHJldHVybiBmb250RGVzY3JpcHRpb25LZXkuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCAwNWE4MzE2
ZGMyN2U2MzAxN2YzOTdmMTkyNDY5YjgyYTMzYjdiMDM0Li4wNGMwMDNiNGUyZTg3NjhjZDU4Nzc3
NGU1ZDFlYzYzMjc5Yzg4YmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApA
QCAtMTQyMiwxOCArMTQyMiwxOCBAQCB3ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6QXVkaW9UcmFja0RhdGE6OmNvbnN1bWVGcmFtZURhdGEod2VibTo6UmVhZAogICAgICAgICAg
ICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxvY2tCdWZmZXJHZXREYXRh
UG9pbnRlciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZUNvbnRlbnRzOwotICAgICAgICAgICAgaWYgKCFw
YXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZhdGVEYXRhLmRhdGEo
KSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNvb2tpZUNvbnRlbnRz
KSkgeworICAgICAgICAgICAgYXV0byBjb29raWVDb250ZW50cyA9IHBhcnNlT3B1c1ByaXZhdGVE
YXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEuZGF0YSgpLCAqbV9jb21wbGV0ZVBh
Y2tldFNpemUsIGJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAgICAgICBpZiAoIWNvb2tpZUNvbnRl
bnRzKSB7CiAgICAgICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiRmFp
bGVkIHRvIHBhcnNlIE9wdXMgcHJpdmF0ZSBkYXRhIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKCFjb29raWVDb250ZW50cy5mcmFtZXNQZXJQYWNrZXQpIHsKKyAgICAgICAgICAgIGlm
ICghY29va2llQ29udGVudHMtPmZyYW1lc1BlclBhY2tldCkgewogICAgICAgICAgICAgICAgIFBB
UlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIk9wdXMgcHJpdmF0ZSBkYXRhIGluZGljYXRlcyAw
IGZyYW1lcyBwZXIgcGFja2V0OyBiYWlsaW5nIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNr
aXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
bV9mcmFtZXNQZXJQYWNrZXQgPSBjb29raWVDb250ZW50cy5mcmFtZXNQZXJQYWNrZXQ7Ci0gICAg
ICAgICAgICBtX2ZyYW1lRHVyYXRpb24gPSBjb29raWVDb250ZW50cy5mcmFtZUR1cmF0aW9uOwot
ICAgICAgICAgICAgZm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVPcHVzQXVkaW9Gb3JtYXREZXNj
cmlwdGlvbihjb29raWVDb250ZW50cyk7CisgICAgICAgICAgICBtX2ZyYW1lc1BlclBhY2tldCA9
IGNvb2tpZUNvbnRlbnRzLT5mcmFtZXNQZXJQYWNrZXQ7CisgICAgICAgICAgICBtX2ZyYW1lRHVy
YXRpb24gPSBjb29raWVDb250ZW50cy0+ZnJhbWVEdXJhdGlvbjsKKyAgICAgICAgICAgIGZvcm1h
dERlc2NyaXB0aW9uID0gY3JlYXRlT3B1c0F1ZGlvRm9ybWF0RGVzY3JpcHRpb24oKmNvb2tpZUNv
bnRlbnRzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghZm9ybWF0RGVzY3JpcHRpb24pIHsK
QEAgLTE0NTMsNyArMTQ1Myw2IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAgICAgIC8v
IE9wdXMgdGVjaG5pY2FsbHkgYWxsb3dzIHRoZSBmcmFtZSBkdXJhdGlvbiBhbmQgZnJhbWVzLXBl
ci1wYWNrZXQgdmFsdWVzIHRvIGNoYW5nZSBmcm9tIHBhY2tldCB0byBwYWNrZXQuCiAgICAgICAg
IC8vIENvcmVBdWRpbyBkb2Vzbid0IHN1cHBvcnQgQVNCRCB2YWx1ZXMgbGlrZSB0aGVzZSB0byBj
aGFuZ2Ugb24gYSBwZXItcGFja2V0IGJhc2lzLCBzbyB0aHJvdyBhbiBlcnJvciB3aGVuCiAgICAg
ICAgIC8vIHRoYXQga2luZCBvZiB2YXJpYWJpbGl0eSBpcyBlbmNvdW50ZXJlZC4KLSAgICAgICAg
T3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZUNvbnRlbnRzOwogICAgICAgICBhdXRvJiBwcml2YXRl
RGF0YSA9IHRyYWNrKCkuY29kZWNfcHJpdmF0ZS52YWx1ZSgpOwogICAgICAgICBhdXRvIGNvbnRp
Z3VvdXNCdWZmZXIgPSBjb250aWd1b3VzQ29tcGxldGVCbG9ja0J1ZmZlcihtX2N1cnJlbnRQYWNr
ZXRCeXRlT2Zmc2V0LCAqbV9jb21wbGV0ZVBhY2tldFNpemUpOwogICAgICAgICBpZiAoIWNvbnRp
Z3VvdXNCdWZmZXIpIHsKQEAgLTE0NjYsOSArMTQ2NSw4IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpS
ZWFkCiAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxFKCJDTUJsb2NrQnVm
ZmVyR2V0RGF0YVBvaW50ZXIgZmFpbGVkIHdpdGggZXJyb3IiLCBlcnIpOwogICAgICAgICAgICAg
cmV0dXJuIFNraXAoJnJlYWRlciwgYnl0ZXNSZW1haW5pbmcpOwogICAgICAgICB9Ci0gICAgICAg
IGlmICghcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0
YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhLCBjb29raWVD
b250ZW50cykKLSAgICAgICAgICAgIHx8IGNvb2tpZUNvbnRlbnRzLmZyYW1lc1BlclBhY2tldCAh
PSBtX2ZyYW1lc1BlclBhY2tldAotICAgICAgICAgICAgfHwgY29va2llQ29udGVudHMuZnJhbWVE
dXJhdGlvbiAhPSBtX2ZyYW1lRHVyYXRpb24pIHsKKyAgICAgICAgYXV0byBjb29raWVDb250ZW50
cyA9IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEu
ZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUsIGJsb2NrQnVmZmVyRGF0YSk7CisgICAgICAg
IGlmICghY29va2llQ29udGVudHMgfHwgY29va2llQ29udGVudHMtPmZyYW1lc1BlclBhY2tldCAh
PSBtX2ZyYW1lc1BlclBhY2tldCB8fCBjb29raWVDb250ZW50cy0+ZnJhbWVEdXJhdGlvbiAhPSBt
X2ZyYW1lRHVyYXRpb24pIHsKICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lC
TEUoIk9wdXMgZnJhbWVzLXBlci1wYWNrZXQgY2hhbmdlZCB3aXRoaW4gYSB0cmFjazsgZXJyb3Ii
KTsKICAgICAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpDb2RlKEVycm9yQ29kZTo6VmFy
aWFibGVGcmFtZUR1cmF0aW9uKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9TeXN0ZW1Gb250RGF0YWJh
c2VDb3JlVGV4dC5oCmluZGV4IDlhZDFlMGNjNDUwZjBlYWE4Mjk4MTczNTU5NzgwMGFjMDgwNDk2
ZDQuLmZlMzI3MjRiZmRmYzUxZTk1ZWNlMjgyZTczZTM1MWY5ZjFlN2FmZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnREYXRhYmFz
ZUNvcmVUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U3lzdGVtRm9udERhdGFiYXNlQ29yZVRleHQuaApAQCAtNTksMTYgKzU5LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIGZvbnROYW1lLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FzY2FkZUxpc3RQYXJh
bWV0ZXJzJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZvbnRO
YW1lID09IG90aGVyLmZvbnROYW1lCi0gICAgICAgICAgICAgICAgJiYgbG9jYWxlID09IG90aGVy
LmxvY2FsZQotICAgICAgICAgICAgICAgICYmIHdlaWdodCA9PSBvdGhlci53ZWlnaHQKLSAgICAg
ICAgICAgICAgICAmJiB3aWR0aCA9PSBvdGhlci53aWR0aAotICAgICAgICAgICAgICAgICYmIHNp
emUgPT0gb3RoZXIuc2l6ZQotICAgICAgICAgICAgICAgICYmIGFsbG93VXNlckluc3RhbGxlZEZv
bnRzID09IG90aGVyLmFsbG93VXNlckluc3RhbGxlZEZvbnRzCi0gICAgICAgICAgICAgICAgJiYg
aXRhbGljID09IG90aGVyLml0YWxpYzsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ2FzY2FkZUxpc3RQYXJhbWV0ZXJzJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAg
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0
aWVzQ29jb2EuaAppbmRleCA4NzEwNGQ4YjdiMzU3YzE2MGI2ZGNjYzQxYmZlMWY4OWUwYTZjMjcx
Li44YjY3ZGU2ZjQ5MzAxYmEwMTE1OGE5ODAwOTk1OTI3NzA0NDUyMzQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXND
b2NvYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1B
dWRpb1V0aWxpdGllc0NvY29hLmgKQEAgLTI4LDggKzI4LDggQEAKICNpZiBQTEFURk9STShDT0NP
QSkKIAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5o
PgogCi1jbGFzcyBBdWRpb1N0cmVhbURlc2NyaXB0aW9uOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
b3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiogQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNTUsOSArNTUsOSBAQCBzdHJ1Y3QgT3B1c0Nvb2tpZUNvbnRl
bnRzIHsKIAogV0VCQ09SRV9FWFBPUlQgYm9vbCBpc09wdXNEZWNvZGVyQXZhaWxhYmxlKCk7CiBX
RUJDT1JFX0VYUE9SVCBib29sIHJlZ2lzdGVyT3B1c0RlY29kZXJJZk5lZWRlZCgpOwotYm9vbCBw
YXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgcHJpdmF0ZURhdGFTaXplLCBjb25zdCB2b2lkKiBw
cml2YXRlRGF0YSwgc2l6ZV90IGZyYW1lRGF0YVNpemUsIGNvbnN0IHZvaWQqIGZyYW1lRGF0YSwg
T3B1c0Nvb2tpZUNvbnRlbnRzJik7CitzdGQ6Om9wdGlvbmFsPE9wdXNDb29raWVDb250ZW50cz4g
cGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IHByaXZhdGVEYXRhU2l6ZSwgY29uc3Qgdm9pZCog
cHJpdmF0ZURhdGEsIHNpemVfdCBmcmFtZURhdGFTaXplLCBjb25zdCB2b2lkKiBmcmFtZURhdGEp
OwogUmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IGNyZWF0ZU9wdXNBdWRpb0Zvcm1h
dERlc2NyaXB0aW9uKGNvbnN0IE9wdXNDb29raWVDb250ZW50cyYpOwogCiB9CiAKLSNlbmRpZiAv
LyAmJiBQTEFURk9STShDT0NPQSkKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxp
dGllc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2Vi
TUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggN2UwYWZiMjkwZGQ4NWE3N2Y5YmVmZmY0OTQ3
YTQ3Yjc1MzVlYjJmNC4uYWI1YmExZjI1MmNlYzI3MTZiNTAwZjZmOWE1YzRiYmE2NzQyODE5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1
ZGlvVXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvV2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EubW0KQEAgLTE2OSw3ICsxNjksNyBAQCBj
b25zdGV4cHIgaW50MzJfdCBvcHVzQ29uZmlnVG9CYW5kd2lkdGgodWludDhfdCBjb25maWcpCiB9
CiAjZW5kaWYKIAotYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgY29kZWNQcml2YXRl
U2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwgc2l6ZV90IGZyYW1lU2l6ZSwgY29u
c3Qgdm9pZCogZnJhbWVEYXRhLCBPcHVzQ29va2llQ29udGVudHMmIGNvb2tpZSkKK3N0ZDo6b3B0
aW9uYWw8T3B1c0Nvb2tpZUNvbnRlbnRzPiBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgY29k
ZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwgc2l6ZV90IGZyYW1l
U2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVEYXRhKQogewogI2lmIEVOQUJMRShPUFVTKQogICAgIC8v
IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3ODQ1CkBAIC0yMDEsMTYgKzIwMSwxNyBA
QCBib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1ByaXZhdGVTaXplLCBjb25z
dCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLAogICAgIGF1dG8qIHByaXZhdGVEYXRhUHRyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNvZGVjUHJpdmF0ZURhdGEpOwogCiAgICAgaWYgKGNv
ZGVjUHJpdmF0ZVNpemUgPCAxOSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDEuIE1hZ2ljIFNpZ25hdHVyZToKICAgICAvLwogICAg
IC8vICAgICBUaGlzIGlzIGFuIDgtb2N0ZXQgKDY0LWJpdCkgZmllbGQgdGhhdCBhbGxvd3MgY29k
ZWMKICAgICAvLyAgICAgaWRlbnRpZmljYXRpb24gYW5kIGlzIGh1bWFuIHJlYWRhYmxlLgogICAg
IGlmIChzdHJuY21wKCJPcHVzSGVhZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBy
aXZhdGVEYXRhUHRyKSwgOCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIDIuIFZlcnNpb24gKDggYml0cywgdW5zaWduZWQpOgor
ICAgIE9wdXNDb29raWVDb250ZW50cyBjb29raWU7CiAgICAgY29va2llLnZlcnNpb24gPSAqKHBy
aXZhdGVEYXRhUHRyICsgOCk7CiAKICAgICAvLyAzLiBPdXRwdXQgQ2hhbm5lbCBDb3VudCAnQycg
KDggYml0cywgdW5zaWduZWQpOgpAQCAtMjMxLDcgKzIzMiw3IEBAIGJvb2wgcGFyc2VPcHVzUHJp
dmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0
ZURhdGEsCiAgICAgYXV0byBmcmFtZVB0ciA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihm
cmFtZURhdGEpOwogCiAgICAgaWYgKGZyYW1lU2l6ZSA8IDEpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIGh0dHBzOi8vdG9vbHMu
aWV0Zi5vcmcvaHRtbC9yZmM2NzE2CiAgICAgLy8gMy4xLiBUaGUgVE9DIEJ5dGUKQEAgLTI4NSwy
MSArMjg2LDIwIEBAIGJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0
ZVNpemUsIGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURhdGEsCiAgICAgICAgIC8vCiAgICAgICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICBGaWd1cmUgNTogVGhlIGZyYW1lIGNvdW50IGJ5dGUK
ICAgICAgICAgaWYgKGZyYW1lU2l6ZSA8IDIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgICAgIHVpbnQ4X3QgZnJhbWVD
b3VudEJ5dGUgPSAqKGZyYW1lUHRyICsgMSk7CiAgICAgICAgIGNvb2tpZS5pc1ZCUiA9ICgoZnJh
bWVDb3VudEJ5dGUgJiAwYjEwMDAwMDAwKSA+PiA3KSA9PSAxOwogICAgICAgICBjb29raWUuaGFz
UGFkZGluZyA9ICgoZnJhbWVDb3VudEJ5dGUgJiAwYjAxMDAwMDAwKSA+PiA2KSA9PSAxOwogICAg
ICAgICBjb29raWUuZnJhbWVzUGVyUGFja2V0ID0gKGZyYW1lQ291bnRCeXRlICYgMGIwMDExMTEx
MSk7CiAgICAgfQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBjb29raWU7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShjb2RlY1ByaXZhdGVTaXplKTsKICAgICBVTlVTRURfUEFSQU0oY29k
ZWNQcml2YXRlRGF0YSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lU2l6ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKGZyYW1lRGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNvb2tpZSk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNlc3Np
b25WVC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlv
blNlc3Npb25WVC5oCmluZGV4IGJkZWRjY2Y3MGE4NWIxZTcyODcwMDg0ODk2NjVmOTk1NWE0NGZm
MDkuLmUyZGRiMDI0ZGQxNDQ5ODgyODRmMWI0ZTg1NTA0OGIxZTI2ZjFkMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlUm90YXRpb25TZXNzaW9u
VlQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0
aW9uU2Vzc2lvblZULmgKQEAgLTQ1LDEzICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHVuc2ln
bmVkIGFuZ2xlIHsgMCB9OwogCiAgICAgICAgIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0IHsgcmV0
dXJuICFmbGlwWCAmJiAhZmxpcFkgJiYgIWFuZ2xlOyB9Ci0gICAgfTsKIAotICAgIGVudW0gY2xh
c3MgSXNDR0ltYWdlQ29tcGF0aWJsZSB7Ci0gICAgICAgIE5vLAotICAgICAgICBZZXMsCisgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpSb3RhdGlv
blByb3BlcnRpZXMmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKIAorICAgIGVudW0gY2xhc3Mg
SXNDR0ltYWdlQ29tcGF0aWJsZSA6IGJvb2wgeyBObywgWWVzIH07CisKICAgICBJbWFnZVJvdGF0
aW9uU2Vzc2lvblZUKEFmZmluZVRyYW5zZm9ybSYmLCBGbG9hdFNpemUsIElzQ0dJbWFnZUNvbXBh
dGlibGUpOwogICAgIEltYWdlUm90YXRpb25TZXNzaW9uVlQoY29uc3QgUm90YXRpb25Qcm9wZXJ0
aWVzJiwgRmxvYXRTaXplLCBJc0NHSW1hZ2VDb21wYXRpYmxlKTsKICAgICBJbWFnZVJvdGF0aW9u
U2Vzc2lvblZUKCkgPSBkZWZhdWx0OwpAQCAtNzcsMTQgKzc2LDQgQEAgcHJpdmF0ZToKICAgICBS
ZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclBvb2xSZWY+IG1fcm90YXRpb25Qb29sOwogfTsKIAotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpSb3RhdGlv
blByb3BlcnRpZXMmIHJvdGF0aW9uMSwgY29uc3QgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90
YXRpb25Qcm9wZXJ0aWVzJiByb3RhdGlvbjIpCi17Ci0gICAgcmV0dXJuIHJvdGF0aW9uMS5mbGlw
WCA9PSByb3RhdGlvbjIuZmxpcFggJiYgcm90YXRpb24xLmZsaXBZID09IHJvdGF0aW9uMi5mbGlw
WSAmJiByb3RhdGlvbjEuYW5nbGUgPT0gcm90YXRpb24yLmFuZ2xlOwotfQotCi1pbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJvdGF0aW9uUHJvcGVy
dGllcyYgcm90YXRpb24xLCBjb25zdCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZUOjpSb3RhdGlvblBy
b3BlcnRpZXMmIHJvdGF0aW9uMikKLXsKLSAgICByZXR1cm4gIShyb3RhdGlvbjEgPT0gcm90YXRp
b24yKTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmgKaW5kZXgg
ZGYwNjQwNmRjYWI2OGEyOWFjMDI5NTY5MGEwYzllMzVmZTNlNjM1NS4uMDJlMmRhMTgzMmQ3Zjhm
OWU2MjhiODkyOWY2NWEwYzUzM2NhZDNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5oCkBAIC01MCw3ICs1MCw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAmbV9kaXNwbGF5
TGlzdCA9PSAmb3RoZXIubV9kaXNwbGF5TGlzdCAmJiBtX2N1cnNvciA9PSBvdGhlci5tX2N1cnNv
cjsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgdm9pZCBvcGVyYXRvcisrKCkgeyBhZHZh
bmNlKCk7IH0KIAogICAgIHN0cnVjdCBWYWx1ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA1
MTM1YmIwMmE0MDIyZGM1YmI0YzkwNDQ5MThjYWY3NTRkMDgyNzNjLi4xNDQ5ZTgyMjIyYWQwNTcy
NmU4YTNmMDMwMGUzODQ3NGUwYWM2Y2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTczLDcg
KzczLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUo
KSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJP
cGVyYXRpb24mKSBjb25zdCA9IDA7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCiAgICAgdmlydHVh
bCBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIC8q
ZnJvbSovLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmLCBib29sIC8qYmxlbmRUb1Bhc3N0aHJvdWdo
Ki8gPSBmYWxzZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCmluZGV4IDNjNzczMDA2ODVj
YmMyMDRkMGQ1MGQ0NWM5NTY2YThhNWU3MTFjZjkuLjc1YjAxMzlmODNhODhjZGUxMzY4NDY0OTQ1
NjVhOTc2NjQzZjVlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oCkBAIC0zNiw3ICszNiw2IEBA
IGNsYXNzIEZpbHRlck9wZXJhdGlvbnMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgY29u
c3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG90aGVyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgdm9pZCBjbGVhcigpIHsg
bV9vcGVyYXRpb25zLmNsZWFyKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmgKaW5kZXgg
Y2QzN2VlNDdmNWEzZTI4ZjQ3YzQ1YzYyOTJiYjlkZjMxZjEzMDNkMy4uY2IwMWZmYmM5ZGViOTc0
ZjFkZmFjMzExODdkYzc4NjViYzZhY2QyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgICAgIDIwMTAgRGlyayBTY2h1
bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00Nyw4ICs0Nyw4IEBA
IGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNs
YXNzIEludFBvaW50OwotY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEludFJlY3Q7CitjbGFzcyBJbnRT
aXplOwogY2xhc3MgUmVnaW9uOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKQEAgLTY4
LDIwICs2OCwxNSBAQCBwdWJsaWM6CiAKICAgICAvLyBSb3VuZHMgdGhlIG1hcHBlZCBwb2ludCB0
byB0aGUgbmVhcmVzdCBpbnRlZ2VyIHZhbHVlLgogICAgIFdFQkNPUkVfRVhQT1JUIEludFBvaW50
IG1hcFBvaW50KGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBG
bG9hdFBvaW50IG1hcFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKLQogICAgIFdFQkNP
UkVfRVhQT1JUIEludFNpemUgbWFwU2l6ZShjb25zdCBJbnRTaXplJikgY29uc3Q7Ci0KICAgICBX
RUJDT1JFX0VYUE9SVCBGbG9hdFNpemUgbWFwU2l6ZShjb25zdCBGbG9hdFNpemUmKSBjb25zdDsK
IAogICAgIC8vIFJvdW5kcyB0aGUgcmVzdWx0aW5nIG1hcHBlZCByZWN0YW5nbGUgb3V0LiBUaGlz
IGlzIGhlbHBmdWwgZm9yIGJvdW5kaW5nCiAgICAgLy8gYm94IGNvbXB1dGF0aW9ucyBidXQgbWF5
IG5vdCBiZSB3aGF0IGlzIHdhbnRlZCBpbiBvdGhlciBjb250ZXh0cy4KICAgICBXRUJDT1JFX0VY
UE9SVCBJbnRSZWN0IG1hcFJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0OwotCiAgICAgV0VCQ09S
RV9FWFBPUlQgRmxvYXRSZWN0IG1hcFJlY3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgRmxvYXRRdWFkIG1hcFF1YWQoY29uc3QgRmxvYXRRdWFkJikgY29uc3Q7
Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBSZWdpb24gbWFwUmVnaW9uKGNvbnN0IFJlZ2lvbiYpIGNv
bnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0lkZW50aXR5KCkgY29uc3Q7CkBAIC0x
MzQsMTIgKzEyOSwxMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV90cmFuc2Zv
cm1bMF0gPT0gMSAmJiBtX3RyYW5zZm9ybVsxXSA9PSAwICYmIG1fdHJhbnNmb3JtWzJdID09IDAg
JiYgbV90cmFuc2Zvcm1bM10gPT0gMTsKICAgICB9Ci0gICAgCisKICAgICBib29sIGlzSWRlbnRp
dHlPclRyYW5zbGF0aW9uT3JGbGlwcGVkKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBt
X3RyYW5zZm9ybVswXSA9PSAxICYmIG1fdHJhbnNmb3JtWzFdID09IDAgJiYgbV90cmFuc2Zvcm1b
Ml0gPT0gMCAmJiAobV90cmFuc2Zvcm1bM10gPT0gMSB8fCBtX3RyYW5zZm9ybVszXSA9PSAtMSk7
CiAgICAgfQotICAgIAorCiAgICAgYm9vbCBpc1JvdGF0ZU9yU2hlYXIoKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fdHJhbnNmb3JtWzFdIHx8IG1fdHJhbnNmb3JtWzJdOwpAQCAtMTUw
LDI0ICsxNDUsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKG1fdHJhbnNmb3JtWzFdID09
IDAgJiYgbV90cmFuc2Zvcm1bMl0gPT0gMCkgfHwgKG1fdHJhbnNmb3JtWzBdID09IDAgJiYgbV90
cmFuc2Zvcm1bM10gPT0gMCk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09IChjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIG0yKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIChtX3RyYW5z
Zm9ybVswXSA9PSBtMi5tX3RyYW5zZm9ybVswXQotICAgICAgICAgICAgICYmIG1fdHJhbnNmb3Jt
WzFdID09IG0yLm1fdHJhbnNmb3JtWzFdCi0gICAgICAgICAgICAgJiYgbV90cmFuc2Zvcm1bMl0g
PT0gbTIubV90cmFuc2Zvcm1bMl0KLSAgICAgICAgICAgICAmJiBtX3RyYW5zZm9ybVszXSA9PSBt
Mi5tX3RyYW5zZm9ybVszXQotICAgICAgICAgICAgICYmIG1fdHJhbnNmb3JtWzRdID09IG0yLm1f
dHJhbnNmb3JtWzRdCi0gICAgICAgICAgICAgJiYgbV90cmFuc2Zvcm1bNV0gPT0gbTIubV90cmFu
c2Zvcm1bNV0pOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdCA9IGRlZmF1bHQ7CiAK
ICAgICAvLyAqdGhpcyA9ICp0aGlzICogdCAoaS5lLiwgYSBtdWx0UmlnaHQpCiAgICAgQWZmaW5l
VHJhbnNmb3JtJiBvcGVyYXRvcio9KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBtdWx0aXBseSh0KTsKICAgICB9Ci0gICAgCisKICAgICAvLyByZXN1bHQg
PSAqdGhpcyAqIHQgKGkuZS4sIGEgbXVsdFJpZ2h0KQogICAgIEFmZmluZVRyYW5zZm9ybSBvcGVy
YXRvciooY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0KSBjb25zdAogICAgIHsKQEAgLTE4NiwxMyAr
MTcxLDEzIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBkZWNvbXBvc2UgdGhlIG1hdHJpeCBp
bnRvIGl0cyBjb21wb25lbnQgcGFydHMKLSAgICB0eXBlZGVmIHN0cnVjdCB7CisgICAgc3RydWN0
IERlY29tcG9zZWRUeXBlIHsKICAgICAgICAgZG91YmxlIHNjYWxlWCwgc2NhbGVZOwogICAgICAg
ICBkb3VibGUgYW5nbGU7CiAgICAgICAgIGRvdWJsZSByZW1haW5kZXJBLCByZW1haW5kZXJCLCBy
ZW1haW5kZXJDLCByZW1haW5kZXJEOwogICAgICAgICBkb3VibGUgdHJhbnNsYXRlWCwgdHJhbnNs
YXRlWTsKLSAgICB9IERlY29tcG9zZWRUeXBlOwotICAgIAorICAgIH07CisKICAgICBib29sIGRl
Y29tcG9zZShEZWNvbXBvc2VkVHlwZSYpIGNvbnN0OwogICAgIHZvaWQgcmVjb21wb3NlKGNvbnN0
IERlY29tcG9zZWRUeXBlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1P
cGVyYXRpb24uaAppbmRleCAzZmM1NjJhMGNiZWIwOGVjNzU4NzdiOTE3ZmQ5NGE0OWY0M2VmZDI5
Li4wODYyMGY5MjBhN2VmYmViYjcyYTM0OGYzYjhkMDkxMGIzZjEwYTQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNm
b3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC01Miw3ICs1Miw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIGlzUmVwcmVzZW50YWJsZUluMkQoKSBjb25zdCBmaW5hbDsKIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbiYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIG9wZXJhdG9yPT0oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9uJj4ob3RoZXIpKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRyaXgz
RFRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0ID0gZGVmYXVsdDsKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0
U2l6ZSYpIGNvbnN0IG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVy
YXRpb24uaAppbmRleCA2ZWM4OTdiNjA3YjE3N2Y3MDE2NjdkMTdkNzNiODA3ZmIxOTA1NGIxLi4w
ZWJkOWM2Zjg5YTQyYWY3MmY1ZTMxOTZmMTQ1OGM3ZDY2NWI0NTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9w
ZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9y
bXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGlzSWRlbnRpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2EgPT0gMSAm
JiBtX2IgPT0gMCAmJiBtX2MgPT0gMCAmJiBtX2QgPT0gMSAmJiBtX2UgPT0gMCAmJiBtX2YgPT0g
MDsgfQogICAgIGJvb2wgaXNBZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIWlzSWRlbnRpdHkoKTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9wZXJhdG9y
PT0oc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJj4ob3RoZXIpKTsgfQorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24mIG90aGVyKSBj
b25zdCA9IGRlZmF1bHQ7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBhcHBseShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdCBvdmVycmlkZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVj
dGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IDYwMzg3
ZTFlOTRlNmZiM2MxYTJjYzllM2I2NGViZTQ4ZDk3MDA5N2EuLmIyZDY5MzY5YzA3NmNiNDQyNzVl
ZTQ5M2FjZDJiMDYyYjkzN2IwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZl
VHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IGlzQWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFp
c0lkZW50aXR5KCk7IH0KICAgICBib29sIGlzUmVwcmVzZW50YWJsZUluMkQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBlcnNwZWN0
aXZlVHJhbnNmb3JtT3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3BlcmF0b3I9PShz
dGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mPihvdGhlcikpOyB9CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uJiBvdGhlcikg
Y29uc3QgPSBkZWZhdWx0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVy
YXRpb24mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGZsb2F0
VmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgK
aW5kZXggNDRjMDg3MjkzNjhhN2YyODhiZTVlNDNlNDAyMWFhM2EwNjc5NjkxOC4uMGI0M2VkMjMx
MzU4MzhiMzc2MWIzNDU5ZjhlYTkyM2IxNjRhM2QxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICBkb3Vi
bGUgeigpIGNvbnN0IHsgcmV0dXJuIG1fejsgfQogICAgIGRvdWJsZSBhbmdsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYW5nbGU7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSb3RhdGVUcmFu
c2Zvcm1PcGVyYXRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvcGVyYXRvcj09KHN0YXRpY19j
YXN0PGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiY+KG90aGVyKSk7IH0KKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uJiBvdGhlcikgY29uc3QgPSBkZWZh
dWx0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRy
YW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgY29uc3QgQmxlbmRpbmdDb250ZXh0JiwgYm9vbCBibGVu
ZFRvSWRlbnRpdHkgPSBmYWxzZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb24u
aAppbmRleCBmYTU5Y2RiMGEwMDMxNjlhNjhmYzY2ZDFhYzAzZjhhYjljYmUyZjQ1Li5lYWIxN2E2
ODI3YjFhNWExMmVkN2ExNzE0NDQ1ZWQ5MGZhY2I4MjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
T3BlcmF0aW9uLmgKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmPFRy
YW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25zdCA9IDA7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvKTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBjb25zdCA9
IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmgKaW5kZXggY2Y1OWExOWU4MjYx
YTQ0Njc1ZmIyNzVmMjUwYmExMmVmOGQ2M2NlOC4uOGM0MzEzYjk0ZWE2YWNhZTYxYzMxODhiODc0
YzJiZjFiZDAxODM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmgKQEAgLTM4
LDExICszOCw3IEBAIGNsYXNzIFRyYW5zZm9ybU9wZXJhdGlvbnMgewogcHVibGljOgogICAgIGV4
cGxpY2l0IFRyYW5zZm9ybU9wZXJhdGlvbnMoYm9vbCBtYWtlSWRlbnRpdHkgPSBmYWxzZSk7CiAg
ICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIG8pIGNv
bnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJikgY29uc3Q7CiAgICAgCiAg
ICAgdm9pZCBhcHBseShjb25zdCBGbG9hdFNpemUmIHN6LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXgg
Yzk1MTE3N2EzMTBiNzYwNGMyMTU5Y2Q2ZTI0OTdmZDhmMjU3YjgzYi4uNWYyMTYzOWE2OTI1NmQ2
ODBiMDQzMGM3ZTA1Y2U2ZTk1MmU3OGM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguaApAQCAtMjkxLDEzICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGRvdWJsZSBhbmds
ZTsKICAgICAgICAgZG91YmxlIG0xMSwgbTEyLCBtMjEsIG0yMjsKICAgICAgICAgCi0gICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBEZWNvbXBvc2VkMlR5cGUmIG90aGVyKSBjb25zdAotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc2NhbGVYID09IG90aGVyLnNjYWxlWCAmJiBzY2Fs
ZVkgPT0gb3RoZXIuc2NhbGVZCi0gICAgICAgICAgICAgICAgJiYgdHJhbnNsYXRlWCA9PSBvdGhl
ci50cmFuc2xhdGVYICYmIHRyYW5zbGF0ZVkgPT0gb3RoZXIudHJhbnNsYXRlWQotICAgICAgICAg
ICAgICAgICYmIGFuZ2xlID09IG90aGVyLmFuZ2xlCi0gICAgICAgICAgICAgICAgJiYgbTExID09
IG90aGVyLm0xMSAmJiBtMTIgPT0gb3RoZXIubTEyICYmIG0yMSA9PSBvdGhlci5tMjEgJiYgbTIy
ID09IG90aGVyLm0yMjsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RGVjb21wb3NlZDJUeXBlJikgY29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAKICAgICBzdHJ1Y3Qg
RGVjb21wb3NlZDRUeXBlIHsKQEAgLTMwNywxNCArMzAxLDcgQEAgcHVibGljOgogICAgICAgICBk
b3VibGUgdHJhbnNsYXRlWCwgdHJhbnNsYXRlWSwgdHJhbnNsYXRlWjsKICAgICAgICAgZG91Ymxl
IHBlcnNwZWN0aXZlWCwgcGVyc3BlY3RpdmVZLCBwZXJzcGVjdGl2ZVosIHBlcnNwZWN0aXZlVzsK
IAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGVjb21wb3NlZDRUeXBlJiBvdGhlcikg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHNjYWxlWCA9PSBvdGhlci5zY2Fs
ZVggJiYgc2NhbGVZID09IG90aGVyLnNjYWxlWSAmJiBzY2FsZVogPT0gb3RoZXIuc2NhbGVaCi0g
ICAgICAgICAgICAgICAgJiYgc2tld1hZID09IG90aGVyLnNrZXdYWSAmJiBza2V3WFogPT0gb3Ro
ZXIuc2tld1haICYmIHNrZXdZWiA9PSBvdGhlci5za2V3WVoKLSAgICAgICAgICAgICAgICAmJiBx
dWF0ZXJuaW9uWCA9PSBvdGhlci5xdWF0ZXJuaW9uWCAmJiBxdWF0ZXJuaW9uWSA9PSBvdGhlci5x
dWF0ZXJuaW9uWSAmJiBxdWF0ZXJuaW9uWiA9PSBvdGhlci5xdWF0ZXJuaW9uWiAmJiBxdWF0ZXJu
aW9uVyA9PSBvdGhlci5xdWF0ZXJuaW9uVwotICAgICAgICAgICAgICAgICYmIHRyYW5zbGF0ZVgg
PT0gb3RoZXIudHJhbnNsYXRlWCAmJiB0cmFuc2xhdGVZID09IG90aGVyLnRyYW5zbGF0ZVkgJiYg
dHJhbnNsYXRlWiA9PSBvdGhlci50cmFuc2xhdGVaCi0gICAgICAgICAgICAgICAgJiYgcGVyc3Bl
Y3RpdmVYID09IG90aGVyLnBlcnNwZWN0aXZlWCAmJiBwZXJzcGVjdGl2ZVkgPT0gb3RoZXIucGVy
c3BlY3RpdmVZICYmIHBlcnNwZWN0aXZlWiA9PSBvdGhlci5wZXJzcGVjdGl2ZVogJiYgcGVyc3Bl
Y3RpdmVXID09IG90aGVyLnBlcnNwZWN0aXZlVzsKLSAgICAgICAgfQorICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRGVjb21wb3NlZDRUeXBlJikgY29uc3QgPSBkZWZhdWx0OwogICAgIH07
CiAgICAgCiAgICAgYm9vbCBkZWNvbXBvc2UyKERlY29tcG9zZWQyVHlwZSYpIGNvbnN0OwpAQCAt
MzU4LDggKzM0NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX21hdHJpeFszXVszXSA9
PSBtMi5tX21hdHJpeFszXVszXSk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KLQogICAgIC8vICp0aGlzID0gKnRoaXMgKiB0CiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG9wZXJhdG9yKj0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tCmluZGV4IGI1
MmM4NjE4NmYwYmIwNmZkMzIzZWQyOWY4MmQ3N2M5NThmZTI2MDguLjg5YzI0ODQ2OTY2MDIwODhi
ODA5M2RjMjc4ZmVlNzhhZDg1Yjc1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViR0xCbG9ja2xpc3QubW0KQEAgLTM1LDQzICszNSwxMSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgT1NCdWlsZEluZm8gewotICAgIE9TQnVpbGRJbmZvKCkKLSAgICAgICAg
OiBtYWpvcigwKQotICAgICAgICAsIG1pbm9yKDApCi0gICAgICAgICwgYnVpbGQoMCkKLSAgICB7
Ci0gICAgfQotCi0gICAgT1NCdWlsZEluZm8oaW50IG1ham9yLCBpbnQgbWlub3IsIGludCBidWls
ZCkKLSAgICAgICAgOiBtYWpvcihtYWpvcikKLSAgICAgICAgLCBtaW5vcihtaW5vcikKLSAgICAg
ICAgLCBidWlsZChidWlsZCkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtYWpv
ciA9PSBvdGhlci5tYWpvciAmJiBtaW5vciA9PSBvdGhlci5taW5vciAmJiBidWlsZCA9PSBvdGhl
ci5idWlsZDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBPU0J1aWxkSW5mbyYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1pbm9y
LCBidWlsZCkgPiBzdGQ6OnRpZShvdGhlci5tYWpvciwgb3RoZXIubWlub3IsIG90aGVyLmJ1aWxk
KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgT1NCdWlsZEluZm8mIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVp
bGQpIDw9IHN0ZDo6dGllKG90aGVyLm1ham9yLCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwot
ICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IE9TQnVpbGRJbmZvJiBvdGhlcikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwgbWlub3IsIGJ1aWxkKSA8
IHN0ZDo6dGllKG90aGVyLm1ham9yLCBvdGhlci5taW5vciwgb3RoZXIuYnVpbGQpOwotICAgIH0K
KyAgICBpbnQgbWFqb3IgeyAwIH07IC8vIFJlcHJlc2VudHMgdGhlIDEzIGluIDEzQzY0LgorICAg
IGludCBtaW5vciB7IDAgfTsgLy8gUmVwcmVzZW50cyB0aGUgQyBpbiAxM0M2NCAoYXMgYSBudW1i
ZXIgd2hlcmUgQSA9PSAxLCBpLmUuIDMpLgorICAgIGludCBidWlsZCB7IDAgfTsgLy8gUmVwcmVz
ZW50cyB0aGUgNjQgaW4gMTNDNjQuCiAKLSAgICBpbnQgbWFqb3I7IC8vIFJlcHJlc2VudHMgdGhl
IDEzIGluIDEzQzY0LgotICAgIGludCBtaW5vcjsgLy8gUmVwcmVzZW50cyB0aGUgQyBpbiAxM0M2
NCAoYXMgYSBudW1iZXIgd2hlcmUgQSA9PSAxLCBpLmUuIDMpLgotICAgIGludCBidWlsZDsgLy8g
UmVwcmVzZW50cyB0aGUgNjQgaW4gMTNDNjQuCisgICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4o
T1NCdWlsZEluZm8sIE9TQnVpbGRJbmZvKSA9IGRlZmF1bHQ7CiB9OwogCiBzdGF0aWMgT1NCdWls
ZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoTlNTdHJpbmcgKmJ1aWxkU3RyaW5nKQpA
QCAtODMsNyArNTEsNyBAQCBzdGF0aWMgT1NCdWlsZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRT
dHJpbmcoTlNTdHJpbmcgKmJ1aWxkU3RyaW5nKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgTlNM
b2coQCJXZWJHTEJsb2NrbGlzdCBjb3VsZCBub3QgcGFyc2UgT1NCdWlsZCBlbnRyeTogJUAiLCBi
dWlsZFN0cmluZyk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIE9TQnVpbGRJbmZvKCk7CisgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgTlNUZXh0Q2hlY2tpbmdSZXN1bHQgKm1hdGNo
UmVzdWx0ID0gW21hdGNoZXMgb2JqZWN0QXRJbmRleDowXTsKQEAgLTkyLDE0ICs2MCwxNCBAQCBz
dGF0aWMgT1NCdWlsZEluZm8gYnVpbGRJbmZvRnJvbU9TQnVpbGRTdHJpbmcoTlNTdHJpbmcgKmJ1
aWxkU3RyaW5nKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgTlNMb2coQCJXZWJHTEJsb2NrbGlz
dCBjb3VsZCBub3QgcGFyc2UgT1NCdWlsZCBlbnRyeTogJUAiLCBidWlsZFN0cmluZyk7CiAjZW5k
aWYKLSAgICAgICAgcmV0dXJuIE9TQnVpbGRJbmZvKCk7CisgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogCiAgICAgaW50IG1ham9yVmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3RyaW5nV2l0
aFJhbmdlOlttYXRjaFJlc3VsdCByYW5nZUF0SW5kZXg6MV1dIGludFZhbHVlXTsKICAgICBpbnQg
bWlub3JWZXJzaW9uID0gW1tidWlsZFN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6W21hdGNoUmVz
dWx0IHJhbmdlQXRJbmRleDoyXV0gY2hhcmFjdGVyQXRJbmRleDowXSAtICdBJyArIDE7CiAgICAg
aW50IGJ1aWxkVmVyc2lvbiA9IFtbYnVpbGRTdHJpbmcgc3Vic3RyaW5nV2l0aFJhbmdlOlttYXRj
aFJlc3VsdCByYW5nZUF0SW5kZXg6M11dIGludFZhbHVlXTsKIAotICAgIHJldHVybiBPU0J1aWxk
SW5mbyhtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbiwgYnVpbGRWZXJzaW9uKTsKKyAgICByZXR1
cm4geyBtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbiwgYnVpbGRWZXJzaW9uIH07CiB9CiAKIGJv
b2wgV2ViR0xCbG9ja2xpc3Q6OnNob3VsZEJsb2NrV2ViR0woKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCmluZGV4IGJh
MDI4ZjRkYmRmZDE5ZWIxMmE2YzdmZWM2Y2EwNDQ4Njk2NTE0MDkuLjI3YjgxODdmNDk5YzBlYjEw
YjFkMTNmZjIyZGE0Y2Y1OWIxYTZiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKQEAgLTc4Niw3ICs3ODYsNiBA
QCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRl
cmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7IH0K
LSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGNvbnN0
IEZsYXR0ZW5lZENvbnN0cmFpbnQqIG1fY29uc3RyYWludCB7IG51bGxwdHIgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFy
ZWRVbml0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1
ZGlvU2hhcmVkVW5pdC5oCmluZGV4IDI1YjJiZmQ1Mzg0NTY4MzRiMjJlYjE2NzQ0NWVkZTBjN2E2
YjM5MGYuLjE1MWY2MTRjYWQ5MDI1ZWI5MjRmMDliMWE4YTcwY2I4YWNiNWVhMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFy
ZWRVbml0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jh
c2VBdWRpb1NoYXJlZFVuaXQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+
CisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWxCYXNlLmgKaW5kZXggYzkwOWU1ZTExMmUxZmFmMjdkYmQx
ZDA1MWJiODA0ZDJjNWZmODk3Ny4uYmNkMTdiNDJhNzBkZTQyM2Y1YjU3Y2JkYjkwYzUyM2RmYWE3
ZmZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bEJhc2UuaApAQCAtNjcsNyArNjcsNiBAQCBwcml2YXRlOgogfTsKIAogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDcmVkZW50aWFsJiBhLCBjb25zdCBDcmVkZW50aWFsJiBiKSB7IHJldHVy
biBDcmVkZW50aWFsQmFzZTo6Y29tcGFyZShhLCBiKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBDcmVkZW50aWFsJiBhLCBjb25zdCBDcmVkZW50aWFsJiBiKSB7IHJldHVybiAhKGEg
PT0gYik7IH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IGU5ZDM0NDNmOGI1YzY4MjQ0NjY1NmMx
ODgwNTY1N2NjMjlkMmQ4MzcuLjAxNDFjYjcwM2UzOWIyNjA3YTg2NDI5YTdhNGUwNGQzMzE0OGU5
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKQEAgLTE2
MSwxMCArMTYxLDYgQEAgc3RydWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgICAgICAgICByZXR1
cm4gc3RkOjpnZXQ8MT4oZGF0YSkgPT0gc3RkOjpnZXQ8MT4ob3RoZXIuZGF0YSk7CiAgICAgICAg
IHJldHVybiBzdGQ6OmdldDwyPihkYXRhKSA9PSBzdGQ6OmdldDwyPihvdGhlci5kYXRhKTsKICAg
ICB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvcm1EYXRhRWxlbWVudCYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQogICAg
IAogICAgIERhdGEgZGF0YTsKIH07CkBAIC0yNzksMTEgKzI3NSw2IEBAIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRm9ybURhdGEmIGEsIGNvbnN0IEZvcm1EYXRhJiBiKQogICAgIHJldHVy
biBhLmVsZW1lbnRzKCkgPT0gYi5lbGVtZW50cygpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEZvcm1EYXRhJiBhLCBjb25zdCBGb3JtRGF0YSYgYikKLXsKLSAgICByZXR1cm4g
IShhID09IGIpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogdm9pZCBGb3JtRGF0
YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGZhMDM3ZmNmOTY4MTczYzBj
YTkzZDQ3MWMzZGQ0MWRjNDg3MGIwY2IuLjdmNjljOThjZWExMzExNjgyZmYxZjdjNmRjNWIxYmY2
NzFiN2Y4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRU
UEhlYWRlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhl
YWRlck1hcC5oCkBAIC05OCw3ICs5OCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIVFRQSGVh
ZGVyTWFwQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIVFRQSGVhZGVyTWFwQ29uc3RJ
dGVyYXRvciYgb3RoZXIpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2Nv
bW1vbkhlYWRlcnNJdCA9PSBvdGhlci5tX2NvbW1vbkhlYWRlcnNJdCAmJiBtX3VuY29tbW9uSGVh
ZGVyc0l0ID09IG90aGVyLm1fdW5jb21tb25IZWFkZXJzSXQ7CkBAIC0yMDEsMTEgKzIwMCw2IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgZnJpZW5kIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBIVFRQSGVhZGVyTWFwJiBhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBi
KQotICAgIHsKLSAgICAgICAgcmV0dXJuICEoYSA9PSBiKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBs
YXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBIVFRQSGVhZGVyTWFwJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmgKaW5kZXggZDFkZTk2YWUwNjAw
NTc0ZjA1MjVjMGY0ZjViZThlYWQ2ZDJiOGE2Mi4uZmMwNzBlYWM1Njc5ZWU2ZTc0ODBiMmFkNmE4
MTVlMGI5Y2Q3ZDhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmgKQEAgLTk5LDcgKzk5LDYgQEAgcHJpdmF0ZToKIH07
CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvdGVjdGlvblNwYWNlJiBhLCBjb25z
dCBQcm90ZWN0aW9uU3BhY2UmIGIpIHsgcmV0dXJuIFByb3RlY3Rpb25TcGFjZUJhc2U6OmNvbXBh
cmUoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvdGVjdGlvblNwYWNl
JiBhLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogICAg
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggNDg4ZGViYzE0M2Q2M2Y0NTdl
OGQzOGU5YzZkYzIzYTlkMjBiYTgxNi4uMmJmODIzN2Y4MDc1NzM0NWRhY2RlN2FhMjJkZGYxMmQ0
NjY0MWIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VFcnJvckJhc2UuaApAQCAtMTA3LDcgKzEwNyw2IEBAIHByaXZhdGU6CiBXRUJDT1JFX0VY
UE9SVCBSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgVVJMJik7CiAKIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgYikgeyByZXR1cm4gUmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUoYSwgYik7IH0KLWlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VF
cnJvciYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuaAppbmRleCA0MGMwMDhjYWRmZDVlYTc1NTM3ZDBjNTc5ODAxMWYwYTQ0MjdjNDNi
Li4zZWNmODFlM2UxZWM1M2EzNmJmOGMxNGM5NzkzMjAwZmM4OTQ2ZTg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApA
QCAtMjc0LDcgKzI3NCw2IEBAIHByaXZhdGU6CiBib29sIGVxdWFsSWdub3JpbmdIZWFkZXJGaWVs
ZHMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdEJhc2Um
KTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGEsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgYikgeyByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZXF1
YWwoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oUmVzb3VyY2VSZXF1ZXN0JiBhLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiBXRUJDT1JF
X0VYUE9SVCB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJI
b3N0KCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya0xvYWRNZXRyaWNzLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KaW5k
ZXggNjMxMmUwNjg0Mjk3YjQzYzMzMTFlNDczOWI2ODFhYjQ0NWMzMzY3Mi4uYmY1Yzc0ZjRjZmRj
YTM3NWUzYmU0MjMyZTQ3NWMyMmRhZmZjZWNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0KQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTlNVUkxDb25uZWN0aW9uU1BJLmg+CisjaW1wb3J0IDx3dGYvV2FsbFRpbWUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9CaWRpUmVzb2x2ZXIuaAppbmRleCA2OWQ5ZTQ2ZTA4NjU2OGRjOTA3YWI1ODRkYzQyNjY4NTcw
NWZkY2YwLi44Mzk4MjAyNGU0YTRkMjVhMmRmODlmZTg5NDdlYjMwODI4ZjVjMzc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKQEAgLTEyMywxMSArMTIz
LDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCaWRpU3RhdHVzJiBzdGF0dXMxLCBj
b25zdCBCaWRpU3RhdHVzJiBzdGF0dXMyKQogICAgIHJldHVybiBzdGF0dXMxLmVvciA9PSBzdGF0
dXMyLmVvciAmJiBzdGF0dXMxLmxhc3QgPT0gc3RhdHVzMi5sYXN0ICYmIHN0YXR1czEubGFzdFN0
cm9uZyA9PSBzdGF0dXMyLmxhc3RTdHJvbmcgJiYgKihzdGF0dXMxLmNvbnRleHQpID09ICooc3Rh
dHVzMi5jb250ZXh0KTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCaWRpU3Rh
dHVzJiBzdGF0dXMxLCBjb25zdCBCaWRpU3RhdHVzJiBzdGF0dXMyKQotewotICAgIHJldHVybiAh
KHN0YXR1czEgPT0gc3RhdHVzMik7Ci19Ci0KIHN0cnVjdCBCaWRpQ2hhcmFjdGVyUnVuIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmgKaW5kZXggMDJmNDQ4MjAwYzk0
NGM0YWUxNGYxMjk4YzM4YjI5MTE4NzM1ZDEzOS4uNTBiNmQ1YTJmZjcwZjI4ZTNjYzdhN2YzMzAx
Yjg0OWE0ZjdhOTYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9T
dHJpbmdXaXRoRGlyZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9T
dHJpbmdXaXRoRGlyZWN0aW9uLmgKQEAgLTQ4LDE4ICs0OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHN0cnVjdCBTdHJpbmdXaXRoRGlyZWN0aW9uIHsKICAgICBTdHJpbmcgc3RyaW5nOwogICAg
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uIHsgVGV4dERpcmVjdGlvbjo6TFRSIH07CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKSBjb25zdCA9IGRlZmF1bHQ7
CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24m
IGEsIGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIGIpCi17Ci0gICAgcmV0dXJuIGEuc3RyaW5n
ID09IGIuc3RyaW5nICYmIGEuZGlyZWN0aW9uID09IGIuZGlyZWN0aW9uOwotfQotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIGEsIGNvbnN0IFN0cmlu
Z1dpdGhEaXJlY3Rpb24mIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogaW5saW5l
IFN0cmluZ1dpdGhEaXJlY3Rpb24gdHJ1bmNhdGVGcm9tRW5kKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mIHN0cmluZywgdW5zaWduZWQgbWF4TGVuZ3RoKQogewogICAgIHJldHVybiB7IHN0cmlu
Zy5zdHJpbmcubGVmdChtYXhMZW5ndGgpLCBzdHJpbmcuZGlyZWN0aW9uIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaAppbmRleCAzYTM1OTIyNGYwZGI3MGM5YTc3OTM5
OThlZmYxMDQ4MWZjNWQ1MzRmLi42ZGFmYTFjZDljZjZhMTFkN2NlMzAzYTdlYjg4YzczZWM4ZGM1
MWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmgKQEAgLTIwOCwy
NiArMjA4LDcgQEAgc3RydWN0IEZvbnRWYXJpYW50U2V0dGluZ3MgewogICAgICAgICAgICAgJiYg
ZWFzdEFzaWFuUnVieSA9PSBGb250VmFyaWFudEVhc3RBc2lhblJ1Ynk6Ok5vcm1hbDsKICAgICB9
CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY29tbW9uTGlnYXR1cmVzID09IG90aGVyLmNv
bW1vbkxpZ2F0dXJlcwotICAgICAgICAgICAgJiYgZGlzY3JldGlvbmFyeUxpZ2F0dXJlcyA9PSBv
dGhlci5kaXNjcmV0aW9uYXJ5TGlnYXR1cmVzCi0gICAgICAgICAgICAmJiBoaXN0b3JpY2FsTGln
YXR1cmVzID09IG90aGVyLmhpc3RvcmljYWxMaWdhdHVyZXMKLSAgICAgICAgICAgICYmIGNvbnRl
eHR1YWxBbHRlcm5hdGVzID09IG90aGVyLmNvbnRleHR1YWxBbHRlcm5hdGVzCi0gICAgICAgICAg
ICAmJiBwb3NpdGlvbiA9PSBvdGhlci5wb3NpdGlvbgotICAgICAgICAgICAgJiYgY2FwcyA9PSBv
dGhlci5jYXBzCi0gICAgICAgICAgICAmJiBudW1lcmljRmlndXJlID09IG90aGVyLm51bWVyaWNG
aWd1cmUKLSAgICAgICAgICAgICYmIG51bWVyaWNTcGFjaW5nID09IG90aGVyLm51bWVyaWNTcGFj
aW5nCi0gICAgICAgICAgICAmJiBudW1lcmljRnJhY3Rpb24gPT0gb3RoZXIubnVtZXJpY0ZyYWN0
aW9uCi0gICAgICAgICAgICAmJiBudW1lcmljT3JkaW5hbCA9PSBvdGhlci5udW1lcmljT3JkaW5h
bAotICAgICAgICAgICAgJiYgbnVtZXJpY1NsYXNoZWRaZXJvID09IG90aGVyLm51bWVyaWNTbGFz
aGVkWmVybwotICAgICAgICAgICAgJiYgYWx0ZXJuYXRlcyA9PSBvdGhlci5hbHRlcm5hdGVzCi0g
ICAgICAgICAgICAmJiBlYXN0QXNpYW5WYXJpYW50ID09IG90aGVyLmVhc3RBc2lhblZhcmlhbnQK
LSAgICAgICAgICAgICYmIGVhc3RBc2lhbldpZHRoID09IG90aGVyLmVhc3RBc2lhbldpZHRoCi0g
ICAgICAgICAgICAmJiBlYXN0QXNpYW5SdWJ5ID09IG90aGVyLmVhc3RBc2lhblJ1Ynk7Ci0gICAg
fQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBGb250VmFyaWFudFNldHRpbmdzJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgdW5z
aWduZWQgdW5pcXVlVmFsdWUoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5E
YXRhLmgKaW5kZXggYjdmMzk5ZTE5Mjg4YjgwM2QwOTI0Nzc0M2Q0NTY0ZDdkMjVkYzRlZi4uN2Qw
MTA3Mjk0NDY0NmI1ZjllMmQ4NGViZWRmMDUwZDEyYzlhNGRjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5EYXRhLmgKQEAgLTUzLDEzICs1Myw5IEBAIHN0cnVjdCBNaW1lQ2xhc3NJbmZvIHsK
ICAgICBTdHJpbmcgdHlwZTsKICAgICBTdHJpbmcgZGVzYzsKICAgICBWZWN0b3I8U3RyaW5nPiBl
eHRlbnNpb25zOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNaW1lQ2xhc3NJbmZvJikgY29u
c3QgPSBkZWZhdWx0OwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNaW1lQ2xh
c3NJbmZvJiBhLCBjb25zdCBNaW1lQ2xhc3NJbmZvJiBiKQotewotICAgIHJldHVybiBhLnR5cGUg
PT0gYi50eXBlICYmIGEuZGVzYyA9PSBiLmRlc2MgJiYgYS5leHRlbnNpb25zID09IGIuZXh0ZW5z
aW9uczsKLX0KLQogc3RydWN0IFBsdWdpbkluZm8gewogICAgIFN0cmluZyBuYW1lOwogICAgIFN0
cmluZyBmaWxlOwpAQCAtNzMsMTYgKzY5LDkgQEAgc3RydWN0IFBsdWdpbkluZm8gewogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBTdHJpbmcgdmVyc2lvblN0cmluZzsKICNlbmRpZgotfTsKIAotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShQbHVnaW5JbmZvJiBhLCBQbHVnaW5JbmZvJiBiKQotewotICAg
IGJvb2wgcmVzdWx0ID0gYS5uYW1lID09IGIubmFtZSAmJiBhLmZpbGUgPT0gYi5maWxlICYmIGEu
ZGVzYyA9PSBiLmRlc2MgJiYgYS5taW1lcyA9PSBiLm1pbWVzICYmIGEuaXNBcHBsaWNhdGlvblBs
dWdpbiA9PSBiLmlzQXBwbGljYXRpb25QbHVnaW4gJiYgYS5jbGllbnRMb2FkUG9saWN5ID09IGIu
Y2xpZW50TG9hZFBvbGljeSAmJiBhLmJ1bmRsZUlkZW50aWZpZXIgPT0gYi5idW5kbGVJZGVudGlm
aWVyOwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICByZXN1bHQgPSByZXN1bHQgJiYgYS52ZXJzaW9u
U3RyaW5nID09IGIudmVyc2lvblN0cmluZzsKLSNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7Ci19
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBsdWdpbkluZm8mKSBjb25zdCA9IGRlZmF1bHQ7
Cit9OwogCiBzdHJ1Y3QgU3VwcG9ydGVkUGx1Z2luSWRlbnRpZmllciB7CiAgICAgU3RyaW5nIG1h
dGNoaW5nRG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU1Zh
bHVlS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTVmFsdWVLZXkuaAppbmRleCA3
NTI2MTc3MDhmMTZmODkyMmZkMDBhZTk3OTFiOWNkYWY2MDMwOWFlLi40NzU5OWM3ZWI4Mzc2ZmUw
OTlmYzJiYTE5YTZiNWRmYTNmZTVkM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTVmFsdWVLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTVmFs
dWVLZXkuaApAQCAtMzAsMjIgKzMwLDE4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBDU1NWYWx1ZUtleSB7Ci0KICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q1NTVmFsdWVLZXk+IGRl
Y29kZShEZWNvZGVyJik7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTVmFsdWVLZXkm
KSBjb25zdCA9IGRlZmF1bHQ7CisKICAgICB1bnNpZ25lZCBjc3NWYWx1ZUlEOwogICAgIGJvb2wg
dXNlRGFya0FwcGVhcmFuY2U7CiAgICAgYm9vbCB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZl
bDsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTVmFsdWVLZXkmIGEsIGNv
bnN0IENTU1ZhbHVlS2V5JiBiKQotewotICAgIHJldHVybiBhLmNzc1ZhbHVlSUQgPT0gYi5jc3NW
YWx1ZUlEICYmIGEudXNlRGFya0FwcGVhcmFuY2UgPT0gYi51c2VEYXJrQXBwZWFyYW5jZSAmJiBh
LnVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsID09IGIudXNlRWxldmF0ZWRVc2VySW50ZXJm
YWNlTGV2ZWw7Ci19Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIENTU1ZhbHVlS2V5
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DbGlwUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Ns
aXBSZWN0LmgKaW5kZXggNTJhYmI2NzFkYTVhNjA2M2M5NzA4Y2Y1MjQ3MjRkMzJlZTZlY2QzMy4u
NjMxMTMxY2U2MzUxZTE0NGVjZTQ2ODM3NTRlNWZiMWE1OWEzYTRiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NsaXBSZWN0LmgKQEAgLTUxLDggKzUxLDcgQEAgcHVibGljOgogICAgIGJvb2wgYWZm
ZWN0ZWRCeVJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fYWZmZWN0ZWRCeVJhZGl1czsgfQogICAg
IHZvaWQgc2V0QWZmZWN0ZWRCeVJhZGl1cyhib29sIGFmZmVjdGVkQnlSYWRpdXMpIHsgbV9hZmZl
Y3RlZEJ5UmFkaXVzID0gYWZmZWN0ZWRCeVJhZGl1czsgfQogICAgIAotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBDbGlwUmVjdCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHJlY3QoKSA9PSBvdGhl
ci5yZWN0KCkgJiYgYWZmZWN0ZWRCeVJhZGl1cygpID09IG90aGVyLmFmZmVjdGVkQnlSYWRpdXMo
KTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDbGlwUmVjdCYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIHJlY3QoKSAhPSBvdGhlci5yZWN0KCkgfHwgYWZmZWN0ZWRCeVJhZGl1cygpICE9IG90
aGVyLmFmZmVjdGVkQnlSYWRpdXMoKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDbGlw
UmVjdCYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF5b3V0
UmVjdCYgb3RoZXJSZWN0KSBjb25zdCB7IHJldHVybiByZWN0KCkgIT0gb3RoZXJSZWN0OyB9CiAg
ICAgCiAgICAgdm9pZCBpbnRlcnNlY3QoY29uc3QgTGF5b3V0UmVjdCYgb3RoZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHAKaW5kZXggN2I5ZGNiY2M3NTY1YjlhNmEz
M2M0YWFiOWRjZGFiYTJlY2IwMWVjMy4uY2RjYzIxOTEwYWNlMWQ3ZTk2Yzc3OGEyMGE1OTE3NTRm
Y2RkOWRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uY3BwCkBAIC05
OCwyNyArOTgsNiBAQCBib29sIEV2ZW50UmVnaW9uQ29udGV4dDo6Y29udGFpbnMoY29uc3QgSW50
UmVjdCYgcmVjdCkgY29uc3QKIAogRXZlbnRSZWdpb246OkV2ZW50UmVnaW9uKCkgPSBkZWZhdWx0
OwogCi1ib29sIEV2ZW50UmVnaW9uOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50UmVnaW9uJiBvdGhl
cikgY29uc3QKLXsKLSNpZiBFTkFCTEUoVE9VQ0hfQUNUSU9OX1JFR0lPTlMpCi0gICAgaWYgKG1f
dG91Y2hBY3Rpb25SZWdpb25zICE9IG90aGVyLm1fdG91Y2hBY3Rpb25SZWdpb25zKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXSEVFTF9FVkVOVF9SRUdJT05T
KQotICAgIGlmIChtX3doZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbiAhPSBvdGhlci5tX3doZWVsRXZl
bnRMaXN0ZW5lclJlZ2lvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX25vblBh
c3NpdmVXaGVlbEV2ZW50TGlzdGVuZXJSZWdpb24gIT0gb3RoZXIubV9ub25QYXNzaXZlV2hlZWxF
dmVudExpc3RlbmVyUmVnaW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLQotI2lm
IEVOQUJMRShFRElUQUJMRV9SRUdJT04pCi0gICAgaWYgKG1fZWRpdGFibGVSZWdpb24gIT0gb3Ro
ZXIubV9lZGl0YWJsZVJlZ2lvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0gICAg
cmV0dXJuIG1fcmVnaW9uID09IG90aGVyLm1fcmVnaW9uOwotfQotCiB2b2lkIEV2ZW50UmVnaW9u
Ojp1bml0ZShjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBi
b29sIG92ZXJyaWRlVXNlck1vZGlmeUlzRWRpdGFibGUpCiB7CiAgICAgbV9yZWdpb24udW5pdGUo
cmVnaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmgKaW5kZXggOTk2ZTRi
NWRiNjIyM2VhOTgwYjRlYTc2YzNmY2ZjYmU1YjllM2VjMC4uMjgyZjNhYmVjNWU4MjUxYjNmODM1
NGFmNTljZmYxNDE5M2EzZTljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0V2ZW50UmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9u
LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpb24uaXNFbXB0eSgpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29s
IG9wZXJhdG9yPT0oY29uc3QgRXZlbnRSZWdpb24mKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXZlbnRSZWdpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHVuaXRl
KGNvbnN0IFJlZ2lvbiYsIGNvbnN0IFJlbmRlclN0eWxlJiwgYm9vbCBvdmVycmlkZVVzZXJNb2Rp
ZnlJc0VkaXRhYmxlID0gZmFsc2UpOwogICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEludFNpemUm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HYXBSZWN0cy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dhcFJlY3RzLmgKaW5kZXggN2VjNDkzY2QxNGVmMTJlMjg5
NDlkOGEyOGRlNDk2OTNhM2ZhMjU2Ni4uNzQ4YTAzNTRkYWE5OWYxZWVjYjE2NDVjMzcwYWJmYjU0
OTE5MGNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dhcFJlY3RzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dhcFJlY3RzLmgKQEAgLTQ0LDExICs0NCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2FwUmVjdHMmIG90aGVyKSBj
b25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9sZWZ0ID09IG90aGVyLmxlZnQo
KSAmJiBtX2NlbnRlciA9PSBvdGhlci5jZW50ZXIoKSAmJiBtX3JpZ2h0ID09IG90aGVyLnJpZ2h0
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdhcFJlY3RzJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEdhcFJlY3RzJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgTGF5b3V0UmVjdCBtX2xlZnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAK
aW5kZXggNTYwMmQ3YzJkNGQ1YmNhOTMyNDU0NGI3NWFkMjJjYjI2NThlZDAyYy4uMGRmNzQyNjUx
ZmY3YmRjOGJiNjQzMzQ2ZjliY2NiYzIwNGMxOWUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0dyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
LmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgR3JpZEl0ZXJhdG9yOjppc0VtcHR5QXJlYUVu
b3VnaCh1bnNpZ25lZCByb3dTcGFuLCB1bnNpZ25lZCBjb2x1bW5TcGFuKSBjb25zCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gR3JpZEl0ZXJhdG9yOjpu
ZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhlZFRyYWNrU3BhbiwgdW5zaWduZWQgdmFyeWlu
Z1RyYWNrU3BhbikKK3N0ZDo6b3B0aW9uYWw8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVt
cHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYW4sIHVuc2lnbmVkIHZhcnlpbmdUcmFj
a1NwYW4pCiB7CiAgICAgQVNTRVJUKCFtX2dyaWQuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1f
Z3JpZFswXS5pc0VtcHR5KCkpOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxH
cmlkQXJlYT4gR3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhlZFRy
YWNrU3BhCiAgICAgQVNTRVJUKHZhcnlpbmdUcmFja1NwYW4gPj0gMSk7CiAKICAgICBpZiAobV9n
cmlkLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICB1bnNpZ25lZCByb3dTcGFuID0gKG1fZGlyZWN0aW9uID09IEZv
ckNvbHVtbnMpID8gdmFyeWluZ1RyYWNrU3BhbiA6IGZpeGVkVHJhY2tTcGFuOwogICAgIHVuc2ln
bmVkIGNvbHVtblNwYW4gPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBmaXhlZFRyYWNr
U3BhbiA6IHZhcnlpbmdUcmFja1NwYW47CkBAIC0yMzEsMTMgKzIzMSwxMyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8R3JpZEFyZWE+IEdyaWRJdGVyYXRvcjo6bmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQg
Zml4ZWRUcmFja1NwYQogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mVmFyeWluZ1RyYWNrSW5kZXgg
PSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBd
LnNpemUoKTsKICAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBlbmRPZlZhcnlpbmdUcmFj
a0luZGV4OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7CiAgICAgICAgIGlmIChpc0VtcHR5QXJlYUVu
b3VnaChyb3dTcGFuLCBjb2x1bW5TcGFuKSkgewotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEdyaWRBcmVhPiByZXN1bHQgPSBtYWtlVW5pcXVlPEdyaWRBcmVhPihHcmlkU3Bhbjo6dHJhbnNs
YXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwgbV9yb3dJbmRleCArIHJvd1NwYW4pLCBH
cmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9jb2x1bW5JbmRleCwgbV9jb2x1
bW5JbmRleCArIGNvbHVtblNwYW4pKTsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gR3JpZEFy
ZWEoR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1fcm93SW5kZXgsIG1fcm93
SW5kZXggKyByb3dTcGFuKSwgR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdyaWRTcGFuKG1f
Y29sdW1uSW5kZXgsIG1fY29sdW1uSW5kZXggKyBjb2x1bW5TcGFuKSk7CiAgICAgICAgICAgICAv
LyBBZHZhbmNlIHRoZSBpdGVyYXRvciB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wIHdoZXJlIHdl
IHdvdWxkIHJldHVybiB0aGUgc2FtZSBncmlkIGFyZWEgb3ZlciBhbmQgb3Zlci4KICAgICAgICAg
ICAgICsrdmFyeWluZ1RyYWNrSW5kZXg7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CiAgICAgfQotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9HcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5oCmlu
ZGV4IDcyY2FkZjY4ZWY0ZDMyNjZjZTFmOGNlZWJkYzlhNDlkZjJiYzgxMWIuLjU5NDdmZTVlNTM4
NjUzZDBhYWM4NDk0ZmVhOGRhOTY3YzMwODVlYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9HcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaApA
QCAtMzcsMTAgKzM3LDExIEBAIHR5cGVkZWYgVmVjdG9yPFdlYWtQdHI8UmVuZGVyQm94PiwgMT4g
R3JpZENlbGw7CiB0eXBlZGVmIFZlY3RvcjxWZWN0b3I8R3JpZENlbGw+PiBHcmlkQXNNYXRyaXg7
CiB0eXBlZGVmIExpc3RIYXNoU2V0PHNpemVfdD4gT3JkZXJlZFRyYWNrSW5kZXhTZXQ7CiAKLWNs
YXNzIEdyaWRBcmVhOwogY2xhc3MgR3JpZFBvc2l0aW9uc1Jlc29sdmVyOwogY2xhc3MgUmVuZGVy
R3JpZDsKIAorc3RydWN0IEdyaWRBcmVhOworCiBjbGFzcyBHcmlkIGZpbmFsIHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBHcmlkKFJlbmRlckdyaWQmKTsKQEAgLTExMSw3ICsxMTIsNyBAQCBwdWJs
aWM6CiAKICAgICBSZW5kZXJCb3gqIG5leHRHcmlkSXRlbSgpOwogICAgIGJvb2wgaXNFbXB0eUFy
ZWFFbm91Z2godW5zaWduZWQgcm93U3BhbiwgdW5zaWduZWQgY29sdW1uU3BhbikgY29uc3Q7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBm
aXhlZFRyYWNrU3BhbiwgdW5zaWduZWQgdmFyeWluZ1RyYWNrU3Bhbik7CisgICAgc3RkOjpvcHRp
b25hbDxHcmlkQXJlYT4gbmV4dEVtcHR5R3JpZEFyZWEodW5zaWduZWQgZml4ZWRUcmFja1NwYW4s
IHVuc2lnbmVkIHZhcnlpbmdUcmFja1NwYW4pOwogCiBwcml2YXRlOgogICAgIGNvbnN0IEdyaWRB
c01hdHJpeCYgbV9ncmlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
Z2hsaWdodERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaWdobGlnaHREYXRhLmgK
aW5kZXggYWYxMTVkZDMwMDA4OGFjMDk3OWQwMzYxMzE5OGU1MThhNWNkNTA0YS4uMGE0NTNiNzhh
MDM0ZWJlNWY0YTdjMWNjYjA5NjgyZTdiODQ4YTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpZ2hsaWdodERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGlnaGxpZ2h0RGF0YS5oCkBAIC01NSwxMCArNTUsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0T2Zmc2V0OyB9CiAgICAgdW5z
aWduZWQgZW5kT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9lbmRPZmZzZXQ7IH0KIAotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBSZW5kZXJSYW5nZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9zdGFydCA9PSBvdGhlci5tX3N0YXJ0ICYmIG1fZW5kID09IG90aGVyLm1f
ZW5kICYmIG1fc3RhcnRPZmZzZXQgPT0gb3RoZXIubV9zdGFydE9mZnNldCAmJiBtX2VuZE9mZnNl
dCA9PSBvdGhlci5tX2VuZE9mZnNldDsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFJlbmRlclJhbmdlJikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIFdlYWtQdHI8
UmVuZGVyT2JqZWN0PiBtX3N0YXJ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xheWVyQW5jZXN0b3JDbGlwcGluZ1N0YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suaAppbmRleCAyNWJjYTI3YTE2ODY2N2JlMjQx
MGNkZWU5YWJhYTlmODkyYzQyZWQ3Li44YzE5ZGZlZWVlMjU3N2Y3NjI5MGQyOTdmODljNDgyMzdj
ZjY3ZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJBbmNlc3Rv
ckNsaXBwaW5nU3RhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5ZXJBbmNl
c3RvckNsaXBwaW5nU3RhY2suaApAQCAtNDcsMTcgKzQ3LDcgQEAgc3RydWN0IENvbXBvc2l0ZWRD
bGlwRGF0YSB7CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb21w
b3NpdGVkQ2xpcERhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGNsaXBw
aW5nTGF5ZXIgPT0gb3RoZXIuY2xpcHBpbmdMYXllcgotICAgICAgICAgICAgJiYgY2xpcFJlY3Qg
PT0gb3RoZXIuY2xpcFJlY3QKLSAgICAgICAgICAgICYmIGlzT3ZlcmZsb3dTY3JvbGwgPT0gb3Ro
ZXIuaXNPdmVyZmxvd1Njcm9sbDsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IENvbXBvc2l0ZWRDbGlwRGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
b21wb3NpdGVkQ2xpcERhdGEmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBXZWFrUHRyPFJlbmRl
ckxheWVyPiBjbGlwcGluZ0xheWVyOyAvLyBGb3Igc2Nyb2xsZXIgZW50cmllcywgdGhlIHNjcm9s
bGluZyBsYXllci4gRm9yIG90aGVyIGVudHJpZXMsIHRoZSBtb3N0LWRlc2NlbmRhbnQgbGF5ZXIg
dGhhdCBoYXMgYSBjbGlwLgogICAgIExheW91dFJlY3QgY2xpcFJlY3Q7IC8vIEluIHRoZSBjb29y
ZGluYXRlIHN5c3RlbSBvZiB0aGUgUmVuZGVyTGF5ZXIgdGhhdCBvd25zIHRoZSBzdGFjay4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MZWdhY3lJbmxpbmVJdGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUl0ZXJhdG9yLmgKaW5kZXgg
N2M0YjY3YjkxMWMxNjg3YzgwNmNkZjk0NzZkYWJjNGM3MTg5NDYzMC4uYWYyN2FmZGI5YTc3MTI0
MWU4NGQ5ZDZiMDNhNDljYmZkNThmMmY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xlZ2FjeUlubGluZUl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xlZ2FjeUlubGluZUl0ZXJhdG9yLmgKQEAgLTEzNSwxMSArMTM1LDYgQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBMZWdhY3lJbmxpbmVJdGVyYXRvciYgaXQxLCBjb25zdCBMZWdh
Y3lJbmxpbmVJdGVyYXQKICAgICByZXR1cm4gaXQxLm9mZnNldCgpID09IGl0Mi5vZmZzZXQoKSAm
JiBpdDEucmVuZGVyZXIoKSA9PSBpdDIucmVuZGVyZXIoKTsKIH0KIAotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBMZWdhY3lJbmxpbmVJdGVyYXRvciYgaXQxLCBjb25zdCBMZWdhY3lJbmxp
bmVJdGVyYXRvciYgaXQyKQotewotICAgIHJldHVybiBpdDEub2Zmc2V0KCkgIT0gaXQyLm9mZnNl
dCgpIHx8IGl0MS5yZW5kZXJlcigpICE9IGl0Mi5yZW5kZXJlcigpOwotfQotCiBzdGF0aWMgaW5s
aW5lIFVDaGFyRGlyZWN0aW9uIGVtYmVkQ2hhckZyb21EaXJlY3Rpb24oVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24sIEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSkKIHsKICAgICBpZiAodW5pY29kZUJp
ZGkgPT0gRW1iZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2Vk
VGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtlZFRleHQuaAppbmRleCAzMDQy
MGUyNDhkMjAxZTA0MThhY2I4MzgxOGEwZGVkOGZmOWJhNjFhLi4wNmFiYmFhMzNiOTA5MDNkZTJm
MWM0MDA2MzY1NzdlOTk0OGIzNjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTWFya2VkVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NYXJrZWRUZXh0
LmgKQEAgLTc0LDExICs3NCw3IEBAIHN0cnVjdCBNYXJrZWRUZXh0IHsKICAgICBTdHJpbmcgaGln
aGxpZ2h0TmFtZSB7IH07CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBlbmRP
ZmZzZXQgPD0gc3RhcnRPZmZzZXQ7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTWFya2Vk
VGV4dCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE1hcmtlZFRleHQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHN0YXJ0T2Zmc2V0ID09IG90aGVyLnN0YXJ0T2Zmc2V0ICYmIGVuZE9mZnNldCA9
PSBvdGhlci5lbmRPZmZzZXQgJiYgdHlwZSA9PSBvdGhlci50eXBlICYmIG1hcmtlciA9PSBvdGhl
ci5tYXJrZXIgJiYgaGlnaGxpZ2h0TmFtZSA9PSBvdGhlci5oaWdobGlnaHROYW1lOwotICAgIH0K
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWFya2VkVGV4dCYpIGNvbnN0ID0gZGVmYXVsdDsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8TWFya2VkVGV4dD4gc3ViZGl2aWRl
KGNvbnN0IFZlY3RvcjxNYXJrZWRUZXh0PiYsIE92ZXJsYXBTdHJhdGVneSA9IE92ZXJsYXBTdHJh
dGVneTo6Tm9uZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWdp
bmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFnaW5hdGlvbi5oCmluZGV4IDI0
NTlmOTM3ODU2YjY5YTQ5M2M2NWI0MGJjMTg4YzhhYTY5OTdlY2EuLjc1Yjk4OThhMjUwOThhYWFm
MzJiNjIwMjE1YjU1MDMxNzJmM2Y1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWdpbmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhZ2luYXRp
b24uaApAQCAtMzIsMTUgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFBhZ2lu
YXRpb24gewogICAgIGVudW0gTW9kZSA6IHVpbnQ4X3QgeyBVbnBhZ2luYXRlZCwgTGVmdFRvUmln
aHRQYWdpbmF0ZWQsIFJpZ2h0VG9MZWZ0UGFnaW5hdGVkLCBUb3BUb0JvdHRvbVBhZ2luYXRlZCwg
Qm90dG9tVG9Ub3BQYWdpbmF0ZWQgfTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYWdp
bmF0aW9uJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtb2RlID09IG90aGVy
Lm1vZGUgJiYgYmVoYXZlc0xpa2VDb2x1bW5zID09IG90aGVyLmJlaGF2ZXNMaWtlQ29sdW1ucyAm
JiBwYWdlTGVuZ3RoID09IG90aGVyLnBhZ2VMZW5ndGggJiYgZ2FwID09IG90aGVyLmdhcDsKLSAg
ICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUGFnaW5hdGlvbiYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBQYWdpbmF0aW9uJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAg
TW9kZSBtb2RlIHsgVW5wYWdpbmF0ZWQgfTsKICAgICBib29sIGJlaGF2ZXNMaWtlQ29sdW1ucyB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGF0aE9wZXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhdGhPcGVyYXRpb24uaAppbmRleCA0
YjBmYTcxZjYwYmNmZWRiOWVjYmQwMTFlOWRkZGE3MWRlZGNlMTkyLi5lNzYwYTU3YTk2Nzg2NTRi
N2Y4NmVhMDg0YmJkNTcyODgxZWY2MTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUGF0aE9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYXRo
T3BlcmF0aW9uLmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBhdGhP
cGVyYXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBQYXRoT3BlcmF0aW9uJikgY29uc3QgPSAwOwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQ
YXRoT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiAKICAgICBP
cGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBib29sIGlz
U2FtZVR5cGUoY29uc3QgUGF0aE9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby50eXBlKCkg
PT0gbV90eXBlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAK
aW5kZXggY2VjZWQzNWU1Y2U4N2JmYmMxNDAxODM2Y2QxM2VhMWFlZGQ3YWZjMC4uMDBlYmQ1ZmZj
MDViNzIyMmE0ZjdhNDNiMGM0MjFiMmMzOTY1NmQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtNDMwLDIwICs0MzAsMTkgQEAgU3RyaW5nIFJlbmRl
ckNvdW50ZXI6Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBiZWZvcmVBZnRlckNvbnRhaW5lciA9IGJlZm9yZUFmdGVyQ29udGFpbmVyLT5w
YXJlbnQoKTsKICAgICAgICAgfQotICAgICAgICBtYWtlQ291bnRlck5vZGUoKmJlZm9yZUFmdGVy
Q29udGFpbmVyLCBtX2NvdW50ZXIuaWRlbnRpZmllcigpLCB0cnVlKS0+YWRkUmVuZGVyZXIoY29u
c3RfY2FzdDxSZW5kZXJDb3VudGVyJj4oKnRoaXMpKTsKKyAgICAgICAgbWFrZUNvdW50ZXJOb2Rl
KCpiZWZvcmVBZnRlckNvbnRhaW5lciwgbV9jb3VudGVyLmlkZW50aWZpZXIsIHRydWUpLT5hZGRS
ZW5kZXJlcihjb25zdF9jYXN0PFJlbmRlckNvdW50ZXImPigqdGhpcykpOwogICAgICAgICBBU1NF
UlQobV9jb3VudGVyTm9kZSk7CiAgICAgfQogICAgIENvdW50ZXJOb2RlKiBjaGlsZCA9IG1fY291
bnRlck5vZGU7CiAgICAgaW50IHZhbHVlID0gY2hpbGQtPmFjdHNBc1Jlc2V0KCkgPyBjaGlsZC0+
dmFsdWUoKSA6IGNoaWxkLT5jb3VudEluUGFyZW50KCk7CiAKLSAgICBTdHJpbmcgdGV4dCA9IGxp
c3RNYXJrZXJUZXh0KG1fY291bnRlci5saXN0U3R5bGUoKSwgdmFsdWUpOworICAgIFN0cmluZyB0
ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSwgdmFsdWUpOwogCi0gICAg
aWYgKCFtX2NvdW50ZXIuc2VwYXJhdG9yKCkuaXNOdWxsKCkpIHsKKyAgICBpZiAoIW1fY291bnRl
ci5zZXBhcmF0b3IuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKCFjaGlsZC0+YWN0c0FzUmVzZXQo
KSkKICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPnBhcmVudCgpOwogICAgICAgICB3aGlsZSAo
Q291bnRlck5vZGUqIHBhcmVudCA9IGNoaWxkLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgdGV4
dCA9IGxpc3RNYXJrZXJUZXh0KG1fY291bnRlci5saXN0U3R5bGUoKSwgY2hpbGQtPmNvdW50SW5Q
YXJlbnQoKSkKLSAgICAgICAgICAgICAgICArIG1fY291bnRlci5zZXBhcmF0b3IoKSArIHRleHQ7
CisgICAgICAgICAgICB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSwg
Y2hpbGQtPmNvdW50SW5QYXJlbnQoKSkgKyBtX2NvdW50ZXIuc2VwYXJhdG9yICsgdGV4dDsKICAg
ICAgICAgICAgIGNoaWxkID0gcGFyZW50OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDI2ZjhmY2JjMGFiMjc5NjBjNDkzOTIyM2U3
NDhkOTNjM2I4M2M5OWEuLjFiNjc0NWE5ZTc5MGI4MDViMTM1MDAwNDJlNDFlMDkzZWQ4MTY5MzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTc2NSwxMyArNzY1
LDEzIEBAIHZvaWQgUmVuZGVyR3JpZDo6cG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJh
dG9yKEdyaWQmIGdyaWQpIGNvbnN0CiAgICAgZ3JpZC5lbnN1cmVHcmlkU2l6ZShtYXhpbXVtUm93
SW5kZXggKyBleHBsaWNpdFJvd1N0YXJ0LCBtYXhpbXVtQ29sdW1uSW5kZXggKyBleHBsaWNpdENv
bHVtblN0YXJ0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBSZW5kZXJHcmlkOjpj
cmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiBn
cmlkLCBjb25zdCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
c3BlY2lmaWVkRGlyZWN0aW9uLCBjb25zdCBHcmlkU3BhbiYgc3BlY2lmaWVkUG9zaXRpb25zKSBj
b25zdAorR3JpZEFyZWEgUmVuZGVyR3JpZDo6Y3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVk
UG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYgZ3JpZCwgY29uc3QgUmVuZGVyQm94JiBncmlkSXRl
bSwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIHNwZWNpZmllZERpcmVjdGlvbiwgY29uc3QgR3Jp
ZFNwYW4mIHNwZWNpZmllZFBvc2l0aW9ucykgY29uc3QKIHsKICAgICBHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gY3Jvc3NEaXJlY3Rpb24gPSBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cyA/IEZvclJvd3MgOiBGb3JDb2x1bW5zOwogICAgIGNvbnN0IHVuc2lnbmVkIGVuZE9mQ3Jvc3NE
aXJlY3Rpb24gPSBncmlkLm51bVRyYWNrcyhjcm9zc0RpcmVjdGlvbik7CiAgICAgdW5zaWduZWQg
Y3Jvc3NEaXJlY3Rpb25TcGFuU2l6ZSA9IEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6c3BhblNpemVG
b3JBdXRvUGxhY2VkSXRlbShncmlkSXRlbSwgY3Jvc3NEaXJlY3Rpb24pOwogICAgIEdyaWRTcGFu
IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zID0gR3JpZFNwYW46OnRyYW5zbGF0ZWREZWZpbml0ZUdy
aWRTcGFuKGVuZE9mQ3Jvc3NEaXJlY3Rpb24sIGVuZE9mQ3Jvc3NEaXJlY3Rpb24gKyBjcm9zc0Rp
cmVjdGlvblNwYW5TaXplKTsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxHcmlkQXJlYT4oc3BlY2lm
aWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyA6IHNw
ZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzcGVj
aWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9ucyk7CisgICAgcmV0dXJuIEdy
aWRBcmVhKHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gY3Jvc3NEaXJlY3Rpb25Q
b3NpdGlvbnMgOiBzcGVjaWZpZWRQb3NpdGlvbnMsIHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zID8gc3BlY2lmaWVkUG9zaXRpb25zIDogY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMpOwog
fQogCiB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNPbkdyaWQo
R3JpZCYgZ3JpZCwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBhdXRvR3JpZEl0ZW1zKSBjb25z
dApAQCAtNzkyLDcgKzc5Miw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpv
ckF4aXNJdGVtc09uR3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8UmVuCiAgICAgICAgIHVu
c2lnbmVkIG1ham9yQXhpc0luaXRpYWxQb3NpdGlvbiA9IG1ham9yQXhpc1Bvc2l0aW9ucy5zdGFy
dExpbmUoKTsKIAogICAgICAgICBHcmlkSXRlcmF0b3IgaXRlcmF0b3IoZ3JpZCwgYXV0b1BsYWNl
bWVudE1ham9yQXhpc0RpcmVjdGlvbigpLCBtYWpvckF4aXNQb3NpdGlvbnMuc3RhcnRMaW5lKCks
IGlzR3JpZEF1dG9GbG93RGVuc2UgPyAwIDogbWlub3JBeGlzQ3Vyc29ycy5nZXQobWFqb3JBeGlz
SW5pdGlhbFBvc2l0aW9uKSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gZW1w
dHlHcmlkQXJlYSA9IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKG1ham9yQXhpc1Bvc2l0aW9u
cy5pbnRlZ2VyU3BhbigpLCBtaW5vckF4aXNTcGFuU2l6ZSk7CisgICAgICAgIGF1dG8gZW1wdHlH
cmlkQXJlYSA9IGl0ZXJhdG9yLm5leHRFbXB0eUdyaWRBcmVhKG1ham9yQXhpc1Bvc2l0aW9ucy5p
bnRlZ2VyU3BhbigpLCBtaW5vckF4aXNTcGFuU2l6ZSk7CiAgICAgICAgIGlmICghZW1wdHlHcmlk
QXJlYSkKICAgICAgICAgICAgIGVtcHR5R3JpZEFyZWEgPSBjcmVhdGVFbXB0eUdyaWRBcmVhQXRT
cGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChncmlkLCAqYXV0b0dyaWRJdGVtLCBhdXRvUGxh
Y2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucyk7CiAKQEAgLTgy
Nyw3ICs4MjcsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OnBsYWNlQXV0b01ham9yQXhpc0l0ZW1Pbkdy
aWQoR3JpZCYgZ3JpZCwgUmVuZGVyQm94JiBncmlkSXRlbSwgQQogICAgIHVuc2lnbmVkIG1ham9y
QXhpc0F1dG9QbGFjZW1lbnRDdXJzb3IgPSBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9u
KCkgPT0gRm9yQ29sdW1ucyA/IGF1dG9QbGFjZW1lbnRDdXJzb3Iuc2Vjb25kIDogYXV0b1BsYWNl
bWVudEN1cnNvci5maXJzdDsKICAgICB1bnNpZ25lZCBtaW5vckF4aXNBdXRvUGxhY2VtZW50Q3Vy
c29yID0gYXV0b1BsYWNlbWVudE1ham9yQXhpc0RpcmVjdGlvbigpID09IEZvckNvbHVtbnMgPyBh
dXRvUGxhY2VtZW50Q3Vyc29yLmZpcnN0IDogYXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQ7CiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IGVtcHR5R3JpZEFyZWE7CisgICAgc3RkOjpv
cHRpb25hbDxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsKICAgICBHcmlkU3BhbiBtaW5vckF4aXNQ
b3NpdGlvbnMgPSBncmlkLmdyaWRJdGVtU3BhbihncmlkSXRlbSwgYXV0b1BsYWNlbWVudE1pbm9y
QXhpc0RpcmVjdGlvbigpKTsKICAgICBpZiAobWlub3JBeGlzUG9zaXRpb25zLmlzVHJhbnNsYXRl
ZERlZmluaXRlKCkpIHsKICAgICAgICAgLy8gTW92ZSB0byB0aGUgbmV4dCB0cmFjayBpbiBtYWpv
ciBheGlzIGlmIGluaXRpYWwgcG9zaXRpb24gaW4gbWlub3IgYXhpcyBpcyBiZWZvcmUgYXV0by1w
bGFjZW1lbnQgY3Vyc29yLgpAQCAtODU3LDcgKzg1Nyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxh
Y2VBdXRvTWFqb3JBeGlzSXRlbU9uR3JpZChHcmlkJiBncmlkLCBSZW5kZXJCb3gmIGdyaWRJdGVt
LCBBCiAKICAgICAgICAgICAgICAgICAvLyBEaXNjYXJkIGVtcHR5IGdyaWQgYXJlYSBhcyBpdCBk
b2VzIG5vdCBmaXQgaW4gdGhlIG1pbm9yIGF4aXMgZGlyZWN0aW9uLgogICAgICAgICAgICAgICAg
IC8vIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgbmV3IGVtcHR5IGdyaWQgYXJlYSB5ZXQgYXMg
d2UgbWlnaHQgZmluZCBhIHZhbGlkIG9uZSBpbiB0aGUgbmV4dCBpdGVyYXRpb24uCi0gICAgICAg
ICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgZW1wdHlH
cmlkQXJlYSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8g
QXMgd2UncmUgbW92aW5nIHRvIHRoZSBuZXh0IHRyYWNrIGluIHRoZSBtYWpvciBheGlzIHdlIHNo
b3VsZCByZXNldCB0aGUgYXV0by1wbGFjZW1lbnQgY3Vyc29yIGluIHRoZSBtaW5vciBheGlzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggMjlhZTU5NDgwMDNlZTZkMmRk
NDQzYjU2OTlkY2IyZDdjMTdiOTYyNi4uNjVjOWU2ZTI1MjY4NDk3MDMzODRkZGRjYmExNzgzYzRi
Yjc3YjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC0zMiw5ICsz
MiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdyaWRBcmVhOwogY2xhc3Mg
R3JpZFNwYW47CiAKK3N0cnVjdCBHcmlkQXJlYTsKKwogc3RydWN0IENvbnRlbnRBbGlnbm1lbnRE
YXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb250ZW50QWxpZ25tZW50RGF0YSk7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTExLDcgKzExMiw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHBsYWNlSXRlbXNPbkdyaWQoR3JpZFRyYWNrU2l6aW5nQWxnb3JpdGht
Jiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVMb2dpY2FsV2lkdGgpIGNvbnN0
OwogICAgIHZvaWQgcG9wdWxhdGVFeHBsaWNpdEdyaWRBbmRPcmRlckl0ZXJhdG9yKEdyaWQmKSBj
b25zdDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IGNyZWF0ZUVtcHR5R3JpZEFyZWFB
dFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKEdyaWQmLCBjb25zdCBSZW5kZXJCb3gmLCBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJikgY29uc3Q7CisgICAgR3Jp
ZEFyZWEgY3JlYXRlRW1wdHlHcmlkQXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQo
R3JpZCYsIGNvbnN0IFJlbmRlckJveCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3Qg
R3JpZFNwYW4mKSBjb25zdDsKICAgICB2b2lkIHBsYWNlU3BlY2lmaWVkTWFqb3JBeGlzSXRlbXNP
bkdyaWQoR3JpZCYsIGNvbnN0IFZlY3RvcjxSZW5kZXJCb3gqPiYpIGNvbnN0OwogICAgIHZvaWQg
cGxhY2VBdXRvTWFqb3JBeGlzSXRlbXNPbkdyaWQoR3JpZCYsIGNvbnN0IFZlY3RvcjxSZW5kZXJC
b3gqPiYpIGNvbnN0OwogICAgIHR5cGVkZWYgc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD4g
QXV0b1BsYWNlbWVudEN1cnNvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckl0ZXJh
dG9yLmgKaW5kZXggNWI5ZjI1N2RhNjFjMTBlMGI2NzIzZmY4ODI0MGFiZGM5OTU5NDI0NC4uNGFj
OThmZmE2ZmIxOTQxY2IzOGY3ODE1YTJmNDJhOTM1ZGExY2YzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckl0ZXJhdG9yLmgKQEAgLTQyLDggKzQyLDcgQEAgcHVibGljOgogCiAg
ICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudDsgfQogCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlbmRlckl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFJlbmRlckl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlbmRlckl0ZXJhdG9yJikgY29uc3Q7CiAKICAgICBSZW5kZXJJ
dGVyYXRvciYgdHJhdmVyc2VOZXh0KCk7CiAgICAgUmVuZGVySXRlcmF0b3ImIHRyYXZlcnNlTmV4
dFNpYmxpbmcoKTsKQEAgLTY3LDggKzY2LDcgQEAgcHVibGljOgogCiAgICAgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudDsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJlbmRlckNvbnN0SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmVuZGVyQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBSZW5kZXJDb25zdEl0ZXJhdG9yJikgY29uc3Q7CiAKICAgICBSZW5kZXJD
b25zdEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHQoKTsKICAgICBSZW5kZXJDb25zdEl0ZXJhdG9yJiB0
cmF2ZXJzZU5leHRTaWJsaW5nKCk7CkBAIC0yOTAsMTIgKzI4OCw2IEBAIGlubGluZSBib29sIFJl
bmRlckl0ZXJhdG9yPFQ+OjpvcGVyYXRvcj09KGNvbnN0IFJlbmRlckl0ZXJhdG9yJiBvdGhlcikg
Y29uc3QKICAgICByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsKIH0KIAotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYm9vbCBSZW5kZXJJdGVyYXRvcjxUPjo6b3BlcmF0
b3IhPShjb25zdCBSZW5kZXJJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwotfQotCiAvLyBSZW5kZXJDb25zdEl0ZXJhdG9yCiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgpAQCAtMzc1LDEyICszNjcsNiBAQCBpbmxpbmUgYm9vbCBSZW5kZXJDb25z
dEl0ZXJhdG9yPFQ+OjpvcGVyYXRvcj09KGNvbnN0IFJlbmRlckNvbnN0SXRlcmF0b3ImIG90aGVy
KQogICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50OwogfQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBib29sIFJlbmRlckNvbnN0SXRlcmF0b3I8VD46Om9wZXJh
dG9yIT0oY29uc3QgUmVuZGVyQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNp
bmNsdWRlICJSZW5kZXJBbmNlc3Rvckl0ZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGY2ZTVkYWM4NDUwZWRh
MTAwODQzY2Q4Mzk4ZjM5N2Y5MjAwYjc3ZWIuLjM5MzUzNWQ3ZTgyY2E1Y2ZhMDZjOTc0ZTIzZTc3
M2RlNWIzMWNjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckNvbXBvc2l0b3IuY3BwCkBAIC05OCw3ICs5OCw3IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wg
V2ViQ29yZUhhczNEUmVuZGVyaW5nID0gdHJ1ZTsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lm
ICFVU0UoQ09NUE9TSVRJTkdfRk9SX1NNQUxMX0NBTlZBU0VTKQotc3RhdGljIGNvbnN0IGludCBj
YW52YXNBcmVhVGhyZXNob2xkUmVxdWlyaW5nQ29tcG9zaXRpbmcgPSA1MCAqIDEwMDsKK3N0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgY2FudmFzQXJlYVRocmVzaG9sZFJlcXVpcmluZ0NvbXBvc2l0
aW5nID0gNTAgKiAxMDA7CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IGU5ZjExZmQ0
YTE4MTNhOTQyYzhiYmYwNGYwYmMzYWIzN2UwYzgwZWUuLmY2MmRhNWI5NDRkYmJlZWE2ODIzYzNm
ODAwNTc3OTJkNTJlMGZkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcApAQCAtNDY3LDggKzQ2Nyw4IEBAIExheW91dFJlY3QgUmVuZGVyUmVwbGFjZWQ6
OnJlcGxhY2VkQ29udGVudFJlY3QoY29uc3QgTGF5b3V0U2l6ZSYgaW50cmluc2ljU2l6ZSkKIAog
ICAgIExlbmd0aFBvaW50IG9iamVjdFBvc2l0aW9uID0gc3R5bGUoKS5vYmplY3RQb3NpdGlvbigp
OwogCi0gICAgTGF5b3V0VW5pdCB4T2Zmc2V0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG9iamVj
dFBvc2l0aW9uLngoKSwgY29udGVudFJlY3Qud2lkdGgoKSAtIGZpbmFsUmVjdC53aWR0aCgpKTsK
LSAgICBMYXlvdXRVbml0IHlPZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0UG9z
aXRpb24ueSgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSAtIGZpbmFsUmVjdC5oZWlnaHQoKSk7Cisg
ICAgTGF5b3V0VW5pdCB4T2Zmc2V0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG9iamVjdFBvc2l0
aW9uLngsIGNvbnRlbnRSZWN0LndpZHRoKCkgLSBmaW5hbFJlY3Qud2lkdGgoKSk7CisgICAgTGF5
b3V0VW5pdCB5T2Zmc2V0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG9iamVjdFBvc2l0aW9uLnks
IGNvbnRlbnRSZWN0LmhlaWdodCgpIC0gZmluYWxSZWN0LmhlaWdodCgpKTsKIAogICAgIGZpbmFs
UmVjdC5tb3ZlKHhPZmZzZXQsIHlPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHRCb3hQYWludGVyLmNwcAppbmRleCBjYTViNzQwZDkwNDRiZDY1ZTM2NmI1N2Q3NmMzNDI4
YzNmOWVlM2Y2Li40YzQ3NGM5NWUzZWVjMjIyZjA1Mzk5MzUyMjVkNGEyMTlhNjAyOGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAKQEAgLTY0MCw3ICs2
NDAsNyBAQCBjb25zdCBTaGFkb3dEYXRhKiBUZXh0Qm94UGFpbnRlcjo6ZGVidWdUZXh0U2hhZG93
KCkgY29uc3QKICAgICBpZiAoIXRleHRCb3goKS5sZWdhY3lJbmxpbmVCb3goKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4g
ZGVidWdUZXh0U2hhZG93KExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExl
bmd0aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgoMTAsIExlbmd0aFR5cGU6OkZpeGVkKSwg
TGVuZ3RoKDIwLCBMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIHRydWUs
IFNSR0JBPHVpbnQ4X3Q+IHsgMTUwLCAwLCAwLCAxOTAgfSk7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFNoYWRvd0RhdGE+IGRlYnVnVGV4dFNoYWRvdyhMZW5ndGhQb2ludCB7IHsgTGVuZ3Ro
VHlwZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhlZCB9IH0sIExlbmd0aCgxMCwgTGVuZ3Ro
VHlwZTo6Rml4ZWQpLCBMZW5ndGgoMjAsIExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6
Ok5vcm1hbCwgdHJ1ZSwgU1JHQkE8dWludDhfdD4geyAxNTAsIDAsIDAsIDE5MCB9KTsKICAgICBy
ZXR1cm4gJmRlYnVnVGV4dFNoYWRvdy5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAppbmRleCA0ZmY0ODE2ZmM0M2Vj
ZTc4ZWU4OTc3MWUxNmQ4NTVmYTA1ZmZkMWM5Li5jN2I2YjZjMjY1ZjA0MmViZDFkZjM2MWQzMmI0
MDJkMzY0NTRmOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERl
Y29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERl
Y29yYXRpb25QYWludGVyLmNwcApAQCAtMTg0LDEyICsxODQsNiBAQCBzdGF0aWMgU3Ryb2tlU3R5
bGUgdGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSBk
ZWNvcmF0aQogICAgIHJldHVybiBzdHJva2VTdHlsZTsKIH0KIAotYm9vbCBUZXh0RGVjb3JhdGlv
blBhaW50ZXI6OlN0eWxlczo6b3BlcmF0b3I9PShjb25zdCBTdHlsZXMmIG90aGVyKSBjb25zdAot
ewotICAgIHJldHVybiB1bmRlcmxpbmVDb2xvciA9PSBvdGhlci51bmRlcmxpbmVDb2xvciAmJiBv
dmVybGluZUNvbG9yID09IG90aGVyLm92ZXJsaW5lQ29sb3IgJiYgbGluZXRocm91Z2hDb2xvciA9
PSBvdGhlci5saW5ldGhyb3VnaENvbG9yCi0gICAgICAgICYmIHVuZGVybGluZVN0eWxlID09IG90
aGVyLnVuZGVybGluZVN0eWxlICYmIG92ZXJsaW5lU3R5bGUgPT0gb3RoZXIub3ZlcmxpbmVTdHls
ZSAmJiBsaW5ldGhyb3VnaFN0eWxlID09IG90aGVyLmxpbmV0aHJvdWdoU3R5bGU7Ci19Ci0KIFRl
eHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbnMsIGNv
bnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBib29sIGlzRmlyc3RMaW5lLCBjb25zdCBGb250Q2Fz
Y2FkZSYgZm9udCwgc3RkOjpvcHRpb25hbDxTdHlsZXM+IHN0eWxlcykKICAgICA6IG1fY29udGV4
dCB7IGNvbnRleHQgfQogICAgICwgbV9kZWNvcmF0aW9ucyB7IGRlY29yYXRpb25zIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAppbmRleCA2
MzhhYzk2MzVkMGY2OWUyNDFkNDM1YmE4MmY0NTliNzVmNjdiYzc2Li4wNDBjOWJkNjhmNjY5M2I4
NmI1MWZjNzY5NzQ5ZTRkNTBlZDg4M2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCkBAIC01Nyw4ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHBhaW50TGluZVRocm91Z2goY29uc3QgQ29sb3ImLCBmbG9hdCB0aGlja25lc3MsIGNv
bnN0IEZsb2F0UG9pbnQmIGxvY2FsT3JpZ2luKTsKIAogICAgIHN0cnVjdCBTdHlsZXMgewotICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVzJikgY29uc3Q7Ci0gICAgICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdHlsZXMmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVzJikgY29uc3Qg
PSBkZWZhdWx0OwogCiAgICAgICAgIENvbG9yIHVuZGVybGluZUNvbG9yOwogICAgICAgICBDb2xv
ciBvdmVybGluZUNvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHls
ZS5jcHAKaW5kZXggM2MwODNiMTkxNmNkZDJkMDdiOGZiNjhiZDIyZTA0ODdkNzVmY2ZhZi4uOWZk
OTY0YWNlOTk1NDBkOTk3YTgzZTg4ZjAyNDI1ZjdmMWM2ODQ5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCkBAIC00NiwxNiArNDYsNiBAQCBUZXh0UGFp
bnRTdHlsZTo6VGV4dFBhaW50U3R5bGUoY29uc3QgQ29sb3ImIGNvbG9yKQogewogfQogCi1ib29s
IFRleHRQYWludFN0eWxlOjpvcGVyYXRvcj09KGNvbnN0IFRleHRQYWludFN0eWxlJiBvdGhlcikg
Y29uc3QKLXsKLSAgICByZXR1cm4gZmlsbENvbG9yID09IG90aGVyLmZpbGxDb2xvciAmJiBzdHJv
a2VDb2xvciA9PSBvdGhlci5zdHJva2VDb2xvciAmJiBlbXBoYXNpc01hcmtDb2xvciA9PSBvdGhl
ci5lbXBoYXNpc01hcmtDb2xvcgotICAgICAgICAmJiBzdHJva2VXaWR0aCA9PSBvdGhlci5zdHJv
a2VXaWR0aCAmJiBwYWludE9yZGVyID09IG90aGVyLnBhaW50T3JkZXIgJiYgbGluZUpvaW4gPT0g
b3RoZXIubGluZUpvaW4KLSNpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKQotICAgICAgICAm
JiB1c2VEYXJrQXBwZWFyYW5jZSA9PSBvdGhlci51c2VEYXJrQXBwZWFyYW5jZQotI2VuZGlmCi0g
ICAgICAgICYmIGxpbmVDYXAgPT0gb3RoZXIubGluZUNhcCAmJiBtaXRlckxpbWl0ID09IG90aGVy
Lm1pdGVyTGltaXQ7Ci19Ci0KIGJvb2wgdGV4dENvbG9ySXNMZWdpYmxlQWdhaW5zdEJhY2tncm91
bmRDb2xvcihjb25zdCBDb2xvciYgdGV4dENvbG9yLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENv
bG9yKQogewogICAgIC8vIFVzZXMgdGhlIFdDQUcgMi4wIGRlZmluaXRpb24gb2YgbGVnaWJpbGl0
eTogYSBjb250cmFzdCByYXRpbyBvZiA0LjU6MSBvciBncmVhdGVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaAppbmRleCA0NTliYWYxMTJmYzAzMjcwYWZlNDZmZmU4
NGVkMGQ1YmE2YjI2ZTM5Li5iODA5NzgwN2FhNWIxZDJmYTE0ZTMxYzVjYjU1NjkwMjA1MTgzMjc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaApAQCAtMzMsMTcg
KzMzLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWU7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQ7Ci1jbGFzcyBSZW5kZXJUZXh0OwogY2xhc3MgUmVuZGVyU3R5bGU7CitjbGFz
cyBSZW5kZXJUZXh0OwogY2xhc3MgU2hhZG93RGF0YTsKKwogc3RydWN0IFBhaW50SW5mbzsKIAog
c3RydWN0IFRleHRQYWludFN0eWxlIHsKLSAgICBUZXh0UGFpbnRTdHlsZSgpIHsgfQorICAgIFRl
eHRQYWludFN0eWxlKCkgPSBkZWZhdWx0OwogICAgIFRleHRQYWludFN0eWxlKGNvbnN0IENvbG9y
Jik7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dFBhaW50U3R5bGUmKSBjb25zdDsK
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dFBhaW50U3R5bGUmIG90aGVyKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBU
ZXh0UGFpbnRTdHlsZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIENvbG9yIGZpbGxDb2xvcjsK
ICAgICBDb2xvciBzdHJva2VDb2xvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbnRlcnZhbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZUludGVydmFsLmgKaW5kZXggNmNjNGRhYjQ5ZjVjMjEwMjkwMDI1YWY5MWIxNWJm
NDBhZmNjZWNjOC4uYjIzYzI5MjUxYTQ1YTkxMGQzZGUwNDlhZWI0YmZmNWQ1MGQwMDI1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmgKQEAg
LTkwLDggKzkwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgc2V0KHN0ZDo6bWluPFQ+KHgxKCks
IGludGVydmFsLngxKCkpLCBzdGQ6Om1heDxUPih4MigpLCBpbnRlcnZhbC54MigpKSk7CiAgICAg
fQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIG90aGVyKSBj
b25zdCB7IHJldHVybiB4MSgpID09IG90aGVyLngxKCkgJiYgeDIoKSA9PSBvdGhlci54MigpOyB9
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNoYXBlSW50ZXJ2YWw8VD4mIG90aGVyKSBjb25z
dCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2hhcGVJbnRlcnZhbCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICBUIG1f
eDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFw
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApp
bmRleCAwODZhNmY2YTYzYTI1ZTUwMjNhZTk1YmZhODRmNGZhN2Q0ZmZjMjYyLi45OGUxM2YzZTZj
ZmNhZThkMjQ4YzVhNGYwMmZkMGE4NTFkNDc2ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTYzLDExICs2Myw3IEBAIHZvaWQgQmFz
aWNTaGFwZUNlbnRlckNvb3JkaW5hdGU6OnVwZGF0ZUNvbXB1dGVkTGVuZ3RoKCkKIH0KIAogc3Ry
dWN0IFNWR1BhdGhUcmFuc2Zvcm1lZEJ5dGVTdHJlYW0gewotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTVkdQYXRoVHJhbnNmb3JtZWRCeXRlU3RyZWFtJiBvdGhlcikgY29uc3QgCi0gICAgeyAK
LSAgICAgICAgcmV0dXJuIG90aGVyLm9mZnNldCA9PSBvZmZzZXQgJiYgb3RoZXIuem9vbSA9PSB6
b29tICYmIG90aGVyLnJhd1N0cmVhbSA9PSByYXdTdHJlYW07Ci0gICAgfQotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTVkdQYXRoVHJhbnNmb3JtZWRCeXRlU3RyZWFtJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U1ZHUGF0aFRyYW5zZm9ybWVkQnl0ZVN0cmVhbSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiByYXdTdHJlYW0uaXNFbXB0eSgpOyB9CiAKICAgICBQ
YXRoIHBhdGgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0Jhc2ljU2hhcGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNT
aGFwZXMuaAppbmRleCA5YmYwMzczNDc2YjUzZTVjN2E0YTliYzYyMzllNDVlYzRhZDUzNGU0Li43
ZTJmZWU1OTlmNGE5YjA1ODJkZWNiYTk5YzIxOTlmMWUwYWI5ZDk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaApAQCAtMTAyLDEyICsxMDIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZShUb3BMZWZ0
LCBXZWJDb3JlOjpibGVuZChmcm9tLm1fY29tcHV0ZWRMZW5ndGgsIG1fY29tcHV0ZWRMZW5ndGgs
IGNvbnRleHQpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJhc2lj
U2hhcGVDZW50ZXJDb29yZGluYXRlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2RpcmVjdGlvbiA9PSBvdGhlci5tX2RpcmVjdGlvbgotICAgICAgICAgICAgJiYgbV9sZW5n
dGggPT0gb3RoZXIubV9sZW5ndGgKLSAgICAgICAgICAgICYmIG1fY29tcHV0ZWRMZW5ndGggPT0g
b3RoZXIubV9jb21wdXRlZExlbmd0aDsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlJikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlQ29tcHV0ZWRMZW5ndGgoKTsKQEAgLTE1MywxMCArMTQ4LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVJhZGl1cyhXZWJDb3JlOjpibGVuZChm
cm9tLnZhbHVlKCksIHZhbHVlKCksIGNvbnRleHQpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEJhc2ljU2hhcGVSYWRpdXMmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZSAmJiBtX3R5cGUgPT0gb3RoZXIu
bV90eXBlOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZVJhZGl1
cyYpIGNvbnN0ID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICBMZW5ndGggbV92YWx1ZSB7IExl
bmd0aFR5cGU6OlVuZGVmaW5lZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0JvcmRlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9C
b3JkZXJEYXRhLmgKaW5kZXggZTQzOTgzZTIyYmEzZTJjMjE0MWIxNmMwODE0YmRhYmM4MzljODJh
NC4uYjNhNDMxNmVjMGQyMjRjN2MyNGZkYTBhNzNmOTY2OGJjZGJjNWUyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlckRhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCkBAIC05OSwxNiArOTksNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBGbG9hdEJveEV4dGVudChib3JkZXJUb3BXaWR0aCgpLCBi
b3JkZXJSaWdodFdpZHRoKCksIGJvcmRlckJvdHRvbVdpZHRoKCksIGJvcmRlckxlZnRXaWR0aCgp
KTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQm9yZGVyRGF0YSYgbykgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2xlZnQgPT0gby5tX2xlZnQgJiYgbV9yaWdodCA9
PSBvLm1fcmlnaHQgJiYgbV90b3AgPT0gby5tX3RvcCAmJiBtX2JvdHRvbSA9PSBvLm1fYm90dG9t
ICYmIG1faW1hZ2UgPT0gby5tX2ltYWdlCi0gICAgICAgICAgICAmJiBtX3RvcExlZnRSYWRpdXMg
PT0gby5tX3RvcExlZnRSYWRpdXMgJiYgbV90b3BSaWdodFJhZGl1cyA9PSBvLm1fdG9wUmlnaHRS
YWRpdXMgJiYgbV9ib3R0b21MZWZ0UmFkaXVzID09IG8ubV9ib3R0b21MZWZ0UmFkaXVzICYmIG1f
Ym90dG9tUmlnaHRSYWRpdXMgPT0gby5tX2JvdHRvbVJpZ2h0UmFkaXVzOwotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBCb3JkZXJEYXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBCb3JkZXJEYXRhJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgY29uc3QgQm9yZGVyVmFsdWUm
IGxlZnQoKSBjb25zdCB7IHJldHVybiBtX2xlZnQ7IH0KICAgICBjb25zdCBCb3JkZXJWYWx1ZSYg
cmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmluZGV4IGRjZWZmNGE2MmU0MDRhYjljZDc4YzJhMDcz
ODg0NjBiNDYwZDk1ODYuLmQ3NjJlZTBkNGE0NTgyZDg5NDdkMjc4YTQ4ODMzZWMxNjI4OGZjN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCkBAIC01
MywxNSArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBub25aZXJvKCkgJiYgIWlzVHJh
bnNwYXJlbnQoKSAmJiBzdHlsZSgpICE9IEJvcmRlclN0eWxlOjpIaWRkZW47CiAgICAgfQogCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJvcmRlclZhbHVlJiBvKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dpZHRoICYmIG1fc3R5bGUgPT0gby5tX3N0eWxl
ICYmIG1fY29sb3IgPT0gby5tX2NvbG9yOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBCb3JkZXJWYWx1ZSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG8pOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQm9yZGVyVmFsdWUmKSBj
b25zdCA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIHNldENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVu
dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCmlu
ZGV4IDJjMTJkZDliNDBkZDQwYjNjMGJmNjc0OTMyMmFlMmIwZmQxZTA3MGYuLjUzZTUyODIxY2E2
N2UxODQ2YzYzZGUzMjM4NjliYTQ5OWY0NmRlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9Db250ZW50RGF0YS5oCkBAIC0xMDgsMTEgKzEwOCw2IEBAIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgSW1hZ2VDb250ZW50RGF0YSYgYSwgY29uc3QgSW1hZ2VDb250ZW50
RGF0YSYgYikKICAgICByZXR1cm4gJmEuaW1hZ2UoKSA9PSAmYi5pbWFnZSgpOwogfQogCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEltYWdlQ29udGVudERhdGEmIGEsIGNvbnN0IEltYWdl
Q29udGVudERhdGEmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogY2xhc3MgVGV4
dENvbnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBUZXh0Q29udGVudERhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KQpAQCAtMTM2LDExICsx
MzEsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRDb250ZW50RGF0YSYgYSwg
Y29uc3QgVGV4dENvbnRlbnREYXRhJiBiKQogICAgIHJldHVybiBhLnRleHQoKSA9PSBiLnRleHQo
KTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0Q29udGVudERhdGEmIGEs
IGNvbnN0IFRleHRDb250ZW50RGF0YSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQot
CiBjbGFzcyBDb3VudGVyQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewog
cHVibGljOgogICAgIGV4cGxpY2l0IENvdW50ZXJDb250ZW50RGF0YShzdGQ6OnVuaXF1ZV9wdHI8
Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIpCkBAIC0xNzIsMTEgKzE2Miw2IEBAIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ291bnRlckNvbnRlbnREYXRhJiBhLCBjb25zdCBDb3VudGVyQ29u
dGVudERhdGEmIGIpCiAgICAgcmV0dXJuIGEuY291bnRlcigpID09IGIuY291bnRlcigpOwogfQog
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvdW50ZXJDb250ZW50RGF0YSYgYSwgY29u
c3QgQ291bnRlckNvbnRlbnREYXRhJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0K
IGNsYXNzIFF1b3RlQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogcHVi
bGljOgogICAgIGV4cGxpY2l0IFF1b3RlQ29udGVudERhdGEoUXVvdGVUeXBlIHF1b3RlKQpAQCAt
MjAwLDExICsxODUsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFF1b3RlQ29udGVu
dERhdGEmIGEsIGNvbnN0IFF1b3RlQ29udGVudERhdGEmIGIpCiAgICAgcmV0dXJuIGEucXVvdGUo
KSA9PSBiLnF1b3RlKCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUXVvdGVD
b250ZW50RGF0YSYgYSwgY29uc3QgUXVvdGVDb250ZW50RGF0YSYgYikKLXsKLSAgICByZXR1cm4g
IShhID09IGIpOwotfQotCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbnRlbnREYXRh
JiBhLCBjb25zdCBDb250ZW50RGF0YSYgYikKIHsKICAgICBpZiAoYS50eXBlKCkgIT0gYi50eXBl
KCkpCkBAIC0yMjUsMTEgKzIwNSw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29u
dGVudERhdGEmIGEsIGNvbnN0IENvbnRlbnREYXRhJiBiKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb250ZW50RGF0YSYgYSwgY29uc3QgQ29u
dGVudERhdGEmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ09OVEVOVF9EQVRB
KFRvQ2xhc3NOYW1lLCBDb250ZW50RGF0YU5hbWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyQ29udGVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250ZW50LmgKaW5kZXggNTg2Y2M2Njk4MDI2NWQ5ODYzYWNh
YWE3ZWU2YjhhOTg2NDgzMjZjNi4uZmNmNTQ1Y2UzMjYzOTY3Njc5YWQ1ZWIxNDc2YjhmMGUyMmM2
YmNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJD
b250ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250
ZW50LmgKQEAgLTI5LDMyICsyOSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IENvdW50ZXJDb250ZW50IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBDb3VudGVyQ29udGVudChjb25zdCBBdG9tU3RyaW5nJiBpZGVudGlmaWVyLCBMaXN0U3R5
bGVUeXBlIHN0eWxlLCBjb25zdCBBdG9tU3RyaW5nJiBzZXBhcmF0b3IpCi0gICAgICAgIDogbV9p
ZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgICAgICwgbV9saXN0U3R5bGUoc3R5bGUpCi0gICAg
ICAgICwgbV9zZXBhcmF0b3Ioc2VwYXJhdG9yKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHN0eWxl
ICE9IExpc3RTdHlsZVR5cGU6OlN0cmluZyk7Ci0gICAgfQorc3RydWN0IENvdW50ZXJDb250ZW50
IHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAgICBjb25zdCBBdG9t
U3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAg
TGlzdFN0eWxlVHlwZSBsaXN0U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2xpc3RTdHlsZTsgfQot
ICAgIGNvbnN0IEF0b21TdHJpbmcmIHNlcGFyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VwYXJh
dG9yOyB9CisgICAgQXRvbVN0cmluZyBpZGVudGlmaWVyOworICAgIExpc3RTdHlsZVR5cGUgbGlz
dFN0eWxlOworICAgIEF0b21TdHJpbmcgc2VwYXJhdG9yOwogCi1wcml2YXRlOgotICAgIEF0b21T
dHJpbmcgbV9pZGVudGlmaWVyOwotICAgIExpc3RTdHlsZVR5cGUgbV9saXN0U3R5bGU7Ci0gICAg
QXRvbVN0cmluZyBtX3NlcGFyYXRvcjsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ291bnRl
ckNvbnRlbnQmKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCi1zdGF0aWMgaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDb3VudGVyQ29udGVudCYgYSwgY29uc3QgQ291bnRlckNvbnRlbnQmIGIp
Ci17Ci0gICAgcmV0dXJuIGEuaWRlbnRpZmllcigpID09IGIuaWRlbnRpZmllcigpCi0gICAgICAg
ICYmIGEubGlzdFN0eWxlKCkgPT0gYi5saXN0U3R5bGUoKQotICAgICAgICAmJiBhLnNlcGFyYXRv
cigpID09IGIuc2VwYXJhdG9yKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgKaW5k
ZXggMGUzMmJmMjQ4NjliZGJhOGNmMGM4NWFlZDgzOGIwMmNiZWU5YTA0OS4uNWM5M2FjNThmYjUw
NWJmMTNiZjI3ZjFkNWVjN2NiNGI5ZTM0MzhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgKQEAgLTI4LDE4ICsyOCw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBDb3VudGVyRGlyZWN0aXZlcyB7CiAgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IHJlc2V0VmFsdWU7CiAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IGluY3JlbWVu
dFZhbHVlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3VudGVyRGlyZWN0aXZlcyYpIGNv
bnN0ID0gZGVmYXVsdDsKIH07CiAKLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ291
bnRlckRpcmVjdGl2ZXMmIGEsIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVzJiBiKQotewotICAgIHJl
dHVybiBhLmluY3JlbWVudFZhbHVlID09IGIuaW5jcmVtZW50VmFsdWUgJiYgYS5yZXNldFZhbHVl
ID09IGIucmVzZXRWYWx1ZTsKLX0KLQotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBD
b3VudGVyRGlyZWN0aXZlcyYgYSwgY29uc3QgQ291bnRlckRpcmVjdGl2ZXMmIGIpCi17Ci0gICAg
cmV0dXJuICEoYSA9PSBiKTsKLX0KLQogdXNpbmcgQ291bnRlckRpcmVjdGl2ZU1hcCA9IEhhc2hN
YXA8QXRvbVN0cmluZywgQ291bnRlckRpcmVjdGl2ZXM+OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ3Vyc29yRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1cnNvckRhdGEuaAppbmRleCA1
NmZjY2QwZTk4Njc1ZWZiNTlmNGMzOTljYWYxNjkwYjViMTllZGRhLi44ZGM5OTBjNTVlZDc1YTQx
MWFjNzdjM2E2YTk4MmRkMmM1ZjYzMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQ3Vyc29yRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9DdXJzb3JEYXRhLmgKQEAgLTM3LDIyICszNywxNCBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJzb3JEYXRhJiBvKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1faG90U3BvdCA9PSBvLm1faG90U3BvdCAmJiBtX2ltYWdlID09
IG8ubV9pbWFnZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ3Vyc29yRGF0
YSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0K
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3Vyc29yRGF0YSYpIGNvbnN0ID0gZGVmYXVsdDsK
IAotICAgIFN0eWxlSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsg
fSAgICAKKyAgICBTdHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0
KCk7IH0KICAgICB2b2lkIHNldEltYWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmIGltYWdlKSB7IG1f
aW1hZ2UgPSBXVEZNb3ZlKGltYWdlKTsgfQogCiAgICAgLy8gSG90IHNwb3QgaW4gdGhlIGltYWdl
IGluIGxvZ2ljYWwgcGl4ZWxzLgogICAgIGNvbnN0IEludFBvaW50JiBob3RTcG90KCkgY29uc3Qg
eyByZXR1cm4gbV9ob3RTcG90OyB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0eWxl
SW1hZ2U+IG1faW1hZ2U7CiAgICAgSW50UG9pbnQgbV9ob3RTcG90OyAvLyBmb3IgQ1NTMyBzdXBw
b3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ3Vyc29yTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0N1cnNvckxpc3QuaAppbmRleCAy
OTgzMGM2YzQ5MzZjYzRlYjExNDBiNWQ5MGM4ZDg5NTgyZTE4ZWExLi5lMWY1MzAxYzQxZWEwY2Jk
ZDhkMGY3YmIwODBlNWFkM2U1ZjQ5OTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQ3Vyc29yTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9DdXJzb3JMaXN0LmgKQEAgLTQzLDcgKzQzLDYgQEAgcHVibGljOgogICAgIEN1cnNvckRh
dGEmIGF0KHNpemVfdCBpKSB7IHJldHVybiBtX3ZlY3Rvci5hdChpKTsgfQogCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEN1cnNvckxpc3QmIG8pIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yID09
IG8ubV92ZWN0b3I7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ3Vyc29yTGlzdCYgbykg
Y29uc3QgeyByZXR1cm4gbV92ZWN0b3IgIT0gby5tX3ZlY3RvcjsgfQogCiAgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KICAgICB2b2lkIGFwcGVuZChj
b25zdCBDdXJzb3JEYXRhJiBjdXJzb3JEYXRhKSB7IG1fdmVjdG9yLmFwcGVuZChjdXJzb3JEYXRh
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXll
ci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCmluZGV4IDk1
ZDM4NjI3ZTE0MTNmNTI2MWMwOWM5ZmQ5ZmIxYWEyMjBkNTQ4YjQuLmU3ZGUzNmRkMTgxYTYwNTNh
ZDI3YmFiOTJmYjA4ZmU5ODJiNTJmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvRmlsbExheWVyLmgKQEAgLTM1LDMwICszNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZW5kZXJFbGVtZW50OwogCiBzdHJ1Y3QgRmlsbFNpemUgewotICAgIEZpbGxTaXplKCkK
LSAgICAgICAgOiB0eXBlKEZpbGxTaXplVHlwZTo6U2l6ZSkKLSAgICB7Ci0gICAgfQotCi0gICAg
RmlsbFNpemUoRmlsbFNpemVUeXBlIHR5cGUsIGNvbnN0IExlbmd0aFNpemUmIHNpemUpCi0gICAg
ICAgIDogdHlwZSh0eXBlKQotICAgICAgICAsIHNpemUoc2l6ZSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgRmlsbFNpemVUeXBlIHR5cGU7CisgICAgRmlsbFNpemVUeXBlIHR5cGUgeyBGaWxsU2l6ZVR5
cGU6OlNpemUgfTsKICAgICBMZW5ndGhTaXplIHNpemU7Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEZpbGxTaXplJiBhLCBjb25zdCBGaWxsU2l6ZSYgYikKLXsKLSAgICByZXR1
cm4gYS50eXBlID09IGIudHlwZSAmJiBhLnNpemUgPT0gYi5zaXplOwotfQogCi1pbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEZpbGxTaXplJiBhLCBjb25zdCBGaWxsU2l6ZSYgYikKLXsKLSAg
ICByZXR1cm4gIShhID09IGIpOwotfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWxsU2l6
ZSYpIGNvbnN0ID0gZGVmYXVsdDsKK307CiAKIGNsYXNzIEZpbGxMYXllciA6IHB1YmxpYyBSZWZD
b3VudGVkPEZpbGxMYXllcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtODQs
NyArNjUsNyBAQCBwdWJsaWM6CiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEJsZW5kTW9kZT4obV9ibGVuZE1vZGUpOyB9CiAgICAgY29uc3QgTGVu
Z3RoU2l6ZSYgc2l6ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUxlbmd0aDsgfQogICAg
IEZpbGxTaXplVHlwZSBzaXplVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEZpbGxT
aXplVHlwZT4obV9zaXplVHlwZSk7IH0KLSAgICBGaWxsU2l6ZSBzaXplKCkgY29uc3QgeyByZXR1
cm4gRmlsbFNpemUoc3RhdGljX2Nhc3Q8RmlsbFNpemVUeXBlPihtX3NpemVUeXBlKSwgbV9zaXpl
TGVuZ3RoKTsgfQorICAgIEZpbGxTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiB7IHNpemVUeXBl
KCksIG1fc2l6ZUxlbmd0aCB9OyB9CiAgICAgTWFza01vZGUgbWFza01vZGUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxNYXNrTW9kZT4obV9tYXNrTW9kZSk7IH0KIAogICAgIGNvbnN0IEZp
bGxMYXllciogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dC5nZXQoKTsgfQpAQCAtMTQ0LDcg
KzEyNSw2IEBAIHB1YmxpYzoKICAgICBGaWxsTGF5ZXImIG9wZXJhdG9yPShjb25zdCBGaWxsTGF5
ZXImKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWxsTGF5ZXImKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsbExheWVyJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIGJvb2wgY29udGFpbnNJbWFnZShTdHlsZUltYWdl
JikgY29uc3Q7CiAgICAgYm9vbCBpbWFnZXNBcmVMb2FkZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKaW5kZXggYjdlYmQxZDk2MWRlODgyNmZiODMw
MzMwOWI4ZTYzNTJmMjBmOWVhYi4uNzI3ZjllMmZkZWE4YzFhMDQ0OTA3MjVhOTlkY2E0MzE4N2Ez
MDFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmgKQEAgLTQy
LDcgKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRGVzcGl0ZSBsaW5lIG51bWJlcnMg
aW4gdGhlIHNwZWMgc3RhcnQgaW4gIjEiLCB0aGUgaW5kZXhlcyBoZXJlIHN0YXJ0IGluICIwIi4K
IGNsYXNzIEdyaWRTcGFuIHsKIHB1YmxpYzoKLQogICAgIHN0YXRpYyBHcmlkU3BhbiB1bnRyYW5z
bGF0ZWREZWZpbml0ZUdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIEdyaWRTcGFuKHN0YXJ0TGluZSwgZW5kTGluZSwgVW50cmFuc2xhdGVk
RGVmaW5pdGUpOwpAQCAtNTgsMTAgKzU3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gR3Jp
ZFNwYW4oMCwgMSwgSW5kZWZpbml0ZSk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEdyaWRTcGFuJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBv
Lm1fdHlwZSAmJiBtX3N0YXJ0TGluZSA9PSBvLm1fc3RhcnRMaW5lICYmIG1fZW5kTGluZSA9PSBv
Lm1fZW5kTGluZTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdyaWRTcGFuJikg
Y29uc3QgPSBkZWZhdWx0OwogCiAgICAgdW5zaWduZWQgaW50ZWdlclNwYW4oKSBjb25zdAogICAg
IHsKQEAgLTE0Miw4ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotCi0gICAg
ZW51bSBHcmlkU3BhblR5cGUge1VudHJhbnNsYXRlZERlZmluaXRlLCBUcmFuc2xhdGVkRGVmaW5p
dGUsIEluZGVmaW5pdGV9OworICAgIGVudW0gR3JpZFNwYW5UeXBlIDogdWludDhfdCB7IFVudHJh
bnNsYXRlZERlZmluaXRlLCBUcmFuc2xhdGVkRGVmaW5pdGUsIEluZGVmaW5pdGUgfTsKIAogICAg
IEdyaWRTcGFuKGludCBzdGFydExpbmUsIGludCBlbmRMaW5lLCBHcmlkU3BhblR5cGUgdHlwZSkK
ICAgICAgICAgOiBtX3R5cGUodHlwZSkKQEAgLTE2Myw0MSArMTU4LDMwIEBAIHByaXZhdGU6CiAg
ICAgaW50IG1fc3RhcnRMaW5lOwogICAgIGludCBtX2VuZExpbmU7CiAgICAgR3JpZFNwYW5UeXBl
IG1fdHlwZTsKLQotCiB9OwogCiAvLyBUaGlzIHJlcHJlc2VudHMgYSBncmlkIGFyZWEgdGhhdCBz
cGFucyBpbiBib3RoIHJvd3MnIGFuZCBjb2x1bW5zJyBkaXJlY3Rpb24uCi1jbGFzcyBHcmlkQXJl
YSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgLy8gSGFzaE1h
cCByZXF1aXJlcyBhIGRlZmF1bHQgY29uc3R1Y3Rvci4KLSAgICBHcmlkQXJlYSgpCi0gICAgICAg
IDogY29sdW1ucyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCi0gICAgICAgICwgcm93
cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCi0gICAgewotICAgIH0KK3N0cnVjdCBH
cmlkQXJlYSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwogCi0gICAgR3Jp
ZEFyZWEoY29uc3QgR3JpZFNwYW4mIHIsIGNvbnN0IEdyaWRTcGFuJiBjKQotICAgICAgICA6IGNv
bHVtbnMoYykKLSAgICAgICAgLCByb3dzKHIpCisgICAgR3JpZEFyZWEoKQorICAgICAgICA6IHJv
d3MoR3JpZFNwYW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQorICAgICAgICAsIGNvbHVtbnMoR3Jp
ZFNwYW46OmluZGVmaW5pdGVHcmlkU3BhbigpKQogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgR3JpZEFyZWEmIG8pIGNvbnN0CisgICAgR3JpZEFyZWEoR3JpZFNwYW4g
cm93cywgR3JpZFNwYW4gY29sdW1ucykKKyAgICAgICAgOiByb3dzKHJvd3MpCisgICAgICAgICwg
Y29sdW1ucyhjb2x1bW5zKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbHVtbnMgPT0gby5jb2x1
bW5zICYmIHJvd3MgPT0gby5yb3dzOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBHcmlkQXJlYSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8p
OwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR3JpZEFyZWEmKSBjb25zdCA9IGRl
ZmF1bHQ7CiAKLSAgICBHcmlkU3BhbiBjb2x1bW5zOwogICAgIEdyaWRTcGFuIHJvd3M7CisgICAg
R3JpZFNwYW4gY29sdW1uczsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEdyaWRBcmVh
PiBOYW1lZEdyaWRBcmVhTWFwOwordXNpbmcgTmFtZWRHcmlkQXJlYU1hcCA9IEhhc2hNYXA8U3Ry
aW5nLCBHcmlkQXJlYT47CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0aC5oCmluZGV4IDg2YWNkMzMwZGY2OWY4M2IwZDJm
ZDMyMjdlYmI4MGU5ZWZlN2U4N2EuLmM5Y2Q2Njc4MWZhNTI0OTljODg5ZjNkNTZkMzM0ODRlMDhj
MTQ0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVu
Z3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaApA
QCAtNDIsNyArNDIsNiBAQCBjbGFzcyBHcmlkTGVuZ3RoIHsKIHB1YmxpYzoKICAgICBHcmlkTGVu
Z3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogICAgICAgICA6IG1fbGVuZ3RoKGxlbmd0aCkKLSAg
ICAgICAgLCBtX2ZsZXgoMCkKICAgICAgICAgLCBtX3R5cGUoTGVuZ3RoVHlwZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghbGVuZ3RoLmlzVW5kZWZpbmVkKCkpOwpAQCAtNjMsMjMgKzYyLDE2IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaXNQZXJjZW50YWdlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IExlbmd0aFR5cGUgJiYgbV9sZW5ndGguaXNQZXJjZW50T3JDYWxjdWxhdGVkKCk7IH0KIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlkTGVuZ3RoJiBvKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fdHlwZSA9PSBvLm1fdHlwZSAmJiBtX2ZsZXggPT0gby5tX2ZsZXggJiYg
bV9sZW5ndGggPT0gby5tX2xlbmd0aDsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEdyaWRMZW5ndGgmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBib29sIGlzQ29udGVudFNpemVk
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IExlbmd0aFR5cGUgJiYgKG1fbGVuZ3RoLmlzQXV0
bygpIHx8IG1fbGVuZ3RoLmlzTWluQ29udGVudCgpIHx8IG1fbGVuZ3RoLmlzTWF4Q29udGVudCgp
KTsgfQogICAgIGJvb2wgaXNBdXRvKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IExlbmd0aFR5
cGUgJiYgbV9sZW5ndGguaXNBdXRvKCk7IH0KIAogcHJpdmF0ZToKLSAgICAvLyBJZGVhbGx5IHdl
IHdvdWxkIHB1dCB0aGUgMiBmb2xsb3dpbmcgZmllbGRzIGluIGEgdW5pb24sIGJ1dCBMZW5ndGgg
aGFzIGEgY29uc3RydWN0b3IsCi0gICAgLy8gYSBkZXN0cnVjdG9yIGFuZCBhIGNvcHkgYXNzaWdu
bWVudCB3aGljaCBpc24ndCBhbGxvd2VkLgorICAgIC8vIENvdWxkIHVzZSBhIFZhcmlhbnQgaGVy
ZS4KICAgICBMZW5ndGggbV9sZW5ndGg7Ci0gICAgZG91YmxlIG1fZmxleDsKLSAgICBlbnVtIEdy
aWRMZW5ndGhUeXBlIHsKLSAgICAgICAgTGVuZ3RoVHlwZSwKLSAgICAgICAgRmxleFR5cGUKLSAg
ICB9OworICAgIGRvdWJsZSBtX2ZsZXggeyAwIH07CisgICAgZW51bSBHcmlkTGVuZ3RoVHlwZSA6
IGJvb2wgeyBMZW5ndGhUeXBlLCBGbGV4VHlwZSB9OwogICAgIEdyaWRMZW5ndGhUeXBlIG1fdHlw
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Hcmlk
UG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlv
bi5jcHAKaW5kZXggZTZjYzk2MTdiOTAxYjQyYTBlYTM0MzI1N2JmMWY4ZDE1MWRlZWJhYS4uNWY0
Y2UyODI5NmJiZDBkMDdmMDc1MzM0MTgzNmM1N2E1MjZlZDU1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAKQEAgLTk1LDExICs5NSw2IEBA
IGludCBHcmlkUG9zaXRpb246Om1pbigpCiAgICAgcmV0dXJuIC1tYXgoKTsKIH0KIAotYm9vbCBH
cmlkUG9zaXRpb246Om9wZXJhdG9yPT0oY29uc3QgR3JpZFBvc2l0aW9uJiBvdGhlcikgY29uc3QK
LXsKLSAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZSAmJiBtX2ludGVnZXJQb3NpdGlv
biA9PSBvdGhlci5tX2ludGVnZXJQb3NpdGlvbiAmJiBtX25hbWVkR3JpZExpbmUgPT0gb3RoZXIu
bV9uYW1lZEdyaWRMaW5lOwotfQotCiB2b2lkIEdyaWRQb3NpdGlvbjo6c2V0TWF4UG9zaXRpb25G
b3JUZXN0aW5nKHVuc2lnbmVkIG1heFBvc2l0aW9uKQogewogICAgIGdNYXhQb3NpdGlvbkZvclRl
c3RpbmcgPSBzdGF0aWNfY2FzdDxpbnQ+KG1heFBvc2l0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uaAppbmRleCAyNTI3ZjdjNzNmN2U0MzA2OTU2
Nzg2YjVlNTE4YjY0ZGVhNGJhYmI1Li40NmI1Njk5MmI1OTZlNzU3MTk1MzUwOWVhMTVkZGZhMDMw
YjEwZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBv
c2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlv
bi5oCkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgbmFtZWRHcmlkTGluZSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBzcGFuUG9zaXRpb24oKSBjb25zdDsKIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlkUG9zaXRpb24mIG90aGVyKSBjb25zdDsKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgR3JpZFBvc2l0aW9uJikgY29uc3QgPSBkZWZhdWx0Owog
CiAgICAgYm9vbCBzaG91bGRCZVJlc29sdmVkQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBpc0F1dG8oKSB8fCBpc1NwYW4oKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmgKaW5kZXggMWYzMDg3ODBmZWY2OTk2NWFhYTU0
MThlOTVlZmFmOTFlOWJjMTA5OC4uZTVmOTM1NDc2ZDE2OGZlNzgzZjEwNmQzYmNiNmFlMGVlZWM3
NGUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1l
TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3Qu
aApAQCAtODEsOCArODEsNyBAQCBwdWJsaWM6CiAgICAgfktleWZyYW1lTGlzdCgpOwogICAgICAg
ICAKICAgICBLZXlmcmFtZUxpc3QmIG9wZXJhdG9yPShLZXlmcmFtZUxpc3QmJikgPSBkZWZhdWx0
OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXlmcmFtZUxpc3QmIG8pIGNvbnN0OwotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBLZXlmcmFtZUxpc3QmIG8pIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gbyk7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5ZnJhbWVMaXN0Jikg
Y29uc3Q7CiAKICAgICBjb25zdCBBdG9tU3RyaW5nJiBhbmltYXRpb25OYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbmltYXRpb25OYW1lOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvTGluZUNsYW1wVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9MaW5lQ2xhbXBWYWx1ZS5oCmluZGV4IDI1ZGI0ZTMyNWVhMzJhZTIyNDVmOWFj
N2Y0NjI0YmEwZTQ1YmM5NjYuLjRlNDM0YzI4NzIxYTdjOTI4Y2YxYmE0ODQ1MDA4NTg0NmU1M2Iw
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9MaW5lQ2xhbXBW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9MaW5lQ2xhbXBWYWx1
ZS5oCkBAIC0zMCwzNyArMzAsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogY2xhc3Mg
TGluZUNsYW1wVmFsdWUgewogcHVibGljOgotICAgIExpbmVDbGFtcFZhbHVlKCkKLSAgICAgICAg
OiBtX3R5cGUoTGluZUNsYW1wOjpMaW5lQ291bnQpCi0gICAgICAgICwgbV92YWx1ZSgtMSkKLSAg
ICB7Ci0gICAgfQotICAgIAorICAgIExpbmVDbGFtcFZhbHVlKCkgPSBkZWZhdWx0OworCiAgICAg
TGluZUNsYW1wVmFsdWUoaW50IHZhbHVlLCBMaW5lQ2xhbXAgdHlwZSkKICAgICAgICAgOiBtX3R5
cGUodHlwZSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9Ci0gICAgCisK
ICAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0gICAgCiAgICAgYm9v
bCBpc1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTGluZUNsYW1wOjpQZXJj
ZW50YWdlOyB9Ci0KICAgICBib29sIGlzTm9uZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0g
LTE7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lQ2xhbXBWYWx1ZSYgbykgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB2YWx1ZSgpID09IG8udmFsdWUoKSAmJiBpc1BlcmNl
bnRhZ2UoKSA9PSBvLmlzUGVyY2VudGFnZSgpOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgTGluZUNsYW1wVmFsdWUmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExpbmVD
bGFtcFZhbHVlJikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogcHJpdmF0ZToKLSAgICBMaW5lQ2xh
bXAgbV90eXBlOwotICAgIGludCBtX3ZhbHVlOworICAgIExpbmVDbGFtcCBtX3R5cGUgeyBMaW5l
Q2xhbXA6OkxpbmVDb3VudCB9OworICAgIGludCBtX3ZhbHVlIHsgLTEgfTsKIH07CiAgICAgCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9OaW5lUGllY2VJbWFnZS5oCmluZGV4IGMzOWRlYzMzNDQxMmRkOTUwNjBhNWExNmY0MmZmOTQ4
MmJlM2JkNGUuLmYzODkzODZiODhlZGM4OWUzMWQ0OGUxMThkNmRmOTlhOTk2MjFkMzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oCkBAIC0x
MDYsMTYgKzEwNiwxMiBAQCBpbmxpbmUgc3RkOjpvcHRpb25hbDxCb3hTaWRlPiBpbWFnZVBpZWNl
VmVydGljYWxTaWRlKEltYWdlUGllY2UgcGllY2UpCiAKIGNsYXNzIE5pbmVQaWVjZUltYWdlIHsK
IHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIFR5cGUgewotICAgICAgICBOb3JtYWwsCi0gICAgICAg
IE1hc2sKLSAgICB9OworICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBOb3JtYWwsIE1hc2sg
fTsKIAogICAgIE5pbmVQaWVjZUltYWdlKFR5cGUgPSBUeXBlOjpOb3JtYWwpOwogICAgIE5pbmVQ
aWVjZUltYWdlKFJlZlB0cjxTdHlsZUltYWdlPiYmLCBMZW5ndGhCb3ggaW1hZ2VTbGljZXMsIGJv
b2wgZmlsbCwgTGVuZ3RoQm94IGJvcmRlclNsaWNlcywgTGVuZ3RoQm94IG91dHNldCwgTmluZVBp
ZWNlSW1hZ2VSdWxlIGhvcml6b250YWxSdWxlLCBOaW5lUGllY2VJbWFnZVJ1bGUgdmVydGljYWxS
dWxlKTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOaW5lUGllY2VJbWFnZSYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YSA9PSBvdGhlci5tX2RhdGE7IH0KLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgTmluZVBpZWNlSW1hZ2UmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2RhdGEg
IT0gb3RoZXIubV9kYXRhOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5pbmVQaWVjZUlt
YWdlJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS0+aW1hZ2U7IH0KICAgICBTdHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS0+aW1hZ2UuZ2V0KCk7IH0KQEAgLTE5Miw3ICsxODgsNiBAQCBwcml2YXRlOgog
ICAgICAgICBSZWY8RGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBEYXRhJikgY29uc3Q7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEYXRh
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgICAgICBi
b29sIGZpbGwgeyBmYWxzZSB9OwogICAgICAgICBOaW5lUGllY2VJbWFnZVJ1bGUgaG9yaXpvbnRh
bFJ1bGUgeyBOaW5lUGllY2VJbWFnZVJ1bGU6OlN0cmV0Y2ggfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PZmZzZXRSb3RhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvT2Zmc2V0Um90YXRpb24uY3BwCmluZGV4IGZlODNmODI5ODIy
M2ViODg4MThlNjFjNjdiODZlMTQ1Njc0YjU4OTguLmVhMDViZGExNmFiM2M2ZDc1ZjI5MDIyOGY5
Nzg1YjQzNDdkNTI2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9PZmZzZXRSb3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L09mZnNldFJvdGF0aW9uLmNwcApAQCAtMzQsMTEgKzM0LDYgQEAgT2Zmc2V0Um90YXRpb246Ok9m
ZnNldFJvdGF0aW9uKGJvb2wgaGFzQXV0bywgZmxvYXQgYW5nbGUpCiB7CiB9CiAKLWJvb2wgT2Zm
c2V0Um90YXRpb246Om9wZXJhdG9yPT0oY29uc3QgT2Zmc2V0Um90YXRpb24mIG8pIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1faGFzQXV0byA9PSBvLm1faGFzQXV0byAmJiBtX2FuZ2xlID09IG8ubV9h
bmdsZTsKLX0KLQogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYg
dHMsIGNvbnN0IE9mZnNldFJvdGF0aW9uJiByb3RhdGlvbikKIHsKICAgICB0cy5kdW1wUHJvcGVy
dHkoImhhc0F1dG8iLCByb3RhdGlvbi5oYXNBdXRvKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL09mZnNldFJvdGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvT2Zmc2V0Um90YXRpb24uaAppbmRleCAzNDEyN2ZlYWZjZjNjY2E4NmY1
YTg2OWYzMjcwYTU5MDg0ZWI1YjhiLi44ZDEzZTA3MjkxZjI3Mzk1MTRkNjBiZjBhYjVkMTA4MmVj
ZmE1YTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT2Zmc2V0
Um90YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT2Zmc2V0Um90
YXRpb24uaApAQCAtMzYsOCArMzYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNBdXRvKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNBdXRvOyB9CiAgICAgZmxvYXQgYW5nbGUoKSBjb25zdCB7IHJldHVy
biBtX2FuZ2xlOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT2Zmc2V0Um90YXRpb24m
KSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT2Zmc2V0Um90YXRpb24mIG8pIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
T2Zmc2V0Um90YXRpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBt
X2hhc0F1dG87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT3V0
bGluZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZhbHVl
LmgKaW5kZXggMjAyOTMyYzdjOTJiN2UxZjAzZGFhMDM3M2Q4NDY4YmQ1MzFkMWVkMy4uNjQwMzBm
M2QwOTllOTIwODVlY2I0NThmMjMyZTM3ZDNhY2RlODMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL091dGxpbmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaApAQCAtMjksMTcgKzI5LDkgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgT3V0bGluZVZhbHVlIDogcHVibGljIEJvcmRlclZhbHVl
IHsKLWZyaWVuZCBjbGFzcyBSZW5kZXJTdHlsZTsKKyAgICBmcmllbmQgY2xhc3MgUmVuZGVyU3R5
bGU7CiBwdWJsaWM6Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE91dGxpbmVWYWx1ZSYgbykg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX3N0
eWxlID09IG8ubV9zdHlsZSAmJiBtX2NvbG9yID09IG8ubV9jb2xvciAmJiBtX29mZnNldCA9PSBv
Lm1fb2Zmc2V0ICYmIG1faXNBdXRvID09IG8ubV9pc0F1dG87Ci0gICAgfQotICAgIAotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBPdXRsaW5lVmFsdWUmIG8pIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE91dGxpbmVWYWx1ZSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAKICAgICBmbG9hdCBvZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIE91dGxpbmVJc0F1dG8gaXNBdXRvKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3V0bGluZUlzQXV0bz4obV9pc0F1dG8pOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUXVvdGVzRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1F1b3Rlc0RhdGEuaAppbmRleCA1ZDNlYzE4
OTEyZTFmNmYyMmJlNTY2NzRiMTZmOWJlMTJiNjdmN2Q3Li43NTRmMTdmNmY2MGE5ZDA2Y2ZjMjA0
YmIzNWRlMzc2ZDQzMjBlZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUXVvdGVzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9R
dW90ZXNEYXRhLmgKQEAgLTU1LDkgKzU1LDQgQEAgcHJpdmF0ZToKICNwcmFnbWEgd2FybmluZyhw
b3ApCiAjZW5kaWYKIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBRdW90ZXNEYXRhJiBh
LCBjb25zdCBRdW90ZXNEYXRhJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCmluZGV4IDZiNzZjMjU3NzlhNGIxZTcwNTU5ZjZjNGRmYjQ4MTc2M2U1
NDkzMWUuLmY4ZWI1ZDIwOWY4ZWIzYTI1NWM1NDUwYTgxMDVmNDJlMWUzN2VmODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTQ5Nyw3
ICsxNDk3LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlNb3Rpb25QYXRoVHJhbnNmb3JtKFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnMKICAgICAvLyBTaGlmdCBlbGVtZW50
IHRvIHRoZSBhbmNob3Igc3BlY2lmaWVkIGJ5IG9mZnNldC1hbmNob3IuCiAgICAgYXV0byB0cmFu
c2Zvcm1PcmlnaW4gPSBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQodHJhbnNmb3JtT3JpZ2luWFko
KSwgYm91bmRpbmdCb3guc2l6ZSgpKSArIGJvdW5kaW5nQm94LmxvY2F0aW9uKCk7CiAgICAgYXV0
byBhbmNob3IgPSB0cmFuc2Zvcm1PcmlnaW47Ci0gICAgaWYgKCFvZmZzZXRBbmNob3IoKS54KCku
aXNBdXRvKCkpCisgICAgaWYgKCFvZmZzZXRBbmNob3IoKS54LmlzQXV0bygpKQogICAgICAgICBh
bmNob3IgPSBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQob2Zmc2V0QW5jaG9yKCksIGJvdW5kaW5n
Qm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2NhdGlvbigpOwogICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUoLWFuY2hvci54KCksIC1hbmNob3IueSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAwNzQzMWY5YTI4MDExYzdmN2VhOWFhNWM2
NTljMDU5MDExODE0NTg4Li40ODg2ZmFmNmQxNDVjMmYxNjRhYTc2MTc2NGQzN2U2ZWY3MTZiMjU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAt
MTA5LDcgKzEwOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQm9yZGVyRGF0YTsK
IGNsYXNzIENvbnRlbnREYXRhOwotY2xhc3MgQ291bnRlckNvbnRlbnQ7CiBjbGFzcyBDdXJzb3JM
aXN0OwogY2xhc3MgRm9udENhc2NhZGU7CiBjbGFzcyBGb250TWV0cmljczsKQEAgLTEyMSw2ICsx
MjAsNyBAQCBjbGFzcyBTdHlsZUluaGVyaXRlZERhdGE7CiBjbGFzcyBTdHlsZVNjcm9sbFNuYXBB
cmVhOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKK3N0cnVjdCBDb3VudGVyQ29udGVu
dDsKIHN0cnVjdCBTY3JvbGxTbmFwQWxpZ247CiBzdHJ1Y3QgU2Nyb2xsU25hcFR5cGU7CiAKQEAg
LTE2MSw3ICsxNjEsNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZW5k
ZXJTdHlsZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAg
ICB2b2lkIGluaGVyaXRGcm9tKGNvbnN0IFJlbmRlclN0eWxlJiBpbmhlcml0UGFyZW50KTsKICAg
ICB2b2lkIGNvcHlOb25Jbmhlcml0ZWRGcm9tKGNvbnN0IFJlbmRlclN0eWxlJik7CkBAIC0xNTgy
LDcgKzE1ODEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRleHRDb21iaW5lIGluaXRpYWxUZXh0
Q29tYmluZSgpIHsgcmV0dXJuIFRleHRDb21iaW5lOjpOb25lOyB9CiAgICAgc3RhdGljIFRleHRP
cmllbnRhdGlvbiBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1cm4gVGV4dE9yaWVudGF0
aW9uOjpNaXhlZDsgfQogICAgIHN0YXRpYyBPYmplY3RGaXQgaW5pdGlhbE9iamVjdEZpdCgpIHsg
cmV0dXJuIE9iamVjdEZpdDo6RmlsbDsgfQotICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFs
T2JqZWN0UG9zaXRpb24oKSB7IHJldHVybiBMZW5ndGhQb2ludChMZW5ndGgoNTAuMGYsIExlbmd0
aFR5cGU6OlBlcmNlbnQpLCBMZW5ndGgoNTAuMGYsIExlbmd0aFR5cGU6OlBlcmNlbnQpKTsgfQor
ICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2JqZWN0UG9zaXRpb24oKSB7IHJldHVybiB7
IExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCg1MC4wZiwgTGVuZ3Ro
VHlwZTo6UGVyY2VudCkgfTsgfQogICAgIHN0YXRpYyBFbXB0eUNlbGwgaW5pdGlhbEVtcHR5Q2Vs
bHMoKSB7IHJldHVybiBFbXB0eUNlbGw6OlNob3c7IH0KICAgICBzdGF0aWMgTGlzdFN0eWxlUG9z
aXRpb24gaW5pdGlhbExpc3RTdHlsZVBvc2l0aW9uKCkgeyByZXR1cm4gTGlzdFN0eWxlUG9zaXRp
b246Ok91dHNpZGU7IH0KICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgaW5pdGlhbExpc3RT
dHlsZVN0cmluZ1ZhbHVlKCkgeyByZXR1cm4gbnVsbEF0b20oKTsgfQpAQCAtMTg5NSwxMSArMTg5
NCwxMSBAQCBwdWJsaWM6CiAKICAgICBMZW5ndGhQb2ludCBvZmZzZXRQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPm9mZnNldFBvc2l0aW9uOyB9CiAgICAg
dm9pZCBzZXRPZmZzZXRQb3NpdGlvbihMZW5ndGhQb2ludCYmIHBvc2l0aW9uKSB7IFNFVF9WQVIo
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgb2Zmc2V0UG9zaXRpb24sIFdURk1vdmUocG9zaXRpb24p
KTsgfQotICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0UG9zaXRpb24oKSB7IHJl
dHVybiBMZW5ndGhQb2ludChMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhU
eXBlOjpBdXRvKSk7IH0KKyAgICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldFBvc2l0
aW9uKCkgeyByZXR1cm4geyB7IExlbmd0aFR5cGU6OkF1dG8gfSwgeyBMZW5ndGhUeXBlOjpBdXRv
IH0gfTsgfQogCiAgICAgTGVuZ3RoUG9pbnQgb2Zmc2V0QW5jaG9yKCkgY29uc3QgeyByZXR1cm4g
bV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0QW5jaG9yOyB9CiAgICAgdm9pZCBzZXRPZmZz
ZXRBbmNob3IoTGVuZ3RoUG9pbnQmJiBwb3NpdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIG9mZnNldEFuY2hvciwgV1RGTW92ZShwb3NpdGlvbikpOyB9Ci0gICAgc3RhdGlj
IExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRBbmNob3IoKSB7IHJldHVybiBMZW5ndGhQb2ludChM
ZW5ndGgoTGVuZ3RoVHlwZTo6QXV0byksIExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSk7IH0KKyAg
ICBzdGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldEFuY2hvcigpIHsgcmV0dXJuIHsgeyBM
ZW5ndGhUeXBlOjpBdXRvIH0sIHsgTGVuZ3RoVHlwZTo6QXV0byB9IH07IH0KIAogICAgIE9mZnNl
dFJvdGF0aW9uIG9mZnNldFJvdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm9mZnNldFJvdGF0ZTsgfQogICAgIHZvaWQgc2V0T2Zmc2V0Um90YXRlKE9mZnNldFJv
dGF0aW9uJiYgcm90YXRpb24pIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvZmZz
ZXRSb3RhdGUsIFdURk1vdmUocm90YXRpb24pKTsgfQpAQCAtMTkwOCw3ICsxOTA3LDYgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBzdHJ1Y3QgTm9uSW5oZXJpdGVkRmxhZ3MgewogICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmKSBjb25zdDsKLSAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgICAgICB2b2lkIGNvcHlOb25Jbmhlcml0
ZWRGcm9tKGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJik7CiAKQEAgLTE5NTEsNyArMTk0OSw2IEBA
IHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3MgewogICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmKSBjb25zdDsKLSAgICAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KIAogICAgICAgICB1bnNpZ25lZCBlbXB0eUNlbGxzIDogMTsgLy8gRW1w
dHlDZWxsCiAgICAgICAgIHVuc2lnbmVkIGNhcHRpb25TaWRlIDogMjsgLy8gQ2FwdGlvblNpZGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHls
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKaW5k
ZXggN2YxOWIwZjlmMjllMTVjODY3ZDU2MzgwODhhNGEwZDJmMmU4ZGYyMS4uOTdkN2ZlYjIyMDA2
MWFkMGFmYWUwNzZlZmQzNDYwMzQ3ZmNiYmIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgog
ICAgIFN0eWxlRGlmZmVyZW5jZSBkaWZmKGNvbnN0IFNWR1JlbmRlclN0eWxlJikgY29uc3Q7CiAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZHUmVuZGVyU3R5bGUmKSBjb25zdDsKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU1ZHUmVuZGVyU3R5bGUmIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgLy8gSW5pdGlhbCB2YWx1ZXMgZm9yIGFsbCB0
aGUgcHJvcGVydGllcwogICAgIHN0YXRpYyBBbGlnbm1lbnRCYXNlbGluZSBpbml0aWFsQWxpZ25t
ZW50QmFzZWxpbmUoKSB7IHJldHVybiBBbGlnbm1lbnRCYXNlbGluZTo6QXV0bzsgfQpAQCAtMTky
LDcgKzE5MSw2IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgSW5oZXJpdGVkRmxhZ3MgewogICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmKSBjb25zdDsKLSAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgICAgICB1bnNpZ25lZCBzaGFwZVJlbmRl
cmluZyA6IDI7IC8vIFNoYXBlUmVuZGVyaW5nCiAgICAgICAgIHVuc2lnbmVkIGNsaXBSdWxlIDog
MTsgLy8gV2luZFJ1bGUKQEAgLTIwNyw3ICsyMDUsNiBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBO
b25Jbmhlcml0ZWRGbGFncyB7CiAgICAgICAgIC8vIDMyIGJpdCBub24taW5oZXJpdGVkLCBkb24n
dCBhZGQgdG8gdGhlIHN0cnVjdCwgb3IgdGhlIG9wZXJhdG9yIHdpbGwgYnJlYWsuCiAgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIGZsYWdzID09IG90aGVyLmZsYWdzOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBOb25Jbmhlcml0ZWRGbGFncyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGZsYWdzICE9IG90
aGVyLmZsYWdzOyB9CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgc3RydWN0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURl
ZnMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMu
aAppbmRleCBlMTM0MThhYWJmOGE4MDViMGJiZmU3ZjU1M2U0Y2YzODYyNTEwOTBmLi5hOGJhZjQz
OTc4YTJjZDhiNWEwN2ViMGZhMmJkN2I5YmZlMzgzMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5oCkBAIC0xNDksMTAgKzE0
OSw2IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVGaWxsRGF0YT4gY29weSgpIGNvbnN0OwogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlRmlsbERhdGEmKSBjb25zdDsKLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgU3R5bGVGaWxsRGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQogCiAgICAgZmxvYXQgb3BhY2l0
eTsKICAgICBDb2xvciBwYWludENvbG9yOwpAQCAtMTczLDEwICsxNjksNiBAQCBwdWJsaWM6CiAg
ICAgUmVmPFN0eWxlU3Ryb2tlRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFN0eWxlU3Ryb2tlRGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTdHlsZVN0cm9rZURhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KIAogICAgIGZsb2F0IG9wYWNpdHk7CiAKQEAgLTIw
MywxMCArMTk1LDYgQEAgcHVibGljOgogICAgIFJlZjxTdHlsZVN0b3BEYXRhPiBjb3B5KCkgY29u
c3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTdG9wRGF0YSYpIGNvbnN0Owot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVN0b3BEYXRhJiBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CiAKICAgICBmbG9h
dCBvcGFjaXR5OwogICAgIENvbG9yIGNvbG9yOwpAQCAtMjIyLDEwICsyMTAsNiBAQCBwdWJsaWM6
CiAgICAgUmVmPFN0eWxlVGV4dERhdGE+IGNvcHkoKSBjb25zdDsKICAgICAKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU3R5bGVUZXh0RGF0YSYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBTdHlsZVRleHREYXRhJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CiAKICAgICBTVkdMZW5ndGhWYWx1ZSBr
ZXJuaW5nOwogCkBAIC0yNDEsMTAgKzIyNSw2IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVNaXNj
RGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlTWlz
Y0RhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVNaXNjRGF0YSYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgfQogCiAgICAgZmxvYXQgZmxvb2RPcGFjaXR5OwogICAgIENvbG9yIGZsb29kQ29sb3I7CkBA
IC0yNjQsMTAgKzI0NCw2IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVTaGFkb3dTVkdEYXRhPiBj
b3B5KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTaGFkb3dTVkdE
YXRhJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlU2hhZG93U1ZHRGF0
YSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
Ci0gICAgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IHNoYWRvdzsKIApAQCAt
MjgzLDEwICsyNTksNiBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlSW5oZXJpdGVkUmVzb3VyY2VE
YXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVJbmhl
cml0ZWRSZXNvdXJjZURhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5
bGVJbmhlcml0ZWRSZXNvdXJjZURhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KIAogICAgIFN0cmluZyBtYXJrZXJTdGFydDsK
ICAgICBTdHJpbmcgbWFya2VyTWlkOwpAQCAtMzA0LDEwICsyNzYsNiBAQCBwdWJsaWM6CiAgICAg
UmVmPFN0eWxlTGF5b3V0RGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0eWxlTGF5b3V0RGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZUxheW91dERhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwotICAgIH0KIAogICAgIExlbmd0aCBjeDsKICAgICBMZW5ndGggY3k7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKaW5kZXgg
ODdjYTJiMjUyZjk2Zjg1ZTRiNDQwYjZmZDJjMGY4ZTkzYWRlN2EwYy4uZGUzZGM2YzRjZGUxMjk3
ZWVhMGNmY2Q2ZDYxZDY0NDEyODEwZTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TaGFkb3dEYXRhLmNwcApAQCAtMjgsNyArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pCi0gICAg
OiBtX2xvY2F0aW9uKG8ubV9sb2NhdGlvbi54KCksIG8ubV9sb2NhdGlvbi55KCkpCisgICAgOiBt
X2xvY2F0aW9uKG8ubV9sb2NhdGlvbikKICAgICAsIG1fc3ByZWFkKG8ubV9zcHJlYWQpCiAgICAg
LCBtX3JhZGl1cyhvLm1fcmFkaXVzKQogICAgICwgbV9jb2xvcihvLm1fY29sb3IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaAppbmRleCAyMmZlZjc2MmJjYTMx
MGI2M2FlZmU4NTg2ZjQyMmFiOWY4M2MwNWYyLi40MzRmYjc3MDc0YjE2MWJhOTQ4MjJlZTFkNGYx
MDFlZGYwNDJhOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dE
YXRhLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIFNoYWRvd0RhdGEoKSA9IGRlZmF1
bHQ7CiAKICAgICBTaGFkb3dEYXRhKGNvbnN0IExlbmd0aFBvaW50JiBsb2NhdGlvbiwgTGVuZ3Ro
IHJhZGl1cywgTGVuZ3RoIHNwcmVhZCwgU2hhZG93U3R5bGUgc3R5bGUsIGJvb2wgaXNXZWJraXRC
b3hTaGFkb3csIGNvbnN0IENvbG9yJiBjb2xvcikKLSAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0
aW9uLngoKSwgbG9jYXRpb24ueSgpKQorICAgICAgICA6IG1fbG9jYXRpb24obG9jYXRpb24pCiAg
ICAgICAgICwgbV9zcHJlYWQoc3ByZWFkKQogICAgICAgICAsIG1fcmFkaXVzKHJhZGl1cykKICAg
ICAgICAgLCBtX2NvbG9yKGNvbG9yKQpAQCAtNTYsMTQgKzU2LDEwIEBAIHB1YmxpYzoKIAogICAg
IFNoYWRvd0RhdGEmIG9wZXJhdG9yPShTaGFkb3dEYXRhJiYpID0gZGVmYXVsdDsKIAotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTaGFkb3dEYXRhJiBvKSBjb25zdDsKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgU2hhZG93RGF0YSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
KCp0aGlzID09IG8pOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhZG93RGF0
YSYpIGNvbnN0OwogICAgIAotICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJuIG1f
bG9jYXRpb24ueCgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB5KCkgY29uc3QgeyByZXR1cm4gbV9s
b2NhdGlvbi55KCk7IH0KKyAgICBjb25zdCBMZW5ndGgmIHgoKSBjb25zdCB7IHJldHVybiBtX2xv
Y2F0aW9uLng7IH0KKyAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7IHJldHVybiBtX2xvY2F0
aW9uLnk7IH0KICAgICBjb25zdCBMZW5ndGhQb2ludCYgbG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2xvY2F0aW9uOyB9CiAgICAgY29uc3QgTGVuZ3RoJiByYWRpdXMoKSBjb25zdCB7IHJldHVy
biBtX3JhZGl1czsgfQogICAgIExheW91dFVuaXQgcGFpbnRpbmdFeHRlbnQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKaW5kZXggNWRmMTQyODli
ZTEwN2M0ZGE2N2IxNTIyMTliY2I1NWFjNzE0YWEzZi4uZGNkNjkzZGEyZWY5YThhZDFkMDAzM2Ex
Y2FlZmJlZmVhYjE3Yzg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NoYXBlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hh
cGVWYWx1ZS5oCkBAIC02NywxMCArNjcsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNoYXBlVmFsdWUmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU2hhcGVWYWx1ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7Ci0gICAgfQogCiBwcml2YXRlOgogICAgIFNoYXBlVmFsdWUoUmVmPEJh
c2ljU2hhcGU+JiYgc2hhcGUsIENTU0JveFR5cGUgY3NzQm94KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgKaW5kZXggN2YzYmNj
ZDkyN2JlMDlkY2EwYzliOTgwNTRhNTc1MjhlYjg5NTExMi4uOWUwOWM1YTIwODVlNWJiZWRmOTk5
YmFlZDA1MDVjOWU1MWU3NWNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCkBAIC0zOSw3ICszOSw2IEBAIHB1YmxpYzoK
ICAgICBSZWY8U3R5bGVCYWNrZ3JvdW5kRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmKSBjb25zdDsKLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBib29sIGlzRXF1aXZhbGVudEZvclBhaW50aW5n
KGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmLCBib29sIGN1cnJlbnRDb2xvckRpZmZlcnMpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVC
b3hEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmgK
aW5kZXggMWE5ZjA3YWNhNmE4MDJkYmE2MWI3ZWM5M2RiNjA1YWM2NmRjMzQwMy4uOTlkYWU3NWE5
ZDMwNGUyZTlhM2ZmNzNmMWNhYmM2ZmExNWJmMjkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUJveERhdGEuaApAQCAtMzksMTAgKzM5LDYgQEAgcHVibGljOgog
ICAgIFJlZjxTdHlsZUJveERhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTdHlsZUJveERhdGEmIG8pIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZUJveERhdGEmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvKTsKLSAgICB9CiAKICAgICBjb25zdCBMZW5ndGgmIHdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV93aWR0aDsgfQogICAgIGNvbnN0IExlbmd0aCYgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9o
ZWlnaHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNvbG9yU2NoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDb2xv
clNjaGVtZS5oCmluZGV4IGVkMzBhOGFmNzE1ZDJlODAwMjc4Y2RkMjg1ZjljNzMzZWEyYWFjYmEu
LjhkOTU2NmZhMGZkZTllNjlkMDVhZTAxZTQ2YWJmZjIyMGJkOTVhNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNvbG9yU2NoZW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ29sb3JTY2hlbWUuaApAQCAtNDEsMTIg
KzQxLDcgQEAgcHVibGljOgogICAgICAgICAsIG1fYWxsb3dzVHJhbnNmb3JtYXRpb25zKGFsbG93
c1RyYW5zZm9ybWF0aW9ucykKICAgICB7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHlsZUNvbG9yU2NoZW1lJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Nv
bG9yU2NoZW1lID09IG90aGVyLm1fY29sb3JTY2hlbWUgJiYgbV9hbGxvd3NUcmFuc2Zvcm1hdGlv
bnMgPT0gb3RoZXIubV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnM7Ci0gICAgfQotCi0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0eWxlQ29sb3JTY2hlbWUmIG90aGVyKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUNvbG9y
U2NoZW1lJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBpc0F1dG8oKSBjb25zdCB7IHJl
dHVybiBtX2NvbG9yU2NoZW1lLmlzRW1wdHkoKSAmJiBtX2FsbG93c1RyYW5zZm9ybWF0aW9uczsg
fQogICAgIGJvb2wgaXNPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNjaGVtZS5pc0VtcHR5
KCkgJiYgIW1fYWxsb3dzVHJhbnNmb3JtYXRpb25zOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ29udGVudEFsaWdubWVudERhdGEuaAppbmRl
eCBkNjU4MDFhZDZhOTgyNzI5ZDNjMTQ2YTk1NTViNGI3ODc0MDk2MjQyLi5jYTk2OGVlZGM2YmUz
MjgxODdlMDcxMWI5YzI5NmI1ZTZhMGFlNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhLmgKQEAgLTUy
LDE1ICs1Miw3IEBAIHB1YmxpYzoKICAgICBDb250ZW50RGlzdHJpYnV0aW9uIGRpc3RyaWJ1dGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRlbnREaXN0cmlidXRpb24+KG1fZGlz
dHJpYnV0aW9uKTsgfQogICAgIE92ZXJmbG93QWxpZ25tZW50IG92ZXJmbG93KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcmZsb3dBbGlnbm1lbnQ+KG1fb3ZlcmZsb3cpOyB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSYgbykgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3Bvc2l0aW9uID09IG8ubV9wb3NpdGlvbiAmJiBt
X2Rpc3RyaWJ1dGlvbiA9PSBvLm1fZGlzdHJpYnV0aW9uICYmIG1fb3ZlcmZsb3cgPT0gby5tX292
ZXJmbG93OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUNvbnRlbnRB
bGlnbm1lbnREYXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
byk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1l
bnREYXRhJikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcG9z
aXRpb24gOiA0OyAvLyBDb250ZW50UG9zaXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgKaW5kZXggYjE1YmNm
MjUxNTg1YTMwYWIwMzQ4OTlmOWVmYTZiOTg5YzI2NDBlMS4uMGQ2YzEwZTI4NmI0OGFlZWJkYjll
NmMwMWYxODFkZWM1NGI2ZWJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgKQEAgLTQ4LDggKzQ4LDYgQEAg
cHVibGljOgogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAgICAgCiAgICAgdm9pZCBzZXRDdXN0b21Qcm9wZXJ0eVZh
bHVlKGNvbnN0IEF0b21TdHJpbmcmIG5hbWUsIFJlZjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiYm
IHZhbHVlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaAppbmRleCA4NmI3YmNh
ZjZhM2JlMmRhN2FkMTg1NjEwNjBhNzdjYjhhNjA5ZTFmLi42Y2M1Y2IyMWU0NmI0MDkyMzViNmE0
Yjk1Y2UwNTE0YjliOGFiMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oCkBAIC0z
NSwxMCArMzUsNiBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94
RGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlRGVw
cmVjYXRlZEZsZXhpYmxlQm94RGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KIAogICAgIGZsb2F0IGZsZXg7
CiAgICAgdW5zaWduZWQgZmxleEdyb3VwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlRmlsdGVyRGF0YS5oCmluZGV4IGE4YmE4MzFlMmMyNTVkN2U4MmJlODNmYTU1
OTMyOGMxMmY0YWZjZWIuLmY1Y2NhMDc3ZjAwMjdjZDBjMGE3ZTE4ODVmZjYyYmEyNjEzNWU2YWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRlckRh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRh
LmgKQEAgLTM3LDEwICszNyw2IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVGaWx0ZXJEYXRhPiBj
b3B5KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVGaWx0ZXJEYXRh
JikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlRmlsdGVyRGF0YSYgbykg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KIAogICAg
IEZpbHRlck9wZXJhdGlvbnMgb3BlcmF0aW9uczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaAppbmRleCBkNDVhZWQxN2U1
NTEyYWQ0ZDgxYWI4YTMwYzliNjJhYjllNTU3YWU1Li4wMjM0YzI0ZDkzNTU4OGRiNTk0NjRjMTlm
YjExMWY2YWQzNmUyZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaApAQCAtMzcsMTAgKzM3LDYgQEAgcHVibGljOgog
ICAgIFJlZjxTdHlsZUZsZXhpYmxlQm94RGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0eWxlRmxleGlibGVCb3hEYXRhJikgY29uc3Q7Ci0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0eWxlRmxleGlibGVCb3hEYXRhJiBvKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQogCiAgICAgZmxvYXQgZmxleEdyb3c7
CiAgICAgZmxvYXQgZmxleFNocmluazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVHcmlkRGF0YS5oCmluZGV4IDQzZGUzODYwZDVhOTZlMmEzZWY2ZDFkZjZlNDAxZjIw
YTlhMTUxYmQuLmU0NzFhYjQ2YTRlOTI4MmQ3YTBmNDkxZDQwZGJiOTdjYWI4YzUwYmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaApAQCAtNjAs
MTEgKzYwLDYgQEAgcHVibGljOgogICAgICAgICAgICAgJiYgYXV0b1JlcGVhdENvbHVtbnNUeXBl
ID09IG8uYXV0b1JlcGVhdENvbHVtbnNUeXBlICYmIGF1dG9SZXBlYXRSb3dzVHlwZSA9PSBvLmF1
dG9SZXBlYXRSb3dzVHlwZTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5
bGVHcmlkRGF0YSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8p
OwotICAgIH0KLQogICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBncmlkQ29sdW1uczsKICAgICBW
ZWN0b3I8R3JpZFRyYWNrU2l6ZT4gZ3JpZFJvd3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdyaWRJdGVtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmgKaW5kZXggN2FiMGQ5YmQ4YTBjNDBk
YTA1NDI3ZjE2NmU5MTExMjkzZTY4MDA1MS4uNmM4OTYwNGNmMmEyMmNmYzgzYjc3YTlhMDE2NGUz
NGM2MDA4NDViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlR3JpZEl0ZW1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlR3JpZEl0ZW1EYXRhLmgKQEAgLTQ3LDExICs0Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICYmIGdyaWRSb3dTdGFydCA9PSBvLmdyaWRSb3dTdGFydCAmJiBncmlkUm93RW5kID09IG8uZ3Jp
ZFJvd0VuZDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVHcmlkSXRl
bURhdGEmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAg
ICB9Ci0KICAgICBHcmlkUG9zaXRpb24gZ3JpZENvbHVtblN0YXJ0OwogICAgIEdyaWRQb3NpdGlv
biBncmlkQ29sdW1uRW5kOwogICAgIEdyaWRQb3NpdGlvbiBncmlkUm93U3RhcnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKaW5k
ZXggNTYyYzIzNjI1NThhZmQ0MTUzZDU3MGVhNTUxMWU0NDczZTY1NjBmMS4uNDM0YzJhNmE2N2Uy
OWM5YzY1ZTBkMjM1YzE2N2E2MDA3M2U3YmYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaApAQCAtMzgsNyArMzgsNiBAQCBw
dWJsaWM6CiAgICAgUmVmPFN0eWxlSW5oZXJpdGVkRGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYpIGNvbnN0OwotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgZmxvYXQgaG9yaXpvbnRhbEJvcmRlclNw
YWNpbmc7CiAgICAgZmxvYXQgdmVydGljYWxCb3JkZXJTcGFjaW5nOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTWFycXVlZURhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU1hcnF1ZWVEYXRhLmgKaW5kZXggYjA2YjY0NTM3
MmZkOTg5MGRmZWJjOTA5MGVhYzY1ODNiOThhOTlhZi4uZDNhZWM4NTRjMzk3ODU3MmI4YzQ4Mjk2
NGNkN2QyNDZjZmQ0MDBkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlTWFycXVlZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVNYXJxdWVlRGF0YS5oCkBAIC0zNiwxMSArMzYsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxTdHlsZU1hcnF1ZWVEYXRhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlTWFycXVlZURhdGEpOyB9CiAgICAgUmVmPFN0eWxlTWFycXVlZURhdGE+IGNvcHkoKSBj
b25zdDsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU1hcnF1ZWVEYXRhJiBvKSBj
b25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVNYXJxdWVlRGF0YSYgbykgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3R5bGVNYXJxdWVlRGF0YSYpIGNvbnN0OwogCiAgICAgTGVuZ3Ro
IGluY3JlbWVudDsKICAgICBpbnQgc3BlZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oCmluZGV4IGVjZDQ0ZmQ3NjU5ZWZlNGE1ODkx
Y2E3MTY0N2Q0OThiYjQyZjE1YzcuLjE2OTBkZmQ1Y2Q1YTA0NDYzMmNlMDVjYzBiZDg3MDNjODUw
OTcwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11
bHRpQ29sRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11
bHRpQ29sRGF0YS5oCkBAIC0zOSw3ICszOSw2IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVNdWx0
aUNvbERhdGE+IGNvcHkoKSBjb25zdDsKICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3R5bGVNdWx0aUNvbERhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5
bGVNdWx0aUNvbERhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQogCiAgICAgdW5zaWduZWQgc2hvcnQgcnVsZVdpZHRoKCkgY29uc3QKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERh
dGEuaAppbmRleCA1NjcwOGJlZmZkZDI4YjM2Zjk5OGZmOGQyMjA3ODc0NGFmYWEzMGQ5Li45OTNl
OTZjODE0YjVjMmYyODNmZDNiNjVkNWNlZWI5NjRjNGZkMzUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKQEAg
LTY0LDExICs2NCw3IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVSYXJlSW5oZXJpdGVkRGF0YT4g
Y29weSgpIGNvbnN0OwogICAgIH5TdHlsZVJhcmVJbmhlcml0ZWREYXRhKCk7CiAKLSAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3Q7Ci0gICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmKSBjb25zdDsKIAogICAgIGJvb2wg
aGFzQ29sb3JGaWx0ZXJzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IGRiM2Vk
N2E2NzQzNzQ3OGEyNDEwMTI5ZjAxMTRlMTgxNWQ1ZjgzMzMuLjYzZDVmNWNkNjRmNDMwMmVmMmE0
NWZmYWZhM2Y1MDA3ZTkzZGM3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtOTAsNyArOTAs
NiBAQCBwdWJsaWM6CiAgICAgflN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKTsKICAgICAKICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYpIGNvbnN0
OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIExlbmd0aFBv
aW50IHBlcnNwZWN0aXZlT3JpZ2luKCkgY29uc3QgeyByZXR1cm4geyBwZXJzcGVjdGl2ZU9yaWdp
blgsIHBlcnNwZWN0aXZlT3JpZ2luWSB9OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVJlZmxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJlZmxlY3Rpb24uaAppbmRleCBjY2IzMjQxNGNkNTNkZWI3Y2FmMTEy
YmRjNGM4ZGRiMzA1MTdjYTNlLi5kYzAyZTYzODE1NmYwYjJhYWQ4ZmJmY2RhZDk2Yzg5NGZkNGJk
NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSZWZs
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmVmbGVj
dGlvbi5oCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBt
X2RpcmVjdGlvbiA9PSBvLm1fZGlyZWN0aW9uICYmIG1fb2Zmc2V0ID09IG8ubV9vZmZzZXQgJiYg
bV9tYXNrID09IG8ubV9tYXNrOwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5
bGVSZWZsZWN0aW9uJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiAKICAgICBS
ZWZsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9u
OyB9CiAgICAgY29uc3QgTGVuZ3RoJiBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xs
U25hcFBvaW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xs
U25hcFBvaW50cy5oCmluZGV4IGEyYzdiMGRiM2Q2ZTVmZWQ2NTM2YTU2MzliNDU3OTJlNDc4MDEx
NzkuLjk2NjY0ZTkxOTYxYTk3OTMwMTA3NGEyMmFlMGM0MTQ1MzA0MTljYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTY3JvbGxTbmFwUG9pbnRz
LmgKQEAgLTI1LDM2ICsyNSwyMCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkxlbmd0
aEJveC5oIgotI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTY3JvbGxTbmFwVHlwZSB7
CiAgICAgU2Nyb2xsU25hcEF4aXMgYXhpcyB7IFNjcm9sbFNuYXBBeGlzOjpCb3RoIH07CiAgICAg
U2Nyb2xsU25hcFN0cmljdG5lc3Mgc3RyaWN0bmVzcyB7IFNjcm9sbFNuYXBTdHJpY3RuZXNzOjpO
b25lIH07CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcm9sbFNuYXBUeXBlJikgY29uc3Qg
PSBkZWZhdWx0OwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JvbGxTbmFw
VHlwZSYgYSwgY29uc3QgU2Nyb2xsU25hcFR5cGUmIGIpCi17Ci0gICAgcmV0dXJuIGEuYXhpcyA9
PSBiLmF4aXMgJiYgYS5zdHJpY3RuZXNzID09IGIuc3RyaWN0bmVzczsKLX0KLQotaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTY3JvbGxTbmFwVHlwZSYgYSwgY29uc3QgU2Nyb2xsU25hcFR5
cGUmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQotCiBzdHJ1Y3QgU2Nyb2xsU25hcEFsaWduIHsK
ICAgICBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZSBibG9ja0FsaWduIHsgU2Nyb2xsU25hcEF4aXNB
bGlnblR5cGU6Ok5vbmUgfTsKICAgICBTY3JvbGxTbmFwQXhpc0FsaWduVHlwZSBpbmxpbmVBbGln
biB7IFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlOjpOb25lIH07CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYpIGNvbnN0ID0gZGVmYXVsdDsKIH07CiAKLWlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2Nyb2xsU25hcEFsaWduJiBhLCBjb25zdCBTY3JvbGxTbmFw
QWxpZ24mIGIpCi17Ci0gICAgcmV0dXJuIGEuYmxvY2tBbGlnbiA9PSBiLmJsb2NrQWxpZ24gJiYg
YS5pbmxpbmVBbGlnbiA9PSBiLmlubGluZUFsaWduOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFNjcm9sbFNuYXBBbGlnbiYgYSwgY29uc3QgU2Nyb2xsU25hcEFsaWduJiBiKSB7
IHJldHVybiAhKGEgPT0gYik7IH0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2VsZkFsaWdubWVudERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNlbGZBbGlnbm1lbnREYXRh
LmgKaW5kZXggMDlmMjFkODg1NDg1MGY0ZTBlNDdhZjYyMWJkNDBkMTE0ODEzYjJjYy4uNzAwOTg3
YjVhZmQxZWM1OWNlOGRkZDM0NzhkYzBkMGIyMGFhZmU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2VsZkFsaWdubWVudERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTZWxmQWxpZ25tZW50RGF0YS5oCkBAIC01
NywxMSArNTcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3Bvc2l0aW9uID09IG8ubV9w
b3NpdGlvbiAmJiBtX3Bvc2l0aW9uVHlwZSA9PSBvLm1fcG9zaXRpb25UeXBlICYmIG1fb3ZlcmZs
b3cgPT0gby5tX292ZXJmbG93OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZVNlbGZBbGlnbm1lbnREYXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gbyk7Ci0gICAgfQotCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fcG9zaXRpb24g
OiA0OyAvLyBJdGVtUG9zaXRpb24KICAgICB1bnNpZ25lZCBtX3Bvc2l0aW9uVHlwZTogMTsgLy8g
V2hldGhlciBvciBub3QgYWxpZ25tZW50IHVzZXMgdGhlICdsZWdhY3knIGtleXdvcmQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5oCmlu
ZGV4IDk4NDZiMzBkODM4YTdjZjFjZjRmZGIwOWJkOWY0NzRhN2IyNGRlMTIuLjlmZjUzMmFkNGI0
Nzk2MzA4NDMwNTYyYzcwMjdlMDMyM2Q1MTc0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5kRGF0YS5oCkBAIC0zOCwxMSArMzgsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdHlsZVN1cnJvdW5kRGF0YT4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVN1cnJvdW5kRGF0YSk7IH0KICAgICBSZWY8U3R5bGVTdXJy
b3VuZERhdGE+IGNvcHkoKSBjb25zdDsKICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3R5bGVTdXJyb3VuZERhdGEmIG8pIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZVN1cnJvdW5kRGF0YSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG8pOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVTdXJyb3VuZERh
dGEmKSBjb25zdDsKIAogICAgIExlbmd0aEJveCBvZmZzZXQ7CiAgICAgTGVuZ3RoQm94IG1hcmdp
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5z
Zm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9y
bURhdGEuaAppbmRleCBjMzQxNWM5OTRlOTM3ZTlkNTViNTNjMDMzOTViZjljNzQ1OTQ1OTJhLi5i
NmVhNzNlYzFiNzY4NmEzNjYwMzg1ODY2NWU2YWQ0NjgxNjhlZGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJhbnNmb3JtRGF0YS5oCkBAIC00MCwx
MCArNDAsNiBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlVHJhbnNmb3JtRGF0YT4gY29weSgpIGNv
bnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlVHJhbnNmb3JtRGF0YSYpIGNv
bnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVRyYW5zZm9ybURhdGEmIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0K
ICAgICAKICAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG9wZXJhdGlvbnMu
c2l6ZSgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVZpc3VhbERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZp
c3VhbERhdGEuaAppbmRleCBkNDE4YWNiNTBhMjRmOGEzYjIxOGRkZTE4YzMzZTFhYTg4YThjYjNi
Li4wZTQ4MTVlMDc0YmE4ZDgzZjZiZTA1NDIxNzdjZDc2ZTY0ZTU3MWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5oCkBAIC00NCw3ICs0
NCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICYmIHRleHREZWNvcmF0aW9uID09IG90aGVyLnRl
eHREZWNvcmF0aW9uCiAgICAgICAgICAgICAmJiB6b29tID09IG90aGVyLnpvb207CiAgICAgfQot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZVZpc3VhbERhdGEmIG90aGVyKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgTGVuZ3RoQm94IGNsaXA7CiAgICAg
Ym9vbCBoYXNDbGlwIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1RleHREZWNvcmF0aW9uVGhpY2tuZXNzLmgKaW5kZXggYmIwYmRlZDkyYzUyZjNkODE5
ZGU5NjYxY2M1YzIwMGJhMmZjMzVhZC4uYWIxOTA1YzY0ODRhNDZjNGY1Njg5MWQwZmE3YjhmNDM2
Zjc1NWJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1RleHREZWNvcmF0aW9uVGhpY2tuZXNzLmgKQEAgLTEwMSwxMSArMTAxLDYgQEAgcHVibGljOgog
ICAgICAgICB9CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHREZWNvcmF0
aW9uVGhpY2tuZXNzJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBUeXBlIDogdWlu
dDhfdCB7CiAgICAgICAgIEF1dG8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvVGV4dFNpemVBZGp1c3RtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvVGV4dFNpemVBZGp1c3RtZW50LmgKaW5kZXggZGM2ZmJhODM1ODk4ZDZjMWVmNjFkMmU1
YWZmODgzOTUwN2I2MzEyNS4uMzBiYmI1MGYzNmNiZTkyZGE1NWY4NTQ4NmIyMTUwODZjNDQwOGQ1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRTaXplQWRq
dXN0bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0U2l6ZUFk
anVzdG1lbnQuaApAQCAtNDIsOCArNDIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc05vbmUoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlID09IE5vVGV4dFNpemVBZGp1c3RtZW50OyB9CiAgICAgYm9v
bCBpc1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID49IDA7IH0KIAotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBUZXh0U2l6ZUFkanVzdG1lbnQmIGFuQWRqdXN0bWVudCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZSA9PSBhbkFkanVzdG1lbnQubV92YWx1ZTsgfQotICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBUZXh0U2l6ZUFkanVzdG1lbnQmIGFuQWRqdXN0bWVudCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZSAhPSBhbkFkanVzdG1lbnQubV92YWx1ZTsgfQorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBUZXh0U2l6ZUFkanVzdG1lbnQmKSBjb25zdCA9IGRlZmF1bHQ7CiAKIHBy
aXZhdGU6CiAgICAgZmxvYXQgbV92YWx1ZTsKQEAgLTY1LDggKzY0LDcgQEAgcHVibGljOgogCiAg
ICAgYm9vbCBjb250YWlucyhGaWVsZHMpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEF1dG9zaXplU3RhdHVzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gZmllbGRzKCkgPT0gb3Ro
ZXIuZmllbGRzKCk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXV0b3NpemVTdGF0dXMm
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBdXRvc2l6ZVN0YXR1cyYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHN0
YXRpYyBmbG9hdCBpZGVtcG90ZW50VGV4dFNpemUoZmxvYXQgc3BlY2lmaWVkU2l6ZSwgZmxvYXQg
cGFnZVNjYWxlKTsKICAgICBzdGF0aWMgQXV0b3NpemVTdGF0dXMgY29tcHV0ZVN0YXR1cyhjb25z
dCBSZW5kZXJTdHlsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1RleHRVbmRlcmxpbmVPZmZzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmgKaW5kZXggOTYxZTdiMmQ5MzEyZDJhMTk5MGQ4ZWFiNTY2
OTAzMGRjOTMyNWEzYi4uMGU0MDJlY2VkOTNhYzkyZDBmMTRiZGRiNjhmZDVhOTA2YmRhNjU2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRVbmRlcmxpbmVP
ZmZzZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFVuZGVybGlu
ZU9mZnNldC5oCkBAIC03MSwxNSArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2xl
bmd0aC52YWx1ZV9vcihkZWZhdWx0VmFsdWUpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBUZXh0VW5kZXJsaW5lT2Zmc2V0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2xlbmd0aCA9PSBvdGhlci5tX2xlbmd0aDsKLSAgICB9Ci0KLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgVGV4dFVuZGVybGluZU9mZnNldCYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUZXh0VW5kZXJsaW5lT2Zmc2V0JikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2
YXRlOgogICAgIGVudW0gY2xhc3MgVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvV2lsbENoYW5nZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9XaWxsQ2hhbmdlRGF0YS5oCmluZGV4IGQ5ZjBkZDNhZDk3NWUwZTMzZGZmNjMzNzdh
MGZiOTg1Mzk2M2FmNWIuLjc0ZmU5NjdiYTEyMTA0YzBhNmNjMTljMWE3MjdjODU4MjAxMDJiYWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9XaWxsQ2hhbmdlRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9XaWxsQ2hhbmdlRGF0YS5o
CkBAIC00MCwxMCArNDAsNiBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBXaWxsQ2hhbmdlRGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBXaWxsQ2hhbmdlRGF0YSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzID09IG8pOwotICAgIH0KIAogICAgIGJvb2wgaXNBdXRvKCkgY29uc3QgeyByZXR1cm4gbV9h
bmltYXRhYmxlRmVhdHVyZXMuaXNFbXB0eSgpOyB9CiAgICAgc2l6ZV90IG51bUZlYXR1cmVzKCkg
Y29uc3QgeyByZXR1cm4gbV9hbmltYXRhYmxlRmVhdHVyZXMuc2l6ZSgpOyB9CkBAIC0xMTYsMTAg
KzExMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBbmltYXRhYmxlRmVhdHVyZSYgb3RoZXIpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2ZlYXR1cmUgPT0gb3RoZXIubV9m
ZWF0dXJlICYmIG1fY3NzUHJvcGVydHlJRCA9PSBvdGhlci5tX2Nzc1Byb3BlcnR5SUQ7Ci0gICAg
ICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGFibGVGZWF0dXJlJikg
Y29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAKICAgICBWZWN0b3I8QW5pbWF0YWJsZUZlYXR1cmUs
IDE+IG1fYW5pbWF0YWJsZUZlYXR1cmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TWV0cmljcy5oCmluZGV4IDgwOTYyOWQwZjY0M2NkNmJlOWJmZTI0YmNjNzdkZDM5
NTA1NjM2OTcuLmYzZGUyZjdmMGE2NTg3NWVlNjhiZGY4OWQ3ZWE4YjI2MTY3YzliMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmgKQEAgLTQ3LDE5
ICs0Nyw5IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2xlbmd0aDsgfQogCiAgICAgc3RydWN0IEdseXBoIHsKLSAgICAgICAgR2x5cGgoKQotICAgICAg
ICAgICAgOiBpc1ZhbGlkKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgR2x5cGgmIG90aGVyKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gaXNWYWxpZCA9PSBvdGhlci5pc1ZhbGlkCi0gICAgICAgICAgICAgICAgJiYgbmFt
ZSA9PSBvdGhlci5uYW1lCi0gICAgICAgICAgICAgICAgJiYgdW5pY29kZVN0cmluZyA9PSBvdGhl
ci51bmljb2RlU3RyaW5nOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBpc1ZhbGlkOworICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2x5cGgmKSBjb25zdCA9IGRlZmF1bHQ7CisKKyAg
ICAgICAgYm9vbCBpc1ZhbGlkIHsgZmFsc2UgfTsKICAgICAgICAgU3RyaW5nIG5hbWU7CiAgICAg
ICAgIFN0cmluZyB1bmljb2RlU3RyaW5nOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9NYXRjaFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvTWF0Y2hSZXN1
bHQuaAppbmRleCA5ZTlhMzVkZmZmNGY3YmM3MGFhYTIzMzY0OTRhYjk3ODBiZTZmZjI4Li4wMWY2
MTY4N2QxYjhmM2M4NDRjYTQ0OTg1ZTBkMTM4YjAwYjk4NzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9NYXRjaFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL01h
dGNoUmVzdWx0LmgKQEAgLTQyLDYgKzQyLDggQEAgc3RydWN0IE1hdGNoZWRQcm9wZXJ0aWVzIHsK
ICAgICBTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwgeyBTY29wZU9yZGluYWw6OkVsZW1l
bnQgfTsKICAgICBGcm9tU3R5bGVBdHRyaWJ1dGUgZnJvbVN0eWxlQXR0cmlidXRlIHsgRnJvbVN0
eWxlQXR0cmlidXRlOjpObyB9OwogICAgIENhc2NhZGVMYXllclByaW9yaXR5IGNhc2NhZGVMYXll
clByaW9yaXR5IHsgUnVsZVNldDo6Y2FzY2FkZUxheWVyUHJpb3JpdHlGb3JVbmxheWVyZWQgfTsK
KworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRjaGVkUHJvcGVydGllcyYpIGNvbnN0ID0g
ZGVmYXVsdDsKIH07CiAKIHN0cnVjdCBNYXRjaFJlc3VsdCB7CkBAIC01MSwzNSArNTMsOSBAQCBz
dHJ1Y3QgTWF0Y2hSZXN1bHQgewogICAgIFZlY3RvcjxNYXRjaGVkUHJvcGVydGllcz4gYXV0aG9y
RGVjbGFyYXRpb25zOwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gdXNlckFn
ZW50RGVjbGFyYXRpb25zLmlzRW1wdHkoKSAmJiB1c2VyRGVjbGFyYXRpb25zLmlzRW1wdHkoKSAm
JiBhdXRob3JEZWNsYXJhdGlvbnMuaXNFbXB0eSgpOyB9Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IE1hdGNoUmVzdWx0JiBhLCBjb25zdCBNYXRjaFJlc3VsdCYgYikKLXsKLSAg
ICByZXR1cm4gYS5pc0NhY2hlYWJsZSA9PSBiLmlzQ2FjaGVhYmxlCi0gICAgICAgICYmIGEudXNl
ckFnZW50RGVjbGFyYXRpb25zID09IGIudXNlckFnZW50RGVjbGFyYXRpb25zCi0gICAgICAgICYm
IGEudXNlckRlY2xhcmF0aW9ucyA9PSBiLnVzZXJEZWNsYXJhdGlvbnMKLSAgICAgICAgJiYgYS5h
dXRob3JEZWNsYXJhdGlvbnMgPT0gYi5hdXRob3JEZWNsYXJhdGlvbnM7Ci19Ci0KLWlubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTWF0Y2hSZXN1bHQmIGEsIGNvbnN0IE1hdGNoUmVzdWx0JiBi
KQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIGEsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiBiKQot
ewotICAgIHJldHVybiBhLnByb3BlcnRpZXMgPT0gYi5wcm9wZXJ0aWVzCi0gICAgICAgICYmIGEu
bGlua01hdGNoVHlwZSA9PSBiLmxpbmtNYXRjaFR5cGUKLSAgICAgICAgJiYgYS5hbGxvd2xpc3RU
eXBlID09IGIuYWxsb3dsaXN0VHlwZQotICAgICAgICAmJiBhLnN0eWxlU2NvcGVPcmRpbmFsID09
IGIuc3R5bGVTY29wZU9yZGluYWwKLSAgICAgICAgJiYgYS5mcm9tU3R5bGVBdHRyaWJ1dGUgPT0g
Yi5mcm9tU3R5bGVBdHRyaWJ1dGUKLSAgICAgICAgJiYgYS5jYXNjYWRlTGF5ZXJQcmlvcml0eSA9
PSBiLmNhc2NhZGVMYXllclByaW9yaXR5OwotfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiBhLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYgYikKLXsK
LSAgICByZXR1cm4gIShhID09IGIpOwotfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRj
aFJlc3VsdCYpIGNvbnN0ID0gZGVmYXVsdDsKK307CiAKIGlubGluZSB2b2lkIGFkZChIYXNoZXIm
IGhhc2hlciwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIG1hdGNoZWRQcm9wZXJ0aWVzKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAppbmRleCA3MjY4
YjRkODIxMjAyYzM3ZWVjMjEzNDJhMTZkODlkM2EwN2U4ZDY2Li44MzI0OWY4YjFiOGU2MTRjOWEx
YTFiNDM2ZTE3MTA4OWI5NGY4M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaApAQCAtMjY4LDggKzI2OCw4IEBAIGlubGluZSBUYWJTaXplIEJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYWJTaXplKGNvbnN0IEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0
YXRlCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc051bWJlcigpKQotICAgICAg
ICByZXR1cm4gVGFiU2l6ZShwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCksIFNwYWNlVmFsdWVU
eXBlKTsKLSAgICByZXR1cm4gVGFiU2l6ZShwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPGZs
b2F0PihidWlsZGVyU3RhdGUuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKSwgTGVuZ3RoVmFs
dWVUeXBlKTsKKyAgICAgICAgcmV0dXJuIHsgcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpLCBU
YWJTaXplOjpTcGFjZXMgfTsKKyAgICByZXR1cm4geyBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVu
Z3RoPGZsb2F0PihidWlsZGVyU3RhdGUuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKSwgVGFi
U2l6ZTo6TGVuZ3RoIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC00MTcsNyArNDE3
LDcgQEAgaW5saW5lIExlbmd0aFBvaW50IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlv
bihCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwKICAgICBMZW5ndGggbGVuZ3RoWCA9IGNvbnZl
cnRQb3NpdGlvbkNvbXBvbmVudDxDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KGJ1aWxkZXJT
dGF0ZSwgKnBhaXItPmZpcnN0KCkpOwogICAgIExlbmd0aCBsZW5ndGhZID0gY29udmVydFBvc2l0
aW9uQ29tcG9uZW50PENTU1ZhbHVlVG9wLCBDU1NWYWx1ZUJvdHRvbT4oYnVpbGRlclN0YXRlLCAq
cGFpci0+c2Vjb25kKCkpOwogCi0gICAgcmV0dXJuIExlbmd0aFBvaW50KGxlbmd0aFgsIGxlbmd0
aFkpOworICAgIHJldHVybiB7IGxlbmd0aFgsIGxlbmd0aFkgfTsKIH0KIAogaW5saW5lIExlbmd0
aFBvaW50IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbk9yQXV0byhCdWlsZGVyU3Rh
dGUmIGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtNDI3LDcgKzQyNyw3
IEBAIGlubGluZSBMZW5ndGhQb2ludCBCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25P
ckF1dG8oQnVpbGRlclN0YXRlJiBidWlsZGVyCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzUGFp
cigpKQogICAgICAgICByZXR1cm4gY29udmVydFBvc2l0aW9uKGJ1aWxkZXJTdGF0ZSwgdmFsdWUp
OwogCi0gICAgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVu
Z3RoKExlbmd0aFR5cGU6OkF1dG8pKTsKKyAgICByZXR1cm4geyB7IExlbmd0aFR5cGU6OkF1dG8g
fSwgeyBMZW5ndGhUeXBlOjpBdXRvIH0gfTsKIH0KIAogaW5saW5lIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbkxpbmU+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbihCdWls
ZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IGUwMTkxOGQwMDQyMGU3M2Y2ZWFmNTc0MjIyNTY5ZjRm
ZTc2ZDNlNmYuLjJjMDJiMzA1MzI2ODk5MjJkYmExYzEyY2ExODhmNzUzNTQxMjFjNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC05NTYsNyArOTU2LDcg
QEAgaW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZShC
dWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29s
b3IgPSBidWlsZGVyU3RhdGUuc3R5bGUoKS5jb2xvcigpOwogCi0gICAgICAgIGF1dG8gc2hhZG93
RGF0YSA9IG1ha2VVbmlxdWU8U2hhZG93RGF0YT4oTGVuZ3RoUG9pbnQoeCwgeSksIGJsdXIsIHNw
cmVhZCwgc2hhZG93U3R5bGUsIHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93
LCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKKyAg
ICAgICAgYXV0byBzaGFkb3dEYXRhID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihMZW5ndGhQb2lu
dCB7IHgsIHkgfSwgYmx1ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJv
cGVydHlXZWJraXRCb3hTaGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRy
YW5zcGFyZW50QmxhY2spOwogICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUZXh0
U2hhZG93KQogICAgICAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0VGV4dFNoYWRvdyhX
VEZNb3ZlKHNoYWRvd0RhdGEpLCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0IGlm
IHRoaXMgaXMgbm90IHRoZSBmaXJzdCBlbnRyeQogICAgICAgICBlbHNlCkBAIC0xNTg1LDcgKzE1
ODUsNyBAQCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudChCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdQogICAgICAgICAgICAgQ1NTVmFsdWVJRCBs
aXN0U3R5bGVJZGVudCA9IGNvdW50ZXJWYWx1ZS0+bGlzdFN0eWxlSWRlbnQoKTsKICAgICAgICAg
ICAgIGlmIChsaXN0U3R5bGVJZGVudCAhPSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICAgICAg
bGlzdFN0eWxlVHlwZSA9IHN0YXRpY19jYXN0PExpc3RTdHlsZVR5cGU+KGxpc3RTdHlsZUlkZW50
IC0gQ1NTVmFsdWVEaXNjKTsKLSAgICAgICAgICAgIGF1dG8gY291bnRlciA9IG1ha2VVbmlxdWU8
Q291bnRlckNvbnRlbnQ+KGNvdW50ZXJWYWx1ZS0+aWRlbnRpZmllcigpLCBsaXN0U3R5bGVUeXBl
LCBjb3VudGVyVmFsdWUtPnNlcGFyYXRvcigpKTsKKyAgICAgICAgICAgIGF1dG8gY291bnRlciA9
IG1ha2VVbmlxdWU8Q291bnRlckNvbnRlbnQ+KENvdW50ZXJDb250ZW50IHsgY291bnRlclZhbHVl
LT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkg
fSk7CiAgICAgICAgICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRDb250ZW50KFdURk1vdmUo
Y291bnRlciksIGRpZFNldCk7CiAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwogICAgICAgICB9
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaAppbmRleCBjNDhiZDI0ZDVhNGI0MjJlYjVi
Y2IxOGU5YTUzNzBmMzZmMmQ3OTQwLi5jNzk3ZDM0ZWVlYWQxZDA4MDA5NDg1Mjc1MDVjMWVkZGNj
NjFlYmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaApAQCAtNjAsMTIgKzYwLDcgQEAgc3Ry
dWN0IFN0eWxlYWJsZSB7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVhYmxlJiBv
dGhlcikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAoJmVsZW1lbnQgPT0gJm90aGVyLmVs
ZW1lbnQgJiYgcHNldWRvSWQgPT0gb3RoZXIucHNldWRvSWQpOwotICAgIH0KLQotICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdHlsZWFibGUmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgICAgICByZXR1cm4gJmVsZW1lbnQgPT0gJm90
aGVyLmVsZW1lbnQgJiYgcHNldWRvSWQgPT0gb3RoZXIucHNldWRvSWQ7CiAgICAgfQogCiAgICAg
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZh
bHVlLmgKaW5kZXggNDQ4Yjk0ZmM2NTg4NDQxNDRlZThjMzQ4ZTE2ZWU2ZjRjYTFjYThjMy4uOGFm
NmQ5MmNiYmMyNmQ5YmYwZmU4NDMxOTViMzU1YTE5NDZiYjNmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xlbmd0aFZhbHVlLmgKQEAgLTkxLDIyICs5MSwxNCBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhjb25zdCBTVkdMZW5ndGhDb250ZXh0
JiwgU1ZHTGVuZ3RoVHlwZSk7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmKSBjb25zdCA9IGRlZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgZmxvYXQgbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgeyAwIH07CiAgICAgU1ZHTGVuZ3RoVHlwZSBtX2xlbmd0aFR5cGUgeyBT
VkdMZW5ndGhUeXBlOjpOdW1iZXIgfTsKICAgICBTVkdMZW5ndGhNb2RlIG1fbGVuZ3RoTW9kZSB7
IFNWR0xlbmd0aE1vZGU6Ok90aGVyIH07CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNWR0xlbmd0aFZhbHVlJiBhLCBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgYikKLXsKLSAgICBy
ZXR1cm4gYS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA9PSBiLnZhbHVlSW5TcGVjaWZpZWRVbml0
cygpICYmIGEubGVuZ3RoVHlwZSgpID09IGIubGVuZ3RoVHlwZSgpICYmIGEubGVuZ3RoTW9kZSgp
ID09IGIubGVuZ3RoTW9kZSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNW
R0xlbmd0aFZhbHVlJiBhLCBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgYikKLXsKLSAgICByZXR1cm4g
YS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSAhPSBiLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpIHx8
IGEubGVuZ3RoVHlwZSgpICE9IGIubGVuZ3RoVHlwZSgpIHx8IGEubGVuZ3RoTW9kZSgpICE9IGIu
bGVuZ3RoTW9kZSgpOwotfQotCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaAppbmRleCA5YWM4YzU1MTZlMGJl
YjUwNmQ1MGRkMTA5MjA2NTZjOTc1ZTIxM2ZlLi5jYzZmZmJlMjhjNDAyZThhODNjODEzYjQ3NWUx
YjlmMTZiMTgxY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaApAQCAt
ODEsOCArODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIG90aGVyKSBjb25zdCB7
IHJldHVybiBtX2RhdGEgPT0gb3RoZXIubV9kYXRhOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFNWR1BhdGhCeXRlU3RyZWFtJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mKSBj
b25zdCA9IGRlZmF1bHQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHUGF0aEJ5dGVTdHJlYW0+
IGNvcHkoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmlt
YXRpb24vU01JTFRpbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWUu
aAppbmRleCBmZjA2NDZjYzM5MGI3ZDM2NGQzN2ZmZTcyOTJkOWFmNjg5NjRkNWNmLi5jNmEyZDU1
ZDQ4YTI4M2RhMWMyN2Q5YjVjN2E3NDAyN2JkNWU3ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NNSUxUaW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2Fu
aW1hdGlvbi9TTUlMVGltZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
RmluaXRlKCkgY29uc3QgeyByZXR1cm4gbV90aW1lIDwgaW5kZWZpbml0ZVZhbHVlOyB9CiAgICAg
Ym9vbCBpc0luZGVmaW5pdGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWUgPT0gaW5kZWZpbml0ZVZh
bHVlOyB9CiAgICAgYm9vbCBpc1VucmVzb2x2ZWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWUgPT0g
dW5yZXNvbHZlZFZhbHVlOyB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGRv
dWJsZSB1bnJlc29sdmVkVmFsdWU7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBpbmRlZmluaXRl
VmFsdWU7CkBAIC04MywxMiArODMsOCBAQCBwcml2YXRlOgogCiBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNNSUxUaW1lJiBhLCBjb25zdCBTTUlMVGltZSYgYikgeyByZXR1cm4gYS5pc0Zp
bml0ZSgpICYmIGEudmFsdWUoKSA9PSBiLnZhbHVlKCk7IH0KIGlubGluZSBib29sIG9wZXJhdG9y
IShjb25zdCBTTUlMVGltZSYgYSkgeyByZXR1cm4gIWEuaXNGaW5pdGUoKSB8fCAhYS52YWx1ZSgp
OyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNNSUxUaW1lJiBhLCBjb25zdCBTTUlM
VGltZSYgYikgeyByZXR1cm4gIW9wZXJhdG9yPT0oYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJh
dG9yPihjb25zdCBTTUlMVGltZSYgYSwgY29uc3QgU01JTFRpbWUmIGIpIHsgcmV0dXJuIGEudmFs
dWUoKSA+IGIudmFsdWUoKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFNNSUxUaW1l
JiBhLCBjb25zdCBTTUlMVGltZSYgYikgeyByZXR1cm4gYS52YWx1ZSgpIDwgYi52YWx1ZSgpOyB9
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFNNSUxUaW1lJiBhLCBjb25zdCBTTUlMVGlt
ZSYgYikgeyByZXR1cm4gYS52YWx1ZSgpID4gYi52YWx1ZSgpIHx8IG9wZXJhdG9yPT0oYSwgYik7
IH0KLWlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgU01JTFRpbWUmIGEsIGNvbnN0IFNNSUxU
aW1lJiBiKSB7IHJldHVybiBhLnZhbHVlKCkgPCBiLnZhbHVlKCkgfHwgb3BlcmF0b3I9PShhLCBi
KTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFNNSUxUaW1lV2l0aE9yaWdpbiYgYSwg
Y29uc3QgU01JTFRpbWVXaXRoT3JpZ2luJiBiKSB7IHJldHVybiBhLnRpbWUoKSA8IGIudGltZSgp
OyB9CitpbmxpbmUgYXV0byBvcGVyYXRvcjw9Pihjb25zdCBTTUlMVGltZSYgYSwgY29uc3QgU01J
TFRpbWUmIGIpIHsgcmV0dXJuIGEudmFsdWUoKSA8PT4gYi52YWx1ZSgpOyB9CitpbmxpbmUgYXV0
byBvcGVyYXRvcjw9Pihjb25zdCBTTUlMVGltZVdpdGhPcmlnaW4mIGEsIGNvbnN0IFNNSUxUaW1l
V2l0aE9yaWdpbiYgYikgeyByZXR1cm4gYS50aW1lKCkgPD0+IGIudGltZSgpOyB9CiAKIFNNSUxU
aW1lIG9wZXJhdG9yKyhjb25zdCBTTUlMVGltZSYsIGNvbnN0IFNNSUxUaW1lJik7CiBTTUlMVGlt
ZSBvcGVyYXRvci0oY29uc3QgU01JTFRpbWUmLCBjb25zdCBTTUlMVGltZSYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDM1YTY2ZTA5NWU3NWExMzQ3OWM3YjFjNTYyY2Ux
MTkxYWIxZWUxOTQuLjY1NWE3OTg5OGMyZmM1N2FiNjNmNGMzMzhhM2Y2N2I5NjdiM2M2NzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTY0OTAsNyArNjQ5MCw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0TW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
Q29tbWFuZHNTaG91bGRGYWlsKGJvCiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CiAKLWNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgc3RyaW5nKFBhcnRpYWxPcmRlcmluZyBvcmRlcmlu
ZykKK2NvbnN0ZXhwciBBU0NJSUxpdGVyYWwgc3RyaW5nKHN0ZDo6cGFydGlhbF9vcmRlcmluZyBv
cmRlcmluZykKIHsKICAgICBpZiAoaXNfbHQob3JkZXJpbmcpKQogICAgICAgICByZXR1cm4gImxl
c3MiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5kZXggNWY4NTQ1
ZWJhNWIwZTdiOGJiYWJhNWM2OTNjMmE0MzQxODhiMmJhOS4uYjZkOGQ0YjA0MWU1NTFhODUxNGVi
YTJhODA3YTc2NWNiZjlmYzQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVy
LmNwcApAQCAtNzgsOSArNzgsNCBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVy
JiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCiAgICAgcmV0dXJuICphLmJ1ZmZlcigpID09ICpi
LmJ1ZmZlcigpOwogfQogCi1ib29sIG9wZXJhdG9yIT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBj
b25zdCBTY3JpcHRCdWZmZXImIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmgKaW5k
ZXggZmQyYzFhZTJmNjNiNjBkNzRjMzBkMjQyYTk4OWEwYmZkOTFkZTQ5NC4uNjgyYWEyNjNkZmVi
NmNiZWFkMzFkOWU0Y2UzZmQzZDA2MzRmZDBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oCkBAIC02Miw2ICs2Miw1IEBAIHByaXZhdGU6CiB9OwogCiBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7Ci1ib29sIG9wZXJh
dG9yIT0oY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgU2NyaXB0QnVmZmVyJik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaAppbmRleCA3MjVh
ODNhYzIxMGFmZmIxMjljMGU1ODYxODZlMTliZTJkMDc4MTUyLi4zZjQ0N2FkMmRjYTQ2ODZhZDA5
YThhZjJiZDU5ZWVjNDg0ZTkzZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oCkBA
IC0zNSw2ICszNSw4IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgewog
ICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXI7CiAg
ICAgU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgam9iSWRlbnRpZmllcjsKIAorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImKSBjb25zdCA9
IGRlZmF1bHQ7CisKICAgICBTdHJpbmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gY29ubmVjdGlvbklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpICsgIi0iICsg
am9iSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCk7CkBAIC00NCwxMSArNDYsNiBAQCBzdHJ1Y3Qg
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyJiBiKQotewotICAgIHJldHVybiBhLmNvbm5lY3Rpb25JZGVudGlmaWVyID09
IGIuY29ubmVjdGlvbklkZW50aWZpZXIgJiYgYS5qb2JJZGVudGlmaWVyID09IGIuam9iSWRlbnRp
ZmllcjsKLX0KLQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LmNwcAppbmRleCA5NmNkYjNhODIyODY2MWNhZWFhZWNiMzdjZWY2
MDIyYTQwYTA1MjJkLi4xYjg2ZDQyYTNkYTkyODRlOTNkZWRhMTlhN2I2MjBkOGNmMjA4Zjg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCkBAIC01NSwxMSArNTUsNiBAQCB1bnNpZ25l
ZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpoYXNoKCkgY29uc3QKICAgICByZXR1cm4g
U3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5KGhhc2hlcywgc2l6ZW9mKGhhc2hlcykpOwogfQogCi1i
b29sIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6Om9wZXJhdG9yPT0oY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdG9w
T3JpZ2luID09IG90aGVyLm1fdG9wT3JpZ2luICYmIG1fc2NvcGUgPT0gb3RoZXIubV9zY29wZTsK
LX0KLQogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5Ojppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7CiAgICAgcmV0dXJuIHsgbV90b3BPcmln
aW4uaXNvbGF0ZWRDb3B5KCksIG1fc2NvcGUuaXNvbGF0ZWRDb3B5KCkgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleS5oCmluZGV4IGQzMmY0ZDlmYTdhYmQ5OTIzMzk2NmQ1M2NhODY3OGY2ZDA3M2Ey
YzAuLmY5NDI5NGE3YjU3NTY0ZmViNjA1ZGMxNWU3OTgwMzliOGM0N2E2YmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkuaApAQCAtNDAsOCArNDAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgZW1wdHlLZXkoKTsKICAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3Q7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0ga2V5KTsg
fQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JikgY29uc3QgPSBkZWZhdWx0OwogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICp0
aGlzID09IGVtcHR5S2V5KCk7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzTWF0Y2hpbmco
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJM
KSBjb25zdDsKICAgICBib29sIG9yaWdpbklzTWF0Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMjAxZDFhZmRmNzMyZTJiY2Yw
ZjU4ZGEzMTAwMjQwOGJiN2FhYWE2YS4uYjI2ZDY0MjdkMzhmNTczNGFjNTY5ZDJlNzZhNWNjMGE1
OTBlNzdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
QEAgLTkwLDIxICs5MCw2IEBAIFNlY29uZHMgT3BlcmF0aW5nRGF0ZTo6c2Vjb25kc1NpbmNlRXBv
Y2goKSBjb25zdAogICAgIHJldHVybiBTZWNvbmRzIHsgZGF0ZVRvRGF5c0Zyb20xOTcwKG1feWVh
ciwgbV9tb250aCwgbV9tb250aERheSkgKiBzZWNvbmRzUGVyRGF5IH07CiB9CiAKLWJvb2wgT3Bl
cmF0aW5nRGF0ZTo6b3BlcmF0b3I9PShjb25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9tb250aERheSA9PSBvdGhlci5tX21vbnRoRGF5ICYmIG1fbW9udGgg
PT0gb3RoZXIubV9tb250aCAmJiBtX3llYXIgPT0gb3RoZXIubV95ZWFyOwotfQotCi1ib29sIE9w
ZXJhdGluZ0RhdGU6Om9wZXJhdG9yPChjb25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29uc3QK
LXsKLSAgICByZXR1cm4gc2Vjb25kc1NpbmNlRXBvY2goKSA8IG90aGVyLnNlY29uZHNTaW5jZUVw
b2NoKCk7Ci19Ci0KLWJvb2wgT3BlcmF0aW5nRGF0ZTo6b3BlcmF0b3I8PShjb25zdCBPcGVyYXRp
bmdEYXRlJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gc2Vjb25kc1NpbmNlRXBvY2goKSA8
PSBvdGhlci5zZWNvbmRzU2luY2VFcG9jaCgpOwotfQotCiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUmIHN0b3JlLCBTdXNwZW5kYWJsZVdvcmtRdWV1ZSYgd29ya1F1ZXVlLCBTaG91bGRJ
bmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCiAgICAgOiBtX3N0b3JlKHN0
b3JlKQogICAgICwgbV93b3JrUXVldWUod29ya1F1ZXVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDFhM2IwOGJmNzNlMTRmYzdjZTBhNjU3ZGU1ODNmOWYy
MmQ0YWE4MjIuLjk3MzRhMGE2ZGZkNjUzOWM4MzhkNTA4YzA0OTUwNzA0MzQwZGYwM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTYxLDkgKzYxLDcgQEAg
cHVibGljOgogICAgIGludCBtb250aCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9udGg7IH0KICAgICBp
bnQgbW9udGhEYXkoKSBjb25zdCB7IHJldHVybiBtX21vbnRoRGF5OyB9CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgT3BlcmF0aW5nRGF0ZSYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3I8KGNvbnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJh
dG9yPD0oY29uc3QgT3BlcmF0aW5nRGF0ZSYgb3RoZXIpIGNvbnN0OworICAgIGZyaWVuZCBhdXRv
IG9wZXJhdG9yPD0+KE9wZXJhdGluZ0RhdGUsIE9wZXJhdGluZ0RhdGUpID0gZGVmYXVsdDsKICAg
ICAKICAgICBPcGVyYXRpbmdEYXRlKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBtb250aERheSkK
ICAgICAgICAgOiBtX3llYXIoeWVhcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5oCmluZGV4IGExMGExNjBkNWE0NjllNDUyZmYz
ZDY3NTBkYzYxZjlmZjdjYTg3ZTQuLmFiNzc0OWY5N2EwM2M2ZTRlZjRiNjkwNjBkZWRhZDVhZDg5
NGFmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlS2V5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVLZXkuaApAQCAtODYsNyArODYsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8S2V5PiBkZWNvZGUoV1RGOjpQZXJzaXN0ZW5jZTo6RGVjb2RlciYpOwogCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBLZXkmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
CiBwcml2YXRlOgogICAgIHN0YXRpYyBTdHJpbmcgaGFzaEFzU3RyaW5nKGNvbnN0IEhhc2hUeXBl
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TdHJpbmdSZWZlcmVu
Y2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5oCmluZGV4
IDU2YjFkZDAwMWM2ZjE0NWViNjAwNTBhY2VmM2I2YzgxMmQ5OTZmMGQuLjJjNTBlMWE1ZWIxM2Zj
OTY5ZmUxYmNjNjFhYjdkMzI1ZTM0OWNkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL1N0cmluZ1JlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL1N0cmluZ1JlZmVyZW5jZS5oCkBAIC04NCwxMSArODQsNiBAQCBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0cmluZ1JlZmVyZW5jZSYgYSwgY29uc3QgU3RyaW5nUmVmZXJlbmNlJiBi
KQogICAgIHJldHVybiBhLnNpemUoKSA9PSBiLnNpemUoKSAmJiAhbWVtY21wKGEuZGF0YSgpLCBi
LmRhdGEoKSwgYS5zaXplKCkpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0
cmluZ1JlZmVyZW5jZSYgYSwgY29uc3QgU3RyaW5nUmVmZXJlbmNlJiBiKQotewotICAgIHJldHVy
biAhKGEgPT0gYik7Ci19Ci0KIGlubGluZSBib29sIFN0cmluZ1JlZmVyZW5jZTo6SGFzaDo6ZXF1
YWwoY29uc3QgU3RyaW5nUmVmZXJlbmNlJiBhLCBjb25zdCBTdHJpbmdSZWZlcmVuY2UmIGIpCiB7
CiAgICAgcmV0dXJuIGEgPT0gYjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL1dLR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLR2VvbWV0cnku
aAppbmRleCBjODJjZWRlMjE0YmIxOWJiYzVmNGM0OWMyMjU5NzU3ZjA2NmM1OTJlLi4zYmFjOTk5
ZDA5MmRlNWMwYzc0M2IyYWZmZWNmOGIwNjA5YjM2ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS0dlb21ldHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tHZW9tZXRyeS5oCkBAIC0zNSw2ICszNSw5IEBAIGV4dGVybiAiQyIgewogc3RydWN0
IFdLUG9pbnQgewogICAgIGRvdWJsZSB4OwogICAgIGRvdWJsZSB5OworI2lmZGVmIF9fY3BsdXNw
bHVzCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdLUG9pbnQmKSBjb25zdCA9IGRlZmF1bHQ7
CisjZW5kaWYKIH07CiB0eXBlZGVmIHN0cnVjdCBXS1BvaW50IFdLUG9pbnQ7CiAKQEAgLTkxLDEx
ICs5NCw2IEBAIFdLX0VYUE9SVCBXS1JlY3QgV0tSZWN0R2V0VmFsdWUoV0tSZWN0UmVmIHJlY3Qp
OwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBXS1BvaW50JiBhLCBjb25zdCBXS1BvaW50JiBiKQotewotICAgIHJldHVybiBhLnggPT0gYi54
ICYmIGEueSA9PSBiLnk7Ci19CiAjZW5kaWYKIAogI2VuZGlmIC8qIFdLR2VvbWV0cnlfaCAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ2FsbGJhY2tJRC5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ2FsbGJhY2tJRC5oCmluZGV4IDE2ZTI5NmQ1NTEwYTcwYzkwZWEwNTE3Y2E4
ZmE3NzczOGFmZTNhNTcuLjhiZDMwODEwZmRkZGQ4OGIzY2ZkM2UzMWJmOTAzOWY1Y2IzYjc1MmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NhbGxiYWNrSUQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9DYWxsYmFja0lELmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENhbGxiYWNrSUQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lkID09IG90aGVyLm1faWQ7IH0K
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FsbGJhY2tJRCYpIGNvbnN0ID0gZGVmYXVsdDsK
IAogICAgIHVpbnQ2NF90IHRvSW50ZWdlcigpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGlzVmFsaWRDYWxsYmFj
a0lEKG1faWQpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9MYXllclRyZWVD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xheWVyVHJlZUNvbnRleHQuY3BwCmlu
ZGV4IDliNjIyZjViNDA3YTZjOWQzYzViZWVkMTYxYTM0ZTVkNjY0OWVmZWEuLmNmYTVjMzdlZDQ3
YWQyNDA3MGI4OGM3ZmVjZGY1MzMyOTU5MWE2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0xheWVyVHJlZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xh
eWVyVHJlZUNvbnRleHQuY3BwCkBAIC01OSw5ICs1OSw0IEBAIGJvb2wgTGF5ZXJUcmVlQ29udGV4
dDo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuICFjb250ZXh0SUQ7CiB9CiAKLWJvb2wgb3Bl
cmF0b3I9PShjb25zdCBMYXllclRyZWVDb250ZXh0JiBhLCBjb25zdCBMYXllclRyZWVDb250ZXh0
JiBiKQotewotICAgIHJldHVybiBhLmNvbnRleHRJRCA9PSBiLmNvbnRleHRJRDsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9MYXll
clRyZWVDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9MYXllclRyZWVDb250ZXh0LmgK
aW5kZXggNzYwMTMwMGIzOTQ4ZTg3ODhjOTU0Y2QxNWExMzljMThjYzYxN2Y0ZS4uMTEwMzY5Mjhl
MjkyMWE2NzVkODJlMmVmNDc1Mzg1ZmIyMjhkZDE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvTGF5ZXJUcmVlQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xh
eWVyVHJlZUNvbnRleHQuaApAQCAtNTIsMTYgKzUyLDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExheWVyVHJlZUNv
bnRleHQmKSBjb25zdCA9IGRlZmF1bHQ7CisKICAgICB1aW50NjRfdCBjb250ZXh0SUQ7CiB9Owog
Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYsIGNvbnN0IExheWVyVHJl
ZUNvbnRleHQmKTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMYXllclRyZWVDb250
ZXh0JiBhLCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBiKQotewotICAgIHJldHVybiAhKGEgPT0g
Yik7Ci19Ci0KIH0KIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Nb25vdG9uaWNPYmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Nb25vdG9uaWNPYmplY3RJZGVudGlmaWVyLmgKaW5kZXggNGNlZDg4NmE4ZTBlZWFlM2E0ZTY3
OTgwYTViYWU5Mjk3YmEyMGYxNy4uYmUxNGM3YzkwMzk4MThkZDNlNzU1YWIzNGQ4ZDZlMzZlNWIz
OWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTW9ub3RvbmljT2JqZWN0SWRl
bnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL01vbm90b25pY09iamVjdElkZW50
aWZpZXIuaApAQCAtNjAsMzUgKzYwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gTW9ub3Rv
bmljT2JqZWN0SWRlbnRpZmllciB7ICppZGVudGlmaWVyIH07CiAgICAgfQogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE1vbm90b25pY09iamVjdElkZW50aWZpZXImIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllciA9PSBvdGhlci5tX2lkZW50aWZpZXI7
Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgTW9ub3RvbmljT2JqZWN0SWRlbnRp
ZmllciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyID4g
b3RoZXIubV9pZGVudGlmaWVyOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBN
b25vdG9uaWNPYmplY3RJZGVudGlmaWVyJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2lkZW50aWZpZXIgPj0gb3RoZXIubV9pZGVudGlmaWVyOwotICAgIH0KLQotICAgIGJv
b2wgb3BlcmF0b3I8KGNvbnN0IE1vbm90b25pY09iamVjdElkZW50aWZpZXImIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faWRlbnRpZmllciA8IG90aGVyLm1faWRlbnRpZmll
cjsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgTW9ub3RvbmljT2JqZWN0SWRl
bnRpZmllciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVy
IDw9IG90aGVyLm1faWRlbnRpZmllcjsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgTW9ub3RvbmljT2JqZWN0SWRlbnRpZmllciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmllcjsKLSAgICB9CisgICAg
ZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oTW9ub3RvbmljT2JqZWN0SWRlbnRpZmllciwgTW9ub3Rv
bmljT2JqZWN0SWRlbnRpZmllcikgPSBkZWZhdWx0OwogCiAgICAgTW9ub3RvbmljT2JqZWN0SWRl
bnRpZmllciYgaW5jcmVtZW50KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TY3JvbGxpbmdBY2NlbGVyYXRpb25DdXJ2ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2Nyb2xsaW5nQWNjZWxlcmF0aW9uQ3VydmUuaAppbmRleCAyMGEwNWU4Y2NjMjcyN2EzZGUwMWM1
NTNkNGJhMjYwYjkzMGU2ZDgxLi5lMzlhZmM5NDA4NjNiYjhjZjNmZGExNzcxNGI0YTNiODhmNzMy
NzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TY3JvbGxpbmdBY2NlbGVyYXRp
b25DdXJ2ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Njcm9sbGluZ0FjY2VsZXJhdGlv
bkN1cnZlLmgKQEAgLTUzLDE5ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuY29kZShJUEM6
OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTY3JvbGxpbmdBY2Nl
bGVyYXRpb25DdXJ2ZT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwogCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNjcm9sbGluZ0FjY2VsZXJhdGlvbkN1cnZlJiBvdGhlcikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3BhcmFtZXRlcnMuZ2FpbkxpbmVhciA9PSBvdGhlci5tX3BhcmFt
ZXRlcnMuZ2FpbkxpbmVhcgotICAgICAgICAgICAgJiYgbV9wYXJhbWV0ZXJzLmdhaW5QYXJhYm9s
aWMgPT0gb3RoZXIubV9wYXJhbWV0ZXJzLmdhaW5QYXJhYm9saWMKLSAgICAgICAgICAgICYmIG1f
cGFyYW1ldGVycy5nYWluQ3ViaWMgPT0gb3RoZXIubV9wYXJhbWV0ZXJzLmdhaW5DdWJpYwotICAg
ICAgICAgICAgJiYgbV9wYXJhbWV0ZXJzLmdhaW5RdWFydGljID09IG90aGVyLm1fcGFyYW1ldGVy
cy5nYWluUXVhcnRpYwotICAgICAgICAgICAgJiYgbV9wYXJhbWV0ZXJzLnRhbmdlbnRTcGVlZExp
bmVhciA9PSBvdGhlci5tX3BhcmFtZXRlcnMudGFuZ2VudFNwZWVkTGluZWFyCi0gICAgICAgICAg
ICAmJiBtX3BhcmFtZXRlcnMudGFuZ2VudFNwZWVkUGFyYWJvbGljUm9vdCA9PSBvdGhlci5tX3Bh
cmFtZXRlcnMudGFuZ2VudFNwZWVkUGFyYWJvbGljUm9vdAotICAgICAgICAgICAgJiYgbV9wYXJh
bWV0ZXJzLnJlc29sdXRpb24gPT0gb3RoZXIubV9wYXJhbWV0ZXJzLnJlc29sdXRpb24KLSAgICAg
ICAgICAgICYmIG1fcGFyYW1ldGVycy5mcmFtZVJhdGUgPT0gb3RoZXIubV9wYXJhbWV0ZXJzLmZy
YW1lUmF0ZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2Nyb2xsaW5nQWNj
ZWxlcmF0aW9uQ3VydmUmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsg
fQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JvbGxpbmdBY2NlbGVyYXRpb25DdXJ2ZSYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycyA9PSBvdGhlci5tX3BhcmFtZXRlcnM7
IH0KICAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5kIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYsIGNvbnN0IFNjcm9sbGluZ0FjY2VsZXJhdGlvbkN1cnZlJik7CkBAIC03NCw3ICs2
Miw3IEBAIHByaXZhdGU6CiAKICAgICBmbG9hdCBldmFsdWF0ZVF1YXJ0aWMoZmxvYXQpIGNvbnN0
OwogCi0gICAgc3RydWN0IHsKKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CiAgICAgICAgIGZsb2F0
IGdhaW5MaW5lYXIgeyAwIH07CiAgICAgICAgIGZsb2F0IGdhaW5QYXJhYm9saWMgeyAwIH07CiAg
ICAgICAgIGZsb2F0IGdhaW5DdWJpYyB7IDAgfTsKQEAgLTg2LDYgKzc0LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgLy8gb2YgdGhlIGN1cnZlLCBqdXN0IHJlcXVpcmVkIHRvIHVzZSBpdDsgdGhleSBz
aG91bGQgYmUgcGx1bWJlZCBzZXBhcmF0ZWx5LgogICAgICAgICBmbG9hdCByZXNvbHV0aW9uIHsg
MCB9OwogICAgICAgICBmbG9hdCBmcmFtZVJhdGUgeyAwIH07CisKKyAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFBhcmFtZXRlcnMmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfSBtX3BhcmFt
ZXRlcnM7CiAKICAgICBzdHJ1Y3QgQ29tcHV0ZWRJbnRlcm1lZGlhdGVWYWx1ZXMgewpAQCAtOTYs
NyArODYsNiBAQCBwcml2YXRlOgogICAgICAgICBmbG9hdCBmYWxsb2ZmU2xvcGUgeyAwIH07CiAg
ICAgICAgIGZsb2F0IGZhbGxvZmZJbnRlcmNlcHQgeyAwIH07CiAgICAgfTsKLQogICAgIHN0ZDo6
b3B0aW9uYWw8Q29tcHV0ZWRJbnRlcm1lZGlhdGVWYWx1ZXM+IG1faW50ZXJtZWRpYXRlczsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNwcAppbmRl
eCAxNDEzOWQyNGM2MGYxMTFiZjQ4OGM1YzRmOGE4ZDY4ZGViZDE5ZWE1Li45NWE2MjJlMjBjNTg3
YzgxNGEzOTg1ZmExM2Y4YjQzNDQ3OWU0MmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
VG91Y2hCYXJNZW51SXRlbURhdGEuY3BwCkBAIC0zNSwyNSArMzUsMTggQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0VsZW1lbnRJbmxpbmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVudUl0ZW1F
bGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0hUTUxQYXJzZXJJZGlvbXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBJ
dGVtVHlwZSBpdGVtVHlwZShjb25zdCBTdHJpbmcmKQotewotICAgIHJldHVybiBJdGVtVHlwZTo6
QnV0dG9uOwotfQotCiBUb3VjaEJhck1lbnVJdGVtRGF0YTo6VG91Y2hCYXJNZW51SXRlbURhdGEo
Y29uc3QgV2ViQ29yZTo6SFRNTE1lbnVJdGVtRWxlbWVudCYgZWxlbWVudCkKKyAgICA6IGlkZW50
aWZpZXIoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhU
TUxOYW1lczo6aWRBdHRyKSkKKyAgICAsIHByaW9yaXR5KHZhbHVlT3JEZWZhdWx0KHBhcnNlVmFs
aWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oV2ViQ29yZTo6SFRNTE5hbWVzOjp2YWx1ZUF0dHIpKSkpCiB7Ci0gICAgdHlwZSA9
IGl0ZW1UeXBlKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3Jl
OjpIVE1MTmFtZXM6OnR5cGVBdHRyKSk7Ci0gICAgaWRlbnRpZmllciA9IGVsZW1lbnQuYXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OmlkQXR0cik7Ci0g
ICAgcHJpb3JpdHkgPSBlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2Vi
Q29yZTo6SFRNTE5hbWVzOjp2YWx1ZUF0dHIpLnRvRmxvYXQoKTsKIH0KIAogdm9pZCBUb3VjaEJh
ck1lbnVJdGVtRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAg
ICBlbmNvZGVyIDw8IHR5cGU7Ci0gICAgCiAgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyOwogICAg
IGVuY29kZXIgPDwgcHJpb3JpdHk7CiB9CkBAIC02MSwxNSArNTQsMTAgQEAgdm9pZCBUb3VjaEJh
ck1lbnVJdGVtRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHN0ZDo6
b3B0aW9uYWw8VG91Y2hCYXJNZW51SXRlbURhdGE+IFRvdWNoQmFyTWVudUl0ZW1EYXRhOjpkZWNv
ZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFRvdWNoQmFyTWVudUl0ZW1EYXRhIHJl
c3VsdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC50eXBlKSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5p
ZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcmlvcml0eSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9vcHRpb25hbChXVEZNb3ZlKHJlc3Vs
dCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJ
dGVtRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuaApp
bmRleCAwNWM2ZGRkYmNkYjVkZWY0OTBiYWE2MDY1MGU1OGE1YzUyNjU1ZGU2Li5lMTY5NjBmOGE2
NTI3ZTFmOTk4M2I1OWQzY2U4MzdiODc3OWE3NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RvdWNoQmFyTWVudUl0ZW1EYXRhLmgKQEAgLTI3LDggKzI3LDYgQEAKIAogI2lmIEhBVkUoVE9V
Q0hfQkFSKQogCi0jaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKQEAgLTQyLDY4ICs0MCwyNCBAQCBjbGFzcyBIVE1MTWVudUl0ZW1FbGVtZW50OwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKICAgICAKLS8vIEJhc2VkIG9uIE5TVG91Y2hCYXJJdGVtIHR5cGVz
LgotZW51bSBJdGVtVHlwZSB7Ci0gICAgQnV0dG9uCi19OwotCiBzdHJ1Y3QgVG91Y2hCYXJNZW51
SXRlbURhdGEgewotICAgIGV4cGxpY2l0IFRvdWNoQmFyTWVudUl0ZW1EYXRhKCkgPSBkZWZhdWx0
OworICAgIFRvdWNoQmFyTWVudUl0ZW1EYXRhKCkgPSBkZWZhdWx0OwogICAgIGV4cGxpY2l0IFRv
dWNoQmFyTWVudUl0ZW1EYXRhKGNvbnN0IFdlYkNvcmU6OkhUTUxNZW51SXRlbUVsZW1lbnQmKTsK
LSAgICAKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYp
IGNvbnN0ID0gZGVmYXVsdDsKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsK
ICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gZGVjb2RlKElQ
Qzo6RGVjb2RlciYpOwogICAgIAotICAgIEl0ZW1UeXBlIHR5cGUgeyBJdGVtVHlwZTo6QnV0dG9u
IH07CiAgICAgU3RyaW5nIGlkZW50aWZpZXI7Ci0gICAgZmxvYXQgcHJpb3JpdHkgeyAwLjAgfTsK
LSAgICBib29sIHZhbGlkVG91Y2hCYXJEaXNwbGF5IHsgdHJ1ZSB9OworICAgIGRvdWJsZSBwcmlv
cml0eSB7IDAuMCB9OwogfTsKLSAgICAKLS8vIFRvdWNoIEJhciBNZW51IEl0ZW1zIHdpbGwgYmUg
b3JkZXJlZCBiYXNlZCBvbiBwcmlvcml0eS4KLWlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBU
b3VjaEJhck1lbnVJdGVtRGF0YSYgbGhzLCBjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgcmhz
KQotewotICAgIHJldHVybiBsaHMucHJpb3JpdHkgPCByaHMucHJpb3JpdHk7Ci19Ci0KLWlubGlu
ZSBib29sIG9wZXJhdG9yPihjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgbGhzLCBjb25zdCBU
b3VjaEJhck1lbnVJdGVtRGF0YSYgcmhzKQotewotICAgIHJldHVybiByaHMgPCBsaHM7Ci19CiAK
LWlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIGxocywg
Y29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIHJocykKLXsKLSAgICByZXR1cm4gIShsaHMgPiBy
aHMpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1E
YXRhJiBsaHMsIGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiByaHMpCi17Ci0gICAgcmV0dXJu
ICEobGhzIDwgcmhzKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUb3VjaEJh
ck1lbnVJdGVtRGF0YSYgbGhzLCBjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgcmhzKQotewot
ICAgIHJldHVybiBsaHMudHlwZSA9PSByaHMudHlwZQotICAgICAgICAmJiBsaHMuaWRlbnRpZmll
ciA9PSByaHMuaWRlbnRpZmllcgotICAgICAgICAmJiBsaHMucHJpb3JpdHkgPT0gcmhzLnByaW9y
aXR5OwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1E
YXRhJiBsaHMsIGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiByaHMpCisvLyBUb3VjaCBCYXIg
TWVudSBJdGVtcyB3aWxsIGJlIG9yZGVyZWQgYmFzZWQgb24gcHJpb3JpdHkuCitjb25zdGV4cHIg
YXV0byBvcGVyYXRvcjw9Pihjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgYSwgY29uc3QgVG91
Y2hCYXJNZW51SXRlbURhdGEmIGIpCiB7Ci0gICAgcmV0dXJuICEobGhzID09IHJocyk7CisgICAg
cmV0dXJuIGEucHJpb3JpdHkgPD0+IGIucHJpb3JpdHk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJLaXQ6Okl0ZW1UeXBlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAg
ICAgV2ViS2l0OjpJdGVtVHlwZSwKLSAgICAgICAgV2ViS2l0OjpJdGVtVHlwZTo6QnV0dG9uCi0g
ICAgPjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCiAjZW5kaWYgLy8gSEFWRShUT1VDSF9C
QVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlTmV0d29ya1BhcmFt
ZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycy5o
CmluZGV4IDYxMWQ4ODUzYTM0NTFmMzZiZTQ4M2UyY2ZjNTYzMWZiZmE2NzY4MDcuLjM2OWVjODQz
ZDQ0OTEwYTM5ZTk5ZjM1MTQyN2QwZDY4ZjZmYmI2MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycy5oCkBAIC00Nyw5ICs0NywxMCBAQCBwdWJs
aWM6CiAgICAgICAgIDogbV9hdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllcihXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSkgeyB9CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKTsgfQogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2F0dHJp
YnV0ZWRCdW5kbGVJZGVudGlmaWVyLmhhc2goKTsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2F0dHJp
YnV0ZWRCdW5kbGVJZGVudGlmaWVyID09IG90aGVyLm1fYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZp
ZXI7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJz
JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVkQnVuZGxl
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fYXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXI7
IH0KKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9hdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllcjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcAppbmRleCA2YWEwMjNjNjY1NjM0MzI1
Yjc0OGJiM2Q3NTU4NjBkMDk0N2UwYjRlLi5mZDU3MWMzMzYxMmRjOTE0ZWE1MTRiNTZmMmNiYTYw
MWQ4ZWZmZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3Jt
YXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKQEAgLTMwNCw2ICsz
MDQsMTEgQEAgT1NTdGF0dXMgTWVkaWFTYW1wbGVDdXJzb3I6OnN0ZXBCeVByZXNlbnRhdGlvblRp
bWUoQ01UaW1lIHRpbWUsIEJvb2xlYW4qIHdhc1Bpbm4KICAgICByZXR1cm4gc3RlcEluUHJlc2Vu
dGF0aW9uVGltZShQQUw6OnRvTWVkaWFUaW1lKHRpbWUpLCAqd2FzUGlubmVkKTsKIH0KIAorc3Rh
dGljIENGQ29tcGFyaXNvblJlc3VsdCBtYWtlQ0ZDb21wYXJpc29uUmVzdWx0KHN0ZDo6cGFydGlh
bF9vcmRlcmluZyBvcmRlcmluZykKK3sKKyAgICByZXR1cm4gaXNfbHQob3JkZXJpbmcpID8ga0NG
Q29tcGFyZUxlc3NUaGFuIDogaXNfZ3Qob3JkZXJpbmcpID8ga0NGQ29tcGFyZUdyZWF0ZXJUaGFu
IDoga0NGQ29tcGFyZUVxdWFsVG87Cit9CisKIENGQ29tcGFyaXNvblJlc3VsdCBNZWRpYVNhbXBs
ZUN1cnNvcjo6Y29tcGFyZUluRGVjb2RlT3JkZXIoTVRQbHVnaW5TYW1wbGVDdXJzb3JSZWYgb3Ro
ZXJDdXJzb3JSZWYpIGNvbnN0CiB7CiAgICAgTWVkaWFTYW1wbGVDdXJzb3IqIG90aGVyQ3Vyc29y
ID0gdW53cmFwKG90aGVyQ3Vyc29yUmVmKTsKQEAgLTMyNSwxNCArMzMwLDcgQEAgQ0ZDb21wYXJp
c29uUmVzdWx0IE1lZGlhU2FtcGxlQ3Vyc29yOjpjb21wYXJlSW5EZWNvZGVPcmRlcihNVFBsdWdp
blNhbXBsZUN1cnNvclIKICAgICAgICAgb3RoZXJQcmVzZW50YXRpb25UaW1lID0gdGltaW5nLnBy
ZXNlbnRhdGlvblRpbWU7CiAgICAgfSk7CiAKLSAgICBzd2l0Y2ggKHByZXNlbnRhdGlvblRpbWUu
Y29tcGFyZShvdGhlclByZXNlbnRhdGlvblRpbWUpKSB7Ci0gICAgY2FzZSBNZWRpYVRpbWU6Okxl
c3NUaGFuOgotICAgICAgICByZXR1cm4ga0NGQ29tcGFyZUxlc3NUaGFuOwotICAgIGNhc2UgTWVk
aWFUaW1lOjpFcXVhbFRvOgotICAgICAgICByZXR1cm4ga0NGQ29tcGFyZUVxdWFsVG87Ci0gICAg
Y2FzZSBNZWRpYVRpbWU6OkdyZWF0ZXJUaGFuOgotICAgICAgICByZXR1cm4ga0NGQ29tcGFyZUdy
ZWF0ZXJUaGFuOwotICAgIH0KKyAgICByZXR1cm4gbWFrZUNGQ29tcGFyaXNvblJlc3VsdChwcmVz
ZW50YXRpb25UaW1lIDw9PiBvdGhlclByZXNlbnRhdGlvblRpbWUpOwogfQogCiBPU1N0YXR1cyBN
ZWRpYVNhbXBsZUN1cnNvcjo6Z2V0U2FtcGxlVGltaW5nKENNU2FtcGxlVGltaW5nSW5mbyogc2Ft
cGxlVGltaW5nKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2NwcC9XS1JldGFpblB0ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2NwcC9XS1Jl
dGFpblB0ci5oCmluZGV4IGY0ZWI5MTRkNzkyYTAwOGUzNTI5ZjQyZjVhNzMwYmQ0N2UxN2UxNDcu
LjI4ZDhkMTlkMTY3ZjUzNjM1ZjdmMDJhNjE3Y2QwMDJjYzgwNDAxYTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5QdHIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmgKQEAgLTIxNiwyNiArMjE2LDYg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBXS1JldGFpblB0cjxUPiYgYSwKICAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShUKiBhLCBjb25zdCBXS1JldGFpblB0cjxVPiYgYikgCi17Ci0gICAgcmV0dXJuIGEgPT0gYi5n
ZXQoKTsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgV0tSZXRhaW5QdHI8VD4mIGEsIGNvbnN0IFdLUmV0YWluUHRyPFU+
JiBiKQoteyAKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXS1Jl
dGFpblB0cjxUPiYgYSwgVSogYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShU
KiBhLCBjb25zdCBXS1JldGFpblB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEgIT0gYi5nZXQo
KTsgCi19Ci0KICNpZiAoZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpKSAmJiAhKChf
TVNDX1ZFUiA+IDE5MDApICYmIF9fY2xhbmdfXykKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGlu
ZSBXS1JldGFpblB0cjxUPiBhZG9wdFdLKFQpIF9DaGVja19yZXR1cm5fOwogI2Vsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCmluZGV4IDM4MDA5ZjQzNTNjZWM0YzgwZmFjOGViMjVjMTlkMjgwMjUyYThlYjYuLjNm
ODg1MmMwN2Q0Y2NhN2RiNWQ1ZTg4NmQ2ZjZmNmUxZWM1Y2JmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpA
QCAtMzA0LDExICszMDQsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdLU2VsZWN0
aW9uRHJhd2luZ0luZm8mIGEsIGNvbnN0IFdLU2VsZWN0aW9uRHJhd2luZwogICAgIHJldHVybiB0
cnVlOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdLU2VsZWN0aW9uRHJhd2lu
Z0luZm8mIGEsIGNvbnN0IFdLU2VsZWN0aW9uRHJhd2luZ0luZm8mIGIpCi17Ci0gICAgcmV0dXJu
ICEoYSA9PSBiKTsKLX0KLQogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgc3RyZWFtLCBXS1NlbGVjdGlvbkRyYXdpbmdJbmZvOjpTZWxlY3Rpb25UeXBlIHR5cGUpCiB7
CiAgICAgc3dpdGNoICh0eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZS5oCmluZGV4IDMzNWYzZmFkZmFhZWVlM2ViNjI1MWVmYjk4OTk1MzkxNGQ2MDE2MzUu
LmQ4Zjc3ZjZhZjFiNTdhMjA4YTRlZTJkZTMzNTlhNWJhYTg5ZDJjMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVS
YW5nZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAppbmRl
eCA2OTkwYWEwMGMxNjk2ODFmOTZiMzBlYmQ3MWM0ZjM5ZGEyMGNmNjM1Li5jY2E4NGJiNjBiNmJh
MjY3NDc4Y2VkNDNkNDE5NzY3ZTBiMzYzOTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3BwCkBAIC01Miw3ICs1Miw3
IEBAIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4TGVuZ3RoSW5NYXJrZXJCeXRlID0gMHhFOwogCiBj
bGFzcyBJbnRlZ2VyQXJyYXkgewogcHVibGljOgotICAgIEludGVnZXJBcnJheSgpIDogbV9pbnRl
Z2VycygwKSwgbV9zaXplKDApIHsgfQorICAgIEludGVnZXJBcnJheSgpID0gZGVmYXVsdDsKICAg
ICBJbnRlZ2VyQXJyYXkoY29uc3QgaW50KiBpbnRlZ2Vycywgc2l6ZV90IHNpemUpIDogbV9pbnRl
Z2VycyhpbnRlZ2VycyksIG1fc2l6ZShzaXplKSB7IEFTU0VSVChpbnRlZ2Vycyk7IEFTU0VSVChz
aXplKTsgfQogCiAgICAgYm9vbCBpc0RlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIEhhc2hU
cmFpdHM8c2l6ZV90Pjo6aXNEZWxldGVkVmFsdWUobV9zaXplKTsgfQpAQCAtNjAsMTkgKzYwLDE1
IEBAIHB1YmxpYzoKICAgICBjb25zdCBpbnQqIGludGVnZXJzKCkgY29uc3QgeyBBU1NFUlQoIWlz
RGVsZXRlZFZhbHVlKCkpOyByZXR1cm4gbV9pbnRlZ2VyczsgfQogICAgIHNpemVfdCBzaXplKCkg
Y29uc3QgeyBBU1NFUlQoIWlzRGVsZXRlZFZhbHVlKCkpOyByZXR1cm4gbV9zaXplOyB9CiAKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50ZWdlckFycmF5JikgY29uc3QgPSBkZWZhdWx0Owor
CiBwcml2YXRlOgogICAgIGZyaWVuZCBzdHJ1Y3QgSW50ZWdlckFycmF5SGFzaFRyYWl0czsKLSAg
ICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVnZXJBcnJheSYsIGNvbnN0IEludGVn
ZXJBcnJheSYpOwogCi0gICAgY29uc3QgaW50KiBtX2ludGVnZXJzOwotICAgIHNpemVfdCBtX3Np
emU7CisgICAgY29uc3QgaW50KiBtX2ludGVnZXJzIHsgbnVsbHB0ciB9OworICAgIHNpemVfdCBt
X3NpemUgeyAwIH07CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVnZXJB
cnJheSYgYSwgY29uc3QgSW50ZWdlckFycmF5JiBiKQotewotICAgIHJldHVybiBhLm1faW50ZWdl
cnMgPT0gYi5tX2ludGVnZXJzICYmICBhLm1fc2l6ZSA9PSBiLm1fc2l6ZTsKLX0KLQogc3RydWN0
IEludGVnZXJBcnJheUhhc2hUcmFpdHMgOiBIYXNoVHJhaXRzPEludGVnZXJBcnJheT4gewogICAg
IHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShJbnRlZ2VyQXJyYXkmIHNsb3QpIHsg
SGFzaFRyYWl0czxzaXplX3Q+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUoc2xvdC5tX3NpemUpOyB9
CiAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgSW50ZWdlckFycmF5JiBzbG90
KSB7IHJldHVybiBIYXNoVHJhaXRzPHNpemVfdD46OmlzRGVsZXRlZFZhbHVlKHNsb3QubV9zaXpl
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9CaXRzLmggYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0JpdHMuaAppbmRleCAzZTc1MGMwNzliMTE3MmM5MWNiODA0NTQyNjg2
MmQzNjYyNmE2OTFmLi42NTg0Yjk3ZmU1NWQ5ZWNlOTdhMDJkYjZmOGUxMmUwZGI5NGVkYWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JpdHMuaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0JpdHMuaApAQCAtMjUxLDEyICsyNTEsNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlcj4K
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3RoZXImIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLSAgICAKICAgICBib29sIGF0
KHNpemVfdCBpbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBhdEltcGwoaW5kZXgp
Owo=
</data>
<flag name="commit-queue"
          id="474854"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448891</attachid>
            <date>2022-01-11 16:42:09 -0800</date>
            <delta_ts>2022-01-11 16:45:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235018-20220111164208.patch</filename>
            <type>text/plain</type>
            <size>603523</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ODE3MTU0ZDA1OTg1MjA4N2QzYmEzODU4ZTUyMDFkMDJjOWQwNzExLi5mMzQyNjdjYjk2MjVlY2Y5
MWY0NmYyODg4YTYyYWY0NWRjYjE0YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4IEBACisyMDIyLTAxLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIEMrKzIwIGRlZmF1bHQgY29tcGFyaXNv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAx
OAorCiAyMDIyLTAxLTExICBBc3VtdSBUYWtpa2F3YSAgPGFzdW11QGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1dhc21dIFVuaWZ5IG1lbW9yeSBpbXBvcnQgaGFuZGxpbmcgaW4gbW9kdWxlIGxvYWRl
ciBhbmQgSlMgY2FzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggNmY0ZWZlYjBlMzVkNzA1MDAzZWYxMjg5MTc1YWE5ZGYyMTZm
ODY2Yy4uYTBmZTEyMDdkOWE5N2VlMGNjODM2YWNhZDNiMTE5MTRhNzY3ZmI2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4IEBACisyMDIyLTAxLTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIEMrKzIwIGRlZmF1bHQgY29tcGFyaXNv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAx
OAorCiAyMDIyLTAxLTExICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgQXBwbGVUViBzcGVjaWZpYyBkaXNhYmxpbmcgb2YgY29uaWMgZ3JhZGllbnRzLCBp
dHMgbm90IG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE3NGY1MGI1MTE3MmYyY2M5NzA3ZWJmYTAx
Zjc3YjNhOWVmMWExZDAuLmQyMWZmZjc1MDkzM2M1NDQyZjlmZjAwYTBmNzIxYzE5MjI4NGFlOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4IEBACisyMDIyLTAxLTA5ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdGFydCB0YWtpbmcgYWR2YW50YWdlIG9mIEMrKzIw
IGRlZmF1bHQgY29tcGFyaXNvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTAxOAorCiAyMDIyLTAxLTExICBQZW5nIExpdSAgPHBlbmcubGl1NkBh
cHBsZS5jb20+CiAKICAgICAgICAgRGF0YVVSTFJlc291cmNlTWVkaWFMb2FkZXIgZGVjb2RlcyB0
aGUgVVJMIHJlcGVhdGVkbHkgZHVyaW5nIGEgdmlkZW8gcGxheWJhY2sKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CmluZGV4IGYzMTgxOTc3NGJjMTQwY2Y1MjU4Nzg2NDQ5MjdiYWZkNWFiMmU5MDIuLmM1NWVlOTZh
MjBmYjgyNGYwMWZlOWExNTU5ZmZhOGVjNmI0ZmIxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAt
MSwzICsxLDggQEAKKzIwMjItMDEtMDkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIFN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ugb2YgQysrMjAgZGVmYXVsdCBjb21wYXJp
c29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1
MDE4CisKIDIwMjItMDEtMTAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGEgLXNob3VsZFdyYXAgcHJvcGVydHkgd2hlbiBp
bmplY3RpbmcgTGl2ZSBUZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM5ZmIwMGMyZmUyOGUzMGNhN2RlMmQwYTY0
MTRmMzExZjY4ZDU3NzUuLjA1Zjg3ZGM3YTBjOWUxOGY5NjI3OTlkN2MwZjE5YjVjYTc1OGI5ZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsOCBAQAorMjAyMi0wMS0wOSAgRGFyaW4gQWRsZXIgIDxkYXJp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgU3RhcnQgdGFraW5nIGFkdmFudGFnZSBvZiBDKysyMCBk
ZWZhdWx0IGNvbXBhcmlzb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzUwMTgKKwogMjAyMi0wMS0xMSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIEluc3BlY3RvciBFeHRlbnNpb25zOiB0YWJJY29uVVJMcyB3
aXRoIGN1c3RvbSBzY2hlbWUgVVJMcyBhcmUgaW5jb3JyZWN0bHkgbG9hZGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggZTc0NDc2YTQ0ODNhNzVmZjdlOTVkZWZmOGNmOTQ3YmFlYmFj
ZDYxMS4uOGJiNGQ3YmM2NWE4YWJmYWI1ZGY0YzAyZmY1MTlhYzcyNmQxNDRiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDggQEAKKzIwMjItMDEtMDkgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN0YXJ0IHRha2luZyBhZHZhbnRhZ2Ug
b2YgQysrMjAgZGVmYXVsdCBjb21wYXJpc29ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDE4CisKIDIwMjItMDEtMTEgIE1pY2hhZWwgU2Fib2Zm
ICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4ZWQgaW5zdGFsbGhkciBidWlsZCBm
YWlsdXJlcyBpbiBXZWJDb3JlIGFuZCBXZWJLaXRMZWdhY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwppbmRleCAwNTkwNzU0
NjJiYzMwMzQ0MmE1NTI3ODY4NDAwMDZhMDQxMjJmYzcxLi5hMWYzMTMzNjMzZTczYmNjMDMyYjgw
MGU5MWI5NmQ1MzMyOTBhMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOCBAQAorMjAyMi0wMS0w
OSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3RhcnQgdGFraW5n
IGFkdmFudGFnZSBvZiBDKysyMCBkZWZhdWx0IGNvbXBhcmlzb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMTgKKwogMjAyMi0wMS0xMCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0YXJ0
IHVzaW5nIEMrKzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUmV0
YWluUHRyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTUmV0YWluUHRyLmgKaW5kZXgg
MDc2ZDEzOTA5YTM4MWQ1YTI5ZGE4OThiYjdiY2FjZjJjMzgyZWY5NC4uODZiZjhkZWZkMTBjY2Zi
YTUwMzJkMzE5MzM2ZmExZmViMDllZDQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1JldGFpblB0ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNS
ZXRhaW5QdHIuaApAQCAtMTc1LDE4ICsxNzUsMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IEpTUmV0YWluUHRyPAog
ewogICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAogfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEpTUmV0YWluUHRyPFQ+JiBh
LCBjb25zdCBKU1JldGFpblB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5n
ZXQoKTsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgSlNSZXRhaW5QdHI8VD4mIGEsIFUqIGIpCi17Ci0gICAgcmV0dXJu
IGEuZ2V0KCkgIT0gYjsgCi19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlu
bGluZSBib29sIG9wZXJhdG9yIT0oVCogYSwgY29uc3QgSlNSZXRhaW5QdHI8VT4mIGIpCi17IAot
ICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAppbmRleCA4OTdjNTNm
NjQzMGFhMjVlZDY4ZjI1ZjBiZDdkZDU5NmJjNWQ4ODIwLi4xMzAxMzU4MGRiOTM4YWI2NDZjYjQ1
OTNiMzJkODdmYTJlOTE2Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaApAQCAtNDIwLDcgKzQyMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1hc20tPmludmFsaWRhdGVBbGxUZW1wUmVnaXN0ZXJzKCk7
CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGFiZWwmIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX2xhYmVsID09IG90aGVyLm1fbGFiZWw7IH0KKyAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IExhYmVsJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIGJv
b2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX2xhYmVsLmlzU2V0KCk7IH0KICAgICBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJC
dWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVy
LmgKaW5kZXggNzBjYTM4YzJiODgxNjNiNmY4MmFmYmZhODY0MDdjYmIwMTk4Yzg1My4uMDIwNmQw
NTI5NzhhYTk3ZTQ0OWI3OThmOWFkZjQ1OThlYjZiMWFjNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCkBAIC01MywyNCArNTMsMjQg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5U
SUZJRVIoQXNzZW1ibGVyRGF0YSk7CiAKICAgICBzdHJ1Y3QgQXNzZW1ibGVyTGFiZWwgewotICAg
ICAgICBpbmxpbmUgQXNzZW1ibGVyTGFiZWwoKSB7IHNldE9mZnNldChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpOyB9Ci0gICAgICAgIGlubGluZSBBc3NlbWJsZXJMYWJlbChj
b25zdCBBc3NlbWJsZXJMYWJlbCYgb3RoZXIpIHsgc2V0T2Zmc2V0KG90aGVyLm9mZnNldCgpKTsg
fQotICAgICAgICBpbmxpbmUgQXNzZW1ibGVyTGFiZWwoQXNzZW1ibGVyTGFiZWwmJiBvdGhlcikg
eyBzZXRPZmZzZXQob3RoZXIub2Zmc2V0KCkpOyB9Ci0gICAgICAgIGlubGluZSBleHBsaWNpdCBB
c3NlbWJsZXJMYWJlbCh1aW50MzJfdCBvZmZzZXQpIHsgc2V0T2Zmc2V0KG9mZnNldCk7IH0KKyAg
ICAgICAgQXNzZW1ibGVyTGFiZWwoKSB7IHNldE9mZnNldChzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCkpOyB9CisgICAgICAgIEFzc2VtYmxlckxhYmVsKGNvbnN0IEFzc2VtYmxl
ckxhYmVsJiBvdGhlcikgeyBzZXRPZmZzZXQob3RoZXIub2Zmc2V0KCkpOyB9CisgICAgICAgIEFz
c2VtYmxlckxhYmVsKEFzc2VtYmxlckxhYmVsJiYgb3RoZXIpIHsgc2V0T2Zmc2V0KG90aGVyLm9m
ZnNldCgpKTsgfQorICAgICAgICBleHBsaWNpdCBBc3NlbWJsZXJMYWJlbCh1aW50MzJfdCBvZmZz
ZXQpIHsgc2V0T2Zmc2V0KG9mZnNldCk7IH0KIAogICAgICAgICBBc3NlbWJsZXJMYWJlbCYgb3Bl
cmF0b3I9KGNvbnN0IEFzc2VtYmxlckxhYmVsJiBvdGhlcikgeyBzZXRPZmZzZXQob3RoZXIub2Zm
c2V0KCkpOyByZXR1cm4gKnRoaXM7IH0KICAgICAgICAgQXNzZW1ibGVyTGFiZWwmIG9wZXJhdG9y
PShBc3NlbWJsZXJMYWJlbCYmIG90aGVyKSB7IHNldE9mZnNldChvdGhlci5vZmZzZXQoKSk7IHJl
dHVybiAqdGhpczsgfQogCiAgICAgICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAob2Zm
c2V0KCkgIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKTsgfQogCi0gICAg
ICAgIGlubGluZSBBc3NlbWJsZXJMYWJlbCBsYWJlbEF0T2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0
CisgICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsQXRPZmZzZXQoaW50IG9mZnNldCkgY29uc3QK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEFzc2VtYmxlckxhYmVsKHRoaXMtPm9mZnNl
dCgpICsgb2Zmc2V0KTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBBc3NlbWJsZXJMYWJlbCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9mZnNldCgpID09IG90aGVy
Lm9mZnNldCgpOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBc3NlbWJsZXJMYWJl
bCYpIGNvbnN0ID0gZGVmYXVsdDsKIAotICAgICAgICBpbmxpbmUgdWludDMyX3Qgb2Zmc2V0KCkg
Y29uc3QKKyAgICAgICAgdWludDMyX3Qgb2Zmc2V0KCkgY29uc3QKICAgICAgICAgewogI2lmIENQ
VShBUk02NEUpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVudGFn
SW50KG1fb2Zmc2V0LCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPih0aGlzKSkpOwpAQCAtODAsNyArODAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
aW5saW5lIHZvaWQgc2V0T2Zmc2V0KHVpbnQzMl90IG9mZnNldCkKKyAgICAgICAgdm9pZCBzZXRP
ZmZzZXQodWludDMyX3Qgb2Zmc2V0KQogICAgICAgICB7CiAjaWYgQ1BVKEFSTTY0RSkKICAgICAg
ICAgICAgIG1fb2Zmc2V0ID0gdGFnSW50KHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQpLCBi
aXR3aXNlX2Nhc3Q8UHRyVGFnPih0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAppbmRleCAxZWEzMjQ1NDE1
YWIwOGE0NWM3ZDNlNTk1OTYwYzQ0NWIxOWZmNzUxLi45NjMzYjVjZmQ4ZDZiMzk0M2NkZWQ5YWZh
NjVjY2MyYzhkYzI3MjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKQEAgLTEyMCw4ICsxMjAsNyBAQCBwdWJs
aWM6CiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9wdHI7
IH0KICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3B0cjsgfQogCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENGdW5jdGlvblB0ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fcHRyID09IG90aGVyLm1fcHRyOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENGdW5j
dGlvblB0ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyICE9IG90aGVyLm1fcHRyOyB9Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENGdW5jdGlvblB0ciYpIGNvbnN0ID0gZGVmYXVsdDsK
IAogcHJpdmF0ZToKICAgICBQdHIgbV9wdHIgeyBudWxscHRyIH07CkBAIC0yMDcsOCArMjA2LDcg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAh
IW1fdmFsdWU7IH0KICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3ZhbHVl
OyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnVuY3Rpb25QdHImIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7IH0KLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgRnVuY3Rpb25QdHImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlICE9IG90
aGVyLm1fdmFsdWU7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnVuY3Rpb25QdHImKSBj
b25zdCA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8UHRyVGFnIG90aGVyVGFn
PgpAQCAtMjc2LDI0ICsyNzQsNDUgQEAgcHJpdmF0ZToKIC8vCiAvLyBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgc2hvdWxkIGJlIHVzZWQgdG8gd3JhcCBwb2ludGVycyB0byBKSVQgZ2VuZXJhdGVkIGNv
ZGUuCiBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHJCYXNlIHsKK3B1YmxpYzoKKyAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX3ZhbHVlOyB9CisgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhKnRoaXM7IH0KKworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHJCYXNlJikgY29uc3QgPSBkZWZhdWx0Owor
CisgICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IGVtcHR5
VmFsdWUoKTsgfQorICAgIGJvb2wgaXNEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlID09IGRlbGV0ZWRWYWx1ZSgpOyB9CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyBy
ZXR1cm4gUHRySGFzaDxjb25zdCB2b2lkKj46Omhhc2gobV92YWx1ZSk7IH0KKwogcHJvdGVjdGVk
OgorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ckJhc2UoY29uc3Qgdm9pZCogdmFsdWUgPSBudWxs
cHRyKQorICAgICAgICA6IG1fdmFsdWUgeyB2YWx1ZSB9CisgICAgeworICAgIH0KKwogICAgIHN0
YXRpYyB2b2lkIGR1bXBXaXRoTmFtZSh2b2lkKiBleGVjdXRhYmxlQWRkcmVzcywgdm9pZCogZGF0
YUxvY2F0aW9uLCBjb25zdCBjaGFyKiBuYW1lLCBQcmludFN0cmVhbSYgb3V0KTsKKworICAgIHN0
YXRpYyBjb25zdCB2b2lkKiBlbXB0eVZhbHVlKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMSkpOyB9CisgICAgc3RhdGljIGNvbnN0IHZvaWQqIGRl
bGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KDIpKTsgfQorCisgICAgY29uc3Qgdm9pZCogbV92YWx1ZSB7IG51bGxwdHIgfTsKIH07
CiAKLS8vIEZJWE1FOiBNYWtlIEpTQyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgaW5qZXJpdCBmcm9t
IE1ldGFBbGxvY2F0b3JQdHIuCisvLyBGSVhNRTogTWFrZSBKU0MgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGluaGVyaXQgZnJvbSBNZXRhQWxsb2NhdG9yUHRyLgogLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTE0NQogdGVtcGxhdGU8UHRyVGFnIHRhZz4KLWNsYXNz
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciA6IHByaXZhdGUgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyQmFz
ZSB7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgOiBwdWJsaWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyQmFzZSB7CiBwdWJsaWM6CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkgPSBkZWZh
dWx0OwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cihzdGQ6Om51bGxwdHJfdCkgOiBtX3ZhbHVl
KG51bGxwdHIpIHsgfQorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cihzdGQ6Om51bGxwdHJfdCkg
eyB9CiAKICAgICBleHBsaWNpdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoY29uc3Qgdm9pZCogdmFs
dWUpCiAjaWYgQ1BVKEFSTV9USFVNQjIpCiAgICAgICAgIC8vIERlY29yYXRlIHRoZSBwb2ludGVy
IGFzIGEgdGh1bWIgY29kZSBwb2ludGVyLgotICAgICAgICA6IG1fdmFsdWUocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4odmFsdWUpICsgMSkKKyAgICAgICAgOiBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHJCYXNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHZhbHVlKSArIDEpCiAjZWxz
ZQotICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgICAgIDogTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyQmFzZSh2YWx1ZSkKICNlbmRpZgogICAgIHsKICAgICAgICAgYXNzZXJ0SXNUYWdnZWRXaXRo
PHRhZz4odmFsdWUpOwpAQCAtMzE1LDcgKzMzNCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBl
eHBsaWNpdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoUmV0dXJuQWRkcmVzc1B0ciByYSkKLSAgICAg
ICAgOiBtX3ZhbHVlKHJldGFnQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnLCB0YWc+KHJhLnZh
bHVlKCkpKQorICAgICAgICA6IE1hY3JvQXNzZW1ibGVyQ29kZVB0ckJhc2UocmV0YWdDb2RlUHRy
PFJldHVybkFkZHJlc3NQdHJUYWcsIHRhZz4ocmEudmFsdWUoKSkpCiAgICAgewogICAgICAgICBB
U1NFUlQocmEudW50YWdnZWRWYWx1ZSgpKTsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUihtX3ZhbHVlKTsKQEAgLTM2NCwxNyArMzgzLDYgQEAgcHVibGljOgogICAgIH0KICNlbmRp
ZgogCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFt
X3ZhbHVlOwotICAgIH0KLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gISghKnRoaXMpOyB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1
ZSA9PSBvdGhlci5tX3ZhbHVlOwotICAgIH0KLQogICAgIC8vIERpc2FsbG93IGFueSBjYXN0aW5n
IG9wZXJhdGlvbnMgKGV4Y2VwdCBmb3IgYm9vbGVhbnMpLiBJbnN0ZWFkLCB0aGUgY2xpZW50CiAg
ICAgLy8gc2hvdWxkIGJlIGFza2luZyBleGVjdXRhYmxlQWRkcmVzcygpIGV4cGxpY2l0bHkuCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgPSBzdGQ6OmVuYWJsZV9pZl90PCFzdGQ6
OmlzX3NhbWU8VCwgYm9vbD46OnZhbHVlPj4KQEAgLTM5NCwyNSArNDAyLDE0IEBAIHB1YmxpYzoK
ICAgICBlbnVtIERlbGV0ZWRWYWx1ZVRhZyB7IERlbGV0ZWRWYWx1ZSB9OwogICAgIAogICAgIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cihFbXB0eVZhbHVlVGFnKQotICAgICAgICA6IG1fdmFsdWUoZW1w
dHlWYWx1ZSgpKQorICAgICAgICA6IE1hY3JvQXNzZW1ibGVyQ29kZVB0ckJhc2UoZW1wdHlWYWx1
ZSgpKQogICAgIHsgfQogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cihEZWxldGVkVmFs
dWVUYWcpCi0gICAgICAgIDogbV92YWx1ZShkZWxldGVkVmFsdWUoKSkKKyAgICAgICAgOiBNYWNy
b0Fzc2VtYmxlckNvZGVQdHJCYXNlKGRlbGV0ZWRWYWx1ZSgpKQogICAgIHsgfQogICAgIAotICAg
IGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9PSBlbXB0eVZhbHVl
KCk7IH0KLSAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZSA9
PSBkZWxldGVkVmFsdWUoKTsgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJu
IFB0ckhhc2g8Y29uc3Qgdm9pZCo+OjpoYXNoKG1fdmFsdWUpOyB9Ci0KICAgICBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplKCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IHZvaWQqIGVtcHR5
VmFsdWUoKSB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90
PigxKSk7IH0KLSAgICBzdGF0aWMgY29uc3Qgdm9pZCogZGVsZXRlZFZhbHVlKCkgeyByZXR1cm4g
Yml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oMikpOyB9Ci0KLSAgICBj
b25zdCB2b2lkKiBtX3ZhbHVlIHsgbnVsbHB0ciB9OwogfTsKIAogdGVtcGxhdGU8UHRyVGFnIHRh
Zz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nhc2VDb2xsZWN0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDYXNlQ29sbGVjdGlvbi5oCmluZGV4IGM0
NWNjNjQxZDgwZWE1NjFkOTkwZGI3ZWM2ZDExYTdkOTIyZWJhNzguLjY3ZDE2OTQyNDlmZmY5NGI5
MGQwYWRkNjlkYmQ0NDgwMjZjNGRkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Nhc2VDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q2FzZUNvbGxlY3Rpb24uaApAQCAtODksMTEgKzg5LDYgQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQogCi0gICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCiAgICAgcHJp
dmF0ZToKICAgICAgICAgY29uc3QgQ2FzZUNvbGxlY3Rpb24qIG1fY29sbGVjdGlvbjsKICAgICAg
ICAgdW5zaWduZWQgbV9pbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NoZWNrU3BlY2lhbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVj
aWFsLmgKaW5kZXggODBkZjAwNDM1M2E2YWI0OWI0YWJhYjFhNjdlMWY5ZjE3MDY5ZjU1MC4uYTA3
NDkyMDAwZDY2MmEzZWY2NDQwZjhhNmVmMWI3ZDM4MmY0OGFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ2hlY2tTcGVjaWFsLmgKQEAgLTY4LDE3ICs2OCw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICBleHBsaWNpdCBLZXkoY29uc3QgQWlyOjpJbnN0Jik7CiAKLSAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEtleSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBtX2tpbmQgPT0gb3RoZXIubV9raW5kCi0gICAgICAgICAgICAgICAgJiYgbV9udW1B
cmdzID09IG90aGVyLm1fbnVtQXJncwotICAgICAgICAgICAgICAgICYmIG1fc3RhY2ttYXBSb2xl
ID09IG90aGVyLm1fc3RhY2ttYXBSb2xlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEtleSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgS2V5JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBLZXkoKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNFZmZlY3RzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCmluZGV4IGUwZGJmYTcyNGM4MGEzY2UxNzgxY2FjMmE5
M2ZlZGIzNjYzYTJhNjUuLmNjZDEyZGM0ZWM3MzEwMzExMDY4OTMyOWU1N2Q1ZjQwOGJhZjdlM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuY3BwCkBAIC04NSwyNSArODUsNiBA
QCBib29sIEVmZmVjdHM6OmludGVyZmVyZXMoY29uc3QgRWZmZWN0cyYgb3RoZXIpIGNvbnN0CiAg
ICAgICAgIHx8IChmZW5jZSAmJiBvdGhlci5mZW5jZSk7CiB9CiAKLWJvb2wgRWZmZWN0czo6b3Bl
cmF0b3I9PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gdGVybWlu
YWwgPT0gb3RoZXIudGVybWluYWwKLSAgICAgICAgJiYgZXhpdHNTaWRld2F5cyA9PSBvdGhlci5l
eGl0c1NpZGV3YXlzCi0gICAgICAgICYmIGNvbnRyb2xEZXBlbmRlbnQgPT0gb3RoZXIuY29udHJv
bERlcGVuZGVudAotICAgICAgICAmJiB3cml0ZXNMb2NhbFN0YXRlID09IG90aGVyLndyaXRlc0xv
Y2FsU3RhdGUKLSAgICAgICAgJiYgcmVhZHNMb2NhbFN0YXRlID09IG90aGVyLnJlYWRzTG9jYWxT
dGF0ZQotICAgICAgICAmJiB3cml0ZXNQaW5uZWQgPT0gb3RoZXIud3JpdGVzUGlubmVkCi0gICAg
ICAgICYmIHJlYWRzUGlubmVkID09IG90aGVyLnJlYWRzUGlubmVkCi0gICAgICAgICYmIHdyaXRl
cyA9PSBvdGhlci53cml0ZXMKLSAgICAgICAgJiYgcmVhZHMgPT0gb3RoZXIucmVhZHMKLSAgICAg
ICAgJiYgZmVuY2UgPT0gb3RoZXIuZmVuY2U7Ci19Ci0KLWJvb2wgRWZmZWN0czo6b3BlcmF0b3Ih
PShjb25zdCBFZmZlY3RzJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Ci19Ci0KIHZvaWQgRWZmZWN0czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewogICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzRWZmZWN0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRWZm
ZWN0cy5oCmluZGV4IGE1YjY0MDE5YzBhZjY0MzAzZDI3NGIyMWE3YTlkMGM4YzM5Y2I1OTcuLjJh
OTg3NTlkNDVlMGEzYWQxMDU5MWVlNmM2ZWZhMzUwZGYyZmVkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0VmZmVjdHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNFZmZlY3RzLmgKQEAgLTExOCw4ICsxMTgsNyBAQCBzdHJ1Y3QgRWZmZWN0cyB7CiAg
ICAgLy8gYmVoYXZpb3IgaW4gYW4gb2JzZXJ2YWJsZSB3YXkuCiAgICAgYm9vbCBpbnRlcmZlcmVz
KGNvbnN0IEVmZmVjdHMmKSBjb25zdDsKICAgICAKLSAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IG9wZXJhdG9yPT0oY29uc3QgRWZmZWN0cyYpIGNvbnN0OwotICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBFZmZlY3RzJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEVmZmVjdHMmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jay5oCmluZGV4IDFj
NWU3NWNmZThiNjNmM2M3Mzk0NThjOGM1NTMxMWEzNGU1ZmVkZGUuLjZkZmZjMTE0ZjEyNGRhYWI3
MDdhYzQ4Y2M0YzlkMGMxOTZkMjAzZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmgKQEAgLTQ1LDE2ICs0NSw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdlbmVyaWNGcmVx
dWVudGVkQmxvY2smIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmxvY2sg
PT0gb3RoZXIubV9ibG9jawotICAgICAgICAgICAgJiYgbV9mcmVxdWVuY3kgPT0gb3RoZXIubV9m
cmVxdWVuY3k7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdlbmVyaWNGcmVx
dWVudGVkQmxvY2smIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2VuZXJpY0ZyZXF1
ZW50ZWRCbG9jayYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJv
b2woKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0tpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0tpbmQuaAppbmRleCA2OTJhZjQ4
OWI3M2Y1ODA2ZDcwODZlZWQ1Yzc1NWVkYWE0YmMyODRmLi5iN2I4YWMwM2U4MGYwMmIxYmM2ZTRk
ZWM5OWM3OWY3Mjk5NzJmZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNLaW5kLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzS2luZC5oCkBAIC02OSwx
MiArNjksMTIgQEAgcHVibGljOgogICAgICAgICA6IEtpbmQoT29wcykKICAgICB7CiAgICAgfQot
ICAgIAorCiAgICAgT3Bjb2RlIG9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bjb2RlOyB9CiAg
ICAgdm9pZCBzZXRPcGNvZGUoT3Bjb2RlIG9wY29kZSkgeyBtX29wY29kZSA9IG9wY29kZTsgfQot
ICAgIAorCiAgICAgYm9vbCBoYXNFeHRyYUJpdHMoKSBjb25zdCB7IHJldHVybiBtX2lzQ2hpbGwg
fHwgbV90cmFwczsgfQotICAgIAorCiAgICAgLy8gQ2hpbGwgYml0LiBUaGlzIGFwcGxpZXMgdG8g
ZGl2aXNpb24tYmFzZWQgYXJpdGhtZXRpYyBvcHMsIHdoaWNoIG1heSB0cmFwIG9uIHNvbWUKICAg
ICAvLyBwbGF0Zm9ybXMgb3IgZXhoaWJpdCBiaXphcnJlIGJlaGF2aW9yIHdoZW4gcGFzc2VkIGNl
cnRhaW4gaW5wdXRzLiBUaGUgbm9uLWNoaWxsCiAgICAgLy8gdmVyc2lvbiB3aWxsIGJlaGF2ZSBh
cyB1bnByZWRpY3RhYmx5IGFzIGl0IHdhbnRzLiBGb3IgZXhhbXBsZSwgaXQncyBsZWdhbCB0bwpA
QCAtMTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGhhc0lzQ2hpbGwoKSk7
CiAgICAgICAgIG1faXNDaGlsbCA9IGlzQ2hpbGw7CiAgICAgfQotICAgIAorCiAgICAgLy8gVHJh
cHMgYml0LiBUaGlzIGFwcGxpZXMgdG8gbWVtb3J5IGFjY2VzcyBvcHMuIEl0IG1lYW5zIHRoYXQg
dGhlIGluc3RydWN0aW9uIGNvdWxkCiAgICAgLy8gdHJhcCBhcyBwYXJ0IG9mIHNvbWUgY2hlY2sg
aXQgcGVyZm9ybXMsIGFuZCB0aGF0IHdlIG1lYW4gdG8gbWFrZSB0aGlzIG9ic2VydmFibGUuIFRo
aXMKICAgICAvLyBjdXJyZW50bHkgb25seSBhcHBsaWVzIHRvIG1lbW9yeSBhY2Nlc3NlcyAobG9h
ZHMgYW5kIHN0b3JlcykuIFlvdSBkb24ndCBnZXQgdG8gZmluZCBvdXQgd2hlcmUKQEAgLTE0OCw3
ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChoYXNUcmFwcygpKTsKICAgICAgICAg
bV90cmFwcyA9IHRyYXBzOwogICAgIH0KLSAgICAKKwogICAgIC8vIFJ1bGVzIGZvciBhZGRpbmcg
bmV3IHByb3BlcnRpZXM6CiAgICAgLy8gLSBQdXQgdGhlIGFjY2Vzc29ycyBoZXJlLgogICAgIC8v
IC0gaGFzQmxhaCgpIHNob3VsZCBjaGVjayBpZiB0aGUgb3Bjb2RlIGFsbG93cyBmb3IgeW91ciBw
cm9wZXJ0eS4KQEAgLTE1NywzOSArMTU3LDI5IEBAIHB1YmxpYzoKICAgICAvLyAtIFRyeSBub3Qg
dG8gaW5jcmVhc2UgdGhlIHNpemUgb2YgS2luZCB0b28gbXVjaC4gQnV0IGl0IHdvdWxkbid0IGJl
IHRoZSBlbmQgb2YgdGhlCiAgICAgLy8gICB3b3JsZCBpZiBpdCBibG9hdGVkIHRvIDY0IGJpdHMu
CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtpbmQmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fb3Bjb2RlID09IG90aGVyLm1fb3Bjb2RlCi0gICAgICAgICAg
ICAmJiBtX2lzQ2hpbGwgPT0gb3RoZXIubV9pc0NoaWxsCi0gICAgICAgICAgICAmJiBtX3RyYXBz
ID09IG90aGVyLm1fdHJhcHM7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBLaW5kJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKLSAgICB9Ci0gICAgCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtpbmQmKSBjb25z
dCA9IGRlZmF1bHQ7CisKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLSAgICAK
KwogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKICAgICAgICAgLy8gSXQncyBhbG1v
c3QgY2VydGFpbmx5IG1vcmUgaW1wb3J0YW50IHRoYXQgdGhpcyBoYXNoIGZ1bmN0aW9uIGlzIGNo
ZWFwIHRvIGNvbXB1dGUgdGhhbgogICAgICAgICAvLyBhbnl0aGluZyBlbHNlLiBXZSBjYW4gbGl2
ZSB3aXRoIHNvbWUga2luZCBoYXNoIGNvbGxpc2lvbnMuCiAgICAgICAgIHJldHVybiBtX29wY29k
ZSArIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9pc0NoaWxsKSA8PCAxNikgKyAoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fdHJhcHMpIDw8IDcpOwogICAgIH0KLSAgICAKKwogICAgIEtpbmQoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAgICAgICA6IG1fb3Bjb2RlKE9vcHMpCiAg
ICAgICAgICwgbV9pc0NoaWxsKHRydWUpCiAgICAgICAgICwgbV90cmFwcyhmYWxzZSkKICAgICB7
CiAgICAgfQotICAgIAorCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gKnRoaXMgPT0gS2luZChXVEY6Okhhc2hUYWJsZURlbGV0
ZWRWYWx1ZSk7CiAgICAgfQotICAgIAorCiBwcml2YXRlOgogICAgIE9wY29kZSBtX29wY29kZTsK
ICAgICBib29sIG1faXNDaGlsbCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQaGlDaGlsZHJlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGhpQ2hp
bGRyZW4uaAppbmRleCA5NTIwNTU0YjY5OGFhZDk2ZmI4M2U3NGI4NmM0MjEzZDM5M2E5MmNiLi5i
ZWE5NDFiOGEzNWRkNWU4YWM2Y2RkNzgzZmNjZDc2MTU2NjFmOTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQaGlDaGlsZHJlbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1BoaUNoaWxkcmVuLmgKQEAgLTg1LDExICs4NSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAg
VmVjdG9yPFVwc2lsb25WYWx1ZSo+KiBtX3ZhbHVlczsKICAgICAgICAgICAgIHVuc2lnbmVkIG1f
aW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xs
ZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTcGFyc2VDb2xsZWN0aW9uLmgK
aW5kZXggNDk1Yjk0ZGI5YzU3MDZmM2U4YzA3MTY2MmUwNDNiZTRhNjcyNTFlZC4uODdlZTAzNmFh
NjEyN2JkOWFkMmUzZGExMTBlMDVmYjcxYzliMzM2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU3BhcnNlQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1NwYXJzZUNvbGxlY3Rpb24uaApAQCAtMTU0LDExICsxNTQsNiBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgICAgICB9
CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAg
ICB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU3BhcnNlQ29sbGVjdGlv
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBWYWx1ZS5oCmluZGV4IDg3
ZjAwOWQ0OTAxMWU3OGFjYjAwNzIyMjMzOGZkN2YwY2I1NDNhODkuLjcxMzEwNjU0NDk5MDYwNmYw
ODc2N2I1MjRkYjk5N2M0ZWI5ZDE0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1N0YWNrbWFwVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNT
dGFja21hcFZhbHVlLmgKQEAgLTI3MywxMSArMjczLDYgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAg
ICBjb25zdCBDb25zdHJhaW5lZFZhbHVlQ29sbGVjdGlvbiogbV9jb2xsZWN0aW9uOwogICAgICAg
ICAgICAgdW5zaWduZWQgbV9pbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1N1Y2Nlc3NvckNvbGxlY3Rpb24uaAppbmRleCAwYTdkZjI0N2IwYjhlZTJjZDExZDNlNmI5MjU3
YzhiYTk2ZmU1MzM4Li5iOTM2MTQwMjIzZGY2N2UwOWY0ZmZiMmI4OTcyYzkwYzkxNGEzZmVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTdWNjZXNzb3JDb2xsZWN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3VjY2Vzc29yQ29sbGVjdGlvbi5o
CkBAIC03NiwxMSArNzYsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9
PSBvdGhlci5tX2luZGV4OwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBT
dWNjZXNzb3JDb2xsZWN0aW9uKiBtX2NvbGxlY3Rpb247CiAgICAgICAgIHNpemVfdCBtX2luZGV4
OwpAQCAtMTIwLDExICsxMTUsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbV9pbmRl
eCA9PSBvdGhlci5tX2luZGV4OwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0KICAgICBwcml2YXRlOgog
ICAgICAgICBjb25zdCBTdWNjZXNzb3JDb2xsZWN0aW9uKiBtX2NvbGxlY3Rpb247CiAgICAgICAg
IHNpemVfdCBtX2luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCmluZGV4IDkzMjJmODhl
ZDliOTc4NDdmZDRhYTcwZTdlNTkzNTQ3NzA1OWY1NTAuLmNjOWVjNzM2YWIyM2ZhNTc2ZDEyYTk1
OGFhZGI3ZTZjMzI2MDQ3NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKQEAgLTcxLDEw
ICs3MSw4IEBAIHB1YmxpYzoKICAgICBpbmxpbmUgYm9vbCBpc051bWVyaWMoKSBjb25zdDsKICAg
ICBpbmxpbmUgYm9vbCBpc1R1cGxlKCkgY29uc3Q7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVHlwZUtpbmQmIG90aGVyS2luZCkgY29uc3QgeyByZXR1cm4ga2luZCgpID09IG90aGVyS2lu
ZDsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUeXBlJiB0eXBlKSBjb25zdCB7IHJldHVy
biBtX2tpbmQgPT0gdHlwZS5tX2tpbmQ7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVHlw
ZUtpbmQmIG90aGVyS2luZCkgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcktpbmQpOyB9
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFR5cGUmIHR5cGUpIGNvbnN0IHsgcmV0dXJuICEo
KnRoaXMgPT0gdHlwZSk7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHlwZSYpIGNvbnN0
ID0gZGVmYXVsdDsKKyAgICBib29sIG9wZXJhdG9yPT0oVHlwZUtpbmQgb3RoZXJLaW5kKSBjb25z
dCB7IHJldHVybiBraW5kKCkgPT0gb3RoZXJLaW5kOyB9CiAKIHByaXZhdGU6CiAgICAgVHlwZUtp
bmQgbV9raW5kIHsgVm9pZCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsdWVLZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmgKaW5k
ZXggNDZmNDQwYzUyZmQ0ZTBjZTlkZjA5NjU5OGNkNWNjMDZmMzk5NTFhMS4uMTg1N2VlMzY1MWQx
OTI4ZjBiOWUyNTMwNTA3NDVmOGMzZWZlZDBjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZUtleS5oCkBAIC05NywxNyArOTcsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIGRvdWJsZVZh
bHVlKCkgY29uc3QgeyByZXR1cm4gdS5kb3VibGVWYWx1ZTsgfQogICAgIGZsb2F0IGZsb2F0VmFs
dWUoKSBjb25zdCB7IHJldHVybiB1LmZsb2F0VmFsdWU7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBWYWx1ZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9r
aW5kID09IG90aGVyLm1fa2luZAotICAgICAgICAgICAgJiYgbV90eXBlID09IG90aGVyLm1fdHlw
ZQotICAgICAgICAgICAgJiYgdSA9PSBvdGhlci51OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBWYWx1ZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWYWx1
ZUtleSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlUmVwLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZVJlcC5oCmluZGV4IDE1N2JjODg2ODIzMTJi
MWExZTlkYTczOWMwODJjMGQ2YzQ3N2QzMjYuLjUxMzA0YjYyM2I4NzI4N2JlMGU0M2NiM2E4NzAx
OTJiNWM2YjNiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
UmVwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVSZXAuaApAQCAtMjEx
LDExICsyMTEsNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgVmFsdWVSZXAmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiBraW5kKCkgIT0gV2FybUFueTsgfQogCiAgICAgYm9vbCBpc0FueSgp
IGNvbnN0IHsgcmV0dXJuIGtpbmQoKSA9PSBXYXJtQW55IHx8IGtpbmQoKSA9PSBDb2xkQW55IHx8
IGtpbmQoKSA9PSBMYXRlQ29sZEFueTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVJlZ2lzdGVyc0J5R3JhcGhDb2xvcmluZy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9y
aW5nLmNwcAppbmRleCBiMGQyNWQxNmFlNmExOTBmNDViMWIzM2FkZjY4ODQyOTgzYWVmN2NhLi5i
ZTY3OWU3NDUxMGJmNWJmOGQyZmYyNWJkMmE4NTAyMzJmYzg5OTI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVnaXN0ZXJzQnlHcmFwaENvbG9y
aW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlUmVn
aXN0ZXJzQnlHcmFwaENvbG9yaW5nLmNwcApAQCAtMTQyNywxNSArMTQyNyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgVG1wIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIFRtcE1hcHBlcjo6dG1wRnJv
bUFic29sdXRlSW5kZXgoKm1faW5kZXhJdGVyYXRvcik7IH0KICAgICAgICAgSW5kZXhUb1RtcEl0
ZXJhdG9yQWRhcHRvciYgb3BlcmF0b3IrKygpIHsgKyttX2luZGV4SXRlcmF0b3I7IHJldHVybiAq
dGhpczsgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmRleFRvVG1wSXRlcmF0
b3JBZGFwdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1f
aW5kZXhJdGVyYXRvciA9PSBvdGhlci5tX2luZGV4SXRlcmF0b3I7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5kZXhUb1RtcEl0ZXJhdG9yQWRhcHRvciYgb3Ro
ZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5kZXhUb1RtcEl0
ZXJhdG9yQWRhcHRvciYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IEluZGV4SXRlcmF0b3IgbV9pbmRleEl0ZXJhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFja0J5R3JhcGhDb2xvcmlu
Zy5jcHAKaW5kZXggYzJmMWFlZjI4YTgzMGNmYjUyNGE3MWY1MmUwMmYzM2Q1NTFjYWVkNC4uZWNl
Zjg4NmZkNWFiMzE2ZmM5NzM5ZmJlYzBkMGRjOGU2ZDc1MTQyNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrQnlHcmFwaENvbG9yaW5nLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFsbG9jYXRlU3RhY2tCeUdy
YXBoQ29sb3JpbmcuY3BwCkBAIC0zMTMsMTcgKzMxMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2FsZXNjYWJsZU1v
dmUmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3JjID09IG90
aGVyLnNyYwotICAgICAgICAgICAgICAgICYmIGRzdCA9PSBvdGhlci5kc3QKLSAgICAgICAgICAg
ICAgICAmJiBmcmVxdWVuY3kgPT0gb3RoZXIuZnJlcXVlbmN5OwotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvYWxlc2NhYmxlTW92ZSYgb3RoZXIpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAg
fQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29hbGVzY2FibGVNb3ZlJikgY29uc3Qg
PSBkZWZhdWx0OwogCiAgICAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAg
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAppbmRleCBmYmY2NjM3YjI4
NjA3MjlkNTQ3OGZmM2NkZDA0NTM2ODVhYmE0Yzk1Li5lZmNlM2E4ODA2NzI5MTI1ODVjZGYxZmEx
NzA2ZTNhZjdhOTJiZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKQEAg
LTczMyw2ICs3MzMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXJn
JiBvdGhlcikgY29uc3QKICAgICB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlnbm9yZXMgbV9l
eHRlbmQuIElzIHRoYXQgaW50ZW50aW9uYWw/IElmIG5vdCwgd2UgY291bGQgdXNlIGRlZmF1bHQg
aW5zdGVhZCBvZiB3cml0aW5nIHRoaXMgb3V0LgogICAgICAgICByZXR1cm4gbV9vZmZzZXQgPT0g
b3RoZXIubV9vZmZzZXQKICAgICAgICAgICAgICYmIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKICAg
ICAgICAgICAgICYmIG1fYmFzZSA9PSBvdGhlci5tX2Jhc2UKQEAgLTc0MCwxMSArNzQxLDYgQEAg
cHVibGljOgogICAgICAgICAgICAgJiYgbV9zY2FsZSA9PSBvdGhlci5tX3NjYWxlOwogICAgIH0K
IAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBcmcmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBBcmcoKTsgfQogCiAgICAgS2lu
ZCBraW5kKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKaW5kZXgg
ZWIxMjkzYmM4MjBkZTNjZTBhMjZiNGYwNmY5YjE5MWM5OGEzOTc2MS4uMjc2NmY2ZDRiNzdmOWM2
NDZkODhjNWYxOTEwMzM1MWZmZTY1YjZhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDb2RlLmgKQEAgLTI4MSwxMSArMjgxLDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
IG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgY29uc3QgQ29kZSogbV9jb2RlOwogICAgICAgICB1bnNpZ25lZCBtX2luZGV4Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3Bp
bGxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxs
cy5jcHAKaW5kZXggNzdhZmQ4ODUzYjZiNzE3ZTdkZTYzYjlkYjZiNDk3YmRlYzkyNTZlOC4uYjlh
YjU5ZmEwNzUwOGE1ZGI3N2ZiMWM2NGVmZmQ1NDlkMjM3NGNiMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCkBAIC0zNDks
MTYgKzM0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gISFyZWc7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWdDb25zdCYgb3Ro
ZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWcgPT0gb3RoZXIucmVn
Ci0gICAgICAgICAgICAgICAgJiYgY29uc3RhbnQgPT0gb3RoZXIuY29uc3RhbnQ7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBSZWdDb25zdCYgb3RoZXIpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZWcgPCBvdGhlci5yZWcgfHwgKHJlZyA9
PSBvdGhlci5yZWcgJiYgY29uc3RhbnQgPCBvdGhlci5jb25zdGFudCk7Ci0gICAgICAgIH0KKyAg
ICAgICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oUmVnQ29uc3QsIFJlZ0NvbnN0KSA9IGRlZmF1
bHQ7CiAKICAgICAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgICAg
IHsKQEAgLTM5MiwxMiArMzgzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBzbG90
ICYmIHJlZzsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJlZ1Nsb3QmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
c2xvdCA9PSBvdGhlci5zbG90Ci0gICAgICAgICAgICAgICAgJiYgcmVnID09IG90aGVyLnJlZwot
ICAgICAgICAgICAgICAgICYmIG1vZGUgPT0gb3RoZXIubW9kZTsKLSAgICAgICAgfQorICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnU2xvdCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAg
ICAgICBib29sIG9wZXJhdG9yPChjb25zdCBSZWdTbG90JiBvdGhlcikgY29uc3QKICAgICAgICAg
ewpAQCAtNDQyLDE2ICs0MjgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHNsb3Q7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTbG90
Q29uc3QmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc2xvdCA9
PSBvdGhlci5zbG90Ci0gICAgICAgICAgICAgICAgJiYgY29uc3RhbnQgPT0gb3RoZXIuY29uc3Rh
bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBTbG90Q29uc3Qm
IG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc2xvdCA8IG90aGVy
LnNsb3QgfHwgKHNsb3QgPT0gb3RoZXIuc2xvdCAmJiBjb25zdGFudCA8IG90aGVyLmNvbnN0YW50
KTsKLSAgICAgICAgfQorICAgICAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihTbG90Q29uc3Qs
IFNsb3RDb25zdCkgPSBkZWZhdWx0OwogCiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpcktpbmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyS2luZC5o
CmluZGV4IDEyNThkNGVlMTM1OGQ4MjQ3ZjY3YjJkN2UxOGJhNTRmMTczOGZmNGIuLjYwZDRkNTg1
ZGIzNWEwYWEyMDgzNDJiODljMTE1MGIzMmE1MjdmMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyS2luZC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyS2luZC5oCkBAIC01MSwxNiArNTEsNyBAQCBzdHJ1Y3QgS2luZCB7CiAgICAgewog
ICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgS2luZCYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gb3Bjb2RlID09IG90aGVyLm9wY29kZQotICAgICAgICAg
ICAgJiYgZWZmZWN0cyA9PSBvdGhlci5lZmZlY3RzOwotICAgIH0KLSAgICAKLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgS2luZCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLaW5k
JikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRtcC5oCmluZGV4IDFlYzBmMzYyMjQxOTBm
Yzk2MGMzY2RkZmRiNzc2ZTU5NTZiOWVhMjcuLjZmZDU0YTRlYzAyNTNhZTUwZWIxZDNmZjE1ZTVl
MWU4ZDMzZDhiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
VG1wLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXAuaApAQCAtMTg1
LDE1ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhISp0aGlzOwogICAgIH0KIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUbXAmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKLSAgICB9Ci0KLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgVG1wJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRtcCYp
IGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJUbXBTZXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyVG1wU2V0LmgKaW5kZXggMTZkZDVj
OWM3YmU1M2U1NWE4NjhiMDFiYjRhNzZkMjUzODg5MDVlNC4uZGU0NWZjZDI5NzI0ZjBlMGRjMTJj
OWI5NmRiZWQzNzljYjY1ZGE0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJUbXBTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclRt
cFNldC5oCkBAIC05OCwxNiArOTgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBp
dGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2dw
SXRlciA9PSBvdGhlci5tX2dwSXRlcgotICAgICAgICAgICAgICAgICYmIG1fZnBJdGVyID09IG90
aGVyLm1fZnBJdGVyOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IGl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0OwogICAgICAgICAKICAgICBwcml2
YXRlOgogICAgICAgICBCaXRWZWN0b3I6Oml0ZXJhdG9yIG1fZ3BJdGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vzc0Nhc2UuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmgKaW5kZXggZmUxY2ZmYmM2NTk4NWU4YzE0
NzlhMmNiNTM0YTJmMzg4OGY3NTNhNi4uMmVlOWFkNmIxYmMwNDNiNTA0MTNhZGY5ZDg3ZjZmNDFj
M2FmMzJmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FjY2Vz
c0Nhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5o
CkBAIC0zODIsMTYgKzM4Miw3IEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcHBlZCA9PSBiaXR3aXNlX2Nh
c3Q8UG9seW1vcnBoaWNBY2Nlc3NKSVRTdHViUm91dGluZSo+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oMSkpOyB9CiAKLSAgICAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5
JiBhLCBjb25zdCBLZXkmIGIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGEubV93cmFwcGVkID09IGIubV93cmFwcGVkCi0gICAgICAgICAgICAgICAgICAgICYmIGEubV9i
YXNlR1BSID09IGIubV9iYXNlR1BSCi0gICAgICAgICAgICAgICAgICAgICYmIGEubV92YWx1ZUdQ
UiA9PSBiLm1fdmFsdWVHUFIKLSAgICAgICAgICAgICAgICAgICAgJiYgYS5tX2V4dHJhR1BSID09
IGIubV9leHRyYUdQUgotICAgICAgICAgICAgICAgICAgICAmJiBhLm1fc3R1YkluZm9HUFIgPT0g
Yi5tX3N0dWJJbmZvR1BSCi0gICAgICAgICAgICAgICAgICAgICYmIGEubV9hcnJheVByb2ZpbGVH
UFIgPT0gYi5tX2FycmF5UHJvZmlsZUdQUgotICAgICAgICAgICAgICAgICAgICAmJiBhLm1fdXNl
ZFJlZ2lzdGVycyA9PSBiLm1fdXNlZFJlZ2lzdGVyczsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXkmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICAg
ICAgICAgIFBvbHltb3JwaGljQWNjZXNzSklUU3R1YlJvdXRpbmUqIG1fd3JhcHBlZCB7IG51bGxw
dHIgfTsKICAgICAgICAgICAgIEdQUlJlZyBtX2Jhc2VHUFI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbmRleC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW5kZXguaAppbmRleCBhODRiZGExNmVmYjdjYjdjMzI1
YWM2YzIwN2IwOTA3M2MxODIzMDgzLi44ZTI0ZTY3NjJkM2Q0ODJmODkxYzc0MWJhYjQyZjQwMDNh
YjVjZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVJbmRleC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUlu
ZGV4LmgKQEAgLTY5LDE0ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIENvbXBhcmlzb24gb3Bl
cmF0b3JzLgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3Bh
Y2tlZEJpdHMgIT0gaW52YWxpZE9mZnNldCAmJiBtX3BhY2tlZEJpdHMgIT0gZGVsZXRlZFZhbHVl
KCkub2Zmc2V0KCk7IH0KLSAgICBib29sIG9wZXJhdG9yID09KGNvbnN0IEJ5dGVjb2RlSW5kZXgm
IG90aGVyKSBjb25zdCB7IHJldHVybiBhc0JpdHMoKSA9PSBvdGhlci5hc0JpdHMoKTsgfQotICAg
IGJvb2wgb3BlcmF0b3IgIT0oY29uc3QgQnl0ZWNvZGVJbmRleCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0KLSAgICBib29sIG9wZXJhdG9yIDwoY29uc3QgQnl0
ZWNvZGVJbmRleCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGFzQml0cygpIDwgb3RoZXIuYXNCaXRz
KCk7IH0KLSAgICBib29sIG9wZXJhdG9yID4oY29uc3QgQnl0ZWNvZGVJbmRleCYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIGFzQml0cygpID4gb3RoZXIuYXNCaXRzKCk7IH0KLSAgICBib29sIG9wZXJh
dG9yIDw9KGNvbnN0IEJ5dGVjb2RlSW5kZXgmIG90aGVyKSBjb25zdCB7IHJldHVybiBhc0JpdHMo
KSA8PSBvdGhlci5hc0JpdHMoKTsgfQotICAgIGJvb2wgb3BlcmF0b3IgPj0oY29uc3QgQnl0ZWNv
ZGVJbmRleCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGFzQml0cygpID49IG90aGVyLmFzQml0cygp
OyB9Ci0KKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihCeXRlY29kZUluZGV4LCBCeXRlY29k
ZUluZGV4KSA9IGRlZmF1bHQ7CiAKICAgICB2b2lkIGR1bXAoV1RGOjpQcmludFN0cmVhbSYpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVSZXdyaXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3
cml0ZXIuaAppbmRleCA4OTBhYjIzYzAwMGRhZGJhYWQ4ZGI0YzYzZWVlMjVhZTU1YjhkYjA3Li5h
N2U4ZGEyOTIwNGRkOGEyY2I3YjJhYjEzOTcxZDg1YzBiOTlmNmM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKQEAgLTk1LDI2ICs5
NSw5IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgc3RydWN0IEluc2VydGlvblBvaW50IHsKLSAg
ICAgICAgaW50MzJfdCBieXRlY29kZU9mZnNldDsKKyAgICAgICAgdWludDMyX3QgYnl0ZWNvZGVP
ZmZzZXQ7CiAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uOwotCi0gICAgICAgIEluc2VydGlvblBv
aW50KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb2Zmc2V0LCBQb3NpdGlvbiBwb3MpCi0gICAg
ICAgICAgICA6IGJ5dGVjb2RlT2Zmc2V0KG9mZnNldCkKLSAgICAgICAgICAgICwgcG9zaXRpb24o
cG9zKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPChjb25z
dCBJbnNlcnRpb25Qb2ludCYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChieXRlY29kZU9mZnNldCA9PSBvdGhlci5ieXRlY29kZU9mZnNldCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb24gPCBvdGhlci5wb3NpdGlvbjsKLSAgICAgICAgICAgIHJldHVybiBi
eXRlY29kZU9mZnNldCA8IG90aGVyLmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9Ci0KLSAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEluc2VydGlvblBvaW50JiBvdGhlcikgY29uc3QKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID09IG90aGVyLmJ5dGVj
b2RlT2Zmc2V0ICYmIHBvc2l0aW9uID09IG90aGVyLnBvc2l0aW9uOwotICAgICAgICB9CisgICAg
ICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KEluc2VydGlvblBvaW50LCBJbnNlcnRpb25Qb2lu
dCkgPSBkZWZhdWx0OwogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xODksNyArMTcyLDcgQEAgcHVi
bGljOgogICAgICAgICBGcmFnbWVudCBmcmFnbWVudChtX2J5dGVjb2RlR2VuZXJhdG9yLCB3cml0
ZXIsIGluY2x1ZGVCcmFuY2gpOwogICAgICAgICBmdW5jdGlvbihmcmFnbWVudCk7CiAgICAgICAg
IGZyYWdtZW50LmFsaWduKCk7Ci0gICAgICAgIGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQoaW5z
dHJ1Y3Rpb24ub2Zmc2V0KCksIFBvc2l0aW9uOjpCZWZvcmUpLCBpbmNsdWRlQnJhbmNoLCBXVEZN
b3ZlKHdyaXRlcikpOworICAgICAgICBpbnNlcnRJbXBsKHsgaW5zdHJ1Y3Rpb24ub2Zmc2V0KCks
IFBvc2l0aW9uOjpCZWZvcmUgfSwgaW5jbHVkZUJyYW5jaCwgV1RGTW92ZSh3cml0ZXIpKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KQEAgLTIwMCwxMiArMTgzLDEyIEBA
IHB1YmxpYzoKICAgICAgICAgRnJhZ21lbnQgZnJhZ21lbnQobV9ieXRlY29kZUdlbmVyYXRvciwg
d3JpdGVyLCBpbmNsdWRlQnJhbmNoKTsKICAgICAgICAgZnVuY3Rpb24oZnJhZ21lbnQpOwogICAg
ICAgICBmcmFnbWVudC5hbGlnbigpOwotICAgICAgICBpbnNlcnRJbXBsKEluc2VydGlvblBvaW50
KGluc3RydWN0aW9uLm9mZnNldCgpLCBQb3NpdGlvbjo6QWZ0ZXIpLCBpbmNsdWRlQnJhbmNoLCBX
VEZNb3ZlKHdyaXRlcikpOworICAgICAgICBpbnNlcnRJbXBsKHsgaW5zdHJ1Y3Rpb24ub2Zmc2V0
KCksIFBvc2l0aW9uOjpBZnRlciB9LCBpbmNsdWRlQnJhbmNoLCBXVEZNb3ZlKHdyaXRlcikpOwog
ICAgIH0KIAogICAgIHZvaWQgcmVtb3ZlQnl0ZWNvZGUoY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW06
OlJlZiYgaW5zdHJ1Y3Rpb24pCiAgICAgewotICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKElu
c2VydGlvbiB7IEluc2VydGlvblBvaW50KGluc3RydWN0aW9uLm9mZnNldCgpLCBQb3NpdGlvbjo6
T3JpZ2luYWxCeXRlY29kZVBvaW50KSwgSW5zZXJ0aW9uOjpUeXBlOjpSZW1vdmUsIEluY2x1ZGVC
cmFuY2g6Ok5vLCBpbnN0cnVjdGlvbi0+c2l6ZSgpLCB7IH0gfSk7CisgICAgICAgIG1faW5zZXJ0
aW9ucy5hcHBlbmQoSW5zZXJ0aW9uIHsgeyBpbnN0cnVjdGlvbi5vZmZzZXQoKSwgUG9zaXRpb246
Ok9yaWdpbmFsQnl0ZWNvZGVQb2ludCB9LCBJbnNlcnRpb246OlR5cGU6OlJlbW92ZSwgSW5jbHVk
ZUJyYW5jaDo6Tm8sIGluc3RydWN0aW9uLT5zaXplKCksIHsgfSB9KTsKICAgICB9CiAKICAgICB2
b2lkIGV4ZWN1dGUoKTsKQEAgLTIxNCwxMiArMTk3LDEyIEBAIHB1YmxpYzoKIAogICAgIGludDMy
X3QgYWRqdXN0QWJzb2x1dGVPZmZzZXQoSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBhYnNvbHV0
ZU9mZnNldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZGp1c3RKdW1wVGFyZ2V0KEluc2VydGlv
blBvaW50KDAsIFBvc2l0aW9uOjpFbnRyeVBvaW50KSwgSW5zZXJ0aW9uUG9pbnQoYWJzb2x1dGVP
ZmZzZXQsIFBvc2l0aW9uOjpMYWJlbFBvaW50KSk7CisgICAgICAgIHJldHVybiBhZGp1c3RKdW1w
VGFyZ2V0KHsgMCwgUG9zaXRpb246OkVudHJ5UG9pbnQgfSwgeyBhYnNvbHV0ZU9mZnNldCwgUG9z
aXRpb246OkxhYmVsUG9pbnQgfSk7CiAgICAgfQogCi0gICAgaW50MzJfdCBhZGp1c3RKdW1wVGFy
Z2V0KEluc3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3JpZ2luYWxCeXRlY29kZU9mZnNldCwgaW50
MzJfdCBvcmlnaW5hbEp1bXBUYXJnZXQpCisgICAgaW50MzJfdCBhZGp1c3RKdW1wVGFyZ2V0KElu
c3RydWN0aW9uU3RyZWFtOjpPZmZzZXQgb3JpZ2luYWxCeXRlY29kZU9mZnNldCwgdWludDMyX3Qg
b3JpZ2luYWxKdW1wVGFyZ2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkanVzdEp1bXBUYXJn
ZXQoSW5zZXJ0aW9uUG9pbnQob3JpZ2luYWxCeXRlY29kZU9mZnNldCwgUG9zaXRpb246OkxhYmVs
UG9pbnQpLCBJbnNlcnRpb25Qb2ludChvcmlnaW5hbEp1bXBUYXJnZXQsIFBvc2l0aW9uOjpMYWJl
bFBvaW50KSk7CisgICAgICAgIHJldHVybiBhZGp1c3RKdW1wVGFyZ2V0KHsgb3JpZ2luYWxCeXRl
Y29kZU9mZnNldCwgUG9zaXRpb246OkxhYmVsUG9pbnQgfSwgeyBvcmlnaW5hbEp1bXBUYXJnZXQs
IFBvc2l0aW9uOjpMYWJlbFBvaW50IH0pOwogICAgIH0KIAogICAgIHZvaWQgYWRqdXN0SnVtcFRh
cmdldHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
VmFyaWFudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgK
aW5kZXggMzkyODBlOWZhZmNjMTNhYjg4OWZjNTg2Y2UzMDAzYmU2MGRmZDVjYS4uOTAzN2FkZjQw
MGIxYjc5MTMxZDkyNzkzZWNmZDNkNjVjMGYxZGQyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKQEAgLTY3LDE0ICs2NywxNCBAQCBwdWJsaWM6CiAg
ICAgICAgIDogbV9jYWxsZWUoY2FsbGVlKQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBDYWxs
VmFyaWFudChXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAgICAgIDogbV9jYWxs
ZWUoZGVsZXRlZFRva2VuKCkpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbGVlOyB9Ci0gICAgCisKICAgICAv
LyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5nZSBpdCB0byByZWZl
ciB0byBpdHMgZXhlY3V0YWJsZS4KICAgICBBTFdBWVNfSU5MSU5FIENhbGxWYXJpYW50IGRlc3Bl
Y2lmaWVkQ2xvc3VyZSgpIGNvbnN0CiAgICAgewpAQCAtODIsNDEgKzgyLDQxIEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIHJldHVybiBDYWxsVmFyaWFudChqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fY2Fs
bGVlKS0+ZXhlY3V0YWJsZSgpKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KLSAgICAK
KwogICAgIEpTQ2VsbCogcmF3Q2FsbGVlQ2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGVlOyB9
Ci0gICAgCisKICAgICBJbnRlcm5hbEZ1bmN0aW9uKiBpbnRlcm5hbEZ1bmN0aW9uKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEludGVybmFsRnVuY3Rpb24qPiht
X2NhbGxlZS0+dm0oKSwgbV9jYWxsZWUpOwogICAgIH0KLSAgICAKKwogICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpT
RnVuY3Rpb24qPihtX2NhbGxlZS0+dm0oKSwgbV9jYWxsZWUpOwogICAgIH0KLSAgICAKKwogICAg
IGJvb2wgaXNDbG9zdXJlQ2FsbCgpIGNvbnN0IHsgcmV0dXJuICEhanNEeW5hbWljQ2FzdDxFeGVj
dXRhYmxlQmFzZSo+KG1fY2FsbGVlLT52bSgpLCBtX2NhbGxlZSk7IH0KLSAgICAKKwogICAgIEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IHRoaXMtPmZ1bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKICAgICAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8RXhl
Y3V0YWJsZUJhc2UqPihtX2NhbGxlZS0+dm0oKSwgbV9jYWxsZWUpOwogICAgIH0KLSAgICAKKwog
ICAgIEpTQ2VsbCogbm9uRXhlY3V0YWJsZUNhbGxlZSgpIGNvbnN0CiAgICAgewogICAgICAgICBS
RUxFQVNFX0FTU0VSVCghaXNDbG9zdXJlQ2FsbCgpKTsKICAgICAgICAgcmV0dXJuIG1fY2FsbGVl
OwogICAgIH0KLSAgICAKKwogICAgIEludHJpbnNpYyBpbnRyaW5zaWNGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlID0gdGhpcy0+ZXhlY3V0YWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGV4
ZWN1dGFibGUtPmludHJpbnNpY0ZvcihraW5kKTsKICAgICAgICAgcmV0dXJuIE5vSW50cmluc2lj
OwogICAgIH0KLSAgICAKKwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJs
ZSA9IHRoaXMtPmV4ZWN1dGFibGUoKSkKQEAgLTEzNyw1MCArMTM3LDIyIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBuYXRpdmVFeGVjdXRhYmxlLT5zaWduYXR1cmVGb3Ioa2luZCk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgZmluYWxpemUo
Vk0mKTsKLSAgICAKKwogICAgIGJvb2wgbWVyZ2UoY29uc3QgQ2FsbFZhcmlhbnQmKTsKLSAgICAK
KwogICAgIHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7Ci0gICAgCisKICAgICB2b2lkIGR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3Q7Ci0gICAgCisKICAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBkZWxl
dGVkVG9rZW4oKTsKICAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGxW
YXJpYW50JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2NhbGxlZSA9PSBv
dGhlci5tX2NhbGxlZTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENh
bGxWYXJpYW50JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQ2FsbFZhcmlh
bnQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY2FsbGVlIDwgb3RoZXIu
bV9jYWxsZWU7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IENhbGxWYXJp
YW50JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBvdGhlciA8ICp0aGlzOwot
ICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgQ2FsbFZhcmlhbnQmIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPCBvdGhlcik7Ci0gICAgfQot
ICAgIAotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBDYWxsVmFyaWFudCYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gb3RoZXIgPD0gKnRoaXM7Ci0gICAgfQotICAgIAorCisg
ICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oQ2FsbFZhcmlhbnQsIENhbGxWYXJpYW50KSA9IGRl
ZmF1bHQ7CisKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBXVEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2gobV9jYWxsZWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0hhc2guaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmgKaW5kZXggYjgyOGZlODA4YjVkNmI3
NmFkMDBlMzc2MzUwYTQyMzEzMTRkODYyNi4uYzE5YzE5YWU4NWVjNjY1OGYzYjBhYzQ3NzUyMDI5
YWExNDk4NDczZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9ja0hhc2guaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrSGFzaC5oCkBAIC00MiwzNSArNDIsMjUgQEAgY2xhc3MgU291cmNlQ29kZTsKIAogY2xhc3Mg
Q29kZUJsb2NrSGFzaCB7CiBwdWJsaWM6Ci0gICAgQ29kZUJsb2NrSGFzaCgpCi0gICAgICAgIDog
bV9oYXNoKDApCi0gICAgewotICAgIH0KLSAgICAKLSAgICBleHBsaWNpdCBDb2RlQmxvY2tIYXNo
KHVuc2lnbmVkIGhhc2gpCisgICAgZXhwbGljaXQgQ29kZUJsb2NrSGFzaCh1bnNpZ25lZCBoYXNo
ID0gMCkKICAgICAgICAgOiBtX2hhc2goaGFzaCkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAg
Q29kZUJsb2NrSGFzaChjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7
Ci0gICAgCisKICAgICBleHBsaWNpdCBDb2RlQmxvY2tIYXNoKGNvbnN0IGNoYXIqKTsKIAogICAg
IGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1faGFzaDsgfQogICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KLSAgICAKKwogICAgIHVuc2lnbmVkIGhh
c2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KLSAgICAKKwogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwotICAgIAotICAgIC8vIENvbXBhcmlzb24gbWV0aG9kcyB1c2VmdWwg
Zm9yIGJpc2VjdGlvbi4KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZUJsb2NrSGFzaCYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhhc2goKSA9PSBvdGhlci5oYXNoKCk7IH0KLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgQ29kZUJsb2NrSGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGhh
c2goKSAhPSBvdGhlci5oYXNoKCk7IH0KLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBDb2RlQmxv
Y2tIYXNoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gaGFzaCgpIDwgb3RoZXIuaGFzaCgpOyB9Ci0g
ICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgQ29kZUJsb2NrSGFzaCYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIGhhc2goKSA+IG90aGVyLmhhc2goKTsgfQotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBD
b2RlQmxvY2tIYXNoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gaGFzaCgpIDw9IG90aGVyLmhhc2go
KTsgfQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBDb2RlQmxvY2tIYXNoJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gaGFzaCgpID49IG90aGVyLmhhc2goKTsgfQotICAgIAorCisgICAgLy8gQ29t
cGFyaXNvbiBmdW5jdGlvbnMgdXNlZnVsIGZvciBiaXNlY3Rpb24uCisgICAgZnJpZW5kIGF1dG8g
b3BlcmF0b3I8PT4oQ29kZUJsb2NrSGFzaCwgQ29kZUJsb2NrSGFzaCkgPSBkZWZhdWx0OworCiBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1faGFzaDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVPcmlnaW4uaAppbmRleCAzNDk3MTM4MTRhM2VhNjRmNTY0YjUwYzNhMmIx
ZGRhZWZmNzk2MWU4Li45Yjk1M2NhY2Y4OTUxZjBjNzBhMDhhMGRjMzFjYzY4MWJlOGFmMzllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgKQEAgLTE1NSw4
ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgaW50IHN0YWNrT2Zmc2V0KCkgY29uc3Q7CiAgICAgCiAg
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2Rl
T3JpZ2luJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVPcmln
aW4mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDb2RlT3JpZ2luJikgY29uc3Q7CiAgICAgCiAgICAgLy8gVGhpcyBj
aGVja3MgaWYgdGhlIHR3byBjb2RlIG9yaWdpbnMgY29ycmVzcG9uZCB0byB0aGUgc2FtZSBzdGFj
ayB0cmFjZSBzbmlwcGV0cywKICAgICAvLyBidXQgaWdub3JlIHdoZXRoZXIgdGhlIElubGluZUNh
bGxGcmFtZSdzIGFyZSBpZGVudGljYWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCmluZGV4IDI0ZGU1
NmZkN2E5MzVhZmM0YzI5M2M0OWQxZTRmODFlZWNmNTY4ZTkuLmVlZWNmOTRkYzg0MzI3MWFhZjM1
YWYzYTI2NzI3ZmVkMjEwMDc0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCkBAIC0xMTUsMTEg
KzExNSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgbGhz
LCBjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYgcmhzKQotICAgIHsKLSAgICAgICAg
cmV0dXJuICEobGhzID09IHJocyk7Ci0gICAgfQotICAgIAogICAgIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uIGZvck9iamVjdChKU09iamVjdCopIGNvbnN0OwogICAgIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uIGZvckNvbmRpdGlvbktpbmQoUHJvcGVydHlDb25kaXRpb246OktpbmQpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3BlcmFuZHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oCmluZGV4IDA0YzUxZTVl
MTExNzFlZGNiMTg1ZTJmOTc5ZjU5NDMwOTBlMjM5MWIuLjQ1ZDg0NDMyYjlmZDFlZTc2MjI5Njcx
ZTRlZGY4NWRlODdhOThjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGVyYW5kcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGVy
YW5kcy5oCkBAIC00MDEsMTEgKzQwMSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fdmFs
dWVzID09IG90aGVyLm1fdmFsdWVzOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBPcGVyYW5kcyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Ci0gICAgfQotICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAppbmRleCBhMjliNGJmNjlkYTc0NzEz
YjFjNjI4NGI1MDNhNjQxZTk2M2M3Yzc5Li5jYmE4NThmMWYyYjkwNmY1NjZkOGY1NTRlMDM5ZjJh
ZWVkZTBiNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9s
eVByb3RvQWNjZXNzQ2hhaW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UG9seVByb3RvQWNjZXNzQ2hhaW4uaApAQCAtNDgsMTEgKzQ4LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBkdW1wKFN0cnVjdHVyZSogYmFzZVN0cnVjdHVyZSwgUHJpbnRTdHJlYW0mIG91dCkgY29u
c3Q7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9seVByb3RvQWNjZXNzQ2hhaW4mIG90
aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUG9seVByb3RvQWNjZXNzQ2hh
aW4mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9seVByb3RvQWNjZXNzQ2hhaW4m
KSBjb25zdDsKIAogICAgIGJvb2wgbmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludChWTSYpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1v
cnBoaWNBY2Nlc3MuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhp
Y0FjY2Vzcy5oCmluZGV4IDYxN2FmMDBmMjIzODQxM2Q5NzQ1NTljNGVjZDcwZjQ3Nzg1ZDAwNDku
LjRkMGZjYzBkYTc0ODA5MWVkOWZkYjRiMWJlYjIyMzBiMDFjZjBmMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5bW9ycGhpY0FjY2Vzcy5oCkBAIC01OCwx
OSArNTgsMTggQEAgcHVibGljOgogICAgICAgICBHZW5lcmF0ZWRGaW5hbENvZGUsIC8vIEdlbmVy
YXRlZCBzbyBtdWNoIGNvZGUgdGhhdCB3ZSBuZXZlciB3YW50IHRvIGdlbmVyYXRlIGNvZGUgYWdh
aW4uCiAgICAgICAgIFJlc2V0U3R1YkFuZEZpcmVXYXRjaHBvaW50cyAvLyBXZSBmb3VuZCBvdXQg
c29tZSBkYXRhIHRoYXQgbWFrZXMgdXMgd2FudCB0byBzdGFydCBvdmVyIGZyZXNoIHdpdGggdGhp
cyBzdHViLiBDdXJyZW50bHksIHRoaXMgaGFwcGVucyB3aGVuIHdlIGRldGVjdCBwb2x5IHByb3Rv
LgogICAgIH07Ci0gICAgCiAKICAgICBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KCkgPSBkZWZhdWx0
OwogICAgIEFjY2Vzc0dlbmVyYXRpb25SZXN1bHQoQWNjZXNzR2VuZXJhdGlvblJlc3VsdCYmKSA9
IGRlZmF1bHQ7CiAgICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdCYgb3BlcmF0b3I9KEFjY2Vzc0dl
bmVyYXRpb25SZXN1bHQmJikgPSBkZWZhdWx0OwotICAgIAorCiAgICAgQWNjZXNzR2VuZXJhdGlv
blJlc3VsdChLaW5kIGtpbmQpCiAgICAgICAgIDogbV9raW5kKGtpbmQpCiAgICAgewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChraW5kICE9IEdlbmVyYXRlZE5ld0NvZGUpOwogICAgICAgICBSRUxF
QVNFX0FTU0VSVChraW5kICE9IEdlbmVyYXRlZEZpbmFsQ29kZSk7CiAgICAgfQotICAgIAorCiAg
ICAgQWNjZXNzR2VuZXJhdGlvblJlc3VsdChLaW5kIGtpbmQsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cjxKSVRTdHViUm91dGluZVB0clRhZz4gY29kZSkKICAgICAgICAgOiBtX2tpbmQoa2luZCkKICAg
ICAgICAgLCBtX2NvZGUoY29kZSkKQEAgLTc4LDIyICs3NywxNyBAQCBwdWJsaWM6CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGtpbmQgPT0gR2VuZXJhdGVkTmV3Q29kZSB8fCBraW5kID09IEdlbmVy
YXRlZEZpbmFsQ29kZSk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvZGUpOwogICAgIH0KLSAg
ICAKKwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0JiBv
dGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2tpbmQgPT0gb3RoZXIubV9raW5k
ICYmIG1fY29kZSA9PSBvdGhlci5tX2NvZGU7CiAgICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgCisKICAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAqdGhpcyAh
PSBBY2Nlc3NHZW5lcmF0aW9uUmVzdWx0KCk7CiAgICAgfQotICAgIAorCiAgICAgS2luZCBraW5k
KCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CiAgICAgCiAgICAgY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyPEpJVFN0dWJSb3V0aW5lUHRyVGFnPiYgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVj
dHVyZVN0dWJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U3R1YkluZm8uaAppbmRleCA0NDM1ZmMzMjI2MzkxOWMzMGIzZDhjODZmMDIxOWYzMDVmMmExZmQy
Li5mYzAxZDAwOTY4OGYzNjZlMDc5YWU4NTNiZThjYThiYTQ5MmRjYmFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaApAQCAtMzE2
LDE1ICszMTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIGhhc2g7CiAgICAgICAg
IH0KIAotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJ1ZmZlcmVkU3RydWN0
dXJlJiBhLCBjb25zdCBCdWZmZXJlZFN0cnVjdHVyZSYgYikKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGEubV9zdHJ1Y3R1cmUgPT0gYi5tX3N0cnVjdHVyZSAmJiBhLm1fYnlWYWxJZCA9
PSBiLm1fYnlWYWxJZDsKLSAgICAgICAgfQotCi0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
IT0oY29uc3QgQnVmZmVyZWRTdHJ1Y3R1cmUmIGEsIGNvbnN0IEJ1ZmZlcmVkU3RydWN0dXJlJiBi
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIShhID09IGIpOwotICAgICAgICB9Cisg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCdWZmZXJlZFN0cnVjdHVyZSYpIGNvbnN0ID0g
ZGVmYXVsdDsKIAogICAgICAgICBzdHJ1Y3QgSGFzaCB7CiAgICAgICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBCdWZmZXJlZFN0cnVjdHVyZSYga2V5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N1cGVyU2FtcGxlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3VwZXJTYW1wbGVyLmNwcAppbmRleCA1ZjY2M2IyZmY1YTVl
M2NlMDhjZTQxMjk1YjgwYTliNzEwNmM4OTc5Li41NDZjYWQ3NmVjODhkNzEwNTQxZTZhM2U1OTg1
ZmE2NDk1ZmI0ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
U3VwZXJTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Vw
ZXJTYW1wbGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNp
bmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8
d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxS
ZWdpc3Rlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rl
ci5oCmluZGV4IGZiOTFhZjE5MDJiMTYxNzg0Y2FjZmFhYmJmMzQ2NjYyZGRmYTY0NzUuLmY2YTI5
M2RhMWVlOTc4ZTM2YWEwYzZkMGRkYTFiYThjYTJlZDNhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKQEAgLTc4LDEyICs3OCw3IEBA
IHB1YmxpYzoKICAgICBpbnQgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0
ZXI7IH0KICAgICBpbnQgb2Zmc2V0SW5CeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlydHVhbFJl
Z2lzdGVyICogc2l6ZW9mKFJlZ2lzdGVyKTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KFZpcnR1
YWxSZWdpc3RlciBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPT0gb3Ro
ZXIubV92aXJ0dWFsUmVnaXN0ZXI7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oVmlydHVhbFJlZ2lz
dGVyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3RlciAhPSBvdGhlci5tX3Zp
cnR1YWxSZWdpc3RlcjsgfQotICAgIGJvb2wgb3BlcmF0b3I8KFZpcnR1YWxSZWdpc3RlciBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPCBvdGhlci5tX3ZpcnR1YWxSZWdp
c3RlcjsgfQotICAgIGJvb2wgb3BlcmF0b3I+KFZpcnR1YWxSZWdpc3RlciBvdGhlcikgY29uc3Qg
eyByZXR1cm4gbV92aXJ0dWFsUmVnaXN0ZXIgPiBvdGhlci5tX3ZpcnR1YWxSZWdpc3RlcjsgfQot
ICAgIGJvb2wgb3BlcmF0b3I8PShWaXJ0dWFsUmVnaXN0ZXIgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fdmlydHVhbFJlZ2lzdGVyIDw9IG90aGVyLm1fdmlydHVhbFJlZ2lzdGVyOyB9Ci0gICAgYm9v
bCBvcGVyYXRvcj49KFZpcnR1YWxSZWdpc3RlciBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92aXJ0
dWFsUmVnaXN0ZXIgPj0gb3RoZXIubV92aXJ0dWFsUmVnaXN0ZXI7IH0KKyAgICBmcmllbmQgYXV0
byBvcGVyYXRvcjw9PihWaXJ0dWFsUmVnaXN0ZXIsIFZpcnR1YWxSZWdpc3RlcikgPSBkZWZhdWx0
OwogICAgIAogICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYXRvcisoaW50IHZhbHVlKSBjb25zdAog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
clNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5o
CmluZGV4IDJlOTA1MjAxNjIyMGYwOTYxZDk5NjBhMmM4YmY2NjMwMmQwZDdiMDUuLjAyNjc0Yjc1
Mzk3NjIyM2M4ODAzNzQxZDQxMDFlZWE2MzYwNWIxMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclNjb3BlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaApAQCAtNzAsOCArNzAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyBtX25vZGUgPSBtX25vZGUtPm5leHQo
KTsgcmV0dXJuICp0aGlzOyB9CiAgICAgICAgIC8vIHBvc3RmaXggKysgaW50ZW50aW9uYWxseSBv
bWl0dGVkCiAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZTsgfQotICAgICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX25vZGUgIT0g
b3RoZXIubV9ub2RlOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYp
IGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIERlYnVnZ2VyU2NvcGUq
IG1fbm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCmlu
ZGV4IGZmODRmNmI3YzBkOTBmYzRjYjE0Yzc4N2NkMGYxYjQzZTdkYmRjYTkuLmE2ZjFiODIyZDky
ZjViNmI2MGZiYjk5NjAxY2QwMjhlM2UxNjM5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEhlYXAuaApAQCAtMTUzLDE2ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUoKSk7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXlsb2FkJiBvdGhlcikg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1faXNUb3AgPT0gb3RoZXIubV9p
c1RvcAotICAgICAgICAgICAgICAgICYmIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBheWxvYWQmIG90
aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhl
cik7Ci0gICAgICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBheWxvYWQmKSBj
b25zdCA9IGRlZmF1bHQ7CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBQ
YXlsb2FkJiBvdGhlcikgY29uc3QKICAgICAgICAgewpAQCAtMjkxLDE1ICsyODIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBXVEY6OkludEhhc2g8aW50NjRfdD46Omhhc2gobV92YWx1ZSk7
CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBYnN0cmFjdEhlYXAmIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1
ZTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFic3RyYWN0SGVhcCYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBYnN0cmFjdEhlYXAmKSBjb25zdCA9IGRl
ZmF1bHQ7CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQWJzdHJhY3RIZWFwJiBvdGhl
cikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RW
YWx1ZS5oCmluZGV4IGU4NjlhMWIyZWMxYzJlOWFiOTk5MjVlY2IzZTJkOTYxOWViN2Q2NDAuLjYz
Y2IxNTU4NzA2ZjNjNjY0NWI3Y2RlOGUzNzI5YTY4NjEyNmMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCkBAIC0yNzMsMTAgKzI3Myw2IEBAIHN0
cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgICAgICYmIG1fc3RydWN0dXJlID09IG90aGVy
Lm1fc3RydWN0dXJlCiAgICAgICAgICAgICAmJiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7CiAg
ICAgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CiAgICAg
CiAgICAgQUxXQVlTX0lOTElORSBib29sIG1lcmdlKGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVy
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RWYWx1ZUNsb2JiZXJFcG9jaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFZhbHVlQ2xvYmJlckVwb2NoLmgKaW5kZXggNDAyMTA1OWRjNDJmZWJjNzQ5YWNlZmE5YTRk
ZTY0NGY1MWE3OGJiZi4uMGFlYTk3M2NmMWY3OGU4MzMzNWEzN2JhZjA2ZmM2ZWVhYzM2NjA4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlQ2xv
YmJlckVwb2NoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlQ2xvYmJlckVwb2NoLmgKQEAgLTY0LDE1ICs2NCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV92
YWx1ZSB8PSB3YXRjaGVkRmxhZzsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEFic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2gmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKLSAgICB9Ci0gICAgCi0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEFic3RyYWN0VmFsdWVDbG9iYmVyRXBvY2gmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQWJzdHJhY3RWYWx1ZUNsb2JiZXJFcG9jaCYpIGNvbnN0ID0g
ZGVmYXVsdDsKICAgICAKICAgICBTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUgc3RydWN0dXJlQ2xvYmJl
clN0YXRlKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuaAppbmRleCBkZjc1Yzc4OTBkNjRhYmYyZmE3Mzk4OGNiOTNiZTVhMzZhOGZjNTI0Li5hYWY5
MjJiOTgwOGNlYzBlOWQwZjNlMGJjMTg4Njk2ZDc1NjhkZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgKQEAgLTU0MCwxMCArNTQwLDYgQEAgcHVibGljOgogICAg
ICAgICAgICAgJiYgbWF5QmVMYXJnZVR5cGVkQXJyYXkoKSA9PSBvdGhlci5tYXlCZUxhcmdlVHlw
ZWRBcnJheSgpOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQXJyYXlN
b2RlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLSAgICB9CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFycmF5TW9kZSh1bnNpZ25lZCB3b3Jk
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXZhaWxh
YmlsaXR5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5oCmlu
ZGV4IDZhYmY0Y2RlODIyNDE0ODRlZDYzZDU1NTJjNWU3NjRkMWE5ZjFkN2YuLmI5YzRmYWM1Y2Ez
ZGZmMGNlNGE0ODgzNjY4NmM3M2FmMzRhOTU0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXZhaWxhYmlsaXR5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBdmFpbGFiaWxpdHkuaApAQCAtMTE4LDE2ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBub2RlSXNVbmF2YWlsYWJsZSgp
ICYmIGZsdXNoZWRBdCgpLmZvcm1hdCgpID09IENvbmZsaWN0aW5nRmx1c2g7IH0KIAotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBdmFpbGFiaWxpdHkmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fbm9kZSA9PSBvdGhlci5tX25vZGUKLSAgICAgICAgICAgICYmIG1fZmx1
c2hlZEF0ID09IG90aGVyLm1fZmx1c2hlZEF0OwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQXZhaWxhYmlsaXR5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEF2YWlsYWJpbGl0eSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAKICAgICBBdmFpbGFiaWxpdHkg
bWVyZ2UoY29uc3QgQXZhaWxhYmlsaXR5JiBvdGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jsb2NrU2V0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Jsb2NrU2V0LmgKaW5kZXggNjBiNDQ5NmQwODRiOTdkNzg2NTlmYTVh
YTQ0NzdhYjZkZWVmYWU4OS4uNGFmNmI1YWFmNDI0YjYyYjUxMDcyOGRkZjRmMTY4ODM1OTFmYzcz
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCbG9ja1NldC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmxvY2tTZXQuaApAQCAtNzksMTEgKzc5
LDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRl
eDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0
ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0gICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBCbG9ja1NldDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0eS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydHkuaAppbmRleCAxYTUyODA2OGM2
YmQwOGE4MzI3YjkyNTI3OGY1NmI3NzYxZWFiNjk0Li42NGM5YWYxZTk1MjIxODIxZWIwMWI4ODg4
MGQwM2E2NmM3ZDMyZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Rlc2lyZWRHbG9iYWxQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGVzaXJlZEdsb2JhbFByb3BlcnR5LmgKQEAgLTU2LDE1ICs1Niw3IEBAIHB1YmxpYzoKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxP
YmplY3Q7IH0KICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudGlmaWVyTnVtYmVyOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGVzaXJl
ZEdsb2JhbFByb3BlcnR5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ds
b2JhbE9iamVjdCA9PSBvdGhlci5tX2dsb2JhbE9iamVjdCAmJiBtX2lkZW50aWZpZXJOdW1iZXIg
PT0gb3RoZXIubV9pZGVudGlmaWVyTnVtYmVyOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBEZXNpcmVkR2xvYmFsUHJvcGVydHkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRGVzaXJlZEdsb2JhbFByb3BlcnR5JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0VkZ2UuaAppbmRleCA0YTI1NWIwNjA4NjE3MjdmZmMyM2I5MjNhY2UwMjQ5MTEyMDI3
MzI0Li40NjZjYzExYzIxODk2MGRlZTA5OWZlMzdiZTI4MTFkYzYxNzM2ZWU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0VkZ2UuaApAQCAtMTY4LDEwICsxNjgsNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlICYmIG1fZW5jb2RlZFdvcmQgPT0gb3Ro
ZXIubV9lbmNvZGVkV29yZDsKICNlbmRpZgogICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oRWRn
ZSBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
LSAgICB9CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCkBA
IC0yMzEsMTggKzIyNyw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oRWRnZSBlZGdlLCBOb2Rl
KiBub2RlKQogewogICAgIHJldHVybiBlZGdlLm5vZGUoKSA9PSBub2RlOwogfQotaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShOb2RlKiBub2RlLCBFZGdlIGVkZ2UpCi17Ci0gICAgcmV0dXJuIGVkZ2Uu
bm9kZSgpID09IG5vZGU7Ci19Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KEVkZ2UgZWRnZSwgTm9k
ZSogbm9kZSkKLXsKLSAgICByZXR1cm4gZWRnZS5ub2RlKCkgIT0gbm9kZTsKLX0KLWlubGluZSBi
b29sIG9wZXJhdG9yIT0oTm9kZSogbm9kZSwgRWRnZSBlZGdlKQotewotICAgIHJldHVybiBlZGdl
Lm5vZGUoKSAhPSBub2RlOwotfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRXBvY2guaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRXBvY2guaAppbmRleCA2ODgyMzQwMTg3N2M2ZGNkZThiMDRjNGZk
YTcxNjFjN2ViZThhZGNjLi5jMWZkZGZmNjE1YjI3NTM3YzIzZGRjN2MwYzAzZmM5MTg4ODdhZmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Vwb2NoLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFcG9jaC5oCkBAIC0zOSw4NCArMzksNTYgQEAg
cHVibGljOgogICAgICAgICA6IG1fZXBvY2goc19ub25lKQogICAgIHsKICAgICB9Ci0gICAgCisK
ICAgICBzdGF0aWMgRXBvY2ggZnJvbVVuc2lnbmVkKHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAg
ICAgICAgRXBvY2ggcmVzdWx0OwogICAgICAgICByZXN1bHQubV9lcG9jaCA9IHZhbHVlOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKwogICAgIHVuc2lnbmVkIHRvVW5zaWdu
ZWQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZXBvY2g7CiAgICAgfQotICAgIAor
CiAgICAgc3RhdGljIEVwb2NoIGZpcnN0KCkKICAgICB7CiAgICAgICAgIEVwb2NoIHJlc3VsdDsK
ICAgICAgICAgcmVzdWx0Lm1fZXBvY2ggPSBzX2ZpcnN0OwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX2Vwb2NoID09IHNfbm9uZTsKICAgICB9Ci0gICAgCisKICAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhISp0aGlzOwog
ICAgIH0KLSAgICAKKwogICAgIEVwb2NoIG5leHQoKSBjb25zdAogICAgIHsKICAgICAgICAgRXBv
Y2ggcmVzdWx0OwogICAgICAgICByZXN1bHQubV9lcG9jaCA9IG1fZXBvY2ggKyAxOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKwogICAgIHZvaWQgYnVtcCgpCiAgICAgewog
ICAgICAgICAqdGhpcyA9IG5leHQoKTsKICAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEVwb2NoJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vwb2No
ID09IG90aGVyLm1fZXBvY2g7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBFcG9jaCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEVwb2NoJiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vwb2NoIDwgb3RoZXIubV9lcG9jaDsK
LSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgRXBvY2gmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG90aGVyIDwgKnRoaXM7Ci0gICAgfQotICAgIAotICAg
IGJvb2wgb3BlcmF0b3I8PShjb25zdCBFcG9jaCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gISgqdGhpcyA+IG90aGVyKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRv
cj49KGNvbnN0IEVwb2NoJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzIDwgb3RoZXIpOwotICAgIH0KLSAgICAKKworICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+
KEVwb2NoLCBFcG9jaCkgPSBkZWZhdWx0OworCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7Ci0gICAgCisKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBz
X25vbmUgPSAwOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc19maXJzdCA9IDE7Ci0g
ICAgCisKICAgICB1bnNpZ25lZCBtX2Vwb2NoOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaGVkQXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRmx1c2hlZEF0LmgKaW5kZXggMTFhY2U0NTQ5ZTQ5NGVmYTZjMDdhODZkMWEyOWI3YjZk
MTYwNzZmYy4uZTcyNzhiMTZkNDIxOTkxMzdjMDdmNWNkMjI4YjE3NjI3NjE2Mjg5MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGbHVzaGVkQXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNoZWRBdC5oCkBAIC0zOCwxMyArMzgsMTMgQEAg
cHVibGljOgogICAgICAgICA6IG1fZm9ybWF0KERlYWRGbHVzaCkKICAgICB7CiAgICAgfQotICAg
IAorCiAgICAgZXhwbGljaXQgRmx1c2hlZEF0KEZsdXNoRm9ybWF0IGZvcm1hdCkKICAgICAgICAg
OiBtX2Zvcm1hdChmb3JtYXQpCiAgICAgewogICAgICAgICBBU1NFUlQoZm9ybWF0ID09IERlYWRG
bHVzaCB8fCBmb3JtYXQgPT0gQ29uZmxpY3RpbmdGbHVzaCk7CiAgICAgfQotICAgIAorCiAgICAg
Rmx1c2hlZEF0KEZsdXNoRm9ybWF0IGZvcm1hdCwgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdp
c3RlcikKICAgICAgICAgOiBtX2Zvcm1hdChmb3JtYXQpCiAgICAgICAgICwgbV92aXJ0dWFsUmVn
aXN0ZXIodmlydHVhbFJlZ2lzdGVyKQpAQCAtNTIsMjAgKzUyLDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKGZvcm1hdCA9PSBEZWFkRmx1c2gpCiAgICAgICAgICAgICBBU1NFUlQoIXZpcnR1YWxS
ZWdpc3Rlci5pc1ZhbGlkKCkpOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gbV9mb3JtYXQgPT0gRGVhZEZsdXNoOyB9Ci0gICAgCisKICAgICBGbHVz
aEZvcm1hdCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogICAgIFZpcnR1YWxS
ZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKSBjb25zdCB7IHJldHVybiBtX3ZpcnR1YWxSZWdpc3Rl
cjsgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbHVzaGVkQXQmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZm9ybWF0ID09IG90aGVyLm1fZm9ybWF0Ci0g
ICAgICAgICAgICAmJiBtX3ZpcnR1YWxSZWdpc3RlciA9PSBvdGhlci5tX3ZpcnR1YWxSZWdpc3Rl
cjsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZsdXNoZWRBdCYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Ci0gICAgCisKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRmx1c2hlZEF0JikgY29uc3QgPSBkZWZhdWx0OworCiAgICAgRmx1
c2hlZEF0IG1lcmdlKGNvbnN0IEZsdXNoZWRBdCYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAoISp0aGlzKQpAQCAtNzYsMTAgKzcwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICAgICAgcmV0dXJuIEZsdXNoZWRBdChDb25mbGljdGluZ0ZsdXNoKTsK
ICAgICB9Ci0gICAgCisKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2
b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwotICAg
IAorCiBwcml2YXRlOgogICAgIEZsdXNoRm9ybWF0IG1fZm9ybWF0OwogICAgIFZpcnR1YWxSZWdp
c3RlciBtX3ZpcnR1YWxSZWdpc3RlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApp
bmRleCAxYmVjOGRlZWQ5ZGJkYmE1MDdkOWEzZmIxYjAzOWUyNmVlMWFkZDc3Li40MGI5N2FkNmJh
MDk2ZmU5NmZmN2VhZWEyOTE1ODc0YzczMTViNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCkBAIC03MjEsMTEgKzcyMSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBj
b25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICBwcml2YXRlOgogICAg
ICAgICAgICAgQmxvY2tJbmRleCBmaW5kTmV4dChCbG9ja0luZGV4IGluZGV4KQogICAgICAgICAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyUmFu
Z2VPcHRpbWl6YXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0lu
dGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAppbmRleCBkODZkZTBlODA1MTMxNWU5NTdm
ZmE0M2FmM2Q0ZDFhM2RhZDczMTE0Li4wOWNlMjk2MDA0YzFiNzA4ZGMzYTc3OTk2NzFkOTZiNjA0
NGRjY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJS
YW5nZU9wdGltaXphdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ludGVnZXJSYW5nZU9wdGltaXphdGlvblBoYXNlLmNwcApAQCAtMjQyLDI4ICsyNDIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlbGF0aW9uc2hpcCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gc2FtZU5vZGVzQXMob3RoZXIpCi0gICAgICAgICAgICAmJiBtX2tpbmQgPT0gb3Ro
ZXIubV9raW5kCi0gICAgICAgICAgICAmJiBtX29mZnNldCA9PSBvdGhlci5tX29mZnNldDsKLSAg
ICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlbGF0aW9uc2hpcCYgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQot
ICAgIAotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFJlbGF0aW9uc2hpcCYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICBpZiAobV9sZWZ0ICE9IG90aGVyLm1fbGVmdCkKLSAgICAgICAgICAg
IHJldHVybiBtX2xlZnQgPCBvdGhlci5tX2xlZnQ7Ci0gICAgICAgIGlmIChtX3JpZ2h0ICE9IG90
aGVyLm1fcmlnaHQpCi0gICAgICAgICAgICByZXR1cm4gbV9yaWdodCA8IG90aGVyLm1fcmlnaHQ7
Ci0gICAgICAgIGlmIChtX2tpbmQgIT0gb3RoZXIubV9raW5kKQotICAgICAgICAgICAgcmV0dXJu
IG1fa2luZCA8IG90aGVyLm1fa2luZDsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0IDwgb3RoZXIu
bV9vZmZzZXQ7Ci0gICAgfQorICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KFJlbGF0aW9uc2hp
cCwgUmVsYXRpb25zaGlwKSA9IGRlZmF1bHQ7CiAgICAgCiAgICAgLy8gSWYgcG9zc2libGUsIHJl
dHVybnMgYSBmb3JtIG9mIHRoaXMgcmVsYXRpb25zaGlwIHdoZXJlIHRoZSBnaXZlbiBub2RlIGlz
IHRoZSBsZWZ0CiAgICAgLy8gc2lkZS4gUmV0dXJucyBhIG51bGwgcmVsYXRpb25zaGlwIGlmIHRo
aXMgcmVsYXRpb25zaGlwIGNhbm5vdCBzYXkgYW55dGhpbmcgYWJvdXQgdGhpcwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5Tm9kZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdMYXp5Tm9kZS5oCmluZGV4IGIzZmZmOTY1OGE1ZGVmMjBiOTAwMGEx
NjcyNWYxMTJkMzk1NGEwNzcuLmM1M2NkNDYzN2VjMTEzNzlhMjEwODM4Y2I1YTM3NWFlODcyN2Y0
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eU5vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlOb2RlLmgKQEAgLTEyMiwxMSAr
MTIyLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZTsK
ICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF6eU5vZGUmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAg
IE5vZGUqIGVuc3VyZUlzTm9kZShJbnNlcnRpb25TZXQmIGluc2VydGlvblNldCwgQmFzaWNCbG9j
ayogYmxvY2ssIHVuc2lnbmVkIG5vZGVJbmRleCkKICAgICB7CiAgICAgICAgIGlmICghbV9ub2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNaW5pZmllZElELmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlmaWVkSUQuaAppbmRleCAxNjcyODYx
MDI3MDBiYzdiNjc0NmM2NDcxOGRiNWUzOTcyNDczMjU4Li44MTU4MmM1ZjcxMmExOTdkY2VhYTBi
ZGMxZTMwZDY2MWYzZTM0OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01pbmlmaWVkSUQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01pbmlm
aWVkSUQuaApAQCAtNDUsMTIgKzQ1LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleC5nZXQoKSA9PSBpbnZhbGlkSW5kZXgoKTsgfQog
ICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNaW5pZmllZElEJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gbV9pbmRleC5nZXQoKSA9PSBvdGhlci5tX2luZGV4LmdldCgpOyB9Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IE1pbmlmaWVkSUQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4LmdldCgpICE9IG90aGVyLm1faW5kZXguZ2V0KCk7IH0KLSAgICBib29sIG9wZXJhdG9yPChj
b25zdCBNaW5pZmllZElEJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmRleC5nZXQoKSA8IG90
aGVyLm1faW5kZXguZ2V0KCk7IH0KLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBNaW5pZmllZElE
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmRleC5nZXQoKSA+IG90aGVyLm1faW5kZXguZ2V0
KCk7IH0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgTWluaWZpZWRJRCYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXguZ2V0KCkgPD0gb3RoZXIubV9pbmRleC5nZXQoKTsgfQotICAgIGJv
b2wgb3BlcmF0b3I+PShjb25zdCBNaW5pZmllZElEJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9p
bmRleC5nZXQoKSA+PSBvdGhlci5tX2luZGV4LmdldCgpOyB9CisgICAgZnJpZW5kIGF1dG8gb3Bl
cmF0b3I8PT4oTWluaWZpZWRJRCwgTWluaWZpZWRJRCkgPSBkZWZhdWx0OwogICAgIAogICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBXVEY6OkludEhhc2g8dW5zaWduZWQ+OjpoYXNo
KG1faW5kZXguZ2V0KCkpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmlu
ZGV4IDg2NmY2M2RiM2RmMDgwZmZhYTcwMjQyMDRiMmI1MWYyNWIwZTcxNjguLjgwYWVhZGMyYzkx
YjMzMDg2M2VjMWQ2MTBlN2Q0MTFhOWNmZjI0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCkBAIC0xNzIxLDEwICsxNzIxLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJl
dHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNv
bnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOwotICAgICAgICAgICAgfQogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgTm9kZSog
bV90ZXJtaW5hbDsKICAgICAgICAgICAgIHVuc2lnbmVkIG1faW5kZXg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVGbG93UHJvamVjdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxvd1Byb2plY3Rpb24uaAppbmRleCAzNDk3MWVh
YmUzZjk2NWY0N2MyNmU1NmE5YjVhMzFiMDc5NGE5YmRlLi44MTk3YzNjOTMxMTc5ZTIxYjI3Y2Iw
MDkxNTY0MjI0NDFkN2IxM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVGbG93UHJvamVjdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZUZsb3dQcm9qZWN0aW9uLmgKQEAgLTcyLDM4ICs3MiwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBtX3dvcmQ7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShOb2Rl
Rmxvd1Byb2plY3Rpb24gb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV93b3Jk
ID09IG90aGVyLm1fd29yZDsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KE5vZGVG
bG93UHJvamVjdGlvbiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcjwoTm9kZUZsb3dQcm9q
ZWN0aW9uIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKGtpbmQoKSAhPSBvdGhlci5r
aW5kKCkpCi0gICAgICAgICAgICByZXR1cm4ga2luZCgpIDwgb3RoZXIua2luZCgpOwotICAgICAg
ICByZXR1cm4gbm9kZSgpIDwgb3RoZXIubm9kZSgpOwotICAgIH0KLSAgICAKLSAgICBib29sIG9w
ZXJhdG9yPihOb2RlRmxvd1Byb2plY3Rpb24gb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gb3RoZXIgPCAqdGhpczsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcjw9KE5v
ZGVGbG93UHJvamVjdGlvbiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzID4gb3RoZXIpOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPj0oTm9kZUZsb3dQ
cm9qZWN0aW9uIG90aGVyKSBjb25zdAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb2RlRmxv
d1Byb2plY3Rpb24mKSBjb25zdCA9IGRlZmF1bHQ7CisKKyAgICBmcmllbmQgYXV0byBvcGVyYXRv
cjw9PihOb2RlRmxvd1Byb2plY3Rpb24gYSwgTm9kZUZsb3dQcm9qZWN0aW9uIGIpCiAgICAgewot
ICAgICAgICByZXR1cm4gISgqdGhpcyA8IG90aGVyKTsKKyAgICAgICAgLy8gTm90ZSB0aGF0IHRo
aXMgaW50ZW50aW9uYWxseSBzb3J0cyBieSB0aGUgYWRkcmVzcyBvZiB0aGUgbm9kZSBwb2ludGVy
LgorICAgICAgICBpZiAoYS5raW5kKCkgIT0gYi5raW5kKCkpCisgICAgICAgICAgICByZXR1cm4g
YS5raW5kKCkgPD0+IGIua2luZCgpOworICAgICAgICByZXR1cm4gYS5ub2RlKCkgPD0+IGIubm9k
ZSgpOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICp0aGlzID09IE5vZGVGbG93UHJvamVjdGlvbihX
VEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVPcmlnaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZU9yaWdpbi5oCmluZGV4IDc2Yjc0N2UzY2Q3ZDM4YmIyZmE2MWYzOTBhZTZjZjdiMjY1ZGEy
MjMuLjEyMWUzZWY2YzQ4ODdkOWRmZmYyNjYxNmVlMzk2YTg1NzYxNWI3MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZU9yaWdpbi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZU9yaWdpbi5oCkBAIC0xMTMsMTEgKzExMyw2IEBAIHN0
cnVjdCBOb2RlT3JpZ2luIHsKICAgICAgICAgICAgICYmIGV4aXRPSyA9PSBvdGhlci5leGl0T0s7
CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE5vZGVPcmlnaW4mIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQog
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCiAgICAgLy8gVXNlZCBmb3IgZGV0
ZXJtaW5pbmcgd2hhdCBieXRlY29kZSB0aGlzIGNhbWUgZnJvbS4gVGhpcyBpcyBpbXBvcnRhbnQg
Zm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCAxZjQxODMxOGE0YzBkZWM2ZDJlOTlk
NDA5ZjcxZGFmYTQ2OTdiMmQxLi4yMjlmYjFlM2E0NTc4Yjg5NTJkNWI1ZGI5NzBlMWI3NWI5MDIw
ODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKQEAgLTI2OCwxOSArMjY4LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9raW5kID09IEtpbmQ6OlJlZ0V4cE9iamVjdDsKICAgICB9
CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWxsb2NhdGlvbiYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyID09IG90aGVyLm1faWRlbnRpZmllcgot
ICAgICAgICAgICAgJiYgbV9raW5kID09IG90aGVyLm1fa2luZAotICAgICAgICAgICAgJiYgbV9m
aWVsZHMgPT0gb3RoZXIubV9maWVsZHMKLSAgICAgICAgICAgICYmIG1fc3RydWN0dXJlcyA9PSBv
dGhlci5tX3N0cnVjdHVyZXMKLSAgICAgICAgICAgICYmIG1fc3RydWN0dXJlc0Zvck1hdGVyaWFs
aXphdGlvbiA9PSBvdGhlci5tX3N0cnVjdHVyZXNGb3JNYXRlcmlhbGl6YXRpb247Ci0gICAgfQot
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFsbG9jYXRpb24mIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQWxsb2NhdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgIHsKQEAgLTY0MywxMSArNjMxLDYgQEAg
cHVibGljOgogICAgICAgICAgICAgJiYgbV9wb2ludGVycyA9PSBvdGhlci5tX3BvaW50ZXJzOwog
ICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMb2NhbEhlYXAmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAg
IGNvbnN0IEhhc2hNYXA8Tm9kZSosIEFsbG9jYXRpb24+JiBhbGxvY2F0aW9ucygpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV9hbGxvY2F0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaAppbmRleCA0ZjEyNTIzMzg0
MjE1MTQ5NzYxMmVhMThmN2JmNTVlNDM4YjE1YjAyLi42NTAwMTEyNzNjYzU4MjA3ZWQ0NjI2ZjA1
MGM0NGZiMTU2ZjU4ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1Byb21vdGVkSGVhcExvY2F0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5oCkBAIC04NywyOCArODcsMTkgQEAgcHVibGljOgogICAg
IGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gbV9raW5kID09IEludmFsaWRQcm9tb3Rl
ZExvY2F0aW9uS2luZDsgfQogCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuICEhKnRoaXM7IH0KLSAgICAKKwogICAgIFByb21vdGVkTG9jYXRpb25LaW5kIGtpbmQo
KSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICB1bnNpZ25lZCBpbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmZvOyB9Ci0gICAgCisKICAgICB1bnNpZ25lZCBpbW0xKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fa2luZCk7IH0KICAgICB1bnNpZ25lZCBpbW0yKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1faW5mbyk7IH0KLSAgICAKKwog
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fa2luZCAr
IG1faW5mbzsKICAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb21vdGVk
TG9jYXRpb25EZXNjcmlwdG9yJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X2tpbmQgPT0gb3RoZXIubV9raW5kCi0gICAgICAgICAgICAmJiBtX2luZm8gPT0gb3RoZXIubV9p
bmZvOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvbW90ZWRMb2Nh
dGlvbkRlc2NyaXB0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOwotICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm9tb3Rl
ZExvY2F0aW9uRGVzY3JpcHRvciYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGJvb2wgaXNIYXNo
VGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJvcGVydHlUeXBlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1Byb3BlcnR5VHlwZUtleS5oCmluZGV4IDc4NzkzYjhlOTI1MzA2Nzk5YjAxY2Qw
Yjg3ZDkxNWIxODU3YWUzNTEuLjJkYzg3OTlmOTg2ODI5Y2E2ZTBhYzQ2MjVjZWFhODY3NzIxNTMx
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGVydHlUeXBl
S2V5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wZXJ0eVR5cGVLZXku
aApAQCAtNTksMTYgKzU5LDcgQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KCkgY29uc3QgeyByZXR1cm4gbV91aWQ7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQ
cm9wZXJ0eVR5cGVLZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc3Ry
dWN0dXJlID09IG90aGVyLm1fc3RydWN0dXJlCi0gICAgICAgICAgICAmJiBtX3VpZCA9PSBvdGhl
ci5tX3VpZDsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvcGVydHlUeXBl
S2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3BlcnR5VHlwZUtleSYpIGNv
bnN0ID0gZGVmYXVsdDsKIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgKaW5k
ZXggNWNiMjE3YjNjM2NjYTRkZjM2Mjk4YTBiM2FmNmU4YWU4Y2NmOTA0ZS4uMWIzMzkzMTA0Zjhl
NDRmOGZkMDE4MmRhZTZhMTM1ZjA1MDY1Yzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgKQEAgLTQ1LDExICs0NSw2IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGdldCgpID09IG90aGVyLmdldCgpOwogICAgIH0KIAotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlJiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhIWdl
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFw
UmFuZ2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUSGVhcFJhbmdlLmgK
aW5kZXggYWFiMDJiZjAxNjUzOWRlOGUyMjVlNzg0MGRmOWQ3NTFhYzE2M2UwMC4uOTBlOGRhOGZk
MWNhOTA5MGI4ZDU2MDk0Nzk0YjA1Mzg1MGMzMjgxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRIZWFwUmFuZ2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZG9taml0L0RPTUpJVEhlYXBSYW5nZS5oCkBAIC03NywxMSArNzcsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX2JlZ2luID09IG90aGVyLm1fYmVnaW4gJiYgbV9lbmQgPT0gb3Ro
ZXIubV9lbmQ7CiAgICAgfQogCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBI
ZWFwUmFuZ2UmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFvcGVyYXRvcj09
KG90aGVyKTsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx1aW50MTZfdCBiZWdpbiwgdWludDE2X3Qg
ZW5kPgogICAgIHN0YXRpYyBjb25zdGV4cHIgSGVhcFJhbmdlIGZyb21Db25zdGFudCgpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3IuaAppbmRleCA3MjM5ZDIyOWZjZTky
YmJhMDQ1NDAwM2U0OWQ1MjhmMDdlMzI3Y2Y3Li4xNzgxZmMyZGE3ODgxYzg3MWE2MjM2ZmM4MWU3
YzA4YjAxZjY5ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxv
Y2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0b3IuaApAQCAt
NTIsOCArNTIsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgTG9jYWxBbGxvY2F0b3IqIGxvY2FsQWxs
b2NhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbEFsbG9jYXRvcjsgfQogICAgIAotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBBbGxvY2F0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2xv
Y2FsQWxsb2NhdG9yID09IG90aGVyLmxvY2FsQWxsb2NhdG9yKCk7IH0KLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgQWxsb2NhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWxsb2NhdG9yJikgY29uc3QgPSBk
ZWZhdWx0OwogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhp
cyAhPSBBbGxvY2F0b3IoKTsgfQogICAgIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaAppbmRleCAwYjQ4NzI5ZmIzNzIyOWU0YmVjZjVh
MTcyMTI2MDVmNTE4ZmI3ZmJjLi5iOWI0ZGUyYjQ3MjUzZjgxNThkY2ViNGIyOTBkNjQ0MzhiN2Zi
ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFy
cmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5o
CkBAIC0xMzIsMTEgKzEzMiw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY3VycmVudFNl
Z21lbnQgPT0gb3RoZXIubV9jdXJyZW50U2VnbWVudCAmJiBtX2N1cnJlbnRPZmZzZXQgPT0gb3Ro
ZXIubV9jdXJyZW50T2Zmc2V0OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBH
Q1NlZ21lbnRlZEFycmF5SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAgIEdDU2VnbWVudGVkQXJyYXlJdGVy
YXRvciYgb3BlcmF0b3IrKygpCiAgICAgewogICAgICAgICBBU1NFUlQobV9jdXJyZW50U2VnbWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCmluZGV4IGNlNjVkZDYyZWFiODhiNTYw
MmVhYzQ1MDZlNTlkNDc4YjIyZWEyNTMuLjNkYWRkNDNhMDVhOGRmYjk4MGQ4MjYyN2NhNGRlMTk5
NTk1YTQ5OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5oCkBAIC0xNTAsMzQgKzE1
MCw0IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEhhbmRsZTxUPiYgYSwgVSoKICAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAK
IH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJh
dG9yPT0oVCogYSwgY29uc3QgSGFuZGxlPFU+JiBiKSAKLXsKLSAgICByZXR1cm4gYSA9PSBiLmdl
dCgpOyAKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBjb25zdCBIYW5kbGU8VT4mIGIpCi17IAot
ICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7IAotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYW5kbGU8VD4mIGEs
IFUqIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYjsgCi19Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IEhh
bmRsZTxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsgCi19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhh
bmRsZTxUPiYgYSwgSlNWYWx1ZSBiKQotewotICAgIHJldHVybiBhLmdldCgpICE9IGI7IAotfQot
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShKU1ZhbHVlIGEsIGNvbnN0IEhhbmRsZTxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEgIT0gYi5n
ZXQoKTsgCi19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcEZpbmFsaXplckNhbGxiYWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwRmluYWxpemVyQ2FsbGJhY2suaAppbmRleCBiZDZhMzg2Njk0MTFkZDQw
NjUzMDkzYzM5ZmMyZDE5YzhhMTBjZmU3Li5iNDQ0NDZhYzc3MzEzYTM3ODBmZWY4NmJjN2I5OTYx
MGQ3MmU2OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwRmlu
YWxpemVyQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwRmlu
YWxpemVyQ2FsbGJhY2suaApAQCAtNDAsMTYgKzQwLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlYXBGaW5hbGl6ZXJDYWxsYmFjayYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9maW5hbGl6ZXIgPT0gb3RoZXIu
bV9maW5hbGl6ZXIKLSAgICAgICAgICAgICYmIG1fdXNlckRhdGEgPT0gb3RoZXIubV91c2VyRGF0
YTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhlYXBGaW5hbGl6ZXJD
YWxsYmFjayYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIZWFwRmluYWxpemVyQ2Fs
bGJhY2smKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9v
bCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
VmlzaXRSYWNlS2V5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9WaXNpdFJhY2VLZXku
aAppbmRleCAxZjU5ODdjZmUyNWY3MWMyMzQ4MzY2MjhmNjY4OWIwNzZmNjcwYzI5Li43ZGVjMThl
YTY1NDA5NzdkYTNkZTExMzA2ZWZiNzI5YjAxYzc3NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9WaXNpdFJhY2VLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9WaXNpdFJhY2VLZXkuaApAQCAtMzUsNDQgKzM1LDM1IEBAIGNsYXNzIEpTQ2VsbDsK
IGNsYXNzIFZpc2l0UmFjZUtleSB7CiBwdWJsaWM6CiAgICAgVmlzaXRSYWNlS2V5KCkgeyB9Ci0g
ICAgCisKICAgICBWaXNpdFJhY2VLZXkoSlNDZWxsKiBjZWxsLCBjb25zdCBjaGFyKiByYWNlTmFt
ZSkKICAgICAgICAgOiBtX2NlbGwoY2VsbCkKICAgICAgICAgLCBtX3JhY2VOYW1lKHJhY2VOYW1l
KQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBWaXNpdFJhY2VLZXkoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQogICAgICAgICA6IG1fcmFjZU5hbWUobV9kZWxldGVkVmFsdWVSYWNl
TmFtZSkKICAgICB7CiAgICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWaXNp
dFJhY2VLZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY2VsbCA9PSBv
dGhlci5tX2NlbGwKLSAgICAgICAgICAgICYmIG1fcmFjZU5hbWUgPT0gb3RoZXIubV9yYWNlTmFt
ZTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZpc2l0UmFjZUtleSYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgfQotICAgIAorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZpc2l0UmFjZUtleSYpIGNv
bnN0ID0gZGVmYXVsdDsKKwogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuICp0aGlzICE9IFZpc2l0UmFjZUtleSgpOwogICAgIH0KLSAgICAK
KwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKLSAgICAKKwogICAgIEpT
Q2VsbCogY2VsbCgpIGNvbnN0IHsgcmV0dXJuIG1fY2VsbDsgfQogICAgIGNvbnN0IGNoYXIqIHJh
Y2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9yYWNlTmFtZTsgfQotICAgIAorCiAgICAgYm9vbCBp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gKnRo
aXMgPT0gVmlzaXRSYWNlS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsKICAgICB9Ci0g
ICAgCisKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBX
VEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2gobV9jZWxsKSBeIFdURjo6UHRySGFzaDxjb25zdCBj
aGFyKj46Omhhc2gobV9yYWNlTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1NoYWRvd0NoaWNrZW4uaAppbmRleCBhMTA3NDYzOWYzNzA5YTg0MDRkNDhmNDM5
OTczZjIwM2I3YTBhZTY2Li40ZTA1NDUxMGI5MTVlZTA5YjY1MDk3MTM0Yzg1NDljYjA3ZDg5NjY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hp
Y2tlbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlj
a2VuLmgKQEAgLTE1MSwyMSArMTUxLDcgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFtZSYgb3RoZXIpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjYWxsZWUgPT0gb3RoZXIuY2FsbGVl
Ci0gICAgICAgICAgICAgICAgJiYgZnJhbWUgPT0gb3RoZXIuZnJhbWUKLSAgICAgICAgICAgICAg
ICAmJiB0aGlzVmFsdWUgPT0gb3RoZXIudGhpc1ZhbHVlCi0gICAgICAgICAgICAgICAgJiYgc2Nv
cGUgPT0gb3RoZXIuc2NvcGUKLSAgICAgICAgICAgICAgICAmJiBjb2RlQmxvY2sgPT0gb3RoZXIu
Y29kZUJsb2NrCi0gICAgICAgICAgICAgICAgJiYgY2FsbFNpdGVJbmRleC5iaXRzKCkgPT0gb3Ro
ZXIuY2FsbFNpdGVJbmRleC5iaXRzKCkKLSAgICAgICAgICAgICAgICAmJiBpc1RhaWxEZWxldGVk
ID09IG90aGVyLmlzVGFpbERlbGV0ZWQ7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBGcmFtZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQorICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRnJhbWUmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgICAgIAogICAg
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR1BSSW5mby5oCmluZGV4IDUyYTEzYWFhZmI3N2I2ZTQ0ZmE3ZWIxOTJiMDY4NDNj
MmNjYjkyMjYuLjA5Y2YwNTYxZjAzYWE3MWVmZTNiMTU0MDBhODgwZjA0N2IxMDY2ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCkBAIC02OSw4ICs2OSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuIG1fZ3ByID09IEludmFsaWRHUFJSZWc7
IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9ncHIgIT0g
SW52YWxpZEdQUlJlZzsgfQogCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShKU1ZhbHVl
UmVncyBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9ncHIgPT0gb3RoZXIubV9ncHI7IH0KLSAgICBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KEpTVmFsdWVSZWdzIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU1ZhbHVl
UmVncyYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAKICAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyBy
ZXR1cm4gbV9ncHI7IH0KICAgICBjb25zdGV4cHIgR1BSUmVnIHRhZ0dQUigpIGNvbnN0IHsgcmV0
dXJuIEludmFsaWRHUFJSZWc7IH0KQEAgLTE5NSwxMiArMTk0LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgfHwgc3RhdGljX2Nhc3Q8R1BSUmVnPihtX3BheWxvYWRHUFIpICE9IEludmFsaWRHUFJS
ZWc7CiAgICAgfQogCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShKU1ZhbHVlUmVncyBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3RhZ0dQUiA9PSBvdGhlci5tX3Rh
Z0dQUgotICAgICAgICAgICAgJiYgbV9wYXlsb2FkR1BSID09IG90aGVyLm1fcGF5bG9hZEdQUjsK
LSAgICB9Ci0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShKU1ZhbHVlUmVncyBvdGhlcikg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0o
SlNWYWx1ZVJlZ3MpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAKICAgICBjb25zdGV4cHIgR1BSUmVn
IHRhZ0dQUigpIGNvbnN0IHsgcmV0dXJuIG1fdGFnR1BSOyB9CiAgICAgY29uc3RleHByIEdQUlJl
ZyBwYXlsb2FkR1BSKCkgY29uc3QgeyByZXR1cm4gbV9wYXlsb2FkR1BSOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0lDU3RhdHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSUNTdGF0cy5oCmluZGV4IDkxYjNiMzE1NTEwZGE2ODI0YjNjOTYzNDEwZTMzNmQ5
NTg5YWJjN2MuLmE4NDRmZWMwZDM1NjE5ZmNjMTNhM2RmZjNiMDMzNDRjYTg3OTVmOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSUNTdGF0cy5oCkBAIC0xMjgsMTEgKzEyOCw2IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICYmIG1fcHJvcGVydHlOYW1lID09IG90aGVyLm1fcHJvcGVydHlOYW1lOwog
ICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSUNFdmVudCYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotICAg
IAogICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IElDRXZlbnQmIG90aGVyKSBjb25zdDsKICAgICBi
b29sIG9wZXJhdG9yPihjb25zdCBJQ0V2ZW50JiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3RoZXIg
PCAqdGhpczsgfQogICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBJQ0V2ZW50JiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA+IG90aGVyKTsgfQpAQCAtMTY0LDcgKzE1OSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGxvZygpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKLSAgICAKICAgICBLaW5k
IG1fa2luZCB7IEludmFsaWRLaW5kIH07CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5m
byB7IG51bGxwdHIgfTsKICAgICBJZGVudGlmaWVyIG1fcHJvcGVydHlOYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBbGxvY2F0b3IuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQWxsb2NhdG9yLmgKaW5kZXggMDUxYzc2ZWFkNzA3ODFlZDc3NGIy
N2NiNjg5MGFkYTRmNWFiYzQ0Ny4uOGFjY2ViNTEzNWIxYjhjYjc4YzFkOTk1YmNjZjM4YmRjN2Vj
NTBiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBbGxvY2F0b3Iu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFsbG9jYXRvci5oCkBAIC01Mywx
NyArNTMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKSVRBbGxvY2F0b3ImIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYm
IG1fYWxsb2NhdG9yID09IG90aGVyLm1fYWxsb2NhdG9yOwotICAgIH0KLSAgICAKLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgSklUQWxsb2NhdG9yJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEpJVEFsbG9jYXRvciYpIGNvbnN0ID0gZGVmYXVsdDsKKwogICAgIGV4cGxp
Y2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICp0aGlzICE9
IEpJVEFsbG9jYXRvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmgKaW5kZXggMGIyMjlhYTBmYTM0
MDViOWNmM2UyNWQ3NDcyNDZlNWQ4ZDBhNTQ4Ni4uYTZmMWVmYTExYThiMjRhZTUxODZjZjQ3OWU0
ZjhiOTg1YzMwMWJjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWcu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZy5oCkBAIC0xMzYsMzUgKzEzNiw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIo
KSArIChtX2luZGV4IC0gTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0ZXJzKCkpKTsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwotICAgIH0KLSAg
ICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2luZGV4ICE9IG90aGVyLm1faW5kZXg7Ci0gICAgfQotICAgIAotICAg
IGJvb2wgb3BlcmF0b3I8KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gbV9pbmRleCA8IG90aGVyLm1faW5kZXg7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3Bl
cmF0b3I+KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9p
bmRleCA+IG90aGVyLm1faW5kZXg7Ci0gICAgfQotICAgIAotICAgIGJvb2wgb3BlcmF0b3I8PShj
b25zdCBSZWcmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW5kZXggPD0g
b3RoZXIubV9pbmRleDsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFJl
ZyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbmRleCA+PSBvdGhlci5t
X2luZGV4OwotICAgIH0KKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihSZWcsIFJlZykgPSBk
ZWZhdWx0OwogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKQEAgLTE5NSwx
NSArMTY3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBv
dGhlcikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9yZWdJ
bmRleCA9PSBvdGhlci5tX3JlZ0luZGV4OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYpIGNvbnN0ID0g
ZGVmYXVsdDsKIAogICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgdW5zaWduZWQgbV9yZWdJ
bmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAppbmRleCBjOWUzN2Y0
OTQ3NGNmNzU4MjZkNGMxNWMzOTE5ZmNjNWI2ZTA4YjgzLi43YWYyNzc5ODA1MDlmNmQ0MmVhYWZm
YmY4OTQ3NTY1Zjg2Y2NkOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlZ2lzdGVyU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNl
dC5oCkBAIC0xMzMsOCArMTMzLDcgQEAgcHVibGljOgogICAgIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyA9PSBv
dGhlci5tX2JpdHM7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnaXN0ZXJTZXQmIG90
aGVyKSBjb25zdCB7IHJldHVybiBtX2JpdHMgIT0gb3RoZXIubV9iaXRzOyB9CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyU2V0JikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAg
IHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2JpdHMuaGFzaCgpOyB9CiAgICAgCkBA
IC0xNjYsMTYgKzE2NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1faXRlciA9PSBv
dGhlci5tX2l0ZXI7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotICAgICAgICAKKyAgICAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0OworCiAgICAgcHJp
dmF0ZToKICAgICAgICAgUmVnaXN0ZXJCaXRtYXA6Oml0ZXJhdG9yIG1faXRlcjsKICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDFhZDU1OGQyMDg4NGQzZGFlYzNj
Mjk0MTg4ZDE0N2I3MjMxNTI3NzIuLmEwZDk2YjQyZTAwZWI0NDcwNWI0OGZmN2ZiZjk3OGYyZDE4
NmFhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTIyMjcsMTAgKzIy
MjcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbGFzdExpbmUoKSBjb25z
dCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlJikgY29uc3Q7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBGdW5jdGlvbk1ldGFkYXRhTm9kZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQogCiAgICAgcHVibGlj
OgogICAgICAgICB1bnNpZ25lZCBtX2xleGljYWxTY29wZUZlYXR1cmVzIDogNDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDQ0YTJlYmEwOTIwNjVhOTBhM2JjOGExMWZl
ZWRkYzNkYWZjNjU4N2EuLjk1M2NhMzE1ZjM3MzJjYjg4NjU3OGI3MDNkYmIyZjU0NmUyZjQ4YzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtOTU2LDExICs5NTYsNiBA
QCBzdHJ1Y3QgU2NvcGVSZWYgewogICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2lu
ZGV4OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTY29wZVJlZiYgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQot
CiBwcml2YXRlOgogICAgIFNjb3BlU3RhY2sqIG1fc2NvcGVTdGFjazsKICAgICB1bnNpZ25lZCBt
X2luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJU
b2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5k
ZXggYWQyYTBjZDMyMjJhYTNlMTlkMWQ1NTNjZGQ5NDk2YTUxOTZkOGEwNy4uODJkNDgyM2QyOTg5
YjZhN2M0MDI2MWE5NTg4NTRkMTIxNTA0M2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0yMTksMTYgKzIxOSw3IEBAIHN0cnVjdCBKU1RleHRQ
b3NpdGlvbiB7CiAKICAgICBvcGVyYXRvciBpbnQoKSBjb25zdCB7IHJldHVybiBvZmZzZXQ7IH0K
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBKU1RleHRQb3NpdGlvbiYgb3RoZXIpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbGluZSA9PSBvdGhlci5saW5lCi0gICAgICAgICAgICAm
JiBvZmZzZXQgPT0gb3RoZXIub2Zmc2V0Ci0gICAgICAgICAgICAmJiBsaW5lU3RhcnRPZmZzZXQg
PT0gb3RoZXIubGluZVN0YXJ0T2Zmc2V0OwotICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgSlNUZXh0UG9zaXRpb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNUZXh0
UG9zaXRpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBpbnQgY29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gb2Zmc2V0IC0gbGluZVN0YXJ0T2Zmc2V0OyB9CiAgICAgdm9pZCBjaGVja0NvbnNpc3Rl
bmN5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29k
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmgKaW5kZXggODZm
ZTEyNGE4NzNjZTc1MWM2MGFlZWM4ZDc5MDczOTYzOWE0YzM2MS4uOGQzYjViMDA1Y2NlOGVjY2Vk
MWI4Mzk5NDE1MzY3MjMzZTBmMDM5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
b3VyY2VDb2RlLmgKQEAgLTg2LDExICs4Niw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICYmIG1f
ZW5kT2Zmc2V0ID09IG90aGVyLm1fZW5kT2Zmc2V0OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBTb3VyY2VDb2RlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgT3JkaW5hbE51bWJl
ciBtX2ZpcnN0TGluZTsKICAgICBPcmRpbmFsTnVtYmVyIG1fc3RhcnRDb2x1bW47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZUtleS5oCmluZGV4IDAwZDNhZjk0ZDMx
YzMyYWE3MTUwZGNmMjM3YjQwYTQ4YjQwYzY5YTYuLmE5ZjA0ZTMxNjkyYTlhY2VkYWU3ZWZkMGEw
MDE3MDM3MjYwMjU4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
U291cmNlQ29kZUtleS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
Q29kZUtleS5oCkBAIC0xMTksMTEgKzExOSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICYmIHN0
cmluZygpID09IG90aGVyLnN0cmluZygpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTb3VyY2VDb2RlS2V5JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KICAgICBzdHJ1Y3QgSGFzaCB7CiAgICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNvdXJjZUNvZGVLZXkmIGtleSkgeyByZXR1cm4ga2V5
Lmhhc2goKTsgfQogICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTb3VyY2VDb2RlS2V5
JiBhLCBjb25zdCBTb3VyY2VDb2RlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9yaWdpbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmgKaW5kZXggMWVlYWJl
NzBkYmQzNWQ3MWE1NDI3YjVmYmY2OGQ5NTYyNTQ5ZTRmZi4uNGRkN2Q4NzZhNjVlNzYwZjJkMjFl
M2NlMmQ1YmUxMjhmOGVlMmJlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyT3JpZ2luLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVyT3JpZ2luLmgKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgogICAgIEJ5dGVj
b2RlSW5kZXggYnl0ZWNvZGVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleDsg
fQogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcmlnaW4mKSBjb25zdDsKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgT3JpZ2luJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAgICAgCiAgICAgYm9v
bCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyVUlELmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQuaAppbmRleCAwZTQyMzI0Y2YyYTliMGQwNWQ4ZTM0ZDNm
YjhkNGM2MDY4N2FkZWFlLi5iMjMxNmZiNDljNTg1OGZhYWQyNzBjYjAxNDZlNDZkNTk0MmFkZmNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJVSUQuaApAQCAt
NjEsMTEgKzYxLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV91aWQgPT0gb3RoZXIubV91
aWQ7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVSUQmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLSAg
ICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiAqdGhpcyAhPSBVSUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhY2hlYWJsZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhY2hlYWJsZUlkZW50aWZpZXIuaAppbmRleCAxMWZmYjg5ODMxZGU3MTc5MzNlMmU0OTY0
MmU1NTc3NzY5YjhiN2RmLi41MWE3MjM4MzA4OGY2YzE4MTkzMmI1MDhmN2M1Y2NhM2ZkNGQ1ZDFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVu
dGlmaWVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVhYmxlSWRl
bnRpZmllci5oCkBAIC01NSw5ICs1NSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgaW5saW5lIENh
Y2hlYWJsZUlkZW50aWZpZXIgY3JlYXRlRnJvbUltbW9ydGFsSWRlbnRpZmllcihVbmlxdWVkU3Ry
aW5nSW1wbCopOwogICAgIHN0YXRpYyBjb25zdGV4cHIgQ2FjaGVhYmxlSWRlbnRpZmllciBjcmVh
dGVGcm9tUmF3Qml0cyh1aW50cHRyX3QgcmF3Qml0cykgeyByZXR1cm4gQ2FjaGVhYmxlSWRlbnRp
ZmllcihyYXdCaXRzKTsgfQogCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllcihjb25zdCBDYWNoZWFi
bGVJZGVudGlmaWVyJikgPSBkZWZhdWx0OwotICAgIENhY2hlYWJsZUlkZW50aWZpZXIoQ2FjaGVh
YmxlSWRlbnRpZmllciYmKSA9IGRlZmF1bHQ7Ci0KICAgICBDYWNoZWFibGVJZGVudGlmaWVyKHN0
ZDo6bnVsbHB0cl90KQogICAgICAgICA6IG1fYml0cygwKQogICAgIHsgfQpAQCAtNzYsMTIgKzcz
LDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIHVpZCgp
LT5zeW1ib2xBd2FyZUhhc2goKTsgfQogCi0gICAgQ2FjaGVhYmxlSWRlbnRpZmllciYgb3BlcmF0
b3I9KGNvbnN0IENhY2hlYWJsZUlkZW50aWZpZXImKSA9IGRlZmF1bHQ7Ci0gICAgQ2FjaGVhYmxl
SWRlbnRpZmllciYgb3BlcmF0b3I9KENhY2hlYWJsZUlkZW50aWZpZXImJikgPSBkZWZhdWx0Owot
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhY2hlYWJsZUlkZW50aWZpZXImIG90aGVyKSBj
b25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2FjaGVhYmxlSWRlbnRpZmllciYgb3Ro
ZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiBvdGhlcikg
Y29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhY2hlYWJsZUlkZW50aWZpZXImKSBj
b25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYpIGNvbnN0OwogCiAg
ICAgc3RhdGljIGlubGluZSBib29sIGlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoSlNDZWxsKik7
CiAgICAgc3RhdGljIGlubGluZSBib29sIGlzQ2FjaGVhYmxlSWRlbnRpZmllckNlbGwoSlNWYWx1
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJ
ZGVudGlmaWVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVh
YmxlSWRlbnRpZmllcklubGluZXMuaAppbmRleCBmYTkxYmNmODljMDAwZDlhZTA4ODU5YjNmMmNj
YzdlNzUxMzk5YWVmLi5hZTUyZWM0ODc5NzQ3Y2MyM2Q5ZTYxN2I1YmY2ZWYyZGEwNjg2M2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWFibGVJZGVudGlm
aWVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlYWJs
ZUlkZW50aWZpZXJJbmxpbmVzLmgKQEAgLTEzNSwxNyArMTM1LDExIEBAIGlubGluZSB2b2lkIENh
Y2hlYWJsZUlkZW50aWZpZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0
CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY2VsbCgpKTsKIH0KIAotCiBpbmxp
bmUgYm9vbCBDYWNoZWFibGVJZGVudGlmaWVyOjpvcGVyYXRvcj09KGNvbnN0IENhY2hlYWJsZUlk
ZW50aWZpZXImIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiB1aWQoKSA9PSBvdGhlci51aWQo
KTsKIH0KIAotaW5saW5lIGJvb2wgQ2FjaGVhYmxlSWRlbnRpZmllcjo6b3BlcmF0b3IhPShjb25z
dCBDYWNoZWFibGVJZGVudGlmaWVyJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gdWlkKCkg
IT0gb3RoZXIudWlkKCk7Ci19Ci0KIGlubGluZSBib29sIENhY2hlYWJsZUlkZW50aWZpZXI6Om9w
ZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHVp
ZCgpID09IG90aGVyLmltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhZ2VkQmFycmllclB0ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FnZWRCYXJyaWVyUHRyLmgKaW5kZXggMzhiZWY1MDZlZDkxN2JlYWI2ZWNhZmY0NzcxMjFjYjli
MjZhNDFkNi4uZTYwYTJiYzM5MjAyZDdlNDI5YTgwYmEwMjJlNzA0YmUwNTU2M2Y0MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FnZWRCYXJyaWVyUHRyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FnZWRCYXJyaWVyUHRyLmgKQEAgLTcy
LDExICs3Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYmFycmllci5nZXQoKSA9PSBv
dGhlci5tX2JhcnJpZXIuZ2V0KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBDYWdlZEJhcnJpZXJQdHImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLSAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhIW1fYmFycmllci5nZXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUFubm90YXRpb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RPTUFubm90YXRpb24uaAppbmRleCAwN2Ux
MmVkZWI4OGJiNDE1Y2ZlYjZhYzVhZDNhODZhY2ViMzhmNzA3Li41Njk1ODc0OTJlZGRjZDU0ODlk
YWI1YzkxOWUwNjdmZDQ3YWZlNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9ET01Bbm5vdGF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRE9NQW5ub3RhdGlvbi5oCkBAIC0zNiwyMCArMzYsMTAgQEAgY2xhc3MgR2V0dGVyU2V0dGVy
OwogfQogCiBzdHJ1Y3QgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci1wdWJsaWM6CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVE
OwogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvOwogICAgIGNvbnN0IERPTUpJVDo6R2V0
dGVyU2V0dGVyKiBkb21KSVQ7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERPTUF0dHJpYnV0
ZUFubm90YXRpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IERPTUF0dHJpYnV0ZUFubm90YXRpb24mIGxlZnQsIGNvbnN0IERPTUF0dHJpYnV0
ZUFubm90YXRpb24mIHJpZ2h0KQotewotICAgIHJldHVybiBsZWZ0LmNsYXNzSW5mbyA9PSByaWdo
dC5jbGFzc0luZm8gJiYgbGVmdC5kb21KSVQgPT0gcmlnaHQuZG9tSklUOwotfQotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IERPTUF0dHJpYnV0ZUFubm90YXRpb24mIGxlZnQsIGNvbnN0
IERPTUF0dHJpYnV0ZUFubm90YXRpb24mIHJpZ2h0KQotewotICAgIHJldHVybiAhKGxlZnQgPT0g
cmlnaHQpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNPZmZzZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyaWNPZmZzZXQuaAppbmRleCAxNDEzYjUxNDEyOGQzM2ZmZTI4ZTMxMjMx
MTA2MzM4ODViMTQ0MGQ5Li5lZmY0MWQ2ZGIyMjYwOTUwOGJiMzIwNGU5OGQ5Nzc1MWQ3ZDQxOWJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljT2Zmc2V0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY09mZnNldC5oCkBA
IC02MCwzMCArNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29mZnNldDsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdlbmVyaWNPZmZzZXQmIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0Owot
ICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR2VuZXJpY09mZnNldCYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9vZmZzZXQgIT0gb3RoZXIubV9vZmZzZXQ7Ci0g
ICAgfQotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEdlbmVyaWNPZmZzZXQmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0IDwgb3RoZXIubV9vZmZzZXQ7Ci0gICAg
fQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IEdlbmVyaWNPZmZzZXQmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID4gb3RoZXIubV9vZmZzZXQ7Ci0gICAgfQot
ICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBHZW5lcmljT2Zmc2V0JiBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX29mZnNldCA8PSBvdGhlci5tX29mZnNldDsKLSAgICB9Ci0g
ICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IEdlbmVyaWNPZmZzZXQmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fb2Zmc2V0ID49IG90aGVyLm1fb2Zmc2V0OwotICAgIH0KKyAg
ICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihHZW5lcmljT2Zmc2V0LCBHZW5lcmljT2Zmc2V0KSA9
IGRlZmF1bHQ7CiAgICAgCiAgICAgVCBvcGVyYXRvcisoaW50IHZhbHVlKSBjb25zdAogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCBjMDdlNzdlNDEzM2I5
NWY4NjZjZjA3MzA0MmEyNTMzMzk0OWIxMzkwLi42Yjg4M2QwMTQwNTc0ZjdmYzM5YjNiYTNkNjEz
MzNhMTc1OWNiNGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
U084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBA
IC0xNDUsMzAgKzE0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vj
b25kcyA+PSBFeGFjdFRpbWU6Om1pblZhbHVlICYmIG1fZXBvY2hOYW5vc2Vjb25kcyA8PSBFeGFj
dFRpbWU6Om1heFZhbHVlOwogICAgIH0KIAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChF
eGFjdFRpbWUgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9lcG9jaE5hbm9z
ZWNvbmRzIDwgb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwotICAgIH0KLSAgICBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcjw9KEV4YWN0VGltZSBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPD0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwotICAg
IH0KLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KEV4YWN0VGltZSBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29uZHMgPT0gb3RoZXIubV9lcG9j
aE5hbm9zZWNvbmRzOwotICAgIH0KLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KEV4YWN0
VGltZSBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Vwb2NoTmFub3NlY29u
ZHMgIT0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwotICAgIH0KLSAgICBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvcj49KEV4YWN0VGltZSBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2Vwb2NoTmFub3NlY29uZHMgPj0gb3RoZXIubV9lcG9jaE5hbm9zZWNvbmRzOwotICAgIH0K
LSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oRXhhY3RUaW1lIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fZXBvY2hOYW5vc2Vjb25kcyA+IG90aGVyLm1fZXBvY2hOYW5v
c2Vjb25kczsKLSAgICB9CisgICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oRXhhY3RUaW1lLCBF
eGFjdFRpbWUpID0gZGVmYXVsdDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8RXhhY3RUaW1lPiBhZGQo
RHVyYXRpb24pIGNvbnN0OwogICAgIEludDEyOCBkaWZmZXJlbmNlKEV4YWN0VGltZSBvdGhlciwg
dW5zaWduZWQgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKaW5kZXggMWM5ZmU1NTY1
MDFmMGEyYTdjZjBkMDhlMTE4MmI2NTk3YzAxYzBmZi4uN2E0OWRiNDY5Y2IxNGE1ZWY2NDhkMzZh
MmM0Y2JjMTdjODdhMWYzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50
aWZpZXIuaApAQCAtMTQ2LDEyICsxNDYsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1ByaXZhdGVO
YW1lKCkgY29uc3QgeyByZXR1cm4gaXNTeW1ib2woKSAmJiBzdGF0aWNfY2FzdDxjb25zdCBTeW1i
b2xJbXBsKj4oaW1wbCgpKS0+aXNQcml2YXRlKCk7IH0KIAogICAgIGZyaWVuZCBib29sIG9wZXJh
dG9yPT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICBmcmllbmQg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyJik7CiAK
ICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBMQ2hh
ciopOwogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYsIGNvbnN0
IGNoYXIqKTsKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBMQ2hhciopOwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IGNoYXIqKTsKIAogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0lt
cGwqLCBjb25zdCBMQ2hhciopOwogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbChjb25zdCBT
dHJpbmdJbXBsKmEsIGNvbnN0IGNoYXIqYikgeyByZXR1cm4gSWRlbnRpZmllcjo6ZXF1YWwoYSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfTsKQEAgLTIzNSwxMSArMjMyLDYg
QEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBJZGVu
dGlmaWVyJiBiKQogICAgIHJldHVybiBJZGVudGlmaWVyOjplcXVhbChhLCBiKTsKIH0KIAotaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiBhLCBjb25zdCBJZGVudGlmaWVy
JiBiKQotewotICAgIHJldHVybiAhSWRlbnRpZmllcjo6ZXF1YWwoYSwgYik7Ci19Ci0KIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSWRlbnRpZmllciYgYSwgY29uc3QgTENoYXIqIGIpCiB7
CiAgICAgcmV0dXJuIElkZW50aWZpZXI6OmVxdWFsKGEsIGIpOwpAQCAtMjUwLDE2ICsyNDIsNiBA
QCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IElkZW50aWZpZXImIGEsIGNvbnN0IGNoYXIq
IGIpCiAgICAgcmV0dXJuIElkZW50aWZpZXI6OmVxdWFsKGEsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihiKSk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSWRlbnRp
ZmllciYgYSwgY29uc3QgTENoYXIqIGIpCi17Ci0gICAgcmV0dXJuICFJZGVudGlmaWVyOjplcXVh
bChhLCBiKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJZGVudGlmaWVyJiBh
LCBjb25zdCBjaGFyKiBiKQotewotICAgIHJldHVybiAhSWRlbnRpZmllcjo6ZXF1YWwoYSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsKLX0KLQogaW5saW5lIGJvb2wgSWRlbnRp
Zmllcjo6ZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogciwgY29uc3QgTENoYXIqIHMpCiB7CiAgICAg
cmV0dXJuIFdURjo6ZXF1YWwociwgcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlLmgKaW5kZXggZThhNGU3YTYyMzM5ZDM2YmVhMGY3MjU3YjQxNzM1ZWM4MjQzZWY1
Ny4uYjE3MWJkM2NlODFlODYzNWQ4ZjE3NzFkNDAyYWZlNWU0ZGE0Mzg1MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaApAQCAtMjEwLDcgKzIxMCw2IEBAIHB1
YmxpYzoKIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3Q7CiAKICAgICBib29sIGlzSW50MzIoKSBjb25z
dDsKICAgICBib29sIGlzVUludDMyKCkgY29uc3Q7CkBAIC02NzMsMTAgKzY3Miw2IEBAIEFMV0FZ
U19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEpTVmFsdWUoKQogfQogCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEpTVmFsdWUgYSwgY29uc3QgSlNDZWxsKiBiKSB7IHJldHVybiBh
ID09IEpTVmFsdWUoYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNDZWxsKiBh
LCBjb25zdCBKU1ZhbHVlIGIpIHsgcmV0dXJuIEpTVmFsdWUoYSkgPT0gYjsgfQotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUgYSwgY29uc3QgSlNDZWxsKiBiKSB7IHJldHVy
biBhICE9IEpTVmFsdWUoYik7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSlNDZWxs
KiBhLCBjb25zdCBKU1ZhbHVlIGIpIHsgcmV0dXJuIEpTVmFsdWUoYSkgIT0gYjsgfQogCiAKIGJv
b2wgaXNUaGlzVmFsdWVBbHRlcmVkKGNvbnN0IFB1dFByb3BlcnR5U2xvdCYsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCmluZGV4IDhmNWMwNzE5ODg2ZjUyNGYyY2EyYjZlN2NmNGJmNWExNTA0Mzk1
NTIuLmM2MTZhNDIzOWFlNjY3ODVmZDhhNjI2Njk5NWQ4ODBlOTgwZGFlMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtMzI1
LDExICszMjUsNiBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IEpTVmFs
dWUmIG90aGVyKSBjb25zdAogICAgIHJldHVybiB1LmFzSW50NjQgPT0gb3RoZXIudS5hc0ludDY0
OwogfQogCi1pbmxpbmUgYm9vbCBKU1ZhbHVlOjpvcGVyYXRvciE9KGNvbnN0IEpTVmFsdWUmIG90
aGVyKSBjb25zdAotewotICAgIHJldHVybiB1LmFzSW50NjQgIT0gb3RoZXIudS5hc0ludDY0Owot
fQotCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0VtcHR5KCkgY29uc3QKIHsKICAgICByZXR1cm4g
dGFnKCkgPT0gRW1wdHlWYWx1ZVRhZzsKQEAgLTQ3NywxMSArNDcyLDYgQEAgaW5saW5lIGJvb2wg
SlNWYWx1ZTo6b3BlcmF0b3I9PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3QKICAgICByZXR1
cm4gdS5hc0ludDY0ID09IG90aGVyLnUuYXNJbnQ2NDsKIH0KIAotaW5saW5lIGJvb2wgSlNWYWx1
ZTo6b3BlcmF0b3IhPShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4g
dS5hc0ludDY0ICE9IG90aGVyLnUuYXNJbnQ2NDsKLX0KLQogaW5saW5lIGJvb2wgSlNWYWx1ZTo6
aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHUuYXNJbnQ2NCA9PSBWYWx1ZUVtcHR5Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCmluZGV4IDg0ZjdhOTk3MjJhNWI4
ZDA0YWFjMDkyMWRkOTk4ZTBlOGRjOGNiYjIuLjM3ZTE1MDMyMGRkMWI0NGUzYWRiY2ZiMWQxYzAx
NmU0Nzk5ODllMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKQEAg
LTExNiw3ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5
IG9taXR0ZWQKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY29wZUNoYWluSXRlcmF0b3Im
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX25vZGUgPT0gb3RoZXIubV9ub2RlOyB9Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFNjb3BlQ2hhaW5JdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fbm9kZSAhPSBvdGhlci5tX25vZGU7IH0KIAogcHJpdmF0ZToKICAgICBKU1Njb3BlKiBt
X25vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRnVuY3Rpb24u
aAppbmRleCBjZTA3MTEzZTJhYjE4MTUwNzVlNTQ0ZjI4MzgzYjExZGM2OTIyNTIxLi5lMmZlOWQ0
ZmQzYTI4ZWNjYTUxNTk2N2I2NzkzMDA4YzQyMDAxMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL05hdGl2ZUZ1bmN0aW9uLmgKQEAgLTQ1LDcgKzQ1LDYgQEAgcHVibGlj
OgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fcHRyOyB9
CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KICAgICBib29s
IG9wZXJhdG9yPT0oTmF0aXZlRnVuY3Rpb24gb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09
IG90aGVyLm1fcHRyOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KE5hdGl2ZUZ1bmN0aW9uIG90aGVy
KSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBvdGhlci5tX3B0cjsgfQogCiAgICAgRW5jb2RlZEpT
VmFsdWUgb3BlcmF0b3IoKShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkgeyByZXR1cm4gbV9wdHIoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpOyB9CiAK
QEAgLTc5LDcgKzc4LDYgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhIW1fcHRyOyB9CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJl
dHVybiAhbV9wdHI7IH0KICAgICBib29sIG9wZXJhdG9yPT0oVGFnZ2VkTmF0aXZlRnVuY3Rpb24g
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09IG90aGVyLm1fcHRyOyB9Ci0gICAgYm9vbCBv
cGVyYXRvciE9KFRhZ2dlZE5hdGl2ZUZ1bmN0aW9uIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0
ciAhPSBvdGhlci5tX3B0cjsgfQogCiAgICAgRW5jb2RlZEpTVmFsdWUgb3BlcmF0b3IoKShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgeyByZXR1cm4g
TmF0aXZlRnVuY3Rpb24oKnRoaXMpKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4IDgxYTVjOTA5NjVjNmZk
ZTQyNGE2YTE2Y2UwMDQ0NzJmY2IxN2RhMDMuLjM2ZmVhYTg5MWM2OTcyNmI2ZjVkZDhlYWY2NWEx
NTMwZjQwMGNhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CkBAIC05NDksOCArOTQ5LDcgQEAgc3RydWN0IE9wdGlvblJlYWRlciB7CiAgICAgcHVibGljOgog
ICAgICAgICB2b2lkIGR1bXAoU3RyaW5nQnVpbGRlciYpIGNvbnN0OwogCi0gICAgICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBPcHRpb24mIG90aGVyKSBjb25zdDsKLSAgICAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IE9wdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb24mKSBjb25zdDsKIAog
ICAgICAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uczo6c19jb25z
dE1ldGFEYXRhW21faWRdLm5hbWU7IH0KICAgICAgICAgY29uc3QgY2hhciogZGVzY3JpcHRpb24o
KSBjb25zdCB7IHJldHVybiBPcHRpb25zOjpzX2NvbnN0TWV0YURhdGFbbV9pZF0uZGVzY3JpcHRp
b247IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ByaXZhdGVO
YW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcml2YXRlTmFtZS5oCmluZGV4
IGY3MDBiNWQ3YjNjMTJkZDEzOGRkMzY5MDM5MDhmMmVhMmMzZDViM2UuLjk4N2VmYjFmM2Y1N2U2
MzY0YjMxZWFlNzZlZWVmZTIxYTkwNTAyMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ByaXZhdGVOYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJpdmF0ZU5hbWUuaApAQCAtNjQsNyArNjQsNiBAQCBwdWJsaWM6CiAgICAgU3ltYm9s
SW1wbCYgdWlkKCkgY29uc3QgeyByZXR1cm4gbV91aWQ7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBQcml2YXRlTmFtZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICZ1aWQoKSA9PSAmb3Ro
ZXIudWlkKCk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJpdmF0ZU5hbWUmIG90aGVy
KSBjb25zdCB7IHJldHVybiAmdWlkKCkgIT0gJm90aGVyLnVpZCgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgUmVmPFN5bWJvbEltcGw+IG1fdWlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlOYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9wZXJ0eU5hbWUuaAppbmRleCA0ZTgyZDA5OGJhMmE5YjhhM2YzODQ3Y2FlNjM5MDNkOGYx
YzZkNTE0Li5lMDBlYTZjZjJlYTU4MThjYTEwMTBkNmE5NWQ1ZmFmOGIyYTAxMjFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU5hbWUuaApAQCAtMTA2LDIxICsx
MDYsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KFByb3BlcnR5TmFtZSBhLCBjb25zdCBjaGFy
KiBiKQogICAgIHJldHVybiBlcXVhbChhLnVpZCgpLCBiKTsKIH0KIAotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShQcm9wZXJ0eU5hbWUgYSwgY29uc3QgSWRlbnRpZmllciYgYikKLXsKLSAgICByZXR1
cm4gYS51aWQoKSAhPSBiLmltcGwoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBJZGVudGlmaWVyJiBhLCBQcm9wZXJ0eU5hbWUgYikKLXsKLSAgICByZXR1cm4gYS5pbXBsKCkg
IT0gYi51aWQoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShQcm9wZXJ0eU5hbWUgYSwg
UHJvcGVydHlOYW1lIGIpCi17Ci0gICAgcmV0dXJuIGEudWlkKCkgIT0gYi51aWQoKTsKLX0KLQog
QUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUluZGV4KFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgYXV0byB1aWQgPSBwcm9wZXJ0eU5hbWUudWlkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVRhYmxlLmgKaW5kZXgg
Nzk5MGViNjA4MWRhNDI2MmY4ZDAzYWIyODJjZTk5YmY0MjlhMjQxNS4uZWVlNjdmODRlNDAzOWYz
MTU1NDgzY2YyZGE3MGQ1MWM4OGU5ZDBjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5VGFibGUuaApAQCAtOTYsMTEgKzk2LDYgQEAgY2xhc3MgUHJvcGVydHlU
YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQ
dHIgPT0gb3RoZXIubV92YWx1ZVB0cjsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBvcmRlcmVkX2l0ZXJhdG9yPFQ+JiBvdGhlcikgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWVQdHIgIT0gb3RoZXIubV92YWx1ZVB0cjsKLSAgICAg
ICAgfQotCiAgICAgICAgIFQmIG9wZXJhdG9yKigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiAqbV92YWx1ZVB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3RvdHlwZUtleS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90
eXBlS2V5LmgKaW5kZXggYTdmOTQ3MGYxOTQyYTk5NWZjNDkxY2E0MjdkMWEzMDlhZGY4NWIyYS4u
MGFjYTY5NGE2ZDE0NmZhNzMyOWQxNTQ1NmI0YjNiOGIyYjUzNGU1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlS2V5LmgKQEAgLTU3LDE2ICs1Nyw4IEBAIHB1
YmxpYzoKICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2xhc3NJbmZvOyB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFByb3RvdHlwZUtleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9wcm90
b3R5cGUgPT0gb3RoZXIubV9wcm90b3R5cGUKLSAgICAgICAgICAgICYmIG1fZXhlY3V0YWJsZSA9
PSBvdGhlci5tX2V4ZWN1dGFibGUKLSAgICAgICAgICAgICYmIG1faW5saW5lQ2FwYWNpdHkgPT0g
b3RoZXIubV9pbmxpbmVDYXBhY2l0eQotICAgICAgICAgICAgJiYgbV9jbGFzc0luZm8gPT0gb3Ro
ZXIubV9jbGFzc0luZm8KLSAgICAgICAgICAgICYmIG1fZ2xvYmFsT2JqZWN0ID09IG90aGVyLm1f
Z2xvYmFsT2JqZWN0OwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvdG90eXBl
S2V5JikgY29uc3QgPSBkZWZhdWx0OwogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQ
cm90b3R5cGVLZXkmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBQcm90
b3R5cGVLZXkoKTsgfQogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7
IHJldHVybiAqdGhpcyA9PSBQcm90b3R5cGVLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUp
OyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVUcmFuc2l0aW9uVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZVRyYW5zaXRpb25UYWJsZS5oCmluZGV4IDgwNjJjMmM3ODdjM2Y1YThiZDZiMmJhYzdl
Mzg4YTJjNjNiNDZmYTEuLmJiNzNlMGM5NTRjYTM0MzMxZTA3ZjJmOTViN2ZkMGM2YzYzODgxNjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVRyYW5z
aXRpb25UYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZVRyYW5zaXRpb25UYWJsZS5oCkBAIC0xODYsMTUgKzE4Niw3IEBAIGNsYXNzIFN0cnVjdHVyZVRy
YW5zaXRpb25UYWJsZSB7CiAgICAgICAgICAgICBUcmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVz
IGF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiAobV9lbmNvZGVkRGF0YSA+PiBhdHRyaWJ1dGVz
U2hpZnQpICYgVUlOVDhfTUFYOyB9CiAgICAgICAgICAgICBUcmFuc2l0aW9uS2luZCB0cmFuc2l0
aW9uS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRyYW5zaXRpb25LaW5kPihtX2Vu
Y29kZWREYXRhID4+IHRyYW5zaXRpb25LaW5kU2hpZnQpOyB9CiAKLSAgICAgICAgICAgIGZyaWVu
ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGEubV9lbmNvZGVkRGF0YSA9PSBiLm1fZW5jb2Rl
ZERhdGE7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9y
IT0oY29uc3QgS2V5JiBhLCBjb25zdCBLZXkmIGIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGEubV9lbmNvZGVkRGF0YSAhPSBiLm1fZW5jb2RlZERhdGE7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JikgY29uc3QgPSBk
ZWZhdWx0OwogCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICB1aW50cHRyX3QgbV9lbmNv
ZGVkRGF0YSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yLmgKaW5kZXggY2NmOTA0Zjg4OGM4NDRkYmY5ZjIz
NmFiOTdmN2YxOGMxYjYyNDJjMi4uOGY0ODQyMzYyMmVhMGQ3MmJhNTc1NTk2NTc5MWM4N2ZiYjdk
MDcwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cGxhdGVPYmplY3REZXNjcmlwdG9yLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHVibGljOgogICAgIGNv
bnN0IE9wdGlvbmFsU3RyaW5nVmVjdG9yJiBjb29rZWRTdHJpbmdzKCkgY29uc3QgeyByZXR1cm4g
bV9jb29rZWRTdHJpbmdzOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGVtcGxhdGVP
YmplY3REZXNjcmlwdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9oYXNoID09IG90aGVyLm1f
aGFzaCAmJiBtX3Jhd1N0cmluZ3MgPT0gb3RoZXIubV9yYXdTdHJpbmdzOyB9Ci0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG1faGFzaCAhPSBvdGhlci5tX2hhc2ggfHwgbV9yYXdTdHJpbmdzICE9IG90aGVyLm1f
cmF3U3RyaW5nczsgfQogCiAgICAgc3RydWN0IEhhc2hlciB7CiAgICAgICAgIHN0YXRpYyB1bnNp
Z25lZCBoYXNoKGNvbnN0IFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvciYga2V5KSB7IHJldHVybiBr
ZXkuaGFzaCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
YXJPZmZzZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Zhck9mZnNldC5oCmlu
ZGV4IDQyYzM3YzExYTFhY2U0MjQ0ZGY3ZDM4MWU0NjU1Y2VlZmM5NjIxOWUuLjBhNGNhYzFiM2Mx
ZjdlNjdkY2M5NDgzZjI0MzcyNTg2Zjc3YzljMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Zhck9mZnNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Zhck9mZnNldC5oCkBAIC0xOTAsMTYgKzE5MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBWYXJPZmZzZXQmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2lu
ZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYmIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zm
c2V0OwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVmFyT2Zmc2V0JiBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAg
ICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZhck9mZnNldCYpIGNvbnN0ID0gZGVmYXVs
dDsKICAgICAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCA1YmM0MjYw
OTJiOTE3NjhhMGY5MjAxYTliN2QxM2Q4MWU5NGYyNGQ0Li4wOWEyYjI5Yjg1MjA2ZDBhYWM2ZWUz
ZmY5Mjg3YWVjZjA1ZjY3MDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21BaXJJUkdlbmVyYXRvci5jcHAKQEAgLTk1LDE5ICs5NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgLCBtX3R5cGUodHlwZSkKICAgICB7IH0KIAotICAgIFR5cGVkVG1wKGNvbnN0IFR5cGVkVG1w
JikgPSBkZWZhdWx0OwotICAgIFR5cGVkVG1wKFR5cGVkVG1wJiYpID0gZGVmYXVsdDsKLSAgICBU
eXBlZFRtcCYgb3BlcmF0b3I9KFR5cGVkVG1wJiYpID0gZGVmYXVsdDsKLSAgICBUeXBlZFRtcCYg
b3BlcmF0b3I9KGNvbnN0IFR5cGVkVG1wJikgPSBkZWZhdWx0OwotCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFR5cGVkVG1wJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X3RtcCA9PSBvdGhlci5tX3RtcCAmJiBtX3R5cGUgPT0gb3RoZXIubV90eXBlOwotICAgIH0KLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgVHlwZWRUbXAmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgVHlwZWRUbXAmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBleHBsaWNpdCBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISF0bXAoKTsgfQogCkBAIC0xMjIsNyArMTEwLDYg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLQogICAgIFRtcCBtX3RtcDsKICAgICBUeXBl
IG1fdHlwZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
UGFnZUNvdW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtUGFnZUNvdW50LmgK
aW5kZXggYjdkOGM5ZmNmNzJiMTQ3OWMzYTNmMTIzYmZhMmI0ZDJkMjQ3Y2NlMi4uM2NhZjFiNDU5
MmI5YThkZjQzZDNhZWY2YTljNzgxNDdkMmIzYjU2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbVBhZ2VDb3VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21QYWdlQ291bnQuaApAQCAtODMsOSArODMsOCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3BhZ2VDb3VudCAhPSBVSU5UX01BWDsKICAgICB9CiAKLSAgICBib29sIG9wZXJh
dG9yPChjb25zdCBQYWdlQ291bnQmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDb3VudCA8
IG90aGVyLm1fcGFnZUNvdW50OyB9Ci0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUGFnZUNvdW50
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wYWdlQ291bnQgPiBvdGhlci5tX3BhZ2VDb3VudDsg
fQotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBQYWdlQ291bnQmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VDb3VudCA+PSBvdGhlci5tX3BhZ2VDb3VudDsgfQorICAgIGZyaWVuZCBhdXRv
IG9wZXJhdG9yPD0+KFBhZ2VDb3VudCwgUGFnZUNvdW50KSA9IGRlZmF1bHQ7CisKICAgICBQYWdl
Q291bnQgb3BlcmF0b3IrKGNvbnN0IFBhZ2VDb3VudCYgb3RoZXIpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoc3VtT3ZlcmZsb3dzPHVpbnQzMl90PihtX3BhZ2VDb3VudCwgb3RoZXIubV9wYWdl
Q291bnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhZy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVRhZy5oCmluZGV4IGJkZmNmYjY4OGUy
ZDFlOTc5YWQwY2NmNGMxYWFmMDZmOTkyNDA1MjQuLjVlZjdkNmU3N2Y0MDQ1MDY5OWMyN2U0MjAz
YjNjZWVkYjZjNGIzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21UYWcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtVGFnLmgKQEAgLTQz
LDcgKzQzLDYgQEAgcHVibGljOgogICAgIC8vIFNpbmNlICgxKSB3ZSBkbyBub3QgY29weSBXYXNt
OjpUYWcgYW5kICgyKSB3ZSBhbHdheXMgYWxsb2NhdGUgV2FzbTo6VGFnIGZyb20gaGVhcCwgd2Ug
Y2FuIHVzZQogICAgIC8vIHBvaW50ZXIgY29tcGFyaXNvbiBmb3IgaWRlbnRpdHkgY2hlY2suCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRhZyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHRoaXMg
PT0gJm90aGVyOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRhZyYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIHRoaXMgIT0gJm90aGVyOyB9CiAKICAgICBjb25zdCBTaWduYXR1cmUmIHNpZ25h
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2lnbmF0dXJlLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9BdXRv
bWF0aWNUaHJlYWQuY3BwCmluZGV4IGY0ZWE3OGQxM2UxY2RkYjYxOWI4MjI4NjhkMzNjNzI3Yzlm
MmY5OGIuLjg4MjdiNTA5MWZkMTNmY2VlOTQ2MmEzNDkxODMzNjBlMTk4ZjI1MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0F1dG9tYXRpY1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvQXV0b21hdGljVGhyZWFkLmNwcApAQCAtMjQ1LDQgKzI0NSwzIEBAIHZvaWQgQXV0b21hdGlj
VGhyZWFkOjp0aHJlYWRJc1N0b3BwaW5nKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV1RGCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0JhZy5oIGIvU291
cmNlL1dURi93dGYvQmFnLmgKaW5kZXggNTA0MmE0ZGRkMWVjYjBjN2I2YjllYjMzOGZmNzhhMzE4
MTJlNjZlNy4uNzZjZmFjMjBiNWM2MTVhZDE0ZGE3YmU2MWM3OGE0YWNiMWU5NWRmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvQmFnLmgKKysrIGIvU291cmNlL1dURi93dGYvQmFnLmgKQEAg
LTEyNCwxNSArMTI0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3Im
IG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9ub2RlID09IG90
aGVyLm1fbm9kZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBp
dGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
aXRlcmF0b3ImKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBwcml2YXRlOgogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBXVEY6OkJhZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvQml0VmVjdG9y
LmgKaW5kZXggMTliZTQ3MjYyOGNmZmI4M2Y5Nzk4MGFjYzNmYTY2MDA3YWI5ZTI0YS4uNzQyNWZj
ZGJkNWYxZGUzYTAxMjY0ZGNhNTZlZWEwOWNlOGIyOTJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvQml0VmVjdG9yLmgKQEAgLTMz
NywxMCArMzM3LDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3Ro
ZXIubV9pbmRleDsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9CiAgICAgcHJpdmF0ZToKICAgICAgICAg
Y29uc3QgQml0VmVjdG9yKiBtX2JpdFZlY3RvcjsKICAgICAgICAgc2l6ZV90IG1faW5kZXg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9CaXRtYXAuaCBiL1NvdXJjZS9XVEYvd3RmL0JpdG1h
cC5oCmluZGV4IGJkYjM5MDhiYTYxZTQzYWU4ODI0YmJmMWRlNjUwZjRlODQ2MzdmZDMuLjEyMjQ5
YmY0MThkOTIwZWY0MTRjZjgxZDg1NWRmZGUwODNhZDNhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0JpdG1hcC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0JpdG1hcC5oCkBAIC0xMDUsMTEg
KzEwNSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1f
aW5kZXg7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgY29u
c3QgQml0bWFwKiBtX2JpdG1hcDsKICAgICAgICAgc2l6ZV90IG1faW5kZXg7CkBAIC0xMjQsOCAr
MTE5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRFYWNoTnRoQml0KHNpemVfdCBuLCBzaXpl
X3Qgc3RhcnQgPSAwLCBzaXplX3QgZW5kID0gYml0bWFwU2l6ZSk7CiAKLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgQml0bWFwJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJp
dG1hcCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCaXRtYXAmKSBjb25zdCA9
IGRlZmF1bHQ7CiAKICAgICB2b2lkIG9wZXJhdG9yfD0oY29uc3QgQml0bWFwJik7CiAgICAgdm9p
ZCBvcGVyYXRvciY9KGNvbnN0IEJpdG1hcCYpOwpAQCAtNDY3LDIyICs0NjEsNiBAQCBpbmxpbmUg
dm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpzZXRFYWNoTnRoQml0KHNpemVfdCBu
LCBzaXplX3Qgc3RhcnQsCiAgICAgfQogfQogCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwg
dHlwZW5hbWUgV29yZFR5cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5
cGU+OjpvcGVyYXRvcj09KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB3b3JkczsgKytpKSB7Ci0gICAgICAgIGlmIChiaXRzW2ldICE9IG90
aGVyLmJpdHNbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCi10ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5
cGU+Ci1pbmxpbmUgYm9vbCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvciE9
KGNvbnN0IEJpdG1hcCYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOwotfQotCiB0ZW1wbGF0ZTxzaXplX3QgYml0bWFwU2l6ZSwgdHlwZW5hbWUgV29yZFR5cGU+
CiBpbmxpbmUgdm9pZCBCaXRtYXA8Yml0bWFwU2l6ZSwgV29yZFR5cGU+OjpvcGVyYXRvcnw9KGNv
bnN0IEJpdG1hcCYgb3RoZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Cb3hQdHIu
aCBiL1NvdXJjZS9XVEYvd3RmL0JveFB0ci5oCmluZGV4IDk4NDg4MDJkMTA3N2M5MWU1ZWFlYzM4
OWZiMmM1ODliYzljMjZjMzQuLjE1OTBhZWUzOGY1MDMwNDU1ZGE1ZjY3NWVjNWEzNDJlOTllMjU4
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0JveFB0ci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0JveFB0ci5oCkBAIC02OCwxMSArNjgsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29s
IG9wZXJhdG9yPT0oY29uc3QgQm94UHRyPFQ+JiBsaHMsIGNvbnN0IEJveFB0cjxUPiYgcmhzKQog
ICAgIHJldHVybiAqbGhzID09ICpyaHM7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wg
b3BlcmF0b3IhPShjb25zdCBCb3hQdHI8VD4mIGxocywgY29uc3QgQm94UHRyPFQ+JiByaHMpCi17
Ci0gICAgcmV0dXJuICEobGhzID09IHJocyk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1
c2luZyBXVEY6OmFkb3B0SW5Cb3hQdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DYWdl
ZFB0ci5oIGIvU291cmNlL1dURi93dGYvQ2FnZWRQdHIuaAppbmRleCA2NGE4YzAxODY0MDU4MDA4
YTVlNWU5OTM5MmRmNDQ4NzdmMTg5NzFmLi5lMjc3Nzg5MmNmNzI5YWNlYzgwYmFlNGI5OTliMjQ0
MDhkYTU0NDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DYWdlZFB0ci5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0NhZ2VkUHRyLmgKQEAgLTEyNCwxMSArMTI0LDYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgQ2FnZWRQdHImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOwotICAgIH0KLSAgICAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBnZXRVbnNhZmUoKSAhPSBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaCBiL1NvdXJjZS9XVEYvd3Rm
L0NoZWNrZWRBcml0aG1ldGljLmgKaW5kZXggOWMxYTVmYzc0MjQxODVkZDI5N2EwMWJlZGJmY2Ew
MmNiZWYxOTU1OS4uZjAzYzlhYWFhZjhiM2NiNzgwMjI0N2Y1YTJjM2YzNzQzMjg4YmU0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9DaGVja2VkQXJpdGhtZXRpYy5oCkBAIC04NDEsNDggKzg0MSwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiAqdGhpcyAqPSByaHMubV92YWx1ZTsKICAgICB9CiAKLSAgICAvLyBF
cXVhbGl0eSBjb21wYXJpc29ucwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPiBib29sIG9wZXJh
dG9yPT0oQ2hlY2tlZDxULCBWPiByaHMpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5k
IGF1dG8gb3BlcmF0b3I8PT4oQ2hlY2tlZCBhLCBVIGIpCiAgICAgewotICAgICAgICByZXR1cm4g
dmFsdWUoKSA9PSByaHMudmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGEudmFsdWUoKSA8PT4gYjsK
ICAgICB9CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj09KFUgcmhz
KQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgb3BlcmF0b3I9PShVIHJocykgY29uc3QK
ICAgICB7Ci0gICAgICAgIGlmICh0aGlzLT5oYXNPdmVyZmxvd2VkKCkpCi0gICAgICAgICAgICB0
aGlzLT5jcmFzaCgpOwotICAgICAgICByZXR1cm4gc2FmZUVxdWFscyhtX3ZhbHVlLCByaHMpOwot
ICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gYm9vbCBv
cGVyYXRvcj09KENoZWNrZWQ8VSwgVj4gcmhzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVl
KCkgPT0gQ2hlY2tlZChyaHMudmFsdWUoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFU+IGJvb2wgb3BlcmF0b3IhPShVIHJocykKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzID09IHJocyk7Ci0gICAgfQotCi0gICAgLy8gT3RoZXIgY29tcGFyaXNvbnMKLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVj4gYm9vbCBvcGVyYXRvcjwoQ2hlY2tlZDxULCBWPiByaHMpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gdmFsdWUoKSA8IHJocy52YWx1ZSgpOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPiBib29sIG9wZXJhdG9yPD0oQ2hlY2tlZDxULCBWPiBy
aHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdmFsdWUoKSA8PSByaHMudmFsdWUoKTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVj4gYm9vbCBvcGVyYXRvcj4oQ2hlY2tl
ZDxULCBWPiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdmFsdWUoKSA+IHJocy52
YWx1ZSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWPiBib29sIG9wZXJhdG9y
Pj0oQ2hlY2tlZDxULCBWPiByaHMpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdmFsdWUo
KSA+PSByaHMudmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHNhZmVFcXVhbHModmFsdWUoKSwgcmhz
KTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DaGVja2Vk
UHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9DaGVja2VkUHRyLmgKaW5kZXggYTFjZjE2MzFmZGNhOWMy
ZmE4ZDk4OWFjNzhkOTUwOWEzYjc4ODNiZi4uMGE3YjA2YTIyODY5MzU4YTZkYzJiZjM3ZjQwMTNk
NTVlNTQ1ZjBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ2hlY2tlZFB0ci5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0NoZWNrZWRQdHIuaApAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVCogb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRy
ID09IG90aGVyOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBvcGVyYXRvcj09KFUq
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBvdGhlcjsgfQogCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENoZWNrZWRQdHImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBv
dGhlci5tX3B0cjsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDaGVja2VkUHRyJikgY29u
c3QgPSBkZWZhdWx0OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJUeXBlLCB0eXBlbmFt
ZSBPdGhlclB0clRyYWl0cz4KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2hlY2tlZFB0cjxP
dGhlclR5cGUsIE90aGVyUHRyVHJhaXRzPiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fcHRyID09
IG90aGVyLm1fcHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVj
dG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db25jdXJyZW50VmVjdG9yLmgKaW5kZXggODg0ZWQ3MzIz
Mzc2MWEyOWZiNDk2ZjBhZDA5ODk2NzU0NWU3MDM0OC4uZjFlN2ZmN2NiMjNlNzVjZDgxMGRjMjk1
ZWM2ZmZmMjBmNTk4YjM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29uY3VycmVudFZl
Y3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbmN1cnJlbnRWZWN0b3IuaApAQCAtNTksMTEg
KzU5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4
ICYmICZtX3ZlY3RvciA9PSAmb3RoZXIubV92ZWN0b3I7CiAgICAgfQogCi0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2luZGV4ICE9IG90aGVyLm1faW5kZXggfHwgJm1fdmVjdG9yICE9ICZvdGhlci5tX3ZlY3Rv
cjsKLSAgICB9Ci0KICAgICBDb25jdXJyZW50VmVjdG9ySXRlcmF0b3ImIG9wZXJhdG9yPShjb25z
dCBDb25jdXJyZW50VmVjdG9ySXRlcmF0b3I8VCwgU2VnbWVudFNpemU+JiBvdGhlcikKICAgICB7
CiAgICAgICAgIG1fdmVjdG9yID0gb3RoZXIubV92ZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9Db3VudGluZ0xvY2suaCBiL1NvdXJjZS9XVEYvd3RmL0NvdW50aW5nTG9jay5oCmlu
ZGV4IGM3ZGIwNWUxMWE2ODkwNjliMjU2NjliOWI0OTczMDEzNTkzNjFjMTcuLjUxOTNjYjAzNjI1
OTUxNTIwODdkYTg4MWYwMmEyMGRiYWMwNzYwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0NvdW50aW5nTG9jay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvdW50aW5nTG9jay5oCkBAIC0x
MTUsOCArMTE1LDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV92YWx1ZTsgfQogICAgICAgICAKLSAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV92
YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBD
b3VudCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgIT0gb3RoZXIubV92YWx1ZTsgfQor
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ291bnQmKSBjb25zdCA9IGRlZmF1bHQ7CiAg
ICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb3VudGluZ0xvY2s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRhUmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9E
YXRhUmVmLmgKaW5kZXggYTI0ZjJmMjhkNTkzODQzNWE3YWYyNTkzN2ZmNDk1MDRjZTAwOTU2OS4u
OTRlNTJkNWVkYTA2NTQyYTlkMDI4NmI1MmUxNjQwNWI2MDZhZjViMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRGF0YVJlZi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0RhdGFSZWYuaApAQCAt
ODgsMTEgKzg4LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9kYXRhLnB0cigpID09IG90
aGVyLm1fZGF0YS5wdHIoKSB8fCBtX2RhdGEuZ2V0KCkgPT0gb3RoZXIubV9kYXRhLmdldCgpOwog
ICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEYXRhUmVmJiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KIHByaXZh
dGU6CiAgICAgUmVmPFQ+IG1fZGF0YTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9E
YXRlTWF0aC5oIGIvU291cmNlL1dURi93dGYvRGF0ZU1hdGguaAppbmRleCAwN2RkZjM4NTQ2MzNj
YjVlNGNhOTY3OTM1OWMwNDhmMTMzOTVlNGFiLi4wZDdhNmIxMDdlYWQ2NjNkNTJlYjdkODYyMTM3
YmNlMmUxMGFmYmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EYXRlTWF0aC5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0RhdGVNYXRoLmgKQEAgLTY2LDE1ICs2Niw3IEBAIHN0cnVjdCBMb2Nh
bFRpbWVPZmZzZXQgewogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
TG9jYWxUaW1lT2Zmc2V0JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpc0RT
VCA9PSBvdGhlci5pc0RTVCAmJiBvZmZzZXQgPT0gb3RoZXIub2Zmc2V0OwotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBMb2NhbFRpbWVPZmZzZXQmIG90aGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIGlzRFNUICE9IG90aGVyLmlzRFNUIHx8IG9mZnNldCAhPSBvdGhl
ci5vZmZzZXQ7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMb2NhbFRpbWVPZmZz
ZXQmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBib29sIGlzRFNUIHsgZmFsc2UgfTsKICAgICBp
bnQgb2Zmc2V0IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGVxdWUuaCBiL1Nv
dXJjZS9XVEYvd3RmL0RlcXVlLmgKaW5kZXggYzk1MjQyYjU4OGZmNjFhMGUwY2ExZjI0NGY3Mjdi
NWFlNzY5MGQ4ZS4uNDNkZWUwN2JlYTM3N2MxM2VjNTliNTFiNWNhZWFhMTNhYWI4ZTkwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvRGVxdWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9EZXF1
ZS5oCkBAIC0yMDEsNyArMjAxLDYgQEAgcHVibGljOgogICAgIFQqIG9wZXJhdG9yLT4oKSBjb25z
dCB7IHJldHVybiBCYXNlOjphZnRlcigpOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
SXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBCYXNlOjppc0VxdWFsKG90aGVyKTsgfQot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
ICFCYXNlOjppc0VxdWFsKG90aGVyKTsgfQogCiAgICAgSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7
IEJhc2U6OmluY3JlbWVudCgpOyByZXR1cm4gKnRoaXM7IH0KICAgICAvLyBwb3N0Zml4ICsrIGlu
dGVudGlvbmFsbHkgb21pdHRlZApAQCAtMjM2LDcgKzIzNSw2IEBAIHB1YmxpYzoKICAgICBjb25z
dCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gQmFzZTo6YWZ0ZXIoKTsgfQogCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gQmFz
ZTo6aXNFcXVhbChvdGhlcik7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3Im
IG90aGVyKSBjb25zdCB7IHJldHVybiAhQmFzZTo6aXNFcXVhbChvdGhlcik7IH0KIAogICAgIEl0
ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyBCYXNlOjppbmNyZW1lbnQoKTsgcmV0dXJuICp0aGlzOyB9
CiAgICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5IG9taXR0ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0VtYmVkZGVkRml4ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0VtYmVk
ZGVkRml4ZWRWZWN0b3IuaAppbmRleCA0ZGZiNzk2MzRiZDg2NmI0NDQ4YTIxZDg3NmIyMWQ4NTll
OTdlYjMwLi41YTA2NDhhMGU1ODcxMjE5NjZmYTViMzYwZmNmMjQ0YTRhYTk3OTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oCkBAIC03MiwxMSArNzIsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBjcmVhdGUoQmFzZTo6YmVnaW4oKSwgQmFzZTo6ZW5kKCkpOwogICAgIH0K
IAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbWJlZGRlZEZpeGVkVmVjdG9yJiBvdGhlcikg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0K
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRW1iZWRkZWRGaXhlZFZlY3RvciYgb3RoZXIpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoQmFzZTo6c2l6ZSgpICE9IG90aGVyLnNpemUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0V4cGVjdGVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9FeHBl
Y3RlZC5oCmluZGV4IDc0NzJmZmFhMjIyY2RjZmE1NDQ5MTQzYzMzNmI0NzgxZGNkMDRhN2QuLjFl
MDQxYjRmMzQ5YTNjMjc0MGJhOTFlYWJmOWMxNGZiNzMxMDRmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL0V4cGVjdGVkLmgKKysrIGIvU291cmNlL1dURi93dGYvRXhwZWN0ZWQuaApAQCAt
NTU5LDE5ICs1NTksOSBAQCBwdWJsaWM6CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBF
PiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB4LCBjb25z
dCBleHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gYm9vbCh4KSA9PSBib29sKHkpICYmICh4ID8g
eC52YWx1ZSgpID09IHkudmFsdWUoKSA6IHguZXJyb3IoKSA9PSB5LmVycm9yKCkpOyB9Ci10ZW1w
bGF0ZTxjbGFzcyBULCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGV4
cGVjdGVkPFQsIEU+JiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkgeyByZXR1cm4gISh4ID09
IHkpOyB9Ci0KIHRlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgZXhwZWN0ZWQ8dm9pZCwgRT4mIHgsIGNvbnN0IGV4cGVjdGVkPHZvaWQsIEU+JiB5KSB7IHJl
dHVybiBib29sKHgpID09IGJvb2woeSkgJiYgKHggPyB0cnVlIDogeC5lcnJvcigpID09IHkuZXJy
b3IoKSk7IH0KLQogdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4geCA/
ICp4ID09IHkgOiBmYWxzZTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHBy
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB4LCBjb25zdCBleHBlY3RlZDxULCBFPiYgeSkgeyBy
ZXR1cm4geSA/IHggPT0gKnkgOiBmYWxzZTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3Qg
VCYgeSkgeyByZXR1cm4geCA/ICp4ICE9IHkgOiB0cnVlOyB9Ci10ZW1wbGF0ZTxjbGFzcyBULCBj
bGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHgsIGNvbnN0IGV4cGVj
dGVkPFQsIEU+JiB5KSB7IHJldHVybiB5ID8geCAhPSAqeSA6IHRydWU7IH0KLQogdGVtcGxhdGU8
Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBleHBlY3Rl
ZDxULCBFPiYgeCwgY29uc3QgdW5leHBlY3RlZDxFPiYgeSkgeyByZXR1cm4geCA/IGZhbHNlIDog
eC5lcnJvcigpID09IHkudmFsdWUoKTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29u
c3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1bmV4cGVjdGVkPEU+JiB4LCBjb25zdCBleHBl
Y3RlZDxULCBFPiYgeSkgeyByZXR1cm4geSA/IGZhbHNlIDogeC52YWx1ZSgpID09IHkuZXJyb3Io
KTsgfQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRT4gY29uc3RleHByIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBleHBlY3RlZDxULCBFPiYgeCwgY29uc3QgdW5leHBlY3RlZDxFPiYgeSkgeyByZXR1
cm4geCA/IHRydWUgOiB4LmVycm9yKCkgIT0geS52YWx1ZSgpOyB9Ci10ZW1wbGF0ZTxjbGFzcyBU
LCBjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVuZXhwZWN0ZWQ8RT4m
IHgsIGNvbnN0IGV4cGVjdGVkPFQsIEU+JiB5KSB7IHJldHVybiB5ID8gdHJ1ZSA6IHgudmFsdWUo
KSAhPSB5LmVycm9yKCk7IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRT4gdm9p
ZCBzd2FwKGV4cGVjdGVkPFQsIEU+JiB4LCBleHBlY3RlZDxULCBFPiYgeSkgeyB4LnN3YXAoeSk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4IGI1MWU3Y2RmOGJiNTQ0MTQxODZlZDQwMDhi
NmU4ZGVmMDE3NmI1OGQuLmE1NGI5MDI0MjJiZjliNTg2ZjI1NDJjODFjNTc2MDA2ODUyODY5MDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTI5MiwxMSArMjkyLDYgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IEZhc3RCaXRWZWN0b3JJbXBsJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0gICAgCiAgICAgYm9vbCBhdChzaXplX3QgaW5kZXgp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gYXRJbXBsKGluZGV4KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2Mu
aAppbmRleCAxMjY1MjY2ZDE5NWQxZjg4OWJhYjg3MDM1NDA2NGM3ODE3NmZmNGUzLi45NDNjZmQ3
NTQ3NDA4MzY4OTkzYmY2NGU5ZjFjMmY3MWQzMTA5YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCkBAIC0y
MTMsNyArMjEzLDYgQEAgcHVibGljOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGYXN0QWxsb2NhdG9yPFQ+JiwgY29u
c3QgRmFzdEFsbG9jYXRvcjxVPiYpIHsgcmV0dXJuIHRydWU7IH0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRmFzdEFsbG9jYXRv
cjxUPiYsIGNvbnN0IEZhc3RBbGxvY2F0b3I8VT4mKSB7IHJldHVybiBmYWxzZTsgfQogCiBzdHJ1
Y3QgRmFzdE1hbGxvYyB7CiAgICAgc3RhdGljIHZvaWQqIG1hbGxvYyhzaXplX3Qgc2l6ZSkgeyBy
ZXR1cm4gZmFzdE1hbGxvYyhzaXplKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRml4
ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKaW5kZXggYjNhYWRhMTIx
YjY3MzUxMTc3MzQ3MmVlZWNhZDRiZDBhMGQwNGQzZi4uNDQ5OTdhNWM2NjAyYjZhNTM4YTcyMGNl
ZDRiMWRhNWNmN2MxYTYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3Iu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCkBAIC0xMzQsMTEgKzEzNCw2IEBA
IHB1YmxpYzoKICAgICAgICAgbV9zdG9yYWdlLT5maWxsKHZhbCk7CiAgICAgfQogCi0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEZpeGVkVmVjdG9yPFQ+JiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgRml4ZWRWZWN0b3I8VD4mIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKCFtX3N0b3JhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBi
L1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaAppbmRleCAzY2U3NjEyNDJjMzJlYzE2OTRjNjVhNzdl
NzQwZTljNjY5M2MzYmI0Li4zNjQ4NzJhMjAxYzZkYmVmZmM5N2U0YzkwYzY1NjFiZjU5ZDA3NGI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNlL1dURi93
dGYvRm9yd2FyZC5oCkBAIC0xNDksNiArMTQ5LDcgQEAgdXNpbmcgV1RGOjpSZWZQdHI7CiB1c2lu
ZyBXVEY6OlJldGFpblB0cjsKIHVzaW5nIFdURjo6U0hBMTsKIHVzaW5nIFdURjo6U2NvcGVkTGFt
YmRhOwordXNpbmcgV1RGOjpTZWNvbmRzOwogdXNpbmcgV1RGOjpTdHJpbmc7CiB1c2luZyBXVEY6
OlN0cmluZ0J1ZmZlcjsKIHVzaW5nIFdURjo6U3RyaW5nQnVpbGRlcjsKQEAgLTE2MSw2ICsxNjIs
NyBAQCB1c2luZyBXVEY6OlRleHRTdHJlYW07CiB1c2luZyBXVEY6OlVSTDsKIHVzaW5nIFdURjo6
VW5pcXVlUmVmOwogdXNpbmcgV1RGOjpWZWN0b3I7Cit1c2luZyBXVEY6OldhbGxUaW1lOwogdXNp
bmcgV1RGOjpXZWFrUHRyOwogCiB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBFPiB1c2luZyBFeHBl
Y3RlZCA9IHN0ZDo6ZXhwZXJpbWVudGFsOjpleHBlY3RlZDxULCBFPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0dlbmVyaWNUaW1lTWl4aW4uaCBiL1NvdXJjZS9XVEYvd3RmL0dlbmVyaWNU
aW1lTWl4aW4uaAppbmRleCA0MTIwOTRiNTdjMGU0ZDUzYjRhNmUzMjJlYTc0NDg1YTA3NjZhYzhm
Li45NDY2OWM5M2VjNDcyODc2MzgzYjkxOTg1MTQzZTY5Njg5ZDk0NThjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9HZW5lcmljVGltZU1peGluLmgKKysrIGIvU291cmNlL1dURi93dGYvR2Vu
ZXJpY1RpbWVNaXhpbi5oCkBAIC04NCwzNSArODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBTZWNvbmRzKG1fdmFsdWUgLSBvdGhlci5tX3ZhbHVlKTsKICAgICB9CiAKLSAgICBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdlbmVyaWNUaW1lTWl4aW4mIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKLSAgICB9Ci0K
LSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEdlbmVyaWNUaW1lTWl4aW4mIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgIT0gb3RoZXIubV92YWx1
ZTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoY29uc3QgR2VuZXJpY1Rp
bWVNaXhpbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA8IG90
aGVyLm1fdmFsdWU7Ci0gICAgfQotCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KGNvbnN0
IEdlbmVyaWNUaW1lTWl4aW4mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
dmFsdWUgPiBvdGhlci5tX3ZhbHVlOwotICAgIH0KLQotICAgIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPD0oY29uc3QgR2VuZXJpY1RpbWVNaXhpbiYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gbV92YWx1ZSA8PSBvdGhlci5tX3ZhbHVlOwotICAgIH0KLQotICAgIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPj0oY29uc3QgR2VuZXJpY1RpbWVNaXhpbiYgb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA+PSBvdGhlci5tX3ZhbHVlOwotICAgIH0KKyAg
ICBmcmllbmQgYXV0byBvcGVyYXRvcjw9Pihjb25zdCBHZW5lcmljVGltZU1peGluJiwgY29uc3Qg
R2VuZXJpY1RpbWVNaXhpbiYpID0gZGVmYXVsdDsKIAogICAgIERlcml2ZWRUaW1lIGlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaEl0ZXJh
dG9ycy5oIGIvU291cmNlL1dURi93dGYvSGFzaEl0ZXJhdG9ycy5oCmluZGV4IDZhYTAyMWE1NDkx
YzU5YTY3OTY3MTk3ZWYyOThjYWRiOGJjYTk2ZTEuLjYzMjY2MGNjZGY3ZDI0NjVkYmNlY2NiMjVl
NGVhMDM3MTI4MjU4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hJdGVyYXRvcnMu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoSXRlcmF0b3JzLmgKQEAgLTI5LDE3ICsyOSwxMyBA
QAogCiBuYW1lc3BhY2UgV1RGIHsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleVR5cGVBcmcs
IHR5cGVuYW1lIFZhbHVlVHlwZUFyZz4KLSAgICBzdHJ1Y3QgS2V5VmFsdWVQYWlyOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleVR5cGVBcmcsIHR5cGVuYW1lIFZhbHVlVHlwZUFyZz4gc3RydWN0
IEtleVZhbHVlUGFpcjsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5
cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVDb25z
dEtleXNJdGVyYXRvcjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBl
bmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RW
YWx1ZXNJdGVyYXRvcjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVGFibGVUeXBlLCB0eXBl
bmFtZSBLZXlUeXBlLCB0eXBlbmFtZSBNYXBwZWRUeXBlPiBzdHJ1Y3QgSGFzaFRhYmxlS2V5c0l0
ZXJhdG9yOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIEtl
eVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRv
cjsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIFZhbHVl
VHlwZT4gc3RydWN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEhhc2hUYWJsZVR5cGUsIHR5cGVuYW1lIFZhbHVlVHlwZT4gc3RydWN0IEhhc2hU
YWJsZUl0ZXJhdG9yQWRhcHRlcjsKLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUYWJsZVR5
cGUsIHR5cGVuYW1lIEtleVR5cGUsIHR5cGVuYW1lIE1hcHBlZFR5cGU+IHN0cnVjdCBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBlLCBLZXlWYWx1ZVBhaXI8S2V5VHlw
ZSwgTWFwcGVkVHlwZT4+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHVzaW5nIGl0ZXJhdG9yX2Nh
dGVnb3J5ID0gc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZzsKQEAgLTk0LDcgKzkwLDggQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgIEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlciYgb3BlcmF0b3Ir
KygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsgfQogICAgICAgICAvLyBwb3N0Zml4ICsrIGlu
dGVudGlvbmFsbHkgb21pdHRlZAogCi0gICAgICAgIG9wZXJhdG9yIEhhc2hUYWJsZUNvbnN0SXRl
cmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4oKSB7CisgICAgICAgIG9wZXJh
dG9yIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlw
ZT4oKSBjb25zdAorICAgICAgICB7CiAgICAgICAgICAgICB0eXBlbmFtZSBIYXNoVGFibGVUeXBl
Ojpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOwogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAg
ICAgIH0KQEAgLTE3NSw3ICsxNzIsOCBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgSGFzaFRh
YmxlS2V5c0l0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyArK21faW1wbDsgcmV0dXJuICp0aGlzOyB9
CiAgICAgICAgIC8vIHBvc3RmaXggKysgaW50ZW50aW9uYWxseSBvbWl0dGVkCiAKLSAgICAgICAg
b3BlcmF0b3IgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0b3I8SGFzaFRhYmxlVHlwZSwgS2V5VHlw
ZSwgTWFwcGVkVHlwZT4oKSB7CisgICAgICAgIG9wZXJhdG9yIEhhc2hUYWJsZUNvbnN0S2V5c0l0
ZXJhdG9yPEhhc2hUYWJsZVR5cGUsIEtleVR5cGUsIE1hcHBlZFR5cGU+KCkgY29uc3QKKyAgICAg
ICAgewogICAgICAgICAgICAgQ29uc3RJdGVyYXRvciBpID0gbV9pbXBsOwogICAgICAgICAgICAg
cmV0dXJuIGk7CiAgICAgICAgIH0KQEAgLTIwNSw3ICsyMDMsOCBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgSGFzaFRhYmxlVmFsdWVzSXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7ICsrbV9pbXBs
OyByZXR1cm4gKnRoaXM7IH0KICAgICAgICAgLy8gcG9zdGZpeCArKyBpbnRlbnRpb25hbGx5IG9t
aXR0ZWQKIAotICAgICAgICBvcGVyYXRvciBIYXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yPEhh
c2hUYWJsZVR5cGUsIEtleVR5cGUsIE1hcHBlZFR5cGU+KCkgeworICAgICAgICBvcGVyYXRvciBI
YXNoVGFibGVDb25zdFZhbHVlc0l0ZXJhdG9yPEhhc2hUYWJsZVR5cGUsIEtleVR5cGUsIE1hcHBl
ZFR5cGU+KCkgY29uc3QKKyAgICAgICAgewogICAgICAgICAgICAgQ29uc3RJdGVyYXRvciBpID0g
bV9pbXBsOwogICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KQEAgLTIxOSw0NiArMjE4
LDIyIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2lt
cGw7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoVGFibGVDb25z
dEtleXNJdGVyYXRvcjxULCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RLZXlzSXRlcmF0
b3I8VCwgVSwgVj4mIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2lt
cGw7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgVj4KICAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVDb25z
dFZhbHVlc0l0ZXJhdG9yPFQsIFUsIFY+JiBhLCBjb25zdCBIYXNoVGFibGVDb25zdFZhbHVlc0l0
ZXJhdG9yPFQsIFUsIFY+JiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIu
bV9pbXBsOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFY+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxl
Q29uc3RWYWx1ZXNJdGVyYXRvcjxULCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RWYWx1
ZXNJdGVyYXRvcjxULCBVLCBWPiYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLm1faW1wbCAh
PSBiLm1faW1wbDsKLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
LCB0eXBlbmFtZSBWPgogICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hU
YWJsZUtleXNJdGVyYXRvcjxULCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxlS2V5c0l0ZXJhdG9y
PFQsIFUsIFY+JiBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBs
OwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFY+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaFRhYmxlS2V5c0l0
ZXJhdG9yPFQsIFUsIFY+JiBhLCBjb25zdCBIYXNoVGFibGVLZXlzSXRlcmF0b3I8VCwgVSwgVj4m
IGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7Ci0gICAgfQot
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KICAgICAg
ICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvcjxU
LCBVLCBWPiYgYSwgY29uc3QgSGFzaFRhYmxlVmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGIpCiAg
ICAgewogICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLSAgICAgICAgaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoVGFibGVWYWx1ZXNJdGVyYXRvcjxULCBVLCBW
PiYgYSwgY29uc3QgSGFzaFRhYmxlVmFsdWVzSXRlcmF0b3I8VCwgVSwgVj4mIGIpCi0gICAgewot
ICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7Ci0gICAgfQotCiB9IC8vIG5hbWVz
cGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaCBiL1NvdXJjZS9X
VEYvd3RmL0hhc2hNYXAuaAppbmRleCAyNmFkZGM0MWU0NzUxNjhiODExODc1NWE2NDM0YjFlMDYz
ZjBkOGE5Li5lMmFhMWEyODEzYjNhNjU4NDBlMWJjMWRhNWU2NmM3NTAxOTk3NWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaE1h
cC5oCkBAIC02MDYsMTIgKzYwNiw2IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBIYXNoTWFwPFQs
IFUsIFYsIFcsIFgsIFk+JiBhLCBjb25zdCBIYXNoTWFwPFQsIFUsIFYsIFcsIFgsCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1l
IFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+Ci1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEhhc2hNYXA8VCwgVSwgViwgVywgWCwgWT4mIGEsIGNvbnN0IEhhc2hNYXA8
VCwgVSwgViwgVywgWCwgWT4mIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6SGFzaE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAppbmRleCA0NmU1
YmI5NWI4YTE2MmE5MzNhMWUyNTczZWRkZTY3MGQ0NDUwMjE4Li41NjdjMTc3NWI1NjM3YTQ2MmNm
ODhiZThhY2QxZWJmY2IxZDI4ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0
LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCkBAIC0xNDIsOSArMTQyLDYgQEAgcHVi
bGljOgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJDb2xsZWN0aW9uPgogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBPdGhlckNvbGxlY3Rpb24mKSBjb25zdDsKLSAgICAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBPdGhlckNvbGxlY3Rpb24+Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IE90aGVyQ29sbGVjdGlvbiYpIGNvbnN0OwogCiAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCkg
Y29uc3Q7CiAKQEAgLTQyMiwxMyArNDE5LDYgQEAgaW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBW
LCBXPjo6b3BlcmF0b3I9PShjb25zdCBPdGhlckNvbGxlY3Rpb24mIG90aGVyQ29sbGVjdGkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgViwgdHlwZW5hbWUgVz4KLXRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQ29sbGVjdGlvbj4K
LWlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgViwgVz46Om9wZXJhdG9yIT0oY29uc3QgT3RoZXJD
b2xsZWN0aW9uJiBvdGhlckNvbGxlY3Rpb24pIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXJDb2xsZWN0aW9uKTsKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVz4KIHZvaWQgSGFzaFNldDxULCBVLCBWLCBXPjo6YWRk
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPGNvbnN0IFZhbHVl
VHlwZT4+IGxpc3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCBi
L1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IDJlNjQ0MTRmN2FjMDYzYjFjOWMyZmI1
NDA3ZmYxYWI1Y2Y5ZDM1NDEuLjE2MTM3OWYyNzljZWQ5ZDQ1NjBhMDBmZDAxYTI3ODg1ZjA4Y2Y0
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0hhc2hUYWJsZS5oCkBAIC0yMDUsMTkgKzIwNSwxMCBAQCBERUNMQVJFX0FMTE9DQVRP
Ul9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAgICAgICAgICAgY2hlY2tWYWxp
ZGl0eShvdGhlcik7CiAgICAgICAgICAgICByZXR1cm4gbV9wb3NpdGlvbiA9PSBvdGhlci5tX3Bv
c2l0aW9uOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjb25zdF9p
dGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNoZWNrVmFsaWRp
dHkob3RoZXIpOwotICAgICAgICAgICAgcmV0dXJuIG1fcG9zaXRpb24gIT0gb3RoZXIubV9wb3Np
dGlvbjsKLSAgICAgICAgfQogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3Im
IG90aGVyKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gKnRoaXMgPT0gc3Rh
dGljX2Nhc3Q8Y29uc3RfaXRlcmF0b3I+KG90aGVyKTsKICAgICAgICAgfQotICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gKnRoaXMgIT0gc3RhdGljX2Nhc3Q8Y29uc3RfaXRlcmF0b3I+KG90aGVy
KTsKLSAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBjaGVja1ZhbGlkaXR5
KCkgY29uc3QKQEAgLTI5MCw5ICsyODEsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBf
SURFTlRJRklFUihIYXNoVGFibGUpOwogCiAgICAgICAgIC8vIENvbXBhcmlzb24uCiAgICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1f
aXRlcmF0b3IgPT0gb3RoZXIubV9pdGVyYXRvcjsgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yICE9IG90aGVy
Lm1faXRlcmF0b3I7IH0KICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNvbnN0X2l0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciA9PSBvdGhlcjsgfQotICAgICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX2l0ZXJhdG9yICE9IG90aGVyOyB9CiAKICAgICAgICAgb3BlcmF0b3IgY29uc3RfaXRl
cmF0b3IoKSBjb25zdCB7IHJldHVybiBtX2l0ZXJhdG9yOyB9CiAKQEAgLTMwNSw4ICsyOTQsOCBA
QCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJiBr
ZXkpIHsgcmV0dXJuIEhhc2hGdW5jdGlvbnM6Omhhc2goa2V5KTsgfQogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBUJiBhLCBj
b25zdCBVJiBiKSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjplcXVhbChhLCBiKTsgfQogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPiBzdGF0aWMgdm9p
ZCB0cmFuc2xhdGUoVCYgbG9jYXRpb24sIGNvbnN0IFUmLCBWJiYgdmFsdWUpCi0gICAgICAgIHsg
Ci0gICAgICAgICAgICBWYWx1ZVRyYWl0czo6YXNzaWduVG9FbXB0eShsb2NhdGlvbiwgc3RkOjpm
b3J3YXJkPFY+KHZhbHVlKSk7IAorICAgICAgICB7CisgICAgICAgICAgICBWYWx1ZVRyYWl0czo6
YXNzaWduVG9FbXB0eShsb2NhdGlvbiwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7CiAgICAgICAg
IH0KICAgICB9OwogCkBAIC00MjIsOSArNDExLDkgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9I
RUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICNlbmRpZgogCiAgICAgICAgIEhhc2hUYWJsZSgp
OwotICAgICAgICB+SGFzaFRhYmxlKCkgCisgICAgICAgIH5IYXNoVGFibGUoKQogICAgICAgICB7
Ci0gICAgICAgICAgICBpbnZhbGlkYXRlSXRlcmF0b3JzKHRoaXMpOyAKKyAgICAgICAgICAgIGlu
dmFsaWRhdGVJdGVyYXRvcnModGhpcyk7CiAgICAgICAgICAgICBpZiAobV90YWJsZSkKICAgICAg
ICAgICAgICAgICBkZWFsbG9jYXRlVGFibGUobV90YWJsZSk7CiAjaWYgQ0hFQ0tfSEFTSFRBQkxF
X1VTRV9BRlRFUl9ERVNUUlVDVElPTgpAQCAtMTA3OCw3ICsxMDY3LDcgQEAgREVDTEFSRV9BTExP
Q0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICB9CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5
cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRz
PgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPgogICAgIGF1
dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRz
LCBLZXlUcmFpdHM+OjpmaW5kKGNvbnN0IFQmIGtleSkgLT4gaXRlcmF0b3IKICAgICB7CiAgICAg
ICAgIGlmICghbV90YWJsZSkKQEAgLTEwOTIsNyArMTA4MSw3IEBAIERFQ0xBUkVfQUxMT0NBVE9S
X1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFjdG9yLCB0eXBlbmFt
ZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtleVRyYWl0cz4KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+IAorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4KICAgICBhdXRvIEhh
c2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRyYWl0cywgS2V5
VHJhaXRzPjo6ZmluZChjb25zdCBUJiBrZXkpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCiAgICAg
ewogICAgICAgICBpZiAoIW1fdGFibGUpCkBAIC0xMTA2LDcgKzEwOTUsNyBAQCBERUNMQVJFX0FM
TE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNoVGFibGUpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiAK
KyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIFQ+CiAgICAg
Ym9vbCBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46OmNvbnRhaW5zKGNvbnN0IFQmIGtleSkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmICghbV90YWJsZSkKQEAgLTE2MTcsNyArMTYwNiw4IEBAIERFQ0xBUkVfQUxMT0NBVE9S
X1dJVEhfSEVBUF9JREVOVElGSUVSKEhhc2hUYWJsZSk7CiAgICAgICAgIEhhc2hUYWJsZUl0ZXJh
dG9yQWRhcHRlciYgb3BlcmF0b3IrKygpIHsgKyttX2ltcGw7IHJldHVybiAqdGhpczsgfQogICAg
ICAgICAvLyBwb3N0Zml4ICsrIGludGVudGlvbmFsbHkgb21pdHRlZAogCi0gICAgICAgIG9wZXJh
dG9yIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhhc2hUYWJsZVR5cGUsIFZhbHVlVHlw
ZT4oKSB7CisgICAgICAgIG9wZXJhdG9yIEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPEhh
c2hUYWJsZVR5cGUsIFZhbHVlVHlwZT4oKSBjb25zdAorICAgICAgICB7CiAgICAgICAgICAgICB0
eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpjb25zdF9pdGVyYXRvciBpID0gbV9pbXBsOwogICAgICAg
ICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KQEAgLTE2MzEsNDkgKzE2MjEsMTggQEAgREVDTEFS
RV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICAgICAgcmV0
dXJuIGEubV9pbXBsID09IGIubV9pbXBsOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBIYXNoVGFi
bGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVy
YXRvckFkYXB0ZXI8VCwgVT4mIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0g
Yi5tX2ltcGw7Ci0gICAgfQotCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
ICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRl
cjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBiKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGEubV9pbXBsID09IGIubV9pbXBsOwogICAgIH0KIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGEsIGNvbnN0IEhhc2hUYWJs
ZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLm1faW1w
bCAhPSBiLm1faW1wbDsKLSAgICB9Ci0KLSAgICAvLyBBbGwgNCBjb21iaW5hdGlvbnMgb2YgPT0s
ICE9IGFuZCBDb25zdCxub24gY29uc3QuCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4KICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRl
cmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwg
VT4mIGIpCiAgICAgewogICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7CiAgICAg
fQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgICBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBh
LCBjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCi0gICAgewotICAgICAg
ICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhh
c2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVy
YXRvckFkYXB0ZXI8VCwgVT4mIGIpCi0gICAgewotICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0g
Yi5tX2ltcGw7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
LSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRl
cjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIp
Ci0gICAgewotICAgICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7Ci0gICAgfQotCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIAogI2luY2x1ZGUgPHd0Zi9IYXNoSXRlcmF0b3JzLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRleFNldC5oIGIvU291cmNlL1dURi93dGYvSW5kZXhT
ZXQuaAppbmRleCAxNjM2NTI3NmY0OWU4NTE0YTY1NDdjNjRkZGQyMzQ1ZWE2NGIzYTM1Li5hNjIw
MWExMmM1Y2M4ZjczZGFhYTU0MjMzYmQyNDNhM2ViNDEyMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9JbmRleFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0luZGV4U2V0LmgKQEAgLTEy
MCwxMSArMTIwLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBtX2l0ZXIgPT0g
b3RoZXIubV9pdGVyOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgICAgIH0KLQogICAgICAg
ICBwcml2YXRlOgogICAgICAgICAgICAgY29uc3QgQ29sbGVjdGlvblR5cGUqIG1fY29sbGVjdGlv
bjsKICAgICAgICAgICAgIEJpdFZlY3Rvcjo6aXRlcmF0b3IgbV9pdGVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggYi9Tb3VyY2UvV1RGL3d0
Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaAppbmRleCBkN2ExMmJjODdkNTUxMjc3Y2RjZTY3
ZDFhODI5MzFjODdhZDlhMDAxLi45NTYxZTdlYTcxMmUzNWY0NzMwYTRmZDMwN2U5MmVmYjIxNjRi
N2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3Iu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaApAQCAtNjIs
MTEgKzYyLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2lu
ZGV4OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmRleGVkQ29udGFpbmVy
SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBmaW5kTmV4dCh1bnNpZ25l
ZCBpbmRleCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnNlcnRpb24uaCBi
L1NvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCmluZGV4IDRmMWQzNzRkZmQ0NDkxN2ZhNmFlOWUz
NDI0ZmQ3Y2UxYmE5NjQyYTkuLmY0Y2JiOTZhYThmYmM1ZDAwMjMyOTE3NDVkOTY2MTYxNDJiMzJj
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0luc2VydGlvbi5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0luc2VydGlvbi5oCkBAIC00NCwxMCArNDQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
VCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgIFQmIGVsZW1lbnQo
KSB7IHJldHVybiBtX2VsZW1lbnQ7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBJ
bnNlcnRpb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW5kZXggPCBv
dGhlci5tX2luZGV4OwotICAgIH0KKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9Pihjb25zdCBJ
bnNlcnRpb24mIGEsIGNvbnN0IEluc2VydGlvbiYgYikgeyByZXR1cm4gYS5tX2luZGV4IDw9PiBi
Lm1faW5kZXg7IH0KICAgICAKIHByaXZhdGU6CiAgICAgc2l6ZV90IG1faW5kZXggeyAwIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbnQxMjguaCBiL1NvdXJjZS9XVEYvd3RmL0ludDEy
OC5oCmluZGV4IDFhZmRjOWNlMTZlMjlhYmY2YjYxZWMzNTlmNTJhN2U1ZjgzZGEyZTUuLjU0M2Jk
NjQyNDZiMjQ2N2E1MWNmOGM4MmVjODVmZDZiMzIzNGE0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0ludDEyOC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ludDEyOC5oCkBAIC02ODQsOCAr
Njg0LDYgQEAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShVSW50MTI4SW1wbCBsaHMsIFVJbnQx
MjhJbXBsIHJocykgewogICAgICAgICAgIFVJbnQxMjhIaWdoNjQobGhzKSA9PSBVSW50MTI4SGln
aDY0KHJocykpOwogfQogCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KFVJbnQxMjhJbXBsIGxo
cywgVUludDEyOEltcGwgcmhzKSB7IHJldHVybiAhKGxocyA9PSByaHMpOyB9Ci0KIGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPChVSW50MTI4SW1wbCBsaHMsIFVJbnQxMjhJbXBsIHJocykgewogICBy
ZXR1cm4gKFVJbnQxMjhIaWdoNjQobGhzKSA9PSBVSW50MTI4SGlnaDY0KHJocykpCiAgICAgICAg
ICAgICAgPyAoVUludDEyOExvdzY0KGxocykgPCBVSW50MTI4TG93NjQocmhzKSkKQEAgLTk0MSw5
ICs5MzksNiBAQCBpbmxpbmUgSW50MTI4SW1wbCYgSW50MTI4SW1wbDo6b3BlcmF0b3I+Pj0oaW50
IGFtb3VudCkgewogICByZXR1cm4gKnRoaXM7CiB9CiAKLS8vIEZvcndhcmQgZGVjbGFyYXRpb24g
Zm9yIGNvbXBhcmlzb24gb3BlcmF0b3JzLgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShJbnQx
MjhJbXBsIGxocywgSW50MTI4SW1wbCByaHMpOwotCiBuYW1lc3BhY2UgaW50MTI4X2ludGVybmFs
IHsKIAogLy8gQ2FzdHMgZnJvbSB1bnNpZ25lZCB0byBzaWduZWQgd2hpbGUgcHJlc2VydmluZyB0
aGUgdW5kZXJseWluZyBiaW5hcnkKQEAgLTExMTUsMjQgKzExMTAsMTIgQEAgY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShJbnQxMjhJbXBsIGxocywgSW50MTI4SW1wbCByaHMpIHsKICAgICAgICAg
ICBJbnQxMjhIaWdoNjQobGhzKSA9PSBJbnQxMjhIaWdoNjQocmhzKSk7CiB9CiAKLWNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yIT0oSW50MTI4SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKSB7IHJldHVy
biAhKGxocyA9PSByaHMpOyB9Ci0KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChJbnQxMjhJbXBs
IGxocywgSW50MTI4SW1wbCByaHMpIHsKLSAgcmV0dXJuIChJbnQxMjhIaWdoNjQobGhzKSA9PSBJ
bnQxMjhIaWdoNjQocmhzKSkKLSAgICAgICAgICAgICA/IChJbnQxMjhMb3c2NChsaHMpIDwgSW50
MTI4TG93NjQocmhzKSkKLSAgICAgICAgICAgICA6IChJbnQxMjhIaWdoNjQobGhzKSA8IEludDEy
OEhpZ2g2NChyaHMpKTsKLX0KLQotY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KEludDEyOEltcGwg
bGhzLCBJbnQxMjhJbXBsIHJocykgeworY29uc3RleHByIGF1dG8gb3BlcmF0b3I8PT4oSW50MTI4
SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKSB7CiAgIHJldHVybiAoSW50MTI4SGlnaDY0KGxocykg
PT0gSW50MTI4SGlnaDY0KHJocykpCi0gICAgICAgICAgICAgPyAoSW50MTI4TG93NjQobGhzKSA+
IEludDEyOExvdzY0KHJocykpCi0gICAgICAgICAgICAgOiAoSW50MTI4SGlnaDY0KGxocykgPiBJ
bnQxMjhIaWdoNjQocmhzKSk7CisgICAgICAgICAgICAgPyAoSW50MTI4TG93NjQobGhzKSA8PT4g
SW50MTI4TG93NjQocmhzKSkKKyAgICAgICAgICAgICA6IChJbnQxMjhIaWdoNjQobGhzKSA8PT4g
SW50MTI4SGlnaDY0KHJocykpOwogfQogCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KEludDEy
OEltcGwgbGhzLCBJbnQxMjhJbXBsIHJocykgeyByZXR1cm4gIShsaHMgPiByaHMpOyB9Ci0KLWNv
bnN0ZXhwciBib29sIG9wZXJhdG9yPj0oSW50MTI4SW1wbCBsaHMsIEludDEyOEltcGwgcmhzKSB7
IHJldHVybiAhKGxocyA8IHJocyk7IH0KLQogLy8gVW5hcnkgb3BlcmF0b3JzLgogCiBjb25zdGV4
cHIgSW50MTI4SW1wbCBvcGVyYXRvci0oSW50MTI4SW1wbCB2KSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9JbnRlcmZlcmVuY2VHcmFwaC5oIGIvU291cmNlL1dURi93dGYvSW50ZXJmZXJl
bmNlR3JhcGguaAppbmRleCAwNDJmYWRhOWI2MDdkNDkzMmJkNzRkYmEyZmNhMmI2MWYwMzdhYTc1
Li5kZGI5ZGQyY2Y3OTAxN2E1ODY3MWMyNWVjOWM5NzE2ZmE5ZDBhOTI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9JbnRlcmZlcmVuY2VHcmFwaC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0lu
dGVyZmVyZW5jZUdyYXBoLmgKQEAgLTEzNCwxMSArMTM0LDYgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBjb25zdCBJdGVyYWJsZSYgbV9pdGVyYWJs
ZTsKICAgICAgICAgICAgIHVuc2lnbmVkIG1faW5kZXg7CiAgICAgICAgIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9JdGVyYXRvckFkYXB0b3JzLmggYi9Tb3VyY2UvV1RGL3d0Zi9JdGVy
YXRvckFkYXB0b3JzLmgKaW5kZXggYTRlMDdlYmEyOGI4NjNhYmViNDY5MzcyNWM5YjIzM2EyMmYy
M2I0Ny4uMjM5ODVkNTA4NGVjMTgwZDA3M2M0MjJmOWZmZTBiMzk0N2U0NzNjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvSXRlcmF0b3JBZGFwdG9ycy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0l0ZXJhdG9yQWRhcHRvcnMuaApAQCAtOTUsOCArOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtX3RyYW5zZm9ybSgqbV9pdGVyKTsKICAgICB9CiAKLSAgICBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRyYW5zZm9ybUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9p
dGVyID09IG90aGVyLm1faXRlcjsgfQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
VHJhbnNmb3JtSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXIgIT0gb3RoZXIu
bV9pdGVyOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybUl0ZXJhdG9yJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsgfQogCiBwcml2YXRl
OgogICAgIGNvbnN0IFRyYW5zZm9ybSBtX3RyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0tleVZhbHVlUGFpci5oIGIvU291cmNlL1dURi93dGYvS2V5VmFsdWVQYWlyLmgKaW5k
ZXggZmZlYjU3ZjM5ZjBkMDViZWU0ZTZlNmU4MzlhZTU2NGFhMzQyYmRhZC4uZTY3M2YxM2ViYWMz
YjUxMmZmODNlNTFhMWMzMTdhMjJiNDUzZGQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
S2V5VmFsdWVQYWlyLmgKKysrIGIvU291cmNlL1dURi93dGYvS2V5VmFsdWVQYWlyLmgKQEAgLTYw
LDYgKzYwLDggQEAgc3RydWN0IEtleVZhbHVlUGFpciB7CiAgICAgewogICAgIH0KIAorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBLZXlWYWx1ZVBhaXImKSBjb25zdCA9IGRlZmF1bHQ7CisKICAg
ICBLZXlUeXBlIGtleTsKICAgICBWYWx1ZVR5cGUgdmFsdWUgeyB9OwogfTsKQEAgLTcwLDExICs3
Miw2IEBAIGlubGluZSBLZXlWYWx1ZVBhaXI8dHlwZW5hbWUgc3RkOjpkZWNheTxLPjo6dHlwZSwg
dHlwZW5hbWUgc3RkOjpkZWNheTxWPjo6dHlwZT4KICAgICByZXR1cm4gS2V5VmFsdWVQYWlyPHR5
cGVuYW1lIHN0ZDo6ZGVjYXk8Sz46OnR5cGUsIHR5cGVuYW1lIHN0ZDo6ZGVjYXk8Vj46OnR5cGU+
IHsgc3RkOjpmb3J3YXJkPEs+KGtleSksIHN0ZDo6Zm9yd2FyZDxWPih2YWx1ZSkgfTsKIH0KIAot
dGVtcGxhdGU8dHlwZW5hbWUgS2V5VHlwZSwgdHlwZW5hbWUgVmFsdWVUeXBlPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEtleVZhbHVlUGFpcjxLZXlUeXBlLCBWYWx1ZVR5cGU+JiBh
LCBjb25zdCBLZXlWYWx1ZVBhaXI8S2V5VHlwZSwgVmFsdWVUeXBlPiYgYikKLXsKLSAgICByZXR1
cm4gYS5rZXkgPT0gYi5rZXkgJiYgYS52YWx1ZSA9PSBiLnZhbHVlOwotfQotCiB9CiAKIHVzaW5n
IFdURjo6S2V5VmFsdWVQYWlyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTGlrZWx5RGVu
c2VVbnNpZ25lZEludGVnZXJTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0xpa2VseURlbnNlVW5zaWdu
ZWRJbnRlZ2VyU2V0LmgKaW5kZXggNTE0MTZjZWZlYTg4ZTQ5OWE3Yjg1N2NlNWU0ODMxNzdiNWQ3
MWVjNy4uM2Y1Yzg2NTBkZTZiZmYzMDQxYjkzYzE1NjAxNDEzZTk4YzljYjcyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvTGlrZWx5RGVuc2VVbnNpZ25lZEludGVnZXJTZXQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9MaWtlbHlEZW5zZVVuc2lnbmVkSW50ZWdlclNldC5oCkBAIC0yMDksMTQg
KzIwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBbXShjb25zdCB0eXBlbmFtZSBTZXQ6
Oml0ZXJhdG9yJiBpdCkgLT4gSW5kZXhUeXBlIHsgcmV0dXJuICppdDsgfSk7CiAgICAgICAgIH0K
IAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV91bmRlcmx5aW5nID09IG90aGVyLm1fdW5k
ZXJseWluZyAmJiBtX3NoaWZ0ID09IG90aGVyLm1fc2hpZnQ7Ci0gICAgICAgIH0KLSAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1fdW5kZXJseWluZyAhPSBvdGhlci5tX3VuZGVybHlpbmcgfHwg
bV9zaGlmdCAhPSBvdGhlci5tX3NoaWZ0OwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBpdGVyYXRvciYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHN0ZDo6dmFyaWFudDxCaXRWZWN0b3I6Oml0ZXJhdG9yLCB0eXBlbmFtZSBTZXQ6Oml0
ZXJhdG9yPiBtX3VuZGVybHlpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFz
aFNldC5oIGIvU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaAppbmRleCA5MTY0NTY2Y2QyMzdk
MGZhMmY3MWVjYzBmMzY4ODY2ODgxZDg3ZmQ5Li40NTBmMWY0M2JhMGZkNWM1MDdmMTIyZjJkZjQ0
ZTY0ZjA4MjIyOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKQEAgLTIzMSw5ICsyMzEsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBwb3N0Zml4IC0tIGludGVudGlvbmFsbHkgb21pdHRlZAogCi0gICAgLy8g
Q29tcGFyaXNvbi4KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBj
b25zdCB7IHJldHVybiBtX2l0ZXJhdG9yID09IG90aGVyLm1faXRlcmF0b3I7IH0KLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2l0ZXJh
dG9yICE9IG90aGVyLm1faXRlcmF0b3I7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRl
cmF0b3ImKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBvcGVyYXRvciBjb25zdF9pdGVyYXRvcigp
IGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3I7IH0KIApAQCAtMzI2LDEwICszMjQsNiBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9wb3NpdGlvbiA9PSBvdGhlci5tX3Bvc2l0aW9u
OwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgY29uc3RfaXRlcmF0b3ImIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcG9zaXRpb24gIT0gb3RoZXIubV9wb3Np
dGlvbjsKLSAgICB9CiAKIHByaXZhdGU6CiAgICAgTm9kZSogbm9kZSgpIHsgcmV0dXJuIG1fcG9z
aXRpb247IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xpdmVuZXNzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9MaXZlbmVzcy5oCmluZGV4IGMyZjhmOTYyNmI4YmEzNTYxNzM2ODE4OGJhZDRlZDcx
YjFiMjczZDUuLjFkMmRlNGQ2ZGI0Y2Y1ZjkyZTU1Nzk5ODM0NTAyNTdhMjgyMzQwYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xpdmVuZXNzLmgKKysrIGIvU291cmNlL1dURi93dGYvTGl2
ZW5lc3MuaApAQCAtNzcsMjkgKzc3LDI4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNsYXNzIGl0
ZXJhdG9yIHsKICAgICAgICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgICAgICBpdGVyYXRvcihBZGFwdGVyJiBhZGFwdGVy
LCBXb3Jrc2V0Ojpjb25zdF9pdGVyYXRvciBzcGFyY2VTZXRJdGVyYXRvcikKKyAgICAgICAgICAg
ICAgICBpdGVyYXRvcihBZGFwdGVyJiBhZGFwdGVyLCBXb3Jrc2V0Ojpjb25zdF9pdGVyYXRvciBz
cGFyc2VTZXRJdGVyYXRvcikKICAgICAgICAgICAgICAgICAgICAgOiBtX2FkYXB0ZXIoYWRhcHRl
cikKLSAgICAgICAgICAgICAgICAgICAgLCBtX3NwYXJjZVNldEl0ZXJhdG9yKHNwYXJjZVNldEl0
ZXJhdG9yKQorICAgICAgICAgICAgICAgICAgICAsIG1fc3BhcnNlU2V0SXRlcmF0b3Ioc3BhcnNl
U2V0SXRlcmF0b3IpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICsrbV9zcGFyY2VTZXRJdGVyYXRvcjsKKyAgICAgICAgICAgICAg
ICAgICAgKyttX3NwYXJzZVNldEl0ZXJhdG9yOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KnRoaXM7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQWRh
cHRlcjo6VGhpbmcgb3BlcmF0b3IqKCkgY29uc3QKICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtX2FkYXB0ZXIuaW5kZXhUb1ZhbHVlKCptX3NwYXJjZVNldEl0
ZXJhdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fYWRhcHRlci5pbmRleFRvVmFs
dWUoKm1fc3BhcnNlU2V0SXRlcmF0b3IpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fc3BhcmNlU2V0SXRlcmF0b3IgPT0gb3RoZXIubV9zcGFyY2VTZXRJdGVyYXRvcjsgfQot
ICAgICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG1fc3BhcmNlU2V0SXRlcmF0b3IgIT0gb3RoZXIubV9zcGFyY2VTZXRJdGVy
YXRvcjsgfQorICAgICAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3BhcnNlU2V0SXRlcmF0b3IgPT0gb3RoZXIubV9zcGFy
c2VTZXRJdGVyYXRvcjsgfQogCiAgICAgICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgICAg
IEFkYXB0ZXImIG1fYWRhcHRlcjsKLSAgICAgICAgICAgICAgICBXb3Jrc2V0Ojpjb25zdF9pdGVy
YXRvciBtX3NwYXJjZVNldEl0ZXJhdG9yOworICAgICAgICAgICAgICAgIFdvcmtzZXQ6OmNvbnN0
X2l0ZXJhdG9yIG1fc3BhcnNlU2V0SXRlcmF0b3I7CiAgICAgICAgICAgICB9OwogCiAgICAgICAg
ICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKG1fbGl2ZW5lc3Ms
IG1fbGl2ZW5lc3MubV93b3Jrc2V0LmJlZ2luKCkpOyB9CkBAIC0xOTksMTEgKzE5OCw2IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICByZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgcHJpdmF0ZToKICAgICAg
ICAgICAgIExpdmVuZXNzKiBtX2xpdmVuZXNzOwogICAgICAgICAgICAgdHlwZW5hbWUgVW5kZXJs
eWluZ0l0ZXJhYmxlOjpjb25zdF9pdGVyYXRvciBtX2l0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9Mb2NrLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2NrLmgKaW5kZXggNDJlNGFhYzBjOWE0
YWFlNTllNzFiNWU5MzU4Y2I4NjAxOGQ3ZTQzYS4uYzhmNmMzMGQyZjA3MGQzMTY5MGM2NDJlYmI3
YmI3NmVhNzY5OTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTG9jay5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0xvY2suaApAQCAtMjYsMTAgKzI2LDEwIEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0xvY2tBbGdvcml0aG0uaD4KICNpbmNsdWRlIDx3dGYvTG9ja2VyLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZXR5QW5hbHlzaXMuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2luZ0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3Rm
L0xvZ2dpbmdIYXNoU2V0LmgKaW5kZXggMDcwMGQ1MTY0NDZmYTYwYjc5ZWEzNjRjNWE2OWYzOTQ4
NTBiYzI0Ny4uNTZkYzdiMGRlYjYwZjhiZWZlYjEzN2JmOGZkYmRmYjc0NTkyNjg0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvTG9nZ2luZ0hhc2hTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9Mb2dnaW5nSGFzaFNldC5oCkBAIC0yMzUsMTIgKzIzNSw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQ29s
bGVjdGlvbj4KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgT3RoZXJDb2xsZWN0aW9uJiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9
Ci0gICAgCiBwcml2YXRlOgogICAgIEhhc2hTZXQgbV9zZXQ7CiAgICAgTG9nZ2luZ0hhc2hJRCBt
X2lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWFya2FibGUuaCBiL1NvdXJjZS9XVEYv
d3RmL01hcmthYmxlLmgKaW5kZXggMTBlZWNjM2EyMmZlMmRlODM3Y2NmZDc5MTFkNDE3NWUyN2Fj
NzMyZS4uOTkyODUxZjM5NjQ5OTI3ZGMzOTU1MThhOWUxN2UzM2M2NjVkNjMwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvTWFya2FibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NYXJrYWJs
ZS5oCkBAIC0xNjAsMTEgKzE2MCw2IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBU
cmFpdHM+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgTWFya2FibGU8CiAgICAgcmV0
dXJuIHgudmFsdWUoKSA9PSB5LnZhbHVlKCk7CiB9CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVHJhaXRzPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hcmthYmxlPFQs
IFRyYWl0cz4mIHgsIGNvbnN0IFQmIHYpIHsgcmV0dXJuIGJvb2woeCkgJiYgeC52YWx1ZSgpID09
IHY7IH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBUcmFpdHM+IGNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVCYgdiwgY29uc3QgTWFya2FibGU8VCwgVHJhaXRzPiYgeCkg
eyByZXR1cm4gYm9vbCh4KSAmJiB2ID09IHgudmFsdWUoKTsgfQotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVHJhaXRzPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE1h
cmthYmxlPFQsIFRyYWl0cz4mIHgsIGNvbnN0IE1hcmthYmxlPFQsIFRyYWl0cz4mIHkpIHsgcmV0
dXJuICEoeCA9PSB5KTsgfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRyYWl0cz4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXJrYWJsZTxULCBUcmFpdHM+JiB4LCBj
b25zdCBUJiB2KSB7IHJldHVybiAhKHggPT0gdik7IH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBUcmFpdHM+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgdiwgY29u
c3QgTWFya2FibGU8VCwgVHJhaXRzPiYgeCkgeyByZXR1cm4gISh2ID09IHgpOyB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3Bw
IGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAppbmRleCAyMjRlNzc0OTVmYjkzODM0ZjU4
ZjljZjMyMzQzN2YzOTE2OTM5NDJmLi4yNGFmYjNjYWU5MWY0NjI5NTdjYmY2ZDIyYWFjOWVhMzdl
ZTFmMTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKQEAgLTcyLDkgKzcyLDkgQEAgc3RhdGljIGludDY0
X3Qgc2lnbnVtKGludDY0X3QgdmFsKQogCiBjb25zdCB1aW50MzJfdCBNZWRpYVRpbWU6Ok1heGlt
dW1UaW1lU2NhbGUgPSAxMDAwMDAwMDAwOwogCi1NZWRpYVRpbWU6Ok1lZGlhVGltZShjb25zdCBN
ZWRpYVRpbWUmIHJocykKK2NvbnN0ZXhwciBNZWRpYVRpbWU6Ok1lZGlhVGltZShVc2VEb3VibGVG
bGFnLCBkb3VibGUgdmFsdWUpCisgICAgOiBtX3ZhbHVlQXNEb3VibGUodmFsdWUpCiB7Ci0gICAg
KnRoaXMgPSByaHM7CiB9CiAKIE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhGbG9hdChm
bG9hdCBmbG9hdFRpbWUpCkBAIC04NCw1NyArODQsNTEgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6
Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSkKICAgICBpZiAoc3RkOjppc2luZihmbG9h
dFRpbWUpKQogICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGZsb2F0VGltZSkgPyBuZWdhdGl2
ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKIAotICAgIE1lZGlhVGlt
ZSB2YWx1ZSgwLCBEZWZhdWx0VGltZVNjYWxlLCBWYWxpZCB8IERvdWJsZVZhbHVlKTsKLSAgICB2
YWx1ZS5tX3RpbWVWYWx1ZUFzRG91YmxlID0gZmxvYXRUaW1lOwotICAgIHJldHVybiB2YWx1ZTsK
KyAgICBkb3VibGUgdmFsdWUgPSBmbG9hdFRpbWU7CisgICAgcmV0dXJuIHsgVXNlRG91YmxlLCB2
YWx1ZSB9OwogfQogCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQg
ZmxvYXRUaW1lLCB1aW50MzJfdCB0aW1lU2NhbGUpCitNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVh
dGVXaXRoRmxvYXQoZmxvYXQgdmFsdWUsIHVpbnQzMl90IHRpbWVTY2FsZSkKIHsKLSAgICBpZiAo
ZmxvYXRUaW1lICE9IGZsb2F0VGltZSkKKyAgICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCiAgICAg
ICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwotICAgIGlmIChzdGQ6OmlzaW5mKGZsb2F0VGltZSkp
Ci0gICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5p
dGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChmbG9hdFRpbWUgPj0g
bWF4UGx1c09uZTxpbnQ2NF90PikKKyAgICBpZiAodmFsdWUgPj0gbWF4UGx1c09uZTxpbnQ2NF90
PikKICAgICAgICAgcmV0dXJuIHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgaWYgKGZsb2F0
VGltZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQorICAgIGlmICh2YWx1
ZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1pbigpKQogICAgICAgICByZXR1cm4g
bmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICBpZiAoIXRpbWVTY2FsZSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6c2lnbmJpdChmbG9hdFRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBv
c2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUp
ID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAKLSAg
ICB3aGlsZSAoZmxvYXRUaW1lICogdGltZVNjYWxlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCisg
ICAgd2hpbGUgKHZhbHVlICogdGltZVNjYWxlID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAg
ICAgIHRpbWVTY2FsZSAvPSAyOwotICAgIHJldHVybiBNZWRpYVRpbWUoc3RhdGljX2Nhc3Q8aW50
NjRfdD4oZmxvYXRUaW1lICogdGltZVNjYWxlKSwgdGltZVNjYWxlLCBWYWxpZCk7CisgICAgaW50
NjRfdCBzY2FsZWRWYWx1ZSA9IHZhbHVlICogdGltZVNjYWxlOworICAgIHJldHVybiB7IHNjYWxl
ZFZhbHVlLCB0aW1lU2NhbGUgfTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0
aERvdWJsZShkb3VibGUgZG91YmxlVGltZSkKK01lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUoZG91YmxlIHZhbHVlKQogewotICAgIGlmIChkb3VibGVUaW1lICE9IGRvdWJsZVRp
bWUpCisgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQogICAgICAgICByZXR1cm4gaW52YWxpZFRp
bWUoKTsKLSAgICBpZiAoc3RkOjppc2luZihkb3VibGVUaW1lKSkKLSAgICAgICAgcmV0dXJuIHN0
ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2
ZUluZmluaXRlVGltZSgpOwotCi0gICAgTWVkaWFUaW1lIHZhbHVlKDAsIERlZmF1bHRUaW1lU2Nh
bGUsIFZhbGlkIHwgRG91YmxlVmFsdWUpOwotICAgIHZhbHVlLm1fdGltZVZhbHVlQXNEb3VibGUg
PSBkb3VibGVUaW1lOwotICAgIHJldHVybiB2YWx1ZTsKKyAgICBpZiAoc3RkOjppc2luZih2YWx1
ZSkpCisgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQodmFsdWUpID8gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgcmV0dXJuIHsgVXNlRG91Ymxl
LCB2YWx1ZSB9OwogfQogCi1NZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRv
dWJsZSBkb3VibGVUaW1lLCB1aW50MzJfdCB0aW1lU2NhbGUpCitNZWRpYVRpbWUgTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSB2YWx1ZSwgdWludDMyX3QgdGltZVNjYWxlKQogewot
ICAgIGlmIChkb3VibGVUaW1lICE9IGRvdWJsZVRpbWUpCisgICAgaWYgKHN0ZDo6aXNuYW4odmFs
dWUpKQogICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKLSAgICBpZiAoc3RkOjppc2luZihk
b3VibGVUaW1lKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChkb3VibGVUaW1lKSA/IG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIGlmIChk
b3VibGVUaW1lID49IG1heFBsdXNPbmU8aW50NjRfdD4pCisgICAgaWYgKHZhbHVlID49IG1heFBs
dXNPbmU8aW50NjRfdD4pCiAgICAgICAgIHJldHVybiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwot
ICAgIGlmIChkb3VibGVUaW1lIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkp
CisgICAgaWYgKHZhbHVlIDwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpCiAg
ICAgICAgIHJldHVybiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwogICAgIGlmICghdGltZVNjYWxl
KQotICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGRvdWJsZVRpbWUpID8gbmVnYXRpdmVJbmZp
bml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CisgICAgICAgIHJldHVybiBzdGQ6
OnNpZ25iaXQodmFsdWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5p
dGVUaW1lKCk7CiAKLSAgICB3aGlsZSAoZG91YmxlVGltZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVz
T25lPGludDY0X3Q+KQorICAgIHdoaWxlICh2YWx1ZSAqIHRpbWVTY2FsZSA+PSBtYXhQbHVzT25l
PGludDY0X3Q+KQogICAgICAgICB0aW1lU2NhbGUgLz0gMjsKLSAgICByZXR1cm4gTWVkaWFUaW1l
KHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6cm91bmQoZG91YmxlVGltZSAqIHRpbWVTY2FsZSkp
LCB0aW1lU2NhbGUsIFZhbGlkKTsKKyAgICBpbnQ2NF90IHNjYWxlZFZhbHVlID0gc3RkOjpyb3Vu
ZCh2YWx1ZSAqIHRpbWVTY2FsZSk7CisgICAgcmV0dXJuIHsgc2NhbGVkVmFsdWUsIHRpbWVTY2Fs
ZSB9OwogfQogCiBmbG9hdCBNZWRpYVRpbWU6OnRvRmxvYXQoKSBjb25zdApAQCAtMTQ2LDggKzE0
MCw5IEBAIGZsb2F0IE1lZGlhVGltZTo6dG9GbG9hdCgpIGNvbnN0CiAgICAgaWYgKGlzTmVnYXRp
dmVJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+
OjppbmZpbml0eSgpOwogICAgIGlmIChoYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICByZXR1cm4g
bV90aW1lVmFsdWVBc0RvdWJsZTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fdGlt
ZVZhbHVlKSAvIG1fdGltZVNjYWxlOworICAgICAgICByZXR1cm4gbV92YWx1ZUFzRG91YmxlOwor
ICAgIGZsb2F0IHZhbHVlID0gbV92YWx1ZTsKKyAgICByZXR1cm4gdmFsdWUgLyBtX3NjYWxlOwog
fQogCiBkb3VibGUgTWVkaWFUaW1lOjp0b0RvdWJsZSgpIGNvbnN0CkBAIC0xNTksMTkgKzE1NCwx
MiBAQCBkb3VibGUgTWVkaWFUaW1lOjp0b0RvdWJsZSgpIGNvbnN0CiAgICAgaWYgKGlzTmVnYXRp
dmVJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6aW5maW5pdHkoKTsKICAgICBpZiAoaGFzRG91YmxlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJu
IG1fdGltZVZhbHVlQXNEb3VibGU7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV90
aW1lVmFsdWUpIC8gbV90aW1lU2NhbGU7CisgICAgICAgIHJldHVybiBtX3ZhbHVlQXNEb3VibGU7
CisgICAgZG91YmxlIHZhbHVlID0gbV92YWx1ZTsKKyAgICByZXR1cm4gdmFsdWUgLyBtX3NjYWxl
OwogfQogCi1NZWRpYVRpbWUmIE1lZGlhVGltZTo6b3BlcmF0b3I9KGNvbnN0IE1lZGlhVGltZSYg
cmhzKQotewotICAgIG1fdGltZVZhbHVlID0gcmhzLm1fdGltZVZhbHVlOwotICAgIG1fdGltZVNj
YWxlID0gcmhzLm1fdGltZVNjYWxlOwotICAgIG1fdGltZUZsYWdzID0gcmhzLm1fdGltZUZsYWdz
OwotICAgIHJldHVybiAqdGhpczsKLX0KLQotTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3Ir
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0
b3IrKE1lZGlhVGltZSByaHMpIGNvbnN0CiB7CiAgICAgaWYgKHJocy5pc0ludmFsaWQoKSB8fCBp
c0ludmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CkBAIC0xOTIsNyArMTgw
LDcgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3IrKGNvbnN0IE1lZGlhVGltZSYgcmhz
KSBjb25zdAogICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKIAogICAgIGlm
IChoYXNEb3VibGVWYWx1ZSgpICYmIHJocy5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICByZXR1
cm4gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVlQXNEb3VibGUgKyByaHMu
bV90aW1lVmFsdWVBc0RvdWJsZSk7CisgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdp
dGhEb3VibGUobV92YWx1ZUFzRG91YmxlICsgcmhzLm1fdmFsdWVBc0RvdWJsZSk7CiAKICAgICBp
ZiAoaGFzRG91YmxlVmFsdWUoKSB8fCByaHMuaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAgcmV0
dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZSh0b0RvdWJsZSgpICsgcmhzLnRvRG91Ymxl
KCkpOwpAQCAtMjAxLDEzICsxODksMTMgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3Ir
KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAgIE1lZGlhVGltZSBiID0gcmhzOwogCiAg
ICAgdWludDMyX3QgY29tbW9uVGltZVNjYWxlOwotICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBs
ZShhLm1fdGltZVNjYWxlLCBiLm1fdGltZVNjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1v
blRpbWVTY2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCisgICAgaWYgKCFsZWFzdENvbW1vbk11bHRp
cGxlKGEubV9zY2FsZSwgYi5tX3NjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRpbWVT
Y2FsZSA+IE1heGltdW1UaW1lU2NhbGUpCiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSA9IE1heGlt
dW1UaW1lU2NhbGU7CiAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICBi
LnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwotICAgIHdoaWxlICghc2FmZUFkZChhLm1f
dGltZVZhbHVlLCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgeworICAgIHdoaWxlICgh
c2FmZUFkZChhLm1fdmFsdWUsIGIubV92YWx1ZSwgYS5tX3ZhbHVlKSkgewogICAgICAgICBpZiAo
Y29tbW9uVGltZVNjYWxlID09IDEpCi0gICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVWYWx1ZSA+
IDAgPyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBhLm1fdmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSAvPSAyOwog
ICAgICAgICBhLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwogICAgICAgICBiLnNldFRp
bWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwpAQCAtMjE1LDcgKzIwMyw3IEBAIE1lZGlhVGltZSBN
ZWRpYVRpbWU6Om9wZXJhdG9yKyhjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QKICAgICByZXR1
cm4gYTsKIH0KIAotTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGlt
ZSYgcmhzKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKE1lZGlhVGltZSBy
aHMpIGNvbnN0CiB7CiAgICAgaWYgKHJocy5pc0ludmFsaWQoKSB8fCBpc0ludmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CkBAIC0yMzYsNyArMjI0LDcgQEAgTWVkaWFUaW1l
IE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGltZSYgcmhzKSBjb25zdAogICAgICAg
ICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKIAogICAgIGlmIChoYXNEb3VibGVWYWx1
ZSgpICYmIHJocy5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICByZXR1cm4gTWVkaWFUaW1lOjpj
cmVhdGVXaXRoRG91YmxlKG1fdGltZVZhbHVlQXNEb3VibGUgLSByaHMubV90aW1lVmFsdWVBc0Rv
dWJsZSk7CisgICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV92YWx1
ZUFzRG91YmxlIC0gcmhzLm1fdmFsdWVBc0RvdWJsZSk7CiAKICAgICBpZiAoaGFzRG91YmxlVmFs
dWUoKSB8fCByaHMuaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6
Y3JlYXRlV2l0aERvdWJsZSh0b0RvdWJsZSgpIC0gcmhzLnRvRG91YmxlKCkpOwpAQCAtMjQ1LDEz
ICsyMzMsMTMgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6b3BlcmF0b3ItKGNvbnN0IE1lZGlhVGlt
ZSYgcmhzKSBjb25zdAogICAgIE1lZGlhVGltZSBiID0gcmhzOwogCiAgICAgdWludDMyX3QgY29t
bW9uVGltZVNjYWxlOwotICAgIGlmICghbGVhc3RDb21tb25NdWx0aXBsZSh0aGlzLT5tX3RpbWVT
Y2FsZSwgcmhzLm1fdGltZVNjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRpbWVTY2Fs
ZSA+IE1heGltdW1UaW1lU2NhbGUpCisgICAgaWYgKCFsZWFzdENvbW1vbk11bHRpcGxlKHRoaXMt
Pm1fc2NhbGUsIHJocy5tX3NjYWxlLCBjb21tb25UaW1lU2NhbGUpIHx8IGNvbW1vblRpbWVTY2Fs
ZSA+IE1heGltdW1UaW1lU2NhbGUpCiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSA9IE1heGltdW1U
aW1lU2NhbGU7CiAgICAgYS5zZXRUaW1lU2NhbGUoY29tbW9uVGltZVNjYWxlKTsKICAgICBiLnNl
dFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwotICAgIHdoaWxlICghc2FmZVN1YihhLm1fdGlt
ZVZhbHVlLCBiLm1fdGltZVZhbHVlLCBhLm1fdGltZVZhbHVlKSkgeworICAgIHdoaWxlICghc2Fm
ZVN1YihhLm1fdmFsdWUsIGIubV92YWx1ZSwgYS5tX3ZhbHVlKSkgewogICAgICAgICBpZiAoY29t
bW9uVGltZVNjYWxlID09IDEpCi0gICAgICAgICAgICByZXR1cm4gYS5tX3RpbWVWYWx1ZSA+IDAg
PyBwb3NpdGl2ZUluZmluaXRlVGltZSgpIDogbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAg
ICAgICAgIHJldHVybiBhLm1fdmFsdWUgPiAwID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5l
Z2F0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgICAgIGNvbW1vblRpbWVTY2FsZSAvPSAyOwogICAg
ICAgICBhLnNldFRpbWVTY2FsZShjb21tb25UaW1lU2NhbGUpOwogICAgICAgICBiLnNldFRpbWVT
Y2FsZShjb21tb25UaW1lU2NhbGUpOwpAQCAtMjc1LDkgKzI2Myw5IEBAIE1lZGlhVGltZSBNZWRp
YVRpbWU6Om9wZXJhdG9yLSgpIGNvbnN0CiAKICAgICBNZWRpYVRpbWUgbmVnYXRpdmVUaW1lID0g
KnRoaXM7CiAgICAgaWYgKG5lZ2F0aXZlVGltZS5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICBu
ZWdhdGl2ZVRpbWUubV90aW1lVmFsdWVBc0RvdWJsZSA9IC1uZWdhdGl2ZVRpbWUubV90aW1lVmFs
dWVBc0RvdWJsZTsKKyAgICAgICAgbmVnYXRpdmVUaW1lLm1fdmFsdWVBc0RvdWJsZSA9IC1uZWdh
dGl2ZVRpbWUubV92YWx1ZUFzRG91YmxlOwogICAgIGVsc2UKLSAgICAgICAgbmVnYXRpdmVUaW1l
Lm1fdGltZVZhbHVlID0gLW5lZ2F0aXZlVGltZS5tX3RpbWVWYWx1ZTsKKyAgICAgICAgbmVnYXRp
dmVUaW1lLm1fdmFsdWUgPSAtbmVnYXRpdmVUaW1lLm1fdmFsdWU7CiAgICAgcmV0dXJuIG5lZ2F0
aXZlVGltZTsKIH0KIApAQCAtMzA3LDE0ICsyOTUsMTQgQEAgTWVkaWFUaW1lIE1lZGlhVGltZTo6
b3BlcmF0b3IqKGludDMyX3QgcmhzKSBjb25zdAogICAgIE1lZGlhVGltZSBhID0gKnRoaXM7CiAK
ICAgICBpZiAoYS5oYXNEb3VibGVWYWx1ZSgpKSB7Ci0gICAgICAgIGEubV90aW1lVmFsdWVBc0Rv
dWJsZSAqPSByaHM7CisgICAgICAgIGEubV92YWx1ZUFzRG91YmxlICo9IHJoczsKICAgICAgICAg
cmV0dXJuIGE7CiAgICAgfQogCi0gICAgd2hpbGUgKCFzYWZlTXVsdGlwbHkoYS5tX3RpbWVWYWx1
ZSwgcmhzLCBhLm1fdGltZVZhbHVlKSkgewotICAgICAgICBpZiAoYS5tX3RpbWVTY2FsZSA9PSAx
KQotICAgICAgICAgICAgcmV0dXJuIHNpZ251bShhLm1fdGltZVZhbHVlKSA9PSBzaWdudW0ocmhz
KSA/IHBvc2l0aXZlSW5maW5pdGVUaW1lKCkgOiBuZWdhdGl2ZUluZmluaXRlVGltZSgpOwotICAg
ICAgICBhLnNldFRpbWVTY2FsZShhLm1fdGltZVNjYWxlIC8gMik7CisgICAgd2hpbGUgKCFzYWZl
TXVsdGlwbHkoYS5tX3ZhbHVlLCByaHMsIGEubV92YWx1ZSkpIHsKKyAgICAgICAgaWYgKGEubV9z
Y2FsZSA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIHNpZ251bShhLm1fdmFsdWUpID09IHNpZ251
bShyaHMpID8gcG9zaXRpdmVJbmZpbml0ZVRpbWUoKSA6IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7
CisgICAgICAgIGEuc2V0VGltZVNjYWxlKGEubV9zY2FsZSAvIDIpOwogICAgIH0KIAogICAgIHJl
dHVybiBhOwpAQCAtMzIyLDE3NiArMzEwLDExMCBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpvcGVy
YXRvciooaW50MzJfdCByaHMpIGNvbnN0CiAKIGJvb2wgTWVkaWFUaW1lOjpvcGVyYXRvciEoKSBj
b25zdAogewotICAgIHJldHVybiAobV90aW1lRmxhZ3MgPT0gVmFsaWQgJiYgIW1fdGltZVZhbHVl
KQotICAgICAgICB8fCAobV90aW1lRmxhZ3MgPT0gKFZhbGlkIHwgRG91YmxlVmFsdWUpICYmICFt
X3RpbWVWYWx1ZUFzRG91YmxlKQotICAgICAgICB8fCBpc0ludmFsaWQoKTsKKyAgICByZXR1cm4g
aXNJbnZhbGlkKCkgfHwgKGhhc0RvdWJsZVZhbHVlKCkgPyAhbV92YWx1ZUFzRG91YmxlIDogIW1f
dmFsdWUpOwogfQogCiBNZWRpYVRpbWU6Om9wZXJhdG9yIGJvb2woKSBjb25zdAogewotICAgIHJl
dHVybiAhKG1fdGltZUZsYWdzID09IFZhbGlkICYmICFtX3RpbWVWYWx1ZSkKLSAgICAgICAgJiYg
IShtX3RpbWVGbGFncyA9PSAoVmFsaWQgfCBEb3VibGVWYWx1ZSkgJiYgIW1fdGltZVZhbHVlQXNE
b3VibGUpCi0gICAgICAgICYmICFpc0ludmFsaWQoKTsKKyAgICByZXR1cm4gISEqdGhpczsKIH0K
IAotTWVkaWFUaW1lOjpDb21wYXJpc29uRmxhZ3MgTWVkaWFUaW1lOjpjb21wYXJlKGNvbnN0IE1l
ZGlhVGltZSYgcmhzKSBjb25zdAorc3RhdGljIHN0ZDo6d2Vha19vcmRlcmluZyBhc3NlcnROb3RV
bm9yZGVyZWQoc3RkOjpwYXJ0aWFsX29yZGVyaW5nIG9yZGVyKQogewotICAgIGF1dG8gYW5kRmxh
Z3MgPSBtX3RpbWVGbGFncyAmIHJocy5tX3RpbWVGbGFnczsKLSAgICBpZiAoYW5kRmxhZ3MgJiAo
UG9zaXRpdmVJbmZpbml0ZSB8IE5lZ2F0aXZlSW5maW5pdGUgfCBJbmRlZmluaXRlKSkKLSAgICAg
ICAgcmV0dXJuIEVxdWFsVG87Ci0KLSAgICBhdXRvIG9yRmxhZ3MgPSBtX3RpbWVGbGFncyB8IHJo
cy5tX3RpbWVGbGFnczsKLSAgICBpZiAoIShvckZsYWdzICYgVmFsaWQpKQotICAgICAgICByZXR1
cm4gRXF1YWxUbzsKLQotICAgIGlmICghKGFuZEZsYWdzICYgVmFsaWQpKQotICAgICAgICByZXR1
cm4gaXNJbnZhbGlkKCkgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwotCi0gICAgaWYgKG9yRmxh
Z3MgJiBOZWdhdGl2ZUluZmluaXRlKQotICAgICAgICByZXR1cm4gaXNOZWdhdGl2ZUluZmluaXRl
KCkgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwotCi0gICAgaWYgKG9yRmxhZ3MgJiBQb3NpdGl2
ZUluZmluaXRlKQotICAgICAgICByZXR1cm4gaXNQb3NpdGl2ZUluZmluaXRlKCkgPyBHcmVhdGVy
VGhhbiA6IExlc3NUaGFuOwotCi0gICAgaWYgKG9yRmxhZ3MgJiBJbmRlZmluaXRlKQotICAgICAg
ICByZXR1cm4gaXNJbmRlZmluaXRlKCkgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwotCi0gICAg
aWYgKGFuZEZsYWdzICYgRG91YmxlVmFsdWUpIHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVlQXNE
b3VibGUgPT0gcmhzLm1fdGltZVZhbHVlQXNEb3VibGUpCi0gICAgICAgICAgICByZXR1cm4gRXF1
YWxUbzsKLQotICAgICAgICByZXR1cm4gbV90aW1lVmFsdWVBc0RvdWJsZSA8IHJocy5tX3RpbWVW
YWx1ZUFzRG91YmxlID8gTGVzc1RoYW4gOiBHcmVhdGVyVGhhbjsKLSAgICB9Ci0KLSAgICBpZiAo
b3JGbGFncyAmIERvdWJsZVZhbHVlKSB7Ci0gICAgICAgIGRvdWJsZSBhID0gdG9Eb3VibGUoKTsK
LSAgICAgICAgZG91YmxlIGIgPSByaHMudG9Eb3VibGUoKTsKLSAgICAgICAgaWYgKGEgPiBiKQot
ICAgICAgICAgICAgcmV0dXJuIEdyZWF0ZXJUaGFuOwotICAgICAgICBpZiAoYSA8IGIpCi0gICAg
ICAgICAgICByZXR1cm4gTGVzc1RoYW47Ci0gICAgICAgIHJldHVybiBFcXVhbFRvOwotICAgIH0K
LQotICAgIGlmICgobV90aW1lVmFsdWUgPCAwKSAhPSAocmhzLm1fdGltZVZhbHVlIDwgMCkpCi0g
ICAgICAgIHJldHVybiBtX3RpbWVWYWx1ZSA8IDAgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwor
ICAgIEFTU0VSVChvcmRlciAhPSBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OnVub3JkZXJlZCk7Cisg
ICAgcmV0dXJuIGlzX2x0KG9yZGVyKSA/IHN0ZDo6d2Vha19vcmRlcmluZzo6bGVzcyA6IGlzX2d0
KG9yZGVyKSA/IHN0ZDo6d2Vha19vcmRlcmluZzo6bGVzcyA6IHN0ZDo6d2Vha19vcmRlcmluZzo6
ZXF1aXZhbGVudDsKK30KIAotICAgIGlmICghbV90aW1lVmFsdWUgJiYgIXJocy5tX3RpbWVWYWx1
ZSkKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87CitzdGQ6OndlYWtfb3JkZXJpbmcgb3BlcmF0b3I8
PT4oTWVkaWFUaW1lIGEsIE1lZGlhVGltZSBiKQoreworICAgIGF1dG8gb3JkZXJpbmdDbGFzcyA9
IFtdKE1lZGlhVGltZSB0aW1lKSB7CisgICAgICAgIGlmICh0aW1lLmlzTmVnYXRpdmVJbmZpbml0
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAodGltZS5pc0luZGVmaW5p
dGUoKSkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBpZiAodGltZS5pc1Bvc2l0aXZl
SW5maW5pdGUoKSkKKyAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICBpZiAodGltZS5pc0lu
dmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
OworICAgIGF1dG8gYUNsYXNzID0gb3JkZXJpbmdDbGFzcyhhKTsKKyAgICBhdXRvIGJDbGFzcyA9
IG9yZGVyaW5nQ2xhc3MoYik7CisgICAgaWYgKGFDbGFzcyB8fCBiQ2xhc3MpCisgICAgICAgIHJl
dHVybiBhQ2xhc3MgPD0+IGJDbGFzczsKIAotICAgIGlmIChtX3RpbWVTY2FsZSA9PSByaHMubV90
aW1lU2NhbGUpIHsKLSAgICAgICAgaWYgKG1fdGltZVZhbHVlID09IHJocy5tX3RpbWVWYWx1ZSkK
LSAgICAgICAgICAgIHJldHVybiBFcXVhbFRvOwotICAgICAgICByZXR1cm4gbV90aW1lVmFsdWUg
PCByaHMubV90aW1lVmFsdWUgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwotICAgIH0KKyAgICBp
ZiAoYS5oYXNEb3VibGVWYWx1ZSgpIHx8IGIuaGFzRG91YmxlVmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuIGFzc2VydE5vdFVub3JkZXJlZChhLnRvRG91YmxlKCkgPD0+IGIudG9Eb3VibGUoKSk7CiAK
LSAgICBpZiAobV90aW1lVmFsdWUgPT0gcmhzLm1fdGltZVZhbHVlKQotICAgICAgICByZXR1cm4g
bV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUgPyBHcmVhdGVyVGhhbiA6IExlc3NUaGFuOwor
ICAgIGlmICgoYS5tX3ZhbHVlIDwgMCkgIT0gKGIubV92YWx1ZSA8IDApIHx8ICFhLm1fdmFsdWUg
fHwgIWIubV92YWx1ZSB8fCBhLm1fc2NhbGUgPT0gYi5tX3NjYWxlKQorICAgICAgICByZXR1cm4g
YS5tX3ZhbHVlIDw9PiBiLm1fdmFsdWU7CiAKLSAgICBpZiAobV90aW1lVmFsdWUgPj0gMCkgewot
ICAgICAgICBpZiAobV90aW1lVmFsdWUgPCByaHMubV90aW1lVmFsdWUgJiYgbV90aW1lU2NhbGUg
PiByaHMubV90aW1lU2NhbGUpCi0gICAgICAgICAgICByZXR1cm4gTGVzc1RoYW47CisgICAgaWYg
KGEubV92YWx1ZSA9PSBiLm1fdmFsdWUpCisgICAgICAgIHJldHVybiBiLm1fc2NhbGUgPD0+IGEu
bV9zY2FsZTsKIAotICAgICAgICBpZiAobV90aW1lVmFsdWUgPiByaHMubV90aW1lVmFsdWUgJiYg
bV90aW1lU2NhbGUgPCByaHMubV90aW1lU2NhbGUpCi0gICAgICAgICAgICByZXR1cm4gR3JlYXRl
clRoYW47CisgICAgaWYgKGEubV92YWx1ZSA+PSAwKSB7CisgICAgICAgIGlmIChhLm1fdmFsdWUg
PCBiLm1fdmFsdWUgJiYgYS5tX3NjYWxlID4gYi5tX3NjYWxlKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6d2Vha19vcmRlcmluZzo6bGVzczsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIubV92
YWx1ZSAmJiBhLm1fc2NhbGUgPCBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjp3
ZWFrX29yZGVyaW5nOjpncmVhdGVyOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChtX3RpbWVW
YWx1ZSA8IHJocy5tX3RpbWVWYWx1ZSAmJiBtX3RpbWVTY2FsZSA8IHJocy5tX3RpbWVTY2FsZSkK
LSAgICAgICAgICAgIHJldHVybiBMZXNzVGhhbjsKLQotICAgICAgICBpZiAobV90aW1lVmFsdWUg
PiByaHMubV90aW1lVmFsdWUgJiYgbV90aW1lU2NhbGUgPiByaHMubV90aW1lU2NhbGUpCi0gICAg
ICAgICAgICByZXR1cm4gR3JlYXRlclRoYW47CisgICAgICAgIGlmIChhLm1fdmFsdWUgPCBiLm1f
dmFsdWUgJiYgYS5tX3NjYWxlIDwgYi5tX3NjYWxlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
d2Vha19vcmRlcmluZzo6bGVzczsKKyAgICAgICAgaWYgKGEubV92YWx1ZSA+IGIubV92YWx1ZSAm
JiBhLm1fc2NhbGUgPiBiLm1fc2NhbGUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjp3ZWFrX29y
ZGVyaW5nOjpncmVhdGVyOwogICAgIH0KIAotICAgIGludDY0X3QgbGhzRmFjdG9yOwotICAgIGlu
dDY0X3QgcmhzRmFjdG9yOwotICAgIGlmIChzYWZlTXVsdGlwbHkobV90aW1lVmFsdWUsIHN0YXRp
Y19jYXN0PGludDY0X3Q+KHJocy5tX3RpbWVTY2FsZSksIGxoc0ZhY3RvcikKLSAgICAgICAgJiYg
c2FmZU11bHRpcGx5KHJocy5tX3RpbWVWYWx1ZSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4obV90aW1l
U2NhbGUpLCByaHNGYWN0b3IpKSB7Ci0gICAgICAgIGlmIChsaHNGYWN0b3IgPT0gcmhzRmFjdG9y
KQotICAgICAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAgICAgIHJldHVybiBsaHNGYWN0b3Ig
PCByaHNGYWN0b3IgPyBMZXNzVGhhbiA6IEdyZWF0ZXJUaGFuOwotICAgIH0KKyAgICBpbnQ2NF90
IGFQcm9kdWN0OworICAgIGludDY0X3QgYlByb2R1Y3Q7CisgICAgaW50NjRfdCBhVGltZVNjYWxl
ID0gYS5tX3NjYWxlOworICAgIGludDY0X3QgYlRpbWVTY2FsZSA9IGIubV9zY2FsZTsKKyAgICBp
ZiAoc2FmZU11bHRpcGx5KGEubV92YWx1ZSwgYVRpbWVTY2FsZSwgYVByb2R1Y3QpICYmIHNhZmVN
dWx0aXBseShiLm1fdmFsdWUsIGJUaW1lU2NhbGUsIGJQcm9kdWN0KSkKKyAgICAgICAgcmV0dXJu
IGFQcm9kdWN0IDw9PiBiUHJvZHVjdDsKKworICAgIGF1dG8gYVF1b3RpZW50ID0gYS5tX3ZhbHVl
IC8gYS5tX3NjYWxlOworICAgIGF1dG8gYlF1b3RpZW50ID0gYi5tX3ZhbHVlIC8gYi5tX3NjYWxl
OworICAgIGlmIChhUXVvdGllbnQgIT0gYlF1b3RpZW50KQorICAgICAgICByZXR1cm4gYVF1b3Rp
ZW50IDw9PiBiUXVvdGllbnQ7CiAKLSAgICBpbnQ2NF90IHJoc1dob2xlID0gcmhzLm1fdGltZVZh
bHVlIC8gcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhzV2hvbGUgPSBtX3RpbWVWYWx1
ZSAvIG1fdGltZVNjYWxlOwotICAgIGlmIChsaHNXaG9sZSA+IHJoc1dob2xlKQotICAgICAgICBy
ZXR1cm4gR3JlYXRlclRoYW47Ci0gICAgaWYgKGxoc1dob2xlIDwgcmhzV2hvbGUpCi0gICAgICAg
IHJldHVybiBMZXNzVGhhbjsKLQotICAgIGludDY0X3QgcmhzUmVtYWluID0gcmhzLm1fdGltZVZh
bHVlICUgcmhzLm1fdGltZVNjYWxlOwotICAgIGludDY0X3QgbGhzUmVtYWluID0gbV90aW1lVmFs
dWUgJSBtX3RpbWVTY2FsZTsKLSAgICBsaHNGYWN0b3IgPSBsaHNSZW1haW4gKiByaHMubV90aW1l
U2NhbGU7Ci0gICAgcmhzRmFjdG9yID0gcmhzUmVtYWluICogbV90aW1lU2NhbGU7Ci0KLSAgICBp
ZiAobGhzRmFjdG9yID09IHJoc0ZhY3RvcikKLSAgICAgICAgcmV0dXJuIEVxdWFsVG87Ci0gICAg
cmV0dXJuIGxoc0ZhY3RvciA+IHJoc0ZhY3RvciA/IEdyZWF0ZXJUaGFuIDogTGVzc1RoYW47Cisg
ICAgYXV0byBhUmVtYWluZGVyID0gYS5tX3ZhbHVlICUgYS5tX3NjYWxlICogYS5tX3NjYWxlOwor
ICAgIGF1dG8gYlJlbWFpbmRlciA9IGIubV92YWx1ZSAlIGIubV9zY2FsZSAqIGIubV9zY2FsZTsK
KyAgICByZXR1cm4gYVJlbWFpbmRlciA8PT4gYlJlbWFpbmRlcjsKIH0KIAotYm9vbCBNZWRpYVRp
bWU6OmlzQmV0d2Vlbihjb25zdCBNZWRpYVRpbWUmIGEsIGNvbnN0IE1lZGlhVGltZSYgYikgY29u
c3QKK2Jvb2wgTWVkaWFUaW1lOjppc0JldHdlZW4oTWVkaWFUaW1lIGEsIE1lZGlhVGltZSBiKSBj
b25zdAogewogICAgIGlmIChhID4gYikKICAgICAgICAgcmV0dXJuICp0aGlzID4gYiAmJiAqdGhp
cyA8IGE7CiAgICAgcmV0dXJuICp0aGlzID4gYSAmJiAqdGhpcyA8IGI7CiB9CiAKLWNvbnN0IE1l
ZGlhVGltZSYgTWVkaWFUaW1lOjp6ZXJvVGltZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlh
VGltZSB0aW1lKDAsIDEsIFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3QgTWVk
aWFUaW1lJiBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTWVk
aWFUaW1lIHRpbWUoLTEsIDEsIDApOwotICAgIHJldHVybiB0aW1lOwotfQotCi1jb25zdCBNZWRp
YVRpbWUmIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKQotewotICAgIHN0YXRpYyBj
b25zdCBNZWRpYVRpbWUgdGltZSgwLCAxLCBQb3NpdGl2ZUluZmluaXRlIHwgVmFsaWQpOwotICAg
IHJldHVybiB0aW1lOwotfQotCi1jb25zdCBNZWRpYVRpbWUmIE1lZGlhVGltZTo6bmVnYXRpdmVJ
bmZpbml0ZVRpbWUoKQotewotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUgdGltZSgtMSwgMSwg
TmVnYXRpdmVJbmZpbml0ZSB8IFZhbGlkKTsKLSAgICByZXR1cm4gdGltZTsKLX0KLQotY29uc3Qg
TWVkaWFUaW1lJiBNZWRpYVRpbWU6OmluZGVmaW5pdGVUaW1lKCkKLXsKLSAgICBzdGF0aWMgY29u
c3QgTWVkaWFUaW1lIHRpbWUoMCwgMSwgSW5kZWZpbml0ZSB8IFZhbGlkKTsKLSAgICByZXR1cm4g
dGltZTsKLX0KLQotTWVkaWFUaW1lIE1lZGlhVGltZTo6dG9UaW1lU2NhbGUodWludDMyX3QgdGlt
ZVNjYWxlLCBSb3VuZGluZ0ZsYWdzIGZsYWdzKSBjb25zdAorTWVkaWFUaW1lIE1lZGlhVGltZTo6
dG9UaW1lU2NhbGUodWludDMyX3QgdGltZVNjYWxlLCBSb3VuZGluZ01vZGUgbW9kZSkgY29uc3QK
IHsKICAgICBNZWRpYVRpbWUgcmVzdWx0ID0gKnRoaXM7Ci0gICAgcmVzdWx0LnNldFRpbWVTY2Fs
ZSh0aW1lU2NhbGUsIGZsYWdzKTsKKyAgICByZXN1bHQuc2V0VGltZVNjYWxlKHRpbWVTY2FsZSwg
bW9kZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBNZWRpYVRpbWU6OnNldFRpbWVT
Y2FsZSh1aW50MzJfdCB0aW1lU2NhbGUsIFJvdW5kaW5nRmxhZ3MgZmxhZ3MpCit2b2lkIE1lZGlh
VGltZTo6c2V0VGltZVNjYWxlKHVpbnQzMl90IHRpbWVTY2FsZSwgUm91bmRpbmdNb2RlIG1vZGUp
CiB7CiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkpIHsKLSAgICAgICAgKnRoaXMgPSBNZWRpYVRp
bWU6OmNyZWF0ZVdpdGhEb3VibGUobV90aW1lVmFsdWVBc0RvdWJsZSwgdGltZVNjYWxlKTsKKyAg
ICAgICAgKnRoaXMgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUobV92YWx1ZUFzRG91Ymxl
LCB0aW1lU2NhbGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCF0aW1lU2Nh
bGUpIHsKLSAgICAgICAgKnRoaXMgPSBtX3RpbWVWYWx1ZSA8IDAgPyBuZWdhdGl2ZUluZmluaXRl
VGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKKyAgICAgICAgKnRoaXMgPSBtX3ZhbHVl
IDwgMCA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHRpbWVTY2FsZSA9PSBtX3RpbWVTY2Fs
ZSkKKyAgICBpZiAodGltZVNjYWxlID09IG1fc2NhbGUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IHRpbWVTY2FsZSA9IHN0ZDo6bWluKE1heGltdW1UaW1lU2NhbGUsIHRpbWVTY2FsZSk7CiAKLSAg
ICBJbnQxMjggbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxJbnQxMjg+KG1fdGltZVZhbHVlKSAqIHRp
bWVTY2FsZTsKLSAgICBpbnQ2NF90IHJlbWFpbmRlciA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG5l
d1ZhbHVlICUgbV90aW1lU2NhbGUpOwotICAgIG5ld1ZhbHVlID0gbmV3VmFsdWUgLyBtX3RpbWVT
Y2FsZTsKKyAgICBJbnQxMjggbmV3VmFsdWUgPSBzdGF0aWNfY2FzdDxJbnQxMjg+KG1fdmFsdWUp
ICogdGltZVNjYWxlOworICAgIGludDY0X3QgcmVtYWluZGVyID0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4obmV3VmFsdWUgJSBtX3NjYWxlKTsKKyAgICBuZXdWYWx1ZSA9IG5ld1ZhbHVlIC8gbV9zY2Fs
ZTsKIAogICAgIGlmIChuZXdWYWx1ZSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1p
bigpKSB7CiAgICAgICAgICp0aGlzID0gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKTsKQEAgLTUwMyw0
MiArNDI1LDQyIEBAIHZvaWQgTWVkaWFUaW1lOjpzZXRUaW1lU2NhbGUodWludDMyX3QgdGltZVNj
YWxlLCBSb3VuZGluZ0ZsYWdzIGZsYWdzKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV90aW1lVmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihuZXdWYWx1ZSk7Ci0gICAgc3RkOjpz
d2FwKG1fdGltZVNjYWxlLCB0aW1lU2NhbGUpOworICAgIG1fdmFsdWUgPSBuZXdWYWx1ZTsKKyAg
ICBhdXRvIG9sZFRpbWVTY2FsZSA9IHN0ZDo6ZXhjaGFuZ2UobV9zY2FsZSwgdGltZVNjYWxlKTsK
IAogICAgIGlmICghcmVtYWluZGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVGbGFn
cyB8PSBIYXNCZWVuUm91bmRlZDsKLSAgICBzd2l0Y2ggKGZsYWdzKSB7Ci0gICAgY2FzZSBSb3Vu
ZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJvOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50
NjRfdD4obGxhYnMocmVtYWluZGVyKSkgKiAyID49IHN0YXRpY19jYXN0PGludDY0X3Q+KHRpbWVT
Y2FsZSkpIHsKKyAgICBtX2ZsYWdzLmFkZChIYXNCZWVuUm91bmRlZCk7CisgICAgc3dpdGNoICht
b2RlKSB7CisgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhhbGZBd2F5RnJvbVplcm86CisgICAgICAg
IGlmIChzdGQ6OmFicyhyZW1haW5kZXIpICogMiA+PSBvbGRUaW1lU2NhbGUpIHsKICAgICAgICAg
ICAgIC8vIHJvdW5kIHVwIChhd2F5IGZyb20gemVybykKICAgICAgICAgICAgIGlmIChyZW1haW5k
ZXIgPCAwKQotICAgICAgICAgICAgICAgIG1fdGltZVZhbHVlLS07CisgICAgICAgICAgICAgICAg
bV92YWx1ZS0tOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fdGltZVZhbHVl
Kys7CisgICAgICAgICAgICAgICAgbV92YWx1ZSsrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogCi0gICAgY2FzZSBSb3VuZGluZ0ZsYWdzOjpUb3dhcmRaZXJvOgorICAgIGNhc2UgUm91bmRp
bmdNb2RlOjpUb3dhcmRaZXJvOgogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgUm91bmRpbmdG
bGFnczo6QXdheUZyb21aZXJvOgorICAgIGNhc2UgUm91bmRpbmdNb2RlOjpBd2F5RnJvbVplcm86
CiAgICAgICAgIGlmIChyZW1haW5kZXIgPCAwKQotICAgICAgICAgICAgbV90aW1lVmFsdWUtLTsK
KyAgICAgICAgICAgIG1fdmFsdWUtLTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV90aW1l
VmFsdWUrKzsKKyAgICAgICAgICAgIG1fdmFsdWUrKzsKICAgICAgICAgYnJlYWs7CiAKLSAgICBj
YXNlIFJvdW5kaW5nRmxhZ3M6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CisgICAgY2FzZSBSb3Vu
ZGluZ01vZGU6OlRvd2FyZFBvc2l0aXZlSW5maW5pdHk6CiAgICAgICAgIGlmIChyZW1haW5kZXIg
PiAwKQotICAgICAgICAgICAgbV90aW1lVmFsdWUrKzsKKyAgICAgICAgICAgIG1fdmFsdWUrKzsK
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIAotICAgIGNhc2UgUm91bmRpbmdGbGFnczo6VG93YXJk
TmVnYXRpdmVJbmZpbml0eToKKyAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VG93YXJkTmVnYXRpdmVJ
bmZpbml0eToKICAgICAgICAgaWYgKHJlbWFpbmRlciA8IDApCi0gICAgICAgICAgICBtX3RpbWVW
YWx1ZS0tOworICAgICAgICAgICAgbV92YWx1ZS0tOwogICAgICAgICBicmVhazsKICAgICB9CiB9
CkBAIC01NDcsNyArNDY5LDcgQEAgdm9pZCBNZWRpYVRpbWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoInsiKTsKICAgICBpZiAoIWhhc0RvdWJsZVZhbHVl
KCkpCi0gICAgICAgIG91dC5wcmludChtX3RpbWVWYWx1ZSwgIi8iLCBtX3RpbWVTY2FsZSwgIiA9
ICIpOworICAgICAgICBvdXQucHJpbnQobV92YWx1ZSwgIi8iLCBtX3NjYWxlLCAiID0gIik7CiAg
ICAgb3V0LnByaW50KHRvRG91YmxlKCksICJ9Iik7CiB9CiAKQEAgLTU1Niw3ICs0NzgsNyBAQCBT
dHJpbmcgTWVkaWFUaW1lOjp0b1N0cmluZygpIGNvbnN0CiAgICAgY29uc3QgY2hhciogaW52YWxp
ZCA9IGlzSW52YWxpZCgpID8gIiwgaW52YWxpZCIgOiAiIjsKICAgICBpZiAoaGFzRG91YmxlVmFs
dWUoKSkKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoJ3snLCB0b0RvdWJsZSgpLCBpbnZhbGlk
LCAnfScpOwotICAgIHJldHVybiBtYWtlU3RyaW5nKCd7JywgbV90aW1lVmFsdWUsICcvJywgbV90
aW1lU2NhbGUsICIgPSAiLCB0b0RvdWJsZSgpLCBpbnZhbGlkLCAnfScpOworICAgIHJldHVybiBt
YWtlU3RyaW5nKCd7JywgbV92YWx1ZSwgJy8nLCBtX3NjYWxlLCAiID0gIiwgdG9Eb3VibGUoKSwg
aW52YWxpZCwgJ30nKTsKIH0KIAogUmVmPEpTT046Ok9iamVjdD4gTWVkaWFUaW1lOjp0b0pTT05P
YmplY3QoKSBjb25zdApAQCAtNTc5LDkgKzUwMSw5IEBAIFJlZjxKU09OOjpPYmplY3Q+IE1lZGlh
VGltZTo6dG9KU09OT2JqZWN0KCkgY29uc3QKICAgICBlbHNlCiAgICAgICAgIG9iamVjdC0+c2V0
RG91YmxlKCJ2YWx1ZSJfcywgdG9Eb3VibGUoKSk7CiAKLSAgICBvYmplY3QtPnNldERvdWJsZSgi
bnVtZXJhdG9yIl9zLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVlKSk7Ci0gICAgb2Jq
ZWN0LT5zZXRJbnRlZ2VyKCJkZW5vbWluYXRvciJfcywgbV90aW1lU2NhbGUpOwotICAgIG9iamVj
dC0+c2V0SW50ZWdlcigiZmxhZ3MiX3MsIG1fdGltZUZsYWdzKTsKKyAgICBvYmplY3QtPnNldERv
dWJsZSgibnVtZXJhdG9yIl9zLCBtX3ZhbHVlKTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImRl
bm9taW5hdG9yIl9zLCBtX3NjYWxlKTsKKyAgICBvYmplY3QtPnNldEludGVnZXIoImZsYWdzIl9z
LCBtX2ZsYWdzLnRvUmF3KCkpOwogCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KQEAgLTU5MSwzMyAr
NTEzLDI4IEBAIFN0cmluZyBNZWRpYVRpbWU6OnRvSlNPTlN0cmluZygpIGNvbnN0CiAgICAgcmV0
dXJuIHRvSlNPTk9iamVjdCgpLT50b0pTT05TdHJpbmcoKTsKIH0KIAotTWVkaWFUaW1lIGFicyhj
b25zdCBNZWRpYVRpbWUmIHJocykKK01lZGlhVGltZSBhYnMoTWVkaWFUaW1lIHRpbWUpCiB7Ci0g
ICAgaWYgKHJocy5pc0ludmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIE1lZGlhVGltZTo6aW52YWxp
ZFRpbWUoKTsKLSAgICBpZiAocmhzLmlzTmVnYXRpdmVJbmZpbml0ZSgpIHx8IHJocy5pc1Bvc2l0
aXZlSW5maW5pdGUoKSkKKyAgICBpZiAodGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkKICAgICAg
ICAgcmV0dXJuIE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBpZiAocmhz
Lmhhc0RvdWJsZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhE
b3VibGUoZmFicyhyaHMubV90aW1lVmFsdWVBc0RvdWJsZSkpOwotCi0gICAgTWVkaWFUaW1lIHZh
bCA9IHJoczsKLSAgICB2YWwubV90aW1lVmFsdWUgPSBzdGQ6OmFicyhyaHMubV90aW1lVmFsdWUp
OwotICAgIHJldHVybiB2YWw7CisgICAgaWYgKHRpbWUuaGFzRG91YmxlVmFsdWUoKSkKKyAgICAg
ICAgcmV0dXJuIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGQ6OmFicyh0aW1lLm1fdmFs
dWVBc0RvdWJsZSkpOworICAgIE1lZGlhVGltZSByZXN1bHQgPSB0aW1lOworICAgIHJlc3VsdC5t
X3ZhbHVlID0gc3RkOjphYnMocmVzdWx0Lm1fdmFsdWUpOworICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIFN0cmluZyBNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKIHsKICAgICBh
dXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0KICAgICBvYmplY3QtPnNldE9i
amVjdCgic3RhcnQiX3MsIHN0YXJ0LnRvSlNPTk9iamVjdCgpKTsKICAgICBvYmplY3QtPnNldE9i
amVjdCgiZW5kIl9zLCBlbmQudG9KU09OT2JqZWN0KCkpOwotCiAgICAgcmV0dXJuIG9iamVjdC0+
dG9KU09OU3RyaW5nKCk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCiAKLVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCitUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVhbSwgTWVkaWFUaW1lIHRpbWUpCiB7CiAg
ICAgcmV0dXJuIHN0cmVhbSA8PCB0aW1lLnRvSlNPTlN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvTWVkaWFUaW1lLmggYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaApp
bmRleCA3MWFjZjMyOWViMzk4OTMzNTEyZmQ3ZjNmNThkNjBiZWNmZjIzYzUwLi5kZDgyNjBlYTJl
MTU0ZjdlM2I4Mzc1YTljYTE4NzU3Y2ZiODNhMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9NZWRpYVRpbWUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuaApAQCAtMzAsMjEg
KzMwLDE2IEBACiAKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9K
U09OVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNpbmNsdWRl
IDxjbWF0aD4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUg
PHN0ZGludC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFtZXNwYWNlIFdURiB7
CiAKIGNsYXNzIFByaW50U3RyZWFtOwogCi1jbGFzcyBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFU
aW1lIGZpbmFsIHsKK2NsYXNzIE1lZGlhVGltZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgZW51bSB7CisgICAgZW51bSBGbGFnIDogdWludDhfdCB7
CiAgICAgICAgIFZhbGlkID0gMSA8PCAwLAogICAgICAgICBIYXNCZWVuUm91bmRlZCA9IDEgPDwg
MSwKICAgICAgICAgUG9zaXRpdmVJbmZpbml0ZSA9IDEgPDwgMiwKQEAgLTUyLDY3ICs0Nyw1MyBA
QCBwdWJsaWM6CiAgICAgICAgIEluZGVmaW5pdGUgPSAxIDw8IDQsCiAgICAgICAgIERvdWJsZVZh
bHVlID0gMSA8PCA1LAogICAgIH07Ci0KLSAgICBjb25zdGV4cHIgTWVkaWFUaW1lKCk7Ci0gICAg
Y29uc3RleHByIE1lZGlhVGltZShpbnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgdWludDhf
dCBmbGFncyA9IFZhbGlkKTsKLSAgICBNZWRpYVRpbWUoY29uc3QgTWVkaWFUaW1lJiByaHMpOwot
Ci0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRUaW1lKTsK
LSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCBmbG9hdFRpbWUsIHVp
bnQzMl90IHRpbWVTY2FsZSk7Ci0gICAgc3RhdGljIE1lZGlhVGltZSBjcmVhdGVXaXRoRG91Ymxl
KGRvdWJsZSBkb3VibGVUaW1lKTsKLSAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhEb3Vi
bGUoZG91YmxlIGRvdWJsZVRpbWUsIHVpbnQzMl90IHRpbWVTY2FsZSk7Ci0KLSAgICBmbG9hdCB0
b0Zsb2F0KCkgY29uc3Q7Ci0gICAgZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7Ci0KLSAgICBNZWRp
YVRpbWUmIG9wZXJhdG9yPShjb25zdCBNZWRpYVRpbWUmIHJocyk7Ci0gICAgTWVkaWFUaW1lJiBv
cGVyYXRvcis9KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7IHJldHVybiAqdGhpcyA9ICp0aGlzICsg
cmhzOyB9Ci0gICAgTWVkaWFUaW1lJiBvcGVyYXRvci09KGNvbnN0IE1lZGlhVGltZSYgcmhzKSB7
IHJldHVybiAqdGhpcyA9ICp0aGlzIC0gcmhzOyB9Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yKyhj
b25zdCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLShjb25z
dCBNZWRpYVRpbWUmIHJocykgY29uc3Q7Ci0gICAgTWVkaWFUaW1lIG9wZXJhdG9yLSgpIGNvbnN0
OwotICAgIE1lZGlhVGltZSBvcGVyYXRvciooaW50MzJfdCkgY29uc3Q7Ci0gICAgYm9vbCBvcGVy
YXRvcjwoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA9
PSBMZXNzVGhhbjsgfQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE1lZGlhVGltZSYgcmhzKSBj
b25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gR3JlYXRlclRoYW47IH0KLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhz
KSAhPSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhVGltZSYgcmhz
KSBjb25zdCB7IHJldHVybiBjb21wYXJlKHJocykgPT0gRXF1YWxUbzsgfQotICAgIGJvb2wgb3Bl
cmF0b3I+PShjb25zdCBNZWRpYVRpbWUmIHJocykgY29uc3QgeyByZXR1cm4gY29tcGFyZShyaHMp
ID49IEVxdWFsVG87IH0KLSAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgTWVkaWFUaW1lJiByaHMp
IGNvbnN0IHsgcmV0dXJuIGNvbXBhcmUocmhzKSA8PSBFcXVhbFRvOyB9Ci0gICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdDsKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3Q7Ci0KLSAg
ICB0eXBlZGVmIGVudW0gewotICAgICAgICBMZXNzVGhhbiA9IC0xLAotICAgICAgICBFcXVhbFRv
ID0gMCwKLSAgICAgICAgR3JlYXRlclRoYW4gPSAxLAotICAgIH0gQ29tcGFyaXNvbkZsYWdzOwot
Ci0gICAgQ29tcGFyaXNvbkZsYWdzIGNvbXBhcmUoY29uc3QgTWVkaWFUaW1lJiByaHMpIGNvbnN0
OwotICAgIGJvb2wgaXNCZXR3ZWVuKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYp
IGNvbnN0OwotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRmxhZ3Mg
JiBWYWxpZDsgfQorICAgIGNvbnN0ZXhwciBNZWRpYVRpbWUoKSA6IE1lZGlhVGltZSB7IGludDY0
X3QgeyB9LCBEZWZhdWx0VGltZVNjYWxlIH0geyB9CisgICAgY29uc3RleHByIE1lZGlhVGltZShp
bnQ2NF90IHZhbHVlLCB1aW50MzJfdCBzY2FsZSwgT3B0aW9uU2V0PEZsYWc+ID0geyBWYWxpZCB9
KTsKKworICAgIHN0YXRpYyBNZWRpYVRpbWUgY3JlYXRlV2l0aEZsb2F0KGZsb2F0IHZhbHVlKTsK
KyAgICBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0ZVdpdGhGbG9hdChmbG9hdCB2YWx1ZSwgdWludDMy
X3Qgc2NhbGUpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTWVkaWFUaW1lIGNyZWF0
ZVdpdGhEb3VibGUoZG91YmxlIHZhbHVlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IE1lZGlhVGltZSBjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSB2YWx1ZSwgdWludDMyX3Qgc2NhbGUp
OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGZsb2F0IHRvRmxvYXQoKSBjb25zdDsKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgZG91YmxlIHRvRG91YmxlKCkgY29uc3Q7CisKKyAgICBNZWRpYVRp
bWUmIG9wZXJhdG9yKz0oTWVkaWFUaW1lIHJocykgeyByZXR1cm4gKnRoaXMgPSAqdGhpcyArIHJo
czsgfQorICAgIE1lZGlhVGltZSYgb3BlcmF0b3ItPShNZWRpYVRpbWUgcmhzKSB7IHJldHVybiAq
dGhpcyA9ICp0aGlzIC0gcmhzOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBv
cGVyYXRvcisoTWVkaWFUaW1lKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWVkaWFU
aW1lIG9wZXJhdG9yLShNZWRpYVRpbWUpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBN
ZWRpYVRpbWUgb3BlcmF0b3ItKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlh
VGltZSBvcGVyYXRvciooaW50MzJfdCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdDsKKworICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUgc3Rk
Ojp3ZWFrX29yZGVyaW5nIG9wZXJhdG9yPD0+KE1lZGlhVGltZSwgTWVkaWFUaW1lKTsKKyAgICBi
b29sIG9wZXJhdG9yPT0oTWVkaWFUaW1lIG90aGVyKSBjb25zdCB7IHJldHVybiBpc19lcSgqdGhp
cyA8PT4gb3RoZXIpOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNCZXR3ZWVuKE1l
ZGlhVGltZSwgTWVkaWFUaW1lKSBjb25zdDsKKworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoVmFsaWQpOyB9CiAgICAgYm9vbCBpc0ludmFsaWQoKSBj
b25zdCB7IHJldHVybiAhaXNWYWxpZCgpOyB9Ci0gICAgYm9vbCBoYXNCZWVuUm91bmRlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgSGFzQmVlblJvdW5kZWQ7IH0KLSAgICBib29sIGlz
UG9zaXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgUG9zaXRpdmVJ
bmZpbml0ZTsgfQotICAgIGJvb2wgaXNOZWdhdGl2ZUluZmluaXRlKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lRmxhZ3MgJiBOZWdhdGl2ZUluZmluaXRlOyB9Ci0gICAgYm9vbCBpc0luZGVmaW5pdGUo
KSBjb25zdCB7IHJldHVybiBtX3RpbWVGbGFncyAmIEluZGVmaW5pdGU7IH0KKyAgICBib29sIGhh
c0JlZW5Sb3VuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncy5jb250YWlucyhIYXNCZWVuUm91
bmRlZCk7IH0KKyAgICBib29sIGlzUG9zaXRpdmVJbmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZmxhZ3MuY29udGFpbnMoUG9zaXRpdmVJbmZpbml0ZSk7IH0KKyAgICBib29sIGlzTmVnYXRpdmVJ
bmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoTmVnYXRpdmVJbmZpbml0
ZSk7IH0KKyAgICBib29sIGlzSW5kZWZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29u
dGFpbnMoSW5kZWZpbml0ZSk7IH0KICAgICBib29sIGlzRmluaXRlKCkgY29uc3QgeyByZXR1cm4g
IWlzSW52YWxpZCgpICYmICFpc0luZGVmaW5pdGUoKSAmJiAhaXNQb3NpdGl2ZUluZmluaXRlKCkg
JiYgIWlzTmVnYXRpdmVJbmZpbml0ZSgpOyB9Ci0gICAgYm9vbCBoYXNEb3VibGVWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzICYgRG91YmxlVmFsdWU7IH0KLSAgICB1aW50OF90IHRp
bWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZsYWdzOyB9CisgICAgYm9vbCBoYXNEb3Vi
bGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MuY29udGFpbnMoRG91YmxlVmFsdWUpOyB9
CisgICAgT3B0aW9uU2V0PEZsYWc+IHRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7
IH0KIAotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIHplcm9UaW1lKCk7Ci0gICAgc3RhdGlj
IGNvbnN0IE1lZGlhVGltZSYgaW52YWxpZFRpbWUoKTsKLSAgICBzdGF0aWMgY29uc3QgTWVkaWFU
aW1lJiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUm
IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgc3RhdGljIGNvbnN0IE1lZGlhVGltZSYgaW5k
ZWZpbml0ZVRpbWUoKTsKKyAgICBzdGF0aWMgY29uc3RleHByIE1lZGlhVGltZSB6ZXJvVGltZSgp
IHsgcmV0dXJuIHsgMCwgMSwgVmFsaWQgfTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgTWVkaWFU
aW1lIGludmFsaWRUaW1lKCkgeyByZXR1cm4geyAtMSwgMSwgeyB9IH07IH0KKyAgICBzdGF0aWMg
Y29uc3RleHByIE1lZGlhVGltZSBwb3NpdGl2ZUluZmluaXRlVGltZSgpIHsgcmV0dXJuIHsgMCwg
MSwgeyBQb3NpdGl2ZUluZmluaXRlLCBWYWxpZCB9IH07IH0KKyAgICBzdGF0aWMgY29uc3RleHBy
IE1lZGlhVGltZSBuZWdhdGl2ZUluZmluaXRlVGltZSgpIHsgcmV0dXJuIHsgLTEsIDEsIHsgTmVn
YXRpdmVJbmZpbml0ZSwgVmFsaWQgfSB9OyB9CisgICAgc3RhdGljIGNvbnN0ZXhwciBNZWRpYVRp
bWUgaW5kZWZpbml0ZVRpbWUoKSB7IHJldHVybiB7IDAsIDEsIHsgSW5kZWZpbml0ZSwgVmFsaWQg
fSB9OyB9CiAKLSAgICBjb25zdCBpbnQ2NF90JiB0aW1lVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3RpbWVWYWx1ZTsgfQotICAgIGNvbnN0IHVpbnQzMl90JiB0aW1lU2NhbGUoKSBjb25zdCB7IHJl
dHVybiBtX3RpbWVTY2FsZTsgfQorICAgIGludDY0X3QgdGltZVZhbHVlKCkgY29uc3QgeyBBU1NF
UlQoIWhhc0RvdWJsZVZhbHVlKCkpOyByZXR1cm4gbV92YWx1ZTsgfQorICAgIHVpbnQzMl90IHRp
bWVTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KIAotICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwotICAgIFJlZjxKU09OOjpPYmplY3Q+IHRvSlNPTk9i
amVjdCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgdG9KU09OU3RyaW5n
KCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFJlZjxKU09OOjpPYmplY3Q+IHRvSlNP
Tk9iamVjdCgpIGNvbnN0OwogCiAgICAgLy8gTWFrZSB0aGUgZm9sbG93aW5nIGNhc3RzIGVycm9y
czoKICAgICBvcGVyYXRvciBkb3VibGUoKSBjb25zdCA9IGRlbGV0ZTsKQEAgLTEyMCw5MyArMTAx
LDk5IEBAIHB1YmxpYzoKICAgICBvcGVyYXRvciBpbnQoKSBjb25zdCA9IGRlbGV0ZTsKICAgICBN
ZWRpYVRpbWUoaW50KSA9IGRlbGV0ZTsKIAotICAgIGZyaWVuZCBXVEZfRVhQT1JUX1BSSVZBVEUg
TWVkaWFUaW1lIGFicyhjb25zdCBNZWRpYVRpbWUmIHJocyk7CisgICAgZnJpZW5kIFdURl9FWFBP
UlRfUFJJVkFURSBNZWRpYVRpbWUgYWJzKE1lZGlhVGltZSk7CiAKLSAgICBzdGF0aWMgY29uc3Qg
dWludDMyX3QgRGVmYXVsdFRpbWVTY2FsZSA9IDEwMDAwMDAwOwotICAgIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBNYXhpbXVtVGltZVNjYWxlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3Qg
RGVmYXVsdFRpbWVTY2FsZSA9IDEwMDAwMDAwOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgY29uc3QgdWludDMyX3QgTWF4aW11bVRpbWVTY2FsZTsKIAotICAgIGVudW0gY2xhc3MgUm91
bmRpbmdGbGFncyB7Ci0gICAgICAgIEhhbGZBd2F5RnJvbVplcm8gPSAwLAorICAgIGVudW0gY2xh
c3MgUm91bmRpbmdNb2RlIDogdWludDMyX3QgeworICAgICAgICBIYWxmQXdheUZyb21aZXJvLAog
ICAgICAgICBUb3dhcmRaZXJvLAogICAgICAgICBBd2F5RnJvbVplcm8sCiAgICAgICAgIFRvd2Fy
ZFBvc2l0aXZlSW5maW5pdHksCiAgICAgICAgIFRvd2FyZE5lZ2F0aXZlSW5maW5pdHksCiAgICAg
fTsKLQotICAgIE1lZGlhVGltZSB0b1RpbWVTY2FsZSh1aW50MzJfdCwgUm91bmRpbmdGbGFncyA9
IFJvdW5kaW5nRmxhZ3M6OkhhbGZBd2F5RnJvbVplcm8pIGNvbnN0OworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBNZWRpYVRpbWUgdG9UaW1lU2NhbGUodWludDMyX3Qgc2NhbGUsIFJvdW5kaW5nTW9k
ZSA9IFJvdW5kaW5nTW9kZTo6SGFsZkF3YXlGcm9tWmVybykgY29uc3Q7CiAKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShE
ZWNvZGVyJiwgTWVkaWFUaW1lJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRUaW1lU2NhbGUo
dWludDMyX3QsIFJvdW5kaW5nRmxhZ3MgPSBSb3VuZGluZ0ZsYWdzOjpIYWxmQXdheUZyb21aZXJv
KTsKKyAgICBlbnVtIFVzZURvdWJsZUZsYWcgeyBVc2VEb3VibGUgfTsKKyAgICBjb25zdGV4cHIg
TWVkaWFUaW1lKFVzZURvdWJsZUZsYWcsIGRvdWJsZSB2YWx1ZSk7CisKKyAgICB2b2lkIHNldFRp
bWVTY2FsZSh1aW50MzJfdCwgUm91bmRpbmdNb2RlID0gUm91bmRpbmdNb2RlOjpIYWxmQXdheUZy
b21aZXJvKTsKIAogICAgIHVuaW9uIHsKLSAgICAgICAgaW50NjRfdCBtX3RpbWVWYWx1ZTsKLSAg
ICAgICAgZG91YmxlIG1fdGltZVZhbHVlQXNEb3VibGU7CisgICAgICAgIGludDY0X3QgbV92YWx1
ZTsKKyAgICAgICAgZG91YmxlIG1fdmFsdWVBc0RvdWJsZTsKICAgICB9OwotICAgIHVpbnQzMl90
IG1fdGltZVNjYWxlOwotICAgIHVpbnQ4X3QgbV90aW1lRmxhZ3M7CisgICAgdWludDMyX3QgbV9z
Y2FsZSB7IERlZmF1bHRUaW1lU2NhbGUgfTsKKyAgICBPcHRpb25TZXQ8RmxhZz4gbV9mbGFncyB7
IFZhbGlkIH07CiB9OwogCi1jb25zdGV4cHIgTWVkaWFUaW1lOjpNZWRpYVRpbWUoKQotICAgIDog
bV90aW1lVmFsdWUoMCkKLSAgICAsIG1fdGltZVNjYWxlKERlZmF1bHRUaW1lU2NhbGUpCi0gICAg
LCBtX3RpbWVGbGFncyhWYWxpZCkKLXsKLX0KLQotY29uc3RleHByIE1lZGlhVGltZTo6TWVkaWFU
aW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCB1aW50OF90IGZsYWdzKQotICAgIDog
bV90aW1lVmFsdWUodmFsdWUpCi0gICAgLCBtX3RpbWVTY2FsZShzY2FsZSkKLSAgICAsIG1fdGlt
ZUZsYWdzKGZsYWdzKQotewotICAgIGlmIChzY2FsZSB8fCAhKGZsYWdzICYgVmFsaWQpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAqdGhpcyA9IHZhbHVlIDwgMCA/IG5lZ2F0aXZlSW5maW5pdGVU
aW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwotfQotCi1pbmxpbmUgTWVkaWFUaW1lIG9w
ZXJhdG9yKihpbnQzMl90IGxocywgY29uc3QgTWVkaWFUaW1lJiByaHMpIHsgcmV0dXJuIHJocy5v
cGVyYXRvcioobGhzKTsgfQotCi1XVEZfRVhQT1JUX1BSSVZBVEUgZXh0ZXJuIE1lZGlhVGltZSBh
YnMoY29uc3QgTWVkaWFUaW1lJiByaHMpOworV1RGX0VYUE9SVF9QUklWQVRFIE1lZGlhVGltZSBh
YnMoTWVkaWFUaW1lKTsKIAotc3RydWN0IFdURl9FWFBPUlRfUFJJVkFURSBNZWRpYVRpbWVSYW5n
ZSB7CitzdHJ1Y3QgTWVkaWFUaW1lUmFuZ2UgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKIAotICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgU3RyaW5nIHRvSlNPTlN0cmluZygpIGNvbnN0OwogCi0gICAgY29uc3QgTWVk
aWFUaW1lIHN0YXJ0OwotICAgIGNvbnN0IE1lZGlhVGltZSBlbmQ7CisgICAgTWVkaWFUaW1lIHN0
YXJ0OworICAgIE1lZGlhVGltZSBlbmQ7CiB9OwogCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgot
dm9pZCBNZWRpYVRpbWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorY29uc3RleHBy
IE1lZGlhVGltZTo6TWVkaWFUaW1lKGludDY0X3QgdmFsdWUsIHVpbnQzMl90IHNjYWxlLCBPcHRp
b25TZXQ8RmxhZz4gZmxhZ3MpCisgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICwgbV9zY2FsZShz
Y2FsZSkKKyAgICAsIG1fZmxhZ3MoZmxhZ3MpCit7CisgICAgaWYgKCEoc2NhbGUgfHwgIShmbGFn
cyAmIFZhbGlkKSkpCisgICAgICAgICp0aGlzID0gdmFsdWUgPCAwID8gbmVnYXRpdmVJbmZpbml0
ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBNZWRpYVRpbWUgb3BlcmF0b3IqKGNvbnN0IFQmIGEsIE1lZGlhVGltZSBiKQog
ewotICAgIGVuY29kZXIgPDwgbV90aW1lVmFsdWUgPDwgbV90aW1lU2NhbGUgPDwgbV90aW1lRmxh
Z3M7CisgICAgcmV0dXJuIGIgKiBhOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotYm9v
bCBNZWRpYVRpbWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBNZWRpYVRpbWUmIHRpbWUpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPiB2b2lkIE1lZGlhVGltZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1l
VmFsdWUpCi0gICAgICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lU2NhbGUpCi0gICAg
ICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV90aW1lRmxhZ3MpOworICAgIGVuY29kZXIgPDwg
bV92YWx1ZSA8PCBtX3NjYWxlIDw8IG1fZmxhZ3M7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERl
Y29kZXI+IGJvb2wgTWVkaWFUaW1lOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFUaW1l
JiB0aW1lKQoreworICAgIHJldHVybiBkZWNvZGVyLmRlY29kZSh0aW1lLm1fdmFsdWUpCisgICAg
ICAgICYmIGRlY29kZXIuZGVjb2RlKHRpbWUubV9zY2FsZSkKKyAgICAgICAgJiYgZGVjb2Rlci5k
ZWNvZGUodGltZS5tX2ZsYWdzKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dB
cmd1bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFUaW1lPiB7Ci0g
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBNZWRpYVRpbWUmIHRpbWUpIHsgcmV0dXJu
IHRpbWUudG9KU09OU3RyaW5nKCk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKE1lZGlh
VGltZSB0aW1lKSB7IHJldHVybiB0aW1lLnRvSlNPTlN0cmluZygpOyB9CiB9OwogdGVtcGxhdGU8
PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8TWVkaWFUaW1lUmFuZ2U+IHsKICAgICBzdGF0aWMgU3RyaW5n
IHRvU3RyaW5nKGNvbnN0IE1lZGlhVGltZVJhbmdlJiByYW5nZSkgeyByZXR1cm4gcmFuZ2UudG9K
U09OU3RyaW5nKCk7IH0KIH07CiAKICNpZm5kZWYgTkRFQlVHCi1XVEZfRVhQT1JUX1BSSVZBVEUg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgTWVkaWFUaW1lJik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgTWVk
aWFUaW1lKTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPE1lZGlhVGlt
ZTo6RmxhZz4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIE1lZGlh
VGltZTo6RmxhZywKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpWYWxpZCwKKyAgICAgICAgTWVk
aWFUaW1lOjpGbGFnOjpIYXNCZWVuUm91bmRlZCwKKyAgICAgICAgTWVkaWFUaW1lOjpGbGFnOjpQ
b3NpdGl2ZUluZmluaXRlLAorICAgICAgICBNZWRpYVRpbWU6OkZsYWc6Ok5lZ2F0aXZlSW5maW5p
dGUsCisgICAgICAgIE1lZGlhVGltZTo6RmxhZzo6SW5kZWZpbml0ZSwKKyAgICAgICAgTWVkaWFU
aW1lOjpGbGFnOjpEb3VibGVWYWx1ZQorICAgID47Cit9OworCiB9CiAKIHVzaW5nIFdURjo6TWVk
aWFUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvclB0ci5oIGIv
U291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvclB0ci5oCmluZGV4IDU1MGMxYjFlMGU4MWJiYmFm
MGY4YmU2MjlkNjgwOTZkZjdhODc5ODAuLmYwNzM3YzU0YzgyN2NjYTdlNjQ4ODVjMjY0ZjkzNmFj
ZGFhNzAyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3JQdHIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9yUHRyLmgKQEAgLTYxLDggKzYxLDcgQEAg
cHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1f
cHRyOyB9CiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9wdHI7IH0KIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShNZXRhQWxsb2NhdG9yUHRyIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX3B0ciA9PSBvdGhlci5tX3B0cjsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShNZXRhQWxsb2Nh
dG9yUHRyIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3B0ciAhPSBvdGhlci5tX3B0cjsgfQorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBNZXRhQWxsb2NhdG9yUHRyJikgY29uc3QgPSBkZWZhdWx0
OwogCiAgICAgTWV0YUFsbG9jYXRvclB0ciBvcGVyYXRvcisoc2l6ZV90IHNpemVJbkJ5dGVzKSBj
b25zdCB7IHJldHVybiBNZXRhQWxsb2NhdG9yUHRyKHVudGFnZ2VkUHRyPHVpbnQ4X3QqPigpICsg
c2l6ZUluQnl0ZXMpOyB9CiAgICAgTWV0YUFsbG9jYXRvclB0ciBvcGVyYXRvci0oc2l6ZV90IHNp
emVJbkJ5dGVzKSBjb25zdCB7IHJldHVybiBNZXRhQWxsb2NhdG9yUHRyKHVudGFnZ2VkUHRyPHVp
bnQ4X3QqPigpIC0gc2l6ZUluQnl0ZXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9P
YmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKaW5k
ZXggOTFlMmZiZjg4MDRmMGZhMTQ3YWE5MmIwYzk1MGRjYzRkMjlkMjk0NC4uZjZlMzkwYzNkOTE5
MzczZDIyNWNlN2U3YTAwMTM5YjhmZjhhZWJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
T2JqZWN0SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIu
aApAQCAtODUsMTEgKzg1LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVy
ID09IG90aGVyLm1faWRlbnRpZmllcjsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgT2JqZWN0SWRlbnRpZmllciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV9pZGVudGlmaWVyICE9IG90aGVyLm1faWRlbnRpZmllcjsKLSAgICB9Ci0KICAgICB1aW50NjRf
dCB0b1VJbnQ2NCgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIGV4cGxpY2l0
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvT3B0aW9uU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25T
ZXQuaAppbmRleCA2ZTY0OTNmMGFkNDJhMDk3ZmQ2MzJkMGM2NGZlMGQ1MzNmMzFlMDJiLi5hMjUy
MzFkODI2YzVkZjg1YTQwZmM1ZDk2NzBjNmQ4YTc2ODA1NWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9PcHRpb25TZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaApAQCAt
MTIzLDggKzEyMyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBJdGVyYXRvciYgb3BlcmF0b3IrKyhp
bnQpID0gZGVsZXRlOwogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsgfQotICAgICAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlICE9IG90aGVyLm1fdmFsdWU7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSXRl
cmF0b3IoU3RvcmFnZVR5cGUgdmFsdWUpIDogbV92YWx1ZSh2YWx1ZSkgeyB9CkBAIC0yMTIsMTUg
KzIxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhhc0V4YWN0bHlPbmVCaXRTZXQoKSA/
IHN0ZDo6b3B0aW9uYWw8RT4oc3RhdGljX2Nhc3Q8RT4obV9zdG9yYWdlKSkgOiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCi0gICAgY29uc3RleHByIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9u
U2V0IGxocywgT3B0aW9uU2V0IHJocykKLSAgICB7Ci0gICAgICAgIHJldHVybiBsaHMubV9zdG9y
YWdlID09IHJocy5tX3N0b3JhZ2U7Ci0gICAgfQotCi0gICAgY29uc3RleHByIGZyaWVuZCBib29s
IG9wZXJhdG9yIT0oT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0IHJocykKLSAgICB7Ci0gICAgICAg
IHJldHVybiBsaHMubV9zdG9yYWdlICE9IHJocy5tX3N0b3JhZ2U7Ci0gICAgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBPcHRpb25TZXQmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBjb25z
dGV4cHIgZnJpZW5kIE9wdGlvblNldCBvcGVyYXRvcnwoT3B0aW9uU2V0IGxocywgT3B0aW9uU2V0
IHJocykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcmRlck1ha2VyLmggYi9T
b3VyY2UvV1RGL3d0Zi9PcmRlck1ha2VyLmgKaW5kZXggZjZmMmM5OTIwMmU3MmRmZDNjMGMxMTYw
OGFlZjI4Yzk3ZjIxZDdiMC4uYzY1ZmNiZmYzOTY0MGMzMzgxN2IxY2E0M2NhYzYxMzYxODFlOWVm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT3JkZXJNYWtlci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL09yZGVyTWFrZXIuaApAQCAtODQsMTEgKzg0LDcgQEAgcHVibGljOgogCiAgICAgY2xh
c3MgaXRlcmF0b3IgewogICAgIHB1YmxpYzoKLSAgICAgICAgaXRlcmF0b3IoKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvcihOb2RlKiBub2RlKQorICAgICAgICBpdGVy
YXRvcihOb2RlKiBub2RlID0gbnVsbHB0cikKICAgICAgICAgICAgIDogbV9ub2RlKG5vZGUpCiAg
ICAgICAgIHsKICAgICAgICAgfQpAQCAtMTA0LDE1ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgICAgIAogICAg
IHByaXZhdGU6CiAgICAgICAgIE5vZGUqIG1fbm9kZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BhY2tlZC5oIGIvU291cmNlL1dURi93dGYvUGFja2VkLmgKaW5kZXgg
MGQ5NGY4OTBlYWVjNWFhMDE1MDI2MWZjMTkxYzc5ZmU4NWNmM2I0Mi4uZmQ2YzQ0ZGQ1N2NiN2Ni
NTQ1NTQxYTRiOWE3MDAzNjdiYmI5ZWUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGFj
a2VkLmgKKysrIGIvU291cmNlL1dURi93dGYvUGFja2VkLmgKQEAgLTEwMCw2ICsxMDAsOSBAQCBw
dWJsaWM6CiAgICAgICAgIHNldCh0MSk7CiAgICAgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KFBh
Y2tlZCBvdGhlcikgY29uc3QgeyByZXR1cm4gZ2V0KCkgPT0gb3RoZXIuZ2V0KCk7IH0KKyAgICBm
cmllbmQgYXV0byBvcGVyYXRvcjw9PihQYWNrZWQgYSwgUGFja2VkIGIpIHsgcmV0dXJuIGEuZ2V0
KCkgPD0+IGIuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIHNp
emVvZihUKT4gbV9zdG9yYWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Jhbmdl
LmggYi9Tb3VyY2UvV1RGL3d0Zi9SYW5nZS5oCmluZGV4IGE5NmJmOWEwNjFjNzEyZmIzY2ZhNjMx
YmE0Yzk4YjNhMTA4NmZhMWEuLmYzNDcxY2U5ZTVhNjM5MWU2MzI5ZDdiNmQ0ZDc2YTllMzNkOGQ0
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JhbmdlLmgKKysrIGIvU291cmNlL1dURi93
dGYvUmFuZ2UuaApAQCAtNzMsMTYgKzczLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gUmFu
Z2Uoc3RkOjpudW1lcmljX2xpbWl0czxUeXBlPjo6bWluKCksIHN0ZDo6bnVtZXJpY19saW1pdHM8
VHlwZT46Om1heCgpKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmFuZ2Um
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0gb3RoZXIubV9i
ZWdpbgotICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7Ci0gICAgfQotCi0gICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFJhbmdlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFJhbmdlJikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiBtX2JlZ2luICE9IG1fZW5kOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1JlZi5oIGIvU291cmNlL1dURi93dGYvUmVmLmgKaW5kZXggNTc0OTlh
ZDlhMDk0NWI1YTYxN2YxMGUwYzI3NWYwMmMwNDA1YzZiZS4uNmU4ODFlNTBkMzIyMTRiN2UwNzVm
YjAyZTJlZjNmNmJkYmM2NDY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmLmgKKysr
IGIvU291cmNlL1dURi93dGYvUmVmLmgKQEAgLTI5NCwzMCArMjk0LDYgQEAgaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBSZWY8VCwgVT4mIGEsIFYmIGIpCiAgICAgcmV0dXJuIGEucHRyKCkg
PT0gJmI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KFQmIGEsIGNvbnN0IFJlZjxVLCBWPiYgYikKLXsKLSAg
ICByZXR1cm4gJmEgPT0gYi5wdHIoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVz4KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgUmVmPFQsIFU+JiBhLCBjb25zdCBSZWY8ViwgVz4mIGIpCi17Ci0gICAgcmV0dXJuIGEucHRy
KCkgIT0gYi5wdHIoKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlw
ZW5hbWUgVj4KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVmPFQsIFU+JiBhLCBWJiBi
KQotewotICAgIHJldHVybiBhLnB0cigpICE9ICZiOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUJiBhLCBj
b25zdCBSZWY8VSwgVj4mIGIpCi17Ci0gICAgcmV0dXJuICZhICE9IGIucHRyKCk7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OlJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1JlZkNvdW50ZWRGaXhlZFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRl
ZEZpeGVkVmVjdG9yLmgKaW5kZXggY2JlNzIzYjcxYzAyZWZhMzI0ZWFlZGM1MDk4OWJjYzlhZTZl
NDUzYy4uMWRiZTU0NGQ0OTQzNGNhYjFjOTQ5NTNhMDY5MDI5ZGNiOTdjYzgzNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmgKQEAgLTcwLDExICs3MCw2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZShCYXNlOjpiZWdpbigpLCBCYXNlOjplbmQoKSk7CiAgICAg
fQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2Um
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwot
ICAgIH0KLQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZDb3VudGVkRml4ZWRWZWN0b3JC
YXNlJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChCYXNlOjpzaXplKCkgIT0gb3Ro
ZXIuc2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9SZWZQdHIuaAppbmRleCAwYWVjMTBjM2RlNjA2NWFiMTBkNWU5NDA1MzEzYjMyNWU1
M2EzNGJiLi4wNmVlYjhhMzFlYzE0YTVhZmZjNWI3MTFiODU4NjA5MWU1N2Y4NWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aApAQCAtMjEyLDMwICsyMTIsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZlB0
cjxULCBVLCBWPiYgYSwgWCogYikKICAgICByZXR1cm4gYS5nZXQoKSA9PSBiOyAKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4KLWlu
bGluZSBib29sIG9wZXJhdG9yPT0oVCogYSwgY29uc3QgUmVmUHRyPFgsIFksIFo+JiBiKQotewot
ICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBYLCB0eXBlbmFtZSBZLCB0eXBlbmFtZSBaPgot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWZQdHI8VCwgVSwgVj4mIGEsIGNvbnN0IFJl
ZlB0cjxYLCBZLCBaPiYgYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCi19
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1l
IFg+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZlB0cjxULCBVLCBWPiYgYSwgWCog
YikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgWCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4KLWlubGluZSBib29sIG9wZXJh
dG9yIT0oVCogYSwgY29uc3QgUmVmUHRyPFgsIFksIFo+JiBiKQoteyAKLSAgICByZXR1cm4gYSAh
PSBiLmdldCgpOyAKLX0KLQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSA9IFJhd1B0
clRyYWl0czxUPiwgdHlwZW5hbWUgViA9IERlZmF1bHRSZWZEZXJlZlRyYWl0czxUPiwgdHlwZW5h
bWUgWCwgdHlwZW5hbWUgWSwgdHlwZW5hbWUgWj4KIGlubGluZSBSZWZQdHI8VCwgVSwgVj4gc3Rh
dGljX3BvaW50ZXJfY2FzdChjb25zdCBSZWZQdHI8WCwgWSwgWj4mIHApCiB7IApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUmV0YWluUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIu
aAppbmRleCBkZDQ3NzliZmE1OGEwYTc4OGExMDI3YWQ0NmQ5ZDk3NjhiOTEzZDMyLi45ZDZjOWFm
OGFjYTM1YzczNTJlZGQzMGI0MzFlOWJjNWFiNWRlMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9SZXRhaW5QdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaApAQCAtMjky
LDI2ICsyOTIsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFJldGFpblB0cjxUPiYgYQogICAgIHJldHVybiBhLmdldCgp
ID09IGI7IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IFJldGFpblB0cjxVPiYgYikKLXsKLSAgICByZXR1
cm4gYSA9PSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXRhaW5QdHI8VD4mIGEsIGNvbnN0IFJl
dGFpblB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCi19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
IT0oY29uc3QgUmV0YWluUHRyPFQ+JiBhLCBVKiBiKQotewotICAgIHJldHVybiBhLmdldCgpICE9
IGI7IAotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBjb25zdGV4cHIgYm9v
bCBvcGVyYXRvciE9KFQqIGEsIGNvbnN0IFJldGFpblB0cjxVPiYgYikKLXsgCi0gICAgcmV0dXJu
IGEgIT0gYi5nZXQoKTsgCi19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBSZXRh
aW5QdHI8VD4gYWRvcHRDRihUIENGX1JFTEVBU0VTX0FSR1VNRU5UIHB0cikKIHsKICNpZmRlZiBf
X09CSkNfXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oIGIvU291cmNlL1dU
Ri93dGYvU2Vjb25kcy5oCmluZGV4IGQyODJkYmJmNzE1YmU3NDI3ODllYTEwZjFjY2IyOWFkMTQ1
MzU2NGYuLjNiYTU0MmVjZTViYjYyNmVmODA3OTFiYmE1NzAxMDk3OWY3NzVlNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1NlY29uZHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRz
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
TWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTE4OCwzNSArMTg5LDcgQEAgcHVi
bGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBBcHByb3hpbWF0ZVRpbWUgb3BlcmF0b3ItKEFw
cHJveGltYXRlVGltZSkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFRpbWVXaXRoRHlu
YW1pY0Nsb2NrVHlwZSBvcGVyYXRvci0oY29uc3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJikg
Y29uc3Q7CiAgICAgCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShTZWNvbmRzIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsK
LSAgICB9Ci0gICAgCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShTZWNvbmRzIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgIT0gb3RoZXIubV92YWx1ZTsK
LSAgICB9Ci0gICAgCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8KFNlY29uZHMgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA8IG90aGVyLm1fdmFsdWU7Ci0g
ICAgfQotICAgIAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihTZWNvbmRzIG90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPiBvdGhlci5tX3ZhbHVlOwotICAg
IH0KLSAgICAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KFNlY29uZHMgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA8PSBvdGhlci5tX3ZhbHVlOwotICAg
IH0KLSAgICAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49KFNlY29uZHMgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA+PSBvdGhlci5tX3ZhbHVlOwotICAg
IH0KKyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihTZWNvbmRzLCBTZWNvbmRzKSA9IGRlZmF1
bHQ7CiAgICAgCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OwogICAgIApAQCAtMzcyLDQgKzM0NSwzIEBAIGlubGluZSBib29sIGlzZmluaXRlKFdU
Rjo6U2Vjb25kcyBzZWNvbmRzKQogfSAvLyBuYW1lc3BhY2Ugc3RkCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXVEY6OnNlY29uZHNfbGl0ZXJhbHM7Ci11c2luZyBXVEY6OlNlY29uZHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9TZWdtZW50ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1NlZ21l
bnRlZFZlY3Rvci5oCmluZGV4IGM1YjllOGExZWNkZDM1ZDVjYjNkZDlkZTU1MTBlMGM0ODI5YzYz
NTEuLmY1ODExZGZjYjEwZDVjYjMxZGFmMThlZjFjMDhmYmU4YWZiYzY2NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Nl
Z21lbnRlZFZlY3Rvci5oCkBAIC01MCw4ICs1MCw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICB1c2luZyBwb2ludGVyID0gY29uc3QgVCo7CiAgICAgICAgIHVzaW5nIHJlZmVyZW5jZSA9IGNv
bnN0IFQmOwogCi0gICAgICAgIH5TZWdtZW50ZWRWZWN0b3JJdGVyYXRvcigpIHsgfQotCiAgICAg
ICAgIFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLmF0KG1faW5kZXgpOyB9
CiAgICAgICAgIFQqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV92ZWN0b3IuYXQobV9p
bmRleCk7IH0KIApAQCAtNjcsMTggKzY1LDYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAg
ICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4ICYmICZtX3ZlY3RvciA9PSAmb3RoZXIu
bV92ZWN0b3I7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRl
cmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9pbmRl
eCAhPSBvdGhlci5tX2luZGV4IHx8ICZtX3ZlY3RvciAhPSAmb3RoZXIubV92ZWN0b3I7Ci0gICAg
ICAgIH0KLQotICAgICAgICBTZWdtZW50ZWRWZWN0b3JJdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0
IFNlZ21lbnRlZFZlY3Rvckl0ZXJhdG9yPFQsIFNlZ21lbnRTaXplPiYgb3RoZXIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG1fdmVjdG9yID0gb3RoZXIubV92ZWN0b3I7Ci0gICAgICAgICAgICBt
X2luZGV4ID0gb3RoZXIubV9pbmRleDsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAg
ICAgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgU2VnbWVudGVkVmVjdG9ySXRlcmF0b3IoU2Vn
bWVudGVkVmVjdG9yPFQsIFNlZ21lbnRTaXplPiYgdmVjdG9yLCBzaXplX3QgaW5kZXgpCiAgICAg
ICAgICAgICA6IG1fdmVjdG9yKHZlY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Np
bmdsZVJvb3RHcmFwaC5oIGIvU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgKaW5kZXgg
NGQzYjVlYmI1M2FmMGY0NGIwNGMxOTUzNTZmNThiMDU0NGZmNWFjNy4uZTNlYmYzOTM1MTZjZmFj
Nzk4ZTFiYWEzNDNjNjkzYjAyZTlhMThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2lu
Z2xlUm9vdEdyYXBoLmgKKysrIGIvU291cmNlL1dURi93dGYvU2luZ2xlUm9vdEdyYXBoLmgKQEAg
LTUzLDE2ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZQotICAgICAg
ICAgICAgJiYgbV9pc1Jvb3QgPT0gb3RoZXIubV9pc1Jvb3Q7Ci0gICAgfQotCi0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFNpbmdsZVJvb3RHcmFwaE5vZGUmIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2luZ2xlUm9vdEdyYXBoTm9kZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAg
IGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAqdGhpcyAhPSBTaW5nbGVS
b290R3JhcGhOb2RlKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU21hbGxTZXQu
aCBiL1NvdXJjZS9XVEYvd3RmL1NtYWxsU2V0LmgKaW5kZXggYzBlNGZmNjU3YzdkZWIyNjMzOTBk
ZWNhNTM5OTc3MGE4OWQ2NGEwMS4uYjc0ZTlkNzA1NmFjNTRiZDljODU2ZTQyMzA2NjJkMzIzODE5
MDZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU21hbGxTZXQuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9TbWFsbFNldC5oCkBAIC0xNTQsNyArMTU0LDYgQEAgcHVibGljOgogICAgICAgICAK
ICAgICAgICAgVCBvcGVyYXRvciooKSBjb25zdCB7IEFTU0VSVChtX2luZGV4IDwgbV9jYXBhY2l0
eSk7IHJldHVybiBzdGF0aWNfY2FzdDxUPihtX2J1ZmZlclttX2luZGV4XSk7IH0KICAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyBBU1NFUlQobV9i
dWZmZXIgPT0gb3RoZXIubV9idWZmZXIpOyByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4
OyB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0
IHsgQVNTRVJUKG1fYnVmZmVyID09IG90aGVyLm1fYnVmZmVyKTsgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0
eXBlbmFtZSBILCB1bnNpZ25lZCBTPiBmcmllbmQgY2xhc3MgV1RGOjpTbWFsbFNldDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9T
b3J0ZWRBcnJheU1hcC5oCmluZGV4IGI5YjZmNDhmOWJhYjEwNzA2YjZmMGQzYWNjZWQwYTdmMWE3
YzlhYjcuLjE2MjM2OGM2YTgwMmVlOTg2MGE1MmZkYzc2N2QzZDM2ZGNhNGU5NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1NvcnRlZEFycmF5TWFwLmgKKysrIGIvU291cmNlL1dURi93dGYv
U29ydGVkQXJyYXlNYXAuaApAQCAtMTEyLDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx1bnNpZ25lZCBzaXplPiBjb25zdGV4cHIgUGFja2VkQVNDSUlMb3dlckNvZGVzKGNvbnN0IGNo
YXIgKCZjaGFyYWN0ZXJzKVtzaXplXSk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGFja2Vk
QVNDSUlMb3dlckNvZGVzPiBwYXJzZShTdHJpbmdWaWV3KTsKICAgICBjb25zdGV4cHIgU3RvcmFn
ZUludGVnZXIgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisgICAgZnJpZW5kIGF1
dG8gb3BlcmF0b3I8PT4oUGFja2VkQVNDSUlMb3dlckNvZGVzLCBQYWNrZWRBU0NJSUxvd2VyQ29k
ZXMpID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBzaXplPiBz
dGF0aWMgY29uc3RleHByIFN0b3JhZ2VJbnRlZ2VyIHBhY2soY29uc3QgY2hhciAoJmNoYXJhY3Rl
cnMpW3NpemVdKTsKQEAgLTExOSw5ICsxMjAsNiBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VJbnRl
Z2VyIG1fdmFsdWUgeyAwIH07CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yYWdlSW50ZWdl
cj4gY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShQYWNrZWRBU0NJSUxvd2VyQ29kZXM8U3RvcmFn
ZUludGVnZXI+LCBQYWNrZWRBU0NJSUxvd2VyQ29kZXM8U3RvcmFnZUludGVnZXI+KTsKLXRlbXBs
YXRlPHR5cGVuYW1lIFN0b3JhZ2VJbnRlZ2VyPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoUGFj
a2VkQVNDSUlMb3dlckNvZGVzPFN0b3JhZ2VJbnRlZ2VyPiwgUGFja2VkQVNDSUlMb3dlckNvZGVz
PFN0b3JhZ2VJbnRlZ2VyPik7Ci0KIHRlbXBsYXRlPEFTQ0lJU3Vic2V0IHN1YnNldD4gY29uc3Rl
eHByIGJvb2wgaXNJblN1YnNldChjaGFyIGNoYXJhY3RlcikKIHsKICAgICBpZiAoIShjaGFyYWN0
ZXIgJiYgaXNBU0NJSShjaGFyYWN0ZXIpKSkKQEAgLTM2MSwxNiArMzU5LDYgQEAgdGVtcGxhdGU8
dHlwZW5hbWUgU3RvcmFnZUludGVnZXI+IGF1dG8gUGFja2VkQVNDSUlMb3dlckNvZGVzPFN0b3Jh
Z2VJbnRlZ2VyPjo6cGEKICAgICByZXR1cm4gUGFja2VkQVNDSUlMb3dlckNvZGVzKHJlc3VsdCk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFN0b3JhZ2VJbnRlZ2VyPiBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KFBhY2tlZEFTQ0lJTG93ZXJDb2RlczxTdG9yYWdlSW50ZWdlcj4gYSwgUGFja2Vk
QVNDSUlMb3dlckNvZGVzPFN0b3JhZ2VJbnRlZ2VyPiBiKQotewotICAgIHJldHVybiBhLnZhbHVl
KCkgPT0gYi52YWx1ZSgpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdG9yYWdlSW50ZWdlcj4g
Y29uc3RleHByIGJvb2wgb3BlcmF0b3I8KFBhY2tlZEFTQ0lJTG93ZXJDb2RlczxTdG9yYWdlSW50
ZWdlcj4gYSwgUGFja2VkQVNDSUlMb3dlckNvZGVzPFN0b3JhZ2VJbnRlZ2VyPiBiKQotewotICAg
IHJldHVybiBhLnZhbHVlKCkgPCBiLnZhbHVlKCk7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIFZh
bHVlVHlwZT4gY29uc3RleHByIHN0ZDo6b3B0aW9uYWw8VmFsdWVUeXBlPiBtYWtlT3B0aW9uYWxG
cm9tUG9pbnRlcihjb25zdCBWYWx1ZVR5cGUqIHBvaW50ZXIpCiB7CiAgICAgaWYgKCFwb2ludGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RG
L3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCBlY2QzNzFjNjIzMjZjOGJjOGNlOGE0YThiYThiNGFj
OWMwOWJjMDgyLi5mN2Q5OTg0ZjdjZTFlNTFlYzU3YzliOWQxMDQzMTc1NDZiODA2MGY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9TdGRMaWJFeHRyYXMuaApAQCAtMjYsNiArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgPGNvbXBhcmU+CiAjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CkBAIC01MjksNiArNTMwLDEwIEBAIEFMV0FZU19JTkxJTkUg
Y29uc3RleHByIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUmJiBtb3ZlKFQmJiB2
YWx1ZSkKICAgICByZXR1cm4gbW92ZShmb3J3YXJkPFQ+KHZhbHVlKSk7CiB9CiAKKy8vIEZJWE1F
OiBGb3Igc29tZSByZWFzb24gdGhpcyBpcyBtaXNzaW5nIGZyb20gdGhlIDxvcmRlcmluZz4gaGVh
ZGVyIGluIHRoZSBTREsuCitjb25zdGV4cHIgYm9vbCBpc19lcShwYXJ0aWFsX29yZGVyaW5nIG9y
ZGVyaW5nKSBub2V4Y2VwdCB7IHJldHVybiBvcmRlcmluZyA9PSBwYXJ0aWFsX29yZGVyaW5nOjpl
cXVpdmFsZW50OyB9Citjb25zdGV4cHIgYm9vbCBpc19uZXEocGFydGlhbF9vcmRlcmluZyBvcmRl
cmluZykgbm9leGNlcHQgeyByZXR1cm4gb3JkZXJpbmcgIT0gcGFydGlhbF9vcmRlcmluZzo6ZXF1
aXZhbGVudDsgfQorCiB9IC8vIG5hbWVzcGFjZSBzdGQKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmggYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmgKaW5kZXggZmQ1NTliMjQyZGRmZmQ1ZThkOGYxMzNl
YzQxM2JhM2FiNWI1MjY0Ny4uZTVhM2NiNjM1ZWFmMWNhODg5ZGQyMjA5NzUyNWZjZDQyOGUzMTg1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1ByaW1pdGl2ZXMuaApAQCAtMzIsOSArMzIsOSBAQAog
CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrZXIuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KIAogI2lmIE9TKFdJ
TkRPV1MpCiAjaW5jbHVkZSA8d2luZG93cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RpbWVXaXRoRHlu
YW1pY0Nsb2NrVHlwZS5jcHAKaW5kZXggZTI4NWEzYTE0YjI4MmMxMGRjZTc3YzY3ZDAzNmQxYzBk
ZDQwOTdhZS4uNjQ2MTJhZmQ5ZjhiMDgxYzY5NDQwM2QxZDc0MGY3YzRhYzUwNTVmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwCkBAIC0xMDQsMzAgKzEw
NCw2IEBAIFNlY29uZHMgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlOjpvcGVyYXRvci0oY29uc3Qg
VGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJiBvdGhlCiAgICAgcmV0dXJuIFNlY29uZHMobV92YWx1
ZSAtIG90aGVyLm1fdmFsdWUpOwogfQogCi1ib29sIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZTo6
b3BlcmF0b3I8KGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgb3RoZXIpIGNvbnN0Ci17
Ci0gICAgUkVMRUFTRV9BU1NFUlQobV90eXBlID09IG90aGVyLm1fdHlwZSk7Ci0gICAgcmV0dXJu
IG1fdmFsdWUgPCBvdGhlci5tX3ZhbHVlOwotfQotCi1ib29sIFRpbWVXaXRoRHluYW1pY0Nsb2Nr
VHlwZTo6b3BlcmF0b3I+KGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgb3RoZXIpIGNv
bnN0Ci17Ci0gICAgUkVMRUFTRV9BU1NFUlQobV90eXBlID09IG90aGVyLm1fdHlwZSk7Ci0gICAg
cmV0dXJuIG1fdmFsdWUgPiBvdGhlci5tX3ZhbHVlOwotfQotCi1ib29sIFRpbWVXaXRoRHluYW1p
Y0Nsb2NrVHlwZTo6b3BlcmF0b3I8PShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmIG90
aGVyKSBjb25zdAotewotICAgIFJFTEVBU0VfQVNTRVJUKG1fdHlwZSA9PSBvdGhlci5tX3R5cGUp
OwotICAgIHJldHVybiBtX3ZhbHVlIDw9IG90aGVyLm1fdmFsdWU7Ci19Ci0KLWJvb2wgVGltZVdp
dGhEeW5hbWljQ2xvY2tUeXBlOjpvcGVyYXRvcj49KGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2Nr
VHlwZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgUkVMRUFTRV9BU1NFUlQobV90eXBlID09IG90aGVy
Lm1fdHlwZSk7Ci0gICAgcmV0dXJuIG1fdmFsdWUgPj0gb3RoZXIubV92YWx1ZTsKLX0KLQogdm9p
ZCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
IHsKICAgICBvdXQucHJpbnQobV90eXBlLCAiKCIsIG1fdmFsdWUsICIgc2VjKSIpOwpAQCAtMTUz
LDUgKzEyOSwzIEBAIGJvb2wgaGFzRWxhcHNlZChjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5
cGUmIHRpbWUpCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgotCi0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oIGIvU291cmNlL1dURi93dGYvVGlt
ZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmgKaW5kZXggNGMzZTQxZTc5YmFkYjY4ZGIyNzhiZWQ2MWNl
ZDExNTZlODA4MjFjOS4uOTE5NmUyMzU0MzQxMjkwMDAxZDM0OGY0MDFjNmRiY2VkNTZjMzRlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmgKKysr
IGIvU291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlLmgKQEAgLTM4LDEzICsz
OCwxMyBAQCBjbGFzcyBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgZmluYWwgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlw
ZSgpIHsgfQotICAgIAorCiAgICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlKFdhbGxUaW1lIHRp
bWUpCiAgICAgICAgIDogbV92YWx1ZSh0aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkK
ICAgICAgICAgLCBtX3R5cGUoQ2xvY2tUeXBlOjpXYWxsKQogICAgIHsKICAgICB9Ci0gICAgCisK
ICAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUoTW9ub3RvbmljVGltZSB0aW1lKQogICAgICAg
ICA6IG1fdmFsdWUodGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpCiAgICAgICAgICwg
bV90eXBlKENsb2NrVHlwZTo6TW9ub3RvbmljKQpAQCAtNjQsNTEgKzY0LDUxIEBAIHB1YmxpYzoK
ICAgICAgICAgcmVzdWx0Lm1fdHlwZSA9IHR5cGU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQotICAgIAorCiAgICAgU2Vjb25kcyBzZWNvbmRzU2luY2VFcG9jaCgpIGNvbnN0IHsgcmV0
dXJuIFNlY29uZHMobV92YWx1ZSk7IH0KICAgICBDbG9ja1R5cGUgY2xvY2tUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9Ci0gICAgCisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSBub3coQ2xvY2tUeXBlKTsKLSAgICAKKwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgbm93V2l0aFNhbWVDbG9j
aygpIGNvbnN0OwotICAgIAorCiAgICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIHdpdGhTYW1l
Q2xvY2tBbmRSYXdTZWNvbmRzKGRvdWJsZSB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGU6OmZyb21SYXdTZWNvbmRzKHZhbHVlLCBjbG9j
a1R5cGUoKSk7CiAgICAgfQotICAgIAorCiAgICAgLy8gQXNzZXJ0cyB0aGF0IHRoZSB0aW1lIGlz
IG9mIHRoZSB0eXBlIHlvdSB3YW50LgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBXYWxsVGltZSB3
YWxsVGltZSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBNb25vdG9uaWNUaW1lIG1v
bm90b25pY1RpbWUoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQXBwcm94aW1hdGVU
aW1lIGFwcHJveGltYXRlVGltZSgpIGNvbnN0OwotICAgIAorCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFdhbGxUaW1lIGFwcHJveGltYXRlV2FsbFRpbWUoKSBjb25zdDsKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgTW9ub3RvbmljVGltZSBhcHByb3hpbWF0ZU1vbm90b25pY1RpbWUoKSBjb25zdDsK
LSAgICAKKwogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1f
dmFsdWU7IH0KLSAgICAKKwogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSBvcGVyYXRvciso
U2Vjb25kcyBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiB3aXRoU2FtZUNsb2Nr
QW5kUmF3U2Vjb25kcyhtX3ZhbHVlICsgb3RoZXIudmFsdWUoKSk7CiAgICAgfQotICAgIAorCiAg
ICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIG9wZXJhdG9yLShTZWNvbmRzIG90aGVyKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIHdpdGhTYW1lQ2xvY2tBbmRSYXdTZWNvbmRzKG1fdmFs
dWUgLSBvdGhlci52YWx1ZSgpKTsKICAgICB9Ci0gICAgCisKICAgICAvLyBUaW1lIGlzIGEgc2Nh
bGFyIGFuZCBzY2FsYXJzIGNhbiBiZSBuZWdhdGVkIGFzIHRoaXMgY291bGQgYXJpc2UgZnJvbSBh
bGdlYnJhaWMKICAgICAvLyB0cmFuc2Zvcm1hdGlvbnMuIFNvLCB3ZSBhbGxvdyBpdC4KICAgICBU
aW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgb3BlcmF0b3ItKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiB3aXRoU2FtZUNsb2NrQW5kUmF3U2Vjb25kcygtbV92YWx1ZSk7CiAgICAgfQotICAg
IAorCiAgICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIG9wZXJhdG9yKz0oU2Vjb25kcyBvdGhl
cikKICAgICB7CiAgICAgICAgIHJldHVybiAqdGhpcyA9ICp0aGlzICsgb3RoZXI7CiAgICAgfQot
ICAgIAorCiAgICAgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIG9wZXJhdG9yLT0oU2Vjb25kcyBv
dGhlcikKICAgICB7CiAgICAgICAgIHJldHVybiAqdGhpcyA9ICp0aGlzIC0gb3RoZXI7CkBAIC0x
MTYsMjMgKzExNiwxNSBAQCBwdWJsaWM6CiAgICAgCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFNl
Y29uZHMgb3BlcmF0b3ItKGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYpIGNvbnN0Owog
ICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUm
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPT0gb3RoZXIubV92
YWx1ZQotICAgICAgICAgICAgJiYgbV90eXBlID09IG90aGVyLm1fdHlwZTsKLSAgICB9Ci0gICAg
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgb3Ro
ZXIpIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2Nr
VHlwZSYpIGNvbnN0ID0gZGVmYXVsdDsKKworICAgIC8vIFRvIGRvIHJlbGF0aXZlIGNvbXBhcmlz
b25zLCB5b3UgbXVzdCBiZSB1c2luZyB0aW1lcyB3aXRoIHRoZSBzYW1lIGNsb2NrIHR5cGUuCisg
ICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIGEsIFRp
bWVXaXRoRHluYW1pY0Nsb2NrVHlwZSBiKQogICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChhLm1fdHlwZSA9PSBiLm1fdHlwZSk7
CisgICAgICAgIHJldHVybiBhLm1fdmFsdWUgPD0+IGIubV92YWx1ZTsKICAgICB9Ci0gICAgCi0g
ICAgLy8gVG8gZG8gcmVsYXRpdmUgY29tcGFyaXNvbnMsIHlvdSBtdXN0IGJlIHVzaW5nIHRpbWVz
IHdpdGggdGhlIHNhbWUgY2xvY2sgdHlwZS4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBv
cGVyYXRvcjwoY29uc3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJikgY29uc3Q7Ci0gICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2Nr
VHlwZSYpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPD0oY29u
c3QgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlJikgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUmKSBjb25z
dDsKLSAgICAKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaW55
UHRyU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9UaW55UHRyU2V0LmgKaW5kZXggOTZmNGYyYzU5ZDEy
N2I0ZDIwODMxNDY3NzJmZmRkNWRhZTI1ZjNkYy4uODhjZDNiNDhiMTg0OWFlM2ZlYWQ5ZWEwMGIw
OTBkMWJiNDRiZTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGlueVB0clNldC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1RpbnlQdHJTZXQuaApAQCAtMzM0LDcgKzMzNCw2IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgfQogICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2luZGV4ID09
IG90aGVyLm1faW5kZXg7IH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAgICAgCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgVGlueVB0clNldCogbV9zZXQ7CkBAIC0zNTEsMTEg
KzM1MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlzU3Vic2V0T2Yob3RoZXIpOwogICAg
IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGlueVB0clNldCYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotICAg
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0
VmFsdWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93
dGYvVVJMLmgKaW5kZXggYjRiYWFkMThlM2U3MWE0N2M0ZWZkN2VjZTUxM2MxMTNjOTBiOTg5Zi4u
ODk1OWNkZDdmNTkyNzhiZWZlNWE3ZGRiZWVkODU1NzVkZjFjMjU4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmgKQEAgLTI0MiwxMCAr
MjQyLDYgQEAgc3RhdGljX2Fzc2VydChzaXplb2YoVVJMKSA9PSBzaXplb2YoU3RyaW5nKSArIDgg
KiBzaXplb2YodW5zaWduZWQpLCAiVVJMIHNob3VsZAogCiBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VVJMJiwgY29uc3QgVVJMJik7CiBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJik7Ci1ib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7Ci1ib29s
IG9wZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Ci1ib29sIG9wZXJhdG9yIT0oY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJik7Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiwg
Y29uc3QgVVJMJik7CiAKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiBXVEZfRVhQT1JUX1BSSVZB
VEUgYm9vbCBwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJM
Jik7CkBAIC0zMjYsMjYgKzMyMiw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJM
JiBhLCBjb25zdCBTdHJpbmcmIGIpCiAgICAgcmV0dXJuIGEuc3RyaW5nKCkgPT0gYjsKIH0KIAot
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFVSTCYgYikKLXsK
LSAgICByZXR1cm4gYSA9PSBiLnN0cmluZygpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQotewotICAgIHJldHVybiBhLnN0cmluZygpICE9
IGIuc3RyaW5nKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiBhLCBj
b25zdCBTdHJpbmcmIGIpCi17Ci0gICAgcmV0dXJuIGEuc3RyaW5nKCkgIT0gYjsKLX0KLQotaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFVSTCYgYikKLXsKLSAg
ICByZXR1cm4gYSAhPSBiLnN0cmluZygpOwotfQotCiBpbmxpbmUgVVJMOjpVUkwoSGFzaFRhYmxl
RGVsZXRlZFZhbHVlVHlwZSkKICAgICA6IG1fc3RyaW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuaCBiL1NvdXJjZS9XVEYvd3RmL1VV
SUQuaAppbmRleCA1OGE1MjRhNjRkMzZhNjMxMTA0ZWZhMTJkYzhjZTZkYTIzNmNmZDBmLi43ZDQx
MDIxNzk1MjQxYjhmNTFhYmI1M2E0MTY3NmJlN2Y5ZTExY2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9VVUlELmgKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5oCkBAIC02Myw3ICs2Myw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBVVUlEJiBvcGVyYXRvcj0oY29uc3QgVVVJRCYpID0g
ZGVmYXVsdDsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVVVJRCYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YSA9PSBvdGhlci5tX2RhdGE7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVVVJRCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxVVUlEPiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvVW5leHBlY3RlZC5oIGIvU291cmNlL1dURi93dGYvVW5leHBlY3Rl
ZC5oCmluZGV4IGRkOTIwYTExZTc1ZTE2ZTM1MWY1NmRjODU1ODgzZjlkMGZhYjIzZDIuLjQzMmI5
OWU4MjZkMGY3MTM1ZTMwMzM3MWI1NWY2MGVlYTk3MmRlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1VuZXhwZWN0ZWQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VbmV4cGVjdGVkLmgKQEAg
LTg4LDcgKzg4LDYgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEU+IGNvbnN0ZXhw
ciBib29sIG9wZXJhdG9yPT0oY29uc3QgdW5leHBlY3RlZDxFPiYgbGhzLCBjb25zdCB1bmV4cGVj
dGVkPEU+JiByaHMpIHsgcmV0dXJuIGxocy52YWx1ZSgpID09IHJocy52YWx1ZSgpOyB9Ci10ZW1w
bGF0ZTxjbGFzcyBFPiBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHVuZXhwZWN0ZWQ8
RT4mIGxocywgY29uc3QgdW5leHBlY3RlZDxFPiYgcmhzKSB7IHJldHVybiBsaHMudmFsdWUoKSAh
PSByaHMudmFsdWUoKTsgfQogCiB9fX0gLy8gbmFtZXNwYWNlIHN0ZDo6ZXhwZXJpbWVudGFsOjpm
dW5kYW1lbnRhbHNfdjMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVW5zYWZlUG9pbnRl
ci5oIGIvU291cmNlL1dURi93dGYvVW5zYWZlUG9pbnRlci5oCmluZGV4IGQxNjVhOGNiODUxNTQ0
ZjE4MjRkOTc0MDRiYWVmOTgxMTkxZDc1NGIuLjM0ZmMyYTI3ZTkyMDdmY2ZiZDU0ODU2MDMwOGFk
NmMwZGZlNGQ4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Vuc2FmZVBvaW50ZXIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9VbnNhZmVQb2ludGVyLmgKQEAgLTU0LDEyICs1NCw2IEBAIGJv
b2wgb3BlcmF0b3I9PSh0eXBlbmFtZSBVbnNhZmVQb2ludGVyPFQ+OjpQdHJUeXBlIGJhcmVQb2lu
dGVyLCBjb25zdCBVbnNhZmVQb2luCiAgICAgcmV0dXJuIHVuc2FmZVBvaW50ZXIgPT0gYmFyZVBv
aW50ZXI7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1ib29sIG9wZXJhdG9yIT0odHlwZW5h
bWUgVW5zYWZlUG9pbnRlcjxUPjo6UHRyVHlwZSBiYXJlUG9pbnRlciwgY29uc3QgVW5zYWZlUG9p
bnRlcjxUPiYgdW5zYWZlUG9pbnRlcikKLXsKLSAgICByZXR1cm4gdW5zYWZlUG9pbnRlciAhPSBi
YXJlUG9pbnRlcjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6VW5zYWZl
UG9pbnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKaW5kZXggZTE0NGEzMGNiYjhmNDZiMzY0ZjcyMWVjMDIxMDNkNzRiZWUw
MjBkYy4uZmY3YWNjZTBlNmMxMjRkMGVjMDZhZjI1OWJhNDczNTBkZTNmYzE5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgK
QEAgLTE2NDIsMTIgKzE2NDIsNiBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5QSwgT3ZlcmZsb3dIYW5kbGVyQSwgbWluQ2FwYWNpdHlBLAogICAgIHJldHVy
biBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6Y29tcGFyZShhLmRhdGEoKSwgYi5kYXRhKCksIGEu
c2l6ZSgpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
QSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyQSwgc2l6ZV90IG1pbkNhcGFjaXR5QSwgdHlwZW5h
bWUgTWFsbG9jQSwgc2l6ZV90IGlubGluZUNhcGFjaXR5QiwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5k
bGVyQiwgc2l6ZV90IG1pbkNhcGFjaXR5QiwgdHlwZW5hbWUgTWFsbG9jQj4KLWlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5QSwgT3ZlcmZsb3dIYW5k
bGVyQSwgbWluQ2FwYWNpdHlBLCBNYWxsb2NBPiYgYSwgY29uc3QgVmVjdG9yPFQsIGlubGluZUNh
cGFjaXR5QiwgT3ZlcmZsb3dIYW5kbGVyQiwgbWluQ2FwYWNpdHlCLCBNYWxsb2NCPiYgYikKLXsK
LSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiAjaWYgQVNTRVJUX0VOQUJMRUQKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBWYWx1ZUNoZWNrPFZlY3RvcjxUPj4gewogICAgIHR5cGVkZWYg
VmVjdG9yPFQ+IFRyYWl0VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1l
LmggYi9Tb3VyY2UvV1RGL3d0Zi9XYWxsVGltZS5oCmluZGV4IDRkNGFmOWRiOWIwMTBlNDgxMWE5
OWIxNzE1ZjMxNTVhOThlOWJhYzMuLmMwMWUxOGI0YTlmM2VhYzI3ZTIwYzExNWRkOGYzMDE2NGI3
ZWJjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmgKKysrIGIvU291cmNl
L1dURi93dGYvV2FsbFRpbWUuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlIDx3dGYvQ2xvY2tUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvR2VuZXJpY1RpbWVNaXhpbi5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTk3LDUg
Kzk4LDMgQEAgaW5saW5lIGJvb2wgaXNmaW5pdGUoV1RGOjpXYWxsVGltZSB0aW1lKQogfQogCiB9
IC8vIG5hbWVzcGFjZSBzdGQKLQotdXNpbmcgV1RGOjpXYWxsVGltZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1dlYWtIYXNoTWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaE1hcC5o
CmluZGV4IDEzMTg4NTdlMTE1NzA2NWFiNmMwYjkyNmYwMDEyZjVhZjljMWM4NTQuLjgxODFjYWI3
MmQ1NzhmY2IwYjVmNzcyMGI0NGI5NDE3NjgwMmZkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1dlYWtIYXNoTWFwLmgKKysrIGIvU291cmNlL1dURi93dGYvV2Vha0hhc2hNYXAuaApAQCAt
MTY0LDcgKzE2NCw2IEBAIHB1YmxpYzoKICAgICAgICAgdXNpbmcgQmFzZSA9IFdlYWtIYXNoTWFw
SXRlcmF0b3JCYXNlPGNvbnN0IFdlYWtIYXNoTWFwLCB0eXBlbmFtZSBXZWFrSGFzaEltcGxNYXA6
OmNvbnN0X2l0ZXJhdG9yLCBjb25zdCBQZWVrUHRyVHlwZSwgY29uc3QgUGVla1R5cGU+OwogCiAg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWFrSGFzaE1hcENvbnN0SXRlcmF0b3ImIG90
aGVyKSBjb25zdCB7IHJldHVybiBCYXNlOjptX3Bvc2l0aW9uID09IG90aGVyLkJhc2U6Om1fcG9z
aXRpb247IH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYWtIYXNoTWFwQ29uc3RJ
dGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIEJhc2U6Om1fcG9zaXRpb24gIT0gb3RoZXIu
QmFzZTo6bV9wb3NpdGlvbjsgfQogCiAgICAgICAgIGNvbnN0IFBlZWtQdHJUeXBlIGdldCgpIGNv
bnN0IHsgcmV0dXJuIEJhc2U6Om1ha2VQZWVrKCk7IH0KICAgICAgICAgY29uc3QgUGVla1R5cGUg
b3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gQmFzZTo6bWFrZVBlZWsoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvV2Vha0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL1dlYWtIYXNo
U2V0LmgKaW5kZXggODJjNzU5NWJiYWI1OTQyMWM2ZGU1NDU0Y2I0M2ViYWZlOGQwODljZS4uY2U3
ZGFiM2E5MzhlNjExYmI3Mzk1Y2M5ODRiMWMzYzA5NmEzYWIxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvV2Vha0hhc2hTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrSGFzaFNldC5o
CkBAIC03NywxMSArNzcsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gbV9wb3NpdGlv
biA9PSBvdGhlci5tX3Bvc2l0aW9uOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFdlYWtIYXNoU2V0Q29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBtX3Bvc2l0aW9uICE9IG90aGVyLm1fcG9zaXRpb247Ci0g
ICAgICAgIH0KLQogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlw
ZW5hbWU+IGZyaWVuZCBjbGFzcyBXZWFrSGFzaFNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaAppbmRleCBhZmMzM2YzOGQ0MjMzNWJkOWU2MTI2YTRh
NzhhNTA3MTBkYjI2MDhhLi4yMDdmYTA0NDY5ZmI5NDgzODc2OGU5ZjQxYTJhMzI4OTdmNWNiMDhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXIuaApAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8b3B0aW9uYWw+CiAKIG5hbWVzcGFjZSBXVEYgewogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9wb3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9UaHJlYWRpbmdQT1NJWC5jcHAKaW5kZXggZDkyNDQ5MGQxYjU3ZjNlZTA2ZWU1ZWFkOGEy
ZDNjMTFjMjBjYjVkMS4uNmQzNDBlNDZmMmIyODQ0MGIxMTNlZDc3MDllYTM3MTAxYTgyZjg1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvVGhyZWFkaW5nUE9TSVguY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3Bvc2l4L1RocmVhZGluZ1BPU0lYLmNwcApAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5n
UHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9XVEZDb25maWcuaD4KKyNpbmNsdWRlIDx3dGYv
V2FsbFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvV29yZExvY2suaD4KIAogI2lmIE9TKExJTlVYKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRleCAzM2IwZTU5NThkODM5NTYzYTY1ZTEzZGNhMjBh
MjdiZjMzMTk0YmYyLi44M2EyNWQ2NTY5ZDQ5MTdkMTJiODU2MWZiNzVkZDdlNjI5OGIzNzMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcuaApAQCAtMTg0LDE4ICsxODQsNiBAQCBib29sIG9wZXJh
dG9yPT0oY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IExDaGFyKik7CiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuIFdURjo6
ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH0KIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbVN0cmluZyYgYSwgY29uc3QgVmVjdG9yPFVD
aGFyPiYgYikgeyByZXR1cm4gYS5pbXBsKCkgJiYgZXF1YWwoYS5pbXBsKCksIGIuZGF0YSgpLCBi
LnNpemUoKSk7IH0gICAgCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF0b21TdHJpbmcm
IGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsg
fQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMQ2hhciogYSwgY29uc3QgQXRvbVN0cmlu
ZyYgYikgeyByZXR1cm4gYiA9PSBhOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0
cmluZyYgYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIu
aW1wbCgpKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWZWN0b3I8VUNoYXI+JiBh
LCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJldHVybiBiID09IGE7IH0KLQotaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBBdG9tU3RyaW5nJiBhLCBjb25zdCBBdG9tU3RyaW5nJiBiKSB7IHJl
dHVybiBhLmltcGwoKSAhPSBiLmltcGwoKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBBdG9tU3RyaW5nJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gIShhID09IGIpOyB9Ci1p
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIp
IHsgcmV0dXJuICEoYSA9PSBiKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdG9t
U3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5p
bXBsKCkpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0b21TdHJpbmcmIGEsIGNv
bnN0IFZlY3RvcjxVQ2hhcj4mIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQotaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBMQ2hhciogYSwgY29uc3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4g
IShiID09IGEpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29u
c3QgQXRvbVN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0K
LWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmVjdG9yPFVDaGFyPiYgYSwgY29uc3QgQXRv
bVN0cmluZyYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKIGJvb2wgZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgQXRvbVN0cmluZyYpOwogYm9vbCBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0NTdHJpbmcuY3BwCmluZGV4IGY5ZTllNjUxZTBhZGYzMmY1YWY5MzE3MjE1NjQ2OGIz
YTNjMjQyOGEuLmM5ZDNlYzIxM2VjNGRjMTlhY2M1NTI2OWYzNjJiYzY3NjA3ZjFjMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9DU3RyaW5nLmNwcApAQCAtMTIwLDE2ICsxMjAsMTYgQEAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoYS5sZW5ndGgoKSAhPSBiLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgcmV0dXJuICFtZW1jbXAoYS5kYXRhKCksIGIuZGF0YSgpLCBhLmxlbmd0aCgpKTsK
KyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLmRhdGEoKSwgYS5sZW5ndGgoKSk7
CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKQog
ewogICAgIGlmIChhLmlzTnVsbCgpICE9ICFiKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFiKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gIXN0cmNtcChhLmRhdGEo
KSwgYik7CisgICAgaWYgKGEubGVuZ3RoKCkgIT0gc3RkOjpzdHJsZW4oYikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gIXN0ZDo6bWVtY21wKGEuZGF0YSgpLCBiLCBhLmxlbmd0
aCgpKTsKIH0KIAogdW5zaWduZWQgQ1N0cmluZzo6aGFzaCgpIGNvbnN0CkBAIC0xNDIsMTMgKzE0
MiwyNiBAQCB1bnNpZ25lZCBDU3RyaW5nOjpoYXNoKCkgY29uc3QKICAgICByZXR1cm4gaGFzaGVy
Lmhhc2goKTsKIH0KIAotYm9vbCBvcGVyYXRvcjwoY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0
cmluZyYgYikKK3N0ZDo6c3Ryb25nX29yZGVyaW5nIG9wZXJhdG9yPD0+KGNvbnN0IENTdHJpbmcm
IGEsIGNvbnN0IENTdHJpbmcmIGIpCiB7Ci0gICAgaWYgKGEuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiAhYi5pc051bGwoKTsKLSAgICBpZiAoYi5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHJldHVybiBzdHJjbXAoYS5kYXRhKCksIGIuZGF0YSgpKSA8IDA7CisgICAgaWYg
KGEuaXNOdWxsKCkgIT0gYi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGEuaXNOdWxsKCkgPyBz
dGQ6OnN0cm9uZ19vcmRlcmluZzo6bGVzcyA6IHN0ZDo6c3Ryb25nX29yZGVyaW5nOjpncmVhdGVy
OworICAgIGF1dG8gYUxlbmd0aCA9IGEubGVuZ3RoKCk7CisgICAgYXV0byBiTGVuZ3RoID0gYi5s
ZW5ndGgoKTsKKyAgICBpZiAoYXV0byBjaGFyYWN0ZXJPcmRlcmluZyA9IHN0ZDo6bWVtY21wKGEu
ZGF0YSgpLCBiLmRhdGEoKSwgc3RkOjptaW4oYUxlbmd0aCwgYkxlbmd0aCkpKQorICAgICAgICBy
ZXR1cm4gY2hhcmFjdGVyT3JkZXJpbmcgPCAwID8gc3RkOjpzdHJvbmdfb3JkZXJpbmc6Omxlc3Mg
OiBzdGQ6OnN0cm9uZ19vcmRlcmluZzo6Z3JlYXRlcjsKKyAgICByZXR1cm4gYUxlbmd0aCA8PT4g
Ykxlbmd0aDsKK30KKworc3RkOjpzdHJvbmdfb3JkZXJpbmcgb3BlcmF0b3I8PT4oY29uc3QgQ1N0
cmluZyYgYSwgY29uc3QgY2hhciogYikKK3sKKyAgICBpZiAoYS5pc051bGwoKSAhPSAhYikKKyAg
ICAgICAgcmV0dXJuIGEuaXNOdWxsKCkgPyBzdGQ6OnN0cm9uZ19vcmRlcmluZzo6bGVzcyA6IHN0
ZDo6c3Ryb25nX29yZGVyaW5nOjpncmVhdGVyOworICAgIGF1dG8gYUxlbmd0aCA9IGEubGVuZ3Ro
KCk7CisgICAgYXV0byBiTGVuZ3RoID0gc3RkOjpzdHJsZW4oYik7CisgICAgaWYgKGF1dG8gY2hh
cmFjdGVyT3JkZXJpbmcgPSBzdGQ6Om1lbWNtcChhLmRhdGEoKSwgYiwgc3RkOjptaW4oYUxlbmd0
aCwgYkxlbmd0aCkpKQorICAgICAgICByZXR1cm4gY2hhcmFjdGVyT3JkZXJpbmcgPCAwID8gc3Rk
OjpzdHJvbmdfb3JkZXJpbmc6Omxlc3MgOiBzdGQ6OnN0cm9uZ19vcmRlcmluZzo6Z3JlYXRlcjsK
KyAgICByZXR1cm4gYUxlbmd0aCA8PT4gYkxlbmd0aDsKIH0KIAogYm9vbCBDU3RyaW5nSGFzaDo6
ZXF1YWwoY29uc3QgQ1N0cmluZyYgYSwgY29uc3QgQ1N0cmluZyYgYikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5n
LmgKaW5kZXggMjcwMGM2NmRkYWExODcwNTRkYTU5ZGE5MzRlMDI4NzdmNGVhNDQwOC4uYWZlOGFh
ZjQ1YTRkNDA5NDRjYWE5M2UwZDM2OTBiNTUyMjEwNTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9DU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgK
QEAgLTU0LDggKzU0LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBzaXplX3QgbV9sZW5ndGg7CiB9
OwogCi0vLyBBIGNvbnRhaW5lciBmb3IgYSBudWxsLXRlcm1pbmF0ZWQgY2hhciBhcnJheSBzdXBw
b3J0aW5nIGNvcHktb24td3JpdGUKLS8vIGFzc2lnbm1lbnQuICBUaGUgY29udGFpbmVkIGNoYXIg
YXJyYXkgbWF5IGJlIG51bGwuCisvLyBBIGNvbnRhaW5lciBmb3IgYSBudWxsLXRlcm1pbmF0ZWQg
Y2hhciBhcnJheSBzdXBwb3J0aW5nIGNvcHktb24td3JpdGUgYXNzaWdubWVudC4KIGNsYXNzIENT
dHJpbmcgZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAt
MTEyLDExICsxMTEsMTEgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Q1N0cmluZ0J1ZmZlcj4gbV9i
dWZmZXI7CiB9OwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENT
dHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOwotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBDU3RyaW5nJiBhLCBjb25zdCBDU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLVdU
Rl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0cmluZyYgYSwgY29uc3Qg
Y2hhciogYik7Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0
IGNoYXIqIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQotV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wg
b3BlcmF0b3I8KGNvbnN0IENTdHJpbmcmIGEsIGNvbnN0IENTdHJpbmcmIGIpOworLy8gTnVsbCBz
dHJpbmdzIGVxdWFsIG9ubHkgdG8gb3RoZXIgbnVsbCBzdHJpbmdzIGFuZCBudWxsIHN0cmluZ3Mg
c29ydCBmaXJzdC4KK1dURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1N0
cmluZyYsIGNvbnN0IENTdHJpbmcmKTsKK1dURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ1N0cmluZyYsIGNvbnN0IGNoYXIqKTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6
OnN0cm9uZ19vcmRlcmluZyBvcGVyYXRvcjw9Pihjb25zdCBDU3RyaW5nJiwgY29uc3QgQ1N0cmlu
ZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6c3Ryb25nX29yZGVyaW5nIG9wZXJhdG9yPD0+
KGNvbnN0IENTdHJpbmcmLCBjb25zdCBjaGFyKik7CiAKIHN0cnVjdCBDU3RyaW5nSGFzaCB7CiAg
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgQ1N0cmluZyYgc3RyaW5nKSB7IHJldHVybiBz
dHJpbmcuaGFzaCgpOyB9CkBAIC0xMjQsMTAgKzEyMywxMCBAQCBzdHJ1Y3QgQ1N0cmluZ0hhc2gg
ewogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRl
ZCA9IHRydWU7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g7
Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IERlZmF1bHRIYXNoOwogdGVtcGxhdGU8PiBzdHJ1
Y3QgRGVmYXVsdEhhc2g8Q1N0cmluZz4gOiBDU3RyaW5nSGFzaCB7IH07CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwordGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBI
YXNoVHJhaXRzOwogdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxDU3RyaW5nPiA6IFNpbXBs
ZUNsYXNzSGFzaFRyYWl0czxDU3RyaW5nPiB7IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9Db2RlUG9pbnRJdGVyYXRvci5oIGIvU291cmNl
L1dURi93dGYvdGV4dC9Db2RlUG9pbnRJdGVyYXRvci5oCmluZGV4IDJlMTBmNGIzZmVjYTBmMmEw
MDgzZjYyYzc2ZmY4NGIyYTcwZTVlNmYuLjZlZTk0NmM1NjNkZjgxNDYxYWViNzI5ZTk4ODc2OWFi
MzdhZTIxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ29kZVBvaW50SXRlcmF0
b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NvZGVQb2ludEl0ZXJhdG9yLmgKQEAgLTUx
LDEyICs1MSw3IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIFVDaGFyMzIgb3BlcmF0b3Iq
KCkgY29uc3Q7CiAgICAgQUxXQVlTX0lOTElORSBDb2RlUG9pbnRJdGVyYXRvciYgb3BlcmF0b3Ir
KygpOwogCi0gICAgQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZVBvaW50
SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmVnaW4gPT0g
b3RoZXIubV9iZWdpbgotICAgICAgICAgICAgJiYgbV9lbmQgPT0gb3RoZXIubV9lbmQ7Ci0gICAg
fQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVQb2ludEl0ZXJh
dG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29kZVBvaW50SXRlcmF0b3ImKSBjb25zdCA9IGRlZmF1bHQ7CiAK
ICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgYXRFbmQoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvT3JkaW5hbE51bWJlci5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9PcmRpbmFsTnVtYmVyLmgKaW5kZXggOTQ3MjU0NjU2NGJlMDJkNWM3OTdiMGY2MGM1MmQ5NGI2
YmZiZmZjNC4uM2E0MTBmYjYzZjI2MzU5YTUyMmU2ZTExNDljZDVkYTEzNmMwNzBkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9PcmRpbmFsTnVtYmVyLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9PcmRpbmFsTnVtYmVyLmgKQEAgLTQxLDkgKzQxLDcgQEAgcHVibGljOgogICAg
IGludCB6ZXJvQmFzZWRJbnQoKSBjb25zdCB7IHJldHVybiBtX3plcm9CYXNlZFZhbHVlOyB9CiAg
ICAgaW50IG9uZUJhc2VkSW50KCkgY29uc3QgeyByZXR1cm4gbV96ZXJvQmFzZWRWYWx1ZSArIDE7
IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShPcmRpbmFsTnVtYmVyIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX3plcm9CYXNlZFZhbHVlID09IG90aGVyLm1femVyb0Jhc2VkVmFsdWU7IH0KLSAgICBi
b29sIG9wZXJhdG9yIT0oT3JkaW5hbE51bWJlciBvdGhlcikgY29uc3QgeyByZXR1cm4gISgoKnRo
aXMpID09IG90aGVyKTsgfQotICAgIGJvb2wgb3BlcmF0b3I+KE9yZGluYWxOdW1iZXIgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuIG1femVyb0Jhc2VkVmFsdWUgPiBvdGhlci5tX3plcm9CYXNlZFZhbHVl
OyB9CisgICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4oT3JkaW5hbE51bWJlciwgT3JkaW5hbE51
bWJlcikgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIE9yZGluYWxOdW1iZXIoaW50IHplcm9C
YXNlZEludCkgOiBtX3plcm9CYXNlZFZhbHVlKHplcm9CYXNlZEludCkgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdWaWV3LmNwcAppbmRleCBhMjE0ODIwNzM0Nzg3NjAyMzNkNGFkZjkwZGZkOTZiM2Ew
YTllYTA3Li4xMWRiYjkyY2VjMzIzNDg3ZjZmNDRmYzczYjM2ODliNjQ2N2E4ODQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTIxMiwxMiArMjEyLDcgQEAgU3RyaW5nVmlldyBT
dHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QK
IAogYm9vbCBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3I9
PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICptX2ltcGwgPT0g
KihvdGhlci5tX2ltcGwpOwotfQotCi1ib29sIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6
Okl0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAg
ICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgcmV0dXJuICptX2ltcGwgPT0gKm90aGVy
Lm1faW1wbDsKIH0KIAogZW51bSBjbGFzcyBBU0NJSUNhc2UgeyBMb3dlciwgVXBwZXIgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNDQ4YWY3Njg5Zjc0YTg4NTAyODE5ZTJjNjY5ZTgy
ZTNiYTBkYjE4MC4uMjQ1ZWRmZjEwNTJjN2Y5MjQ2NjE5ODgxY2ZlYjg3NzU1ZjM0NzdlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTIyMywxNSArMjIzLDggQEAgdGVtcGxhdGU8dW5z
aWduZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1Zp
ZXcsIGNvbnN0IGMKIHRlbXBsYXRlPHVuc2lnbmVkIGxlbmd0aD4gYm9vbCBzdGFydHNXaXRoTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcsIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VM
ZXR0ZXJzKVtsZW5ndGhdKTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShTdHJpbmdWaWV3IGEs
IFN0cmluZ1ZpZXcgYikgeyByZXR1cm4gZXF1YWwoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJh
dG9yPT0oU3RyaW5nVmlldyBhLCBjb25zdCBMQ2hhciAqYik7Ci1pbmxpbmUgYm9vbCBvcGVyYXRv
cj09KFN0cmluZ1ZpZXcgYSwgY29uc3QgY2hhciAqYikgeyByZXR1cm4gZXF1YWwoYSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBjaGFyKiBhLCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJuIGVxdWFsKGIsIGEpOyB9Ci0KLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oU3RyaW5nVmlldyBhLCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJu
ICFlcXVhbChhLCBiKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShTdHJpbmdWaWV3IGEsIGNv
bnN0IExDaGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYSwgYik7IH0KLWlubGluZSBib29sIG9wZXJh
dG9yIT0oU3RyaW5nVmlldyBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYSwgYik7
IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTENoYXIqYSwgU3RyaW5nVmlldyBiKSB7
IHJldHVybiAhZXF1YWwoYiwgYSk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hh
ciphLCBTdHJpbmdWaWV3IGIpIHsgcmV0dXJuICFlcXVhbChiLCBhKTsgfQoraW5saW5lIGJvb2wg
b3BlcmF0b3I9PShTdHJpbmdWaWV3LCBjb25zdCBMQ2hhciopOworaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShTdHJpbmdWaWV3IGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuIGVxdWFsKGEsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiKSk7IH0KIAogc3RydWN0IFN0cmluZ1ZpZXdXaXRo
VW5kZXJseWluZ1N0cmluZzsKIApAQCAtNzQ3LDcgKzc0MCw2IEBAIHB1YmxpYzoKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKIAogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBJdGVyYXRvciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJ
dGVyYXRvciYpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGVudW0gUG9zaXRpb25UYWcgeyBBdEVu
ZCB9OwpAQCAtNzgwLDcgKzc3Miw2IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
SXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImKSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
Y2xhc3MgSW1wbDsKQEAgLTc5Nyw3ICs3ODgsNiBAQCBwdWJsaWM6CiAgICAgSXRlcmF0b3ImIG9w
ZXJhdG9yKysoKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYpIGNvbnN0
OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIGNvbnN0IHZvaWQqIG1fY3VycmVudDsKQEAgLTgxNyw3ICs4MDcsNiBAQCBwdWJsaWM6
CiAgICAgSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBJdGVyYXRvciYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OwpAQCAtOTE3
LDExICs5MDYsNiBAQCBpbmxpbmUgYm9vbCBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjpJdGVyYXRv
cjo6b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpCiAgICAgcmV0dXJuIG1fY3VycmVu
dCA9PSBvdGhlci5tX2N1cnJlbnQ7CiB9CiAKLWlubGluZSBib29sIFN0cmluZ1ZpZXc6OkNvZGVQ
b2ludHM6Okl0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QK
LXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0KIGlubGluZSBhdXRvIFN0cmlu
Z1ZpZXc6OkNvZGVQb2ludHM6OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3IKIHsKICAgICByZXR1
cm4gSXRlcmF0b3IobV9zdHJpbmdWaWV3LCAwKTsKQEAgLTk2MSwxMSArOTQ1LDYgQEAgaW5saW5l
IGJvb2wgU3RyaW5nVmlldzo6Q29kZVVuaXRzOjpJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBJ
dGVyYXRvciYgb3RoZXIpIGMKICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4Owog
fQogCi1pbmxpbmUgYm9vbCBTdHJpbmdWaWV3OjpDb2RlVW5pdHM6Okl0ZXJhdG9yOjpvcGVyYXRv
ciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Ci19Ci0KIGlubGluZSBhdXRvIFN0cmluZ1ZpZXc6OkNvZGVVbml0czo6YmVnaW4o
KSBjb25zdCAtPiBJdGVyYXRvcgogewogICAgIHJldHVybiBJdGVyYXRvcihtX3N0cmluZ1ZpZXcs
IDApOwpAQCAtMTAzMCwxMSArMTAwOSw2IEBAIGlubGluZSBib29sIFN0cmluZ1ZpZXc6OlNwbGl0
UmVzdWx0OjpJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpCiAgICAg
cmV0dXJuIG1fcG9zaXRpb24gPT0gb3RoZXIubV9wb3NpdGlvbiAmJiBtX2lzRG9uZSA9PSBvdGhl
ci5tX2lzRG9uZTsKIH0KIAotaW5saW5lIGJvb2wgU3RyaW5nVmlldzo6U3BsaXRSZXN1bHQ6Okl0
ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGUsIHR5cGVuYW1lIE1hdGNoZWRDaGFyYWN0ZXJQcmVkaWNhdGU+CiBpbmxpbmUgU3RyaW5n
VmlldyBTdHJpbmdWaWV3OjpzdHJpcExlYWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFyYWN0ZXJz
KGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIGNvbnN0IE1hdGNoZWRDaGFyYWN0ZXJQ
cmVkaWNhdGUmIHByZWRpY2F0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
VGV4dFBvc2l0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRQb3NpdGlvbi5oCmluZGV4
IGRlN2FlZmQ4YWFjY2VmYmEyMmFmN2VlMTY0OWJmN2FjZGJkN2QwNDEuLmViYjViYmYzZjQ4MTk4
NTFhNTdmN2QwNTgwMjhhZGIzMzI5OGI1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvVGV4dFBvc2l0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0UG9zaXRpb24u
aApAQCAtNDAsOCArNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgVGV4dFBvc2l0aW9uKCkg
eyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRQb3NpdGlvbiYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fbGluZSA9PSBvdGhlci5tX2xpbmUgJiYgbV9jb2x1bW4gPT0gb3RoZXIubV9j
b2x1bW47IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dFBvc2l0aW9uJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVGV4dFBvc2l0aW9uJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgLy8gQSB2YWx1ZSB3
aXRoIGxpbmUgdmFsdWUgbGVzcyB0aGFuIGEgbWluaW11bTsgdXNlZCBhcyBhbiBpbXBvc3NpYmxl
IHBvc2l0aW9uLgogICAgIHN0YXRpYyBUZXh0UG9zaXRpb24gYmVsb3dSYW5nZVBvc2l0aW9uKCkg
eyByZXR1cm4gVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCksIE9yZGlu
YWxOdW1iZXI6OmJlZm9yZUZpcnN0KCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA1
MTFiOWMxNjRhMWE1OGMxMWQ0Y2ZkNTMyMWUzMmY1MjdiNGM5ZWQ2Li5iZWIwYWRhYmVjMWFmNGQ1
ODBlZjczOGI4YzkyYTIwZTkxZTczZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTM2
MSwyMSArMzYxLDcgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNv
bnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCkKIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gZXF1YWwoYS5p
bXBsKCksIGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29u
c3QgY2hhciogYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihiKSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBh
LCBBU0NJSUxpdGVyYWwgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihiLmNoYXJhY3RlcnMoKSkpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IExDaGFyKiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEsIGIu
aW1wbCgpKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjaGFyKiBhLCBjb25zdCBT
dHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihh
KSwgYi5pbXBsKCkpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KEFTQ0lJTGl0ZXJhbCBhLCBj
b25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihhLmNoYXJhY3RlcnMoKSksIGIuaW1wbCgpKTsgfQotdGVtcGxhdGU8c2l6ZV90IGlubGlu
ZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZlY3RvcjxjaGFyLCBpbmxp
bmVDYXBhY2l0eT4mIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYi5pbXBsKCks
IGEuZGF0YSgpLCBhLnNpemUoKSk7IH0KLXRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4g
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFy
LCBpbmxpbmVDYXBhY2l0eT4mIGIpIHsgcmV0dXJuIGIgPT0gYTsgfQotCi1pbmxpbmUgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1
YWwoYS5pbXBsKCksIGIuaW1wbCgpKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHJpbmcmIGEsIGNvbnN0IExDaGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIpOyB9
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgY2hhciogYikg
eyByZXR1cm4gIWVxdWFsKGEuaW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
YikpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgQVNDSUlMaXRl
cmFsIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGIuY2hhcmFjdGVycygpKSk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
TENoYXIqIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGEsIGIuaW1wbCgpKTsg
fQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjaGFyKiBhLCBjb25zdCBTdHJpbmcmIGIp
IHsgcmV0dXJuICFlcXVhbChyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYSksIGIuaW1w
bCgpKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShBU0NJSUxpdGVyYWwgYSwgY29uc3QgU3Ry
aW5nJiBiKSB7IHJldHVybiAhZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEu
Y2hhcmFjdGVycygpKSwgYi5pbXBsKCkpOyB9Ci10ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNp
dHk+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmVjdG9yPGNoYXIsIGlubGluZUNhcGFj
aXR5PiYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KLXRlbXBsYXRl
PHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJp
bmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFyLCBpbmxpbmVDYXBhY2l0eT4mIGIpIHsgcmV0dXJuIGIg
IT0gYTsgfQordGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVmVjdG9yPGNoYXIsIGlubGluZUNhcGFjaXR5
PiYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuZGF0YSgpLCBiLnNpemUoKSk7IH0KIAog
Ym9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYp
OwogYm9vbCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IGNoYXIq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5oIGIvU291cmNl
L1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKaW5kZXggOGI0MGMxNGM4NDIzZmQ0ZWNiZjYzNTA2
ZDYwYmZmMWMwZmQ4NTYwZi4uOWYxODZmNjM1NDg0MWE3NTVhYmMwZDg5ZWMzM2YwYjVmZTBlZjg2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGhyZWFkcy9TaWduYWxzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIE9T
KFVOSVgpCiAKKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNsdWRlIDxzaWduYWwuaD4KICNpbmNs
dWRlIDx0dXBsZT4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKaW5k
ZXggYjVkYWY2MDI1Mzk4YTNmN2U2ZjFkMzdhYmVjZTg0NGQ0ZjFjNjU0OC4uMTc0MzEzYzU3NmY1
NGM4NTI1YjQxZDJjOThkODQ0MTQ5NGVmMGY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgKQEAgLTQ1LDMx
ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHRleHREYXRhOwogICAgICAgICB1aW50
MzJfdCBwYXRoSW5kZXggeyAwIH07CiAKLSAgICAgICAgTm9kZVBhdGhDb21wb25lbnQoU3RyaW5n
JiYgZWxlbWVudElkZW50aWZpZXIsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGRhdGEsIHVpbnQz
Ml90IGluZGV4KQotICAgICAgICAgICAgOiBpZGVudGlmaWVyKFdURk1vdmUoZWxlbWVudElkZW50
aWZpZXIpKQotICAgICAgICAgICAgLCBub2RlTmFtZShXVEZNb3ZlKG5hbWUpKQotICAgICAgICAg
ICAgLCB0ZXh0RGF0YShXVEZNb3ZlKGRhdGEpKQotICAgICAgICAgICAgLCBwYXRoSW5kZXgoaW5k
ZXgpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIE5vZGVQYXRoQ29tcG9uZW50KGNv
bnN0IFN0cmluZyYgZWxlbWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBkYXRhLCB1aW50MzJfdCBpbmRleCkKLSAgICAgICAgICAgIDogaWRlbnRpZmllcihl
bGVtZW50SWRlbnRpZmllcikKLSAgICAgICAgICAgICwgbm9kZU5hbWUobmFtZSkKLSAgICAgICAg
ICAgICwgdGV4dERhdGEoZGF0YSkKLSAgICAgICAgICAgICwgcGF0aEluZGV4KGluZGV4KQotICAg
ICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9kZVBh
dGhDb21wb25lbnQmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
aWRlbnRpZmllciA9PSBvdGhlci5pZGVudGlmaWVyICYmIG5vZGVOYW1lID09IG90aGVyLm5vZGVO
YW1lICYmIHRleHREYXRhID09IG90aGVyLnRleHREYXRhICYmIHBhdGhJbmRleCA9PSBvdGhlci5w
YXRoSW5kZXg7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9k
ZVBhdGhDb21wb25lbnQmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgIH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE5vZGVQYXRoQ29tcG9uZW50JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Tm9kZVBhdGhD
b21wb25lbnQ+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCmluZGV4IDZjMGIxYjRm
MmFiMGMwMzMwNzY2NTRlYTRiMjc2NTU5NDQ1ODk1MzYuLjk1NWM3MDYwZjZlYWZlODM2MTVmOGQy
YTAyZmZlZDA0NTAzMjkwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5oCkBAIC03MiwxMCArNzIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX2RhdGFiYXNlTmFtZS5pc051bGwoKTsKICAgICB9CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBvdGhlcikg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBvdGhlci5tX2RhdGFiYXNlTmFtZSA9PSBtX2Rh
dGFiYXNlTmFtZSAmJiBvdGhlci5tX29yaWdpbiA9PSBtX29yaWdpbiAmJiBvdGhlci5tX2lzVHJh
bnNpZW50ID09IG1faXNUcmFuc2llbnQ7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBJREJEYXRhYmFzZUlkZW50aWZpZXImKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VOYW1lOyB9CiAg
ICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcApp
bmRleCAyYTM3YzUyOGVmNWJmOWQ5NTc3M2EwYjEwZjAyNTIyOWJkZTVhNDE4Li41YjU1YWJhOWQ5
ZWEyZTAzMzY4M2Y5NDUxODEzNTYzOGY5NTZmYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcApAQCAtNDQwLDI4ICs0NDAsNiBAQCBib29s
IElEQktleURhdGE6Om9wZXJhdG9yPChjb25zdCBJREJLZXlEYXRhJiByaHMpIGNvbnN0CiAgICAg
cmV0dXJuIGNvbXBhcmUocmhzKSA8IDA7CiB9CiAKLWJvb2wgSURCS2V5RGF0YTo6b3BlcmF0b3I9
PShjb25zdCBJREJLZXlEYXRhJiBvdGhlcikgY29uc3QKLXsKLSAgICBpZiAobV90eXBlICE9IG90
aGVyLm1fdHlwZSB8fCBtX2lzTnVsbCAhPSBvdGhlci5tX2lzTnVsbCB8fCBtX2lzRGVsZXRlZFZh
bHVlICE9IG90aGVyLm1faXNEZWxldGVkVmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBzd2l0Y2ggKG1fdHlwZSkgewotICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpJbnZhbGlk
OgotICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpNYXg6Ci0gICAgY2FzZSBJbmRleGVkREI6
OktleVR5cGU6Ok1pbjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBJbmRleGVkREI6
OktleVR5cGU6Ok51bWJlcjoKLSAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6RGF0ZToKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6Z2V0PGRvdWJsZT4obV92YWx1ZSkgPT0gc3RkOjpnZXQ8ZG91Ymxl
PihvdGhlci5tX3ZhbHVlKTsKLSAgICBjYXNlIEluZGV4ZWREQjo6S2V5VHlwZTo6U3RyaW5nOgot
ICAgICAgICByZXR1cm4gc3RkOjpnZXQ8U3RyaW5nPihtX3ZhbHVlKSA9PSBzdGQ6OmdldDxTdHJp
bmc+KG90aGVyLm1fdmFsdWUpOwotICAgIGNhc2UgSW5kZXhlZERCOjpLZXlUeXBlOjpCaW5hcnk6
Ci0gICAgICAgIHJldHVybiBzdGQ6OmdldDxUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4obV92YWx1ZSkg
PT0gc3RkOjpnZXQ8VGhyZWFkU2FmZURhdGFCdWZmZXI+KG90aGVyLm1fdmFsdWUpOwotICAgIGNh
c2UgSW5kZXhlZERCOjpLZXlUeXBlOjpBcnJheToKLSAgICAgICAgcmV0dXJuIHN0ZDo6Z2V0PFZl
Y3RvcjxJREJLZXlEYXRhPj4obV92YWx1ZSkgPT0gc3RkOjpnZXQ8VmVjdG9yPElEQktleURhdGE+
PihvdGhlci5tX3ZhbHVlKTsKLSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLX0KLQogc2l6ZV90IElEQktleURhdGE6OnNpemUoKSBjb25zdAogewogICAgIGlmIChtX2lz
TnVsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaApp
bmRleCA0Yjk3ODUzNjlkMTkwYTZiMTk2OTFkMTM3YWUxNTY3ZTVjMzc5NWQ5Li4wMWJmODZhYTVh
NGQwM2FhOTY5MzJlYjdjODU2MDk5ZjAzODE4ZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oCkBAIC0xMTEsMTEgKzExMSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuICEoKnRoaXMgPCBvdGhlcik7CiAgICAgfQogCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IElEQktleURhdGEmIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgSURCS2V5RGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJREJL
ZXlEYXRhJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlc291cmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCmluZGV4IGJlMTYxOTdmNjM0YTU5NmMz
OWU1MTMwMjg1OTA2ODM1NzQ1ODY4MmEuLjIxYWQ2NDc4YzEzMTIzZGRmYzQ5Njk3MWJmZmY5YTA5
MmY1MTcwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKQEAgLTYxLDExICs2MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXpl
b2YoaGFzaENvZGVzKT4oaGFzaENvZGVzKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllciA9PSBvdGhlci5tX2lkYkNvbm5l
Y3Rpb25JZGVudGlmaWVyCi0gICAgICAgICAgICAmJiBtX3Jlc291cmNlTnVtYmVyID09IG90aGVy
Lm1fcmVzb3VyY2VOdW1iZXI7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgCiAgICAgSURCQ29ubmVj
dGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
YkNvbm5lY3Rpb25JZGVudGlmaWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUG9zaXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFQb3NpdGlvblN0YXRlLmgKaW5kZXggMGFiY2I1OTIy
ZmY5MDMzMDhhZjU5NWNiNTRiY2FiZjRjNjllZjU1Zi4uZDNlOGFiZmU2MTkzMTU2NWJhZjJlZDNk
Yjc0NWUxMGQwYzkzN2E5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNlc3Npb24vTWVkaWFQb3NpdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFQb3NpdGlvblN0YXRlLmgKQEAgLTM5LDcgKzM5LDcgQEAgc3Ry
dWN0IE1lZGlhUG9zaXRpb25TdGF0ZSB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPE1lZGlhUG9zaXRpb25TdGF0ZT4gZGVjb2RlKERlY29kZXImKTsK
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNZWRpYVBvc2l0aW9uU3RhdGUmIG90aGVyKSBj
b25zdCB7IHJldHVybiBkdXJhdGlvbiA9PSBvdGhlci5kdXJhdGlvbiAmJiBwbGF5YmFja1JhdGUg
PT0gb3RoZXIucGxheWJhY2tSYXRlICYmIHBvc2l0aW9uID09IG90aGVyLnBvc2l0aW9uOyB9Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhUG9zaXRpb25TdGF0ZSYpIGNvbnN0ID0gZGVm
YXVsdDsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IGlubGluZSB2b2lkIE1lZGlhUG9z
aXRpb25TdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2Zvcm0uaAppbmRleCBj
MjQ5ZjA0YWU2MWZiZTU2NjVjYmE0ZTU4Mjg2NGY2MGEwMDQzNGM1Li5iYTRiNWZjY2JkODcxNDg5
ZjcwNTU4MTljODRhNTg5MmFjMzQwMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNmb3JtLmgKQEAgLTY2LDEwICs2Niw2IEBAIHBy
aXZhdGU6CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgUlRDUnRwVHJhbnNmb3JtJiwgY29u
c3QgUlRDUnRwVHJhbnNmb3JtJik7Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJUQ1J0
cFRyYW5zZm9ybSYgYSwgY29uc3QgUlRDUnRwVHJhbnNmb3JtJiBiKQotewotICAgIHJldHVybiAh
KGEgPT0gYik7Ci19CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wZXJtaXNzaW9ucy9QZXJtaXNzaW9uRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wZXJtaXNzaW9ucy9QZXJtaXNzaW9uRGVzY3JpcHRvci5o
CmluZGV4IDRmMmZkMjAzZWI1NWU3MWY5YjdjNjQ5NDFkNWFmNWRmYzk2Njg2MTEuLjc5YzY3MTc1
ZWQ3NDk3NTYxNDM4N2UwYWZjNTE2M2QwZmI3YTJkZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGVybWlzc2lvbnMvUGVybWlzc2lvbkRlc2NyaXB0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3Blcm1pc3Npb25zL1Blcm1pc3Npb25EZXNjcmlwdG9yLmgKQEAg
LTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IFBlcm1pc3Npb25EZXNj
cmlwdG9yIHsKICAgICBQZXJtaXNzaW9uTmFtZSBuYW1lOwogCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFBlcm1pc3Npb25EZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdCB7IHJldHVybiBu
YW1lID09IGRlc2NyaXB0b3IubmFtZTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQZXJt
aXNzaW9uRGVzY3JpcHRvciYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGVybWlzc2lvbkRlc2NyaXB0b3I+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9CYXNlQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0Jhc2VBdWRpb0NvbnRleHQuaAppbmRleCA0YWZmYWMzM2UzNDI0YzNmYWI1YWE1YjJiZWQwZDc0
NDc2NzIyZmQ1Li42NTNlMzA5ZTQwNzY2MjEyOTgwYjExOTUzYTk0ZTBiOWI4ZWJmMDAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Jhc2VBdWRpb0NvbnRleHQu
aApAQCAtMzA4LDcgKzMwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFRhaWxQcm9jZXNzaW5nTm9k
ZSYgb3BlcmF0b3I9KGNvbnN0IFRhaWxQcm9jZXNzaW5nTm9kZSYpID0gZGVsZXRlOwogICAgICAg
ICBUYWlsUHJvY2Vzc2luZ05vZGUmIG9wZXJhdG9yPShUYWlsUHJvY2Vzc2luZ05vZGUmJikgPSBk
ZWxldGU7CiAgICAgICAgIEF1ZGlvTm9kZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1f
bm9kZS5nZXQoKTsgfQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGFpbFByb2Nlc3Np
bmdOb2RlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9ub2RlID09IG90aGVyLm1fbm9kZTsgfQor
ICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGFpbFByb2Nlc3NpbmdOb2RlJikgY29uc3Qg
PSBkZWZhdWx0OwogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXVkaW9Ob2RlJiBub2Rl
KSBjb25zdCB7IHJldHVybiBtX25vZGUgPT0gJm5vZGU7IH0KICAgICBwcml2YXRlOgogICAgICAg
ICBSZWZQdHI8QXVkaW9Ob2RlPiBtX25vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL1Nlc3Npb25JRC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9TZXNzaW9uSUQuaApp
bmRleCBkMmQ2MzIxZDcwNGMyZWY3MjQxY2IxMzQ4NmQ4NzgyZTIyZWU5NjgyLi41YjY1ZGM1MWRi
ZWFiMzY5OWE3NzQ5YjIyZGM2Y2YwY2M1ODZjNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL1Nlc3Npb25JRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvU2Vzc2lv
bklELmgKQEAgLTcwLDggKzcwLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXIgPT0gSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlSUQ7IH0KIAogICAgIHVpbnQ2NF90IHRvVUludDY0KCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KFNlc3Npb25JRCBzZXNzaW9uSUQpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllciA9PSBzZXNzaW9uSUQubV9pZGVudGlmaWVyOyB9Ci0g
ICAgYm9vbCBvcGVyYXRvciE9KFNlc3Npb25JRCBzZXNzaW9uSUQpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllciAhPSBzZXNzaW9uSUQubV9pZGVudGlmaWVyOyB9CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNlc3Npb25JRCYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICBib29sIGlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0IHsgcmV0dXJuICFpc0VwaGVtZXJhbCgpOyB9CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVB
VkZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmNwcAppbmRleCAwNjU5ODQwNjg5ZTRhYmI1MjIwZTViZGQ4MDUy
M2Q3NDAyZjRhY2UyLi44ODhiZWYzMjM2ODJlYTIyOTk3ZWY2NDA5YTBkNzFkODU1ZmZmZWE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVB
VkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvYXZmb3VuZGF0aW9u
L01lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAKQEAgLTMyLDM3ICszMiwyOCBAQAogCiBuYW1lc3Bh
Y2UgUEFMIHsKIAotc3RhdGljIGJvb2wgQ01UaW1lSGFzRmxhZ3MoY29uc3QgQ01UaW1lJiBjbVRp
bWUsIHVpbnQzMl90IGZsYWdzKQorTWVkaWFUaW1lIHRvTWVkaWFUaW1lKENNVGltZSB0aW1lKQog
ewotICAgIHJldHVybiAoY21UaW1lLmZsYWdzICYgZmxhZ3MpID09IGZsYWdzOworICAgIE9wdGlv
blNldDxNZWRpYVRpbWU6OkZsYWc+IGZsYWdzOworICAgIGlmICh0aW1lLmZsYWdzICYga0NNVGlt
ZUZsYWdzX1ZhbGlkKSB7CisgICAgICAgIGZsYWdzLmFkZChNZWRpYVRpbWU6OlZhbGlkKTsKKyAg
ICAgICAgaWYgKHRpbWUuZmxhZ3MgJiBrQ01UaW1lRmxhZ3NfUG9zaXRpdmVJbmZpbml0eSkKKyAg
ICAgICAgICAgIGZsYWdzLmFkZChNZWRpYVRpbWU6OlBvc2l0aXZlSW5maW5pdGUpOworICAgICAg
ICBlbHNlIGlmICh0aW1lLmZsYWdzICYga0NNVGltZUZsYWdzX05lZ2F0aXZlSW5maW5pdHkpCisg
ICAgICAgICAgICBmbGFncy5hZGQoTWVkaWFUaW1lOjpOZWdhdGl2ZUluZmluaXRlKTsKKyAgICAg
ICAgZWxzZSBpZiAodGltZS5mbGFncyAmIGtDTVRpbWVGbGFnc19JbmRlZmluaXRlKQorICAgICAg
ICAgICAgZmxhZ3MuYWRkKE1lZGlhVGltZTo6SW5kZWZpbml0ZSk7CisgICAgfQorICAgIHJldHVy
biBNZWRpYVRpbWUodGltZS52YWx1ZSwgdGltZS50aW1lc2NhbGUsIGZsYWdzKTsKIH0KIAotTWVk
aWFUaW1lIHRvTWVkaWFUaW1lKGNvbnN0IENNVGltZSYgY21UaW1lKQotewotICAgIHVpbnQzMl90
IGZsYWdzID0gMDsKLSAgICBpZiAoQ01UaW1lSGFzRmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxhZ3Nf
VmFsaWQpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6OlZhbGlkOwotICAgIGlmIChDTVRp
bWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19IYXNC
ZWVuUm91bmRlZCkpCi0gICAgICAgIGZsYWdzIHw9IE1lZGlhVGltZTo6SGFzQmVlblJvdW5kZWQ7
Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NN
VGltZUZsYWdzX1Bvc2l0aXZlSW5maW5pdHkpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6
OlBvc2l0aXZlSW5maW5pdGU7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGlt
ZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX05lZ2F0aXZlSW5maW5pdHkpKQotICAgICAgICBm
bGFncyB8PSBNZWRpYVRpbWU6Ok5lZ2F0aXZlSW5maW5pdGU7Ci0gICAgaWYgKENNVGltZUhhc0Zs
YWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX0luZGVmaW5pdGUp
KQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6OkluZGVmaW5pdGU7Ci0KLSAgICByZXR1cm4g
TWVkaWFUaW1lKGNtVGltZS52YWx1ZSwgY21UaW1lLnRpbWVzY2FsZSwgZmxhZ3MpOwotfQotCi1D
TVRpbWUgdG9DTVRpbWUoY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUpCitDTVRpbWUgdG9DTVRp
bWUoTWVkaWFUaW1lIG1lZGlhVGltZSkKIHsKICAgICBDTVRpbWUgdGltZTsKLQogICAgIGlmICht
ZWRpYVRpbWUuaGFzRG91YmxlVmFsdWUoKSkKICAgICAgICAgdGltZSA9IENNVGltZU1ha2VXaXRo
U2Vjb25kcyhtZWRpYVRpbWUudG9Eb3VibGUoKSwgbWVkaWFUaW1lLnRpbWVTY2FsZSgpKTsKICAg
ICBlbHNlCiAgICAgICAgIHRpbWUgPSBDTVRpbWVNYWtlKG1lZGlhVGltZS50aW1lVmFsdWUoKSwg
bWVkaWFUaW1lLnRpbWVTY2FsZSgpKTsKLQogICAgIGlmIChtZWRpYVRpbWUuaXNWYWxpZCgpKQog
ICAgICAgICB0aW1lLmZsYWdzIHw9IGtDTVRpbWVGbGFnc19WYWxpZDsKICAgICBpZiAobWVkaWFU
aW1lLmhhc0JlZW5Sb3VuZGVkKCkpCkBAIC03MSw3ICs2Miw2IEBAIENNVGltZSB0b0NNVGltZShj
b25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkKICAgICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1l
RmxhZ3NfUG9zaXRpdmVJbmZpbml0eTsKICAgICBpZiAobWVkaWFUaW1lLmlzTmVnYXRpdmVJbmZp
bml0ZSgpKQogICAgICAgICB0aW1lLmZsYWdzIHw9IGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmlu
aXR5OwotCiAgICAgcmV0dXJuIHRpbWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgKaW5kZXgg
YjNkYmUxN2FhOWJjMTI1MWRjZTJlYzhhZGVlN2NiODQ5NDc5YmY3MC4uYTJiY2RhZTlmOGU5OWQw
ZjA0ZTNmM2MzZWQyMGEzZjM2YTI5MDZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgKQEAgLTMy
LDggKzMyLDggQEAKIAogbmFtZXNwYWNlIFBBTCB7CiAKLVBBTF9FWFBPUlQgQ01UaW1lIHRvQ01U
aW1lKGNvbnN0IE1lZGlhVGltZSYpOwotUEFMX0VYUE9SVCBNZWRpYVRpbWUgdG9NZWRpYVRpbWUo
Y29uc3QgQ01UaW1lJik7CitQQUxfRVhQT1JUIENNVGltZSB0b0NNVGltZShNZWRpYVRpbWUpOwor
UEFMX0VYUE9SVCBNZWRpYVRpbWUgdG9NZWRpYVRpbWUoQ01UaW1lKTsKIAogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3RleHQvVGV4dEVuY29kaW5nLmgKaW5kZXggZjQ2NjRjOTFlYTQzNWVh
NWNkZGI5OTFjZmNkMjI0Nzc2YjJjYjE3Zi4uY2UxMDczOGM4ZTdlMjUxZDE0MzUxNjk0YjAwY2Fk
Yzg0NGI1ZTM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC90ZXh0L1RleHRF
bmNvZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvdGV4dC9UZXh0RW5jb2Rpbmcu
aApAQCAtNjYsNyArNjYsNiBAQCBwcml2YXRlOgogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBUZXh0RW5jb2RpbmcmIGEsIGNvbnN0IFRleHRFbmNvZGluZyYgYikgeyByZXR1cm4g
YS5uYW1lKCkgPT0gYi5uYW1lKCk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4
dEVuY29kaW5nJiBhLCBjb25zdCBUZXh0RW5jb2RpbmcmIGIpIHsgcmV0dXJuIGEubmFtZSgpICE9
IGIubmFtZSgpOyB9CiAKIGNvbnN0IFRleHRFbmNvZGluZyYgQVNDSUlFbmNvZGluZygpOwogY29u
c3QgVGV4dEVuY29kaW5nJiBMYXRpbjFFbmNvZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggMGUxYWQ3MjQ1ZmUxNmUx
ZTk2ZTNkYTFjYjU4NGI5YTRhNmQ4OWYzYi4uY2YwZWVjOTdmM2EwMmFmOTA3YWI2NGNiNzc1MDEx
YmRiMmJmMDBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3Bl
cnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVy
dHlBbmltYXRpb24uY3BwCkBAIC0xMjEsOCArMTIxLDggQEAgc3RhdGljIGlubGluZSBHYXBMZW5n
dGggYmxlbmRGdW5jKGNvbnN0IEdhcExlbmd0aCYgZnJvbSwgY29uc3QgR2FwTGVuZ3RoJiB0bywg
Y28KIAogc3RhdGljIGlubGluZSBUYWJTaXplIGJsZW5kRnVuYyhjb25zdCBUYWJTaXplJiBmcm9t
LCBjb25zdCBUYWJTaXplJiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNv
bnRleHQpCiB7Ci0gICAgYXV0byBibGVuZGVkVmFsdWUgPSBibGVuZChmcm9tLnZhbHVlKCksIHRv
LnZhbHVlKCksIGNvbnRleHQpOwotICAgIHJldHVybiB7IGJsZW5kZWRWYWx1ZSA8IDAgPyAwIDog
YmxlbmRlZFZhbHVlLCBmcm9tLmlzU3BhY2VzKCkgPyBTcGFjZVZhbHVlVHlwZSA6IExlbmd0aFZh
bHVlVHlwZSB9OworICAgIGF1dG8gYmxlbmRlZFZhbHVlID0gYmxlbmQoZnJvbS52YWx1ZSwgdG8u
dmFsdWUsIGNvbnRleHQpOworICAgIHJldHVybiB7IGJsZW5kZWRWYWx1ZSA8IDAgPyAwIDogYmxl
bmRlZFZhbHVlLCBmcm9tLmlzU3BhY2VzID8gVGFiU2l6ZTo6U3BhY2VzIDogVGFiU2l6ZTo6TGVu
Z3RoIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgTGVuZ3RoU2l6ZSBibGVuZEZ1bmMoY29uc3QgTGVu
Z3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6ZSYgdG8sIGNvbnN0IENTU1Byb3BlcnR5Qmxl
bmRpbmdDb250ZXh0JiBjb250ZXh0KQpAQCAtOTc4LDEwICs5NzgsOSBAQCBwcml2YXRlOgogICAg
IC8vIGl0J3Mgb25seSBwb3NzaWJsZSBpZiB0aGV5J3JlIGJvdGggbm90IGF1dG8uCiAgICAgYm9v
bCBjYW5JbnRlcnBvbGF0ZShjb25zdCBSZW5kZXJTdHlsZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5
bGUmIHRvLCBDb21wb3NpdGVPcGVyYXRpb24pIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBi
b29sIGZyb21Jc0F1dG8gPSB2YWx1ZShmcm9tKS54KCkuaXNBdXRvKCkgJiYgdmFsdWUoZnJvbSku
eSgpLmlzQXV0bygpOwotICAgICAgICBib29sIHRvSXNBdXRvID0gdmFsdWUodG8pLngoKS5pc0F1
dG8oKSAmJiB2YWx1ZSh0bykueSgpLmlzQXV0bygpOwotCi0gICAgICAgIHJldHVybiAoIWZyb21J
c0F1dG8gJiYgIXRvSXNBdXRvKTsgCisgICAgICAgIGJvb2wgZnJvbUlzQXV0byA9IHZhbHVlKGZy
b20pLnguaXNBdXRvKCkgJiYgdmFsdWUoZnJvbSkueS5pc0F1dG8oKTsKKyAgICAgICAgYm9vbCB0
b0lzQXV0byA9IHZhbHVlKHRvKS54LmlzQXV0bygpICYmIHZhbHVlKHRvKS55LmlzQXV0bygpOwor
ICAgICAgICByZXR1cm4gIWZyb21Jc0F1dG8gJiYgIXRvSXNBdXRvOwogICAgIH0KIH07CiAKQEAg
LTEyOTIsMjAgKzEyOTEsMjAgQEAgc3RhdGljIGlubGluZSBzaXplX3Qgc2hhZG93TGlzdExlbmd0
aChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cpCiAgICAgcmV0dXJuIGNvdW50OwogfQogCi1zdGF0
aWMgaW5saW5lIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvd0ZvckJsZW5kaW5nKGNvbnN0IFNoYWRv
d0RhdGEqIHNyY1NoYWRvdywgY29uc3QgU2hhZG93RGF0YSogb3RoZXJTaGFkb3cpCitzdGF0aWMg
aW5saW5lIGNvbnN0IFNoYWRvd0RhdGEmIHNoYWRvd0ZvckJsZW5kaW5nKGNvbnN0IFNoYWRvd0Rh
dGEqIHNyY1NoYWRvdywgY29uc3QgU2hhZG93RGF0YSogb3RoZXJTaGFkb3cpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRTaGFkb3dEYXRhKExlbmd0aFBv
aW50KExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCkp
LCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBT
aGFkb3dTdHlsZTo6Tm9ybWFsLCBmYWxzZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0SW5zZXRTaGFkb3dEYXRh
KExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBl
OjpGaXhlZCkpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6
Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQsIGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFj
ayk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRXZWJLaXRC
b3hTaGFkb3dEYXRhKExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0
aChMZW5ndGhUeXBlOjpGaXhlZCkpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBMZW5ndGgo
TGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6Tm9ybWFsLCB0cnVlLCBDb2xvcjo6dHJh
bnNwYXJlbnRCbGFjayk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNoYWRvd0RhdGE+IGRl
ZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5
cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aChMZW5ndGhUeXBl
OjpGaXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpJbnNldCwg
dHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTaGFkb3dEYXRhPiBkZWZhdWx0U2hhZG93RGF0YShMZW5ndGhQb2ludCB7IHsgTGVuZ3RoVHlw
ZTo6Rml4ZWQgfSwgeyBMZW5ndGhUeXBlOjpGaXhlZCB9IH0sIExlbmd0aChMZW5ndGhUeXBlOjpG
aXhlZCksIExlbmd0aChMZW5ndGhUeXBlOjpGaXhlZCksIFNoYWRvd1N0eWxlOjpOb3JtYWwsIGZh
bHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFNoYWRvd0RhdGE+IGRlZmF1bHRJbnNldFNoYWRvd0RhdGEoTGVuZ3RoUG9pbnQgeyB7IExlbmd0
aFR5cGU6OkZpeGVkIH0sIHsgTGVuZ3RoVHlwZTo6Rml4ZWQgfSB9LCBMZW5ndGgoTGVuZ3RoVHlw
ZTo6Rml4ZWQpLCBMZW5ndGgoTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dTdHlsZTo6SW5zZXQs
IGZhbHNlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFNoYWRvd0RhdGE+IGRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhKExlbmd0aFBvaW50IHsg
eyBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKExl
bmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6
Ok5vcm1hbCwgdHJ1ZSwgQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTaGFkb3dEYXRhPiBkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhKExl
bmd0aFBvaW50IHsgeyBMZW5ndGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0g
fSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSwg
U2hhZG93U3R5bGU6Okluc2V0LCB0cnVlLCBDb2xvcjo6dHJhbnNwYXJlbnRCbGFjayk7CiAKICAg
ICBpZiAoc3JjU2hhZG93KQotICAgICAgICByZXR1cm4gc3JjU2hhZG93OworICAgICAgICByZXR1
cm4gKnNyY1NoYWRvdzsKIAogICAgIGlmIChvdGhlclNoYWRvdy0+c3R5bGUoKSA9PSBTaGFkb3dT
dHlsZTo6SW5zZXQpCi0gICAgICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJraXRCb3hTaGFk
b3coKSA/ICZkZWZhdWx0SW5zZXRXZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDogJmRlZmF1bHRJ
bnNldFNoYWRvd0RhdGEuZ2V0KCk7CisgICAgICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJr
aXRCb3hTaGFkb3coKSA/IGRlZmF1bHRJbnNldFdlYktpdEJveFNoYWRvd0RhdGEuZ2V0KCkgOiBk
ZWZhdWx0SW5zZXRTaGFkb3dEYXRhLmdldCgpOwogCi0gICAgcmV0dXJuIG90aGVyU2hhZG93LT5p
c1dlYmtpdEJveFNoYWRvdygpID8gJmRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDog
JmRlZmF1bHRTaGFkb3dEYXRhLmdldCgpOworICAgIHJldHVybiBvdGhlclNoYWRvdy0+aXNXZWJr
aXRCb3hTaGFkb3coKSA/IGRlZmF1bHRXZWJLaXRCb3hTaGFkb3dEYXRhLmdldCgpIDogZGVmYXVs
dFNoYWRvd0RhdGEuZ2V0KCk7CiB9CiAKIGNsYXNzIFByb3BlcnR5V3JhcHBlclNoYWRvdyBmaW5h
bCA6IHB1YmxpYyBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJCYXNlIHsKQEAgLTE0MjgsMTEgKzE0
MjcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgU2hhZG93RGF0YSogbGFzdFNoYWRvdyA9IG51bGxw
dHI7CiAKICAgICAgICAgd2hpbGUgKHNoYWRvd0EgfHwgc2hhZG93QikgewotICAgICAgICAgICAg
Y29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93QSwg
c2hhZG93Qik7Ci0gICAgICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBkc3RTaGFkb3cgPSBzaGFk
b3dGb3JCbGVuZGluZyhzaGFkb3dCLCBzaGFkb3dBKTsKKyAgICAgICAgICAgIGF1dG8mIHNyY1No
YWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHNoYWRvd0EsIHNoYWRvd0IpOworICAgICAgICAgICAg
YXV0byYgZHN0U2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcoc2hhZG93Qiwgc2hhZG93QSk7CiAK
LSAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBibGVuZGVkU2hhZG93ID0g
YmxlbmRGdW5jKHNyY1NoYWRvdywgZHN0U2hhZG93LCBjb250ZXh0KTsKLSAgICAgICAgICAgIFNo
YWRvd0RhdGEqIGJsZW5kZWRTaGFkb3dQdHIgPSBibGVuZGVkU2hhZG93LmdldCgpOworICAgICAg
ICAgICAgYXV0byBibGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKCZzcmNTaGFkb3csICZkc3RTaGFk
b3csIGNvbnRleHQpOworICAgICAgICAgICAgYXV0byBibGVuZGVkU2hhZG93UHRyID0gYmxlbmRl
ZFNoYWRvdy5nZXQoKTsKIAogICAgICAgICAgICAgaWYgKCFsYXN0U2hhZG93KQogICAgICAgICAg
ICAgICAgIG5ld1NoYWRvd0RhdGEgPSBXVEZNb3ZlKGJsZW5kZWRTaGFkb3cpOwpAQCAtMTQ0MSw4
ICsxNDQwLDggQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgbGFzdFNoYWRvdyA9IGJsZW5kZWRT
aGFkb3dQdHI7CiAKLSAgICAgICAgICAgIHNoYWRvd0EgPSBzaGFkb3dBID8gc2hhZG93QS0+bmV4
dCgpIDogMDsKLSAgICAgICAgICAgIHNoYWRvd0IgPSBzaGFkb3dCID8gc2hhZG93Qi0+bmV4dCgp
IDogMDsKKyAgICAgICAgICAgIHNoYWRvd0EgPSBzaGFkb3dBID8gc2hhZG93QS0+bmV4dCgpIDog
bnVsbHB0cjsKKyAgICAgICAgICAgIHNoYWRvd0IgPSBzaGFkb3dCID8gc2hhZG93Qi0+bmV4dCgp
IDogbnVsbHB0cjsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXdTaGFkb3dEYXRhOwpA
QCAtMTQ3MSwxMyArMTQ3MCwxNCBAQCBwcml2YXRlOgogCiAgICAgICAgIGludCBtYXhMZW5ndGgg
PSBzdGQ6Om1heChmcm9tTGVuZ3RoLCB0b0xlbmd0aCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbWF4TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIGZy
b21TaGFkb3cgPSBpIDwgZnJvbUxlbmd0aCA/IGZyb21TaGFkb3dzW2ldIDogMDsKLSAgICAgICAg
ICAgIGNvbnN0IFNoYWRvd0RhdGEqIHRvU2hhZG93ID0gaSA8IHRvTGVuZ3RoID8gdG9TaGFkb3dz
W2ldIDogMDsKKyAgICAgICAgICAgIGF1dG8gZnJvbVNoYWRvdyA9IGkgPCBmcm9tTGVuZ3RoID8g
ZnJvbVNoYWRvd3NbaV0gOiBudWxscHRyOworICAgICAgICAgICAgYXV0byB0b1NoYWRvdyA9IGkg
PCB0b0xlbmd0aCA/IHRvU2hhZG93c1tpXSA6IG51bGxwdHI7CisKKyAgICAgICAgICAgIGF1dG8m
IHNyY1NoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKGZyb21TaGFkb3csIHRvU2hhZG93KTsKKyAg
ICAgICAgICAgIGF1dG8mIGRzdFNoYWRvdyA9IHNoYWRvd0ZvckJsZW5kaW5nKHRvU2hhZG93LCBm
cm9tU2hhZG93KTsKIAotICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogc3JjU2hhZG93ID0g
c2hhZG93Rm9yQmxlbmRpbmcoZnJvbVNoYWRvdywgdG9TaGFkb3cpOwotICAgICAgICAgICAgY29u
c3QgU2hhZG93RGF0YSogZHN0U2hhZG93ID0gc2hhZG93Rm9yQmxlbmRpbmcodG9TaGFkb3csIGZy
b21TaGFkb3cpOworICAgICAgICAgICAgYXV0byBibGVuZGVkU2hhZG93ID0gYmxlbmRGdW5jKCZz
cmNTaGFkb3csICZkc3RTaGFkb3csIGNvbnRleHQpOwogCi0gICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U2hhZG93RGF0YT4gYmxlbmRlZFNoYWRvdyA9IGJsZW5kRnVuYyhzcmNTaGFkb3csIGRz
dFNoYWRvdywgY29udGV4dCk7CiAgICAgICAgICAgICAvLyBJbnNlcnQgYXQgdGhlIHN0YXJ0IG9m
IHRoZSBsaXN0IHRvIHByZXNlcnZlIHRoZSBvcmRlci4KICAgICAgICAgICAgIGJsZW5kZWRTaGFk
b3ctPnNldE5leHQoV1RGTW92ZShuZXdTaGFkb3dEYXRhKSk7CiAgICAgICAgICAgICBuZXdTaGFk
b3dEYXRhID0gV1RGTW92ZShibGVuZGVkU2hhZG93KTsKQEAgLTIzNTksNyArMjM1OSw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5JbnRlcnBvbGF0ZShjb25zdCBSZW5kZXJTdHls
ZSYgZnJvbSwgY29uc3QgUmVuZGVyU3R5bGUmIHRvLCBDb21wb3NpdGVPcGVyYXRpb24pIGNvbnN0
IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gdmFsdWUoZnJvbSkuaXNTcGFjZXMoKSA9PSB2
YWx1ZSh0bykuaXNTcGFjZXMoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlKGZyb20pLmlzU3BhY2Vz
ID09IHZhbHVlKHRvKS5pc1NwYWNlczsKICAgICB9CiAKICAgICB2b2lkIGJsZW5kKFJlbmRlclN0
eWxlJiBkZXN0aW5hdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUmIGZyb20sIGNvbnN0IFJlbmRlclN0
eWxlJiB0bywgY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQpIGNvbnN0
IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKaW5kZXggZGI2ZjUwOGM0Yjc3MDIwMDE4ZWJh
MzIyZTAxYjE0Mjg5NDgyMGQ4Mi4uMzE1OTZlMzA1YTUyYzE1NjRjMTZmMTZiMGVhNWRiMTExYWE1
ZWJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmNwcApAQCAtMTIyLDEzICsxMjIsNiBAQCBNb2Rp
ZnlIZWFkZXJzQWN0aW9uIE1vZGlmeUhlYWRlcnNBY3Rpb246Omlzb2xhdGVkQ29weSgpIGNvbnN0
CiAgICAgfTsKIH0KIAotYm9vbCBNb2RpZnlIZWFkZXJzQWN0aW9uOjpvcGVyYXRvcj09KGNvbnN0
IE1vZGlmeUhlYWRlcnNBY3Rpb24mIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBvdGhlci5o
YXNoVGFibGVUeXBlID09IHRoaXMtPmhhc2hUYWJsZVR5cGUKLSAgICAgICAgJiYgb3RoZXIucmVx
dWVzdEhlYWRlcnMgPT0gdGhpcy0+cmVxdWVzdEhlYWRlcnMKLSAgICAgICAgJiYgb3RoZXIucmVz
cG9uc2VIZWFkZXJzID09IHRoaXMtPnJlc3BvbnNlSGVhZGVyczsKLX0KLQogdm9pZCBNb2RpZnlI
ZWFkZXJzQWN0aW9uOjpzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpIGNvbnN0CiB7
CiAgICAgYXV0byBiZWdpbkluZGV4ID0gdmVjdG9yLnNpemUoKTsKQEAgLTIyOSwxMSArMjIyLDYg
QEAgYXV0byBNb2RpZnlIZWFkZXJzQWN0aW9uOjpNb2RpZnlIZWFkZXJJbmZvOjppc29sYXRlZENv
cHkoKSBjb25zdCAtPiBNb2RpZnlIZWFkZXIKICAgICB9OwogfQogCi1ib29sIE1vZGlmeUhlYWRl
cnNBY3Rpb246Ok1vZGlmeUhlYWRlckluZm86Om9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5SGVhZGVy
SW5mbyYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG90aGVyLm9wZXJhdGlvbiA9PSB0aGlz
LT5vcGVyYXRpb247Ci19Ci0KIHZvaWQgTW9kaWZ5SGVhZGVyc0FjdGlvbjo6TW9kaWZ5SGVhZGVy
SW5mbzo6c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKSBjb25zdAogewogICAgIGF1
dG8gYmVnaW5JbmRleCA9IHZlY3Rvci5zaXplKCk7CkBAIC0zMjEsMTIgKzMwOSw2IEBAIFJlZGly
ZWN0QWN0aW9uIFJlZGlyZWN0QWN0aW9uOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIH07CiB9
CiAKLWJvb2wgUmVkaXJlY3RBY3Rpb246Om9wZXJhdG9yPT0oY29uc3QgUmVkaXJlY3RBY3Rpb24m
IG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBvdGhlci5oYXNoVGFibGVUeXBlID09IHRoaXMt
Pmhhc2hUYWJsZVR5cGUKLSAgICAgICAgJiYgb3RoZXIuYWN0aW9uID09IHRoaXMtPmFjdGlvbjsK
LX0KLQogdm9pZCBSZWRpcmVjdEFjdGlvbjo6c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYgdmVj
dG9yKSBjb25zdAogewogICAgIGF1dG8gYmVnaW5JbmRleCA9IHZlY3Rvci5zaXplKCk7CkBAIC00
NDYsMTggKzQyOCw2IEBAIGF1dG8gUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QgLT4gVVJMVHJhbnNmb3JtQWN0CiAgICAgfTsKIH0KIAotYm9v
bCBSZWRpcmVjdEFjdGlvbjo6VVJMVHJhbnNmb3JtQWN0aW9uOjpvcGVyYXRvcj09KGNvbnN0IFVS
TFRyYW5zZm9ybUFjdGlvbiYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG90aGVyLmZyYWdt
ZW50ID09IHRoaXMtPmZyYWdtZW50Ci0gICAgICAgICYmIG90aGVyLmhvc3QgPT0gdGhpcy0+aG9z
dAotICAgICAgICAmJiBvdGhlci5wYXNzd29yZCA9PSB0aGlzLT5wYXNzd29yZAotICAgICAgICAm
JiBvdGhlci5wYXRoID09IHRoaXMtPnBhdGgKLSAgICAgICAgJiYgb3RoZXIucG9ydCA9PSB0aGlz
LT5wb3J0Ci0gICAgICAgICYmIG90aGVyLnF1ZXJ5VHJhbnNmb3JtID09IHRoaXMtPnF1ZXJ5VHJh
bnNmb3JtCi0gICAgICAgICYmIG90aGVyLnNjaGVtZSA9PSB0aGlzLT5zY2hlbWUKLSAgICAgICAg
JiYgb3RoZXIudXNlcm5hbWUgPT0gdGhpcy0+dXNlcm5hbWU7Ci19Ci0KIHZvaWQgUmVkaXJlY3RB
Y3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6c2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYgdmVj
dG9yKSBjb25zdAogewogICAgIHVpbnQ4X3QgaGFzRnJhZ21lbnQgPSAhIWZyYWdtZW50OwpAQCAt
NzA3LDEyICs2NzcsNiBAQCBhdXRvIFJlZGlyZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246
OlF1ZXJ5VHJhbnNmb3JtOjppc29sYXRlZENvcHkoKSBjb25zdCAtPgogICAgIH07CiB9CiAKLWJv
b2wgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06Om9w
ZXJhdG9yPT0oY29uc3QgUXVlcnlUcmFuc2Zvcm0mIG90aGVyKSBjb25zdAotewotICAgIHJldHVy
biBvdGhlci5hZGRPclJlcGxhY2VQYXJhbXMgPT0gdGhpcy0+YWRkT3JSZXBsYWNlUGFyYW1zCi0g
ICAgICAgICYmIG90aGVyLnJlbW92ZVBhcmFtcyA9PSB0aGlzLT5yZW1vdmVQYXJhbXM7Ci19Ci0K
IHZvaWQgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06
OnNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mIHZlY3RvcikgY29uc3QKIHsKICAgICBhdXRvIGJl
Z2luSW5kZXggPSB2ZWN0b3Iuc2l6ZSgpOwpAQCAtNzg4LDEzICs3NTIsNiBAQCBhdXRvIFJlZGly
ZWN0QWN0aW9uOjpVUkxUcmFuc2Zvcm1BY3Rpb246OlF1ZXJ5VHJhbnNmb3JtOjpRdWVyeUtleVZh
bHVlOjppc29sYXRlZAogICAgIH07CiB9CiAKLWJvb2wgUmVkaXJlY3RBY3Rpb246OlVSTFRyYW5z
Zm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5S2V5VmFsdWU6Om9wZXJhdG9yPT0oY29u
c3QgUXVlcnlLZXlWYWx1ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG90aGVyLmtleSA9
PSB0aGlzLT5rZXkKLSAgICAgICAgJiYgb3RoZXIucmVwbGFjZU9ubHkgPT0gdGhpcy0+cmVwbGFj
ZU9ubHkKLSAgICAgICAgJiYgb3RoZXIudmFsdWUgPT0gdGhpcy0+dmFsdWU7Ci19Ci0KIHZvaWQg
UmVkaXJlY3RBY3Rpb246OlVSTFRyYW5zZm9ybUFjdGlvbjo6UXVlcnlUcmFuc2Zvcm06OlF1ZXJ5
S2V5VmFsdWU6OnNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mIHZlY3RvcikgY29uc3QKIHsKICAg
ICBjb25zdGV4cHIgYXV0byBoZWFkZXJMZW5ndGggPSBzaXplb2YodWludDMyX3QpICsgc2l6ZW9m
KHVpbnQzMl90KSArIHNpemVvZihib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oCmluZGV4IGFkM2I5
MTdjYjQ3ZDJjNmZhZDAyNjY1N2Y4NjBiMzliY2E3OGQzMDguLmRlOTNjYmIwMmZjMThkM2VhMmU4
YzMzMTBiM2NkNGRmMzlkOWRlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaApAQCAtNzYsNyArNzYs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQWN0aW9uV2l0aG91dE1ldGFkYXRhIHsK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGEgewog
ICAgIGNvbnN0IFN0cmluZyBzdHJpbmc7CiAgICAgVCBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJl
dHVybiB7IHsgc3RyaW5nLmlzb2xhdGVkQ29weSgpIH0gfTsgfQotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBBY3Rpb25XaXRoU3RyaW5nTWV0YWRhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiBv
dGhlci5zdHJpbmcgPT0gdGhpcy0+c3RyaW5nOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEFjdGlvbldpdGhTdHJpbmdNZXRhZGF0YSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB2b2lkIHNl
cmlhbGl6ZShWZWN0b3I8dWludDhfdD4mIHZlY3RvcikgY29uc3QgeyBzZXJpYWxpemVTdHJpbmco
dmVjdG9yLCBzdHJpbmcpOyB9CiAgICAgc3RhdGljIFQgZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1
aW50OF90PiBzcGFuKSB7IHJldHVybiB7IHsgZGVzZXJpYWxpemVTdHJpbmcoc3BhbikgfSB9OyB9
CiAgICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4g
c3BhbikgeyByZXR1cm4gc3RyaW5nU2VyaWFsaXplZExlbmd0aChzcGFuKTsgfQpAQCAtOTcsNyAr
OTcsNyBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgTW9kaWZ5SGVhZGVyc0FjdGlvbiB7CiAKICAg
ICAgICAgICAgIHVpbnQzMl90IGhhc2goKSBjb25zdCB7IHJldHVybiBwYWlySW50SGFzaChoZWFk
ZXIuaGFzaCgpLCB2YWx1ZS5oYXNoKCkpOyB9CiAgICAgICAgICAgICBBcHBlbmRPcGVyYXRpb24g
aXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZh
bHVlLmlzb2xhdGVkQ29weSgpIH07IH0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBBcHBlbmRPcGVyYXRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5oZWFkZXIgPT0g
dGhpcy0+aGVhZGVyICYmIG90aGVyLnZhbHVlID09IHRoaXMtPnZhbHVlOyB9CisgICAgICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgQXBwZW5kT3BlcmF0aW9uJikgY29uc3QgPSBkZWZhdWx0
OwogICAgICAgICB9OwogICAgICAgICBzdHJ1Y3QgU2V0T3BlcmF0aW9uIHsKICAgICAgICAgICAg
IFN0cmluZyBoZWFkZXI7CkBAIC0xMDUsMTQgKzEwNSwxNCBAQCBzdHJ1Y3QgV0VCQ09SRV9FWFBP
UlQgTW9kaWZ5SGVhZGVyc0FjdGlvbiB7CiAKICAgICAgICAgICAgIHVpbnQzMl90IGhhc2goKSBj
b25zdCB7IHJldHVybiBwYWlySW50SGFzaChoZWFkZXIuaGFzaCgpLCB2YWx1ZS5oYXNoKCkpOyB9
CiAgICAgICAgICAgICBTZXRPcGVyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4g
eyBoZWFkZXIuaXNvbGF0ZWRDb3B5KCksIHZhbHVlLmlzb2xhdGVkQ29weSgpIH07IH0KLSAgICAg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXRPcGVyYXRpb24mIG90aGVyKSBjb25zdCB7
IHJldHVybiBvdGhlci5oZWFkZXIgPT0gdGhpcy0+aGVhZGVyICYmIG90aGVyLnZhbHVlID09IHRo
aXMtPnZhbHVlOyB9CisgICAgICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2V0T3BlcmF0
aW9uJikgY29uc3QgPSBkZWZhdWx0OwogICAgICAgICB9OwogICAgICAgICBzdHJ1Y3QgUmVtb3Zl
T3BlcmF0aW9uIHsKICAgICAgICAgICAgIFN0cmluZyBoZWFkZXI7CiAKICAgICAgICAgICAgIHVp
bnQzMl90IGhhc2goKSBjb25zdCB7IHJldHVybiBoZWFkZXIuaGFzaCgpOyB9CiAgICAgICAgICAg
ICBSZW1vdmVPcGVyYXRpb24gaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBoZWFkZXIu
aXNvbGF0ZWRDb3B5KCkgfTsgfQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
bW92ZU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG90aGVyLmhlYWRlciA9PSB0aGlz
LT5oZWFkZXI7IH0KKyAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZW1vdmVPcGVy
YXRpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgICAgIH07CiAgICAgICAgIHVzaW5nIE9wZXJh
dGlvblZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8QXBwZW5kT3BlcmF0aW9uLCBTZXRPcGVyYXRpb24s
IFJlbW92ZU9wZXJhdGlvbj47CiAgICAgICAgIE9wZXJhdGlvblZhcmlhbnQgb3BlcmF0aW9uOwpA
QCAtMTIwLDcgKzEyMCw3IEBAIHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBNb2RpZnlIZWFkZXJzQWN0
aW9uIHsKICAgICAgICAgdWludDMyX3QgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIFZhcmlhbnRIYXNo
ZXI6Omhhc2gob3BlcmF0aW9uKTsgfQogICAgICAgICBzdGF0aWMgRXhwZWN0ZWQ8TW9kaWZ5SGVh
ZGVySW5mbywgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpWYWx1ZSYpOwogICAg
ICAgICBNb2RpZnlIZWFkZXJJbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5SGVhZGVySW5mbyYpIGNvbnN0OworICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTW9kaWZ5SGVhZGVySW5mbyYpIGNvbnN0ID0gZGVmYXVsdDsKICAg
ICAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgICAgIHN0
YXRpYyBNb2RpZnlIZWFkZXJJbmZvIGRlc2VyaWFsaXplKFNwYW48Y29uc3QgdWludDhfdD4pOwog
ICAgICAgICBzdGF0aWMgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgoU3Bhbjxjb25zdCB1aW50OF90
Pik7CkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIE1vZGlmeUhlYWRl
cnNBY3Rpb24gewogICAgIHVpbnQzMl90IGhhc2goKSBjb25zdCB7IHJldHVybiBwYWlySW50SGFz
aChWZWN0b3JIYXNoZXI6Omhhc2gocmVxdWVzdEhlYWRlcnMpLCBWZWN0b3JIYXNoZXI6Omhhc2go
cmVzcG9uc2VIZWFkZXJzKSk7IH0KICAgICBzdGF0aWMgRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVyc0Fj
dGlvbiwgc3RkOjplcnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKICAgICBN
b2RpZnlIZWFkZXJzQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBNb2RpZnlIZWFkZXJzQWN0aW9uJikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE1vZGlmeUhlYWRlcnNBY3Rpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgdm9p
ZCBzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgc3RhdGljIE1vZGlmeUhl
YWRlcnNBY3Rpb24gZGVzZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90Pik7CiAgICAgc3RhdGlj
IHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoKFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMTU4LDE0
ICsxNTgsMTQgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKIAogICAg
ICAgICB1aW50MzJfdCBoYXNoKCkgY29uc3QgeyByZXR1cm4gZXh0ZW5zaW9uUGF0aC5oYXNoKCk7
IH0KICAgICAgICAgRXh0ZW5zaW9uUGF0aEFjdGlvbiBpc29sYXRlZENvcHkoKSBjb25zdCB7IHJl
dHVybiB7IGV4dGVuc2lvblBhdGguaXNvbGF0ZWRDb3B5KCkgfTsgfQotICAgICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRXh0ZW5zaW9uUGF0aEFjdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG90aGVyLmV4dGVuc2lvblBhdGggPT0gdGhpcy0+ZXh0ZW5zaW9uUGF0aDsgfQorICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRXh0ZW5zaW9uUGF0aEFjdGlvbiYpIGNvbnN0ID0gZGVmYXVs
dDsKICAgICB9OwogICAgIHN0cnVjdCBSZWdleFN1YnN0aXR1dGlvbkFjdGlvbiB7CiAgICAgICAg
IFN0cmluZyByZWdleFN1YnN0aXR1dGlvbjsKIAogICAgICAgICB1aW50MzJfdCBoYXNoKCkgY29u
c3QgeyByZXR1cm4gcmVnZXhTdWJzdGl0dXRpb24uaGFzaCgpOyB9CiAgICAgICAgIFJlZ2V4U3Vi
c3RpdHV0aW9uQWN0aW9uIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgcmVnZXhTdWJz
dGl0dXRpb24uaXNvbGF0ZWRDb3B5KCkgfTsgfQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVnZXhTdWJzdGl0dXRpb25BY3Rpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvdGhlci5y
ZWdleFN1YnN0aXR1dGlvbiA9PSB0aGlzLT5yZWdleFN1YnN0aXR1dGlvbjsgfQorICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVnZXhTdWJzdGl0dXRpb25BY3Rpb24mKSBjb25zdCA9IGRl
ZmF1bHQ7CiAgICAgfTsKICAgICBzdHJ1Y3QgVVJMVHJhbnNmb3JtQWN0aW9uIHsKICAgICAgICAg
c3RydWN0IFF1ZXJ5VHJhbnNmb3JtIHsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdHJ1Y3QgV0VCQ09S
RV9FWFBPUlQgUmVkaXJlY3RBY3Rpb24gewogICAgICAgICAgICAgICAgIHVpbnQzMl90IGhhc2go
KSBjb25zdCB7IHJldHVybiBjb21wdXRlSGFzaChrZXksIHJlcGxhY2VPbmx5LCB2YWx1ZSk7IH0K
ICAgICAgICAgICAgICAgICBzdGF0aWMgRXhwZWN0ZWQ8UXVlcnlLZXlWYWx1ZSwgc3RkOjplcnJv
cl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpWYWx1ZSYpOwogICAgICAgICAgICAgICAgIFF1ZXJ5
S2V5VmFsdWUgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Ci0gICAgICAgICAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFF1ZXJ5S2V5VmFsdWUmKSBjb25zdDsKKyAgICAgICAgICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUXVlcnlLZXlWYWx1ZSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAg
ICAgICAgICAgICB2b2lkIHNlcmlhbGl6ZShWZWN0b3I8dWludDhfdD4mKSBjb25zdDsKICAgICAg
ICAgICAgICAgICBzdGF0aWMgUXVlcnlLZXlWYWx1ZSBkZXNlcmlhbGl6ZShTcGFuPGNvbnN0IHVp
bnQ4X3Q+KTsKICAgICAgICAgICAgICAgICBzdGF0aWMgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgo
U3Bhbjxjb25zdCB1aW50OF90Pik7CkBAIC0xODksNyArMTg5LDcgQEAgc3RydWN0IFdFQkNPUkVf
RVhQT1JUIFJlZGlyZWN0QWN0aW9uIHsKICAgICAgICAgICAgIHVpbnQzMl90IGhhc2goKSBjb25z
dCB7IHJldHVybiBjb21wdXRlSGFzaChWZWN0b3JIYXNoZXI6Omhhc2goYWRkT3JSZXBsYWNlUGFy
YW1zKSwgcmVtb3ZlUGFyYW1zKTsgfQogICAgICAgICAgICAgc3RhdGljIEV4cGVjdGVkPFF1ZXJ5
VHJhbnNmb3JtLCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlKGNvbnN0IEpTT046Ok9iamVjdCYpOwog
ICAgICAgICAgICAgUXVlcnlUcmFuc2Zvcm0gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Ci0gICAgICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVlcnlUcmFuc2Zvcm0mKSBjb25zdDsKKyAgICAg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRdWVyeVRyYW5zZm9ybSYpIGNvbnN0ID0gZGVm
YXVsdDsKICAgICAgICAgICAgIHZvaWQgc2VyaWFsaXplKFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0
OwogICAgICAgICAgICAgc3RhdGljIFF1ZXJ5VHJhbnNmb3JtIGRlc2VyaWFsaXplKFNwYW48Y29u
c3QgdWludDhfdD4pOwogICAgICAgICAgICAgc3RhdGljIHNpemVfdCBzZXJpYWxpemVkTGVuZ3Ro
KFNwYW48Y29uc3QgdWludDhfdD4pOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHN0cnVjdCBXRUJDT1JF
X0VYUE9SVCBSZWRpcmVjdEFjdGlvbiB7CiAgICAgICAgIHVpbnQzMl90IGhhc2goKSBjb25zdCB7
IHJldHVybiBjb21wdXRlSGFzaChmcmFnbWVudC5oYXNoKCksIGhvc3QuaGFzaCgpLCBwYXNzd29y
ZC5oYXNoKCksIHBhdGguaGFzaCgpLCBwb3J0LCBWYXJpYW50SGFzaGVyOjpoYXNoKHF1ZXJ5VHJh
bnNmb3JtKSwgc2NoZW1lLmhhc2goKSwgdXNlcm5hbWUuaGFzaCgpKTsgfQogICAgICAgICBzdGF0
aWMgRXhwZWN0ZWQ8VVJMVHJhbnNmb3JtQWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IHBhcnNlKGNv
bnN0IEpTT046Ok9iamVjdCYpOwogICAgICAgICBVUkxUcmFuc2Zvcm1BY3Rpb24gaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkxUcmFuc2Zvcm1B
Y3Rpb24mKSBjb25zdDsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFVSTFRyYW5zZm9y
bUFjdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9y
PHVpbnQ4X3Q+JikgY29uc3Q7CiAgICAgICAgIHN0YXRpYyBVUkxUcmFuc2Zvcm1BY3Rpb24gZGVz
ZXJpYWxpemUoU3Bhbjxjb25zdCB1aW50OF90Pik7CiAgICAgICAgIHN0YXRpYyBzaXplX3Qgc2Vy
aWFsaXplZExlbmd0aChTcGFuPGNvbnN0IHVpbnQ4X3Q+KTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBz
dHJ1Y3QgV0VCQ09SRV9FWFBPUlQgUmVkaXJlY3RBY3Rpb24gewogCiAgICAgICAgIHVpbnQzMl90
IGhhc2goKSBjb25zdCB7IHJldHVybiB1cmwuaGFzaCgpOyB9CiAgICAgICAgIFVSTEFjdGlvbiBp
c29sYXRlZENvcHkoKSBjb25zdCB7IHJldHVybiB7IHVybC5pc29sYXRlZENvcHkoKSB9OyB9Ci0g
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkxBY3Rpb24mIG90aGVyKSBjb25zdCB7IHJl
dHVybiBvdGhlci51cmwgPT0gdGhpcy0+dXJsOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBVUkxBY3Rpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKIAogICAgIGVudW0gY2xh
c3MgSGFzaFRhYmxlVHlwZSA6IHVpbnQ4X3QgeyBFbXB0eSwgRGVsZXRlZCwgRnVsbCB9IGhhc2hU
YWJsZVR5cGU7CkBAIC0yNDAsNyArMjQwLDcgQEAgc3RydWN0IFdFQkNPUkVfRVhQT1JUIFJlZGly
ZWN0QWN0aW9uIHsKIAogICAgIHN0YXRpYyBFeHBlY3RlZDxSZWRpcmVjdEFjdGlvbiwgc3RkOjpl
cnJvcl9jb2RlPiBwYXJzZShjb25zdCBKU09OOjpPYmplY3QmKTsKICAgICBSZWRpcmVjdEFjdGlv
biBpc29sYXRlZENvcHkoKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVkaXJl
Y3RBY3Rpb24mKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVkaXJlY3RBY3Rp
b24mKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgdm9pZCBzZXJpYWxpemUoVmVjdG9yPHVpbnQ4X3Q+
JikgY29uc3Q7CiAgICAgc3RhdGljIFJlZGlyZWN0QWN0aW9uIGRlc2VyaWFsaXplKFNwYW48Y29u
c3QgdWludDhfdD4pOwogICAgIHN0YXRpYyBzaXplX3Qgc2VyaWFsaXplZExlbmd0aChTcGFuPGNv
bnN0IHVpbnQ4X3Q+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25SdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uUnVsZS5oCmluZGV4IGM0YmMxZjAwODg1MDg1ZmNiMjEwNTAz
OTgzYWY2MThjMzQwYjYwNTMuLjQyNDY2MGFlN2VhZTVjYjIxYWRiMWJmYmEyNzk1MDU0YzA5MzIy
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25SdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvblJ1bGUuaApAQCAtNjksMTUgKzY5LDcgQEAgc3RydWN0IFRyaWdnZXIgewog
ICAgICAgICAgICAgJiYgY29uZGl0aW9ucy5pc0VtcHR5KCk7CiAgICAgfQogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFRyaWdnZXImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIHVybEZpbHRlciA9PSBvdGhlci51cmxGaWx0ZXIKLSAgICAgICAgICAgICYmIHVybEZpbHRl
cklzQ2FzZVNlbnNpdGl2ZSA9PSBvdGhlci51cmxGaWx0ZXJJc0Nhc2VTZW5zaXRpdmUKLSAgICAg
ICAgICAgICYmIHRvcFVSTEZpbHRlcklzQ2FzZVNlbnNpdGl2ZSA9PSBvdGhlci50b3BVUkxGaWx0
ZXJJc0Nhc2VTZW5zaXRpdmUKLSAgICAgICAgICAgICYmIGZyYW1lVVJMRmlsdGVySXNDYXNlU2Vu
c2l0aXZlID09IG90aGVyLmZyYW1lVVJMRmlsdGVySXNDYXNlU2Vuc2l0aXZlCi0gICAgICAgICAg
ICAmJiBmbGFncyA9PSBvdGhlci5mbGFncwotICAgICAgICAgICAgJiYgY29uZGl0aW9ucyA9PSBv
dGhlci5jb25kaXRpb25zOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJpZ2dl
ciYpIGNvbnN0ID0gZGVmYXVsdDsKIH07CiAKIHN0cnVjdCBUcmlnZ2VySGFzaCB7CkBAIC0xMjEs
OCArMTEzLDcgQEAgc3RydWN0IEFjdGlvbiB7CiAgICAgQWN0aW9uKEFjdGlvbkRhdGEmJiBkYXRh
KQogICAgICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBBY3Rpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2RhdGEgPT0gb3RoZXIu
bV9kYXRhOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFjdGlvbiYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEFjdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGNvbnN0IEFjdGlvbkRhdGEmIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIApAQCAtMTU3LDEwICsxNDgsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4geyBtX3RyaWdnZXIuaXNvbGF0ZWRDb3B5KCksIG1fYWN0
aW9uLmlzb2xhdGVkQ29weSgpIH07CiAgICAgfQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
b250ZW50RXh0ZW5zaW9uUnVsZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bV90cmlnZ2VyID09IG90aGVyLm1fdHJpZ2dlciAmJiBtX2FjdGlvbiA9PSBvdGhlci5tX2FjdGlv
bjsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbnRlbnRFeHRlbnNpb25SdWxl
JikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIGNvbnN0IFRyaWdnZXIgbV90cmln
Z2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBTm9kZS5oCmluZGV4IGVh
NmM0N2MwN2IyZDc5ZTBkYTY1MGIzZWUyMjJiNDMyN2E1NjMzODYuLmI3Yjg3YjU0OGE2Yjg2YzU1
M2IwNGNlM2U2ZTI4OGRhMzYxODZlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0RGQU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9ERkFOb2RlLmgKQEAgLTU0LDEwICs1NCw5IEBAIHB1YmxpYzoKIAogICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29uc3RSYW5nZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUKCZkZmEgID09ICZvdGhlci5kZmEpOworICAgICAgICAg
ICAgQVNTRVJUKCZkZmEgPT0gJm90aGVyLmRmYSk7CiAgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b24gPT0gb3RoZXIucG9zaXRpb247CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IENvbnN0UmFuZ2VJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOyB9CiAKICAgICAgICAgQ29uc3RSYW5nZUl0ZXJhdG9yJiBvcGVyYXRvcisrKCkK
ICAgICAgICAgewpAQCAtOTgsNyArOTcsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQo
JmRmYSAgPT0gJm90aGVyLmRmYSk7CiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gPT0gb3Ro
ZXIucG9zaXRpb247CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJh
bmdlSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
CiAgICAgICAgIFJhbmdlSXRlcmF0b3ImIG9wZXJhdG9yKysoKQogICAgICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9IYXNoYWJsZUFjdGlvbkxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0hhc2hhYmxlQWN0aW9uTGlzdC5o
CmluZGV4IDg4NzU3MDNlMTllZDk0ODYxYjRjMDc4MjYwODU2YTcwOTRlMWMzMGIuLjQwNjA4MjI1
NTc5MWE3Y2RiZWFmZDY1NDk0MmZlZDkzZTU5YTAyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0hhc2hhYmxlQWN0aW9uTGlzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0hhc2hhYmxlQWN0aW9uTGlzdC5oCkBAIC01OCwxMSAr
NTgsNiBAQCBzdHJ1Y3QgSGFzaGFibGVBY3Rpb25MaXN0IHsKICAgICAgICAgcmV0dXJuIHN0YXRl
ID09IG90aGVyLnN0YXRlICYmIGFjdGlvbnMgPT0gb3RoZXIuYWN0aW9uczsKICAgICB9CiAKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgSGFzaGFibGVBY3Rpb25MaXN0JiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Ci0KICAgICBW
ZWN0b3I8dWludDY0X3Q+IGFjdGlvbnM7CiAgICAgdW5zaWduZWQgaGFzaDsKICAgICBlbnVtIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5G
QU5vZGVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11dGFi
bGVORkFOb2RlQnVpbGRlci5oCmluZGV4IGU5ZGQ2YjMyZDQ1ZGY1ZmMyOTdjNzY0Y2M5YjJlMTdi
ZGEzM2NlMmUuLjdiZTM1N2UxMDIwMzM2YzJhODBjODg3YmRiMWIzMGQ2MTFlN2NjYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5vZGVC
dWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxl
TkZBTm9kZUJ1aWxkZXIuaApAQCAtOTUsNyArOTUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiB0aGlzLT5pc0VuZCA9PSBvdGhlci5pc0VuZDsKICAgICAgICAgfQot
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmFrZVJhbmdlSXRlcmF0b3ImIG90aGVyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgICAgICBGYWtlUmFuZ2VJdGVy
YXRvciBvcGVyYXRvcisrKCkKICAgICAgICAgewogICAgICAgICAgICAgaXNFbmQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdl
TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdlTGlz
dC5oCmluZGV4IDliMjA2ODdiOGE1MWVjODhkMzMwZjE1ZDU2ZmQwNmRkZDQwNzcxYjkuLjM0MWI5
OWVlNzk4NDVkMGY1OWQxMjg1OTcxMTIzY2VjYTBlMmU1YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL011dGFibGVSYW5nZUxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2VMaXN0LmgKQEAgLTU4LDcgKzU4
LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybiBhdEVuZCA9PSBvdGhlci5hdEVu
ZDsKICAgICAgICAgICAgIHJldHVybiBpbmRleCA9PSBvdGhlci5pbmRleDsKICAgICAgICAgfQot
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICAgICAgQ29uc3RJdGVyYXRvciYg
b3BlcmF0b3IrKygpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL05GQVRvREZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL05GQVRvREZBLmNwcAppbmRleCBiMDRiNTIxZDNhZGVkMTNhYWQ5Yzc1NzgyM2JkMDUyMjkx
NjAyY2I2Li42ODE2NWIyZGY1MmVmYTc3MTAwNjVkMDdhYzg4MjJhMzZjYTQxYjNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ORkFUb0RGQS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCkBAIC0xNjIsMTAg
KzE2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgZmFzdEZyZWUobV91bmlxdWVOb2RlSWRTZXRCdWZm
ZXIpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbmlxdWVOb2RlSWRTZXQm
IG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdW5pcXVlTm9kZUlkU2V0QnVm
ZmVyID09IG90aGVyLm1fdW5pcXVlTm9kZUlkU2V0QnVmZmVyOwotICAgIH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVW5pcXVlTm9kZUlkU2V0JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IE5vZGVJZFNldCYgb3RoZXIpIGNvbnN0CiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5o
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5oCmluZGV4
IGE5NjliNTQzNWRhODc1YjA5N2IwNWQzYTcyODM2M2NkMThmOTFlN2UuLmQ4YTA2YzcxZTg3ZDk1
ZTRkNWE5ZmRhMGVkODdiOGZkYzMwZWUzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmgKQEAgLTkwLDcgKzkwLDYgQEAgcHVibGljOgog
ICAgICAgICAgICAgQVNTRVJUKCZzZXJpYWxpemVkTkZBID09ICZvdGhlci5zZXJpYWxpemVkTkZB
KTsKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbiA9PSBvdGhlci5wb3NpdGlvbjsKICAgICAg
ICAgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29uc3RUYXJnZXRJdGVyYXRvciYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICAgICAgQ29u
c3RUYXJnZXRJdGVyYXRvciYgb3BlcmF0b3IrKygpCiAgICAgICAgIHsKQEAgLTExNyw3ICsxMTYs
NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBU1NFUlQoJnNlcmlhbGl6ZWRORkEgPT0gJm90aGVy
LnNlcmlhbGl6ZWRORkEpOwogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uID09IG90aGVyLnBv
c2l0aW9uOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb25zdFJh
bmdlSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
CiAgICAgICAgIENvbnN0UmFuZ2VJdGVyYXRvciYgb3BlcmF0b3IrKygpCiAgICAgICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0uaCBiL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0uaAppbmRleCBmMDYyZWZjZTcyZTMyZmVi
Zjg2YmIyM2M0YmNlNmI3OGMyZGE4MzgzLi5jN2IwMjY2ZDcyYTFmZmFlOTBlMmNhNWY5MTA4MjRi
NDA4NDIxNWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9U
ZXJtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVGVybS5oCkBAIC0x
NTgsMTIgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpiaXRDb3Vu
dChtX2NoYXJhY3RlcnNbMF0pICsgV1RGOjpiaXRDb3VudChtX2NoYXJhY3RlcnNbMV0pOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2hhcmFjdGVy
U2V0JiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG90aGVyLm1f
aW52ZXJ0ZWQgPT0gbV9pbnZlcnRlZAotICAgICAgICAgICAgICAgICYmIG90aGVyLm1fY2hhcmFj
dGVyc1swXSA9PSBtX2NoYXJhY3RlcnNbMF0KLSAgICAgICAgICAgICAgICAmJiBvdGhlci5tX2No
YXJhY3RlcnNbMV0gPT0gbV9jaGFyYWN0ZXJzWzFdOwotICAgICAgICB9CisgICAgICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDaGFyYWN0ZXJTZXQmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICAg
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgICAgIHsKQEAgLTE3OCwxMCArMTczLDcgQEAg
cHJpdmF0ZToKICAgICBzdHJ1Y3QgR3JvdXAgewogICAgICAgICBWZWN0b3I8VGVybT4gdGVybXM7
CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdyb3VwJiBvdGhlcikgY29uc3QKLSAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG90aGVyLnRlcm1zID09IHRlcm1zOwotICAgICAg
ICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcm91cCYpIGNvbnN0ID0gZGVmYXVs
dDsKIAogICAgICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA3
YzM4NThiYjY0N2IyOTQ5ZDY2ZWY4OGYwNDMzZWM1ZDc0ZDg1ODYxLi5jNTFkYTA4MGNmZjI5MzVk
Y2E2YTVkNjYzMGM2Mzk1ZTc3ZTUwOWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTUxNCwxNCArMTUxNCwxNCBAQCBz
dGF0aWMgRWxlbWVudCogc3R5bGVFbGVtZW50Rm9yTm9kZShOb2RlKiBub2RlKQogc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gdmFsdWVGb3JQb3NpdGlvbihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNv
bnN0IExlbmd0aFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWVGb3JMZW5ndGgocG9zaXRpb24ueCgpLCBzdHlsZSkpOwotICAgIGxpc3QtPmFw
cGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHBvc2l0aW9uLnkoKSwgc3R5bGUp
KTsKKyAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChwb3Np
dGlvbi54LCBzdHlsZSkpOworICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
Rm9yTGVuZ3RoKHBvc2l0aW9uLnksIHN0eWxlKSk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIHN0
YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yUG9zaXRpb25PckF1dG8oY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlLCBjb25zdCBMZW5ndGhQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAgaWYgKHBvc2l0
aW9uLngoKS5pc0F1dG8oKSAmJiBwb3NpdGlvbi55KCkuaXNBdXRvKCkpCisgICAgaWYgKHBvc2l0
aW9uLnguaXNBdXRvKCkgJiYgcG9zaXRpb24ueS5pc0F1dG8oKSkKICAgICAgICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0
byk7CiAKICAgICByZXR1cm4gdmFsdWVGb3JQb3NpdGlvbihzdHlsZSwgcG9zaXRpb24pOwpAQCAt
MTkxNyw3ICsxOTE3LDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IGNvbnRlbnRUb0NTU1Zh
bHVlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgZm9yIChhdXRvKiBjb250ZW50RGF0YSA9
IHN0eWxlLmNvbnRlbnREYXRhKCk7IGNvbnRlbnREYXRhOyBjb250ZW50RGF0YSA9IGNvbnRlbnRE
YXRhLT5uZXh0KCkpIHsKICAgICAgICAgaWYgKGlzPENvdW50ZXJDb250ZW50RGF0YT4oKmNvbnRl
bnREYXRhKSkKLSAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFs
dWUoZG93bmNhc3Q8Q291bnRlckNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmNvdW50ZXIoKS5p
ZGVudGlmaWVyKCksIENTU1VuaXRUeXBlOjpDU1NfQ09VTlRFUl9OQU1FKSk7CisgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PENvdW50ZXJD
b250ZW50RGF0YT4oKmNvbnRlbnREYXRhKS5jb3VudGVyKCkuaWRlbnRpZmllciwgQ1NTVW5pdFR5
cGU6OkNTU19DT1VOVEVSX05BTUUpKTsKICAgICAgICAgZWxzZSBpZiAoaXM8SW1hZ2VDb250ZW50
RGF0YT4oKmNvbnRlbnREYXRhKSkKICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChkb3duY2FzdDxJ
bWFnZUNvbnRlbnREYXRhPigqY29udGVudERhdGEpLmltYWdlKCkuY3NzVmFsdWUoKSk7CiAgICAg
ICAgIGVsc2UgaWYgKGlzPFRleHRDb250ZW50RGF0YT4oKmNvbnRlbnREYXRhKSkKQEAgLTMwMzcs
NyArMzAzNyw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFs
dWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKICAg
ICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLmNvbHVtbldpZHRo
KCksIHN0eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRhYlNpemU6Ci0gICAgICAgICAg
ICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHN0eWxlLnRhYlNpemUoKS53aWR0aElu
UGl4ZWxzKDEuMCksIHN0eWxlLnRhYlNpemUoKS5pc1NwYWNlcygpID8gQ1NTVW5pdFR5cGU6OkNT
U19OVU1CRVIgOiBDU1NVbml0VHlwZTo6Q1NTX1BYKTsKKyAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGFiU2l6ZSgpLndpZHRoSW5QaXhlbHMoMS4wKSwg
c3R5bGUudGFiU2l6ZSgpLmlzU3BhY2VzID8gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIgOiBDU1NV
bml0VHlwZTo6Q1NTX1BYKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjogewogICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdDsKICAgICAgICAgICAgIGF1dG8qIGN1
cnNvcnMgPSBzdHlsZS5jdXJzb3JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCmluZGV4IDFi
OGNlYWE2ZTI1MWZmOGViZTU3YmY0MDE1ZmExMmExNmE1MTRlYjAuLmJhODRmMzJkNDY4Y2IwODg3
YzFkM2M2N2RkZGZkYzEwOGYzMzVlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5oCkBAIC0x
MzMsOCArMTMzLDcgQEAgcHVibGljOgogICAgIHN0cnVjdCBVbmljb2RlUmFuZ2UgewogICAgICAg
ICBVQ2hhcjMyIGZyb207CiAgICAgICAgIFVDaGFyMzIgdG87Ci0gICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBVbmljb2RlUmFuZ2UmIG90aGVyKSBjb25zdCB7IHJldHVybiBmcm9tID09IG90
aGVyLmZyb20gJiYgdG8gPT0gb3RoZXIudG87IH0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFVuaWNvZGVSYW5nZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVbmljb2RlUmFuZ2UmKSBjb25zdCA9
IGRlZmF1bHQ7CiAgICAgfTsKIAogICAgIGJvb2wgcmFuZ2VzTWF0Y2hDb2RlUG9pbnQoVUNoYXIz
MikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhbWlseS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYW1pbHkuaAppbmRleCA4N2E2NDdkNDY5NzRl
ZTI5ZWY3MmYwOThkM2E5ZTAyZmFkZjc1NzgwLi5lNjk0OTQyMGQ3MmRhMWE5MmY3ZDQxNGU0Zjlh
MWJiZWRmODA0ZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhbWls
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFtaWx5LmgKQEAgLTQxLDExICs0
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBDU1NGb250RmFtaWx5IHsKICAgICBT
dHJpbmcgZmFtaWx5TmFtZTsKICAgICBib29sIGZyb21TeXN0ZW1Gb250SUQ7CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENTU0ZvbnRGYW1pbHkmKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCi1p
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTU0ZvbnRGYW1pbHkmIGEsIGNvbnN0IENTU0Zv
bnRGYW1pbHkmIGIpCi17Ci0gICAgcmV0dXJuIGEuZmFtaWx5TmFtZSA9PSBiLmZhbWlseU5hbWUg
JiYgYS5mcm9tU3lzdGVtRm9udElEID09IGIuZnJvbVN5c3RlbUZvbnRJRDsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IGM4
NzM0MTQ2MTdiODFlYzdhMTE5YzFjMTQzMDA3ZGQwZDcwZDcxY2EuLmZmNDQ5Mjc1ODJkYjM3N2Jj
NDE2MzQ4ODk4M2U4ZDcyY2IzZTlmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5j
cHAKQEAgLTM1LDExICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBSZXNvbHZlZFVSTCYgYSwgY29uc3QgUmVzb2x2ZWRVUkwmIGIp
Ci17Ci0gICAgcmV0dXJuIGEuc3BlY2lmaWVkVVJMU3RyaW5nID09IGIuc3BlY2lmaWVkVVJMU3Ry
aW5nICYmIGEucmVzb2x2ZWRVUkwgPT0gYi5yZXNvbHZlZFVSTDsKLX0KLQogLy8gaHR0cHM6Ly9k
cmFmdHMuY3Nzd2cub3JnL2Nzcy12YWx1ZXMvI3VybC1sb2NhbC11cmwtZmxhZwogYm9vbCBSZXNv
bHZlZFVSTDo6aXNMb2NhbFVSTCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUu
aAppbmRleCA1YjhlYjhhMmUxZTEzMzQzOWU5NTQ1NzNkZmZmOGFiZGZhZWQwZjk3Li4xZTUzOWRm
MjczNGUwZmUyZmI2N2NkZjhmYmRkMTY3ZWE0ZTE2MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFn
ZVZhbHVlLmgKQEAgLTQyLDYgKzQyLDcgQEAgc3RydWN0IFJlc29sdmVkVVJMIHsKICAgICBTdHJp
bmcgc3BlY2lmaWVkVVJMU3RyaW5nOwogICAgIFVSTCByZXNvbHZlZFVSTDsKICAgICBib29sIGlz
TG9jYWxVUkwoKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb2x2ZWRVUkwm
KSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCiBjbGFzcyBDU1NJbWFnZVZhbHVlIGZpbmFsIDogcHVi
bGljIENTU1ZhbHVlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgKaW5kZXggYmIwN2Y3N2VhNmZm
NTg3ZDA0MGQ3NzA5ZjAzMTM3NDliODAzZDQ4NC4uMjVjZmU5YjM4Y2RmOGJjZTMwMjcxMDU5MTVh
MDI0MzFkNmNjZjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgKQEAgLTQxLDE1ICs0MSw3
IEBAIHN0cnVjdCBTdHlsZVByb3BlcnR5TWV0YWRhdGEgewogCiAgICAgQ1NTUHJvcGVydHlJRCBz
aG9ydGhhbmRJRCgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHls
ZVByb3BlcnR5TWV0YWRhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
cHJvcGVydHlJRCA9PSBvdGhlci5tX3Byb3BlcnR5SUQKLSAgICAgICAgICAgICYmIG1faXNTZXRG
cm9tU2hvcnRoYW5kID09IG90aGVyLm1faXNTZXRGcm9tU2hvcnRoYW5kCi0gICAgICAgICAgICAm
JiBtX2luZGV4SW5TaG9ydGhhbmRzVmVjdG9yID09IG90aGVyLm1faW5kZXhJblNob3J0aGFuZHNW
ZWN0b3IKLSAgICAgICAgICAgICYmIG1faW1wb3J0YW50ID09IG90aGVyLm1faW1wb3J0YW50Ci0g
ICAgICAgICAgICAmJiBtX2ltcGxpY2l0ID09IG90aGVyLm1faW1wbGljaXQKLSAgICAgICAgICAg
ICYmIG1faW5oZXJpdGVkID09IG90aGVyLm1faW5oZXJpdGVkOwotICAgIH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU3R5bGVQcm9wZXJ0eU1ldGFkYXRhJikgY29uc3QgPSBkZWZhdWx0Owog
CiAgICAgdWludDE2X3QgbV9wcm9wZXJ0eUlEIDogMTA7CiAgICAgdWludDE2X3QgbV9pc1NldEZy
b21TaG9ydGhhbmQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1
bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAppbmRl
eCBmNWJjOGNhOTZiOTBkNjA1NTBkY2E1ODIxZTgzODU0OWE0YjJmN2VmLi5kNmExMmNiYjk2OTIy
NzM4NTQyZjRlMDk3NDczZTdiOGVjN2RlNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvTGVuZ3RoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVu
Y3Rpb25zLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIExheW91dFNpemUgc2l6ZUZvckxlbmd0aFNp
emUoY29uc3QgTGVuZ3RoU2l6ZSYgbGVuZ3RoLCBjb25zdCBMYXlvdXRTaXplJiBtYXhpbXVtCiAK
IExheW91dFBvaW50IHBvaW50Rm9yTGVuZ3RoUG9pbnQoY29uc3QgTGVuZ3RoUG9pbnQmIGxlbmd0
aFBvaW50LCBjb25zdCBMYXlvdXRTaXplJiBtYXhpbXVtVmFsdWUpCiB7Ci0gICAgcmV0dXJuIHsg
dmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueCgpLCBtYXhpbXVtVmFsdWUud2lkdGgoKSksIHZh
bHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LnkoKSwgbWF4aW11bVZhbHVlLmhlaWdodCgpKSB9Owor
ICAgIHJldHVybiB7IHZhbHVlRm9yTGVuZ3RoKGxlbmd0aFBvaW50LngsIG1heGltdW1WYWx1ZS53
aWR0aCgpKSwgdmFsdWVGb3JMZW5ndGgobGVuZ3RoUG9pbnQueSwgbWF4aW11bVZhbHVlLmhlaWdo
dCgpKSB9OwogfQogCiBGbG9hdFNpemUgZmxvYXRTaXplRm9yTGVuZ3RoU2l6ZShjb25zdCBMZW5n
dGhTaXplJiBsZW5ndGhTaXplLCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUpCkBAIC0xMzMsNyAr
MTMzLDcgQEAgRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6
ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxvYXRTaXplJgogCiBGbG9hdFBvaW50IGZsb2F0UG9pbnRG
b3JMZW5ndGhQb2ludChjb25zdCBMZW5ndGhQb2ludCYgbGVuZ3RoUG9pbnQsIGNvbnN0IEZsb2F0
U2l6ZSYgYm94U2l6ZSkKIHsKLSAgICByZXR1cm4geyBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0
aFBvaW50LngoKSwgYm94U2l6ZS53aWR0aCgpKSwgZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGhQ
b2ludC55KCksIGJveFNpemUuaGVpZ2h0KCkpIH07CisgICAgcmV0dXJuIHsgZmxvYXRWYWx1ZUZv
ckxlbmd0aChsZW5ndGhQb2ludC54LCBib3hTaXplLndpZHRoKCkpLCBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGxlbmd0aFBvaW50LnksIGJveFNpemUuaGVpZ2h0KCkpIH07CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRl
eHQuY3BwCmluZGV4IDczMWIyZDhkNTA0YzgyZDMzOGE0N2VjYTY4OWViOTRmZTkzMTE1N2MuLmUz
OGJlNDhkN2I1ODY5N2UwODc2OWIzYzdjN2I0YmIyNjQ1ZTE5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcApAQCAtMTE1LDU1ICsxMTUsNiBA
QCBDU1NQYXJzZXJDb250ZXh0OjpDU1NQYXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiBzaGVldEJhcwogewogfQogCi1ib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgYSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgYikKLXsKLSAgICBy
ZXR1cm4gYS5iYXNlVVJMID09IGIuYmFzZVVSTAotICAgICAgICAmJiBhLmNoYXJzZXQgPT0gYi5j
aGFyc2V0Ci0gICAgICAgICYmIGEubW9kZSA9PSBiLm1vZGUKLSAgICAgICAgJiYgYS5lbmNsb3Np
bmdSdWxlVHlwZSA9PSBiLmVuY2xvc2luZ1J1bGVUeXBlCi0gICAgICAgICYmIGEuaXNIVE1MRG9j
dW1lbnQgPT0gYi5pc0hUTUxEb2N1bWVudAotICAgICAgICAmJiBhLmhhc0RvY3VtZW50U2VjdXJp
dHlPcmlnaW4gPT0gYi5oYXNEb2N1bWVudFNlY3VyaXR5T3JpZ2luCi0gICAgICAgICYmIGEuaXND
b250ZW50T3BhcXVlID09IGIuaXNDb250ZW50T3BhcXVlCi0gICAgICAgICYmIGEudXNlU3lzdGVt
QXBwZWFyYW5jZSA9PSBiLnVzZVN5c3RlbUFwcGVhcmFuY2UKLSAgICAgICAgJiYgYS5hY2NlbnRD
b2xvckVuYWJsZWQgPT0gYi5hY2NlbnRDb2xvckVuYWJsZWQKLSAgICAgICAgJiYgYS5hc3BlY3RS
YXRpb0VuYWJsZWQgPT0gYi5hc3BlY3RSYXRpb0VuYWJsZWQKLSAgICAgICAgJiYgYS5jb2xvckNv
bnRyYXN0RW5hYmxlZCA9PSBiLmNvbG9yQ29udHJhc3RFbmFibGVkCi0gICAgICAgICYmIGEuY29s
b3JGaWx0ZXJFbmFibGVkID09IGIuY29sb3JGaWx0ZXJFbmFibGVkCi0gICAgICAgICYmIGEuY29s
b3JNaXhFbmFibGVkID09IGIuY29sb3JNaXhFbmFibGVkCi0gICAgICAgICYmIGEuY29uc3RhbnRQ
cm9wZXJ0aWVzRW5hYmxlZCA9PSBiLmNvbnN0YW50UHJvcGVydGllc0VuYWJsZWQKLSAgICAgICAg
JiYgYS5jb250YWlubWVudEVuYWJsZWQgPT0gYi5jb250YWlubWVudEVuYWJsZWQKLSAgICAgICAg
JiYgYS5jb3VudGVyU3R5bGVBdFJ1bGVzRW5hYmxlZCA9PSBiLmNvdW50ZXJTdHlsZUF0UnVsZXNF
bmFibGVkCi0gICAgICAgICYmIGEuY291bnRlclN0eWxlQXRSdWxlSW1hZ2VTeW1ib2xzRW5hYmxl
ZCA9PSBiLmNvdW50ZXJTdHlsZUF0UnVsZUltYWdlU3ltYm9sc0VuYWJsZWQKLSAgICAgICAgJiYg
YS5jc3NDb2xvcjQgPT0gYi5jc3NDb2xvcjQKLSAgICAgICAgJiYgYS5kZWZlcnJlZENTU1BhcnNl
ckVuYWJsZWQgPT0gYi5kZWZlcnJlZENTU1BhcnNlckVuYWJsZWQKLSAgICAgICAgJiYgYS5pbmRp
dmlkdWFsVHJhbnNmb3JtUHJvcGVydGllc0VuYWJsZWQgPT0gYi5pbmRpdmlkdWFsVHJhbnNmb3Jt
UHJvcGVydGllc0VuYWJsZWQKLSNpZiBFTkFCTEUoT1ZFUkZMT1dfU0NST0xMSU5HX1RPVUNIKQot
ICAgICAgICAmJiBhLmxlZ2FjeU92ZXJmbG93U2Nyb2xsaW5nVG91Y2hFbmFibGVkID09IGIubGVn
YWN5T3ZlcmZsb3dTY3JvbGxpbmdUb3VjaEVuYWJsZWQKLSNlbmRpZgotICAgICAgICAmJiBhLm92
ZXJzY3JvbGxCZWhhdmlvckVuYWJsZWQgPT0gYi5vdmVyc2Nyb2xsQmVoYXZpb3JFbmFibGVkCi0g
ICAgICAgICYmIGEucmVsYXRpdmVDb2xvclN5bnRheEVuYWJsZWQgPT0gYi5yZWxhdGl2ZUNvbG9y
U3ludGF4RW5hYmxlZAotICAgICAgICAmJiBhLnNjcm9sbEJlaGF2aW9yRW5hYmxlZCA9PSBiLnNj
cm9sbEJlaGF2aW9yRW5hYmxlZAotICAgICAgICAmJiBhLnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5h
YmxlZCA9PSBiLnNwcmluZ1RpbWluZ0Z1bmN0aW9uRW5hYmxlZAotI2lmIEVOQUJMRShURVhUX0FV
VE9TSVpJTkcpCi0gICAgICAgICYmIGEudGV4dEF1dG9zaXppbmdFbmFibGVkID09IGIudGV4dEF1
dG9zaXppbmdFbmFibGVkCi0jZW5kaWYKLSNpZiBFTkFCTEUoQ1NTX1RSQU5TRk9STV9TVFlMRV9P
UFRJTUlaRURfM0QpCi0gICAgICAgICYmIGEudHJhbnNmb3JtU3R5bGVPcHRpbWl6ZWQzREVuYWJs
ZWQgPT0gYi50cmFuc2Zvcm1TdHlsZU9wdGltaXplZDNERW5hYmxlZAotI2VuZGlmCi0gICAgICAg
ICYmIGEudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRCZWhhdmlvciA9PSBiLnVzZUxl
Z2FjeUJhY2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IKLSAgICAgICAgJiYgYS5mb2N1c1Zp
c2libGVFbmFibGVkID09IGIuZm9jdXNWaXNpYmxlRW5hYmxlZAotICAgICAgICAmJiBhLmhhc1Bz
ZXVkb0NsYXNzRW5hYmxlZCA9PSBiLmhhc1BzZXVkb0NsYXNzRW5hYmxlZAotICAgICAgICAmJiBh
LmNhc2NhZGVMYXllcnNFbmFibGVkID09IGIuY2FzY2FkZUxheWVyc0VuYWJsZWQKLSAgICAgICAg
JiYgYS5jb250YWluZXJRdWVyaWVzRW5hYmxlZCA9PSBiLmNvbnRhaW5lclF1ZXJpZXNFbmFibGVk
Ci0gICAgICAgICYmIGEub3ZlcmZsb3dDbGlwRW5hYmxlZCA9PSBiLm92ZXJmbG93Q2xpcEVuYWJs
ZWQKLSAgICAgICAgJiYgYS5ncmFkaWVudFByZW11bHRpcGxpZWRBbHBoYUludGVycG9sYXRpb25F
bmFibGVkID09IGIuZ3JhZGllbnRQcmVtdWx0aXBsaWVkQWxwaGFJbnRlcnBvbGF0aW9uRW5hYmxl
ZAotICAgICAgICAmJiBhLmdyYWRpZW50SW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VzRW5hYmxlZCA9
PSBiLmdyYWRpZW50SW50ZXJwb2xhdGlvbkNvbG9yU3BhY2VzRW5hYmxlZAotI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgICYmIGEuYXR0YWNobWVudEVuYWJsZWQgPT0gYi5h
dHRhY2htZW50RW5hYmxlZAotI2VuZGlmCi0gICAgOwotfQotCiB2b2lkIGFkZChIYXNoZXImIGhh
c2hlciwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKICAgICB1aW50NjRfdCBi
aXRzID0gY29udGV4dC5pc0hUTUxEb2N1bWVudCAgICAgICAgICAgICAgICAgIDw8IDAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmgKaW5kZXggOGMyMzRkZjQ2
MmUzMGVlMmNjMzg2MmNlODdjYTI4MDgxYTk1MTgzYi4uYWUyMjlmM2UwMjE4YTlkZTYzOTY5ZDA4
M2IyYWJjMDkzZDE1NzdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJDb250ZXh0LmgKQEAgLTk4LDExICs5OCw5IEBAIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0IHsK
ICAgICBXRUJDT1JFX0VYUE9SVCBDU1NQYXJzZXJDb250ZXh0KGNvbnN0IERvY3VtZW50JiwgY29u
c3QgVVJMJiBiYXNlVVJMID0gVVJMKCksIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IGVtcHR5U3Ry
aW5nKCkpOwogICAgIGJvb2wgaXNQcm9wZXJ0eVJ1bnRpbWVEaXNhYmxlZChDU1NQcm9wZXJ0eUlE
KSBjb25zdDsKICAgICBSZXNvbHZlZFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25z
dDsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpIGNvbnN0ID0g
ZGVmYXVsdDsKIH07CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NQYXJzZXJDb250ZXh0Jiwg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dCYpOwotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiBhLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBiKSB7IHJldHVybiAh
KGEgPT0gYik7IH0KLQogdm9pZCBhZGQoSGFzaGVyJiwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYp
OwogCiBXRUJDT1JFX0VYUE9SVCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBzdHJpY3RDU1NQYXJz
ZXJDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlclRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclRva2VuLmgK
aW5kZXggODc0YjQ2Mzc3ZDA3MmFiNzBjMTIxMjNlYjgwZTk2YjU3NGIzNzQ2OS4uYjNiMzNhMTUw
YzFmNDU1ZDRlNDBhYjZjOGMwZTVlZjUyNjE1NmQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyVG9rZW4uaApAQCAtMTA1LDggKzEwNSw3IEBAIHB1YmxpYzoKIAogICAg
IENTU1BhcnNlclRva2VuKEhhc2hUb2tlblR5cGUsIFN0cmluZ1ZpZXcpOwogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IENTU1BhcnNlclRva2VuJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyVG9r
ZW4mKSBjb25zdDsKIAogICAgIC8vIENvbnZlcnRzIE51bWJlclRva2VuIHRvIERpbWVuc2lvblRv
a2VuLgogICAgIHZvaWQgY29udmVydFRvRGltZW5zaW9uV2l0aFVuaXQoU3RyaW5nVmlldyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5jcHAKaW5kZXggY2IxMjA2NzUwZjhiYjExNGFjM2Uw
ODBiMjNkZjQ5NGZkMjEwNzRiNS4uZGNkN2UzM2EwYmFlYmEwMDYxZDYzMzliM2Q2ZDg0MGJlOTM1
YzI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmNwcApAQCAtMjksOSArMjksOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXRlbXBsYXRlIFBhcnRpYWxPcmRlcmluZyB0cmVl
T3JkZXI8VHJlZT4oY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsK
LXRlbXBsYXRlIFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXI8IFNoYWRvd0luY2x1ZGluZ1RyZWUg
Pihjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwotdGVtcGxhdGUg
UGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KGNvbnN0IEJvdW5kYXJ5UG9p
bnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7Cit0ZW1wbGF0ZSBzdGQ6OnBhcnRpYWxfb3JkZXJp
bmcgdHJlZU9yZGVyPFRyZWU+KGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBv
aW50Jik7Cit0ZW1wbGF0ZSBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyPCBTaGFkb3dJ
bmNsdWRpbmdUcmVlID4oY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQm
KTsKK3RlbXBsYXRlIHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3JkZXI8Q29tcG9zZWRUcmVl
Pihjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwogCiBzdGQ6Om9w
dGlvbmFsPEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZShOb2RlJiBu
b2RlKQogewpAQCAtNjYsMTYgKzY2LDE2IEBAIHN0YXRpYyBib29sIGlzT2Zmc2V0QmVmb3JlQ2hp
bGQoQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCB1bnNpZ25lZCBvZmZzZXQsIE5vZGUmCiAKIC8v
IEZJWE1FOiBPbmNlIHdlIG1vdmUgdG8gQysrMjAsIHJlcGxhY2Ugd2l0aCB0aGUgQysrMjAgPD0+
IG9wZXJhdG9yLgogLy8gRklYTUU6IFRoaXMgY291bGQgcmV0dXJuIHN0ZDo6c3Ryb25nX29yZGVy
aW5nIGlmIHdlIGhhZCB0aGF0LCBvciB0aGUgZXF1aXZhbGVudC4KLXN0YXRpYyBQYXJ0aWFsT3Jk
ZXJpbmcgb3JkZXIodW5zaWduZWQgYSwgdW5zaWduZWQgYikKK3N0YXRpYyBzdGQ6OnBhcnRpYWxf
b3JkZXJpbmcgb3JkZXIodW5zaWduZWQgYSwgdW5zaWduZWQgYikKIHsKICAgICBpZiAoYSA8IGIp
Ci0gICAgICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6Omxlc3M7CisgICAgICAgIHJldHVybiBz
dGQ6OnBhcnRpYWxfb3JkZXJpbmc6Omxlc3M7CiAgICAgaWYgKGEgPiBiKQotICAgICAgICByZXR1
cm4gUGFydGlhbE9yZGVyaW5nOjpncmVhdGVyOwotICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6
OmVxdWl2YWxlbnQ7CisgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0
ZXI7CisgICAgcmV0dXJuIHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6ZXF1aXZhbGVudDsKIH0KIAot
dGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29u
c3QgQm91bmRhcnlQb2ludCYgYSwgY29uc3QgQm91bmRhcnlQb2ludCYgYikKK3RlbXBsYXRlPFRy
ZWVUeXBlIHRyZWVUeXBlPiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IEJv
dW5kYXJ5UG9pbnQmIGEsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmIGIpCiB7CiAgICAgaWYgKGEuY29u
dGFpbmVyLnB0cigpID09IGIuY29udGFpbmVyLnB0cigpKQogICAgICAgICByZXR1cm4gb3JkZXIo
YS5vZmZzZXQsIGIub2Zmc2V0KTsKQEAgLTgzLDIxICs4MywyMSBAQCB0ZW1wbGF0ZTxUcmVlVHlw
ZSB0cmVlVHlwZT4gUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBCb3VuZGFyeVBvaW50
JiBhLCBjbwogICAgIGZvciAoYXV0byBhbmNlc3RvciA9IGIuY29udGFpbmVyLnB0cigpOyBhbmNl
c3RvcjsgKSB7CiAgICAgICAgIGF1dG8gbmV4dEFuY2VzdG9yID0gcGFyZW50PHRyZWVUeXBlPigq
YW5jZXN0b3IpOwogICAgICAgICBpZiAobmV4dEFuY2VzdG9yID09IGEuY29udGFpbmVyLnB0cigp
KQotICAgICAgICAgICAgcmV0dXJuIGlzT2Zmc2V0QmVmb3JlQ2hpbGQoKm5leHRBbmNlc3Rvciwg
YS5vZmZzZXQsICphbmNlc3RvcikgPyBQYXJ0aWFsT3JkZXJpbmc6Omxlc3MgOiBQYXJ0aWFsT3Jk
ZXJpbmc6OmdyZWF0ZXI7CisgICAgICAgICAgICByZXR1cm4gaXNPZmZzZXRCZWZvcmVDaGlsZCgq
bmV4dEFuY2VzdG9yLCBhLm9mZnNldCwgKmFuY2VzdG9yKSA/IHN0ZDo6cGFydGlhbF9vcmRlcmlu
Zzo6bGVzcyA6IHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6Z3JlYXRlcjsKICAgICAgICAgYW5jZXN0
b3IgPSBuZXh0QW5jZXN0b3I7CiAgICAgfQogCiAgICAgZm9yIChhdXRvIGFuY2VzdG9yID0gYS5j
b250YWluZXIucHRyKCk7IGFuY2VzdG9yOyApIHsKICAgICAgICAgYXV0byBuZXh0QW5jZXN0b3Ig
PSBwYXJlbnQ8dHJlZVR5cGU+KCphbmNlc3Rvcik7CiAgICAgICAgIGlmIChuZXh0QW5jZXN0b3Ig
PT0gYi5jb250YWluZXIucHRyKCkpCi0gICAgICAgICAgICByZXR1cm4gaXNPZmZzZXRCZWZvcmVD
aGlsZCgqbmV4dEFuY2VzdG9yLCBiLm9mZnNldCwgKmFuY2VzdG9yKSA/IFBhcnRpYWxPcmRlcmlu
Zzo6Z3JlYXRlciA6IFBhcnRpYWxPcmRlcmluZzo6bGVzczsKKyAgICAgICAgICAgIHJldHVybiBp
c09mZnNldEJlZm9yZUNoaWxkKCpuZXh0QW5jZXN0b3IsIGIub2Zmc2V0LCAqYW5jZXN0b3IpID8g
c3RkOjpwYXJ0aWFsX29yZGVyaW5nOjpncmVhdGVyIDogc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjps
ZXNzOwogICAgICAgICBhbmNlc3RvciA9IG5leHRBbmNlc3RvcjsKICAgICB9CiAKICAgICByZXR1
cm4gdHJlZU9yZGVyPHRyZWVUeXBlPihhLmNvbnRhaW5lciwgYi5jb250YWluZXIpOwogfQogCi1Q
YXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyRm9yVGVzdGluZyhUcmVlVHlwZSB0eXBlLCBjb25zdCBC
b3VuZGFyeVBvaW50JiBhLCBjb25zdCBCb3VuZGFyeVBvaW50JiBiKQorc3RkOjpwYXJ0aWFsX29y
ZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUgdHlwZSwgY29uc3QgQm91bmRhcnlQ
b2ludCYgYSwgY29uc3QgQm91bmRhcnlQb2ludCYgYikKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICBjYXNlIFRyZWU6CkBAIC0xMDgsNyArMTA4LDcgQEAgUGFydGlhbE9yZGVyaW5nIHRyZWVP
cmRlckZvclRlc3RpbmcoVHJlZVR5cGUgdHlwZSwgY29uc3QgQm91bmRhcnlQb2ludCYgYSwgY29u
c3QKICAgICAgICAgcmV0dXJuIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KGEsIGIpOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjp1
bm9yZGVyZWQ7CisgICAgcmV0dXJuIHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6dW5vcmRlcmVkOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0JvdW5kYXJ5UG9pbnQuaAppbmRleCA1OTYxMTEyMzliMDM1YmQx
N2QwM2I3MzNjYWQ2MDE1NTVlZmRhZjFjLi42OWE4MWMxY2FjYzAxOGMzMDhmZjZjNjliN2QyZDVi
MGMxOTVlZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQm91bmRhcnlQb2ludC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Cb3VuZGFyeVBvaW50LmgKQEAgLTM2LDE5ICszNiwx
OCBAQCBzdHJ1Y3QgQm91bmRhcnlQb2ludCB7CiAgICAgQm91bmRhcnlQb2ludChSZWY8Tm9kZT4m
JiwgdW5zaWduZWQpOwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7Ci19OwogCi1i
b29sIG9wZXJhdG9yPT0oY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQm
KTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgQm91bmRhcnlQ
b2ludCYpOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3VuZGFyeVBvaW50JikgY29uc3Qg
PSBkZWZhdWx0OworfTsKIAotdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBQYXJ0aWFsT3JkZXJp
bmcgdHJlZU9yZGVyKGNvbnN0IEJvdW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7
Cit0ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3Jk
ZXIoY29uc3QgQm91bmRhcnlQb2ludCYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKIAogV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBvaW50PiBtYWtlQm91bmRhcnlQb2ludEJl
Zm9yZU5vZGUoTm9kZSYpOwogV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxCb3VuZGFyeVBv
aW50PiBtYWtlQm91bmRhcnlQb2ludEFmdGVyTm9kZShOb2RlJik7CiBCb3VuZGFyeVBvaW50IG1h
a2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZUNvbnRlbnRzKE5vZGUmKTsKIEJvdW5kYXJ5UG9pbnQg
bWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGVDb250ZW50cyhOb2RlJik7CiAKLVdFQkNPUkVfRVhQ
T1JUIFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXJGb3JUZXN0aW5nKFRyZWVUeXBlLCBjb25zdCBC
b3VuZGFyeVBvaW50JiwgY29uc3QgQm91bmRhcnlQb2ludCYpOworV0VCQ09SRV9FWFBPUlQgc3Rk
OjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0IEJv
dW5kYXJ5UG9pbnQmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7CiAKIGlubGluZSBCb3VuZGFyeVBv
aW50OjpCb3VuZGFyeVBvaW50KFJlZjxOb2RlPiYmIGNvbnRhaW5lciwgdW5zaWduZWQgb2Zmc2V0
KQogICAgIDogY29udGFpbmVyKFdURk1vdmUoY29udGFpbmVyKSkKQEAgLTYxLDExICs2MCw2IEBA
IGlubGluZSBEb2N1bWVudCYgQm91bmRhcnlQb2ludDo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJl
dHVybiBjb250YWluZXItPmRvY3VtZW50KCk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQm91bmRhcnlQb2ludCYgYSwgY29uc3QgQm91bmRhcnlQb2ludCYgYikKLXsKLSAgICBy
ZXR1cm4gYS5jb250YWluZXIucHRyKCkgPT0gYi5jb250YWluZXIucHRyKCkgJiYgYS5vZmZzZXQg
PT0gYi5vZmZzZXQ7Ci19Ci0KIGlubGluZSBCb3VuZGFyeVBvaW50IG1ha2VCb3VuZGFyeVBvaW50
QmVmb3JlTm9kZUNvbnRlbnRzKE5vZGUmIG5vZGUpCiB7CiAgICAgcmV0dXJuIHsgbm9kZSwgMCB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkVHJlZUFuY2VzdG9ySXRl
cmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9y
LmgKaW5kZXggYzY2MWJjZTVjOGZjMmZhZGU2YzE4NjQyNTVmM2RkYWM4MDQ3MGYwNy4uNmE0MmFj
ZTk1MDA1OWU3ZGRmNGI5ZTlmOWM3OWI1NzE1NDc0NWViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29tcG9zZWRUcmVlQW5jZXN0b3JJdGVyYXRvci5oCkBAIC00MSw4ICs0MSw3IEBA
IHB1YmxpYzoKICAgICBFbGVtZW50JiBvcGVyYXRvciooKSB7IHJldHVybiBnZXQoKTsgfQogICAg
IEVsZW1lbnQqIG9wZXJhdG9yLT4oKSB7IHJldHVybiAmZ2V0KCk7IH0KIAotICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsgfQotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9jdXJyZW50ICE9IG90aGVyLm1fY3VycmVudDsgfQorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yJikgY29uc3QgPSBkZWZhdWx0Owog
CiAgICAgQ29tcG9zZWRUcmVlQW5jZXN0b3JJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJu
IHRyYXZlcnNlUGFyZW50KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bXBvc2VkVHJlZUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRUcmVlSXRl
cmF0b3IuaAppbmRleCBjYzRmMjAyNTZmNWVjZmU3NmYxYmE2MTU1OGQ2NmYyZjJhMzUwMzUzLi5l
YTQ5ZTkxMDM0ZDM2ZDY1NjExMDE4ODY5MDIyYzUyNzUwNWQ2MTVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tcG9zZWRUcmVlSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tcG9zZWRUcmVlSXRlcmF0b3IuaApAQCAtNDQsNyArNDQsNiBAQCBwdWJsaWM6CiAg
ICAgTm9kZSogb3BlcmF0b3ItPigpIHsgcmV0dXJuICZjdXJyZW50KCk7IH0KIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDb21wb3NlZFRyZWVJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIGNvbnRleHQoKS5pdGVyYXRvciA9PSBvdGhlci5jb250ZXh0KCkuaXRlcmF0b3I7IH0KLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ29tcG9zZWRUcmVlSXRlcmF0b3ImIG90aGVyKSBjb25z
dCB7IHJldHVybiBjb250ZXh0KCkuaXRlcmF0b3IgIT0gb3RoZXIuY29udGV4dCgpLml0ZXJhdG9y
OyB9CiAKICAgICBDb21wb3NlZFRyZWVJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRy
YXZlcnNlTmV4dCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDJjN2UyZDFhMzg2
NDM2ZWVhOTU4NGI1NzBmYTY2NWJhOTZmYTMzNjIuLmVmMjY1N2U4YmNhZGRjMmYwNzI4YjE5ODAy
OWZhNjVlOThiNDUxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTMwNCw3ICsxMzA0
LDcgQEAgc3RhdGljIGlubGluZSBib29sIG9wZXJhdG9yPChVQ2hhcjMyIGEsIGNvbnN0IFVuaWNv
ZGVDb2RlUG9pbnRSYW5nZSYgYikKIAogc3RhdGljIGlubGluZSBib29sIGlzUG90ZW50aWFsQ3Vz
dG9tRWxlbWVudE5hbWVDaGFyYWN0ZXIoVUNoYXIzMiBjaGFyYWN0ZXIpCiB7Ci0gICAgc3RhdGlj
IGNvbnN0IFVuaWNvZGVDb2RlUG9pbnRSYW5nZSByYW5nZXNbXSA9IHsKKyAgICBzdGF0aWMgY29u
c3RleHByIFVuaWNvZGVDb2RlUG9pbnRSYW5nZSByYW5nZXNbXSA9IHsKICAgICAgICAgeyAnLScs
ICcuJyB9LAogICAgICAgICB7ICcwJywgJzknIH0sCiAgICAgICAgIHsgJ18nLCAnXycgfSwKQEAg
LTEzMjMsNyArMTMyMyw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1BvdGVudGlhbEN1c3RvbUVs
ZW1lbnROYW1lQ2hhcmFjdGVyKFVDaGFyMzIgY2hhcmFjdGVyKQogICAgICAgICB7IDB4RkRGMCwg
MHhGRkZEIH0sCiAgICAgICAgIHsgMHgxMDAwMCwgMHhFRkZGRiB9LAogICAgIH07Ci0KICAgICBB
U1NFUlQoc3RkOjppc19zb3J0ZWQoc3RkOjpiZWdpbihyYW5nZXMpLCBzdGQ6OmVuZChyYW5nZXMp
KSk7CiAgICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChzdGQ6OmJlZ2luKHJhbmdlcyksIHN0
ZDo6ZW5kKHJhbmdlcyksIGNoYXJhY3Rlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oCmluZGV4IGQxZGRiMGY3Mzc1
MDE1NjQ1OTdiMGEwMjM0ZTJiNDYyMDFkNWRlNzUuLmUwNDk3MDE0OWJjYTg4NzgzMTI1NTI0NDM1
ZTA3MDNiMzI5ODYzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5k
VGV4dERlc2NlbmRhbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
QW5kVGV4dERlc2NlbmRhbnRJdGVyYXRvci5oCkBAIC00Nyw3ICs0Nyw2IEBAIHB1YmxpYzoKICAg
ICBjb25zdCBOb2RlKiBvcGVyYXRvci0+KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgRWxlbWVudEFuZFRleHREZXNjZW5kYW50SXRlcmF0b3Im
IG90aGVyKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
ZGVwdGg7IH0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXB0aDsgfQpAQCAtMjg5LDExICsyODgsNiBAQCBpbmxpbmUgYm9vbCBFbGVtZW50QW5kVGV4dERl
c2NlbmRhbnRJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBFbGVtZW50QW5kVGV4dERlcwogICAg
IHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50IHx8ICghbV9kZXB0aCAmJiAhb3Ro
ZXIubV9kZXB0aCk7CiB9CiAKLWlubGluZSBib29sIEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0
ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudEl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0KIC8v
IEVsZW1lbnRBbmRUZXh0RGVzY2VuZGFudFJhbmdlCiAKIGlubGluZSBFbGVtZW50QW5kVGV4dERl
c2NlbmRhbnRSYW5nZTo6RWxlbWVudEFuZFRleHREZXNjZW5kYW50UmFuZ2UoY29uc3QgQ29udGFp
bmVyTm9kZSYgcm9vdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDb250ZXh0LmgKaW5kZXggOWQwOWIw
ODliM2FjNDk0M2EwZDlhMjJjM2Q2NmU3ZjU1MDU0ZGMxZi4uOGYyZDE4ZDNiYmVjZWI0NzcwZjE4
MWVlODUwMmE3MWZlMGJjMzgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDb250ZXh0LmgKQEAg
LTQzLDYgKzQzLDggQEAgc3RydWN0IEVsZW1lbnRDb250ZXh0IHsKIAogICAgIH5FbGVtZW50Q29u
dGV4dCgpID0gZGVmYXVsdDsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50Q29u
dGV4dCYpIGNvbnN0ID0gZGVmYXVsdDsKKwogICAgIGJvb2wgaXNTYW1lRWxlbWVudChjb25zdCBF
bGVtZW50Q29udGV4dCYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gd2ViUGFn
ZUlkZW50aWZpZXIgPT0gb3RoZXIud2ViUGFnZUlkZW50aWZpZXIgJiYgZG9jdW1lbnRJZGVudGlm
aWVyID09IG90aGVyLmRvY3VtZW50SWRlbnRpZmllciAmJiBlbGVtZW50SWRlbnRpZmllciA9PSBv
dGhlci5lbGVtZW50SWRlbnRpZmllcjsKQEAgLTUyLDExICs1NCw2IEBAIHN0cnVjdCBFbGVtZW50
Q29udGV4dCB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9u
YWw8RWxlbWVudENvbnRleHQ+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEVsZW1lbnRDb250ZXh0JiBhLCBjb25zdCBFbGVtZW50Q29udGV4dCYg
YikKLXsKLSAgICByZXR1cm4gYS5ib3VuZGluZ1JlY3QgPT0gYi5ib3VuZGluZ1JlY3QgJiYgYS5p
c1NhbWVFbGVtZW50KGIpOwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBFbGVt
ZW50Q29udGV4dDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50RGF0YS5oCmluZGV4IDUxMTZlMzIwODk3ZjhkYjUyOGJiMTE0Yjc5NjgyZTlkZTZjZGNm
OGUuLjFiODE1NmUwNDk5YTk3NDNiYTgwMmJlMTYwNzNmNWIwMGUyM2U3NTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50RGF0YS5oCkBAIC01MCw3ICs1MCw2IEBAIHB1YmxpYzoKICAgICBBdHRyaWJ1dGVD
b25zdEl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyArK21fb2Zmc2V0OyByZXR1cm4gKnRoaXM7IH0K
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdHRyaWJ1dGVDb25zdEl0ZXJhdG9yJiBvdGhl
cikgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQgPT0gb3RoZXIubV9vZmZzZXQ7IH0KLSAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgQXR0cmlidXRlQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQXR0cmli
dXRlKiBtX2FycmF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0SWRlbnRpZmllci5o
CmluZGV4IDA0NmZjYTE0YjI3MWI1ZDdmMDYwZTc1NjUyNDY0NGMyYWNkOTQzNGMuLmM1ZGQ4NjJk
YzcyMDljODNiZmNiODAyNTIyMjlhZGUyOTRlZjZkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnRJZGVudGlmaWVyLmgKQEAgLTM4LDYgKzM4LDggQEAgc3RydWN0IE1lc3NhZ2VQ
b3J0SWRlbnRpZmllciB7CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJikgY29uc3QgPSBkZWZhdWx0
OworCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1l
c3NhZ2VQb3J0SWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKIApAQCAtNDYsMTEgKzQ4LDYg
QEAgc3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciB7CiAjZW5kaWYKIH07CiAKLWlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBhLCBjb25zdCBNZXNz
YWdlUG9ydElkZW50aWZpZXImIGIpCi17Ci0gICAgcmV0dXJuIGEucHJvY2Vzc0lkZW50aWZpZXIg
PT0gYi5wcm9jZXNzSWRlbnRpZmllciAmJiAgYS5wb3J0SWRlbnRpZmllciA9PSBiLnBvcnRJZGVu
dGlmaWVyOwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBNZXNzYWdlUG9ydElk
ZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IDUxZTBhY2EzNDQ0OWZjM2MzZDY1OWIyNjRjZjg4NWFiMzNmN2Y4Y2QuLjlhNjJiODQ2
ZDQ1ZjFkNmQxNWE3MmQ5MDljMDZlY2I5MWUwN2JjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI3
MjgsMzUgKzI3MjgsMzUgQEAgc3RhdGljIGJvb2wgaXNTaWJsaW5nU3Vic2VxdWVudChjb25zdCBO
b2RlJiBzaWJsaW5nQSwgY29uc3QgTm9kZSYgc2libGluZ0IpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi10ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRl
cihjb25zdCBOb2RlJiBhLCBjb25zdCBOb2RlJiBiKQordGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5
cGU+IHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgTm9kZSYgYSwgY29uc3Qg
Tm9kZSYgYikKIHsKICAgICBpZiAoJmEgPT0gJmIpCi0gICAgICAgIHJldHVybiBQYXJ0aWFsT3Jk
ZXJpbmc6OmVxdWl2YWxlbnQ7CisgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6
OmVxdWl2YWxlbnQ7CiAgICAgYXV0byByZXN1bHQgPSBjb21tb25JbmNsdXNpdmVBbmNlc3RvckFu
ZENoaWxkcmVuPHRyZWVUeXBlPihhLCBiKTsKICAgICBpZiAoIXJlc3VsdC5jb21tb25BbmNlc3Rv
cikKLSAgICAgICAgcmV0dXJuIFBhcnRpYWxPcmRlcmluZzo6dW5vcmRlcmVkOworICAgICAgICBy
ZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjp1bm9yZGVyZWQ7CiAgICAgaWYgKCFyZXN1bHQu
ZGlzdGluY3RBbmNlc3RvckEpCi0gICAgICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6Omxlc3M7
CisgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6Omxlc3M7CiAgICAgaWYgKCFy
ZXN1bHQuZGlzdGluY3RBbmNlc3RvckIpCi0gICAgICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6
OmdyZWF0ZXI7CisgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXI7
CiAgICAgYm9vbCBpc1NoYWRvd1Jvb3RBID0gcmVzdWx0LmRpc3RpbmN0QW5jZXN0b3JBLT5pc1No
YWRvd1Jvb3QoKTsKICAgICBib29sIGlzU2hhZG93Um9vdEIgPSByZXN1bHQuZGlzdGluY3RBbmNl
c3RvckItPmlzU2hhZG93Um9vdCgpOwogICAgIGlmIChpc1NoYWRvd1Jvb3RBIHx8IGlzU2hhZG93
Um9vdEIpIHsKICAgICAgICAgaWYgKCFpc1NoYWRvd1Jvb3RCKQotICAgICAgICAgICAgcmV0dXJu
IFBhcnRpYWxPcmRlcmluZzo6bGVzczsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxf
b3JkZXJpbmc6Omxlc3M7CiAgICAgICAgIGlmICghaXNTaGFkb3dSb290QSkKLSAgICAgICAgICAg
IHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6OmdyZWF0ZXI7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpwYXJ0aWFsX29yZGVyaW5nOjpncmVhdGVyOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIFBhcnRpYWxPcmRlcmluZzo6dW5vcmRlcmVkOworICAgICAgICBy
ZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjp1bm9yZGVyZWQ7CiAgICAgfQotICAgIHJldHVy
biBpc1NpYmxpbmdTdWJzZXF1ZW50KCpyZXN1bHQuZGlzdGluY3RBbmNlc3RvckEsICpyZXN1bHQu
ZGlzdGluY3RBbmNlc3RvckIpID8gUGFydGlhbE9yZGVyaW5nOjpsZXNzIDogUGFydGlhbE9yZGVy
aW5nOjpncmVhdGVyOworICAgIHJldHVybiBpc1NpYmxpbmdTdWJzZXF1ZW50KCpyZXN1bHQuZGlz
dGluY3RBbmNlc3RvckEsICpyZXN1bHQuZGlzdGluY3RBbmNlc3RvckIpID8gc3RkOjpwYXJ0aWFs
X29yZGVyaW5nOjpsZXNzIDogc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjpncmVhdGVyOwogfQogCi10
ZW1wbGF0ZSBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyPFRyZWU+KGNvbnN0IE5vZGUmLCBjb25z
dCBOb2RlJik7Ci10ZW1wbGF0ZSBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyPFNoYWRvd0luY2x1
ZGluZ1RyZWU+KGNvbnN0IE5vZGUmLCBjb25zdCBOb2RlJik7Ci10ZW1wbGF0ZSBQYXJ0aWFsT3Jk
ZXJpbmcgdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oY29uc3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsK
K3RlbXBsYXRlIHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3JkZXI8VHJlZT4oY29uc3QgTm9k
ZSYsIGNvbnN0IE5vZGUmKTsKK3RlbXBsYXRlIHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3Jk
ZXI8U2hhZG93SW5jbHVkaW5nVHJlZT4oY29uc3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKK3RlbXBs
YXRlIHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3JkZXI8Q29tcG9zZWRUcmVlPihjb25zdCBO
b2RlJiwgY29uc3QgTm9kZSYpOwogCi1QYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyRm9yVGVzdGlu
ZyhUcmVlVHlwZSB0eXBlLCBjb25zdCBOb2RlJiBhLCBjb25zdCBOb2RlJiBiKQorc3RkOjpwYXJ0
aWFsX29yZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUgdHlwZSwgY29uc3QgTm9k
ZSYgYSwgY29uc3QgTm9kZSYgYikKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFRy
ZWU6CkBAIC0yNzY3LDcgKzI3NjcsNyBAQCBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyRm9yVGVz
dGluZyhUcmVlVHlwZSB0eXBlLCBjb25zdCBOb2RlJiBhLCBjb25zdCBOb2RlJiBiKQogICAgICAg
ICByZXR1cm4gdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oYSwgYik7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6OnVub3JkZXJlZDsK
KyAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nOjp1bm9yZGVyZWQ7CiB9CiAKIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IE5vZGUmIG5vZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAppbmRleCBiNDU4ZGE5YTMzMzVhYjFhNmNmMTMxYTk4OTM2ZmQ4NTMwMjMxYzJmLi5hODFj
NDhlNjRlZGFjMjhmNjdjYTlkNjEzNzA2Y2NiZjIyMDI1Y2M1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTcz
OCwzOCArNzM4LDEyIEBAIHByaXZhdGU6CiAKIGJvb2wgY29ubmVjdGVkSW5TYW1lVHJlZVNjb3Bl
KGNvbnN0IE5vZGUqLCBjb25zdCBOb2RlKik7CiAKLS8vIERlc2lnbmVkIHRvIGJlIHVzZWQgdGhl
IHNhbWUgd2F5IGFzIEMrKzIwIHN0ZDo6cGFydGlhbF9vcmRlcmluZyBjbGFzcy4KLS8vIEZJWE1F
OiBDb25zaWRlciBwdXR0aW5nIHRoaXMgaW4gYSBzZXBhcmF0ZSBoZWFkZXIuCi0vLyBGSVhNRTog
T25jZSB3ZSBjYW4gcmVxdWlyZSBDKysyMCwgcmVwbGFjZSB3aXRoIHN0ZDo6cGFydGlhbF9vcmRl
cmluZy4KLWNsYXNzIFBhcnRpYWxPcmRlcmluZyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0
IFBhcnRpYWxPcmRlcmluZyBsZXNzOwotICAgIHN0YXRpYyBjb25zdCBQYXJ0aWFsT3JkZXJpbmcg
ZXF1aXZhbGVudDsKLSAgICBzdGF0aWMgY29uc3QgUGFydGlhbE9yZGVyaW5nIGdyZWF0ZXI7Ci0g
ICAgc3RhdGljIGNvbnN0IFBhcnRpYWxPcmRlcmluZyB1bm9yZGVyZWQ7Ci0KLSAgICBmcmllbmQg
Y29uc3RleHByIGJvb2wgaXNfZXEoUGFydGlhbE9yZGVyaW5nKTsKLSAgICBmcmllbmQgY29uc3Rl
eHByIGJvb2wgaXNfbHQoUGFydGlhbE9yZGVyaW5nKTsKLSAgICBmcmllbmQgY29uc3RleHByIGJv
b2wgaXNfZ3QoUGFydGlhbE9yZGVyaW5nKTsKLQotcHJpdmF0ZToKLSAgICBlbnVtIGNsYXNzIFR5
cGUgOiB1aW50OF90IHsgTGVzcywgRXF1aXZhbGVudCwgR3JlYXRlciwgVW5vcmRlcmVkIH07Ci0g
ICAgY29uc3RleHByIFBhcnRpYWxPcmRlcmluZyhUeXBlIHR5cGUpIDogbV90eXBlIHsgdHlwZSB9
IHsgfQotICAgIFR5cGUgbV90eXBlOwotfTsKLWNvbnN0ZXhwciBib29sIGlzX2VxKFBhcnRpYWxP
cmRlcmluZyk7Ci1jb25zdGV4cHIgYm9vbCBpc19sdChQYXJ0aWFsT3JkZXJpbmcpOwotY29uc3Rl
eHByIGJvb2wgaXNfZ3QoUGFydGlhbE9yZGVyaW5nKTsKLWNvbnN0ZXhwciBib29sIGlzX25lcShQ
YXJ0aWFsT3JkZXJpbmcpOwotY29uc3RleHByIGJvb2wgaXNfbHRlcShQYXJ0aWFsT3JkZXJpbmcp
OwotY29uc3RleHByIGJvb2wgaXNfZ3RlcShQYXJ0aWFsT3JkZXJpbmcpOwotCiBlbnVtIFRyZWVU
eXBlIHsgVHJlZSwgU2hhZG93SW5jbHVkaW5nVHJlZSwgQ29tcG9zZWRUcmVlIH07CiB0ZW1wbGF0
ZTxUcmVlVHlwZSA9IFRyZWU+IENvbnRhaW5lck5vZGUqIHBhcmVudChjb25zdCBOb2RlJik7CiB0
ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IE5vZGUqIGNvbW1vbkluY2x1c2l2ZUFuY2VzdG9yKGNv
bnN0IE5vZGUmLCBjb25zdCBOb2RlJik7Ci10ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IFBhcnRp
YWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKK3RlbXBsYXRl
PFRyZWVUeXBlID0gVHJlZT4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBO
b2RlJiwgY29uc3QgTm9kZSYpOwogCi1XRUJDT1JFX0VYUE9SVCBQYXJ0aWFsT3JkZXJpbmcgdHJl
ZU9yZGVyRm9yVGVzdGluZyhUcmVlVHlwZSwgY29uc3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKK1dF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3JkZXJGb3JUZXN0aW5nKFRy
ZWVUeXBlLCBjb25zdCBOb2RlJiwgY29uc3QgTm9kZSYpOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQK
IApAQCAtODk4LDQxICs4NzIsNiBAQCBpbmxpbmUgdm9pZCBOb2RlOjpzZXRUcmVlU2NvcGVSZWN1
cnNpdmVseShUcmVlU2NvcGUmIG5ld1RyZWVTY29wZSkKICAgICAgICAgbW92ZVRyZWVUb05ld1Nj
b3BlKCp0aGlzLCAqbV90cmVlU2NvcGUsIG5ld1RyZWVTY29wZSk7CiB9CiAKLWlubGluZSBjb25z
dGV4cHIgUGFydGlhbE9yZGVyaW5nIFBhcnRpYWxPcmRlcmluZzo6bGVzcyhUeXBlOjpMZXNzKTsK
LWlubGluZSBjb25zdGV4cHIgUGFydGlhbE9yZGVyaW5nIFBhcnRpYWxPcmRlcmluZzo6ZXF1aXZh
bGVudChUeXBlOjpFcXVpdmFsZW50KTsKLWlubGluZSBjb25zdGV4cHIgUGFydGlhbE9yZGVyaW5n
IFBhcnRpYWxPcmRlcmluZzo6Z3JlYXRlcihUeXBlOjpHcmVhdGVyKTsKLWlubGluZSBjb25zdGV4
cHIgUGFydGlhbE9yZGVyaW5nIFBhcnRpYWxPcmRlcmluZzo6dW5vcmRlcmVkKFR5cGU6OlVub3Jk
ZXJlZCk7Ci0KLWNvbnN0ZXhwciBib29sIGlzX2VxKFBhcnRpYWxPcmRlcmluZyBvcmRlcmluZykK
LXsKLSAgICByZXR1cm4gb3JkZXJpbmcubV90eXBlID09IFBhcnRpYWxPcmRlcmluZzo6VHlwZTo6
RXF1aXZhbGVudDsKLX0KLQotY29uc3RleHByIGJvb2wgaXNfbHQoUGFydGlhbE9yZGVyaW5nIG9y
ZGVyaW5nKQotewotICAgIHJldHVybiBvcmRlcmluZy5tX3R5cGUgPT0gUGFydGlhbE9yZGVyaW5n
OjpUeXBlOjpMZXNzOwotfQotCi1jb25zdGV4cHIgYm9vbCBpc19ndChQYXJ0aWFsT3JkZXJpbmcg
b3JkZXJpbmcpCi17Ci0gICAgcmV0dXJuIG9yZGVyaW5nLm1fdHlwZSA9PSBQYXJ0aWFsT3JkZXJp
bmc6OlR5cGU6OkdyZWF0ZXI7Ci19Ci0KLWNvbnN0ZXhwciBib29sIGlzX25lcShQYXJ0aWFsT3Jk
ZXJpbmcgb3JkZXJpbmcpCi17Ci0gICAgcmV0dXJuIGlzX2x0KG9yZGVyaW5nKSB8fCBpc19ndChv
cmRlcmluZyk7Ci19Ci0KLWNvbnN0ZXhwciBib29sIGlzX2x0ZXEoUGFydGlhbE9yZGVyaW5nIG9y
ZGVyaW5nKQotewotICAgIHJldHVybiBpc19sdChvcmRlcmluZykgfHwgaXNfZXEob3JkZXJpbmcp
OwotfQotCi1jb25zdGV4cHIgYm9vbCBpc19ndGVxKFBhcnRpYWxPcmRlcmluZyBvcmRlcmluZykK
LXsKLSAgICByZXR1cm4gaXNfZ3Qob3JkZXJpbmcpIHx8IGlzX2VxKG9yZGVyaW5nKTsKLX0KLQog
V0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIGNvbnN0IE5vZGUmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3Np
dGlvbi5jcHAKaW5kZXggOWE1MTJlZmU3YzljMDFlZjgyMDEyY2I0M2Y5YjYxMTU1ODk2N2EyYS4u
YzFmYWZiZDNjNGMyN2VlZTZjMjgxMWJhMWZmZTU1MjVhMjkzYTZkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwCkBAIC0xNjE2LDIyICsxNjE2LDIyIEBAIHN0ZDo6b3B0aW9uYWw8Qm91bmRhcnlQ
b2ludD4gbWFrZUJvdW5kYXJ5UG9pbnQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogICAgIHJl
dHVybiBCb3VuZGFyeVBvaW50IHsgY29udGFpbmVyLnJlbGVhc2VOb25OdWxsKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihwb3NpdGlvbi5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCkpIH07
CiB9CiAKLXRlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9y
ZGVyKGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKK3RlbXBsYXRlPFRyZWVU
eXBlIHRyZWVUeXBlPiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyKGNvbnN0IFBvc2l0
aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKIHsKICAgICBpZiAoYS5pc051bGwoKSB8fCBiLmlz
TnVsbCgpKQotICAgICAgICByZXR1cm4gYS5pc051bGwoKSAmJiBiLmlzTnVsbCgpID8gUGFydGlh
bE9yZGVyaW5nOjplcXVpdmFsZW50IDogUGFydGlhbE9yZGVyaW5nOjp1bm9yZGVyZWQ7CisgICAg
ICAgIHJldHVybiBhLmlzTnVsbCgpICYmIGIuaXNOdWxsKCkgPyBzdGQ6OnBhcnRpYWxfb3JkZXJp
bmc6OmVxdWl2YWxlbnQgOiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OnVub3JkZXJlZDsKIAogICAg
IGF1dG8gYUNvbnRhaW5lciA9IGEuY29udGFpbmVyTm9kZSgpOwogICAgIGF1dG8gYkNvbnRhaW5l
ciA9IGIuY29udGFpbmVyTm9kZSgpOwogCiAgICAgaWYgKCFhQ29udGFpbmVyIHx8ICFiQ29udGFp
bmVyKSB7CiAgICAgICAgIGlmICghY29tbW9uSW5jbHVzaXZlQW5jZXN0b3I8dHJlZVR5cGU+KCph
LmFuY2hvck5vZGUoKSwgKmIuYW5jaG9yTm9kZSgpKSkKLSAgICAgICAgICAgIHJldHVybiBQYXJ0
aWFsT3JkZXJpbmc6OnVub3JkZXJlZDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxf
b3JkZXJpbmc6OnVub3JkZXJlZDsKICAgICAgICAgaWYgKCFhQ29udGFpbmVyICYmICFiQ29udGFp
bmVyICYmIGEuYW5jaG9yVHlwZSgpID09IGIuYW5jaG9yVHlwZSgpKQotICAgICAgICAgICAgcmV0
dXJuIFBhcnRpYWxPcmRlcmluZzo6ZXF1aXZhbGVudDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
OnBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxlbnQ7CiAgICAgICAgIGlmIChiQ29udGFpbmVyKQot
ICAgICAgICAgICAgcmV0dXJuIGEuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklz
QmVmb3JlQW5jaG9yID8gUGFydGlhbE9yZGVyaW5nOjpsZXNzIDogUGFydGlhbE9yZGVyaW5nOjpn
cmVhdGVyOwotICAgICAgICByZXR1cm4gYi5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0
aW9uSXNCZWZvcmVBbmNob3IgPyBQYXJ0aWFsT3JkZXJpbmc6OmdyZWF0ZXIgOiBQYXJ0aWFsT3Jk
ZXJpbmc6Omxlc3M7CisgICAgICAgICAgICByZXR1cm4gYS5hbmNob3JUeXBlKCkgPT0gUG9zaXRp
b246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IgPyBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6Omxlc3Mg
OiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmdyZWF0ZXI7CisgICAgICAgIHJldHVybiBiLmFuY2hv
clR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciA/IHN0ZDo6cGFydGlh
bF9vcmRlcmluZzo6Z3JlYXRlciA6IHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6bGVzczsKICAgICB9
CiAKICAgICAvLyBGSVhNRTogQXZvaWQgY29tcHV0aW5nIG5vZGUgb2Zmc2V0IGZvciBjYXNlcyB3
aGVyZSB3ZSBkb24ndCBuZWVkIHRvLgpAQCAtMTYzOSwxMyArMTYzOSwxMyBAQCB0ZW1wbGF0ZTxU
cmVlVHlwZSB0cmVlVHlwZT4gUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBQb3NpdGlv
biYgYSwgY29uc3QgUAogICAgIHJldHVybiB0cmVlT3JkZXI8dHJlZVR5cGU+KCptYWtlQm91bmRh
cnlQb2ludChhKSwgKm1ha2VCb3VuZGFyeVBvaW50KGIpKTsKIH0KIAotUGFydGlhbE9yZGVyaW5n
IGRvY3VtZW50T3JkZXIoY29uc3QgUG9zaXRpb24mIGEsIGNvbnN0IFBvc2l0aW9uJiBiKQorc3Rk
OjpwYXJ0aWFsX29yZGVyaW5nIGRvY3VtZW50T3JkZXIoY29uc3QgUG9zaXRpb24mIGEsIGNvbnN0
IFBvc2l0aW9uJiBiKQogewogICAgIHJldHVybiB0cmVlT3JkZXI8Q29tcG9zZWRUcmVlPihhLCBi
KTsKIH0KIAotdGVtcGxhdGUgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+
KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKLXRlbXBsYXRlIFBhcnRpYWxPcmRl
cmluZyB0cmVlT3JkZXI8U2hhZG93SW5jbHVkaW5nVHJlZT4oY29uc3QgUG9zaXRpb24mLCBjb25z
dCBQb3NpdGlvbiYpOwordGVtcGxhdGUgc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcjxD
b21wb3NlZFRyZWU+KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKK3RlbXBsYXRl
IHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0cmVlT3JkZXI8U2hhZG93SW5jbHVkaW5nVHJlZT4oY29u
c3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmgKaW5kZXggOWM5OTRjMDk3OGM2YTQ4N2Q3ZTIyYmEwYmQ2ZTBh
NDg4YzU0YmMxZS4uNjc4NTFiYTdhMGFiOWNjZGYyMzNiM2QzZDc3MWY2NGYyMzA4YTdmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1Bvc2l0aW9uLmgKQEAgLTIxOCwxNCArMjE4LDEwIEBAIHByaXZhdGU6CiB9OwogCiBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwotYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKIAotdGVtcGxhdGU8
VHJlZVR5cGUgdHJlZVR5cGU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgUG9zaXRp
b24mLCBjb25zdCBQb3NpdGlvbiYpOwotV0VCQ09SRV9FWFBPUlQgUGFydGlhbE9yZGVyaW5nIGRv
Y3VtZW50T3JkZXIoY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwotYm9vbCBvcGVy
YXRvcjwoY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwotYm9vbCBvcGVyYXRvcj4o
Y29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwotYm9vbCBvcGVyYXRvcj49KGNvbnN0
IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mKTsKLWJvb2wgb3BlcmF0b3I8PShjb25zdCBQb3Np
dGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7Cit0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gc3Rk
OjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0
aW9uJik7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgZG9jdW1lbnRPcmRl
cihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJik7CitzdGQ6OnBhcnRpYWxfb3JkZXJp
bmcgb3BlcmF0b3I8PT4oY29uc3QgUG9zaXRpb24mLCBjb25zdCBQb3NpdGlvbiYpOwogCiBQb3Np
dGlvbiBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oTm9kZSosIHVuc2lnbmVkIG9mZnNldCk7
CiBXRUJDT1JFX0VYUE9SVCBQb3NpdGlvbiBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oY29u
c3QgQm91bmRhcnlQb2ludCYpOwpAQCAtMjc5LDI5ICsyNzUsOSBAQCBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKICAgICByZXR1cm4g
YS5hbmNob3JOb2RlKCkgPT0gYi5hbmNob3JOb2RlKCkgJiYgYS5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpID09IGIuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSAmJiBhLmFuY2hvclR5cGUoKSA9
PSBiLmFuY2hvclR5cGUoKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQb3Np
dGlvbiYgYSwgY29uc3QgUG9zaXRpb24mIGIpCitpbmxpbmUgc3RkOjpwYXJ0aWFsX29yZGVyaW5n
IG9wZXJhdG9yPD0+KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKIHsKLSAg
ICByZXR1cm4gIShhID09IGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgUG9z
aXRpb24mIGEsIGNvbnN0IFBvc2l0aW9uJiBiKQotewotICAgIHJldHVybiBpc19sdChkb2N1bWVu
dE9yZGVyKGEsIGIpKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFBvc2l0aW9u
JiBhLCBjb25zdCBQb3NpdGlvbiYgYikgCi17Ci0gICAgcmV0dXJuIGlzX2d0KGRvY3VtZW50T3Jk
ZXIoYSwgYikpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFBvc2l0aW9uJiBh
LCBjb25zdCBQb3NpdGlvbiYgYikgCi17Ci0gICAgcmV0dXJuIGlzX2d0ZXEoZG9jdW1lbnRPcmRl
cihhLCBiKSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgUG9zaXRpb24mIGEs
IGNvbnN0IFBvc2l0aW9uJiBiKSAKLXsKLSAgICByZXR1cm4gaXNfbHRlcShkb2N1bWVudE9yZGVy
KGEsIGIpKTsKKyAgICByZXR1cm4gZG9jdW1lbnRPcmRlcihhLCBiKTsKIH0KIAogLy8gcG9zaXRp
b25CZWZvcmVOb2RlIGFuZCBwb3NpdGlvbkFmdGVyTm9kZSByZXR1cm4gbmVpZ2hib3ItYW5jaG9y
ZWQgcG9zaXRpb25zLCBjb25zdHJ1Y3Rpb24gaXMgTygxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWRO
YW1lLmgKaW5kZXggNDI5ZmM1NTk2NDM1MWYxMjQ5YmMxYzhmMjg5ZTM3N2E0ZGQzZTMzNi4uYzc3
Y2YyYzRlMWU1N2VjZTRiYTY0MjE1ZTE1N2E1OGVhMzBlN2ZlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUXVh
bGlmaWVkTmFtZS5oCkBAIC03OCw4ICs3OCw3IEBAIHB1YmxpYzoKICAgICBRdWFsaWZpZWROYW1l
KCkgeyB9CiAjZW5kaWYKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRdWFsaWZpZWROYW1l
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbXBsID09IG90aGVyLm1faW1wbDsgfQotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBRdWFsaWZpZWROYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBRdWFsaWZp
ZWROYW1lJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbXBsID09IG90aGVyLm1faW1wbCB8fCAo
bG9jYWxOYW1lKCkgPT0gb3RoZXIubG9jYWxOYW1lKCkgJiYgbmFtZXNwYWNlVVJJKCkgPT0gb3Ro
ZXIubmFtZXNwYWNlVVJJKCkpOyB9CiAKQEAgLTExNSw5ICsxMTQsNiBAQCBpbmxpbmUgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYW55UU5hbWUoKSB7IHJldHVybiBhbnlOYW1lOyB9CiBjb25zdCBRdWFs
aWZpZWROYW1lJiBudWxsUU5hbWUoKTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBB
dG9tU3RyaW5nJiBhLCBjb25zdCBRdWFsaWZpZWROYW1lJiBxKSB7IHJldHVybiBhID09IHEubG9j
YWxOYW1lKCk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXRvbVN0cmluZyYgYSwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgcSkgeyByZXR1cm4gYSAhPSBxLmxvY2FsTmFtZSgpOyB9Ci1p
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFF1YWxpZmllZE5hbWUmIHEsIGNvbnN0IEF0b21T
dHJpbmcmIGEpIHsgcmV0dXJuIGEgPT0gcS5sb2NhbE5hbWUoKTsgfQotaW5saW5lIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBRdWFsaWZpZWROYW1lJiBxLCBjb25zdCBBdG9tU3RyaW5nJiBhKSB7IHJl
dHVybiBhICE9IHEubG9jYWxOYW1lKCk7IH0KIAogaW5saW5lIHVuc2lnbmVkIGhhc2hDb21wb25l
bnRzKGNvbnN0IFF1YWxpZmllZE5hbWVDb21wb25lbnRzJiBidWYpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Np
bXBsZVJhbmdlLmNwcAppbmRleCBhYjI1ODk5M2MwZWYxMzBiZmRkZTk3YTcxMzFmMzZlNzUwMmRi
Yjg3Li43ZWM0ZmJiNjM1ZTUwOTgzMGRhN2IzNTkxNzM3YzBkMGQ3YzFmMDE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAgLTQ2LDExICs0Niw2IEBAIFNpbXBsZVJhbmdlOjpTaW1w
bGVSYW5nZShCb3VuZGFyeVBvaW50JiYgc3RhcnQsIEJvdW5kYXJ5UG9pbnQmJiBlbmQpCiB7CiB9
CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFu
Z2UmIGIpCi17Ci0gICAgcmV0dXJuIGEuc3RhcnQgPT0gYi5zdGFydCAmJiBhLmVuZCA9PSBiLmVu
ZDsKLX0KLQogc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZShOb2RlJiBub2RlKQogewogICAgIGF1dG8gcGFyZW50ID0gbm9kZS5wYXJlbnROb2RlKCk7CkBA
IC0xNzEsMjYgKzE2NiwyNiBAQCBib29sIGNvbnRhaW5zRm9yVGVzdGluZyhUcmVlVHlwZSB0eXBl
LCBjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IEJvdW5kYXJ5UAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IFBhcnRpYWxPcmRlcmluZyB0
cmVlT3JkZXIoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBCb3VuZGFyeVBvaW50JiBw
b2ludCkKK3RlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcg
dHJlZU9yZGVyKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgQm91bmRhcnlQb2ludCYg
cG9pbnQpCiB7CiAgICAgaWYgKGF1dG8gb3JkZXIgPSB0cmVlT3JkZXI8dHJlZVR5cGU+KHJhbmdl
LnN0YXJ0LCBwb2ludCk7ICFpc19sdChvcmRlcikpCiAgICAgICAgIHJldHVybiBvcmRlcjsKICAg
ICBpZiAoYXV0byBvcmRlciA9IHRyZWVPcmRlcjx0cmVlVHlwZT4ocmFuZ2UuZW5kLCBwb2ludCk7
ICFpc19ndChvcmRlcikpCiAgICAgICAgIHJldHVybiBvcmRlcjsKLSAgICByZXR1cm4gUGFydGlh
bE9yZGVyaW5nOjplcXVpdmFsZW50OworICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6
OmVxdWl2YWxlbnQ7CiB9CiAKLXRlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBQYXJ0aWFsT3Jk
ZXJpbmcgdHJlZU9yZGVyKGNvbnN0IEJvdW5kYXJ5UG9pbnQmIHBvaW50LCBjb25zdCBTaW1wbGVS
YW5nZSYgcmFuZ2UpCit0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gc3RkOjpwYXJ0aWFsX29y
ZGVyaW5nIHRyZWVPcmRlcihjb25zdCBCb3VuZGFyeVBvaW50JiBwb2ludCwgY29uc3QgU2ltcGxl
UmFuZ2UmIHJhbmdlKQogewogICAgIGlmIChhdXRvIG9yZGVyID0gdHJlZU9yZGVyPHRyZWVUeXBl
Pihwb2ludCwgcmFuZ2Uuc3RhcnQpOyAhaXNfZ3Qob3JkZXIpKQogICAgICAgICByZXR1cm4gb3Jk
ZXI7CiAgICAgaWYgKGF1dG8gb3JkZXIgPSB0cmVlT3JkZXI8dHJlZVR5cGU+KHBvaW50LCByYW5n
ZS5lbmQpOyAhaXNfbHQob3JkZXIpKQogICAgICAgICByZXR1cm4gb3JkZXI7Ci0gICAgcmV0dXJu
IFBhcnRpYWxPcmRlcmluZzo6ZXF1aXZhbGVudDsKKyAgICByZXR1cm4gc3RkOjpwYXJ0aWFsX29y
ZGVyaW5nOjplcXVpdmFsZW50OwogfQogCi10ZW1wbGF0ZSBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9y
ZGVyPFRyZWU+KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwotdGVt
cGxhdGUgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcjxUcmVlPihjb25zdCBCb3VuZGFyeVBvaW50
JiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKK3RlbXBsYXRlIHN0ZDo6cGFydGlhbF9vcmRlcmluZyB0
cmVlT3JkZXI8VHJlZT4oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBCb3VuZGFyeVBvaW50Jik7
Cit0ZW1wbGF0ZSBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9yZGVyPFRyZWU+KGNvbnN0IEJv
dW5kYXJ5UG9pbnQmLCBjb25zdCBTaW1wbGVSYW5nZSYpOwogCiB0ZW1wbGF0ZTxUcmVlVHlwZSB0
cmVlVHlwZT4gYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYgb3V0ZXJSYW5nZSwgY29u
c3QgU2ltcGxlUmFuZ2UmIGlubmVyUmFuZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2ltcGxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCmlu
ZGV4IDAyNWFjODc1NDdhYWJjOTFiY2MxNjExZDdiNjUzNTg3NTkzNmJkOTQuLjNkYjg3M2Y4ZDcy
MjI4NGRhNTYwYjcwOWVjYzIzMzYwOWMyNTgxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaW1wbGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5o
CkBAIC00Miw2ICs0Miw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZSB7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBTaW1wbGVSYW5nZShjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgQm91bmRhcnlQb2lu
dCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNpbXBsZVJhbmdlKEJvdW5kYXJ5UG9pbnQmJiwgQm91
bmRhcnlQb2ludCYmKTsKKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYp
IGNvbnN0ID0gZGVmYXVsdDsKIH07CiAKIFNpbXBsZVJhbmdlIG1ha2VTaW1wbGVSYW5nZUhlbHBl
cihCb3VuZGFyeVBvaW50JiYsIEJvdW5kYXJ5UG9pbnQmJik7CkBAIC02MSw4ICs2Myw2IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIC4uLlQ+IGF1dG8gbWFrZVNpbXBsZVJhbmdlKFQmJiAuLi5hcmd1bWVu
dHMpIC0+IGRlY2x0eXBlKG1ha2VTCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKE5vZGUmKTsKIFdFQkNPUkVfRVhQT1JUIFNp
bXBsZVJhbmdlIG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhOb2RlJik7CiAKLWJvb2wg
b3BlcmF0b3I9PShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7Ci0KIHRl
bXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gTm9kZSogY29tbW9uSW5jbHVzaXZlQW5jZXN0b3IoY29u
c3QgU2ltcGxlUmFuZ2UmKTsKIAogdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29sIGNvbnRh
aW5zKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgQm91bmRhcnlQb2ludCYpOwpAQCAtODEsOCAr
ODEsOCBAQCBXRUJDT1JFX0VYUE9SVCBib29sIGludGVyc2VjdHNGb3JUZXN0aW5nKFRyZWVUeXBl
LCBjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbQogV0VCQ09SRV9FWFBPUlQgYm9vbCBpbnRl
cnNlY3RzRm9yVGVzdGluZyhUcmVlVHlwZSwgY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2Rl
Jik7CiAKIC8vIFJldHVybnMgZXF1aXZhbGVudCBpZiBwb2ludCBpcyBpbiByYW5nZS4KLXRlbXBs
YXRlPFRyZWVUeXBlID0gVHJlZT4gUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBTaW1w
bGVSYW5nZSYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQmKTsKLXRlbXBsYXRlPFRyZWVUeXBlID0gVHJl
ZT4gUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3Qg
U2ltcGxlUmFuZ2UmKTsKK3RlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gc3RkOjpwYXJ0aWFsX29y
ZGVyaW5nIHRyZWVPcmRlcihjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IEJvdW5kYXJ5UG9pbnQm
KTsKK3RlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVP
cmRlcihjb25zdCBCb3VuZGFyeVBvaW50JiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIAogc3RydWN0
IE9mZnNldFJhbmdlIHsKICAgICB1bnNpZ25lZCBzdGFydCB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1ZpZXdwb3J0QXJndW1lbnRzLmgKaW5kZXggZGM3MTg3M2JmOWE0MGFhN2QyODk3OGJiMTY1Y2Fj
NGI5OTkwNDdmNC4uYzAwZGRkNTU4ZGMxYTBlZTNmZmVkMmFlNTQzYjY3Y2VhMjllMWE2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmgKQEAgLTEyNSwxMSArMTI1LDYgQEAg
c3RydWN0IFZpZXdwb3J0QXJndW1lbnRzIHsKICAgICAgICAgICAgICYmIHdpZHRoV2FzRXhwbGlj
aXQgPT0gb3RoZXIud2lkdGhXYXNFeHBsaWNpdDsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICAvLyBGSVhNRTogV2UncmUgZ29pbmcgdG8ga2VlcCB0aGlzIGNvbnN0YW50IGFyb3VuZCB1bnRp
bCBhbGwgZW1iZWRkZXJzCiAgICAgLy8gcmVmYWN0b3IgdGhlaXIgY29kZSB0byBubyBsb25nZXIg
bmVlZCBpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCmluZGV4IDdmZGU1MmU5
ZTQ1NTA5MzdmYzg4Mjk2MjI4MjRiZmZlOGExM2EzMjEuLmQ2N2Q0MjQwMzk2NTU3YjE4NDY2OTI4
OTE3NWUwZjg1ODVmMzM1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaApA
QCAtMjIwLDEwICsyMjAsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGZvbnRTaXplKCkgeyByZXR1
cm4gbV9hcHBseUZvbnRTaXplOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVD
aGFuZ2UmKTsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVDaGFuZ2UmIG90aGVyKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKwogcHJpdmF0
ZToKICAgICB2b2lkIGV4dHJhY3RUZXh0U3R5bGVzKERvY3VtZW50JiwgTXV0YWJsZVN0eWxlUHJv
cGVydGllcyYsIGJvb2wgc2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNpemUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCmluZGV4IDIxMzIyM2Q5YzUxNjRlYzRh
NzkyMGI5NWM3ZGIxNDFmNmRkM2EyN2MuLjMwNzI3ZGI5NmVmYWY1MTQ1OWU5OTA2MTVmYWE4OTBi
MGFjMWM5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3Np
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCkBA
IC03MSw3ICs3MSw2IEBAIHB1YmxpYzoKICAgICBJbnRSZWN0IGFic29sdXRlUmVjdChDYXJldFJl
Y3RNb2RlID0gQ2FyZXRSZWN0TW9kZTo6Tm9ybWFsKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVuZGVyZWRQb3NpdGlvbiYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgZXhwbGljaXQgUmVuZGVyZWRQb3NpdGlvbihjb25zdCBSZW5kZXJPYmplY3Qq
LCBJbmxpbmVJdGVyYXRvcjo6TGVhZkJveEl0ZXJhdG9yLCB1bnNpZ25lZCBvZmZzZXQpOwogCiAg
ICAgSW5saW5lSXRlcmF0b3I6OkxlYWZCb3hJdGVyYXRvciBwcmV2aW91c0xlYWZPbkxpbmUoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCAy
YzNlMDc4YTMyYTJmZWYyMWRhNGZlY2Y5ZGRhZGI3MTQyYWVmMzMzLi5hMWMwNGJmZTU1NWYxNWJl
YWMxZTYxNWZiYmY1YWQ4OTgyYWZmNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlUG9zaXRpb24uY3BwCkBAIC04MDUsNyArODA1LDcgQEAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
bWFrZVZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+
JgogICAgIHJldHVybiB7IG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihyYW5nZS0+c3RhcnQp
LCBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24ocmFuZ2UtPmVuZCkgfTsKIH0KIAotUGFydGlh
bE9yZGVyaW5nIGRvY3VtZW50T3JkZXIoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBW
aXNpYmxlUG9zaXRpb24mIGIpCitzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgZG9jdW1lbnRPcmRlcihj
b25zdCBWaXNpYmxlUG9zaXRpb24mIGEsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYikKIHsKICAg
ICAvLyBGSVhNRTogU2hvdWxkIHR3byBwb3NpdGlvbnMgd2l0aCBkaWZmZXJlbnQgYWZmaW5pdHkg
YmUgY29uc2lkZXJlZCBlcXVpdmFsZW50IG9yIG5vdD8KICAgICByZXR1cm4gdHJlZU9yZGVyPENv
bXBvc2VkVHJlZT4oYS5kZWVwRXF1aXZhbGVudCgpLCBiLmRlZXBFcXVpdmFsZW50KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmgKaW5kZXggYTkyY2E4MWJjZWZlM2U0
NzZjNGM1NDY2MGQ5NzIwODRlZWVjZmFjNi4uN2QyNzY4NjhjMWE3M2NmYTkxM2MzM2FlZmE4Zjgw
NTA4N2E4N2M2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9z
aXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oCkBA
IC0xMDYsMTMgKzEwNiw5IEBAIHByaXZhdGU6CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci1ib29sIG9wZXJhdG9y
IT0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAKLVdF
QkNPUkVfRVhQT1JUIFBhcnRpYWxPcmRlcmluZyBkb2N1bWVudE9yZGVyKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotYm9vbCBvcGVyYXRvcjwoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci1ib29sIG9wZXJhdG9y
Pihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKLWJvb2wg
b3BlcmF0b3I8PShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24m
KTsKLWJvb2wgb3BlcmF0b3I+PShjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6cGFydGlhbF9vcmRlcmluZyBkb2N1bWVu
dE9yZGVyKGNvbnN0IFZpc2libGVQb3NpdGlvbiYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwor
c3RkOjpwYXJ0aWFsX29yZGVyaW5nIG9wZXJhdG9yPD0+KGNvbnN0IFZpc2libGVQb3NpdGlvbiYs
IGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogCiBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFs
PEJvdW5kYXJ5UG9pbnQ+IG1ha2VCb3VuZGFyeVBvaW50KGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
OwogCkBAIC0xNTMsMjkgKzE0OSw5IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCiAgICAgcmV0dXJuIGEu
ZGVlcEVxdWl2YWxlbnQoKSA9PSBiLmRlZXBFcXVpdmFsZW50KCk7CiB9CiAKLWlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRp
b24mIGIpCitpbmxpbmUgc3RkOjpwYXJ0aWFsX29yZGVyaW5nIG9wZXJhdG9yPD0+KGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgYSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBiKQogewotICAgIHJldHVy
biAhKGEgPT0gYik7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBWaXNpYmxlUG9z
aXRpb24mIGEsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYikKLXsKLSAgICByZXR1cm4gaXNfbHQo
ZG9jdW1lbnRPcmRlcihhLCBiKSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBW
aXNpYmxlUG9zaXRpb24mIGEsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYikKLXsKLSAgICByZXR1
cm4gaXNfZ3QoZG9jdW1lbnRPcmRlcihhLCBiKSk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9y
PD0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGIpCi17
Ci0gICAgcmV0dXJuIGlzX2x0ZXEoZG9jdW1lbnRPcmRlcihhLCBiKSk7Ci19Ci0KLWlubGluZSBi
b29sIG9wZXJhdG9yPj0oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBhLCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mIGIpCi17Ci0gICAgcmV0dXJuIGlzX2d0ZXEoZG9jdW1lbnRPcmRlcihhLCBiKSk7Cisg
ICAgcmV0dXJuIGRvY3VtZW50T3JkZXIoYSwgYik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgKaW5kZXggYTRhZDhk
OWY1YmEzNmU3NzUxMjBjMWIyYzBjODU1NDg4NDlhNzA1OC4uNzQ4YzkyNjM4ZjBhNzlmY2U5ZGQ1
MGRiNmI1NmExY2IyNjM2YTU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2Vs
ZWN0aW9uLmgKQEAgLTE2NywxMSArMTY3LDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBhLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBiKQogICAgIHJl
dHVybiBhLnN0YXJ0KCkgPT0gYi5zdGFydCgpICYmIGEuZW5kKCkgPT0gYi5lbmQoKSAmJiBhLmFm
ZmluaXR5KCkgPT0gYi5hZmZpbml0eSgpICYmIGEuaXNCYXNlRmlyc3QoKSA9PSBiLmlzQmFzZUZp
cnN0KCkgJiYgYS5pc0RpcmVjdGlvbmFsKCkgPT0gYi5pc0RpcmVjdGlvbmFsKCk7CiB9CiAKLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgYSwgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMzAzNmNkMzJkNmNkODMyYzIyMDI4
M2E4NDQ1YTg5OWE1YTY2Y2EzYy4uNzE3ODM1MGQwMDAyYmQ5MGUxNWI2NDU0YWE1MGFiNDY2ZTRh
ODU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMjIwLDcg
KzIyMCw3IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlTm9kZUZyb21QYXN0ZWJvYXJkKE5vZGUqIG5v
ZGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwog
Ci0gICAgaWYgKG5vZGUtPmRvY3VtZW50KCkgIT0gbV9kb2N1bWVudCkKKyAgICBpZiAoJm5vZGUt
PmRvY3VtZW50KCkgIT0gJm1fZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxE
b2N1bWVudD4gcHJvdGVjdG9yKG1fZG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9CYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0JhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaAppbmRleCBjM2E4ZWJlZDk3YmM3NTI3
YTIzNWRkOGY3YWU5MzQ2MWQ1ZGRjMGZkLi5mOTJkYjJjNWFlOTVjYzZhYTA0OWQ4NzE2MGVjMDk3
ZjUxODMxMDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXIuaApAQCAtMzksNiArMzksNyBAQCBzdHJ1Y3QgQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciB7CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIHByb2Nlc3NJZGVudGlmaWVyICYmIGl0ZW1J
ZGVudGlmaWVyOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXImKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gZGVjb2Rl
KERlY29kZXImKTsKQEAgLTYxLDE2ICs2Miw2IEBAIGlubGluZSBjb25zdCBjaGFyKiBCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyOjpsb2dTdHJpbmcoKSBjb25zdAogCiAjZW5kaWYKIAotaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBhLCBjb25z
dCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBiKQotewotICAgIHJldHVybiBhLnByb2Nlc3NJ
ZGVudGlmaWVyID09IGIucHJvY2Vzc0lkZW50aWZpZXIgJiYgIGEuaXRlbUlkZW50aWZpZXIgPT0g
Yi5pdGVtSWRlbnRpZmllcjsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBhLCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TEZvcm1hdHRpbmdFbGVtZW50TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TEZvcm1hdHRpbmdFbGVtZW50TGlzdC5oCmluZGV4IGU2YWIxZWE1N2IxNGQyMWQ5ODEzZGY3ZmVk
YTBjNjU2YzlkMGE3ZjQuLjZmM2ZkYTk3NDExNTIwMDFkNWNhNDcyOTNiMmZiOTE4MzUyMWNkM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxGb3JtYXR0aW5nRWxl
bWVudExpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRm9ybWF0dGlu
Z0VsZW1lbnRMaXN0LmgKQEAgLTY4LDkgKzY4LDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
ICAgIHZvaWQgcmVwbGFjZUVsZW1lbnQoUmVmPEhUTUxTdGFja0l0ZW0+JiYgaXRlbSkgeyBtX2l0
ZW0gPSBXVEZNb3ZlKGl0ZW0pOyB9CiAKLSAgICAgICAgLy8gTmVlZGVkIGZvciB1c2Ugd2l0aCBW
ZWN0b3IuICBUaGVzZSBhcmUgc3VwZXItaG90IGFuZCBtdXN0IGJlIGlubGluZS4KKyAgICAgICAg
Ly8gTmVlZGVkIGZvciB1c2Ugd2l0aCBWZWN0b3IuIFN1cGVyLWhvdCBhbmQgbXVzdCBiZSBpbmxp
bmUuCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShFbGVtZW50KiBlbGVtZW50KSBjb25zdCB7IHJl
dHVybiAhbV9pdGVtID8gIWVsZW1lbnQgOiAmbV9pdGVtLT5lbGVtZW50KCkgPT0gZWxlbWVudDsg
fQotICAgICAgICBib29sIG9wZXJhdG9yIT0oRWxlbWVudCogZWxlbWVudCkgY29uc3QgeyByZXR1
cm4gIW1faXRlbSA/ICEhZWxlbWVudCA6ICZtX2l0ZW0tPmVsZW1lbnQoKSAhPSBlbGVtZW50OyB9
CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8SFRNTFN0YWNrSXRlbT4gbV9pdGVtOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCmluZGV4IDg5
NTE2YjFiOWJlZTllMTljNjYxODUxYzIyNDc4MmI4YWY1ZDY0OTAuLjFlZDA5MGE3NjBjYjZlMzJl
ZDliMGEwYmM3NmJmMGE2NWIzZWVjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VySWRpb21zLmgKQEAgLTcxLDcgKzcxLDcgQEAgV0VCQ09SRV9FWFBPUlQgRXhw
ZWN0ZWQ8dW5zaWduZWQsIEhUTUxJbnRlZ2VyUGFyc2luZ0Vycm9yPiBwYXJzZUhUTUxOb25OZWdh
dGl2ZUkKIHN0ZDo6b3B0aW9uYWw8aW50PiBwYXJzZVZhbGlkSFRNTE5vbk5lZ2F0aXZlSW50ZWdl
cihTdHJpbmdWaWV3KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdmFsaWQt
ZmxvYXRpbmctcG9pbnQtbnVtYmVyCi1zdGQ6Om9wdGlvbmFsPGRvdWJsZT4gcGFyc2VWYWxpZEhU
TUxGbG9hdGluZ1BvaW50TnVtYmVyKFN0cmluZ1ZpZXcpOworV0VCQ09SRV9FWFBPUlQgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHBhcnNlVmFsaWRIVE1MRmxvYXRpbmdQb2ludE51bWJlcihTdHJpbmdW
aWV3KTsKIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvaW5mcmFz
dHJ1Y3R1cmUuaHRtbCNydWxlcy1mb3ItcGFyc2luZy1mbG9hdGluZy1wb2ludC1udW1iZXItdmFs
dWVzCiBWZWN0b3I8ZG91YmxlPiBwYXJzZUhUTUxMaXN0T2ZPZkZsb2F0aW5nUG9pbnROdW1iZXJW
YWx1ZXMoU3RyaW5nVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAppbmRleCA3MmY0MjNmZjYxMjc3ZWVmNGJk
MzU2MzI4YzQ2ZDNiZDkxMzFmZjY1Li5jNmFlNzNiOWY3MGMzNzY1MDA5NjU3Njg4MDI4ZjdkYWZi
Y2FkOTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTIzNCwxMyArMjM0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgYm9vbCBpc1JlZ2V4IHsgZmFsc2UgfTsKICAgICAgICAgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6TmV0d29yazo6TmV0d29ya1N0YWdlIG5ldHdvcmtTdGFnZSB7IEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok5ldHdvcms6Ok5ldHdvcmtTdGFnZTo6UmVzcG9uc2UgfTsKIAotICAgICAgICBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVyY2VwdCYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiB1cmwgPT0gb3RoZXIudXJsCi0gICAgICAgICAgICAgICAgJiYg
Y2FzZVNlbnNpdGl2ZSA9PSBvdGhlci5jYXNlU2Vuc2l0aXZlCi0gICAgICAgICAgICAgICAgJiYg
aXNSZWdleCA9PSBvdGhlci5pc1JlZ2V4Ci0gICAgICAgICAgICAgICAgJiYgbmV0d29ya1N0YWdl
ID09IG90aGVyLm5ldHdvcmtTdGFnZTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgSW50ZXJjZXB0JikgY29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAgICAgVmVjdG9y
PEludGVyY2VwdD4gbV9pbnRlcmNlcHRzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1
ZV9wdHI8UGVuZGluZ0ludGVyY2VwdFJlcXVlc3Q+PiBtX3BlbmRpbmdJbnRlcmNlcHRSZXF1ZXN0
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKaW5kZXggOGJhOWNkN2FjNWJiZmM1YmUz
ZDMxMGM0YzI5OTU0MzhkYWQ3M2ZhOS4uNGQ3NDNmMzc3NGUzOTA3NmU1YTliY2Q3YmQ3MzI5MTM5
MDJmMTMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKQEAgLTU1LDE4ICs1NSw5
IEBAIHVzaW5nIElubGluZUxheW91dFJlY3QgPSBMYXlvdXRSZWN0Owogc3RydWN0IFBvc2l0aW9u
IHsKICAgICBvcGVyYXRvciBMYXlvdXRVbml0KCkgY29uc3QgeyByZXR1cm4gdmFsdWU7IH0KICAg
ICBMYXlvdXRVbml0IHZhbHVlOworICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KFBvc2l0aW9u
LCBQb3NpdGlvbikgPSBkZWZhdWx0OwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0
IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKLXsKLSAgICByZXR1cm4gYS52YWx1ZSA8
IGIudmFsdWU7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUG9zaXRpb24mIGEs
IGNvbnN0IFBvc2l0aW9uJiBiKQotewotICAgIHJldHVybiBhLnZhbHVlID09IGIudmFsdWU7Ci19
Ci0KIHN0cnVjdCBQb2ludCB7CiAgICAgLy8gRklYTUU6IFVzZSBQb3NpdGlvbjxIb3Jpem9udGFs
PiwgUG9zaXRpb248VmVydGljYWw+IHRvIGF2b2lkIHRvcC9sZWZ0IHZzLiB4L3kgY29uZnVzaW9u
LgogICAgIExheW91dFVuaXQgeDsgLy8gbGVmdApAQCAtMTk2LDIzICsxODcsMTEgQEAgaW5saW5l
IElubGluZUxheW91dFVuaXQgbWF4SW5saW5lTGF5b3V0VW5pdCgpCiB9CiAKIHN0cnVjdCBTbG90
UG9zaXRpb24gewotICAgIFNsb3RQb3NpdGlvbigpID0gZGVmYXVsdDsKLSAgICBTbG90UG9zaXRp
b24oc2l6ZV90IGNvbHVtbiwgc2l6ZV90IHJvdyk7Ci0KICAgICBzaXplX3QgY29sdW1uIHsgMCB9
OwogICAgIHNpemVfdCByb3cgeyAwIH07Ci19OwotCi1pbmxpbmUgU2xvdFBvc2l0aW9uOjpTbG90
UG9zaXRpb24oc2l6ZV90IGNvbHVtbiwgc2l6ZV90IHJvdykKLSAgICA6IGNvbHVtbihjb2x1bW4p
Ci0gICAgLCByb3cocm93KQotewotfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNs
b3RQb3NpdGlvbiYgYSwgY29uc3QgU2xvdFBvc2l0aW9uJiBiKQotewotICAgIHJldHVybiBhLmNv
bHVtbiA9PSBiLmNvbHVtbiAmJiBhLnJvdyA9PSBiLnJvdzsKLX0KKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2xvdFBvc2l0aW9uJikgY29uc3QgPSBkZWZhdWx0OworfTsKIAogc3RydWN0IENl
bGxTcGFuIHsKICAgICBzaXplX3QgY29sdW1uIHsgMSB9OwpAQCAtMjI5LDcgKzIwOCw3IEBAIHN0
cnVjdCBTbG90UG9zaXRpb25IYXNoIHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7CiB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRy
YWl0czxXZWJDb3JlOjpMYXlvdXQ6OlNsb3RQb3NpdGlvbj4gOiBHZW5lcmljSGFzaFRyYWl0czxX
ZWJDb3JlOjpMYXlvdXQ6OlNsb3RQb3NpdGlvbj4gewotICAgIHN0YXRpYyBXZWJDb3JlOjpMYXlv
dXQ6OlNsb3RQb3NpdGlvbiBlbXB0eVZhbHVlKCkgeyByZXR1cm4gV2ViQ29yZTo6TGF5b3V0OjpT
bG90UG9zaXRpb24oMCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7IH0KKyAg
ICBzdGF0aWMgV2ViQ29yZTo6TGF5b3V0OjpTbG90UG9zaXRpb24gZW1wdHlWYWx1ZSgpIHsgcmV0
dXJuIHsgMCwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSB9OyB9CiAKICAgICBz
dGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6TGF5b3V0OjpTbG90UG9z
aXRpb24mIHNsb3QpIHsgc2xvdC5jb2x1bW4gPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6
TGF5b3V0OjpTbG90UG9zaXRpb24mIHNsb3QpIHsgcmV0dXJuIHNsb3QuY29sdW1uID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAppbmRleCBkMzVmOTQyMGU1YTcwNmE3ODIz
NGRjOTNlMDkzN2RmY2VlMzdjMWM3Li41OGI5NDE0YTQ2MzU3ODlkZDA2YTlkNDE2ZWMzZjJjNTg3
NTY0OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0Nv
bnRleHQuY3BwCkBAIC0xMDIsNyArMTAyLDYgQEAgcHVibGljOgogICAgIGNvbnN0IEZsb2F0UGFp
ciYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50OyB9CiAgICAgSXRlcmF0b3Im
IG9wZXJhdG9yKysoKTsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImKSBjb25z
dDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImKSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICB2b2lkIHNldChQb3NpdGlvbkluQ29udGV4dFJvb3QgdmVydGljYWxQb3NpdGlvbik7
CkBAIC03MzAsMTEgKzcyOSw2IEBAIGJvb2wgSXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgSXRl
cmF0b3ImIG90aGVyKSBjb25zdAogICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJy
ZW50OwogfQogCi1ib29sIEl0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhl
cikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0KIH0KIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94LmgKaW5kZXggNTI5YTIxOGU1MmQ1MTA4
MTJkOGVlOTdlNWNmMWEzYjQ4NGMwNTEwNC4uNGM0NzUyMzY2YjFkNDlhMjZiNmIyZTc0OWE0ZGNi
MjZmMTRiZTdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKICAgICAvLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1pbmxp
bmUtMy8jbGF5b3V0LWJvdW5kcwogICAgIHN0cnVjdCBMYXlvdXRCb3VuZHMgewogICAgICAgICBJ
bmxpbmVMYXlvdXRVbml0IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGFzY2VudCArIGRlc2NlbnQ7
IH0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExheW91dEJvdW5kcyYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIGFzY2VudCA9PSBvdGhlci5hc2NlbnQgJiYgZGVzY2VudCA9PSBvdGhlci5k
ZXNjZW50OyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMYXlvdXRCb3VuZHMmKSBj
b25zdCA9IGRlZmF1bHQ7CiAKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQgeyAwIH07
CiAgICAgICAgIElubGluZUxheW91dFVuaXQgZGVzY2VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveC5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKaW5kZXgg
ODEzZjViMGU2NTkwMzQxM2ZmNDYyZTQ5ZTFmODkzNzgxODYzNmM3ZS4uMTgwZjYwYjk2ZTRiMmQ5
YWEyZDM0NTZlNWMyYWEwNDJjNWM4YWM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94LmgKQEAgLTExOSwxMCArMTE5LDcg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAh
YXRFbmQoKTsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJveEl0ZXJhdG9yJikgY29u
c3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLQogICAgIGJvb2wgb3BlcmF0b3I9PShFbmRJ
dGVyYXRvcikgY29uc3QgeyByZXR1cm4gYXRFbmQoKTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShF
bmRJdGVyYXRvcikgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KIAogICAgIGNvbnN0IEJveCYg
b3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9ib3g7IH0KICAgICBjb25zdCBCb3gqIG9wZXJh
dG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV9ib3g7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveExlZ2FjeVBhdGguaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckJveExlZ2FjeVBh
dGguaAppbmRleCBiNTlhYjgwZThjYzEyNGQwOTVhNWIxMTNhMTljNTc2ZmMxZWJhODU1Li5mMjgy
ZGRlMDgxZDRmZTkwNWE5MDFhZTFlMWU1ZjY4NzZhMzcwYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hMZWdhY3lQYXRoLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94
TGVnYWN5UGF0aC5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
eyBpbmxpbmVGbG93Qm94KCktPmxhc3RMZWFmRGVzY2VuZGFudCgpIH07CiAgICAgfQogCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEJveExlZ2FjeVBhdGgmIG90aGVyKSBjb25zdCB7IHJldHVy
biBtX2lubGluZUJveCA9PSBvdGhlci5tX2lubGluZUJveDsgfQorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBCb3hMZWdhY3lQYXRoJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBhdEVu
ZCgpIGNvbnN0IHsgcmV0dXJuICFtX2lubGluZUJveDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hNb2Rlcm5QYXRoLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JCb3hNb2Rl
cm5QYXRoLmgKaW5kZXggMjUyYWFiOGYzNDQxMTg3NGUzMWZjMjcyMzQ4NDc0ZDdkYTRlNzI5Zi4u
NmE0OTRhNGExNDU2NGViMzBiNGNiMTQ2NGQxMzcxYWI3M2Y4NzViYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yQm94TW9kZXJuUGF0
aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRv
ckJveE1vZGVyblBhdGguaApAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGxhc3Q7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJveE1vZGVyblBh
dGgmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxp
bmVDb250ZW50ICYmIG1fYm94SW5kZXggPT0gb3RoZXIubV9ib3hJbmRleDsgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBCb3hNb2Rlcm5QYXRoJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAg
Ym9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fYm94SW5kZXggPT0gYm94ZXMoKS5zaXplKCk7
IH0KICAgICBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3gmIGJveCgpIGNvbnN0IHsgcmV0dXJuIGJv
eGVzKClbbV9ib3hJbmRleF07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmUuaAppbmRleCA4YThmMDcwZjM0ZjQ4ZTU1NTBk
MTExNDY4YTliNmVlYmY4YjRmN2Q1Li5lNjgxYzliNGQ4M2FhMjU3MDcyZTFjYzllZjM0ZDhiYmI1
NTFkNDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5s
aW5lSXRlcmF0b3JMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0lubGluZUl0ZXJhdG9yTGluZS5oCkBAIC0xMTMsMTAgKzExMyw3IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KIAogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBMaW5lSXRlcmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgTGluZUl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KLQogICAgIGJvb2wgb3BlcmF0b3I9PShFbmRMaW5lSXRlcmF0b3IpIGNv
bnN0IHsgcmV0dXJuIGF0RW5kKCk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oRW5kTGluZUl0ZXJh
dG9yKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQogCiAgICAgY29uc3QgTGluZSYgb3BlcmF0
b3IqKCkgY29uc3QgeyByZXR1cm4gbV9saW5lOyB9CiAgICAgY29uc3QgTGluZSogb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuICZtX2xpbmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTGVnYWN5UGF0
aC5oCmluZGV4IDA3ZGRhOWU5ZTdmNGFjZDEzMDMzMzQ2MDg2YWNhMzc1MTM5MjU1M2UuLjg2NDI2
YjkyY2EyYmRlZGFjYmQwODU0NTM0OTU1NGE2YTMxYmY0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9JbmxpbmVJdGVyYXRvckxpbmVMZWdhY3lQYXRoLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGlu
ZUxlZ2FjeVBhdGguaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcm9vdElu
bGluZUJveCA9IG1fcm9vdElubGluZUJveC0+cHJldlJvb3RCb3goKTsKICAgICB9CiAKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdElubGluZUJveCA9PSBvdGhlci5tX3Jvb3RJbmxpbmVCb3g7IH0KKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCYpIGNvbnN0ID0g
ZGVmYXVsdDsKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiAhbV9yb290SW5saW5l
Qm94OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9J
bmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vSW5saW5lSXRlcmF0b3JMaW5lTW9kZXJuUGF0aC5oCmluZGV4IGUxNzgzZTU3Mzll
NzVkOTJmYzU0N2UzODhkNzhmMDBhMjgwMjlkOGUuLmYzMzNlMjJkMGU3YjhkODQwYTU5NDI5NDEw
YTVmM2Y2ZDNkNjdmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9JbmxpbmVJdGVyYXRvckxpbmVNb2Rlcm5QYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0lubGluZUl0ZXJhdG9yTGluZU1vZGVyblBhdGguaApAQCAtOTEs
NyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIC0tbV9saW5lSW5kZXg7CiAgICAgfQogCi0gICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IExpbmVJdGVyYXRvck1vZGVyblBhdGgmIG90aGVyKSBjb25z
dCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQgPT0gb3RoZXIubV9pbmxpbmVDb250ZW50ICYmIG1f
bGluZUluZGV4ID09IG90aGVyLm1fbGluZUluZGV4OyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IExpbmVJdGVyYXRvck1vZGVyblBhdGgmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBib29s
IGF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5kZXggPT0gbGluZXMoKS5zaXplKCk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29u
dGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0Q29udGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvci5oCmluZGV4IGQ0YWNkMmVj
OGVjOTU2ZDI5MGRiMjEyYWRlNzcyMmQwMmU2MzQwOTIuLjhiOTA1MDBkYzg2NTE0ZWI1MTBmNTk5
MDA0YzdkZjNjYTA5MWQwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJh
dG9yLmgKQEAgLTQwLDggKzQwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IENvbnRhaW5lckJveCog
b3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudDsgfQogCiAgICAgTGF5b3V0Q29u
dGFpbmluZ0Jsb2NrQ2hhaW5JdGVyYXRvciYgb3BlcmF0b3IrKygpOwotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV9jdXJyZW50ID09IG90aGVyLm1fY3VycmVudDsgfQotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBMYXlvdXRDb250YWluaW5nQmxvY2tDaGFpbkl0ZXJhdG9yJiBvdGhlcikg
Y29uc3QgeyAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IExheW91dENvbnRhaW5pbmdCbG9ja0NoYWluSXRlcmF0b3ImKSBjb25zdCA9IGRlZmF1
bHQ7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyQm94KiBtX2N1cnJlbnQgeyBudWxs
cHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXREZXNjZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dERlc2NlbmRhbnRJdGVyYXRvci5oCmluZGV4IGVlOGY2MTI4MjFiMDRlMTgzZjMyY2Uy
ZTg1MWJlNjU3MmUxZjFkYWYuLjM2YjRlZTVmMjkzMTg0NWY2YzQyNDcxNTI2N2QwZmViZDYzM2Q4
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dERl
c2NlbmRhbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dERlc2NlbmRhbnRJdGVyYXRvci5oCkBAIC0xMTAsNCArMTEwLDUgQEAgaW5saW5lIExh
eW91dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8VD4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3Qg
Q29udGFpbmVyQm94JgogCiB9CiB9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEl0ZXJhdG9yLmgKaW5kZXggNjFjMGQ2MWQ2ZjE4M2U2ZDI2
Y2NlNjFhNjRkZTBjZjNhNmIyMzgyMC4uYjZlNWI0MmIyYjRlNTlmMzEyM2ZkMTUzYmYwZmE5Y2Uw
YTEzMWMzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRJdGVyYXRvci5oCkBAIC0yOSw4ICsyOSw3IEBACiAKICNpbmNsdWRlICJMYXlvdXRJbml0aWFs
Q29udGFpbmluZ0Jsb2NrLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBMYXlv
dXQgeworbmFtZXNwYWNlIFdlYkNvcmU6OkxheW91dCB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgogY2xhc3MgTGF5b3V0SXRlcmF0b3IgewpAQCAtNDIsNyArNDEsNiBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgVCogb3BlcmF0b3ItPigpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IExheW91dEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IExheW91dEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7CiAKICAgICBMYXlvdXRJdGVyYXRvciYgdHJh
dmVyc2VOZXh0KCk7CiAgICAgTGF5b3V0SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFNpYmxpbmcoKTsK
QEAgLTE5MiwxNCArMTkwLDYgQEAgaW5saW5lIGJvb2wgTGF5b3V0SXRlcmF0b3I8VD46Om9wZXJh
dG9yPT0oY29uc3QgTGF5b3V0SXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgIHJldHVybiBtX2N1
cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlu
bGluZSBib29sIExheW91dEl0ZXJhdG9yPFQ+OjpvcGVyYXRvciE9KGNvbnN0IExheW91dEl0ZXJh
dG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0K
LX0KIH0KLSNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5lci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BvbGljeUNvbnRhaW5lci5oCmluZGV4IDQzMWNmMWM1YjJiZDFmOTAzZDE2
YmVhZjc3MTIwZDcxYTYxMDU5Y2QuLjJjMjUxYzA3ZTZhODY5ZWNiYTQ1Yzk3N2E5Yjc2MDY2Mjg1
M2E4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDb250YWluZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q29udGFpbmVyLmgKQEAgLTM2LDE2
ICszNiwxMiBAQCBzdHJ1Y3QgUG9saWN5Q29udGFpbmVyIHsKICAgICBDcm9zc09yaWdpbk9wZW5l
clBvbGljeSBjcm9zc09yaWdpbk9wZW5lclBvbGljeTsKICAgICAvLyBGSVhNRTogQ1NQIGxpc3Qg
YW5kIHJlZmVycmVyIHBvbGljeSBzaG91bGQgYmUgcGFydCBvZiB0aGUgUG9saWN5Q29udGFpbmVy
LgogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBvbGljeUNvbnRhaW5lciYpIGNvbnN0ID0g
ZGVmYXVsdDsKICAgICBQb2xpY3lDb250YWluZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBvbGljeUNvbnRh
aW5lcj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgUG9saWN5Q29udGFpbmVyJiBhLCBjb25zdCBQb2xpY3lDb250YWluZXImIGIpCi17Ci0gICAg
cmV0dXJuIGEuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSA9PSBiLmNyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3kgJiYgYS5jcm9zc09yaWdpbk9wZW5lclBvbGljeSA9PSBiLmNyb3NzT3JpZ2luT3Bl
bmVyUG9saWN5OwotfQotCiBpbmxpbmUgUG9saWN5Q29udGFpbmVyIFBvbGljeUNvbnRhaW5lcjo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAppbmRleCAzODFmNjI3YWM2MzRjNzI5
NWIwOWEzZmUyMDk3YzQxNjZkZDcxZWYxLi5hNzkzNzQ0ZWJhOTIzMjNjOTc5MzEzYTlmNTZkMTky
NzMwOGQwN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQuaApAQCAtNzksMTUgKzc5LDcgQEAgcHVibGljOgogCiAgICAgICAgIFNvdXJjZVNp
dGUgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU291cmNlU2l0ZSB7IHJlZ2lzdHJhYmxl
RG9tYWluLmlzb2xhdGVkQ29weSgpIH07IH0KIAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgU291cmNlU2l0ZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biByZWdpc3RyYWJsZURvbWFpbiA9PSBvdGhlci5yZWdpc3RyYWJsZURvbWFpbjsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTb3VyY2VTaXRlJiBvdGhlcikgY29u
c3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhYmxlRG9tYWluICE9IG90
aGVyLnJlZ2lzdHJhYmxlRG9tYWluOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTb3VyY2VTaXRlJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIGJvb2wgbWF0
Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICAgICAgewpAQCAtMTI1LDE1ICsxMTcsNyBA
QCBwdWJsaWM6CiAKICAgICAgICAgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgaXNvbGF0ZWRD
b3B5KCkgY29uc3QgeyByZXR1cm4gQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyByZWdpc3Ry
YWJsZURvbWFpbi5pc29sYXRlZENvcHkoKSB9OyB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBvdGhlcikgY29uc3QKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIHJlZ2lzdHJhYmxlRG9tYWluID09IG90aGVyLnJlZ2lzdHJh
YmxlRG9tYWluOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF0
dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHJlZ2lzdHJhYmxlRG9tYWluICE9IG90aGVyLnJlZ2lzdHJhYmxlRG9tYWlu
OwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uU2l0ZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgICAgICBib29sIG1hdGNoZXMo
Y29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAppbmRleCA4M2I4NjEzY2ZkYTIz
MjlhZTMwYmJmNmFiYzE0Yjk5ZDQ0MjM3YjAyLi5iMzg0YTJiZWJjMTg4MjM2N2QyNTY1MGUzNGE4
NGVkZTYxNzA0NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCkBAIC00OSwxNSArNDksNyBAQCBzdHJ1Y3QgUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0IHsKICAgICBBbGdvcml0aG0gYWxnb3JpdGhtOwogICAgIFZlY3Rv
cjx1aW50OF90PiB2YWx1ZTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGFs
Z29yaXRobSA9PSBvdGhlci5hbGdvcml0aG0gJiYgdmFsdWUgPT0gb3RoZXIudmFsdWU7Ci0gICAg
fQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QmKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCiBzdHJ1Y3QgRW5jb2RlZFJlc291cmNlQ3J5
cHRvZ3JhcGhpY0RpZ2VzdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUhhbmRsZS5oCmluZGV4IGZlMGM1ZWUxZDA5YTI1ZjNkNThkNDgyOWE4ZmZj
YjY2ZGQ4YmU4OTYuLjIwZmYwNzM1ZTg0MDg3NjlmZTRiYzQxMDc0NDQyZGIzYjk5NDQ3N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oCkBAIC03NSw3ICs3NSw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDYWNoZWRSZXNvdXJjZUhhbmRsZSYgbykgY29uc3QgeyByZXR1cm4gb3BlcmF0b3I9PShzdGF0
aWNfY2FzdDxjb25zdCBDYWNoZWRSZXNvdXJjZUhhbmRsZUJhc2UmPihvKSk7IH0KICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlJiBvKSBjb25zdCB7IHJl
dHVybiBnZXQoKSA9PSBvLmdldCgpOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENhY2hl
ZFJlc291cmNlSGFuZGxlQmFzZSYgbykgY29uc3QgeyByZXR1cm4gZ2V0KCkgIT0gby5nZXQoKTsg
fQogfTsKIAogdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFJSPiBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Uj4mIGgsIGNvbnN0IFJSKiByZXMpIApAQCAtODYsMTMg
Kzg1LDUgQEAgdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFJSPiBib29sIG9wZXJhdG9yPT0oY29u
c3QgUlIqIHJlcywgY29uc3QgQ2FjaGVkUmVzb3VyY2UKIHsgCiAgICAgcmV0dXJuIGguZ2V0KCkg
PT0gcmVzOyAKIH0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBSUj4gYm9vbCBvcGVyYXRvciE9
KGNvbnN0IENhY2hlZFJlc291cmNlSGFuZGxlPFI+JiBoLCBjb25zdCBSUiogcmVzKSAKLXsgCi0g
ICAgcmV0dXJuIGguZ2V0KCkgIT0gcmVzOyAKLX0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBS
Uj4gYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJSKiByZXMsIGNvbnN0IENhY2hlZFJlc291cmNlSGFu
ZGxlPFI+JiBoKSAKLXsgCi0gICAgcmV0dXJuIGguZ2V0KCkgIT0gcmVzOyAKLX0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRP
cmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKaW5kZXggZDc3M2Q5
YjMxMmIzNmE5NTYwZGNmNDRkNTE4YjExY2JjMGFkY2FmYi4uN2NhMGZmY2Q3YTc0MmEyZjUzNzE2
YTcxY2RjMjk3OGJhNmQ0ZWVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DbGll
bnRPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCkBAIC0z
Niw3ICszNiw3IEBAIHN0cnVjdCBDbGllbnRPcmlnaW4gewogICAgIHN0YXRpYyBDbGllbnRPcmln
aW4gZW1wdHlLZXkoKSB7IHJldHVybiB7IH07IH0KIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dDsKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xpZW50T3JpZ2luJikgY29uc3Q7CisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENsaWVudE9yaWdpbiYpIGNvbnN0ID0gZGVmYXVsdDsKIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDbGllbnRP
cmlnaW4+IGRlY29kZShEZWNvZGVyJik7CkBAIC01OSwxMSArNTksNiBAQCBpbmxpbmUgdW5zaWdu
ZWQgQ2xpZW50T3JpZ2luOjpoYXNoKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpo
YXNoTWVtb3J5KGhhc2hlcywgc2l6ZW9mKGhhc2hlcykpOwogfQogCi1pbmxpbmUgYm9vbCBDbGll
bnRPcmlnaW46Om9wZXJhdG9yPT0oY29uc3QgQ2xpZW50T3JpZ2luJiBvdGhlcikgY29uc3QKLXsK
LSAgICByZXR1cm4gdG9wT3JpZ2luID09IG90aGVyLnRvcE9yaWdpbiAmJiBjbGllbnRPcmlnaW4g
PT0gb3RoZXIuY2xpZW50T3JpZ2luOwotfQotCiBpbmxpbmUgQ2xpZW50T3JpZ2luIENsaWVudE9y
aWdpbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4geyB0b3BPcmlnaW4uaXNv
bGF0ZWRDb3B5KCksIGNsaWVudE9yaWdpbi5pc29sYXRlZENvcHkoKSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKaW5kZXggNjAyZDYwYzljOTcwNTVmNjQ4Y2E0OGZmZmJmOWM0MmI1YzE2ZjkzMy4u
ODc0YzQ3YTJjZjhiYzRhYzJhZWY5YzFiZjM2MjhmY2QzYTA2YTUyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCkBAIC04NjMsNyArODYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc3RkOjpvcHRp
b25hbDxmbG9hdD4gd2lkdGg7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IGhlaWdodDsK
IAotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3ZlcnJpZGVWaWV3cG9ydFNpemUmIHJo
cykgY29uc3QgeyByZXR1cm4gcmhzLndpZHRoID09IHdpZHRoICYmIHJocy5oZWlnaHQgPT0gaGVp
Z2h0OyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPdmVycmlkZVZpZXdwb3J0U2l6
ZSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9OwogICAgIEZsb2F0U2l6ZSBjYWxjdWxhdGVTaXpl
Rm9yQ1NTVmlld3BvcnRVbml0c092ZXJyaWRlKHN0ZDo6b3B0aW9uYWw8T3ZlcnJpZGVWaWV3cG9y
dFNpemU+KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxX
aW5kb3dJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50
aWZpZXIuaAppbmRleCBjMDQ2N2Q3YzdkYzA4YTZiYjZiYmM5MGZhOTQyNzQ5OGJhNmNiYzQyLi43
MzE1MjFiMzY4NDAzMmNmYmM5Y2VjMmJjZDJjOGY0N2E0ZGVlZWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0dsb2JhbFdpbmRvd0lkZW50aWZpZXIuaApAQCAtMzksMTcgKzM5LDE0IEBAIHN0
cnVjdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyIHsKICAgICBQcm9jZXNzSWRlbnRpZmllciBwcm9j
ZXNzSWRlbnRpZmllcjsKICAgICBXaW5kb3dJZGVudGlmaWVyIHdpbmRvd0lkZW50aWZpZXI7CiAK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR2xvYmFsV2luZG93SWRlbnRpZmllciYpIGNvbnN0
ID0gZGVmYXVsdDsKKwogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAogICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxHbG9iYWxXaW5kb3dJZGVudGlm
aWVyPiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyJiBhLCBjb25zdCBHbG9iYWxXaW5kb3dJZGVudGlmaWVy
JiBiKQotewotICAgIHJldHVybiBhLnByb2Nlc3NJZGVudGlmaWVyID09IGIucHJvY2Vzc0lkZW50
aWZpZXIgJiYgIGEud2luZG93SWRlbnRpZmllciA9PSBiLndpbmRvd0lkZW50aWZpZXI7Ci19Ci0K
IGlubGluZSB1bnNpZ25lZCBHbG9iYWxXaW5kb3dJZGVudGlmaWVyOjpoYXNoKCkgY29uc3QKIHsK
ICAgICB1aW50NjRfdCBpZGVudGlmaWVyc1syXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvT3JpZ2luQWNjZXNzRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2luQWNj
ZXNzRW50cnkuaAppbmRleCBmNTVmN2Q5MzhjNzA5Y2YxMDZmYWRlZDQxZTBkZDFmNGQwZmU3YmFh
Li5lNDM1NDI1NjgzZGJlOTdlN2QzOWQ5ZjA2YThhMWI5OTA2YTVhZjhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5oCkBAIC03Myw5ICs3Myw0IEBAIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgT3JpZ2luQWNjZXNzRW50cnkmIGEsIGNvbnN0IE9yaWdpbkFjY2Vz
c0VudHJ5JiBiKQogICAgICAgICAmJiBhLmlwQWRkcmVzc1NldHRpbmdzKCkgPT0gYi5pcEFkZHJl
c3NTZXR0aW5ncygpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE9yaWdpbkFj
Y2Vzc0VudHJ5JiBhLCBjb25zdCBPcmlnaW5BY2Nlc3NFbnRyeSYgYikKLXsKLSAgICByZXR1cm4g
IShhID09IGIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5kZXggZTQ5Y2RjZDM2MmFlN2RhYjVkY2EzMTg2
MmJhOTVlOGZiN2U3ZWY5ZS4uOTYwMjg4MWQwYmRmODRhZDI2ZDE0ZGU3NTRhYTAyNjM0NzhhMWQ0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtMTM3
LDE0ICsxMzcsNCBAQCBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjppc29s
YXRlZENvcHkoKSAmJgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgb3BlcmF0b3I9PShj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGEsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgYikK
LXsKLSAgICBpZiAoJmEgPT0gJmIpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJu
IGEucHJvdG9jb2wgPT0gYi5wcm90b2NvbAotICAgICAgICAmJiBhLmhvc3QgPT0gYi5ob3N0Ci0g
ICAgICAgICYmIGEucG9ydCA9PSBiLnBvcnQ7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5oCmluZGV4IGZkZmM4NjQzZWFk
ZjA0NjgwMWExZWU4MDk2YzE1ZTU3M2ZiMzZhNDUuLmFhODNiOGE1YjU0ZDBjODQxOTBiMjNiZTlj
YWM2NDRmMGYxYTYwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
aApAQCAtNzksMTIgKzc5LDE0IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGEgewogICAgIHsK
ICAgICAgICAgcmV0dXJuIHByb3RvY29sLmlzTnVsbCgpICYmIGhvc3QuaXNOdWxsKCkgJiYgcG9y
dCA9PSBzdGQ6Om51bGxvcHQ7CiAgICAgfQotICAgIAorCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0ID0gZGVmYXVsdDsKKwogICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIHByb3Rv
Y29sLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CiAgICAgfQotICAgIAorCiAgICAgV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKICNpZiAhTE9HX0RJU0FCTEVECkBA
IC05Miw5ICs5NCw2IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGEgewogI2VuZGlmCiB9Owog
Ci1XRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZmlyc3QsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
c2Vjb25kKSB7IHJldHVybiAhKGZpcnN0ID09IHNlY29uZCk7IH0KLQogdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgU2VjdXJpdHlPcmlnaW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25m
aWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5o
CmluZGV4IDE0NjM2MmM1MmFkMGRjMzFmODU4OGRkNGQzZTdhMzk4MWJkNTVjMjcuLmNlMDM0NTIw
NTRhYTU3NzEzZTUzZWZkMGQyNWQxNzQ2OGRhNDdhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaApAQCAtNTcsMTMgKzU3LDcgQEAgcHVibGljOgogICAg
ICAgICBib29sIGhlaWdodElzU2V0IHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBpbml0aWFsU2Nh
bGVJc1NldCB7IGZhbHNlIH07CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhcmFt
ZXRlcnMmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gd2lkdGgg
PT0gb3RoZXIud2lkdGggJiYgaGVpZ2h0ID09IG90aGVyLmhlaWdodAotICAgICAgICAgICAgICAg
ICYmIGluaXRpYWxTY2FsZSA9PSBvdGhlci5pbml0aWFsU2NhbGUgJiYgaW5pdGlhbFNjYWxlSWdu
b3JpbmdMYXlvdXRTY2FsZUZhY3RvciA9PSBvdGhlci5pbml0aWFsU2NhbGVJZ25vcmluZ0xheW91
dFNjYWxlRmFjdG9yICYmIG1pbmltdW1TY2FsZSA9PSBvdGhlci5taW5pbXVtU2NhbGUgJiYgbWF4
aW11bVNjYWxlID09IG90aGVyLm1heGltdW1TY2FsZQotICAgICAgICAgICAgICAgICYmIGFsbG93
c1VzZXJTY2FsaW5nID09IG90aGVyLmFsbG93c1VzZXJTY2FsaW5nICYmIGFsbG93c1Nocmlua1Rv
Rml0ID09IG90aGVyLmFsbG93c1Nocmlua1RvRml0ICYmIGF2b2lkc1Vuc2FmZUFyZWEgPT0gb3Ro
ZXIuYXZvaWRzVW5zYWZlQXJlYQotICAgICAgICAgICAgICAgICYmIHdpZHRoSXNTZXQgPT0gb3Ro
ZXIud2lkdGhJc1NldCAmJiBoZWlnaHRJc1NldCA9PSBvdGhlci5oZWlnaHRJc1NldCAmJiBpbml0
aWFsU2NhbGVJc1NldCA9PSBvdGhlci5pbml0aWFsU2NhbGVJc1NldDsKLSAgICAgICAgfQorICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGFyYW1ldGVycyYpIGNvbnN0ID0gZGVmYXVsdDsK
ICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVmlld3BvcnRDb25maWd1cmF0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApp
bmRleCAyMTAwNzY4NDQ2YmQzODU0YjQwYjY0NTBmMjBiZTVhZTI1M2RjOGE4Li5iY2FlNTk5OGI1
NTkxYTU3NTFmMzVhM2FiNDhkMWYyMmUwZjFjMjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTg0MCw3ICs4NDAsNyBAQCB2
b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0VmlvbGF0aW9uKGNvbnN0IFN0cmluZyYg
ZWZmZWN0aXZlVmlvbGF0ZWREaXJlYwogICAgICAgICBtX2NsaWVudC0+ZW5xdWV1ZVNlY3VyaXR5
UG9saWN5VmlvbGF0aW9uRXZlbnQoV1RGTW92ZSh2aW9sYXRpb25FdmVudEluaXQpKTsKICAgICBl
bHNlIHsKICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oKm1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmRv
Y3VtZW50KCkgPT0gZG9jdW1lbnQpCisgICAgICAgIGlmIChlbGVtZW50ICYmICZlbGVtZW50LT5k
b2N1bWVudCgpID09ICZkb2N1bWVudCkKICAgICAgICAgICAgIGVsZW1lbnQtPmVucXVldWVTZWN1
cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50KFdURk1vdmUodmlvbGF0aW9uRXZlbnRJbml0KSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGRvY3VtZW50LmVucXVldWVTZWN1cml0eVBvbGljeVZp
b2xhdGlvbkV2ZW50KFdURk1vdmUodmlvbGF0aW9uRXZlbnRJbml0KSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCmluZGV4
IDdhOTRiYTg0YjhhYWM1MzFhYzRhZDk0MzZhMmQ4MGJiZGIzMGE1ZDguLjYyNWI3MjNmMDZlM2Q3
NDczZTFmZTg0ZjNjMzFjNzQwNWVjMmI4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oCkBAIC0zOSwxMiArMzksMTMg
QEAgY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBSZW5kZXJT
dHlsZTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgU25hcE9mZnNldCB7Ci0gICAg
VCBvZmZzZXQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBVbml0VHlwZT4gc3RydWN0IFNuYXBPZmZzZXQg
eworICAgIFVuaXRUeXBlIG9mZnNldDsKICAgICBTY3JvbGxTbmFwU3RvcCBzdG9wOwogICAgIGJv
b2wgaGFzU25hcEFyZWFMYXJnZXJUaGFuVmlld3BvcnQ7CiAgICAgVmVjdG9yPHNpemVfdD4gc25h
cEFyZWFJbmRpY2VzOworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNuYXBPZmZzZXQmKSBj
b25zdCA9IGRlZmF1bHQ7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVW5pdFR5cGUsIHR5cGVu
YW1lIFJlY3RUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29uc3RyYWludHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0NvbnN0cmFpbnRzLmgKaW5kZXggZTM0OWI4MGEyMDUwYmU0ZTNlZWY3MmFhZDJjOWE2
N2YzNzYzNTY4Zi4uZTQzNzFjZDY4ZGVjYmExMDNmYWJlMzI0NGYzNGQyNzFjYzk3YWE4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWlu
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJh
aW50cy5oCkBAIC0zNSwxMyArMzUsNyBAQCBjbGFzcyBBYnNvbHV0ZVBvc2l0aW9uQ29uc3RyYWlu
dHMgewogcHVibGljOgogICAgIEFic29sdXRlUG9zaXRpb25Db25zdHJhaW50cygpID0gZGVmYXVs
dDsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBYnNvbHV0ZVBvc2l0aW9uQ29uc3RyYWlu
dHMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGFsaWdubWVudE9mZnNldCgp
ID09IG90aGVyLmFsaWdubWVudE9mZnNldCgpCi0gICAgICAgICAgICAmJiBsYXllclBvc2l0aW9u
QXRMYXN0TGF5b3V0KCkgPT0gb3RoZXIubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpOwotICAg
IH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBYnNvbHV0ZVBvc2l0aW9uQ29uc3RyYWlu
dHMmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBBYnNvbHV0ZVBvc2l0aW9uQ29uc3RyYWludHMmKSBjb25zdCA9IGRl
ZmF1bHQ7CiAgICAgCiAgICAgRmxvYXRTaXplIGFsaWdubWVudE9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fYWxpZ25tZW50T2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRBbGlnbm1lbnRPZmZzZXQoRmxv
YXRTaXplIG9mZnNldCkgeyBtX2FsaWdubWVudE9mZnNldCA9IG9mZnNldDsgfQpAQCAtODQsNiAr
NzgsOCBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXplIGFsaWdubWVudE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fYWxpZ25tZW50T2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRBbGlnbm1lbnRPZmZzZXQo
RmxvYXRTaXplIG9mZnNldCkgeyBtX2FsaWdubWVudE9mZnNldCA9IG9mZnNldDsgfQogCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFZpZXdwb3J0Q29uc3RyYWludHMmKSBjb25zdCA9IGRlZmF1
bHQ7CisKIHByb3RlY3RlZDoKICAgICBWaWV3cG9ydENvbnN0cmFpbnRzKCkKICAgICAgICAgOiBt
X2FuY2hvckVkZ2VzKDApCkBAIC0xMDcsMTUgKzEwMyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBG
bG9hdFBvaW50JiBsYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9s
YXllclBvc2l0aW9uQXRMYXN0TGF5b3V0OyB9CiAgICAgdm9pZCBzZXRMYXllclBvc2l0aW9uQXRM
YXN0TGF5b3V0KEZsb2F0UG9pbnQgcG9zaXRpb24pIHsgbV9sYXllclBvc2l0aW9uQXRMYXN0TGF5
b3V0ID0gcG9zaXRpb247IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaXhlZFBvc2l0
aW9uVmlld3BvcnRDb25zdHJhaW50cyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9hbGlnbm1lbnRPZmZzZXQgPT0gb3RoZXIubV9hbGlnbm1lbnRPZmZzZXQKLSAgICAgICAg
ICAgICYmIG1fYW5jaG9yRWRnZXMgPT0gb3RoZXIubV9hbmNob3JFZGdlcwotICAgICAgICAgICAg
JiYgbV92aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQgPT0gb3RoZXIubV92aWV3cG9ydFJlY3RBdExh
c3RMYXlvdXQKLSAgICAgICAgICAgICYmIG1fbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCA9PSBv
dGhlci5tX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQ7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMmKSBjb25zdCA9IGRlZmF1bHQ7CiAK
IHByaXZhdGU6CiAgICAgQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBGaXhlZFBvc2l0aW9uQ29uc3RyYWludDsgfTsKQEAgLTE4MCw4ICsxNjgs
NiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAmJiBtX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQg
PT0gb3RoZXIubV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0OwogICAgIH0KIAotICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMmIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQotCiBwcml2YXRlOgogICAgIENv
bnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3Rp
Y2t5UG9zaXRpb25Db25zdHJhaW50OyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmgKaW5kZXggODUxOTA1
YWFkNjRiMzJmZDY4N2FjMzIyNDJlOTBjZmUwNDVjYWM2MC4uYWJkNDkwMmFiNWFkMmM3ZmQ0NDcx
YzE3MjM4NTAxY2EyNjY2YTg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaApAQCAtODgsMjAgKzg4LDcg
QEAgc3RydWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVycyB7CiAKICAgICBib29sIHVzZURhcmtB
cHBlYXJhbmNlRm9yU2Nyb2xsYmFycyB7IGZhbHNlIH07CiAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSA9PSBvdGhlci5ob3Jpem9udGFs
U2Nyb2xsRWxhc3RpY2l0eQotICAgICAgICAgICAgJiYgdmVydGljYWxTY3JvbGxFbGFzdGljaXR5
ID09IG90aGVyLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eQotICAgICAgICAgICAgJiYgaG9yaXpv
bnRhbFNjcm9sbGJhck1vZGUgPT0gb3RoZXIuaG9yaXpvbnRhbFNjcm9sbGJhck1vZGUKLSAgICAg
ICAgICAgICYmIHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSA9PSBvdGhlci52ZXJ0aWNhbFNjcm9sbGJh
ck1vZGUKLSAgICAgICAgICAgICYmIGhvcml6b250YWxPdmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3Ro
ZXIuaG9yaXpvbnRhbE92ZXJzY3JvbGxCZWhhdmlvcgotICAgICAgICAgICAgJiYgdmVydGljYWxP
dmVyc2Nyb2xsQmVoYXZpb3IgPT0gb3RoZXIudmVydGljYWxPdmVyc2Nyb2xsQmVoYXZpb3IKLSAg
ICAgICAgICAgICYmIGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcgPT0gb3RoZXIuYWxsb3dzSG9y
aXpvbnRhbFNjcm9sbGluZwotICAgICAgICAgICAgJiYgYWxsb3dzVmVydGljYWxTY3JvbGxpbmcg
PT0gb3RoZXIuYWxsb3dzVmVydGljYWxTY3JvbGxpbmcKLSAgICAgICAgICAgICYmIGhvcml6b250
YWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlID09IG90aGVyLmhvcml6b250YWxTY3JvbGxiYXJIaWRk
ZW5CeVN0eWxlCi0gICAgICAgICAgICAmJiB2ZXJ0aWNhbFNjcm9sbGJhckhpZGRlbkJ5U3R5bGUg
PT0gb3RoZXIudmVydGljYWxTY3JvbGxiYXJIaWRkZW5CeVN0eWxlCi0gICAgICAgICAgICAmJiB1
c2VEYXJrQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMgPT0gb3RoZXIudXNlRGFya0FwcGVhcmFuY2VG
b3JTY3JvbGxiYXJzOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2Nyb2xsYWJs
ZUFyZWFQYXJhbWV0ZXJzJikgY29uc3QgPSBkZWZhdWx0OwogfTsKIAogZW51bSBjbGFzcyBWaWV3
cG9ydFJlY3RTdGFiaWxpdHkgewpAQCAtMTIyLDE0ICsxMDksNyBAQCBzdHJ1Y3QgUmVxdWVzdGVk
U2Nyb2xsRGF0YSB7CiAgICAgU2Nyb2xsQ2xhbXBpbmcgY2xhbXBpbmcgeyBTY3JvbGxDbGFtcGlu
Zzo6Q2xhbXBlZCB9OwogICAgIFNjcm9sbElzQW5pbWF0ZWQgYW5pbWF0ZWQgeyBTY3JvbGxJc0Fu
aW1hdGVkOjpObyB9OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlcXVlc3RlZFNjcm9s
bERhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlcXVlc3RUeXBlID09
IG90aGVyLnJlcXVlc3RUeXBlCi0gICAgICAgICAgICAmJiBzY3JvbGxQb3NpdGlvbiA9PSBvdGhl
ci5zY3JvbGxQb3NpdGlvbgotICAgICAgICAgICAgJiYgc2Nyb2xsVHlwZSA9PSBvdGhlci5zY3Jv
bGxUeXBlCi0gICAgICAgICAgICAmJiBjbGFtcGluZyA9PSBvdGhlci5jbGFtcGluZwotICAgICAg
ICAgICAgJiYgYW5pbWF0ZWQgPT0gb3RoZXIuYW5pbWF0ZWQ7Ci0gICAgfQorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBSZXF1ZXN0ZWRTY3JvbGxEYXRhJikgY29uc3QgPSBkZWZhdWx0OwogfTsK
IAogZW51bSBjbGFzcyBTY3JvbGxVcGRhdGVUeXBlIDogdWludDhfdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RlY2ltYWwuY3BwCmluZGV4IDllYzAxNzJhMjFhOThkYzgwN2E0YzE2Nzc1N2U3MzVhYmUy
MzU4NDguLjgxMTVlMjA4M2E1MTY4MTc4NTY0YjY3MmJhYTE4MjE1NjljZDk4NGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwCkBAIC0yNzAsMTQgKzI3MCw2IEBAIERlY2ltYWw6OkVu
Y29kZWREYXRhOjpFbmNvZGVkRGF0YShTaWduIHNpZ24sIGludCBleHBvbmVudCwgdWludDY0X3Qg
Y29lZmZpY2llbnQpCiAgICAgbV9leHBvbmVudCA9IHN0YXRpY19jYXN0PGludDE2X3Q+KGV4cG9u
ZW50KTsKIH0KIAotYm9vbCBEZWNpbWFsOjpFbmNvZGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBF
bmNvZGVkRGF0YSYgYW5vdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zaWduID09IGFub3Ro
ZXIubV9zaWduCi0gICAgICAgICYmIG1fZm9ybWF0Q2xhc3MgPT0gYW5vdGhlci5tX2Zvcm1hdENs
YXNzCi0gICAgICAgICYmIG1fZXhwb25lbnQgPT0gYW5vdGhlci5tX2V4cG9uZW50Ci0gICAgICAg
ICYmIG1fY29lZmZpY2llbnQgPT0gYW5vdGhlci5tX2NvZWZmaWNpZW50OwotfQotCiBEZWNpbWFs
OjpEZWNpbWFsKGludDMyX3QgaTMyKQogICAgIDogbV9kYXRhKGkzMiA8IDAgPyBOZWdhdGl2ZSA6
IFBvc2l0aXZlLCAwLCBpMzIgPCAwID8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KC1zdGF0aWNfY2Fz
dDxpbnQ2NF90PihpMzIpKSA6IHN0YXRpY19jYXN0PHVpbnQ2NF90PihpMzIpKQogewpAQCAtNTE0
LDUwICs1MDYsMTYgQEAgYm9vbCBEZWNpbWFsOjpvcGVyYXRvcj09KGNvbnN0IERlY2ltYWwmIHJo
cykgY29uc3QKICAgICByZXR1cm4gbV9kYXRhID09IHJocy5tX2RhdGEgfHwgY29tcGFyZVRvKHJo
cykuaXNaZXJvKCk7CiB9CiAKLWJvb2wgRGVjaW1hbDo6b3BlcmF0b3IhPShjb25zdCBEZWNpbWFs
JiByaHMpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZGF0YSA9PSByaHMubV9kYXRhKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgY29uc3QgRGVjaW1hbCByZXN1bHQgPSBjb21wYXJlVG8ocmhzKTsK
LSAgICBpZiAocmVzdWx0LmlzTmFOKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gIXJlc3VsdC5pc1plcm8oKTsKLX0KLQotYm9vbCBEZWNpbWFsOjpvcGVyYXRvcjwoY29uc3Qg
RGVjaW1hbCYgcmhzKSBjb25zdAotewotICAgIGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gY29tcGFy
ZVRvKHJocyk7Ci0gICAgaWYgKHJlc3VsdC5pc05hTigpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuICFyZXN1bHQuaXNaZXJvKCkgJiYgcmVzdWx0LmlzTmVnYXRpdmUoKTsKLX0K
LQotYm9vbCBEZWNpbWFsOjpvcGVyYXRvcjw9KGNvbnN0IERlY2ltYWwmIHJocykgY29uc3QKLXsK
LSAgICBpZiAobV9kYXRhID09IHJocy5tX2RhdGEpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGNvbnN0IERlY2ltYWwgcmVzdWx0ID0gY29tcGFyZVRvKHJocyk7Ci0gICAgaWYgKHJlc3VsdC5p
c05hTigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlc3VsdC5pc1plcm8o
KSB8fCByZXN1bHQuaXNOZWdhdGl2ZSgpOwotfQotCi1ib29sIERlY2ltYWw6Om9wZXJhdG9yPihj
b25zdCBEZWNpbWFsJiByaHMpIGNvbnN0Ci17Ci0gICAgY29uc3QgRGVjaW1hbCByZXN1bHQgPSBj
b21wYXJlVG8ocmhzKTsKLSAgICBpZiAocmVzdWx0LmlzTmFOKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gIXJlc3VsdC5pc1plcm8oKSAmJiByZXN1bHQuaXNQb3NpdGl2ZSgp
OwotfQotCi1ib29sIERlY2ltYWw6Om9wZXJhdG9yPj0oY29uc3QgRGVjaW1hbCYgcmhzKSBjb25z
dAorc3RkOjpwYXJ0aWFsX29yZGVyaW5nIG9wZXJhdG9yPD0+KGNvbnN0IERlY2ltYWwmIGEsIGNv
bnN0IERlY2ltYWwmIGIpCiB7Ci0gICAgaWYgKG1fZGF0YSA9PSByaHMubV9kYXRhKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICBjb25zdCBEZWNpbWFsIHJlc3VsdCA9IGNvbXBhcmVUbyhyaHMp
OworICAgIGF1dG8gcmVzdWx0ID0gYS5jb21wYXJlVG8oYik7CiAgICAgaWYgKHJlc3VsdC5pc05h
TigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHJlc3VsdC5pc1plcm8oKSB8
fCAhcmVzdWx0LmlzTmVnYXRpdmUoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFydGlhbF9vcmRl
cmluZzo6dW5vcmRlcmVkOworICAgIGlmIChyZXN1bHQuaXNaZXJvKCkpCisgICAgICAgIHJldHVy
biBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6OmVxdWl2YWxlbnQ7CisgICAgaWYgKHJlc3VsdC5pc05l
Z2F0aXZlKCkpCisgICAgICAgIHJldHVybiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmc6Omxlc3M7Cisg
ICAgcmV0dXJuIHN0ZDo6cGFydGlhbF9vcmRlcmluZzo6Z3JlYXRlcjsKIH0KIAogRGVjaW1hbCBE
ZWNpbWFsOjphYnMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RGVjaW1hbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5oCmluZGV4IDU5Y2Ri
MThkODIxYzZiYzYxYWI5OGJlNThlYTg3YTUwZGYwYjUzMTkuLjcxOTJkYWU1ZGVhODY1YjRjZjQ5
MWVjNGUxOTliNDFmYWU3Zjk2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RlY2ltYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmgKQEAgLTYy
LDggKzYyLDcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgRW5jb2RlZERhdGEoU2ln
biwgaW50IGV4cG9uZW50LCB1aW50NjRfdCBjb2VmZmljaWVudCk7CiAKLSAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEVuY29kZWREYXRhJikgY29uc3Q7Ci0gICAgICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBFbmNvZGVkRGF0YSYgYW5vdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9y
PT0oYW5vdGhlcik7IH0KKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEVuY29kZWREYXRh
JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgICAgIHVpbnQ2NF90IGNvZWZmaWNpZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jb2VmZmljaWVudDsgfQogICAgICAgICBpbnQgY291bnREaWdpdHMoKSBj
b25zdDsKQEAgLTEwNiwxMSArMTA1LDcgQEAgcHVibGljOgogICAgIERlY2ltYWwgb3BlcmF0b3It
KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRGVjaW1hbCYpIGNvbnN0Owot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEZWNpbWFsJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVy
YXRvcjwoY29uc3QgRGVjaW1hbCYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBE
ZWNpbWFsJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgRGVjaW1hbCYpIGNvbnN0
OwotICAgIGJvb2wgb3BlcmF0b3I+PShjb25zdCBEZWNpbWFsJikgY29uc3Q7CisgICAgZnJpZW5k
IHN0ZDo6cGFydGlhbF9vcmRlcmluZyBvcGVyYXRvcjw9Pihjb25zdCBEZWNpbWFsJiwgY29uc3Qg
RGVjaW1hbCYpOwogCiAgICAgRGVjaW1hbCBvcGVyYXRvcisoY29uc3QgRGVjaW1hbCYpIGNvbnN0
OwogICAgIERlY2ltYWwgb3BlcmF0b3ItKGNvbnN0IERlY2ltYWwmKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0V2ZW50VHJhY2tpbmdSZWdpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9FdmVudFRyYWNraW5nUmVnaW9ucy5oCmluZGV4IDNkNThiYTU1
ZWZkNjNlZDliYWU0MDUwMWUzMDliODYxZmM5ZTljMDUuLmQ2ZjViYjE4YzdjODBkOGMwY2Y3M2E4
MzcwMGVkOWQ2NmI1ZmRjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0V2
ZW50VHJhY2tpbmdSZWdpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRXZlbnRU
cmFja2luZ1JlZ2lvbnMuaApAQCAtNTYsNiArNTYsNSBAQCBzdHJ1Y3QgRXZlbnRUcmFja2luZ1Jl
Z2lvbnMgewogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50VHJhY2tpbmdSZWdpb25z
JiwgY29uc3QgRXZlbnRUcmFja2luZ1JlZ2lvbnMmKTsKLWlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgRXZlbnRUcmFja2luZ1JlZ2lvbnMmIGEsIGNvbnN0IEV2ZW50VHJhY2tpbmdSZWdpb25z
JiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VW5pdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmNwcAppbmRleCAyYWM1NjBjODVkZjVjYWU3NTg1
YzkzMmQzMjNmZjFlOTNiYTMzZTc2Li5hZmM4MWYzNDk0N2VmZDRlNGU4ZTQ3ODliZDM5ZjcwNDIw
ODI4NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmNwcApAQCAtMzAsNyAr
MzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IExheW91dFVuaXQmIHYpCitUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBMYXlvdXRVbml0IHYpCiB7CiAgICAgcmV0dXJuIHRzIDw8IFRl
eHRTdHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2Vycyh2LnRvRmxvYXQoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9MYXlvdXRVbml0LmgKaW5kZXggMGM1MjQwYzQ5MTMyYzZiZTZl
NjQ3YmUxOGViMmJjYjRiZDM2NDkwYi4uYWUwZmJhZjQ1NGM2ZmVlYzZkODE4MDU1YjQ2NzZiOWMz
NGE3YzI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGF5b3V0VW5pdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xheW91dFVuaXQuaApAQCAtNTgsMTQgKzU4
LDEzIEBAIHdoaWxlICgwKQogCiAjZW5kaWYKIAotc3RhdGljIGNvbnN0IGludCBrRml4ZWRQb2lu
dERlbm9taW5hdG9yID0gNjQ7Ci1jb25zdCBpbnQgaW50TWF4Rm9yTGF5b3V0VW5pdCA9IElOVF9N
QVggLyBrRml4ZWRQb2ludERlbm9taW5hdG9yOwotY29uc3QgaW50IGludE1pbkZvckxheW91dFVu
aXQgPSBJTlRfTUlOIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsKK2NvbnN0ZXhwciBpbnQga0Zp
eGVkUG9pbnREZW5vbWluYXRvciA9IDY0OworY29uc3RleHByIGludCBpbnRNYXhGb3JMYXlvdXRV
bml0ID0gSU5UX01BWCAvIGtGaXhlZFBvaW50RGVub21pbmF0b3I7Citjb25zdGV4cHIgaW50IGlu
dE1pbkZvckxheW91dFVuaXQgPSBJTlRfTUlOIC8ga0ZpeGVkUG9pbnREZW5vbWluYXRvcjsKIAog
Y2xhc3MgTGF5b3V0VW5pdCB7CiBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCgpIDogbV92YWx1ZSgw
KSB7IH0KLSAgICBMYXlvdXRVbml0KGNvbnN0IExheW91dFVuaXQmKSA9IGRlZmF1bHQ7CiAgICAg
TGF5b3V0VW5pdChpbnQgdmFsdWUpIHsgc2V0VmFsdWUodmFsdWUpOyB9CiAgICAgTGF5b3V0VW5p
dCh1bnNpZ25lZCBzaG9ydCB2YWx1ZSkgeyBzZXRWYWx1ZSh2YWx1ZSk7IH0KICAgICBMYXlvdXRV
bml0KHVuc2lnbmVkIHZhbHVlKSB7IHNldFZhbHVlKHZhbHVlKTsgfQpAQCAtODYsOCArODUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIG1fdmFsdWUgPSBjbGFtcFRvSW50ZWdlcih2YWx1ZSAqIGtGaXhl
ZFBvaW50RGVub21pbmF0b3IpOwogICAgIH0KIAotICAgIExheW91dFVuaXQmIG9wZXJhdG9yPShj
b25zdCBMYXlvdXRVbml0JikgPSBkZWZhdWx0OwotICAgIExheW91dFVuaXQmIG9wZXJhdG9yPShj
b25zdCBmbG9hdCYgb3RoZXIpIHsgcmV0dXJuICp0aGlzID0gTGF5b3V0VW5pdChvdGhlcik7IH0K
KyAgICBMYXlvdXRVbml0JiBvcGVyYXRvcj0oZmxvYXQgb3RoZXIpIHsgcmV0dXJuICp0aGlzID0g
TGF5b3V0VW5pdChvdGhlcik7IH0KIAogICAgIHN0YXRpYyBMYXlvdXRVbml0IGZyb21GbG9hdENl
aWwoZmxvYXQgdmFsdWUpCiAgICAgewpAQCAtMjI0LDYgKzIyMiw4IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGNsYW1wVG88TGF5b3V0VW5pdD4odmFsdWUsIExheW91dFVuaXQ6Om1pbigpLCBM
YXlvdXRVbml0OjptYXgoKSk7CiAgICAgfQogCisgICAgZnJpZW5kIGF1dG8gb3BlcmF0b3I8PT4o
TGF5b3V0VW5pdCwgTGF5b3V0VW5pdCkgPSBkZWZhdWx0OworCiBwcml2YXRlOgogICAgIHN0YXRp
YyBib29sIGlzSW5Cb3VuZHMoaW50IHZhbHVlKQogICAgIHsKQEAgLTI1OCwxNjggKzI1OCwxMTMg
QEAgcHJpdmF0ZToKICAgICBpbnQgbV92YWx1ZTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9y
PD0oY29uc3QgTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKLXsKLSAgICByZXR1
cm4gYS5yYXdWYWx1ZSgpIDw9IGIucmF3VmFsdWUoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0
b3I8PShjb25zdCBMYXlvdXRVbml0JiBhLCBmbG9hdCBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I8
PShMYXlvdXRVbml0IGEsIGZsb2F0IGIpCiB7CiAgICAgcmV0dXJuIGEudG9GbG9hdCgpIDw9IGI7
CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgTGF5b3V0VW5pdCYgYSwgaW50IGIp
CitpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KExheW91dFVuaXQgYSwgaW50IGIpCiB7CiAgICAgcmV0
dXJuIGEgPD0gTGF5b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25z
dCBmbG9hdCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I8PShm
bG9hdCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIGEgPD0gYi50b0Zsb2F0KCk7CiB9
CiAKLWlubGluZSBib29sIG9wZXJhdG9yPD0oY29uc3QgaW50IGEsIGNvbnN0IExheW91dFVuaXQm
IGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcjw9KGludCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAg
cmV0dXJuIExheW91dFVuaXQoYSkgPD0gYjsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I+PShj
b25zdCBMYXlvdXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQotewotICAgIHJldHVybiBh
LnJhd1ZhbHVlKCkgPj0gYi5yYXdWYWx1ZSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj49
KGNvbnN0IExheW91dFVuaXQmIGEsIGludCBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I+PShMYXlv
dXRVbml0IGEsIGludCBiKQogewogICAgIHJldHVybiBhID49IExheW91dFVuaXQoYik7CiB9CiAK
LWlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgZmxvYXQgYSwgY29uc3QgTGF5b3V0VW5pdCYg
YikKK2lubGluZSBib29sIG9wZXJhdG9yPj0oZmxvYXQgYSwgTGF5b3V0VW5pdCBiKQogewogICAg
IHJldHVybiBhID49IGIudG9GbG9hdCgpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj49KGNv
bnN0IExheW91dFVuaXQmIGEsIGZsb2F0IGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj49KExheW91
dFVuaXQgYSwgZmxvYXQgYikKIHsKICAgICByZXR1cm4gYS50b0Zsb2F0KCkgPj0gYjsKIH0KIAot
aW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBpbnQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikK
K2lubGluZSBib29sIG9wZXJhdG9yPj0oaW50IGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1
cm4gTGF5b3V0VW5pdChhKSA+PSBiOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3Qg
TGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKLXsKLSAgICByZXR1cm4gYS5yYXdW
YWx1ZSgpIDwgYi5yYXdWYWx1ZSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3Qg
TGF5b3V0VW5pdCYgYSwgaW50IGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwoTGF5b3V0VW5pdCBh
LCBpbnQgYikKIHsKICAgICByZXR1cm4gYSA8IExheW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBi
b29sIG9wZXJhdG9yPChjb25zdCBMYXlvdXRVbml0JiBhLCBmbG9hdCBiKQoraW5saW5lIGJvb2wg
b3BlcmF0b3I8KExheW91dFVuaXQgYSwgZmxvYXQgYikKIHsKICAgICByZXR1cm4gYS50b0Zsb2F0
KCkgPCBiOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgTGF5b3V0VW5pdCYgYSwg
ZG91YmxlIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwoTGF5b3V0VW5pdCBhLCBkb3VibGUgYikK
IHsKICAgICByZXR1cm4gYS50b0RvdWJsZSgpIDwgYjsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0
b3I8KGNvbnN0IGludCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIGJvb2wgb3BlcmF0
b3I8KGludCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIExheW91dFVuaXQoYSkgPCBi
OwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgZmxvYXQgYSwgY29uc3QgTGF5b3V0
VW5pdCYgYikKK2lubGluZSBib29sIG9wZXJhdG9yPChmbG9hdCBhLCBMYXlvdXRVbml0IGIpCiB7
CiAgICAgcmV0dXJuIGEgPCBiLnRvRmxvYXQoKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I+
KGNvbnN0IExheW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCi17Ci0gICAgcmV0dXJu
IGEucmF3VmFsdWUoKSA+IGIucmF3VmFsdWUoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I+
KGNvbnN0IExheW91dFVuaXQmIGEsIGRvdWJsZSBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I+KExh
eW91dFVuaXQgYSwgZG91YmxlIGIpCiB7CiAgICAgcmV0dXJuIGEudG9Eb3VibGUoKSA+IGI7CiB9
CiAKLWlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBMYXlvdXRVbml0JiBhLCBmbG9hdCBiKQor
aW5saW5lIGJvb2wgb3BlcmF0b3I+KExheW91dFVuaXQgYSwgZmxvYXQgYikKIHsKICAgICByZXR1
cm4gYS50b0Zsb2F0KCkgPiBiOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgTGF5
b3V0VW5pdCYgYSwgaW50IGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj4oTGF5b3V0VW5pdCBhLCBp
bnQgYikKIHsKICAgICByZXR1cm4gYSA+IExheW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBib29s
IG9wZXJhdG9yPihjb25zdCBpbnQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBib29s
IG9wZXJhdG9yPihpbnQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBMYXlvdXRVbml0
KGEpID4gYjsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IGZsb2F0IGEsIGNvbnN0
IExheW91dFVuaXQmIGIpCitpbmxpbmUgYm9vbCBvcGVyYXRvcj4oZmxvYXQgYSwgTGF5b3V0VW5p
dCBiKQogewogICAgIHJldHVybiBhID4gYi50b0Zsb2F0KCk7CiB9CiAKLWlubGluZSBib29sIG9w
ZXJhdG9yPihjb25zdCBkb3VibGUgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBib29s
IG9wZXJhdG9yPihkb3VibGUgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBhID4gYi50
b0RvdWJsZSgpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExheW91dFVuaXQm
IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCi17Ci0gICAgcmV0dXJuIGEucmF3VmFsdWUoKSAhPSBi
LnJhd1ZhbHVlKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF5b3V0VW5p
dCYgYSwgZmxvYXQgYikKLXsKLSAgICByZXR1cm4gYSAhPSBMYXlvdXRVbml0KGIpOwotfQotCi1p
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGludCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQot
ewotICAgIHJldHVybiBMYXlvdXRVbml0KGEpICE9IGI7Ci19Ci0KLWlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgTGF5b3V0VW5pdCYgYSwgaW50IGIpCi17Ci0gICAgcmV0dXJuIGEgIT0gTGF5
b3V0VW5pdChiKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMYXlvdXRVbml0
JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQotewotICAgIHJldHVybiBhLnJhd1ZhbHVlKCkgPT0g
Yi5yYXdWYWx1ZSgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExheW91dFVu
aXQmIGEsIGludCBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShMYXlvdXRVbml0IGEsIGludCBi
KQogewogICAgIHJldHVybiBhID09IExheW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgaW50IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCi17Ci0gICAgcmV0dXJu
IExheW91dFVuaXQoYSkgPT0gYjsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBM
YXlvdXRVbml0JiBhLCBmbG9hdCBiKQoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShMYXlvdXRVbml0
IGEsIGZsb2F0IGIpCiB7CiAgICAgcmV0dXJuIGEudG9GbG9hdCgpID09IGI7CiB9CiAKLWlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgZmxvYXQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKLXsK
LSAgICByZXR1cm4gYSA9PSBiLnRvRmxvYXQoKTsKLX0KLQogLy8gRm9yIG11bHRpcGxpY2F0aW9u
IHRoYXQncyBwcm9uZSB0byBvdmVyZmxvdywgdGhpcyBib3VuZHMgaXQgdG8gTGF5b3V0VW5pdDo6
bWF4KCkgYW5kIDo6bWluKCkKLWlubGluZSBMYXlvdXRVbml0IGJvdW5kZWRNdWx0aXBseShjb25z
dCBMYXlvdXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQg
Ym91bmRlZE11bHRpcGx5KExheW91dFVuaXQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIGludDY0
X3QgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oYS5yYXdWYWx1ZSgpKSAqIHN0YXRpY19j
YXN0PGludDY0X3Q+KGIucmF3VmFsdWUoKSkgLyBrRml4ZWRQb2ludERlbm9taW5hdG9yOwogICAg
IGludDMyX3QgaGlnaCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHJlc3VsdCA+PiAzMik7CkBAIC00
MzQsODIgKzM3OSw4MiBAQCBpbmxpbmUgTGF5b3V0VW5pdCBib3VuZGVkTXVsdGlwbHkoY29uc3Qg
TGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKICAgICByZXR1cm4gcmV0dXJuVmFs
OwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciooY29uc3QgTGF5b3V0VW5pdCYgYSwg
Y29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKihMYXlvdXRV
bml0IGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gYm91bmRlZE11bHRpcGx5KGEsIGIp
OwogfQogCi1pbmxpbmUgZG91YmxlIG9wZXJhdG9yKihjb25zdCBMYXlvdXRVbml0JiBhLCBkb3Vi
bGUgYikKK2lubGluZSBkb3VibGUgb3BlcmF0b3IqKExheW91dFVuaXQgYSwgZG91YmxlIGIpCiB7
CiAgICAgcmV0dXJuIGEudG9Eb3VibGUoKSAqIGI7CiB9CiAKLWlubGluZSBmbG9hdCBvcGVyYXRv
ciooY29uc3QgTGF5b3V0VW5pdCYgYSwgZmxvYXQgYikKK2lubGluZSBmbG9hdCBvcGVyYXRvcioo
TGF5b3V0VW5pdCBhLCBmbG9hdCBiKQogewogICAgIHJldHVybiBhLnRvRmxvYXQoKSAqIGI7CiB9
CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKihjb25zdCBMYXlvdXRVbml0JiBhLCBpbnQg
YikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKihMYXlvdXRVbml0IGEsIGludCBiKQogewog
ICAgIHJldHVybiBhICogTGF5b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3Bl
cmF0b3IqKGNvbnN0IExheW91dFVuaXQmIGEsIHVuc2lnbmVkIHNob3J0IGIpCitpbmxpbmUgTGF5
b3V0VW5pdCBvcGVyYXRvciooTGF5b3V0VW5pdCBhLCB1bnNpZ25lZCBzaG9ydCBiKQogewogICAg
IHJldHVybiBhICogTGF5b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0
b3IqKGNvbnN0IExheW91dFVuaXQmIGEsIHVuc2lnbmVkIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvciooTGF5b3V0VW5pdCBhLCB1bnNpZ25lZCBiKQogewogICAgIHJldHVybiBhICogTGF5
b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IqKGNvbnN0IExheW91
dFVuaXQmIGEsIHVuc2lnbmVkIGxvbmcgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKihM
YXlvdXRVbml0IGEsIHVuc2lnbmVkIGxvbmcgYikKIHsKICAgICByZXR1cm4gYSAqIExheW91dFVu
aXQoYik7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKihjb25zdCBMYXlvdXRVbml0
JiBhLCB1bnNpZ25lZCBsb25nIGxvbmcgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKihM
YXlvdXRVbml0IGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBiKQogewogICAgIHJldHVybiBhICogTGF5
b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IqKHVuc2lnbmVkIHNo
b3J0IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvcioo
dW5zaWduZWQgc2hvcnQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBMYXlvdXRVbml0
KGEpICogYjsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IqKHVuc2lnbmVkIGEsIGNv
bnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvcioodW5zaWduZWQg
YSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBMYXlvdXRVbml0KGEpICogYjsKIH0KIAot
aW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IqKHVuc2lnbmVkIGxvbmcgYSwgY29uc3QgTGF5b3V0
VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKih1bnNpZ25lZCBsb25nIGEsIExh
eW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChhKSAqIGI7CiB9CiAKLWlubGlu
ZSBMYXlvdXRVbml0IG9wZXJhdG9yKih1bnNpZ25lZCBsb25nIGxvbmcgYSwgY29uc3QgTGF5b3V0
VW5pdCYgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKih1bnNpZ25lZCBsb25nIGxvbmcg
YSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVybiBMYXlvdXRVbml0KGEpICogYjsKIH0KIAot
aW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IqKGNvbnN0IGludCBhLCBjb25zdCBMYXlvdXRVbml0
JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IqKGludCBhLCBMYXlvdXRVbml0IGIpCiB7
CiAgICAgcmV0dXJuIExheW91dFVuaXQoYSkgKiBiOwogfQogCi1pbmxpbmUgZmxvYXQgb3BlcmF0
b3IqKGNvbnN0IGZsb2F0IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgZmxvYXQgb3Bl
cmF0b3IqKGZsb2F0IGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gYSAqIGIudG9GbG9h
dCgpOwogfQogCi1pbmxpbmUgZG91YmxlIG9wZXJhdG9yKihjb25zdCBkb3VibGUgYSwgY29uc3Qg
TGF5b3V0VW5pdCYgYikKK2lubGluZSBkb3VibGUgb3BlcmF0b3IqKGRvdWJsZSBhLCBMYXlvdXRV
bml0IGIpCiB7CiAgICAgcmV0dXJuIGEgKiBiLnRvRG91YmxlKCk7CiB9CiAKLWlubGluZSBMYXlv
dXRVbml0IG9wZXJhdG9yLyhjb25zdCBMYXlvdXRVbml0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBi
KQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKExheW91dFVuaXQgYSwgTGF5b3V0VW5pdCBi
KQogewogICAgIExheW91dFVuaXQgcmV0dXJuVmFsOwogICAgIGxvbmcgbG9uZyByYXdWYWwgPSBz
dGF0aWNfY2FzdDxsb25nIGxvbmc+KGtGaXhlZFBvaW50RGVub21pbmF0b3IpICogYS5yYXdWYWx1
ZSgpIC8gYi5yYXdWYWx1ZSgpOwpAQCAtNTE3LDE0NiArNDYyLDE0NiBAQCBpbmxpbmUgTGF5b3V0
VW5pdCBvcGVyYXRvci8oY29uc3QgTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikK
ICAgICByZXR1cm4gcmV0dXJuVmFsOwogfQogCi1pbmxpbmUgZmxvYXQgb3BlcmF0b3IvKGNvbnN0
IExheW91dFVuaXQmIGEsIGZsb2F0IGIpCitpbmxpbmUgZmxvYXQgb3BlcmF0b3IvKExheW91dFVu
aXQgYSwgZmxvYXQgYikKIHsKICAgICByZXR1cm4gYS50b0Zsb2F0KCkgLyBiOwogfQogCi1pbmxp
bmUgZG91YmxlIG9wZXJhdG9yLyhjb25zdCBMYXlvdXRVbml0JiBhLCBkb3VibGUgYikKK2lubGlu
ZSBkb3VibGUgb3BlcmF0b3IvKExheW91dFVuaXQgYSwgZG91YmxlIGIpCiB7CiAgICAgcmV0dXJu
IGEudG9Eb3VibGUoKSAvIGI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLyhjb25z
dCBMYXlvdXRVbml0JiBhLCBpbnQgYikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLyhMYXlv
dXRVbml0IGEsIGludCBiKQogewogICAgIHJldHVybiBhIC8gTGF5b3V0VW5pdChiKTsKIH0KIAot
aW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IvKGNvbnN0IExheW91dFVuaXQmIGEsIHVuc2lnbmVk
IHNob3J0IGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8oTGF5b3V0VW5pdCBhLCB1bnNp
Z25lZCBzaG9ydCBiKQogewogICAgIHJldHVybiBhIC8gTGF5b3V0VW5pdChiKTsKIH0KIAotaW5s
aW5lIExheW91dFVuaXQgb3BlcmF0b3IvKGNvbnN0IExheW91dFVuaXQmIGEsIHVuc2lnbmVkIGIp
CitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8oTGF5b3V0VW5pdCBhLCB1bnNpZ25lZCBiKQog
ewogICAgIHJldHVybiBhIC8gTGF5b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQg
b3BlcmF0b3IvKGNvbnN0IExheW91dFVuaXQmIGEsIHVuc2lnbmVkIGxvbmcgYikKK2lubGluZSBM
YXlvdXRVbml0IG9wZXJhdG9yLyhMYXlvdXRVbml0IGEsIHVuc2lnbmVkIGxvbmcgYikKIHsKICAg
ICByZXR1cm4gYSAvIExheW91dFVuaXQoYik7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJh
dG9yLyhjb25zdCBMYXlvdXRVbml0JiBhLCB1bnNpZ25lZCBsb25nIGxvbmcgYikKK2lubGluZSBM
YXlvdXRVbml0IG9wZXJhdG9yLyhMYXlvdXRVbml0IGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBiKQog
ewogICAgIHJldHVybiBhIC8gTGF5b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIGZsb2F0IG9wZXJh
dG9yLyhjb25zdCBmbG9hdCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIGZsb2F0IG9w
ZXJhdG9yLyhmbG9hdCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIGEgLyBiLnRvRmxv
YXQoKTsKIH0KIAotaW5saW5lIGRvdWJsZSBvcGVyYXRvci8oY29uc3QgZG91YmxlIGEsIGNvbnN0
IExheW91dFVuaXQmIGIpCitpbmxpbmUgZG91YmxlIG9wZXJhdG9yLyhkb3VibGUgYSwgTGF5b3V0
VW5pdCBiKQogewogICAgIHJldHVybiBhIC8gYi50b0RvdWJsZSgpOwogfQogCi1pbmxpbmUgTGF5
b3V0VW5pdCBvcGVyYXRvci8oY29uc3QgaW50IGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxp
bmUgTGF5b3V0VW5pdCBvcGVyYXRvci8oaW50IGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1
cm4gTGF5b3V0VW5pdChhKSAvIGI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLyh1
bnNpZ25lZCBzaG9ydCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQg
b3BlcmF0b3IvKHVuc2lnbmVkIHNob3J0IGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4g
TGF5b3V0VW5pdChhKSAvIGI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLyh1bnNp
Z25lZCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3Iv
KHVuc2lnbmVkIGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChhKSAv
IGI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yLyh1bnNpZ25lZCBsb25nIGEsIGNv
bnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8odW5zaWduZWQg
bG9uZyBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIExheW91dFVuaXQoYSkgLyBiOwog
fQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8odW5zaWduZWQgbG9uZyBsb25nIGEsIGNv
bnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci8odW5zaWduZWQg
bG9uZyBsb25nIGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChhKSAv
IGI7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yKyhjb25zdCBMYXlvdXRVbml0JiBh
LCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IrKExheW91
dFVuaXQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIExheW91dFVuaXQgcmV0dXJuVmFsOwogICAg
IHJldHVyblZhbC5zZXRSYXdWYWx1ZShzYXR1cmF0ZWRTdW08aW50PihhLnJhd1ZhbHVlKCksIGIu
cmF3VmFsdWUoKSkpOwogICAgIHJldHVybiByZXR1cm5WYWw7CiB9CiAKLWlubGluZSBMYXlvdXRV
bml0IG9wZXJhdG9yKyhjb25zdCBMYXlvdXRVbml0JiBhLCBpbnQgYikKK2lubGluZSBMYXlvdXRV
bml0IG9wZXJhdG9yKyhMYXlvdXRVbml0IGEsIGludCBiKQogewogICAgIHJldHVybiBhICsgTGF5
b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIGZsb2F0IG9wZXJhdG9yKyhjb25zdCBMYXlvdXRVbml0
JiBhLCBmbG9hdCBiKQoraW5saW5lIGZsb2F0IG9wZXJhdG9yKyhMYXlvdXRVbml0IGEsIGZsb2F0
IGIpCiB7CiAgICAgcmV0dXJuIGEudG9GbG9hdCgpICsgYjsKIH0KIAotaW5saW5lIGRvdWJsZSBv
cGVyYXRvcisoY29uc3QgTGF5b3V0VW5pdCYgYSwgZG91YmxlIGIpCitpbmxpbmUgZG91YmxlIG9w
ZXJhdG9yKyhMYXlvdXRVbml0IGEsIGRvdWJsZSBiKQogewogICAgIHJldHVybiBhLnRvRG91Ymxl
KCkgKyBiOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvcisoY29uc3QgaW50IGEsIGNv
bnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvcisoaW50IGEsIExh
eW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gTGF5b3V0VW5pdChhKSArIGI7CiB9CiAKLWlubGlu
ZSBmbG9hdCBvcGVyYXRvcisoY29uc3QgZmxvYXQgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lu
bGluZSBmbG9hdCBvcGVyYXRvcisoZmxvYXQgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIHJldHVy
biBhICsgYi50b0Zsb2F0KCk7CiB9CiAKLWlubGluZSBkb3VibGUgb3BlcmF0b3IrKGNvbnN0IGRv
dWJsZSBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIGRvdWJsZSBvcGVyYXRvcisoZG91
YmxlIGEsIExheW91dFVuaXQgYikKIHsKICAgICByZXR1cm4gYSArIGIudG9Eb3VibGUoKTsKIH0K
IAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3ItKGNvbnN0IExheW91dFVuaXQmIGEsIGNvbnN0
IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci0oTGF5b3V0VW5pdCBh
LCBMYXlvdXRVbml0IGIpCiB7CiAgICAgTGF5b3V0VW5pdCByZXR1cm5WYWw7CiAgICAgcmV0dXJu
VmFsLnNldFJhd1ZhbHVlKHNhdHVyYXRlZERpZmZlcmVuY2U8aW50PihhLnJhd1ZhbHVlKCksIGIu
cmF3VmFsdWUoKSkpOwogICAgIHJldHVybiByZXR1cm5WYWw7CiB9CiAKLWlubGluZSBMYXlvdXRV
bml0IG9wZXJhdG9yLShjb25zdCBMYXlvdXRVbml0JiBhLCBpbnQgYikKK2lubGluZSBMYXlvdXRV
bml0IG9wZXJhdG9yLShMYXlvdXRVbml0IGEsIGludCBiKQogewogICAgIHJldHVybiBhIC0gTGF5
b3V0VW5pdChiKTsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3ItKGNvbnN0IExheW91
dFVuaXQmIGEsIHVuc2lnbmVkIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvci0oTGF5b3V0
VW5pdCBhLCB1bnNpZ25lZCBiKQogewogICAgIHJldHVybiBhIC0gTGF5b3V0VW5pdChiKTsKIH0K
IAotaW5saW5lIGZsb2F0IG9wZXJhdG9yLShjb25zdCBMYXlvdXRVbml0JiBhLCBmbG9hdCBiKQor
aW5saW5lIGZsb2F0IG9wZXJhdG9yLShMYXlvdXRVbml0IGEsIGZsb2F0IGIpCiB7CiAgICAgcmV0
dXJuIGEudG9GbG9hdCgpIC0gYjsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3ItKGNv
bnN0IGludCBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgb3BlcmF0
b3ItKGludCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgcmV0dXJuIExheW91dFVuaXQoYSkgLSBi
OwogfQogCi1pbmxpbmUgZmxvYXQgb3BlcmF0b3ItKGNvbnN0IGZsb2F0IGEsIGNvbnN0IExheW91
dFVuaXQmIGIpCitpbmxpbmUgZmxvYXQgb3BlcmF0b3ItKGZsb2F0IGEsIExheW91dFVuaXQgYikK
IHsKICAgICByZXR1cm4gYSAtIGIudG9GbG9hdCgpOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvci0oY29uc3QgTGF5b3V0VW5pdCYgYSkKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9y
LShMYXlvdXRVbml0IGEpCiB7CiAgICAgTGF5b3V0VW5pdCByZXR1cm5WYWw7CiAgICAgcmV0dXJu
VmFsLnNldFJhd1ZhbHVlKC1hLnJhd1ZhbHVlKCkpOwpAQCAtNjY0LDcgKzYwOSw3IEBAIGlubGlu
ZSBMYXlvdXRVbml0IG9wZXJhdG9yLShjb25zdCBMYXlvdXRVbml0JiBhKQogfQogCiAvLyBGb3Ig
cmV0dXJuaW5nIHRoZSByZW1haW5kZXIgYWZ0ZXIgYSBkaXZpc2lvbiB3aXRoIGludGVnZXIgcmVz
dWx0cy4KLWlubGluZSBMYXlvdXRVbml0IGludE1vZChjb25zdCBMYXlvdXRVbml0JiBhLCBjb25z
dCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQgaW50TW9kKExheW91dFVuaXQgYSwg
TGF5b3V0VW5pdCBiKQogewogICAgIC8vIFRoaXMgY2FsY3VsYXRlcyB0aGUgbW9kdWxvIHNvIHRo
YXQ6IGEgPSBzdGF0aWNfY2FzdDxpbnQ+KGEgLyBiKSAqIGIgKyBpbnRNb2QoYSwgYikuCiAgICAg
TGF5b3V0VW5pdCByZXR1cm5WYWw7CkBAIC02NzIsNyArNjE3LDcgQEAgaW5saW5lIExheW91dFVu
aXQgaW50TW9kKGNvbnN0IExheW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCiAgICAg
cmV0dXJuIHJldHVyblZhbDsKIH0KIAotaW5saW5lIExheW91dFVuaXQgb3BlcmF0b3IlKGNvbnN0
IExheW91dFVuaXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCBv
cGVyYXRvciUoTGF5b3V0VW5pdCBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgLy8gVGhpcyBjYWxj
dWxhdGVzIHRoZSBtb2R1bG8gc28gdGhhdDogYSA9IChhIC8gYikgKiBiICsgYSAlIGIuCiAgICAg
TGF5b3V0VW5pdCByZXR1cm5WYWw7CkBAIC02ODEsMTcgKzYyNiwxNyBAQCBpbmxpbmUgTGF5b3V0
VW5pdCBvcGVyYXRvciUoY29uc3QgTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikK
ICAgICByZXR1cm4gcmV0dXJuVmFsOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciUo
Y29uc3QgTGF5b3V0VW5pdCYgYSwgaW50IGIpCitpbmxpbmUgTGF5b3V0VW5pdCBvcGVyYXRvciUo
TGF5b3V0VW5pdCBhLCBpbnQgYikKIHsKICAgICByZXR1cm4gYSAlIExheW91dFVuaXQoYik7CiB9
CiAKLWlubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yJShpbnQgYSwgY29uc3QgTGF5b3V0VW5pdCYg
YikKK2lubGluZSBMYXlvdXRVbml0IG9wZXJhdG9yJShpbnQgYSwgTGF5b3V0VW5pdCBiKQogewog
ICAgIHJldHVybiBMYXlvdXRVbml0KGEpICUgYjsKIH0KIAotaW5saW5lIExheW91dFVuaXQmIG9w
ZXJhdG9yKz0oTGF5b3V0VW5pdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBMYXlv
dXRVbml0JiBvcGVyYXRvcis9KExheW91dFVuaXQmIGEsIExheW91dFVuaXQgYikKIHsKICAgICBh
LnNldFJhd1ZhbHVlKHNhdHVyYXRlZFN1bTxpbnQ+KGEucmF3VmFsdWUoKSwgYi5yYXdWYWx1ZSgp
KSk7CiAgICAgcmV0dXJuIGE7CkBAIC03MDksNyArNjU0LDcgQEAgaW5saW5lIExheW91dFVuaXQm
IG9wZXJhdG9yKz0oTGF5b3V0VW5pdCYgYSwgZmxvYXQgYikKICAgICByZXR1cm4gYTsKIH0KIAot
aW5saW5lIGZsb2F0JiBvcGVyYXRvcis9KGZsb2F0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQor
aW5saW5lIGZsb2F0JiBvcGVyYXRvcis9KGZsb2F0JiBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAg
YSA9IGEgKyBiOwogICAgIHJldHVybiBhOwpAQCAtNzIxLDcgKzY2Niw3IEBAIGlubGluZSBMYXlv
dXRVbml0JiBvcGVyYXRvci09KExheW91dFVuaXQmIGEsIGludCBiKQogICAgIHJldHVybiBhOwog
fQogCi1pbmxpbmUgTGF5b3V0VW5pdCYgb3BlcmF0b3ItPShMYXlvdXRVbml0JiBhLCBjb25zdCBM
YXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQmIG9wZXJhdG9yLT0oTGF5b3V0VW5pdCYg
YSwgTGF5b3V0VW5pdCBiKQogewogICAgIGEuc2V0UmF3VmFsdWUoc2F0dXJhdGVkRGlmZmVyZW5j
ZTxpbnQ+KGEucmF3VmFsdWUoKSwgYi5yYXdWYWx1ZSgpKSk7CiAgICAgcmV0dXJuIGE7CkBAIC03
MzMsMTMgKzY3OCwxMyBAQCBpbmxpbmUgTGF5b3V0VW5pdCYgb3BlcmF0b3ItPShMYXlvdXRVbml0
JiBhLCBmbG9hdCBiKQogICAgIHJldHVybiBhOwogfQogCi1pbmxpbmUgZmxvYXQmIG9wZXJhdG9y
LT0oZmxvYXQmIGEsIGNvbnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgZmxvYXQmIG9wZXJhdG9y
LT0oZmxvYXQmIGEsIExheW91dFVuaXQgYikKIHsKICAgICBhID0gYSAtIGI7CiAgICAgcmV0dXJu
IGE7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0JiBvcGVyYXRvcio9KExheW91dFVuaXQmIGEsIGNv
bnN0IExheW91dFVuaXQmIGIpCitpbmxpbmUgTGF5b3V0VW5pdCYgb3BlcmF0b3IqPShMYXlvdXRV
bml0JiBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgYSA9IGEgKiBiOwogICAgIHJldHVybiBhOwpA
QCAtNzUyLDEzICs2OTcsMTMgQEAgaW5saW5lIExheW91dFVuaXQmIG9wZXJhdG9yKj0oTGF5b3V0
VW5pdCYgYSwgZmxvYXQgYikKICAgICByZXR1cm4gYTsKIH0KIAotaW5saW5lIGZsb2F0JiBvcGVy
YXRvcio9KGZsb2F0JiBhLCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIGZsb2F0JiBvcGVy
YXRvcio9KGZsb2F0JiBhLCBMYXlvdXRVbml0IGIpCiB7CiAgICAgYSA9IGEgKiBiOwogICAgIHJl
dHVybiBhOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCYgb3BlcmF0b3IvPShMYXlvdXRVbml0JiBh
LCBjb25zdCBMYXlvdXRVbml0JiBiKQoraW5saW5lIExheW91dFVuaXQmIG9wZXJhdG9yLz0oTGF5
b3V0VW5pdCYgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIGEgPSBhIC8gYjsKICAgICByZXR1cm4g
YTsKQEAgLTc3MSwxMyArNzE2LDEzIEBAIGlubGluZSBMYXlvdXRVbml0JiBvcGVyYXRvci89KExh
eW91dFVuaXQmIGEsIGZsb2F0IGIpCiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGluZSBmbG9hdCYg
b3BlcmF0b3IvPShmbG9hdCYgYSwgY29uc3QgTGF5b3V0VW5pdCYgYikKK2lubGluZSBmbG9hdCYg
b3BlcmF0b3IvPShmbG9hdCYgYSwgTGF5b3V0VW5pdCBiKQogewogICAgIGEgPSBhIC8gYjsKICAg
ICByZXR1cm4gYTsKIH0KIAotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IExheW91dFVuaXQmKTsKK1dFQkNPUkVfRVhQT1JU
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBMYXlvdXRVbml0
KTsKIAogaW5saW5lIGludCByb3VuZFRvSW50KExheW91dFVuaXQgdmFsdWUpCiB7CkBAIC04MjAs
MTQgKzc2NSwxNCBAQCBpbmxpbmUgZmxvYXQgcm91bmRUb0RldmljZVBpeGVsKGZsb2F0IHZhbHVl
LCBmbG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9yLCBib29sIG5lZQogaW5saW5lIGZsb2F0IGZsb29y
VG9EZXZpY2VQaXhlbChmbG9hdCB2YWx1ZSwgZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3RvcikgeyBy
ZXR1cm4gZmxvb3JUb0RldmljZVBpeGVsKExheW91dFVuaXQodmFsdWUpLCBwaXhlbFNuYXBwaW5n
RmFjdG9yKTsgfQogaW5saW5lIGZsb2F0IGNlaWxUb0RldmljZVBpeGVsKGZsb2F0IHZhbHVlLCBm
bG9hdCBwaXhlbFNuYXBwaW5nRmFjdG9yKSB7IHJldHVybiBjZWlsVG9EZXZpY2VQaXhlbChMYXlv
dXRVbml0KHZhbHVlKSwgcGl4ZWxTbmFwcGluZ0ZhY3Rvcik7IH0KIAotaW5saW5lIExheW91dFVu
aXQgYWJzb2x1dGVWYWx1ZShjb25zdCBMYXlvdXRVbml0JiB2YWx1ZSkKK2lubGluZSBMYXlvdXRV
bml0IGFic29sdXRlVmFsdWUoTGF5b3V0VW5pdCB2YWx1ZSkKIHsKICAgICByZXR1cm4gdmFsdWUu
YWJzKCk7CiB9CiAKLWlubGluZSBib29sIGlzSW50ZWdlclZhbHVlKGNvbnN0IExheW91dFVuaXQg
dmFsdWUpCitpbmxpbmUgYm9vbCBpc0ludGVnZXJWYWx1ZShMYXlvdXRVbml0IHZhbHVlKQogewot
ICAgIHJldHVybiB2YWx1ZS50b0ludCgpID09IHZhbHVlOworICAgIHJldHVybiBMYXlvdXRVbml0
IHsgdmFsdWUudG9JbnQoKSB9ID09IHZhbHVlOwogfQogCiBpbmxpbmUgbmFtZXNwYWNlIFN0cmlu
Z0xpdGVyYWxzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKaW5kZXggMzE5NWI3MmQ3OWUyODQz
NmQzOGUwZDk3Y2I0ZjY1NDFkMDdkMDYxNy4uNWU2ODQ4Yjg3NTViNjQzOGRlZTFjOTMzYjIyNDQw
YmQ5YzA5ODY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKQEAgLTg0LDcgKzg0LDYgQEAg
cHVibGljOgogICAgIExlbmd0aCYgb3BlcmF0b3IqPShmbG9hdCk7CiAKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTGVuZ3RoJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExl
bmd0aCYpIGNvbnN0OwogCiAgICAgZmxvYXQgdmFsdWUoKSBjb25zdDsKICAgICBpbnQgaW50VmFs
dWUoKSBjb25zdDsKQEAgLTMxNiwxMSArMzE1LDYgQEAgaW5saW5lIGJvb2wgTGVuZ3RoOjpvcGVy
YXRvcj09KGNvbnN0IExlbmd0aCYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHZhbHVlKCkgPT0g
b3RoZXIudmFsdWUoKTsKIH0KIAotaW5saW5lIGJvb2wgTGVuZ3RoOjpvcGVyYXRvciE9KGNvbnN0
IExlbmd0aCYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwot
fQotCiBpbmxpbmUgTGVuZ3RoJiBMZW5ndGg6Om9wZXJhdG9yKj0oZmxvYXQgdmFsdWUpCiB7CiAg
ICAgQVNTRVJUKCFpc0NhbGN1bGF0ZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGhQb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGhQ
b2ludC5jcHAKaW5kZXggOWEzNjc1OTZkZDAyNjlkNTlmNjNlYjBmNmM4OWUzNGRkODIxODJkOS4u
ZDIxNmQ3OGE2ZjU3ZTkwODAyZTMyNjg5OWQzNWI1MjhhODgwYTUzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aFBvaW50LmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IExl
bmd0aFBvaW50JiBzaXplKQogewotICAgIHJldHVybiB0cyA8PCBzaXplLngoKSA8PCAiICIgPDwg
c2l6ZS55KCk7CisgICAgcmV0dXJuIHRzIDw8IHNpemUueCA8PCAnICcgPDwgc2l6ZS55OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGhQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoUG9pbnQu
aAppbmRleCA4MTIwNWJiMTNkZGE1MDMzYjJjOTBmYmVhMDUzMGMyZjU2Zjk5MzZiLi5mMDAzNjkx
MWVjM2JkZDY0MjIzMDNkZDM2YzY5MWE5Mzk4ODI3ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9MZW5ndGhQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlbmd0aFBvaW50LmgKQEAgLTMyLDQ0ICszMiwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dHJ1Y3QgQmxlbmRpbmdDb250ZXh0OwogCiBzdHJ1Y3QgTGVuZ3RoUG9pbnQgewotcHVibGljOgot
ICAgIExlbmd0aFBvaW50KCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIExlbmd0aFBvaW50KExl
bmd0aCB4LCBMZW5ndGggeSkKLSAgICAgICAgOiBtX3goV1RGTW92ZSh4KSkKLSAgICAgICAgLCBt
X3koV1RGTW92ZSh5KSkKLSAgICB7Ci0gICAgfQorICAgIExlbmd0aCB4OworICAgIExlbmd0aCB5
OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlbmd0aFBvaW50JiBvKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1feCA9PSBvLm1feCAmJiBtX3kgPT0gby5tX3k7Ci0gICAgfQor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZW5ndGhQb2ludCYpIGNvbnN0ID0gZGVmYXVsdDsK
IAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMZW5ndGhQb2ludCYgbykgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KLQotICAgIHZvaWQgc2V0WChM
ZW5ndGggeCkgeyBtX3ggPSBXVEZNb3ZlKHgpOyB9Ci0gICAgY29uc3QgTGVuZ3RoJiB4KCkgY29u
c3QgeyByZXR1cm4gbV94OyB9Ci0KLSAgICB2b2lkIHNldFkoTGVuZ3RoIHkpIHsgbV95ID0gV1RG
TW92ZSh5KTsgfQotICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQot
Ci0gICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiBtX3guaXNaZXJvKCkgJiYgbV95Lmlz
WmVybygpOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRklYTUU6IGl0IHdvdWxkIGJlIG5pY2UgdG8g
cGFjayB0aGUgdHdvIExlbmd0aHMgdG9nZXRoZXIgYmV0dGVyIHNvbWVob3cgKHRvIGF2b2lkIHBh
ZGRpbmcgYmV0d2VlbiB0aGVtKS4KLSAgICBMZW5ndGggbV94OwotICAgIExlbmd0aCBtX3k7Cisg
ICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiB4LmlzWmVybygpICYmIHkuaXNaZXJvKCk7
IH0KIH07CiAKIGlubGluZSBMZW5ndGhQb2ludCBibGVuZChjb25zdCBMZW5ndGhQb2ludCYgZnJv
bSwgY29uc3QgTGVuZ3RoUG9pbnQmIHRvLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmIGNvbnRleHQp
CiB7Ci0gICAgcmV0dXJuIExlbmd0aFBvaW50KGJsZW5kKGZyb20ueCgpLCB0by54KCksIGNvbnRl
eHQpLCBibGVuZChmcm9tLnkoKSwgdG8ueSgpLCBjb250ZXh0KSk7CisgICAgcmV0dXJuIHsgYmxl
bmQoZnJvbS54LCB0by54LCBjb250ZXh0KSwgYmxlbmQoZnJvbS55LCB0by55LCBjb250ZXh0KSB9
OwogfQogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29u
c3QgTGVuZ3RoUG9pbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xl
bmd0aFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUuaAppbmRleCA4
MjMyZWJiZDkxNWZhZWZmYjcwOGJjMmQwZWVjNTAyNTljMDNkYWJmLi4yNDZkNTM0MmJlMTk5N2Uz
NjEwMTU2MWQ0MzFkYWM0YmUyNTdjMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZW5ndGhTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoU2l6
ZS5oCkBAIC0zMCwxNSArMzAsMTIgQEAgc3RydWN0IExlbmd0aFNpemUgewogICAgIExlbmd0aCB3
aWR0aDsKICAgICBMZW5ndGggaGVpZ2h0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExl
bmd0aFNpemUmKSBjb25zdCA9IGRlZmF1bHQ7CisKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiB3aWR0aC5pc1plcm8oKSB8fCBoZWlnaHQuaXNaZXJvKCk7IH0KICAgICBib29sIGlz
WmVybygpIGNvbnN0IHsgcmV0dXJuIHdpZHRoLmlzWmVybygpICYmIGhlaWdodC5pc1plcm8oKTsg
fQogfTsKIAotQUxXQVlTX0lOTElORSBib29sIG9wZXJhdG9yPT0oY29uc3QgTGVuZ3RoU2l6ZSYg
YSwgY29uc3QgTGVuZ3RoU2l6ZSYgYikKLXsKLSAgICByZXR1cm4gYS53aWR0aCA9PSBiLndpZHRo
ICYmIGEuaGVpZ2h0ID09IGIuaGVpZ2h0OwotfQotCiBpbmxpbmUgTGVuZ3RoU2l6ZSBibGVuZChj
b25zdCBMZW5ndGhTaXplJiBmcm9tLCBjb25zdCBMZW5ndGhTaXplJiB0bywgY29uc3QgQmxlbmRp
bmdDb250ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiB7IGJsZW5kKGZyb20ud2lkdGgsIHRv
LndpZHRoLCBjb250ZXh0KSwgYmxlbmQoZnJvbS5oZWlnaHQsIHRvLmhlaWdodCwgY29udGV4dCkg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVydmFsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbC5oCmluZGV4IGI4ODg2MzEyM2E0ZmZk
OWNhNmZmZjMzNGFjNmU2N2U4OTVmM2NmMzQuLjUxYmYwNDRkNTNiNWQ4NzZjMjdkZjk3YmZkZmYw
OTJiMTk1YTM3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BPREludGVy
dmFsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWwuaApAQCAtMTA2
LDE3ICsxMDYsMTMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9y
PChjb25zdCBQT0RJbnRlcnZhbCYgb3RoZXIpIGNvbnN0CisgICAgZnJpZW5kIHN0ZDo6cGFydGlh
bF9vcmRlcmluZyBvcGVyYXRvcjw9Pihjb25zdCBQT0RJbnRlcnZhbCYgYSwgY29uc3QgUE9ESW50
ZXJ2YWwmIGIpCiAgICAgewotICAgICAgICBpZiAoQmFzZTo6bG93KCkgPCBvdGhlci5CYXNlOjps
b3coKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAob3RoZXIuQmFzZTo6
bG93KCkgPCBCYXNlOjpsb3coKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
aWYgKEJhc2U6OmhpZ2goKSA8IG90aGVyLkJhc2U6OmhpZ2goKSkKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICBpZiAob3RoZXIuQmFzZTo6aGlnaCgpIDwgQmFzZTo6aGlnaCgpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gQmFzZTo6ZGF0YSgpIDwg
b3RoZXIuQmFzZTo6ZGF0YSgpOworICAgICAgICBpZiAoYS5CYXNlOjpsb3coKSAhPSBiLkJhc2U6
OmxvdygpKQorICAgICAgICAgICAgcmV0dXJuIGEuQmFzZTo6bG93KCkgPD0+IGIuQmFzZTo6bG93
KCk7CisgICAgICAgIGlmIChhLkJhc2U6OmhpZ2goKSAhPSBiLkJhc2U6OmhpZ2goKSkKKyAgICAg
ICAgICAgIHJldHVybiBhLkJhc2U6OmhpZ2goKSA8PT4gYi5CYXNlOjpoaWdoKCk7CisgICAgICAg
IHJldHVybiBhLkJhc2U6OmRhdGEoKSA8PT4gYi5CYXNlOjpkYXRhKCk7CiAgICAgfQogCiAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFBPREludGVydmFsJiBvdGhlcikgY29uc3QKQEAgLTEzNywx
MyArMTMzLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgUE9ESW50ZXJ2YWwmIG90aGVyKSBjb25zdAorICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9y
PD0+KGNvbnN0IFBPREludGVydmFsJiBhLCBjb25zdCBQT0RJbnRlcnZhbCYgYikKICAgICB7Ci0g
ICAgICAgIGlmIChCYXNlOjpsb3coKSA8IG90aGVyLkJhc2U6OmxvdygpKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChvdGhlci5CYXNlOjpsb3coKSA8IEJhc2U6Omxvdygp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gQmFzZTo6aGlnaCgp
IDwgb3RoZXIuQmFzZTo6aGlnaCgpOworICAgICAgICBpZiAoYS5CYXNlOjpsb3coKSAhPSBiLkJh
c2U6OmxvdygpKQorICAgICAgICAgICAgcmV0dXJuIGEuQmFzZTo6bG93KCkgPD0+IGIuQmFzZTo6
bG93KCk7CisgICAgICAgIHJldHVybiBhLkJhc2U6OmhpZ2goKSA8PT4gYi5CYXNlOjpoaWdoKCk7
CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1Nb3VzZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1v
dXNlRXZlbnQuaAppbmRleCA1ZmJlMzIyMGE4Mjg3YmZkZDJiMWU2MzQ3MjA3Mjk5NjljYTczNmFm
Li5mODdiYzU5NzFhMmE0NGFmYzJkYjMyNjIxZmVjZGMxYjZmMDM0YmMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybU1vdXNlRXZlbnQuaApAQCAtMTE1LDExICsxMTUsNiBA
QCBjb25zdCBkb3VibGUgRm9yY2VBdEZvcmNlQ2xpY2sgPSAyOwogICAgIHsKICAgICAgICAgcmV0
dXJuIGEgPT0gc3RhdGljX2Nhc3Q8c2hvcnQ+KGIpOwogICAgIH0KLQotICAgIGlubGluZSBib29s
IG9wZXJhdG9yIT0oc2hvcnQgYSwgTW91c2VCdXR0b24gYikKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhICE9IHN0YXRpY19jYXN0PHNob3J0PihiKTsKLSAgICB9CiAjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvY2Vz
c1F1YWxpZmllZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvY2Vzc1F1YWxpZmllZC5o
CmluZGV4IDI4NWE0MjU1MzkyY2E3ZGVlNjk4ZjFjYmE3MzMxMmNhOWIyM2JhMmIuLmJkNDVmNTdk
M2YxYTZhYjFjMjMwYmE3MzU5MzkzNDMxNTI5YTgxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb2Nlc3NRdWFsaWZpZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Qcm9jZXNzUXVhbGlmaWVkLmgKQEAgLTgwLDE2ICs4MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fcHJvY2Vzc0lkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsK
ICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUHJvY2Vzc1F1YWxpZmllZCYgb3Ro
ZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9vYmplY3QgPT0gb3RoZXIubV9vYmpl
Y3QKLSAgICAgICAgICAgICYmIG1fcHJvY2Vzc0lkZW50aWZpZXIgPT0gb3RoZXIubV9wcm9jZXNz
SWRlbnRpZmllcjsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUHJvY2Vzc1F1
YWxpZmllZCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm9jZXNzUXVhbGlmaWVk
JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIFByb2Nlc3NRdWFsaWZpZWQgZ2VuZXJh
dGVUaHJlYWRTYWZlKCkgeyByZXR1cm4geyBUOjpnZW5lcmF0ZVRocmVhZFNhZmUoKSwgUHJvY2Vz
czo6aWRlbnRpZmllcigpIH07IH0KICAgICBzdGF0aWMgUHJvY2Vzc1F1YWxpZmllZCBnZW5lcmF0
ZSgpIHsgcmV0dXJuIHsgVDo6Z2VuZXJhdGUoKSwgUHJvY2Vzczo6aWRlbnRpZmllcigpIH07IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVjdEVkZ2VzLmgKaW5kZXggMGUxMjMwMTkzMzYzNTRkN2NlZjI3
ZDFmZGY3YTczMjM2MDUxOWZhYS4uMzcwODM2NGU4YjE4OWQ2ZjUxNzkyNTFhMmFlZDQ4NmMwNDgz
ODc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVjdEVkZ2VzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVjdEVkZ2VzLmgKQEAgLTg4LDggKzg4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U3RhcnQoY29uc3QgVCYgc3RhcnQsIFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUikg
eyB0aGlzLT5zdGFydCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IHN0YXJ0OyB9CiAgICAgdm9p
ZCBzZXRFbmQoY29uc3QgVCYgZW5kLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsgdGhpcy0+ZW5kKHdyaXRpbmdN
b2RlLCBkaXJlY3Rpb24pID0gZW5kOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVj
dEVkZ2VzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9zaWRlcyA9PSBvdGhlci5tX3NpZGVzOyB9
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlY3RFZGdlcyYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuIG1fc2lkZXMgIT0gb3RoZXIubV9zaWRlczsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBSZWN0RWRnZXMmKSBjb25zdCA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgc3RkOjphcnJh
eTxULCA0PiBtX3NpZGVzIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1JlZ2lzdHJhYmxlRG9tYWluLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJs
ZURvbWFpbi5oCmluZGV4IDdjZTNmNjEzNmMzMTdkYTNmYmVjMjI0MDFmNWJmMjgwMTY0OTVjNjAu
LmJkNjYzY2NjZjFkN2M0MzRhYzVhMzk2ZGQ4YmU1YzgzNDNkZjdjZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaApAQCAtNTMsOCArNTMsNyBAQCBwdWJs
aWM6CiAgICAgU3RyaW5nJiBzdHJpbmcoKSB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9
CiAgICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxl
RG9tYWluOyB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IG90aGVyKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluICE9IG90aGVyLm1fcmVn
aXN0cmFibGVEb21haW47IH0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluID09IG90aGVy
Lm1fcmVnaXN0cmFibGVEb21haW47IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0
cmFibGVEb21haW4mKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IGNoYXIqIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluID09IG90aGVy
OyB9CiAKICAgICBib29sIG1hdGNoZXMoY29uc3QgVVJMJiB1cmwpIGNvbnN0CkBAIC0xMDAsOCAr
OTksNiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBkZWNvZGUoRGVjb2RlciYpOwogCi1wcm90ZWN0
ZWQ6Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUmVnaXN0cmFibGVEb21haW4oU3RyaW5nJiYg
ZG9tYWluKQogICAgICAgICA6IG1fcmVnaXN0cmFibGVEb21haW4geyBkb21haW4uaXNFbXB0eSgp
ID8gIm51bGxPcmlnaW4iX3MgOiBXVEZNb3ZlKGRvbWFpbikgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaAppbmRleCBjYWVmM2YyNjIwMDMzZGQ4Y2ZmMTU2MjNmMjNjNmI2Yzli
NTM0YjM3Li42ZWU1MzQwZjRjYjlkNmUxMjY3ZmU5Y2I2OGJlZDQxMWU1YWQ5MzIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMjAwLDcgKzIwMCw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGhpbnRNZW1vcnlOb3ROZWVkZWRTb29uKCkgY29uc3Q7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
IGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8U2hhcmVkQnVmZmVyPiBtYWtlQ29udGlndW91cygpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9UaW1lci5jcHAKaW5kZXggMTg5MDUzZjkyODVmOTg4NmZhNTliODg3YTcy
YTBkNWVjOTEwNDg5My4uNmE3YmExNjJhNGFhZTNmMTU0ZGZiZDc3MjFhZTEzZDk2ZmRjZTFiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmNwcApAQCAtMTgzLDEzICsxODMsOCBAQCBwcml2YXRl
OgogICAgICAgICBBU1NFUlRfVU5VU0VEKG9mZnNldCwgbV9wb2ludGVyICsgb2Zmc2V0IDw9IHRo
cmVhZEdsb2JhbFRpbWVySGVhcCgpLmRhdGEoKSArIHRocmVhZEdsb2JhbFRpbWVySGVhcCgpLnNp
emUoKSk7CiAgICAgfQogCi0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShUaW1lckhlYXBJdGVy
YXRvciwgVGltZXJIZWFwSXRlcmF0b3IpOwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oVGlt
ZXJIZWFwSXRlcmF0b3IsIFRpbWVySGVhcEl0ZXJhdG9yKTsKLSAgICBmcmllbmQgYm9vbCBvcGVy
YXRvcjwoVGltZXJIZWFwSXRlcmF0b3IsIFRpbWVySGVhcEl0ZXJhdG9yKTsKLSAgICBmcmllbmQg
Ym9vbCBvcGVyYXRvcj4oVGltZXJIZWFwSXRlcmF0b3IsIFRpbWVySGVhcEl0ZXJhdG9yKTsKLSAg
ICBmcmllbmQgYm9vbCBvcGVyYXRvcjw9KFRpbWVySGVhcEl0ZXJhdG9yLCBUaW1lckhlYXBJdGVy
YXRvcik7Ci0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+PShUaW1lckhlYXBJdGVyYXRvciwgVGlt
ZXJIZWFwSXRlcmF0b3IpOwotICAgIAorICAgIGZyaWVuZCBhdXRvIG9wZXJhdG9yPD0+KFRpbWVy
SGVhcEl0ZXJhdG9yLCBUaW1lckhlYXBJdGVyYXRvcik7CisKICAgICBmcmllbmQgVGltZXJIZWFw
SXRlcmF0b3Igb3BlcmF0b3IrKFRpbWVySGVhcEl0ZXJhdG9yLCBzaXplX3QpOwogICAgIGZyaWVu
ZCBUaW1lckhlYXBJdGVyYXRvciBvcGVyYXRvcisoc2l6ZV90LCBUaW1lckhlYXBJdGVyYXRvcik7
CiAgICAgCkBAIC0xOTksMTMgKzE5NCw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFRocmVhZFRp
bWVySGVhcEl0ZW0+KiBtX3BvaW50ZXI7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KFRp
bWVySGVhcEl0ZXJhdG9yIGEsIFRpbWVySGVhcEl0ZXJhdG9yIGIpIHsgcmV0dXJuIGEubV9wb2lu
dGVyID09IGIubV9wb2ludGVyOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KFRpbWVySGVhcEl0
ZXJhdG9yIGEsIFRpbWVySGVhcEl0ZXJhdG9yIGIpIHsgcmV0dXJuIGEubV9wb2ludGVyICE9IGIu
bV9wb2ludGVyOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoVGltZXJIZWFwSXRlcmF0b3IgYSwg
VGltZXJIZWFwSXRlcmF0b3IgYikgeyByZXR1cm4gYS5tX3BvaW50ZXIgPCBiLm1fcG9pbnRlcjsg
fQotaW5saW5lIGJvb2wgb3BlcmF0b3I+KFRpbWVySGVhcEl0ZXJhdG9yIGEsIFRpbWVySGVhcEl0
ZXJhdG9yIGIpIHsgcmV0dXJuIGEubV9wb2ludGVyID4gYi5tX3BvaW50ZXI7IH0KLWlubGluZSBi
b29sIG9wZXJhdG9yPD0oVGltZXJIZWFwSXRlcmF0b3IgYSwgVGltZXJIZWFwSXRlcmF0b3IgYikg
eyByZXR1cm4gYS5tX3BvaW50ZXIgPD0gYi5tX3BvaW50ZXI7IH0KLWlubGluZSBib29sIG9wZXJh
dG9yPj0oVGltZXJIZWFwSXRlcmF0b3IgYSwgVGltZXJIZWFwSXRlcmF0b3IgYikgeyByZXR1cm4g
YS5tX3BvaW50ZXIgPj0gYi5tX3BvaW50ZXI7IH0KLQogaW5saW5lIFRpbWVySGVhcEl0ZXJhdG9y
IG9wZXJhdG9yKyhUaW1lckhlYXBJdGVyYXRvciBhLCBzaXplX3QgYikgeyByZXR1cm4gVGltZXJI
ZWFwSXRlcmF0b3IoYS5tX3BvaW50ZXIgKyBiKTsgfQogaW5saW5lIFRpbWVySGVhcEl0ZXJhdG9y
IG9wZXJhdG9yKyhzaXplX3QgYSwgVGltZXJIZWFwSXRlcmF0b3IgYikgeyByZXR1cm4gVGltZXJI
ZWFwSXRlcmF0b3IoYSArIGIubV9wb2ludGVyKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmgKaW5kZXggMmU4YmRlZTdhYWExOWRmODA2Yzc4NTgw
NGMwMjA3NGVjYTk5ZTZjMS4uYzJiN2M4NDI2MDhjMjY1Y2YzOWFlMmRjNzcwZjkyYzM1ZmE5ODc3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb24uaApA
QCAtMTgyLDcgKzE4Miw2IEBAIHB1YmxpYzoKIAogICAgIC8vIHJldHVybiB0cnVlIGV2ZXJ5IEFu
aW1hdGlvbiBpbiB0aGUgY2hhaW4gKGRlZmluZWQgYnkgbV9uZXh0KSBtYXRjaCAKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgQW5pbWF0aW9uJiBvKSBjb25zdCB7IHJldHVybiBhbmltYXRpb25z
TWF0Y2gobyk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQW5pbWF0aW9uJiBvKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiAKICAgICBib29sIGZpbGxzQmFja3dhcmRzKCkg
Y29uc3QgeyByZXR1cm4gbV9maWxsTW9kZVNldCAmJiAoZmlsbE1vZGUoKSA9PSBBbmltYXRpb25G
aWxsTW9kZTo6QmFja3dhcmRzIHx8IGZpbGxNb2RlKCkgPT0gQW5pbWF0aW9uRmlsbE1vZGU6OkJv
dGgpOyB9CiAgICAgYm9vbCBmaWxsc0ZvcndhcmRzKCkgY29uc3QgeyByZXR1cm4gbV9maWxsTW9k
ZVNldCAmJiAoZmlsbE1vZGUoKSA9PSBBbmltYXRpb25GaWxsTW9kZTo6Rm9yd2FyZHMgfHwgZmls
bE1vZGUoKSA9PSBBbmltYXRpb25GaWxsTW9kZTo6Qm90aCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25MaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uTGlzdC5oCmluZGV4IGFiNmUwMjRkZjc0
NDlmMGY4MmFlODRmNjk1NTVlYTAyMDgxYmFlNTguLmI1ODM2MzU1ZWZkNTI3MjFmOTBlZWY5Yjk5
NWUxZTcwNjNiY2ExOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb25MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0
aW9uL0FuaW1hdGlvbkxpc3QuaApAQCAtNDAsMTAgKzQwLDYgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBmaWxsVW5zZXRQcm9wZXJ0aWVzKCk7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFuaW1h
dGlvbkxpc3QmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQW5pbWF0aW9uTGlz
dCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
Ci0gICAgfQogICAgIAogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRp
b25zLnNpemUoKTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0
aW9ucy5pc0VtcHR5KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Fu
aW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0
aW9uL1RpbWluZ0Z1bmN0aW9uLmgKaW5kZXggNmZjYjQ5YjZmOTUxYWNlM2IyMDQ4OWE4NTExNzA5
YmQ2MGNlNGJmZi4uNmNkY2RjMjk5OTdmODFiYzVmMjcxYTE5MjUxMTU1NDJiMjZiMmI1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9u
LmgKQEAgLTUxLDcgKzUxLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNTcHJpbmdUaW1pbmdGdW5j
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBTcHJpbmdGdW5jdGlvbjsgfQogCiAgICAg
dmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVGltaW5nRnVuY3Rpb24mKSBjb25zdCA9IDA7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxS
ZWZQdHI8VGltaW5nRnVuY3Rpb24+PiBjcmVhdGVGcm9tQ1NTVGV4dChjb25zdCBTdHJpbmcmKTsK
ICAgICBzdGF0aWMgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjcmVhdGVGcm9tQ1NTVmFsdWUoY29u
c3QgQ1NTVmFsdWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5
aW5nSW5mby5oCmluZGV4IDFkNjViYzQwM2FkODUyNDNjNjcyNWU3MDQ0OGQ2Y2RhZGNjY2NlMWIu
LjBmZGYyOWNlZDhmZmM1YWRlYzU2MTNjYjc3ZDQyYTAwNDliYzczMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtNDMsMTEgKzQzLDYg
QEAgc3RydWN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7CiAgICAgICAgIHJldHVybiBzcmMgPT0g
b3RoZXIuc3JjICYmIG1pbWVUeXBlID09IG90aGVyLm1pbWVUeXBlOwogICAgIH0KIAotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBOb3dQbGF5aW5nSW5mb0FydHdvcmsmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5m
b0FydHdvcms+IGRlY29kZShEZWNvZGVyJik7CiB9OwpAQCAtODcsMjUgKzgyLDcgQEAgc3RydWN0
IE5vd1BsYXlpbmdJbmZvIHsKICAgICBib29sIGFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2li
aWxpdHkgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm9BcnR3b3Jr
PiBhcnR3b3JrOwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vd1BsYXlpbmdJbmZvJiBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aXRsZSA9PSBvdGhlci50aXRsZQot
ICAgICAgICAgICAgJiYgYXJ0aXN0ID09IG90aGVyLmFydGlzdAotICAgICAgICAgICAgJiYgYWxi
dW0gPT0gb3RoZXIuYWxidW0KLSAgICAgICAgICAgICYmIHNvdXJjZUFwcGxpY2F0aW9uSWRlbnRp
ZmllciA9PSBvdGhlci5zb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIKLSAgICAgICAgICAgICYm
IGR1cmF0aW9uID09IG90aGVyLmR1cmF0aW9uCi0gICAgICAgICAgICAmJiBjdXJyZW50VGltZSA9
PSBvdGhlci5jdXJyZW50VGltZQotICAgICAgICAgICAgJiYgc3VwcG9ydHNTZWVraW5nID09IG90
aGVyLnN1cHBvcnRzU2Vla2luZwotICAgICAgICAgICAgJiYgdW5pcXVlSWRlbnRpZmllciA9PSBv
dGhlci51bmlxdWVJZGVudGlmaWVyCi0gICAgICAgICAgICAmJiBpc1BsYXlpbmcgPT0gb3RoZXIu
aXNQbGF5aW5nCi0gICAgICAgICAgICAmJiBhbGxvd3NOb3dQbGF5aW5nQ29udHJvbHNWaXNpYmls
aXR5ID09IG90aGVyLmFsbG93c05vd1BsYXlpbmdDb250cm9sc1Zpc2liaWxpdHkKLSAgICAgICAg
ICAgICYmIGFydHdvcmsgPT0gb3RoZXIuYXJ0d29yazsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgTm93UGxheWluZ0luZm8mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgTm93UGxheWluZ0luZm8mKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Tm93UGxheWluZ0luZm8+IGRlY29kZShE
ZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vY29jb2EvQ0FBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmNwcAppbmRleCA1N2NjMTQyOGQ1
Y2U5NjY0MDk2YjNhZmJkNmIwOTA2Y2Q5OGYyMDE3Li5kNmQ1OTRlMjFjZjlmMzU3NjMwNWU0NjQ4
MjgwNmM2MjdlZmFjMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9jb2NvYS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5jcHAKQEAgLTIy
NCwxMSArMjI0LDYgQEAgYm9vbCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb246Om9wZXJhdG9yPT0o
Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBvdGgKICAgICByZXR1cm4gbV9zdHJl
YW1EZXNjcmlwdGlvbiA9PSBvdGhlcjsKIH0KIAotYm9vbCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRp
b246Om9wZXJhdG9yIT0oY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBvdGhlcikg
Y29uc3QKLXsKLSAgICByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOwotfQotCiBib29sIENBQXVk
aW9TdHJlYW1EZXNjcmlwdGlvbjo6b3BlcmF0b3I9PShjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0
aW9uJiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAob3RoZXIucGxhdGZvcm1EZXNjcmlwdGlvbigp
LnR5cGUgIT0gUGxhdGZvcm1EZXNjcmlwdGlvbjo6Q0FBdWRpb1N0cmVhbUJhc2ljVHlwZSkKQEAg
LTIzNywxMSArMjMyLDYgQEAgYm9vbCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb246Om9wZXJhdG9y
PT0oY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgb3RoZXIpIGMKICAgICByZXR1cm4gb3Bl
cmF0b3I9PSgqc3RkOjpnZXQ8Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKj4ob3Ro
ZXIucGxhdGZvcm1EZXNjcmlwdGlvbigpLmRlc2NyaXB0aW9uKSk7CiB9CiAKLWJvb2wgQ0FBdWRp
b1N0cmVhbURlc2NyaXB0aW9uOjpvcGVyYXRvciE9KGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRp
b24mIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7Ci19Ci0K
IGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgQ0FBdWRpb1N0cmVhbURlc2NyaXB0
aW9uOjpzdHJlYW1EZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RyZWFtRGVz
Y3JpcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2Nv
YS9DQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oCmluZGV4IDYzYWVjNjM2YTAzZWZj
NTY2MDUzZTdkZmJjYWRmM2M5NDE5NGY0MDEuLjkxM2ZhZmZhZDNmYjc0NWJjZTI0Njk3YTc5MjJm
MDVhMjNmNTg0MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2Nv
Y29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2NvY29hL0NBQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oCkBAIC0zMSw3ICszMSw2
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mLCBjb25zdCBBdWRpb1N0cmVhbUJh
c2ljRGVzY3JpcHRpb24mKTsKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQXVkaW9TdHJl
YW1CYXNpY0Rlc2NyaXB0aW9uJiBhLCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24m
IGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBDQUF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24gZmluYWwgOiBwdWJsaWMgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC02MSwxMCArNjAsOCBAQCBwdWJsaWM6
CiAgICAgdWludDMyX3QgZm9ybWF0RmxhZ3MoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDQUF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBv
cGVyYXRvcj09KHN0YXRpY19jYXN0PGNvbnN0IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mPihvdGhl
cikpOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdWRpb1N0cmVh
bUJhc2ljRGVzY3JpcHRpb24mIG90aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdGhlcikgY29uc3Q7CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYpIGNvbnN0Owor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJikgY29uc3Q7
CiAKICAgICBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIHN0cmVhbURlc2NyaXB0
aW9uKCkgY29uc3Q7CiAgICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uJiBzdHJlYW1EZXNj
cmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2FsYy9DYWxj
RXhwcmVzc2lvbkJsZW5kTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jYWxjL0Nh
bGNFeHByZXNzaW9uQmxlbmRMZW5ndGguaAppbmRleCA5YjQ3NzIxNDhjN2U4MzkxZGVlZDQyYmY2
NjliNWQyNjc4MTY2NzQzLi5lN2ZmZmNiYzNlZTM2YTdiZWE1MTNkZDBlYjQ4N2YyY2VlNjFhMmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jYWxjL0NhbGNFeHByZXNzaW9u
QmxlbmRMZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jYWxjL0NhbGNFeHBy
ZXNzaW9uQmxlbmRMZW5ndGguaApAQCAtMzgsNiArMzgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
TGVuZ3RoJiB0bygpIGNvbnN0IHsgcmV0dXJuIG1fdG87IH0KICAgICBmbG9hdCBwcm9ncmVzcygp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvZ3Jlc3M7IH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDYWxjRXhwcmVzc2lvbkJsZW5kTGVuZ3RoJikgY29uc3QgPSBkZWZhdWx0OworCiBwcml2YXRl
OgogICAgIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBjb25zdCBmaW5hbDsKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ2FsY0V4cHJlc3Npb25Ob2RlJikgY29uc3QgZmluYWw7CkBA
IC00OCwxMSArNTAsNiBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fcHJvZ3Jlc3M7CiB9OwogCi1p
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGgmIGEs
IGNvbnN0IENhbGNFeHByZXNzaW9uQmxlbmRMZW5ndGgmIGIpCi17Ci0gICAgcmV0dXJuIGEucHJv
Z3Jlc3MoKSA9PSBiLnByb2dyZXNzKCkgJiYgYS5mcm9tKCkgPT0gYi5mcm9tKCkgJiYgYS50bygp
ID09IGIudG8oKTsKLX0KLQogfQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBTENFWFBSRVNT
SU9OX05PREUoQ2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aCwgdHlwZSgpID09IFdlYkNvcmU6OkNh
bGNFeHByZXNzaW9uTm9kZVR5cGU6OkJsZW5kTGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmgKaW5kZXggN2QwOTUxYjQ0N2Q1MTBkMWJmY2M2ZDVjZmNlYTRjODMz
ZDUwYTg4Yi4uMGQ1ZGVmZGYwNDI4Yjg1ZmU1MWI3MDZmMjgyNDdiNWZmMDg3ZTg4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCkBAIC0yNjAsNyArMjYwLDYgQEAg
cHJpdmF0ZToKIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvciYsIGNvbnN0IENvbG9y
Jik7Ci1ib29sIG9wZXJhdG9yIT0oY29uc3QgQ29sb3ImLCBjb25zdCBDb2xvciYpOwogCiAvLyBP
bmUgb3IgYm90aCBtdXN0IGJlIG91dCBvZiBsaW5lIGNvbG9ycy4KIGJvb2wgb3V0T2ZMaW5lQ29t
cG9uZW50c3NFcXVhbChjb25zdCBDb2xvciYsIGNvbnN0IENvbG9yJik7CkBAIC0yODEsMTEgKzI4
MCw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3ImIGEsIGNvbnN0IENvbG9y
JiBiKQogICAgIHJldHVybiBhLm1fY29sb3JBbmRGbGFncyA9PSBiLm1fY29sb3JBbmRGbGFnczsK
IH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2xvciYgYSwgY29uc3QgQ29sb3Im
IGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogaW5saW5lIGJvb2wgb3V0T2ZMaW5l
Q29tcG9uZW50c3NFcXVhbChjb25zdCBDb2xvciYgYSwgY29uc3QgQ29sb3ImIGIpCiB7CiAgICAg
aWYgKGEuaXNPdXRPZkxpbmUoKSAmJiBiLmlzT3V0T2ZMaW5lKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbXBvbmVudHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCmluZGV4IGMzOWRkZGQ0
YWY5MTViZTE1OWZmOWUwZjE3ODFjZTdhY2Y3N2Q4MWIuLmIxMDgxMjMzODY0ZjVhYjcxNTI2MmFj
ZmJjNjEyYjAxZDY1NDJkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yQ29tcG9uZW50cy5oCkBAIC01MSw2ICs1MSw4IEBAIHN0cnVjdCBDb2xvckNv
bXBvbmVudHMgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEY+CiAgICAgY29uc3RleHByIGF1dG8g
bWFwKEYmJiBmdW5jdGlvbikgY29uc3QgLT4gQ29sb3JDb21wb25lbnRzPGRlY2x0eXBlKGZ1bmN0
aW9uKHN0ZDo6ZGVjbHZhbDxUPigpKSksIE4+OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENvbG9yQ29tcG9uZW50cyYpIGNvbnN0ID0gZGVmYXVsdDsKKwogICAgIGNvbnN0ZXhwciBDb2xv
ckNvbXBvbmVudHMmIG9wZXJhdG9yKz0oY29uc3QgQ29sb3JDb21wb25lbnRzJik7CiAgICAgY29u
c3RleHByIENvbG9yQ29tcG9uZW50cyYgb3BlcmF0b3IvPShUKTsKIApAQCAtMTYyLDE4ICsxNjQs
NiBAQCBjb25zdGV4cHIgQ29sb3JDb21wb25lbnRzPFQsIE4+IHBlckNvbXBvbmVudE1pbihjb25z
dCBDb2xvckNvbXBvbmVudHM8VCwgTj4mIGEsCiAgICAgcmV0dXJuIG1hcENvbG9yQ29tcG9uZW50
cyhbXShUIGMxLCBUIGMyKSB7IHJldHVybiBzdGQ6Om1pbihjMSwgYzIpOyB9LCBhLCBiKTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4+Ci1jb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENvbG9yQ29tcG9uZW50czxULCBOPiYgYSwgY29uc3QgQ29sb3JDb21wb25lbnRz
PFQsIE4+JiBiKQotewotICAgIHJldHVybiBhLmNvbXBvbmVudHMgPT0gYi5jb21wb25lbnRzOwot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgTj4KLWNvbnN0ZXhwciBib29sIG9wZXJh
dG9yIT0oY29uc3QgQ29sb3JDb21wb25lbnRzPFQsIE4+JiBhLCBjb25zdCBDb2xvckNvbXBvbmVu
dHM8VCwgTj4mIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiBuYW1lc3BhY2Ugc3RkIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgKaW5kZXgg
ZWU2Y2JhMGQxZDNhZDdiZDExODZjM2M5Mzc5ZWZhOGE4MDNhYmNiMi4uZWQ4NTYxYjg2OWQzNDdj
MjVkOWM2YmFlZTY4ZDIzMDBhNmYwYTc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgKQEAgLTYw
LDQ1ICs2MCw1NSBAQCBzdHJ1Y3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsKICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9sYXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRl
cnBvbGF0aW9uQ29sb3JTcGFjZTo6SFNMOwogICAgICAgICB1c2luZyBDb2xvclR5cGUgPSBXZWJD
b3JlOjpIU0xBPGZsb2F0PjsKICAgICAgICAgSHVlSW50ZXJwb2xhdGlvbk1ldGhvZCBodWVJbnRl
cnBvbGF0aW9uTWV0aG9kID0gSHVlSW50ZXJwb2xhdGlvbk1ldGhvZDo6U2hvcnRlcjsKKyAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhTTCYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9Owog
ICAgIHN0cnVjdCBIV0IgewogICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaW50ZXJwb2xh
dGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpIV0I7CiAgICAg
ICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6OkhXQkE8ZmxvYXQ+OwogICAgICAgICBIdWVJ
bnRlcnBvbGF0aW9uTWV0aG9kIGh1ZUludGVycG9sYXRpb25NZXRob2QgPSBIdWVJbnRlcnBvbGF0
aW9uTWV0aG9kOjpTaG9ydGVyOworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSFdCJikg
Y29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAgICAgc3RydWN0IExDSCB7CiAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xh
dGlvbkNvbG9yU3BhY2U6OkxDSDsKICAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6
TENIQTxmbG9hdD47CiAgICAgICAgIEh1ZUludGVycG9sYXRpb25NZXRob2QgaHVlSW50ZXJwb2xh
dGlvbk1ldGhvZCA9IEh1ZUludGVycG9sYXRpb25NZXRob2Q6OlNob3J0ZXI7CisgICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBMQ0gmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKICAgICBz
dHJ1Y3QgTGFiIHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9sYXRpb25D
b2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6TGFiOwogICAgICAgICB1
c2luZyBDb2xvclR5cGUgPSBXZWJDb3JlOjpMYWI8ZmxvYXQ+OworICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgTGFiJikgY29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAgICAgc3RydWN0IE9L
TENIIHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9sYXRpb25Db2xvclNw
YWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6T0tMQ0g7CiAgICAgICAgIHVzaW5n
IENvbG9yVHlwZSA9IFdlYkNvcmU6Ok9LTENIQTxmbG9hdD47CiAgICAgICAgIEh1ZUludGVycG9s
YXRpb25NZXRob2QgaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCA9IEh1ZUludGVycG9sYXRpb25NZXRo
b2Q6OlNob3J0ZXI7CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPS0xDSCYpIGNvbnN0
ID0gZGVmYXVsdDsKICAgICB9OwogICAgIHN0cnVjdCBPS0xhYiB7CiAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlv
bkNvbG9yU3BhY2U6Ok9LTGFiOwogICAgICAgICB1c2luZyBDb2xvclR5cGUgPSBXZWJDb3JlOjpP
S0xhYjxmbG9hdD47CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPS0xhYiYpIGNvbnN0
ID0gZGVmYXVsdDsKICAgICB9OwogICAgIHN0cnVjdCBTUkdCIHsKICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGludGVycG9sYXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9u
Q29sb3JTcGFjZTo6U1JHQjsKICAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6RXh0
ZW5kZWRTUkdCQTxmbG9hdD47CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTUkdCJikg
Y29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAgICAgc3RydWN0IFNSR0JMaW5lYXIgewogICAgICAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvcklu
dGVycG9sYXRpb25Db2xvclNwYWNlOjpTUkdCTGluZWFyOwogICAgICAgICB1c2luZyBDb2xvclR5
cGUgPSBXZWJDb3JlOjpFeHRlbmRlZExpbmVhclNSR0JBPGZsb2F0PjsKKyAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNSR0JMaW5lYXImKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKICAg
ICBzdHJ1Y3QgWFlaRDUwIHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9s
YXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6WFlaRDUwOwog
ICAgICAgICB1c2luZyBDb2xvclR5cGUgPSBXZWJDb3JlOjpYWVpBPGZsb2F0LCBXaGl0ZVBvaW50
OjpENTA+OworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgWFlaRDUwJikgY29uc3QgPSBk
ZWZhdWx0OwogICAgIH07CiAgICAgc3RydWN0IFhZWkQ2NSB7CiAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNv
bG9yU3BhY2U6OlhZWkQ2NTsKICAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6WFla
QTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PjsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFhZWkQ2NSYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtMTA2LDYgKzExNiw4
IEBAIHN0cnVjdCBDb2xvckludGVycG9sYXRpb25NZXRob2QgewogCiAgICAgc3RkOjp2YXJpYW50
PEhTTCwgSFdCLCBMQ0gsIExhYiwgT0tMQ0gsIE9LTGFiLCBTUkdCLCBTUkdCTGluZWFyLCBYWVpE
NTAsIFhZWkQ2NT4gY29sb3JTcGFjZTsKICAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhh
UHJlbXVsdGlwbGljYXRpb247CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kJikgY29uc3QgPSBkZWZhdWx0OwogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4gdm9pZCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdApAQCAtMTk4LDYxICsyMTAsNiBAQCBpbmxpbmUgdm9pZCBhZGQoSGFz
aGVyJiBoYXNoZXIsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCYgY29sb3JJbnRlcnBv
bGF0aQogICAgICk7CiB9CiAKLWlubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6SFNMJiBhLCBjb25zdCBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OkhTTCYgYikKLXsKLSAgICByZXR1cm4gYS5odWVJbnRlcnBvbGF0aW9uTWV0aG9k
ID09IGIuaHVlSW50ZXJwb2xhdGlvbk1ldGhvZDsKLX0KLQotaW5saW5lIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpIV0ImIGEsIGNvbnN0
IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6SFdCJiBiKQotewotICAgIHJldHVybiBhLmh1ZUlu
dGVycG9sYXRpb25NZXRob2QgPT0gYi5odWVJbnRlcnBvbGF0aW9uTWV0aG9kOwotfQotCi1pbmxp
bmUgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRo
b2Q6OkxDSCYgYSwgY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpMQ0gmIGIpCi17Ci0g
ICAgcmV0dXJuIGEuaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCA9PSBiLmh1ZUludGVycG9sYXRpb25N
ZXRob2Q7Ci19Ci0KLWlubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZDo6T0tMQ0gmIGEsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZDo6T0tMQ0gmIGIpCi17Ci0gICAgcmV0dXJuIGEuaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCA9
PSBiLmh1ZUludGVycG9sYXRpb25NZXRob2Q7Ci19Ci0KLWlubGluZSBjb25zdGV4cHIgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6TGFiJiwgY29uc3QgQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpMYWImKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1p
bmxpbmUgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvckludGVycG9sYXRpb25N
ZXRob2Q6Ok9LTGFiJiwgY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpPS0xhYiYpCi17
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiYsIGNvbnN0IENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZDo6U1JHQiYpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6
U1JHQkxpbmVhciYsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQkxpbmVhciYp
Ci17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6WFlaRDUwJiwgY29uc3QgQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kOjpYWVpENTAmKQotewotICAgIHJldHVybiB0cnVlOwotfQotCi1p
bmxpbmUgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xvckludGVycG9sYXRpb25N
ZXRob2Q6OlhZWkQ2NSYsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6WFlaRDY1JikK
LXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotaW5saW5lIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kJiBhLCBjb25zdCBDb2xvckludGVycG9s
YXRpb25NZXRob2QmIGIpCi17Ci0gICAgcmV0dXJuIGEuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA9
PSBiLmFscGhhUHJlbXVsdGlwbGljYXRpb24gJiYgYS5jb2xvclNwYWNlID09IGIuY29sb3JTcGFj
ZTsKLX0KLQogfQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Db2xvck1hdHJpeC5oCmluZGV4IGYzMmI0OTZiNjVhZDhiMjgxM2YwYTNhYTQ3
MjlkOGI5ZDczNmNlNDMuLjhhMTYzOGMxZjk0OWM3MzAxY2ZmODc2MTA1MmRmOTQ5NTNiNTM0OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNYXRyaXguaApA
QCAtNTAsMjkgKzUwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbWF0cml4Wyhyb3cg
KiBDb2x1bW5Db3VudCkgKyBjb2x1bW5dOwogICAgIH0KIAorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDb2xvck1hdHJpeCYpIGNvbnN0ID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICBzdGQ6
OmFycmF5PGZsb2F0LCBSb3dDb3VudCAqIENvbHVtbkNvdW50PiBtX21hdHJpeDsKIH07CiAKLXRl
bXBsYXRlPHNpemVfdCBDb2x1bW5Db3VudCwgc2l6ZV90IFJvd0NvdW50PgotY29uc3RleHByIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBDb2xvck1hdHJpeDxDb2x1bW5Db3VudCwgUm93Q291bnQ+JiBh
LCBjb25zdCBDb2xvck1hdHJpeDxDb2x1bW5Db3VudCwgUm93Q291bnQ+JiBiKQotewotICAgIGZv
ciAoc2l6ZV90IHJvdyA9IDA7IHJvdyA8IFJvd0NvdW50OyArK3JvdykgewotICAgICAgICBmb3Ig
KHNpemVfdCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBDb2x1bW5Db3VudDsgKytjb2x1bW4pIHsKLSAg
ICAgICAgICAgIGlmIChhLmF0KHJvdywgY29sdW1uKSAhPSBiLmF0KHJvdywgY29sdW1uKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLXRlbXBsYXRlPHNpemVfdCBDb2x1bW5Db3VudCwgc2l6ZV90IFJvd0NvdW50
PgotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2xvck1hdHJpeDxDb2x1bW5Db3Vu
dCwgUm93Q291bnQ+JiBhLCBjb25zdCBDb2xvck1hdHJpeDxDb2x1bW5Db3VudCwgUm93Q291bnQ+
JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLQogLy8gRklYTUU6IFRoZXNlIGFy
ZSBvbmx5IHVzZWQgaW4gRmlsdGVyT3BlcmF0aW9ucy5jcHAuIENvbnNpZGVyIG1vdmluZyB0aGVt
IHRoZXJlLgogY29uc3RleHByIENvbG9yTWF0cml4PDMsIDM+IGdyYXlzY2FsZUNvbG9yTWF0cml4
KGZsb2F0IGFtb3VudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yVHlwZXMuaAppbmRleCAyOGU3OGQ0ZGYzYTU5Y2JiODZlMWQzZWIwNjAzZjA5N2RmYTRlZmE5
Li5mY2MwZGRiNWRhZGExODc1MzJmNGMzZjU0OTA4MTIyOTg5YjE0MzA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclR5cGVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JUeXBlcy5oCkBAIC0xOTMsMTIgKzE5Myw2
IEBAIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JUeXBlJiBhLCBjb25zdCBD
b2xvclR5cGUmIGIpCiAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGEudW5yZXNvbHZlZCgp
KSA9PSBhc0NvbG9yQ29tcG9uZW50cyhiLnVucmVzb2x2ZWQoKSk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIENvbG9yVHlwZSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxJc0NvbnZlcnRpYmxl
VG9Db2xvckNvbXBvbmVudHM8Q29sb3JUeXBlPj4qID0gbnVsbHB0cj4KLWNvbnN0ZXhwciBib29s
IG9wZXJhdG9yIT0oY29uc3QgQ29sb3JUeXBlJiBhLCBjb25zdCBDb2xvclR5cGUmIGIpCi17Ci0g
ICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQogCiAvLyBNQVJLOiAtIFJHQiBDb2xvciBUeXBlcy4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdP
cHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlv
bnMuaAppbmRleCA3YmJlYzExYzk0YWM2NWRkN2RhMTE3YmIxODMzYTYwZTNjYjcxNWY4Li45ZmUy
YjQzMGNhNDA5MmJhMDBiYWNjYjk2ZTZkMjdmMzhjZTgyMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaApAQCAtNTAsMTAgKzUw
LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RGVjb2RpbmdPcHRpb25zJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Rl
Y29kaW5nTW9kZU9yU2l6ZSA9PSBvdGhlci5tX2RlY29kaW5nTW9kZU9yU2l6ZTsKLSAgICB9Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlY29kaW5nT3B0aW9ucyYpIGNvbnN0ID0gZGVmYXVs
dDsKIAogICAgIGJvb2wgaXNBdXRvKCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcApp
bmRleCAwMzZhZWUyMGYxZmFhYjM2OGE0NzA0ZDRiYzg3NTQ3M2JhMWRkMjFjLi42NTQ5ZDEyMWUx
N2U1NDE1NWI4NDJlNTA0MjA0OGFlMWM0MDVlZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAKQEAg
LTEwMywxMSArMTAzLDYgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgYSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBiKQogI2VuZGlmCiB9CiAKLWJv
b2wgb3BlcmF0b3IhPShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGEsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBzdGQ6
Om9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gRGVzdGluYXRpb25Db2xvclNwYWNlOjph
c1JHQigpIGNvbnN0CiB7CiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAppbmRleCAzYmU5MDhm
NzVjNTQ1Yzk0YjI3YTE4OGJhNjFiYjk1YzZiYjcxMWU2Li4xOGRkYzFiMTc1YzJjYWY4NTdiNzI4
M2VlMTE4MTk5ZGZkMDQ1OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaApAQCAtNTQsNyArNTQsNiBAQCBw
cml2YXRlOgogfTsKIAogV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwotV0VCQ09S
RV9FWFBPUlQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwogCiBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2lu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCmluZGV4
IDI5NGFmOTcxNmRiYThlMjNiNWNjNGM0MWE0ZmJlY2E1ZWNjOWZjN2EuLjEwNDA1ZGI2ZDgzM2Vi
MzVhZjVkZmZhZTkzNTc2YWNjY2MxZjg3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFBvaW50LmgKQEAgLTE3Nyw2ICsxNzcsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiB7IG1feSwgbV94IH07CiAgICAgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEZsb2F0UG9pbnQmKSBjb25zdCA9IGRlZmF1bHQ7CisKICNpZiBVU0UoQ0cpCiAgICAgV0VC
Q09SRV9FWFBPUlQgRmxvYXRQb2ludChjb25zdCBDR1BvaW50Jik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgb3BlcmF0b3IgQ0dQb2ludCgpIGNvbnN0OwpAQCAtMjM5LDE2ICsyNDEsNiBAQCBpbmxpbmUg
RmxvYXRQb2ludCBvcGVyYXRvci0oY29uc3QgRmxvYXRQb2ludCYgYSkKICAgICByZXR1cm4gRmxv
YXRQb2ludCgtYS54KCksIC1hLnkoKSk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgRmxvYXRQb2ludCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKLXsKLSAgICByZXR1cm4gYS54
KCkgPT0gYi54KCkgJiYgYS55KCkgPT0gYi55KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgRmxvYXRQb2ludCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKLXsKLSAgICByZXR1
cm4gYS54KCkgIT0gYi54KCkgfHwgYS55KCkgIT0gYi55KCk7Ci19Ci0KIGlubGluZSBmbG9hdCBv
cGVyYXRvciooY29uc3QgRmxvYXRQb2ludCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKIHsKICAg
ICAvLyBkb3QgcHJvZHVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRQb2ludDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFBvaW50M0QuaAppbmRleCBkMmIzZTVlYzRmODFkNGRlNTE0Y2FmNzc2ZGQxNzZhMjI5M2Ix
MWNjLi43MmI0ZDMyM2JhYzg0ODdkYjAwNmZlMDI3ODc4NWJkZjRkYjg2ZjM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaApAQCAtMTE5LDYg
KzExOSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBmbG9hdCBkaXN0YW5jZVRvKGNvbnN0IEZsb2F0
UG9pbnQzRCYgYSkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmxvYXRQb2lu
dDNEJikgY29uc3QgPSBkZWZhdWx0OworCiBwcml2YXRlOgogICAgIGZsb2F0IG1feCB7IDAgfTsK
ICAgICBmbG9hdCBtX3kgeyAwIH07CkBAIC0xNjksMTYgKzE3MSw2IEBAIGlubGluZSBGbG9hdFBv
aW50M0Qgb3BlcmF0b3ItKGNvbnN0IEZsb2F0UG9pbnQzRCYgYSwgY29uc3QgRmxvYXRQb2ludCYg
YikKICAgICByZXR1cm4gRmxvYXRQb2ludDNEKGEueCgpIC0gYi54KCksIGEueSgpIC0gYi55KCks
IGEueigpKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFBvaW50M0Qm
IGEsIGNvbnN0IEZsb2F0UG9pbnQzRCYgYikKLXsKLSAgICByZXR1cm4gYS54KCkgPT0gYi54KCkg
JiYgYS55KCkgPT0gYi55KCkgJiYgYS56KCkgPT0gYi56KCk7Ci19Ci0KLWlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgRmxvYXRQb2ludDNEJiBhLCBjb25zdCBGbG9hdFBvaW50M0QmIGIpCi17
Ci0gICAgcmV0dXJuIGEueCgpICE9IGIueCgpIHx8IGEueSgpICE9IGIueSgpIHx8IGEueigpICE9
IGIueigpOwotfQotCiBpbmxpbmUgZmxvYXQgb3BlcmF0b3IqKGNvbnN0IEZsb2F0UG9pbnQzRCYg
YSwgY29uc3QgRmxvYXRQb2ludDNEJiBiKQogewogICAgIC8vIGRvdCBwcm9kdWN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5oCmluZGV4IDBmNjMwM2QyZDFl
NDMwN2E1MzNkOTI0MDc5OWVkOTlhZTdiOWQ3YjQuLmQzNDBjMDlhNTgzZGYyNDE5MDJlNTU4NTBj
Yjc5OGQ2M2Q0MTZhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0UXVhZC5oCkBAIC0xNTMsNiArMTUzLDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9hdFF1YWQ+IGRlY29kZShEZWNvZGVy
Jik7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmxvYXRRdWFkJikgY29uc3QgPSBkZWZh
dWx0OworCiBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9wMTsKICAgICBGbG9hdFBvaW50IG1f
cDI7CkBAIC0yMDUsMTYgKzIwNyw2IEBAIGlubGluZSBGbG9hdFF1YWQmIG9wZXJhdG9yLT0oRmxv
YXRRdWFkJiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRmxvYXRRdWFkJiBhLCBjb25zdCBGbG9hdFF1YWQmIGIp
Ci17Ci0gICAgcmV0dXJuIGEucDEoKSA9PSBiLnAxKCkgJiYgYS5wMigpID09IGIucDIoKSAmJiBh
LnAzKCkgPT0gYi5wMygpICYmIGEucDQoKSA9PSBiLnA0KCk7Ci19Ci0KLWlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgRmxvYXRRdWFkJiBhLCBjb25zdCBGbG9hdFF1YWQmIGIpCi17Ci0gICAg
cmV0dXJuICEoYSA9PSBiKTsKLX0KLQogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEZsb2F0UXVhZCYpOwogCiBWZWN0b3I8
RmxvYXRSZWN0PiBib3VuZGluZ0JveGVzKGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oCmluZGV4IDE3YjdhY2Qz
MjUwYWQ1MjBiZGI4OTRjNGMzN2U2ZTlmNWNhYzIyNjAuLmQ2OGMxZjUzMWY5YWQ2MDY4ZWI3Mjdj
MjI5Yjg4YWIwNjRhYzgyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0UmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UmVjdC5oCkBAIC0yMjksNiArMjI5LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBGbG9h
dFJlY3QgaW5maW5pdGVSZWN0KCk7CiAgICAgYm9vbCBpc0luZmluaXRlKCkgY29uc3Q7CiAKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmxvYXRSZWN0JikgY29uc3QgPSBkZWZhdWx0OworCiBw
cml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV9sb2NhdGlvbjsKICAgICBGbG9hdFNpemUgbV9zaXpl
OwpAQCAtMjcwLDE2ICsyNzIsNiBAQCBpbmxpbmUgRmxvYXRSZWN0IG9wZXJhdG9yKyhjb25zdCBG
bG9hdFJlY3QmIGEsIGNvbnN0IEZsb2F0UmVjdCYgYikKICAgICByZXR1cm4gYzsKIH0KIAotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFJlY3QmIGEsIGNvbnN0IEZsb2F0UmVjdCYg
YikKLXsKLSAgICByZXR1cm4gYS5sb2NhdGlvbigpID09IGIubG9jYXRpb24oKSAmJiBhLnNpemUo
KSA9PSBiLnNpemUoKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGbG9hdFJl
Y3QmIGEsIGNvbnN0IEZsb2F0UmVjdCYgYikKLXsKLSAgICByZXR1cm4gYS5sb2NhdGlvbigpICE9
IGIubG9jYXRpb24oKSB8fCBhLnNpemUoKSAhPSBiLnNpemUoKTsKLX0KLQogaW5saW5lIEZsb2F0
UmVjdCBGbG9hdFJlY3Q6OmluZmluaXRlUmVjdCgpCiB7CiAgICAgc3RhdGljIEZsb2F0UmVjdCBp
bmZpbml0ZVJlY3QoLXN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSAvIDIsIC1zdGQ6
Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgLyAyLCBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6bWF4KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJvdW5kZWRSZWN0LmgKaW5k
ZXggNzcyNGQwM2UxODE1OGNmYjViNmRjMWU5YzQ5ZGNmODg2ZWRmYjdmMC4uYWMwMWIxMTNmNmIy
NDM2NDRmOGY3MTA3NTcwOWE4NjBlNDM1MWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuaApAQCAtOTQsNiArOTQsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHZvaWQgc2hyaW5rKGZsb2F0IHRvcFdpZHRoLCBmbG9hdCBib3R0b21X
aWR0aCwgZmxvYXQgbGVmdFdpZHRoLCBmbG9hdCByaWdodFdpZHRoKSB7IGV4cGFuZCgtdG9wV2lk
dGgsIC1ib3R0b21XaWR0aCwgLWxlZnRXaWR0aCwgLXJpZ2h0V2lkdGgpOyB9CiAgICAgICAgIHZv
aWQgc2hyaW5rKGZsb2F0IHNpemUpIHsgc2hyaW5rKHNpemUsIHNpemUsIHNpemUsIHNpemUpOyB9
CiAKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJhZGlpJikgY29uc3QgPSBkZWZhdWx0
OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgRmxvYXRTaXplIG1fdG9wTGVmdDsKICAgICAgICAg
RmxvYXRTaXplIG1fdG9wUmlnaHQ7CkBAIC0xNDQsMzEgKzE0NiwxMyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGludGVyc2VjdGlvbklzUmVjdGFuZ3VsYXIoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7
CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpIGNvbnN0ID0g
ZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIFJhZGlpIG1f
cmFkaWk7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZsb2F0Um91bmRlZFJl
Y3Q6OlJhZGlpJiBhLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpSYWRpaSYgYikKLXsKLSAgICBy
ZXR1cm4gYS50b3BMZWZ0KCkgPT0gYi50b3BMZWZ0KCkgJiYgYS50b3BSaWdodCgpID09IGIudG9w
UmlnaHQoKSAmJiBhLmJvdHRvbUxlZnQoKSA9PSBiLmJvdHRvbUxlZnQoKSAmJiBhLmJvdHRvbVJp
Z2h0KCkgPT0gYi5ib3R0b21SaWdodCgpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IEZsb2F0Um91bmRlZFJlY3Q6OlJhZGlpJiBhLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0OjpS
YWRpaSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGEsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IGIpCi17Ci0gICAgcmV0dXJuIGEucmVjdCgpID09IGIucmVjdCgpICYmIGEucmFkaWkoKSA9PSBi
LnJhZGlpKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgYSwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgYikKLXsKLSAgICByZXR1cm4gIShhID09
IGIpOwotfQotCiBpbmxpbmUgZmxvYXQgY2FsY0JvcmRlclJhZGlpQ29uc3RyYWludFNjYWxlRm9y
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdDo6UmFkaWkmIHJh
ZGlpKQogewogICAgIC8vIENvbnN0cmFpbiBjb3JuZXIgcmFkaWkgdXNpbmcgQ1NTMyBydWxlczoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKaW5kZXggZGVi
OWExNWY4MzM5ODY4ZjY3N2YyZjEyOTBjYjYwNDZjY2YyYWVhZC4uMzJkZjNlYmM3YTUzZWRiM2I1
OTc1ODhlZmU1MTMzYmJhMjBkZDM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRTaXplLmgKQEAgLTE1Nyw2ICsxNTcsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IHRvSlNPTlN0cmluZygpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxKU09OOjpPYmpl
Y3Q+IHRvSlNPTk9iamVjdCgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZs
b2F0U2l6ZSYpIGNvbnN0ID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICBmbG9hdCBtX3dpZHRo
IHsgMCB9OwogICAgIGZsb2F0IG1faGVpZ2h0IHsgMCB9OwpAQCAtMjIxLDIxICsyMjMsMTEgQEAg
aW5saW5lIEZsb2F0U2l6ZSBvcGVyYXRvci8oZmxvYXQgYSwgY29uc3QgRmxvYXRTaXplJiBiKQog
ICAgIHJldHVybiBGbG9hdFNpemUoYSAvIGIud2lkdGgoKSwgYSAvIGIuaGVpZ2h0KCkpOwogfQog
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRT
aXplJiBiKQotewotICAgIHJldHVybiBhLndpZHRoKCkgPT0gYi53aWR0aCgpICYmIGEuaGVpZ2h0
KCkgPT0gYi5oZWlnaHQoKTsKLX0KLQogaW5saW5lIGJvb2wgYXJlRXNzZW50aWFsbHlFcXVhbChj
b25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKIHsKICAgICByZXR1cm4gV1RG
OjphcmVFc3NlbnRpYWxseUVxdWFsKGEud2lkdGgoKSwgYi53aWR0aCgpKSAmJiBXVEY6OmFyZUVz
c2VudGlhbGx5RXF1YWwoYS5oZWlnaHQoKSwgYi5oZWlnaHQoKSk7CiB9CiAKLWlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgRmxvYXRTaXplJiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCi17Ci0g
ICAgcmV0dXJuIGEud2lkdGgoKSAhPSBiLndpZHRoKCkgfHwgYS5oZWlnaHQoKSAhPSBiLmhlaWdo
dCgpOwotfQotCiBpbmxpbmUgSW50U2l6ZSByb3VuZGVkSW50U2l6ZShjb25zdCBGbG9hdFNpemUm
IHApCiB7CiAgICAgcmV0dXJuIEludFNpemUoY2xhbXBUb0ludGVnZXIocm91bmRmKHAud2lkdGgo
KSkpLCBjbGFtcFRvSW50ZWdlcihyb3VuZGYocC5oZWlnaHQoKSkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggNGU5NDlkZmFiOTc2NWEyYTA3YzQ4Nzhh
YmVlMTAzZmJhZjIxZjU3MC4uNzU2MjYzYTk1YjEwYjFkOGQwODQ0YzU5ZWRjYjM2ZWVjMWI4OWE2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKQEAgLTU2MCwx
MyArNTYwLDkgQEAgc3RydWN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5IHsKICAgICBBdG9tU3Ry
aW5nIGxvY2FsZTsKICAgICBVQ2hhcjMyIGNoYXJhY3RlciB7IDAgfTsKICAgICBib29sIGlzRm9y
UGxhdGZvcm1Gb250IHsgZmFsc2UgfTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2hhcmFj
dGVyRmFsbGJhY2tNYXBLZXkmKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCi1pbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5JiBhLCBjb25zdCBDaGFyYWN0
ZXJGYWxsYmFja01hcEtleSYgYikKLXsKLSAgICByZXR1cm4gYS5sb2NhbGUgPT0gYi5sb2NhbGUg
JiYgYS5jaGFyYWN0ZXIgPT0gYi5jaGFyYWN0ZXIgJiYgYS5pc0ZvclBsYXRmb3JtRm9udCA9PSBi
LmlzRm9yUGxhdGZvcm1Gb250OwotfQotCiBzdHJ1Y3QgQ2hhcmFjdGVyRmFsbGJhY2tNYXBLZXlI
YXNoIHsKICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBDaGFyYWN0ZXJGYWxsYmFja01h
cEtleSYga2V5KSB7IHJldHVybiBjb21wdXRlSGFzaChrZXkubG9jYWxlLCBrZXkuY2hhcmFjdGVy
LCBrZXkuaXNGb3JQbGF0Zm9ybUZvbnQpOyB9CiAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
Q2hhcmFjdGVyRmFsbGJhY2tNYXBLZXkmIGEsIGNvbnN0IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5
JiBiKSB7IHJldHVybiBhID09IGI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IGIyNWU3ZGZiOTdhMTAyOTk3YjBmYWUzM2Q3NTM4MTVm
ODlhMzAzZWQuLmE1MzQ5ZjQ0ODI3YTYxMTg3ZTY0MDBhMDNkYzRkZjQ5YzdmNzM2NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtNzUs
MjQgKzc1LDEzIEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udEZhbWlseU5hbWUm
IGEsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBiKQogICAgIHJldHVybiAoYS5zdHJpbmcoKS5pc051
bGwoKSB8fCBiLnN0cmluZygpLmlzTnVsbCgpKSA/IGEuc3RyaW5nKCkgPT0gYi5zdHJpbmcoKSA6
IEZvbnRDYXNjYWRlRGVzY3JpcHRpb246OmZhbWlseU5hbWVzQXJlRXF1YWwoYS5zdHJpbmcoKSwg
Yi5zdHJpbmcoKSk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udEZhbWls
eU5hbWUmIGEsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJiBiKQotewotICAgIHJldHVybiAhKGEgPT0g
Yik7Ci19Ci0KIHN0cnVjdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkgewogICAgIEZvbnREZXNj
cmlwdGlvbktleSBkZXNjcmlwdGlvbktleTsKICAgICBGb250RmFtaWx5TmFtZSBmYW1pbHk7CiAg
ICAgRm9udENyZWF0aW9uQ29udGV4dCBmb250Q3JlYXRpb25Db250ZXh0OworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGb250UGxhdGZvcm1EYXRhQ2FjaGVLZXkmKSBjb25zdCA9IGRlZmF1bHQ7
CiB9OwogCi1zdGF0aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGFDYWNo
ZUtleSYgYSwgY29uc3QgRm9udFBsYXRmb3JtRGF0YUNhY2hlS2V5JiBiKQotewotICAgIHJldHVy
biBhLmRlc2NyaXB0aW9uS2V5ID09IGIuZGVzY3JpcHRpb25LZXkKLSAgICAgICAgJiYgYS5mYW1p
bHkgPT0gYi5mYW1pbHkKLSAgICAgICAgJiYgYS5mb250Q3JlYXRpb25Db250ZXh0ID09IGIuZm9u
dENyZWF0aW9uQ29udGV4dDsKLX0KLQogc3RydWN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleUhh
c2ggewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGFDYWNo
ZUtleSYga2V5KSB7IHJldHVybiBjb21wdXRlSGFzaChrZXkuZGVzY3JpcHRpb25LZXksIGtleS5m
YW1pbHksIGtleS5mb250Q3JlYXRpb25Db250ZXh0KTsgfQogICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IEZvbnRQbGF0Zm9ybURhdGFDYWNoZUtleSYgYSwgY29uc3QgRm9udFBsYXRmb3JtRGF0
YUNhY2hlS2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KQEAgLTM1NCwxNCArMzQzLDYgQEAgdm9p
ZCBGb250Q2FjaGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YSh1bnNpZ25lZCBwdXJnZUNvdW50KQog
ICAgIHBsYXRmb3JtUHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiB9CiAKLWJvb2wgb3BlcmF0b3I9
PShjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5JiBhLCBjb25zdCBGb250Q2FzY2FkZUNhY2hlS2V5
JiBiKQotewotICAgIHJldHVybiBhLmZvbnREZXNjcmlwdGlvbktleSA9PSBiLmZvbnREZXNjcmlw
dGlvbktleQotICAgICAgICAmJiBhLmZvbnRTZWxlY3RvcklkID09IGIuZm9udFNlbGVjdG9ySWQK
LSAgICAgICAgJiYgYS5mb250U2VsZWN0b3JWZXJzaW9uID09IGIuZm9udFNlbGVjdG9yVmVyc2lv
bgotICAgICAgICAmJiBhLmZhbWlsaWVzID09IGIuZmFtaWxpZXM7Ci19Ci0KIHVuc2lnbmVkIEZv
bnRDYXNjYWRlQ2FjaGVLZXlIYXNoOjpoYXNoKGNvbnN0IEZvbnRDYXNjYWRlQ2FjaGVLZXkmIGtl
eSkKIHsKICAgICByZXR1cm4gY29tcHV0ZUhhc2goa2V5LmZvbnREZXNjcmlwdGlvbktleSwga2V5
LmZvbnRTZWxlY3RvcklkLCBrZXkuZm9udFNlbGVjdG9yVmVyc2lvbiwga2V5LmZhbWlsaWVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKaW5kZXggNzZi
YjlmM2JiYjUxNGIwMTQ1YjdhOWUxNzQ3NzNjNTM0NzEzNWZhOS4uNWFkNzVjYzgyZTkyY2FiNmM1
MTY5ZjhkMWNlYzljZjkwMmZmYzM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmgKQEAgLTE2MSwxMSArMTYxLDYgQEAgc3RydWN0IEZvbnREZXNjcmlw
dGlvbktleSB7CiAgICAgICAgICAgICAmJiBhcmVQb2ludGluZ1RvRXF1YWxEYXRhKG1fcmFyZURh
dGEsIG90aGVyLm1fcmFyZURhdGEpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBGb250RGVzY3JpcHRpb25LZXkmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2lzRGVsZXRlZFZhbHVlOyB9CiAKICAgICBmcmllbmQg
dm9pZCBhZGQoSGFzaGVyJiwgY29uc3QgRm9udERlc2NyaXB0aW9uS2V5Jik7CkBAIC0yNDgsMTYg
KzI0MywxNSBAQCBwcml2YXRlOgogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRGYW1p
bHlOYW1lJiwgY29uc3QgRm9udEZhbWlseU5hbWUmKTsKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBG
b250RmFtaWx5TmFtZSYsIGNvbnN0IEZvbnRGYW1pbHlOYW1lJik7CiAKIHN0cnVjdCBGb250Q2Fz
Y2FkZUNhY2hlS2V5IHsKICAgICBGb250RGVzY3JpcHRpb25LZXkgZm9udERlc2NyaXB0aW9uS2V5
OyAvLyBTaGFyZWQgd2l0aCB0aGUgbG93ZXIgbGV2ZWwgRm9udENhY2hlIChjYWNoaW5nIEZvbnQg
b2JqZWN0cykKICAgICBWZWN0b3I8Rm9udEZhbWlseU5hbWUsIDM+IGZhbWlsaWVzOwogICAgIHVu
c2lnbmVkIGZvbnRTZWxlY3RvcklkOwogICAgIHVuc2lnbmVkIGZvbnRTZWxlY3RvclZlcnNpb247
Ci19OwogCi1ib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGVDYWNoZUtleSYsIGNvbnN0
IEZvbnRDYXNjYWRlQ2FjaGVLZXkmKTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udENh
c2NhZGVDYWNoZUtleSYpIGNvbnN0ID0gZGVmYXVsdDsKK307CiAKIHN0cnVjdCBGb250Q2FzY2Fk
ZUNhY2hlRW50cnkgewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IGMzNDU2
ODAxN2ZjZGU5ODNlNmY1YWM3MGVlMTc4M2E5ZjczZTkwNTMuLmQxMDBjNzllODU4ODkzMDdmNzdk
Zjg5YjMzMzYxYjdiZmU2NWQyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuaApAQCAtMTExLDcgKzExMSw2IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBGb250Q2FzY2FkZSYgb3BlcmF0b3I9KGNvbnN0IEZvbnRDYXNjYWRlJik7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udENhc2NhZGUmIG90
aGVyKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udENhc2NhZGUmIG90aGVy
KSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgY29uc3QgRm9udENh
c2NhZGVEZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mb250
RGVzY3JpcHRpb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGVEZXNjcmlwdGlvbi5oCmluZGV4IDYzZWJhMmI5MDc2ZjY2ZGUx
MTE2ODVhOWVmYTY4YTMyOWFmOWNkYjUuLjc0NWZiNDYxY2I2OGU3ZWVkNjc0MTU2YjM1Mzk2YjJh
OGI4MWQxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlRGVzY3JpcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZURlc2NyaXB0aW9uLmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24oKTsKIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJikgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIG90aGVyKSBjb25zdCB7
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgdW5zaWduZWQgZmFtaWx5Q291bnQo
KSBjb25zdCB7IHJldHVybiBtX2ZhbWlsaWVzLT5zaXplKCk7IH0KICAgICBjb25zdCBBdG9tU3Ry
aW5nJiBmaXJzdEZhbWlseSgpIGNvbnN0IHsgcmV0dXJuIGZhbWlseUF0KDApOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q3JlYXRpb25Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q3JlYXRpb25Db250ZXh0
LmgKaW5kZXggNjM0MmVhMDIyMmFiMWRjODEzYjllZmYwODEzY2UxNjBhNGE2ZWFlNS4uZjc2MGYy
NWUyMDk1YThiOTlmZmYzZTRjOWY5MGQ3MmE4NTA0YmMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENyZWF0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDcmVhdGlvbkNvbnRleHQuaApAQCAtNTUs
MTEgKzU1LDYgQEAgcHVibGljOgogICAgICAgICAgICAgJiYgbV9mb250UGFsZXR0ZVZhbHVlcyA9
PSBvdGhlci5tX2ZvbnRQYWxldHRlVmFsdWVzOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBGb250Q3JlYXRpb25Db250ZXh0UmFyZURhdGEmIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogcHJpdmF0ZToKICAg
ICBGb250Q3JlYXRpb25Db250ZXh0UmFyZURhdGEoY29uc3QgRm9udEZlYXR1cmVTZXR0aW5ncyYg
Zm9udEZhY2VGZWF0dXJlcywgY29uc3QgRm9udFBhbGV0dGVWYWx1ZXMmIGZvbnRQYWxldHRlVmFs
dWVzKQogICAgICAgICA6IG1fZm9udEZhY2VGZWF0dXJlcyhmb250RmFjZUZlYXR1cmVzKQpAQCAt
MTA0LDExICs5OSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVh
bERhdGEobV9yYXJlRGF0YSwgb3RoZXIubV9yYXJlRGF0YSk7CiAgICAgfQogCi0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IEZvbnRDcmVhdGlvbkNvbnRleHQmIG90aGVyKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogcHJpdmF0ZToKICAg
ICBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzIG1fZm9udEZhY2VDYXBhYmlsaXRp
ZXM7CiAgICAgUmVmUHRyPEZvbnRDcmVhdGlvbkNvbnRleHRSYXJlRGF0YT4gbV9yYXJlRGF0YTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlw
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9u
LmgKaW5kZXggNjgxOWEyMWE1ZWEwZTNjMmJkYjYwMzhkYTYyNzEyMzQzNjJhMDI0NS4uOWNmMTA5
ODg0YmIwZDQxZjUzNzAzNDRlNmIzYzNlMmU2ZGQyN2VmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgKQEAgLTQxLDggKzQxLDcg
QEAgY2xhc3MgRm9udERlc2NyaXB0aW9uIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBG
b250RGVzY3JpcHRpb24oKTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250RGVzY3Jp
cHRpb24mKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udERlc2NyaXB0aW9u
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRm9udERlc2NyaXB0aW9uJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAg
ZmxvYXQgY29tcHV0ZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlZFNpemU7IH0KICAg
ICB1bnNpZ25lZCBjb21wdXRlZFBpeGVsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHVuc2lnbmVkKG1f
Y29tcHV0ZWRTaXplICsgMC41Zik7IH0KQEAgLTE4Miw0MSArMTgxLDYgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBtX3Nob3VsZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nIDogMTsgLy8gSWYg
bGV0dGVyLXNwYWNpbmcgaXMgbm9uemVybywgd2UgbmVlZCB0byBkaXNhYmxlIGxpZ2F0dXJlcywg
d2hpY2ggYWZmZWN0cyBmb250IHByZXBhcmF0aW9uCiB9OwogCi1pbmxpbmUgYm9vbCBGb250RGVz
Y3JpcHRpb246Om9wZXJhdG9yPT0oY29uc3QgRm9udERlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9jb21wdXRlZFNpemUgPT0gb3RoZXIubV9jb21wdXRlZFNpemUKLSAg
ICAgICAgJiYgbV9mb250U2VsZWN0aW9uUmVxdWVzdCA9PSBvdGhlci5tX2ZvbnRTZWxlY3Rpb25S
ZXF1ZXN0Ci0gICAgICAgICYmIG1fcmVuZGVyaW5nTW9kZSA9PSBvdGhlci5tX3JlbmRlcmluZ01v
ZGUKLSAgICAgICAgJiYgbV90ZXh0UmVuZGVyaW5nID09IG90aGVyLm1fdGV4dFJlbmRlcmluZwot
ICAgICAgICAmJiBtX29yaWVudGF0aW9uID09IG90aGVyLm1fb3JpZW50YXRpb24KLSAgICAgICAg
JiYgbV9ub25DSktHbHlwaE9yaWVudGF0aW9uID09IG90aGVyLm1fbm9uQ0pLR2x5cGhPcmllbnRh
dGlvbgotICAgICAgICAmJiBtX3dpZHRoVmFyaWFudCA9PSBvdGhlci5tX3dpZHRoVmFyaWFudAot
ICAgICAgICAmJiBtX3NwZWNpZmllZExvY2FsZSA9PSBvdGhlci5tX3NwZWNpZmllZExvY2FsZQot
ICAgICAgICAmJiBtX2ZlYXR1cmVTZXR0aW5ncyA9PSBvdGhlci5tX2ZlYXR1cmVTZXR0aW5ncwot
ICAgICAgICAmJiBtX3ZhcmlhdGlvblNldHRpbmdzID09IG90aGVyLm1fdmFyaWF0aW9uU2V0dGlu
Z3MKLSAgICAgICAgJiYgbV9mb250U3ludGhlc2lzID09IG90aGVyLm1fZm9udFN5bnRoZXNpcwot
ICAgICAgICAmJiBtX3ZhcmlhbnRDb21tb25MaWdhdHVyZXMgPT0gb3RoZXIubV92YXJpYW50Q29t
bW9uTGlnYXR1cmVzCi0gICAgICAgICYmIG1fdmFyaWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMg
PT0gb3RoZXIubV92YXJpYW50RGlzY3JldGlvbmFyeUxpZ2F0dXJlcwotICAgICAgICAmJiBtX3Zh
cmlhbnRIaXN0b3JpY2FsTGlnYXR1cmVzID09IG90aGVyLm1fdmFyaWFudEhpc3RvcmljYWxMaWdh
dHVyZXMKLSAgICAgICAgJiYgbV92YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMgPT0gb3RoZXIu
bV92YXJpYW50Q29udGV4dHVhbEFsdGVybmF0ZXMKLSAgICAgICAgJiYgbV92YXJpYW50UG9zaXRp
b24gPT0gb3RoZXIubV92YXJpYW50UG9zaXRpb24KLSAgICAgICAgJiYgbV92YXJpYW50Q2FwcyA9
PSBvdGhlci5tX3ZhcmlhbnRDYXBzCi0gICAgICAgICYmIG1fdmFyaWFudE51bWVyaWNGaWd1cmUg
PT0gb3RoZXIubV92YXJpYW50TnVtZXJpY0ZpZ3VyZQotICAgICAgICAmJiBtX3ZhcmlhbnROdW1l
cmljU3BhY2luZyA9PSBvdGhlci5tX3ZhcmlhbnROdW1lcmljU3BhY2luZwotICAgICAgICAmJiBt
X3ZhcmlhbnROdW1lcmljRnJhY3Rpb24gPT0gb3RoZXIubV92YXJpYW50TnVtZXJpY0ZyYWN0aW9u
Ci0gICAgICAgICYmIG1fdmFyaWFudE51bWVyaWNPcmRpbmFsID09IG90aGVyLm1fdmFyaWFudE51
bWVyaWNPcmRpbmFsCi0gICAgICAgICYmIG1fdmFyaWFudE51bWVyaWNTbGFzaGVkWmVybyA9PSBv
dGhlci5tX3ZhcmlhbnROdW1lcmljU2xhc2hlZFplcm8KLSAgICAgICAgJiYgbV92YXJpYW50QWx0
ZXJuYXRlcyA9PSBvdGhlci5tX3ZhcmlhbnRBbHRlcm5hdGVzCi0gICAgICAgICYmIG1fdmFyaWFu
dEVhc3RBc2lhblZhcmlhbnQgPT0gb3RoZXIubV92YXJpYW50RWFzdEFzaWFuVmFyaWFudAotICAg
ICAgICAmJiBtX3ZhcmlhbnRFYXN0QXNpYW5XaWR0aCA9PSBvdGhlci5tX3ZhcmlhbnRFYXN0QXNp
YW5XaWR0aAotICAgICAgICAmJiBtX3ZhcmlhbnRFYXN0QXNpYW5SdWJ5ID09IG90aGVyLm1fdmFy
aWFudEVhc3RBc2lhblJ1YnkKLSAgICAgICAgJiYgbV9vcHRpY2FsU2l6aW5nID09IG90aGVyLm1f
b3B0aWNhbFNpemluZwotICAgICAgICAmJiBtX2ZvbnRTdHlsZUF4aXMgPT0gb3RoZXIubV9mb250
U3R5bGVBeGlzCi0gICAgICAgICYmIG1fc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMgPT0g
b3RoZXIubV9zaG91bGRBbGxvd1VzZXJJbnN0YWxsZWRGb250cwotICAgICAgICAmJiBtX3Nob3Vs
ZERpc2FibGVMaWdhdHVyZXNGb3JTcGFjaW5nID09IG90aGVyLm1fc2hvdWxkRGlzYWJsZUxpZ2F0
dXJlc0ZvclNwYWNpbmcKLSAgICAgICAgJiYgbV9mb250UGFsZXR0ZSA9PSBvdGhlci5tX2ZvbnRQ
YWxldHRlOwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBGb250RGVzY3JpcHRp
b246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlLmgKaW5kZXggNTQxYjA0OGZkNTA4NjI4NTJj
NjlmYWM5YTZhZjFkYWE4M2RlNzI5NS4uZTMyNmFjYmFjMTZmZWM5YTMxOTAwM2NiMTg5NDczNWNl
MWY0ZmEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dFBhbGV0dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGFs
ZXR0ZS5oCkBAIC0zMywxNyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3Qg
Rm9udFBhbGV0dGUgewotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGFsZXR0ZSYgb3Ro
ZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpDdXN0b20pCi0gICAg
ICAgICAgICByZXR1cm4gb3RoZXIudHlwZSA9PSBUeXBlOjpDdXN0b20gJiYgaWRlbnRpZmllciA9
PSBvdGhlci5pZGVudGlmaWVyOwotICAgICAgICByZXR1cm4gdHlwZSA9PSBvdGhlci50eXBlOwot
ICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250UGFsZXR0ZSYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250UGFsZXR0ZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAog
ICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBOb3JtYWwsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFBhbGV0dGVWYWx1ZXMuaApp
bmRleCA0YjFmZTQ0OWQwMGUyNjU5MTBiNjQxYTE5ZWQ1YTkzYTgwY2JhMmM3Li4wYTkzMWY3ODY2
MTgwY2M2ZGIwNTE2NjFmZmI1M2IyZmZlMGM5ZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UGFsZXR0ZVZhbHVlcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRQYWxldHRlVmFsdWVzLmgKQEAgLTU2LDE5ICs1Niw3
IEBAIHN0cnVjdCBGb250UGFsZXR0ZUluZGV4IHsKICAgICAgICAgcmV0dXJuIHR5cGUgIT0gVHlw
ZTo6SW50ZWdlciB8fCBpbnRlZ2VyOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBGb250UGFsZXR0ZUluZGV4JiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICh0eXBl
ICE9IG90aGVyLnR5cGUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICh0
eXBlID09IFR5cGU6OkludGVnZXIpCi0gICAgICAgICAgICByZXR1cm4gaW50ZWdlciA9PSBvdGhl
ci5pbnRlZ2VyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgRm9udFBhbGV0dGVJbmRleCYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGb250UGFsZXR0ZUluZGV4JikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgZW51bSBjbGFz
cyBUeXBlIDogdWludDhfdCB7CiAgICAgICAgIExpZ2h0LApAQCAtMTE0LDE1ICsxMDIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX2Jhc2VQYWxldHRlIHx8ICFtX292ZXJyaWRlQ29sb3Jz
LmlzRW1wdHkoKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFBhbGV0
dGVWYWx1ZXMmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYmFzZVBhbGV0
dGUgPT0gb3RoZXIubV9iYXNlUGFsZXR0ZSAmJiBtX292ZXJyaWRlQ29sb3JzID09IG90aGVyLm1f
b3ZlcnJpZGVDb2xvcnM7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZvbnRQ
YWxldHRlVmFsdWVzJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRQYWxldHRl
VmFsdWVzJikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8
Rm9udFBhbGV0dGVJbmRleD4gbV9iYXNlUGFsZXR0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRTZWxlY3Rpb25BbGdvcml0aG0uaAppbmRleCBl
N2ExNGI5YWYwYTFlYjRmNTQ4MzA2NmRhMWQ0MThiOTdkMDYwMDNkLi4zOThmOGJlOGY4YWY5NDUy
NjA3ZGMyNjc3ZTU1Y2M5OTllNzVlMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb250U2VsZWN0aW9uQWxnb3JpdGhtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udFNlbGVjdGlvbkFsZ29yaXRobS5oCkBAIC02NSwxMSAr
NjUsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3RleHByIEJhY2tpbmdUeXBlIHJhd1ZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CiAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PgotICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udFNlbGVjdGlvblZhbHVlPiBkZWNvZGUo
RGVjb2RlciYpOwogCi0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLSAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxGb250U2VsZWN0aW9uVmFsdWU+IGRlY29kZShEZWNvZGVyJik7CisgICAgZnJp
ZW5kIGF1dG8gb3BlcmF0b3I8PT4oRm9udFNlbGVjdGlvblZhbHVlLCBGb250U2VsZWN0aW9uVmFs
dWUpID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFJhd1RhZyB7IFJhd1Rh
ZyB9OwpAQCAtMTYwLDM2ICsxNTksNiBAQCBjb25zdGV4cHIgRm9udFNlbGVjdGlvblZhbHVlIG9w
ZXJhdG9yLShGb250U2VsZWN0aW9uVmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHsgLXZhbHVlLm1f
YmFja2luZywgRm9udFNlbGVjdGlvblZhbHVlOjpSYXdUYWc6OlJhd1RhZyB9OwogfQogCi1jb25z
dGV4cHIgYm9vbCBvcGVyYXRvcj09KEZvbnRTZWxlY3Rpb25WYWx1ZSBhLCBGb250U2VsZWN0aW9u
VmFsdWUgYikKLXsKLSAgICByZXR1cm4gYS5yYXdWYWx1ZSgpID09IGIucmF3VmFsdWUoKTsKLX0K
LQotY29uc3RleHByIGJvb2wgb3BlcmF0b3IhPShGb250U2VsZWN0aW9uVmFsdWUgYSwgRm9udFNl
bGVjdGlvblZhbHVlIGIpCi17Ci0gICAgcmV0dXJuIGEucmF3VmFsdWUoKSAhPSBiLnJhd1ZhbHVl
KCk7Ci19Ci0KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChGb250U2VsZWN0aW9uVmFsdWUgYSwg
Rm9udFNlbGVjdGlvblZhbHVlIGIpCi17Ci0gICAgcmV0dXJuIGEucmF3VmFsdWUoKSA8IGIucmF3
VmFsdWUoKTsKLX0KLQotY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShGb250U2VsZWN0aW9uVmFs
dWUgYSwgRm9udFNlbGVjdGlvblZhbHVlIGIpCi17Ci0gICAgcmV0dXJuIGEucmF3VmFsdWUoKSA8
PSBiLnJhd1ZhbHVlKCk7Ci19Ci0KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPihGb250U2VsZWN0
aW9uVmFsdWUgYSwgRm9udFNlbGVjdGlvblZhbHVlIGIpCi17Ci0gICAgcmV0dXJuIGEucmF3VmFs
dWUoKSA+IGIucmF3VmFsdWUoKTsKLX0KLQotY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShGb250
U2VsZWN0aW9uVmFsdWUgYSwgRm9udFNlbGVjdGlvblZhbHVlIGIpCi17Ci0gICAgcmV0dXJuIGEu
cmF3VmFsdWUoKSA+PSBiLnJhd1ZhbHVlKCk7Ci19Ci0KIGNvbnN0ZXhwciBGb250U2VsZWN0aW9u
VmFsdWUgaXRhbGljVGhyZXNob2xkKCkKIHsKICAgICByZXR1cm4gRm9udFNlbGVjdGlvblZhbHVl
IHsgMjAgfTsKQEAgLTMxMSwxMCArMjgwLDcgQEAgc3RydWN0IEZvbnRTZWxlY3Rpb25SYW5nZSB7
CiAgICAgewogICAgIH0KIAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9u
dFNlbGVjdGlvblJhbmdlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6
OnRpZShtaW5pbXVtLCBtYXhpbXVtKSA9PSBXVEY6OnRpZShvdGhlci5taW5pbXVtLCBvdGhlci5t
YXhpbXVtKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRTZWxlY3Rpb25S
YW5nZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGNvbnN0ZXhwciBib29sIGlzVmFsaWQoKSBj
b25zdAogICAgIHsKQEAgLTM5NCw2ICszNjAsOCBAQCBzdHJ1Y3QgRm9udFNlbGVjdGlvblJlcXVl
c3QgewogICAgIHsKICAgICAgICAgcmV0dXJuIFdURjo6dGllKHdlaWdodCwgd2lkdGgsIHNsb3Bl
KTsKICAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFNlbGVjdGlvblJlcXVl
c3QmKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCiBpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRm9udFNlbGVjdGlvblZhbHVlJiBmb250U2VsZWN0aW9u
VmFsdWUpCkBAIC00MDgsMTYgKzM3Niw2IEBAIGlubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEZvbnRTZWxlY3Rpb25WCiAgICAg
cmV0dXJuIHRzOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRTZWxlY3Rp
b25SZXF1ZXN0JiBhLCBjb25zdCBGb250U2VsZWN0aW9uUmVxdWVzdCYgYikKLXsKLSAgICByZXR1
cm4gYS50aWVkKCkgPT0gYi50aWVkKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgRm9udFNlbGVjdGlvblJlcXVlc3QmIGEsIGNvbnN0IEZvbnRTZWxlY3Rpb25SZXF1ZXN0JiBi
KQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KIGlubGluZSB2b2lkIGFkZChIYXNoZXIm
IGhhc2hlciwgY29uc3QgRm9udFNlbGVjdGlvblJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgYWRk
KGhhc2hlciwgcmVxdWVzdC50aWVkKCkpOwpAQCAtNDQxLDE3ICszOTksOSBAQCBzdHJ1Y3QgRm9u
dFNlbGVjdGlvbkNhcGFiaWxpdGllcyB7CiAgICAgUmFuZ2Ugd2VpZ2h0IHsgbm9ybWFsV2VpZ2h0
VmFsdWUoKSB9OwogICAgIFJhbmdlIHdpZHRoIHsgbm9ybWFsU3RyZXRjaFZhbHVlKCkgfTsKICAg
ICBSYW5nZSBzbG9wZSB7IG5vcm1hbEl0YWxpY1ZhbHVlKCkgfTsKLX07Ci0KLWNvbnN0ZXhwciBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyYgYSwgY29uc3Qg
Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyYgYikKLXsKLSAgICByZXR1cm4gYS50aWVkKCkgPT0g
Yi50aWVkKCk7Ci19CiAKLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udFNlbGVj
dGlvbkNhcGFiaWxpdGllcyYgYSwgY29uc3QgRm9udFNlbGVjdGlvbkNhcGFiaWxpdGllcyYgYikK
LXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
b250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzJikgY29uc3QgPSBkZWZhdWx0OworfTsKIAogc3RydWN0
IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgewogICAgIHVzaW5nIENhcGFiaWxp
dGllcyA9IEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM7CkBAIC00OTQsMTEgKzQ0NCwxMCBAQCBz
dHJ1Y3QgRm9udFNlbGVjdGlvblNwZWNpZmllZENhcGFiaWxpdGllcyB7CiAgICAgICAgIHJldHVy
biBzbG9wZS52YWx1ZV9vcihSYW5nZSB7IG5vcm1hbEl0YWxpY1ZhbHVlKCkgfSk7CiAgICAgfQog
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLSAgICB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM+IGRlY29kZShEZWNvZGVyJik7CiAK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZv
bnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM+IGRlY29kZShEZWNvZGVyJik7CisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMm
KSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBPcHRpb25hbFJhbmdlIHdlaWdodDsKICAgICBPcHRp
b25hbFJhbmdlIHdpZHRoOwpAQCAtNTM0LDE2ICs0ODMsNiBAQCBzdGQ6Om9wdGlvbmFsPEZvbnRT
ZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXM+IEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBh
YmlsaQogICAgIHJldHVybiB7eyAqd2VpZ2h0LCAqd2lkdGgsICpzbG9wZSB9fTsKIH0KIAotY29u
c3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJp
bGl0aWVzJiBhLCBjb25zdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzJiBiKQot
ewotICAgIHJldHVybiBhLnRpZWQoKSA9PSBiLnRpZWQoKTsKLX0KLQotY29uc3RleHByIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzJiBhLCBj
b25zdCBGb250U2VsZWN0aW9uU3BlY2lmaWVkQ2FwYWJpbGl0aWVzJiBiKQotewotICAgIHJldHVy
biAhKGEgPT0gYik7Ci19Ci0KIGNsYXNzIEZvbnRTZWxlY3Rpb25BbGdvcml0aG0gewogcHVibGlj
OgogICAgIHVzaW5nIENhcGFiaWxpdGllcyA9IEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250VGFnZ2VkU2V0
dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0
aW5ncy5oCmluZGV4IDQxYmQ3NWE2ZTBmNWYxM2Y2M2NiNTJjOWQyOThkN2Q4MjAzNWJjMzAuLjAx
YmE3ZTE3NjA0NjAzYzYyOTcyZjdmMTA1NWM1ZDE4MjZjZDJhNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRUYWdnZWRTZXR0aW5ncy5oCkBAIC02
OCw5ICs2OCw4IEBAIHB1YmxpYzoKICAgICBGb250VGFnZ2VkU2V0dGluZygpID0gZGVsZXRlOwog
ICAgIEZvbnRUYWdnZWRTZXR0aW5nKEZvbnRUYWcsIFQgdmFsdWUpOwogCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEZvbnRUYWdnZWRTZXR0aW5nPFQ+JiBvdGhlcikgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IEZvbnRUYWdnZWRTZXR0aW5nPFQ+JiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAgICBib29sIG9wZXJhdG9yPChjb25zdCBGb250
VGFnZ2VkU2V0dGluZzxUPiYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBGb250VGFnZ2VkU2V0dGluZzxUPiYpIGNvbnN0ID0gZGVmYXVsdDsKKyAgICBib29sIG9wZXJh
dG9yPChjb25zdCBGb250VGFnZ2VkU2V0dGluZzxUPiYpIGNvbnN0OwogCiAgICAgRm9udFRhZyB0
YWcoKSBjb25zdCB7IHJldHVybiBtX3RhZzsgfQogICAgIFQgdmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CkBAIC05MSwxMiArOTAsNiBAQCBGb250VGFnZ2VkU2V0dGluZzxUPjo6Rm9u
dFRhZ2dlZFNldHRpbmcoRm9udFRhZyB0YWcsIFQgdmFsdWUpCiB7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotYm9vbCBGb250VGFnZ2VkU2V0dGluZzxUPjo6b3BlcmF0b3I9PShjb25zdCBG
b250VGFnZ2VkU2V0dGluZzxUPiYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGFnID09
IG90aGVyLm1fdGFnICYmIG1fdmFsdWUgPT0gb3RoZXIubV92YWx1ZTsKLX0KLQogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CiBib29sIEZvbnRUYWdnZWRTZXR0aW5nPFQ+OjpvcGVyYXRvcjwoY29uc3Qg
Rm9udFRhZ2dlZFNldHRpbmc8VD4mIG90aGVyKSBjb25zdAogewpAQCAtMTYwLDggKzE1Myw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgRm9udFRhZ2dlZFNldHRpbmdzIHsKIHB1Ymxp
YzoKICAgICB2b2lkIGluc2VydChGb250VGFnZ2VkU2V0dGluZzxUPiYmKTsKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRm9udFRhZ2dlZFNldHRpbmdzPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1
cm4gbV9saXN0ID09IG90aGVyLm1fbGlzdDsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBG
b250VGFnZ2VkU2V0dGluZ3M8VD4mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250VGFnZ2VkU2V0dGluZ3MmKSBj
b25zdCA9IGRlZmF1bHQ7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6
ZSgpOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2xpc3Quc2l6ZSgpOyB9
CkBAIC0xNzQsNyArMTY2LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxGb250
VGFnZ2VkU2V0dGluZ3M8VD4+IGRlY29kZShEZWNvZGVyJik7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8Rm9udFRhZ2dlZFNldHRpbmdzPiBkZWNvZGUo
RGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIFZlY3RvcjxGb250VGFnZ2VkU2V0dGluZzxUPj4g
bV9saXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm91
ckNDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaAppbmRleCAy
YTY0YzRiYzE1NDYzY2VjMTRiM2MyZjM5ZjI1NGZkZDA1M2JmMWYyLi5jODExYjU3MmMwZTBhNDZk
OGE4OWZmODNkNzRkNjY0YWE5OTBhNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Gb3VyQ0MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb3VyQ0MuaApAQCAtMzAsMTEgKzMwLDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0cnVjdCBGb3VyQ0MgewotICAgIEZvdXJDQygpID0gZGVmYXVsdDsKLSAgICBGb3VyQ0ModWlu
dDMyX3QgdmFsdWUpIDogdmFsdWUodmFsdWUpIHsgfQorICAgIGNvbnN0ZXhwciBGb3VyQ0ModWlu
dDMyX3QgdmFsdWUgPSAwKQorICAgICAgICA6IHZhbHVlKHZhbHVlKQorICAgIHsKKyAgICB9CiAK
LSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBOPgotICAgIGNvbnN0ZXhwciBGb3VyQ0MoY29uc3Qg
Y2hhciAoJmRhdGEpW05dKQorICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE4+IGNvbnN0ZXhwciBG
b3VyQ0MoY29uc3QgY2hhciAoJmRhdGEpW05dKQogICAgIHsKICAgICAgICAgc3RhdGljX2Fzc2Vy
dCgoTiAtIDEpID09IDQsICJGb3VyQ0MgbGl0ZXJhbHMgbXVzdCBiZSBleGFjdGx5IDQgY2hhcmFj
dGVycyBsb25nIik7CiAgICAgICAgIHZhbHVlID0gZGF0YVswXSA8PCAyNCB8IGRhdGFbMV0gPDwg
MTYgfCBkYXRhWzJdIDw8IDggfCBkYXRhWzNdOwpAQCAtNDMsOCArNDQsNyBAQCBzdHJ1Y3QgRm91
ckNDIHsKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxGb3VyQ0M+IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRm91ckNDJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
dmFsdWUgPT0gb3RoZXIudmFsdWU7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm91ckND
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gdmFsdWUgIT0gb3RoZXIudmFsdWU7IH0KKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRm91ckNDJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgdWludDMy
X3QgdmFsdWUgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYWU1NmY1MDQ1NGIxMjk5MWVkNTQ3NDE3
YTlhM2RiMDA0YTFlNTJmYy4uNGM5ZTBhZWQ1OGVkM2QxNDcxZGVkODczNDI2OTU4ZTc5ZTQ1NDY4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCkBAIC02MywxMiArNjMsNyBAQCBwdWJsaWM6CiAgICAgVUNoYXIgY3VycmVu
dCgpIGNvbnN0IHsgcmV0dXJuICgqbV90ZXh0UnVuKVttX29mZnNldF07IH0KICAgICBVQ2hhckRp
cmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBhdEVuZCgpID8gVV9PVEhFUl9ORVVU
UkFMIDogdV9jaGFyRGlyZWN0aW9uKGN1cnJlbnQoKSk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fb2Zmc2V0ID09IG90aGVyLm1fb2Zmc2V0ICYmIG1fdGV4dFJ1biA9PSBvdGhlci5tX3Rl
eHRSdW47Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRCb3hJdGVyYXRv
ciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImKSBjb25zdCA9IGRlZmF1bHQ7CiAKIHBy
aXZhdGU6CiAgICAgY29uc3QgVGV4dFJ1biogbV90ZXh0UnVuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IGYyYzk2NDBkNDZkM2E5
MzU2MTE0ZjMzYWIxNDA1MmM3ZmVjMjc3OGMuLmE2NzRlMjg2OTk0M2UxYTg2OWFjYzkxZTdjZjMz
NTZmOGI3MDAwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAKQEAgLTYyMiw3ICs2MjIsNyBAQCBTdWJzYW1wbGluZ0xldmVsIEltYWdl
U291cmNlOjptYXhpbXVtU3Vic2FtcGxpbmdMZXZlbCgpCiAgICAgLy8gRklYTUU6IHRoaXMgdmFs
dWUgd2FzIGNob3NlbiB0byBiZSBhcHByb3ByaWF0ZSBmb3IgaU9TIHNpbmNlIHRoZSBpbWFnZQog
ICAgIC8vIHN1YnNhbXBsaW5nIGlzIG9ubHkgZW5hYmxlZCBieSBkZWZhdWx0IG9uIGlPUy4gQ2hv
b3NlIGEgZGlmZmVyZW50IHZhbHVlCiAgICAgLy8gaWYgaW1hZ2Ugc3Vic2FtcGxpbmcgaXMgZW5h
YmxlZCBvbiBvdGhlciBwbGF0Zm9ybS4KLSAgICBjb25zdCBpbnQgbWF4aW11bUltYWdlQXJlYUJl
Zm9yZVN1YnNhbXBsaW5nID0gNSAqIDEwMjQgKiAxMDI0OworICAgIGNvbnN0ZXhwciB1bnNpZ25l
ZCBtYXhpbXVtSW1hZ2VBcmVhQmVmb3JlU3Vic2FtcGxpbmcgPSA1ICogMTAyNCAqIDEwMjQ7CiAg
ICAgU3Vic2FtcGxpbmdMZXZlbCBsZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkZpcnN0OwogCiAg
ICAgZm9yICg7IGxldmVsIDwgU3Vic2FtcGxpbmdMZXZlbDo6TGFzdDsgKytsZXZlbCkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXggZjk4
MTQxN2YyNGViYzdmMmRiZDU3M2RhZTBlNTkyNTk4OTQ0ZTY2YS4uZWI0M2EzZTZkYTEwOTAwMWNi
YTVmMDcyMDY0ZjVkZWU0MWM3NDM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCkBAIC0xOTEsMTAgKzE5MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbDsKICAgICAgICAgRGVjb2RpbmdP
cHRpb25zIGRlY29kaW5nT3B0aW9uczsKICAgICAgICAgRGVjb2RpbmdTdGF0dXMgZGVjb2RpbmdT
dGF0dXM7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbWFnZUZyYW1lUmVxdWVzdCYg
b3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbmRleCA9PSBvdGhl
ci5pbmRleCAmJiBzdWJzYW1wbGluZ0xldmVsID09IG90aGVyLnN1YnNhbXBsaW5nTGV2ZWwgJiYg
ZGVjb2RpbmdPcHRpb25zID09IG90aGVyLmRlY29kaW5nT3B0aW9ucyAmJiBkZWNvZGluZ1N0YXR1
cyA9PSBvdGhlci5kZWNvZGluZ1N0YXR1czsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgSW1hZ2VGcmFtZVJlcXVlc3QmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsK
ICAgICB1c2luZyBGcmFtZVJlcXVlc3RRdWV1ZSA9IFN5bmNocm9uaXplZEZpeGVkUXVldWU8SW1h
Z2VGcmFtZVJlcXVlc3QsIEJ1ZmZlclNpemU+OwogICAgIHVzaW5nIEZyYW1lQ29tbWl0UXVldWUg
PSBEZXF1ZTxJbWFnZUZyYW1lUmVxdWVzdCwgQnVmZmVyU2l6ZT47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAppbmRleCAzYTc2MWM4MjdmODFiODE3Y2VjM2I0
ZGZhNmQ2MmUwMDNkYmIwNTgxLi4wYzY5ZWNkMWUwNDU1M2VmOGZlMWFjM2ZjNWU3NDU3NGM5YmY4
MDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2lu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKQEAg
LTExNSwxNyArMTE1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEludFBvaW50KG1feSwg
bV94KTsKICAgICB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50UG9pbnQmKSBjb25z
dCA9IGRlZmF1bHQ7CisKICNpZiBVU0UoQ0cpCiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
SW50UG9pbnQoY29uc3QgQ0dQb2ludCYpOyAvLyBkb24ndCBkbyB0aGlzIGltcGxpY2l0bHkgc2lu
Y2UgaXQncyBsb3NzeQogICAgIFdFQkNPUkVfRVhQT1JUIG9wZXJhdG9yIENHUG9pbnQoKSBjb25z
dDsKICNlbmRpZgogCi0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0jaWYgT1MoREFSV0lOKSAm
JiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykKKyNp
ZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgT1MoREFSV0lOKSAmJiAhZGVmaW5lZChOU0dFT01F
VFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykKICAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBJbnRQb2ludChjb25zdCBOU1BvaW50Jik7IC8vIGRvbid0IGRvIHRoaXMgaW1wbGlj
aXRseSBzaW5jZSBpdCdzIGxvc3N5CiAgICAgV0VCQ09SRV9FWFBPUlQgb3BlcmF0b3IgTlNQb2lu
dCgpIGNvbnN0OwogI2VuZGlmCi0jZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgSW50UG9pbnQoY29uc3QgUE9JTlQmKTsKQEAgLTE3NSwxNiAr
MTc1LDYgQEAgaW5saW5lIEludFBvaW50IG9wZXJhdG9yLShjb25zdCBJbnRQb2ludCYgcG9pbnQp
CiAgICAgcmV0dXJuIEludFBvaW50KC1wb2ludC54KCksIC1wb2ludC55KCkpOwogfQogCi1pbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludFBvaW50JiBhLCBjb25zdCBJbnRQb2ludCYgYikK
LXsKLSAgICByZXR1cm4gYS54KCkgPT0gYi54KCkgJiYgYS55KCkgPT0gYi55KCk7Ci19Ci0KLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW50UG9pbnQmIGEsIGNvbnN0IEludFBvaW50JiBi
KQotewotICAgIHJldHVybiBhLngoKSAhPSBiLngoKSB8fCBhLnkoKSAhPSBiLnkoKTsKLX0KLQog
aW5saW5lIEludFNpemUgdG9JbnRTaXplKGNvbnN0IEludFBvaW50JiBhKQogewogICAgIHJldHVy
biBJbnRTaXplKGEueCgpLCBhLnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0LmgKaW5kZXggNDY4ZTAxOTY4ZDNlMjZmYmM5YWUyODU3NTk3MzVkMWQ1MWYxYjVh
Ny4uNGRmNjdiYTljMmFmMDVjMWQwZDMwNDNmMGJlNzI2YjU4ODE5OGJjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaApAQCAtMTg5LDYgKzE4OSw4IEBAIHB1
YmxpYzoKICAgICAvLyBSZXR1cm4gZmFsc2UgaWYgeCArIHdpZHRoIG9yIHkgKyBoZWlnaHQgb3Zl
cmZsb3dzLgogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEludFJlY3QmKSBjb25zdCA9IGRlZmF1bHQ7CisKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgSW50UmVjdChjb25zdCBSRUNUJik7CiAgICAgb3BlcmF0b3IgUkVDVCgpIGNvbnN0OwpAQCAt
MjI2LDE2ICsyMjgsNiBAQCBpbmxpbmUgSW50UmVjdCB1bmlvblJlY3QoY29uc3QgSW50UmVjdCYg
YSwgY29uc3QgSW50UmVjdCYgYikKICAgICByZXR1cm4gYzsKIH0KIAotaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBJbnRSZWN0JiBhLCBjb25zdCBJbnRSZWN0JiBiKQotewotICAgIHJldHVy
biBhLmxvY2F0aW9uKCkgPT0gYi5sb2NhdGlvbigpICYmIGEuc2l6ZSgpID09IGIuc2l6ZSgpOwot
fQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludFJlY3QmIGEsIGNvbnN0IEludFJl
Y3QmIGIpCi17Ci0gICAgcmV0dXJuIGEubG9jYXRpb24oKSAhPSBiLmxvY2F0aW9uKCkgfHwgYS5z
aXplKCkgIT0gYi5zaXplKCk7Ci19Ci0KIGlubGluZSBJbnRSZWN0JiBvcGVyYXRvci09KEludFJl
Y3QmIHIsIGNvbnN0IEludFBvaW50JiBvZmZzZXQpCiB7CiAgICAgci5tb3ZlKC1vZmZzZXQueCgp
LCAtb2Zmc2V0LnkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0RXh0ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRSZWN0RXh0ZW50LmgKaW5kZXggNDNjODMyZTA4OGUwNDI2MjhmMjdiYWUyNDQ5YjQwOGEyMDNh
NjI3MC4uNjBkMDA1ZmY0ODZlM2RjNTJlYmY3ZDA2ZmFiNWI0N2NlYjI3YjMxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdEV4dGVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RFeHRlbnQuaApAQCAtNTgs
NiArNTgsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJuICFs
ZWZ0KCkgJiYgIXJpZ2h0KCkgJiYgIXRvcCgpICYmICFib3R0b20oKTsgfQogCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEludFJlY3RFeHRlbnQmKSBjb25zdCA9IGRlZmF1bHQ7CisKIHByaXZh
dGU6CiAgICAgaW50IG1fdG9wIHsgMCB9OwogICAgIGludCBtX3JpZ2h0IHsgMCB9OwpAQCAtNjUs
MTYgKzY3LDYgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9sZWZ0IHsgMCB9OwogfTsKIAotaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRSZWN0RXh0ZW50JiBhLCBjb25zdCBJbnRSZWN0RXh0
ZW50JiBiKQotewotICAgIHJldHVybiBhLnRvcCgpID09IGIudG9wKCkgJiYgYS5yaWdodCgpID09
IGIucmlnaHQoKSAmJiBhLmJvdHRvbSgpID09IGIuYm90dG9tKCkgJiYgYS5sZWZ0KCkgPT0gYi5s
ZWZ0KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW50UmVjdEV4dGVudCYg
YSwgY29uc3QgSW50UmVjdEV4dGVudCYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQot
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZWN0VHlwZT4KIGlubGluZSBSZWN0VHlwZSYgb3BlcmF0b3Ir
PShSZWN0VHlwZSYgcmVjdCwgY29uc3QgSW50UmVjdEV4dGVudCYgZXh0ZW50KQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCmluZGV4IDBhMGU1MDNkNDFkNjE5
ODYwNzNhYTFiNWRmOGQxYjkzZjBiYmU1NmQuLjljZmVjNjdjYzgwN2RjZTNiYzI0YWY2OTUzMTQ2
ZWFiODBmMGU1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ludFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXpl
LmgKQEAgLTE2NSw2ICsxNjUsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRvSlNPTlN0cmluZygp
IGNvbnN0OwogICAgIFJlZjxKU09OOjpPYmplY3Q+IHRvSlNPTk9iamVjdCgpIGNvbnN0OwogCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludFNpemUmKSBjb25zdCA9IGRlZmF1bHQ7CisKIHBy
aXZhdGU6CiAgICAgaW50IG1fd2lkdGggeyAwIH07CiAgICAgaW50IG1faGVpZ2h0IHsgMCB9OwpA
QCAtMTk5LDE2ICsyMDEsNiBAQCBjb25zdGV4cHIgSW50U2l6ZSBvcGVyYXRvci0oY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICByZXR1cm4gSW50U2l6ZSgtc2l6ZS53aWR0aCgpLCAtc2l6ZS5oZWln
aHQoKSk7CiB9CiAKLWNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50U2l6ZSYgYSwg
Y29uc3QgSW50U2l6ZSYgYikKLXsKLSAgICByZXR1cm4gYS53aWR0aCgpID09IGIud2lkdGgoKSAm
JiBhLmhlaWdodCgpID09IGIuaGVpZ2h0KCk7Ci19Ci0KLWNvbnN0ZXhwciBib29sIG9wZXJhdG9y
IT0oY29uc3QgSW50U2l6ZSYgYSwgY29uc3QgSW50U2l6ZSYgYikKLXsKLSAgICByZXR1cm4gYS53
aWR0aCgpICE9IGIud2lkdGgoKSB8fCBhLmhlaWdodCgpICE9IGIuaGVpZ2h0KCk7Ci19Ci0KIFdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBJbnRTaXplJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFBvaW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRQb2ludC5oCmluZGV4IDZmMmZlNTY2YTlk
NWVjNGMzNmQxZTZhNWQ1NWVkMjUzYTc0MGVlOTUuLjg1OTg3ZGYxOGYzMWQxYmI3ZTkyMGM0MTI0
ZjNlZTdjOTc2MjExYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0xheW91dFBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TGF5b3V0UG9pbnQuaApAQCAtMTA3LDYgKzEwNyw4IEBAIHB1YmxpYzoKIAogICAgIG9wZXJhdG9y
IEZsb2F0UG9pbnQoKSBjb25zdCB7IHJldHVybiB7IG1feCwgbV95IH07IH0KIAorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0ID0gZGVmYXVsdDsKKwogcHJpdmF0
ZToKICAgICBMYXlvdXRVbml0IG1feCwgbV95OwogfTsKQEAgLTE0OCwxNiArMTUwLDYgQEAgaW5s
aW5lIExheW91dFBvaW50IG9wZXJhdG9yLShjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAg
cmV0dXJuIExheW91dFBvaW50KC1wb2ludC54KCksIC1wb2ludC55KCkpOwogfQogCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IExheW91dFBvaW50JiBhLCBjb25zdCBMYXlvdXRQb2ludCYg
YikKLXsKLSAgICByZXR1cm4gYS54KCkgPT0gYi54KCkgJiYgYS55KCkgPT0gYi55KCk7Ci19Ci0K
LWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF5b3V0UG9pbnQmIGEsIGNvbnN0IExheW91
dFBvaW50JiBiKQotewotICAgIHJldHVybiBhLngoKSAhPSBiLngoKSB8fCBhLnkoKSAhPSBiLnko
KTsKLX0KLQogaW5saW5lIExheW91dFBvaW50IHRvTGF5b3V0UG9pbnQoY29uc3QgTGF5b3V0U2l6
ZSYgc2l6ZSkKIHsKICAgICByZXR1cm4gTGF5b3V0UG9pbnQoc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xh
eW91dFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3Qu
aAppbmRleCBhYjYyNzM4ZDkxOWI3Y2MxY2EwYzQ1Zjc0OGNjYWE1YzkzMTM1MjJmLi43Y2YxZmUy
YjI4YTc5MzFkMTQ3NzNjYmVjYjc2MTNlYzkzZmQ4ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5oCkBAIC0yMjMsNiArMjIzLDggQEAgcHVibGlj
OgogICAgIAogICAgIG9wZXJhdG9yIEZsb2F0UmVjdCgpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UmVj
dChtX2xvY2F0aW9uLCBtX3NpemUpOyB9CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGF5
b3V0UmVjdCYpIGNvbnN0ID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNldExvY2F0
aW9uQW5kU2l6ZUZyb21FZGdlcyhMYXlvdXRVbml0IGxlZnQsIExheW91dFVuaXQgdG9wLCBMYXlv
dXRVbml0IHJpZ2h0LCBMYXlvdXRVbml0IGJvdHRvbSk7CiAKQEAgLTI0NiwxNiArMjQ4LDYgQEAg
aW5saW5lIExheW91dFJlY3QgdW5pb25SZWN0KGNvbnN0IExheW91dFJlY3QmIGEsIGNvbnN0IExh
eW91dFJlY3QmIGIpCiAKIExheW91dFJlY3QgdW5pb25SZWN0KGNvbnN0IFZlY3RvcjxMYXlvdXRS
ZWN0PiYpOwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExheW91dFJlY3QmIGEsIGNv
bnN0IExheW91dFJlY3QmIGIpCi17Ci0gICAgcmV0dXJuIGEubG9jYXRpb24oKSA9PSBiLmxvY2F0
aW9uKCkgJiYgYS5zaXplKCkgPT0gYi5zaXplKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgTGF5b3V0UmVjdCYgYSwgY29uc3QgTGF5b3V0UmVjdCYgYikKLXsKLSAgICByZXR1
cm4gYS5sb2NhdGlvbigpICE9IGIubG9jYXRpb24oKSB8fCBhLnNpemUoKSAhPSBiLnNpemUoKTsK
LX0KLQogaW5saW5lIGJvb2wgTGF5b3V0UmVjdDo6aXNJbmZpbml0ZSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuICp0aGlzID09IExheW91dFJlY3Q6OmluZmluaXRlUmVjdCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oCmluZGV4IDRhNmQ3Nzg1MzBhZjRj
YjZiMDQ0ZmI3NzdlM2U2ZmE4ZTk3YzNhZWIuLjQ0YjRkOGJkZWM5ZjY3MDQ4YWNmM2MyY2FkZTk3
ODM2MzE5NDU4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0xheW91dFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlv
dXRTaXplLmgKQEAgLTE0MSw2ICsxNDEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3dp
ZHRoLm1pZ2h0QmVTYXR1cmF0ZWQoKSB8fCBtX2hlaWdodC5taWdodEJlU2F0dXJhdGVkKCk7CiAg
ICAgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExheW91dFNpemUmKSBjb25zdCA9IGRl
ZmF1bHQ7CisKIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBtX3dpZHRoOwogICAgIExheW91dFVu
aXQgbV9oZWlnaHQ7CkBAIC0xNzUsMTYgKzE3Nyw2IEBAIGlubGluZSBMYXlvdXRTaXplIG9wZXJh
dG9yLShjb25zdCBMYXlvdXRTaXplJiBzaXplKQogICAgIHJldHVybiBMYXlvdXRTaXplKC1zaXpl
LndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBMYXlvdXRTaXplJiBhLCBjb25zdCBMYXlvdXRTaXplJiBiKQotewotICAgIHJldHVybiBh
LndpZHRoKCkgPT0gYi53aWR0aCgpICYmIGEuaGVpZ2h0KCkgPT0gYi5oZWlnaHQoKTsKLX0KLQot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBMYXlvdXRTaXplJiBhLCBjb25zdCBMYXlvdXRT
aXplJiBiKQotewotICAgIHJldHVybiBhLndpZHRoKCkgIT0gYi53aWR0aCgpIHx8IGEuaGVpZ2h0
KCkgIT0gYi5oZWlnaHQoKTsKLX0KLQogaW5saW5lIEludFNpemUgZmxvb3JlZEludFNpemUoY29u
c3QgTGF5b3V0U2l6ZSYgcykKIHsKICAgICByZXR1cm4gSW50U2l6ZShzLndpZHRoKCkuZmxvb3Io
KSwgcy5oZWlnaHQoKS5mbG9vcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVVzYWdlSW5mby5oCmluZGV4IGUyNjdjNjZmMTg4YzViNjI1YWNlNWVkMzk1
NGI0OThkOGI1NTU2NDIuLjQwZjFkOTE2ZWYxNDQ2NzMwYjcyZTQxOWFkYzJiZjQ1NzI3ODdkYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhVXNhZ2VJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFVc2FnZUlu
Zm8uaApAQCAtNjQsNDUgKzY0LDcgQEAgc3RydWN0IE1lZGlhVXNhZ2VJbmZvIHsKICAgICBib29s
IG91dHNpZGVPZkZ1bGxzY3JlZW4geyBmYWxzZSB9OwogICAgIGJvb2wgaXNMYXJnZUVub3VnaEZv
ck1haW5Db250ZW50IHsgZmFsc2UgfTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNZWRp
YVVzYWdlSW5mbyYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbWVkaWFVUkwg
PT0gb3RoZXIubWVkaWFVUkwKLSAgICAgICAgICAgICYmIGlzUGxheWluZyA9PSBvdGhlci5pc1Bs
YXlpbmcKLSAgICAgICAgICAgICYmIGNhblNob3dDb250cm9sc01hbmFnZXIgPT0gb3RoZXIuY2Fu
U2hvd0NvbnRyb2xzTWFuYWdlcgotICAgICAgICAgICAgJiYgY2FuU2hvd05vd1BsYXlpbmdDb250
cm9scyA9PSBvdGhlci5jYW5TaG93Tm93UGxheWluZ0NvbnRyb2xzCi0gICAgICAgICAgICAmJiBp
c1N1c3BlbmRlZCA9PSBvdGhlci5pc1N1c3BlbmRlZAotICAgICAgICAgICAgJiYgaXNJbkFjdGl2
ZURvY3VtZW50ID09IG90aGVyLmlzSW5BY3RpdmVEb2N1bWVudAotICAgICAgICAgICAgJiYgaXNG
dWxsc2NyZWVuID09IG90aGVyLmlzRnVsbHNjcmVlbgotICAgICAgICAgICAgJiYgaXNNdXRlZCA9
PSBvdGhlci5pc011dGVkCi0gICAgICAgICAgICAmJiBpc01lZGlhRG9jdW1lbnRJbk1haW5GcmFt
ZSA9PSBvdGhlci5pc01lZGlhRG9jdW1lbnRJbk1haW5GcmFtZQotICAgICAgICAgICAgJiYgaXNW
aWRlbyA9PSBvdGhlci5pc1ZpZGVvCi0gICAgICAgICAgICAmJiBpc0F1ZGlvID09IG90aGVyLmlz
QXVkaW8KLSAgICAgICAgICAgICYmIGhhc0F1ZGlvID09IG90aGVyLmhhc0F1ZGlvCi0gICAgICAg
ICAgICAmJiBoYXNWaWRlbyA9PSBvdGhlci5oYXNWaWRlbwotICAgICAgICAgICAgJiYgaGFzUmVu
ZGVyZXIgPT0gb3RoZXIuaGFzUmVuZGVyZXIKLSAgICAgICAgICAgICYmIGF1ZGlvRWxlbWVudFdp
dGhVc2VyR2VzdHVyZSA9PSBvdGhlci5hdWRpb0VsZW1lbnRXaXRoVXNlckdlc3R1cmUKLSAgICAg
ICAgICAgICYmIHVzZXJIYXNQbGF5ZWRBdWRpb0JlZm9yZSA9PSBvdGhlci51c2VySGFzUGxheWVk
QXVkaW9CZWZvcmUKLSAgICAgICAgICAgICYmIGlzRWxlbWVudFJlY3RNb3N0bHlJbk1haW5GcmFt
ZSA9PSBvdGhlci5pc0VsZW1lbnRSZWN0TW9zdGx5SW5NYWluRnJhbWUKLSAgICAgICAgICAgICYm
IHBsYXliYWNrUGVybWl0dGVkID09IG90aGVyLnBsYXliYWNrUGVybWl0dGVkCi0gICAgICAgICAg
ICAmJiBwYWdlTWVkaWFQbGF5YmFja1N1c3BlbmRlZCA9PSBvdGhlci5wYWdlTWVkaWFQbGF5YmFj
a1N1c3BlbmRlZAotICAgICAgICAgICAgJiYgaXNNZWRpYURvY3VtZW50QW5kTm90T3duZXJFbGVt
ZW50ID09IG90aGVyLmlzTWVkaWFEb2N1bWVudEFuZE5vdE93bmVyRWxlbWVudAotICAgICAgICAg
ICAgJiYgcGFnZUV4cGxpY2l0bHlBbGxvd3NFbGVtZW50VG9BdXRvcGxheUlubGluZSA9PSBvdGhl
ci5wYWdlRXhwbGljaXRseUFsbG93c0VsZW1lbnRUb0F1dG9wbGF5SW5saW5lCi0gICAgICAgICAg
ICAmJiByZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrQW5kRnVsbHNjcmVlbk5vdFBl
cm1pdHRlZCA9PSBvdGhlci5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrQW5kRnVs
bHNjcmVlbk5vdFBlcm1pdHRlZAotICAgICAgICAgICAgJiYgaGFzSGFkVXNlckludGVyYWN0aW9u
QW5kUXVpcmtzQ29udGFpbnNTaG91bGRBdXRvcGxheUZvckFyYml0cmFyeVVzZXJHZXN0dXJlID09
IG90aGVyLmhhc0hhZFVzZXJJbnRlcmFjdGlvbkFuZFF1aXJrc0NvbnRhaW5zU2hvdWxkQXV0b3Bs
YXlGb3JBcmJpdHJhcnlVc2VyR2VzdHVyZQotICAgICAgICAgICAgJiYgaXNWaWRlb0FuZFJlcXVp
cmVzVXNlckdlc3R1cmVGb3JWaWRlb1JhdGVDaGFuZ2UgPT0gb3RoZXIuaXNWaWRlb0FuZFJlcXVp
cmVzVXNlckdlc3R1cmVGb3JWaWRlb1JhdGVDaGFuZ2UKLSAgICAgICAgICAgICYmIGlzQXVkaW9B
bmRSZXF1aXJlc1VzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlID09IG90aGVyLmlzQXVkaW9B
bmRSZXF1aXJlc1VzZXJHZXN0dXJlRm9yQXVkaW9SYXRlQ2hhbmdlCi0gICAgICAgICAgICAmJiBp
c1ZpZGVvQW5kUmVxdWlyZXNVc2VyR2VzdHVyZUZvclZpZGVvRHVlVG9Mb3dQb3dlck1vZGUgPT0g
b3RoZXIuaXNWaWRlb0FuZFJlcXVpcmVzVXNlckdlc3R1cmVGb3JWaWRlb0R1ZVRvTG93UG93ZXJN
b2RlCi0gICAgICAgICAgICAmJiBub1VzZXJHZXN0dXJlUmVxdWlyZWQgPT0gb3RoZXIubm9Vc2Vy
R2VzdHVyZVJlcXVpcmVkCi0gICAgICAgICAgICAmJiByZXF1aXJlc1BsYXliYWNrQW5kSXNOb3RQ
bGF5aW5nID09IG90aGVyLnJlcXVpcmVzUGxheWJhY2tBbmRJc05vdFBsYXlpbmcKLSAgICAgICAg
ICAgICYmIGhhc0V2ZXJOb3RpZmllZEFib3V0UGxheWluZyA9PSBvdGhlci5oYXNFdmVyTm90aWZp
ZWRBYm91dFBsYXlpbmcKLSAgICAgICAgICAgICYmIG91dHNpZGVPZkZ1bGxzY3JlZW4gPT0gb3Ro
ZXIub3V0c2lkZU9mRnVsbHNjcmVlbgotICAgICAgICAgICAgJiYgaXNMYXJnZUVub3VnaEZvck1h
aW5Db250ZW50ID09IG90aGVyLmlzTGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudDsKLSAgICB9Ci0K
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTWVkaWFVc2FnZUluZm8gb3RoZXIpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBNZWRpYVVzYWdlSW5mbyYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxNZWRpYVVzYWdl
SW5mbz4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCmluZGV4IGVmMDJhMWU4M2ZjZGMz
YTViOWI4NDFiMDU4NjZhYjk4OTYwYmY4MWMuLmFiOWZmOTFlODk3ZmM4ODU3MTIzYmI0MTViNGFi
YTlmZjNjYWExZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcApAQCAtNDMsMTIgKzQzLDcgQEAgc3RydWN0IFF1
YWRyYXRpY0JlemllciB7CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBRdWFkcmF0aWNCZXppZXImIHJocykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGFy
dCA9PSByaHMuc3RhcnQKLSAgICAgICAgICAgICYmIGNvbnRyb2wgPT0gcmhzLmNvbnRyb2wKLSAg
ICAgICAgICAgICYmIGVuZCA9PSByaHMuZW5kOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgUXVhZHJhdGljQmV6aWVyJikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAgIGZsb2F0
IGFwcHJveGltYXRlRGlzdGFuY2UoKSBjb25zdAogICAgIHsKQEAgLTg1LDEzICs4MCw3IEBAIHN0
cnVjdCBDdWJpY0JlemllciB7CiAgICAgewogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDdWJpY0JlemllciYgcmhzKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXJ0
ID09IHJocy5zdGFydAotICAgICAgICAgICAgJiYgY29udHJvbDEgPT0gcmhzLmNvbnRyb2wxCi0g
ICAgICAgICAgICAmJiBjb250cm9sMiA9PSByaHMuY29udHJvbDIKLSAgICAgICAgICAgICYmIGVu
ZCA9PSByaHMuZW5kOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3ViaWNCZXpp
ZXImKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBmbG9hdCBhcHByb3hpbWF0ZURpc3RhbmNlKCkg
Y29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhl
bEJ1ZmZlci5jcHAKaW5kZXggNzU0M2Y0NzVhMjdhNjUxNTkwNmNjMjJlYjNmNjBhOTE0MDkyOTBi
YS4uMDc1NjE5NGNmMmY1ZThiOWZiYjI3YTEwY2U3OGEyZTE4YzIzY2ZkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmNwcApAQCAtNzQsNyAr
NzQsOCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBmb3JtYQogICAgIGF1dG8gYnVmZmVyU2l6ZSA9IGNv
bXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7CiAgICAgaWYgKGJ1ZmZlclNpemUuaGFzT3Zl
cmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGlmIChidWZmZXJT
aXplID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpCisgICAgdWludDMyX3Qg
bWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCk7CisgICAgaWYgKGJ1ZmZl
clNpemUgPiBtYXgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBwaXhl
bEFycmF5ID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQoYnVmZmVy
U2l6ZSk7CiAgICAgaWYgKCFwaXhlbEFycmF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1BdWRpb1RyYWNrQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1BdWRpb1RyYWNrQ29uZmlndXJh
dGlvbi5oCmluZGV4IGY2YmYxNzcyYWZhYzZmZTMzNzlmN2FmMDk1Y2I0MmQ0N2ZjMDQwZDAuLmY1
NzI3YzhkZjhkZTJmN2VmODdhMjljZGNkMzA5ZDM0ODk1NDdiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQXVkaW9UcmFja0NvbmZpZ3VyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUF1ZGlv
VHJhY2tDb25maWd1cmF0aW9uLmgKQEAgLTM2LDE4ICszNiwxMiBAQCBzdHJ1Y3QgUGxhdGZvcm1B
dWRpb1RyYWNrQ29uZmlndXJhdGlvbiA6IFBsYXRmb3JtVHJhY2tDb25maWd1cmF0aW9uIHsKICAg
ICB1aW50MzJfdCBudW1iZXJPZkNoYW5uZWxzIHsgMCB9OwogICAgIHVpbnQ2NF90IGJpdHJhdGUg
eyAwIH07CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGxhdGZvcm1BdWRpb1RyYWNrQ29u
ZmlndXJhdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKKwogICAgIHRlbXBsYXRlIDxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGUgPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFBs
YXRmb3JtQXVkaW9UcmFja0NvbmZpZ3VyYXRpb24mKTsKIH07CiAKLWlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgUGxhdGZvcm1BdWRpb1RyYWNrQ29uZmlndXJhdGlvbiYgYSwgY29uc3QgUGxh
dGZvcm1BdWRpb1RyYWNrQ29uZmlndXJhdGlvbiYgYikKLXsKLSAgICByZXR1cm4gYS5jb2RlYyA9
PSBiLmNvZGVjCi0gICAgICAgICYmIGEuc2FtcGxlUmF0ZSA9PSBiLnNhbXBsZVJhdGUKLSAgICAg
ICAgJiYgYS5udW1iZXJPZkNoYW5uZWxzID09IGIubnVtYmVyT2ZDaGFubmVscwotICAgICAgICAm
JiBhLmJpdHJhdGUgPT0gYi5iaXRyYXRlOwotfQotCiB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgUGxhdGZvcm1BdWRpb1RyYWNrQ29uZmlndXJhdGlvbjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybVRyYWNrQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1UcmFja0NvbmZpZ3VyYXRpb24uaAppbmRleCBkMGY5N2E2MDBm
ODRlNDMwNzc1YjU4OTAxNjBmNGEwNjdmNDhkMjI3Li5mYWI0NWY2Y2Y4MDkwZmFlNWY3ZThmODcz
MDM5MDkwNWEwNzkxMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybVRyYWNrQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVHJhY2tDb25maWd1cmF0aW9uLmgKQEAgLTMzLDYgKzMz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgUGxhdGZvcm1UcmFja0NvbmZpZ3Vy
YXRpb24gewogICAgIFN0cmluZyBjb2RlYzsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGxh
dGZvcm1UcmFja0NvbmZpZ3VyYXRpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvQ29s
b3JTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1WaWRl
b0NvbG9yU3BhY2UuaAppbmRleCA1MGU0YWI5Mjc2NDUwMGE1YWNhM2YxZTc0YTliODg4ZmExYjU0
YzhiLi41NDA1MTAwMjQ2ZWVkN2ZmOTIyODFhNGI0NjZmMzIyNTZhNzM4ZWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvQ29sb3JTcGFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVmlkZW9D
b2xvclNwYWNlLmgKQEAgLTM5LDIyICszOSwxMSBAQCBzdHJ1Y3QgUGxhdGZvcm1WaWRlb0NvbG9y
U3BhY2UgewogICAgIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1WaWRlb1RyYW5zZmVyQ2hhcmFjdGVy
aXN0aWNzPiB0cmFuc2ZlcjsKICAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtVmlkZW9NYXRyaXhD
b2VmZmljaWVudHM+IG1hdHJpeDsKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGZ1bGxSYW5nZTsK
LSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgZGVjb2RlKERlY29kZXImLCBQbGF0Zm9ybVZpZGVvQ29sb3JTcGFjZSYpOwotfTsKLQot
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQbGF0Zm9ybVZpZGVvQ29sb3JTcGFjZSYgYSwg
Y29uc3QgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UmIGIpCi17Ci0gICAgcmV0dXJuIGEucHJpbWFy
aWVzID09IGIucHJpbWFyaWVzCi0gICAgICAgICYmIGEudHJhbnNmZXIgPT0gYi50cmFuc2Zlcgot
ICAgICAgICAmJiBhLm1hdHJpeCA9PSBiLm1hdHJpeAotICAgICAgICAmJiBhLmZ1bGxSYW5nZSA9
PSBiLmZ1bGxSYW5nZTsKLX0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQbGF0Zm9y
bVZpZGVvQ29sb3JTcGFjZSYgYSwgY29uc3QgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2UmIGIpCi17
Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGxh
dGZvcm1WaWRlb0NvbG9yU3BhY2UmKSBjb25zdCA9IGRlZmF1bHQ7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFBsYXRmb3JtVmlkZW9Db2xvclNwYWNlJik7Cit9OwogCiB0ZW1wbGF0ZSA8Y2xh
c3MgRW5jb2Rlcj4KIHZvaWQgUGxhdGZvcm1WaWRlb0NvbG9yU3BhY2U6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1WaWRlb1RyYWNrQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1WaWRlb1RyYWNrQ29uZmlndXJhdGlvbi5oCmluZGV4
IDY1M2IxOTBiY2Y2ZjBhZTdmOGY3YTI0ZGQ2MjFhZjU3Mjk2YWVmY2IuLjBmNjRlNGU0Njk5MDAx
MGQ4ZjYzNDA1MDk0NmFkMTYzNjVkODlmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVmlkZW9UcmFja0NvbmZpZ3VyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVZpZGVvVHJhY2tDb25maWd1
cmF0aW9uLmgKQEAgLTM5LDIwICszOSwxMSBAQCBzdHJ1Y3QgUGxhdGZvcm1WaWRlb1RyYWNrQ29u
ZmlndXJhdGlvbiA6IFBsYXRmb3JtVHJhY2tDb25maWd1cmF0aW9uIHsKICAgICBkb3VibGUgZnJh
bWVyYXRlIHsgMCB9OwogICAgIHVpbnQ2NF90IGJpdHJhdGUgeyAwIH07CiAKLSAgICB0ZW1wbGF0
ZSA8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBs
YXRlIDxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBQbGF0Zm9ybVZpZGVvVHJhY2tDb25maWd1cmF0aW9uJik7CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFBsYXRmb3JtVmlkZW9UcmFja0NvbmZpZ3VyYXRpb24mKSBjb25zdCA9
IGRlZmF1bHQ7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFBsYXRmb3JtVmlkZW9UcmFja0Nv
bmZpZ3VyYXRpb24mKTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUGxhdGZv
cm1WaWRlb1RyYWNrQ29uZmlndXJhdGlvbiYgYSwgY29uc3QgUGxhdGZvcm1WaWRlb1RyYWNrQ29u
ZmlndXJhdGlvbiYgYikKLXsKLSAgICByZXR1cm4gYS5jb2RlYyA9PSBiLmNvZGVjCi0gICAgICAg
ICYmIGEud2lkdGggPT0gYi53aWR0aAotICAgICAgICAmJiBhLmhlaWdodCA9PSBiLmhlaWdodAot
ICAgICAgICAmJiBhLmNvbG9yU3BhY2UgPT0gYi5jb2xvclNwYWNlCi0gICAgICAgICYmIGEuZnJh
bWVyYXRlID09IGIuZnJhbWVyYXRlCi0gICAgICAgICYmIGEuYml0cmF0ZSA9PSBiLmJpdHJhdGU7
Ci19Ci0KIHRlbXBsYXRlIDxjbGFzcyBFbmNvZGVyPgogdm9pZCBQbGF0Zm9ybVZpZGVvVHJhY2tD
b25maWd1cmF0aW9uOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKaW5kZXggMTllZWRjZjU2ZTVmNWFiZjlh
YTYxZDhkMjVlNDNhOWY3ODkxY2M5MS4uZWRjYzEyMDZmODdmNDhhZmQ4M2Y0NjZjNDMxNjhiZGQy
NzU5OGQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmgKQEAg
LTg1LDggKzg1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgaW50IHkgeyAwIH07CiAgICAgICAgIHNp
emVfdCBzZWdtZW50SW5kZXggeyAwIH07CiAKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTcGFuPiBkZWNvZGUoRGVjb2RlciYpOworICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3BhbiYpIGNvbnN0ID0gZGVmYXVsdDsKKyAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxTcGFuPiBkZWNvZGUoRGVjb2RlciYpOwogICAgIH07CiAKICAgICBjbGFzcyBTaGFwZSB7CkBA
IC0xMjAsNiArMTIxLDggQEAgcHJpdmF0ZToKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29t
cGFyZU9wZXJhdGlvbj4KICAgICAgICAgc3RhdGljIGJvb2wgY29tcGFyZVNoYXBlcyhjb25zdCBT
aGFwZSYgc2hhcGUxLCBjb25zdCBTaGFwZSYgc2hhcGUyKTsKIAorICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2hhcGUmKSBjb25zdCA9IGRlZmF1bHQ7CisKICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTaGFwZT4gZGVjb2RlKERl
Y29kZXImKTsKIApAQCAtMTQ0LDggKzE0Nyw2IEBAIHByaXZhdGU6CiAKICAgICAgICAgVmVjdG9y
PGludCwgMzI+IG1fc2VnbWVudHM7CiAgICAgICAgIFZlY3RvcjxTcGFuLCAxNj4gbV9zcGFuczsK
LQotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlJiwgY29uc3QgU2hh
cGUmKTsKICAgICB9OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjb3B5U2hhcGUoKSBj
b25zdCB7IHJldHVybiBtX3NoYXBlID8gbWFrZVVuaXF1ZTxTaGFwZT4oKm1fc2hhcGUpIDogbnVs
bHB0cjsgfQpAQCAtMTU1LDkgKzE1Niw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PFNoYXBlPiBtX3NoYXBlOwogCiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWdp
b24mLCBjb25zdCBSZWdpb24mKTsKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNo
YXBlJiwgY29uc3QgU2hhcGUmKTsKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNw
YW4mLCBjb25zdCBTcGFuJik7Ci0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTcGFu
JiwgY29uc3QgU3BhbiYpOwogfTsKIAogc3RhdGljIGlubGluZSBSZWdpb24gaW50ZXJzZWN0KGNv
bnN0IFJlZ2lvbiYgYSwgY29uc3QgUmVnaW9uJiBiKQpAQCAtMTg4LDI1ICsxODYsNiBAQCBpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lvbiYgYSwgY29uc3QgUmVnaW9uJiBiKQogewog
ICAgIHJldHVybiBhLm1fYm91bmRzID09IGIubV9ib3VuZHMgJiYgYXJlUG9pbnRpbmdUb0VxdWFs
RGF0YShhLm1fc2hhcGUsIGIubV9zaGFwZSk7CiB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFJlZ2lvbiYgYSwgY29uc3QgUmVnaW9uJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7
Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaW9uOjpTaGFwZSYgYSwgY29u
c3QgUmVnaW9uOjpTaGFwZSYgYikKLXsKLSAgICByZXR1cm4gYS5tX3NwYW5zID09IGIubV9zcGFu
cyAmJiBhLm1fc2VnbWVudHMgPT0gYi5tX3NlZ21lbnRzOwotfQotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFJlZ2lvbjo6U3BhbiYgYSwgY29uc3QgUmVnaW9uOjpTcGFuJiBiKQotewot
ICAgIHJldHVybiBhLnkgPT0gYi55ICYmIGEuc2VnbWVudEluZGV4ID09IGIuc2VnbWVudEluZGV4
OwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lvbjo6U3BhbiYgYSwgY29u
c3QgUmVnaW9uOjpTcGFuJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19CiAKIFdFQkNP
UkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBj
b25zdCBSZWdpb24mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUm91bmRlZFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Jv
dW5kZWRSZWN0LmgKaW5kZXggMTE3YmVlZjdhMzNjMmZlYjAxODc1MjMwNjVkZmU1OTI0MzRlMDU5
MC4uMmI4NmFmODU1MGJiNWZlNTIyMTE2NzIzOGIxNGM5NzVlZWQ3ODgyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5oCkBAIC03MSw2ICs3MSw4
IEBAIHB1YmxpYzoKIAogICAgICAgICBSYWRpaSB0cmFuc3Bvc2VkUmFkaWkoKSBjb25zdCB7IHJl
dHVybiBSYWRpaShtX3RvcExlZnQudHJhbnNwb3NlZFNpemUoKSwgbV90b3BSaWdodC50cmFuc3Bv
c2VkU2l6ZSgpLCBtX2JvdHRvbUxlZnQudHJhbnNwb3NlZFNpemUoKSwgbV9ib3R0b21SaWdodC50
cmFuc3Bvc2VkU2l6ZSgpKTsgfQogCisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSYWRp
aSYpIGNvbnN0ID0gZGVmYXVsdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIExheW91dFNpemUg
bV90b3BMZWZ0OwogICAgICAgICBMYXlvdXRTaXplIG1fdG9wUmlnaHQ7CkBAIC0xMTIsMjEgKzEx
NCwxMyBAQCBwdWJsaWM6CiAKICAgICBSb3VuZGVkUmVjdCB0cmFuc3Bvc2VkUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIFJvdW5kZWRSZWN0KG1fcmVjdC50cmFuc3Bvc2VkUmVjdCgpLCBtX3JhZGlpLnRy
YW5zcG9zZWRSYWRpaSgpKTsgfQogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJvdW5kZWRS
ZWN0JikgY29uc3QgPSBkZWZhdWx0OworCiBwcml2YXRlOgogICAgIExheW91dFJlY3QgbV9yZWN0
OwogICAgIFJhZGlpIG1fcmFkaWk7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFJvdW5kZWRSZWN0OjpSYWRpaSYgYSwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiBiKQotewot
ICAgIHJldHVybiBhLnRvcExlZnQoKSA9PSBiLnRvcExlZnQoKSAmJiBhLnRvcFJpZ2h0KCkgPT0g
Yi50b3BSaWdodCgpICYmIGEuYm90dG9tTGVmdCgpID09IGIuYm90dG9tTGVmdCgpICYmIGEuYm90
dG9tUmlnaHQoKSA9PSBiLmJvdHRvbVJpZ2h0KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgUm91bmRlZFJlY3QmIGEsIGNvbnN0IFJvdW5kZWRSZWN0JiBiKQotewotICAgIHJl
dHVybiBhLnJlY3QoKSA9PSBiLnJlY3QoKSAmJiBhLnJhZGlpKCkgPT0gYi5yYWRpaSgpOwotfQot
CiAvLyBTbmlwIGF3YXkgcmVjdGFuZ2xlcyBmcm9tIGNvcm5lcnMsIHJvdWdobHkgb25lIHBlciBz
dGVwIGxlbmd0aCBvZiBhcmMuCiBXRUJDT1JFX0VYUE9SVCBSZWdpb24gYXBwcm94aW1hdGVBc1Jl
Z2lvbihjb25zdCBSb3VuZGVkUmVjdCYsIHVuc2lnbmVkIHN0ZXBMZW5ndGggPSAyMCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RhYlNpemUuaAppbmRleCAzNGE3MDgxMDYy
OGFjOTUyN2Y0ZjVjZjA0NzVkODM1YjdjYzJlYWNmLi44NWNjYWEwZmU0ZmNhMjZjNGZmNTY5YmNh
ZWYxMGVlMjlmYmE2NmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9UYWJTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGFi
U2l6ZS5oCkBAIC0yOSw0OSArMjksMzEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKKyNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAotZW51bSBUYWJTaXpl
VmFsdWVUeXBlIHsKLSAgICBMZW5ndGhWYWx1ZVR5cGUsCi0gICAgU3BhY2VWYWx1ZVR5cGUsCi19
OworbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgVGFiU2l6ZSB7Ci0gICAgVGFiU2l6ZShm
bG9hdCBudW1Pckxlbmd0aCwgVGFiU2l6ZVZhbHVlVHlwZSBpc1NwYWNlcyA9IFNwYWNlVmFsdWVU
eXBlKQotICAgICAgICA6IG1fdmFsdWUobnVtT3JMZW5ndGgpCi0gICAgICAgICwgbV9pc1NwYWNl
cyhpc1NwYWNlcykKKyAgICBlbnVtIFZhbHVlVHlwZSB7IExlbmd0aCwgU3BhY2VzIH07CisgICAg
VGFiU2l6ZShmbG9hdCBudW1Pckxlbmd0aCwgVmFsdWVUeXBlIHR5cGUgPSBTcGFjZXMpCisgICAg
ICAgIDogdmFsdWUobnVtT3JMZW5ndGgpCisgICAgICAgICwgaXNTcGFjZXModHlwZSA9PSBTcGFj
ZXMpCiAgICAgewogICAgIH0KIAotICAgIGJvb2wgaXNTcGFjZXMoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1faXNTcGFjZXM7Ci0gICAgfQotCiAgICAgZmxvYXQgd2lkdGhJblBpeGVs
cyhmbG9hdCBzcGFjZVdpZHRoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1faXNTcGFj
ZXMgPyBtX3ZhbHVlICogc3BhY2VXaWR0aCA6IG1fdmFsdWU7CisgICAgICAgIHJldHVybiBpc1Nw
YWNlcyA/IHZhbHVlICogc3BhY2VXaWR0aCA6IHZhbHVlOwogICAgIH0KIAotICAgIGZsb2F0IHZh
bHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgIH0KKyAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdmFsdWU7IH0KIAotICAgIG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpOyB9CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFRhYlNpemUmKSBjb25zdCA9IGRlZmF1bHQ7CiAKLSAgICBmbG9hdCBtX3ZhbHVl
OwotICAgIGJvb2wgbV9pc1NwYWNlczsKKyAgICBmbG9hdCB2YWx1ZTsKKyAgICBib29sIGlzU3Bh
Y2VzOwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUYWJTaXplJiBhLCBjb25z
dCBUYWJTaXplJiBiKQotewotICAgIHJldHVybiAoYS5tX3ZhbHVlID09IGIubV92YWx1ZSkgJiYg
KGEubV9pc1NwYWNlcyA9PSBiLm1faXNTcGFjZXMpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFRhYlNpemUmIGEsIGNvbnN0IFRhYlNpemUmIGIpCi17Ci0gICAgcmV0dXJuICEo
YSA9PSBiKTsKLX0KK2lubGluZSBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0
cmVhbSwgVGFiU2l6ZSBzaXplKSB7IHJldHVybiBzdHJlYW0gPDwgc2l6ZS52YWx1ZSA8PCAoc2l6
ZS5pc1NwYWNlcyA/ICIgc3BhY2VzIiA6ICIiKTsgfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WUDlVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCmlu
ZGV4IGI2MTI2NGMwZmYzMjA1YWVkYTBjYjJlMzY0ZmI2ODNmYTkxMDVhNjAuLjU3MWNjM2FhYjky
OWU0MzQxOTI3ZjI0NzI3ZmEwZDM5ZmVlZmVmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1ZQOVV0aWxpdGllcy5oCkBAIC0xMzIsNiArMTMyLDggQEAgc3RydWN0
IFNjcmVlbkRhdGFPdmVycmlkZXMgewogICAgIGRvdWJsZSBoZWlnaHQgeyAwIH07CiAgICAgZG91
YmxlIHNjYWxlIHsgMSB9OwogCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcmVlbkRhdGFP
dmVycmlkZXMmKSBjb25zdCA9IGRlZmF1bHQ7CisKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewpAQCAtMTU4
LDE0ICsxNjAsNCBAQCBzdHJ1Y3QgU2NyZWVuRGF0YU92ZXJyaWRlcyB7CiAgICAgfQogfTsKIAot
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JlZW5EYXRhT3ZlcnJpZGVzJiBhLCBjb25z
dCBTY3JlZW5EYXRhT3ZlcnJpZGVzJiBiKQotewotICAgIHJldHVybiBhLndpZHRoID09IGIud2lk
dGggJiYgYS5oZWlnaHQgPT0gYi5oZWlnaHQgJiYgYS5zY2FsZSA9PSBiLnNjYWxlOwotfQotCi1p
bmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNjcmVlbkRhdGFPdmVycmlkZXMmIGEsIGNvbnN0
IFNjcmVlbkRhdGFPdmVycmlkZXMmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKaW5kZXggNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1
YmFlNDVlZDkzY2Y2Mi4uMDE4YTljM2RlNzc1MzIzMzE5OTljMGViNTViOTAyZTExYzRlZTYxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCkBAIC0xODEsNyArMTgxLDcgQEAgcHVibGljOgogICAg
IHN0cnVjdCBSZXF1ZXN0IHsKICAgICAgICAgQXRvbVN0cmluZyBpbml0VHlwZTsKICAgICAgICAg
VmVjdG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0Pj4gcmVxdWVzdHM7Ci0gICAgICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXF1ZXN0JiBvdGhlcikgY29uc3QgeyByZXR1cm4gaW5p
dFR5cGUgPT0gb3RoZXIuaW5pdFR5cGUgJiYgcmVxdWVzdHMgPT0gb3RoZXIucmVxdWVzdHM7IH0K
KyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlcXVlc3QmKSBjb25zdCA9IGRlZmF1bHQ7
CiAgICAgfTsKIAogICAgIGJvb2wgaGFzUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kQ2hhcHRlclRy
YWNrUHJpdmF0ZUFWRk9iakMuaAppbmRleCBlZTFhMzc5YTViZDgyYTI2YWMzMjEyYzNkZGY2ZTdj
MDQwYzE4YzU1Li5kMTlmZTRkNTNmNmIwZDc5MTA0MWYxMTM4MGE5MzdjMTEyYjg3ZjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9JbmJhbmRDaGFwdGVyVHJhY2tQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0luYmFuZENoYXB0ZXJUcmFja1By
aXZhdGVBVkZPYmpDLmgKQEAgLTYwLDE0ICs2MCwxMCBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNo
YXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJJbmJhbmRDaGFwdGVyVHJh
Y2tQcml2YXRlQVZGT2JqQyI7IH0KIAogICAgIHN0cnVjdCBDaGFwdGVyRGF0YSB7Ci0gICAgICAg
IE1lZGlhVGltZSBtX3N0YXJ0VGltZTsKLSAgICAgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247Ci0g
ICAgICAgIFN0cmluZyBtX3RpdGxlOwotCi0gICAgICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ2hhcHRlckRhdGEmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gbV9zdGFydFRpbWUgPT0gb3RoZXIubV9zdGFydFRpbWUgJiYgbV9kdXJhdGlvbiA9
PSBvdGhlci5tX2R1cmF0aW9uICYmIG1fdGl0bGUgPT0gb3RoZXIubV90aXRsZTsKLSAgICAgICAg
fQorICAgICAgICBNZWRpYVRpbWUgc3RhcnRUaW1lOworICAgICAgICBNZWRpYVRpbWUgZHVyYXRp
b247CisgICAgICAgIFN0cmluZyB0aXRsZTsKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENoYXB0ZXJEYXRhJikgY29uc3QgPSBkZWZhdWx0OwogICAgIH07CiAKICAgICBWZWN0b3I8Q2hh
cHRlckRhdGE+IG1fcHJvY2Vzc2VkQ2hhcHRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250RmFtaWx5U3BlY2lmaWNhdGlvbkNvcmVUZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlT
cGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCmluZGV4IDNiNGRhNGY1MjdiYzg0ZTVhNDcxNjhhOTk0
NmU3ZmI2ODc3NGU3ZTIuLjc3OTgwNTA4ZDRkODk5Y2U1ZWZmNTdhODQzODc4NDlmMGM5ZWExNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRG
YW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRGYW1pbHlTcGVjaWZpY2F0aW9uQ29yZVRleHQuY3BwCkBA
IC01NiwxMSArNTYsNiBAQCBzdHJ1Y3QgRm9udEZhbWlseVNwZWNpZmljYXRpb25LZXkgewogICAg
ICAgICByZXR1cm4gc2FmZUNGRXF1YWwoZm9udERlc2NyaXB0b3IuZ2V0KCksIG90aGVyLmZvbnRE
ZXNjcmlwdG9yLmdldCgpKSAmJiBmb250RGVzY3JpcHRpb25LZXkgPT0gb3RoZXIuZm9udERlc2Ny
aXB0aW9uS2V5OwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGb250RmFtaWx5
U3BlY2lmaWNhdGlvbktleSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7Ci0gICAgfQotCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIGZvbnREZXNjcmlwdGlvbktleS5pc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDA1
YTgzMTZkYzI3ZTYzMDE3ZjM5N2YxOTI0NjliODJhMzNiN2IwMzQuLjA0YzAwM2I0ZTJlODc2OGNk
NTg3Nzc0ZTVkMWVjNjMyNzljODhiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCkBAIC0xNDIyLDE4ICsxNDIyLDE4IEBAIHdlYm06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpBdWRpb1RyYWNrRGF0YTo6Y29uc3VtZUZyYW1lRGF0YSh3ZWJtOjpSZWFkCiAgICAg
ICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiQ01CbG9ja0J1ZmZlckdl
dERhdGFQb2ludGVyIGZhaWxlZCB3aXRoIGVycm9yIiwgZXJyKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBPcHVzQ29va2llQ29udGVudHMgY29va2llQ29udGVudHM7Ci0gICAgICAgICAgICBp
ZiAoIXBhcnNlT3B1c1ByaXZhdGVEYXRhKHByaXZhdGVEYXRhLnNpemUoKSwgcHJpdmF0ZURhdGEu
ZGF0YSgpLCAqbV9jb21wbGV0ZVBhY2tldFNpemUsIGJsb2NrQnVmZmVyRGF0YSwgY29va2llQ29u
dGVudHMpKSB7CisgICAgICAgICAgICBhdXRvIGNvb2tpZUNvbnRlbnRzID0gcGFyc2VPcHVzUHJp
dmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRlRGF0YS5kYXRhKCksICptX2NvbXBs
ZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhKTsKKyAgICAgICAgICAgIGlmICghY29va2ll
Q29udGVudHMpIHsKICAgICAgICAgICAgICAgICBQQVJTRVJfTE9HX0VSUk9SX0lGX1BPU1NJQkxF
KCJGYWlsZWQgdG8gcGFyc2UgT3B1cyBwcml2YXRlIGRhdGEiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoIWNvb2tpZUNvbnRlbnRzLmZyYW1lc1BlclBhY2tldCkgeworICAgICAgICAg
ICAgaWYgKCFjb29raWVDb250ZW50cy0+ZnJhbWVzUGVyUGFja2V0KSB7CiAgICAgICAgICAgICAg
ICAgUEFSU0VSX0xPR19FUlJPUl9JRl9QT1NTSUJMRSgiT3B1cyBwcml2YXRlIGRhdGEgaW5kaWNh
dGVzIDAgZnJhbWVzIHBlciBwYWNrZXQ7IGJhaWxpbmciKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBtX2ZyYW1lc1BlclBhY2tldCA9IGNvb2tpZUNvbnRlbnRzLmZyYW1lc1BlclBhY2tldDsK
LSAgICAgICAgICAgIG1fZnJhbWVEdXJhdGlvbiA9IGNvb2tpZUNvbnRlbnRzLmZyYW1lRHVyYXRp
b247Ci0gICAgICAgICAgICBmb3JtYXREZXNjcmlwdGlvbiA9IGNyZWF0ZU9wdXNBdWRpb0Zvcm1h
dERlc2NyaXB0aW9uKGNvb2tpZUNvbnRlbnRzKTsKKyAgICAgICAgICAgIG1fZnJhbWVzUGVyUGFj
a2V0ID0gY29va2llQ29udGVudHMtPmZyYW1lc1BlclBhY2tldDsKKyAgICAgICAgICAgIG1fZnJh
bWVEdXJhdGlvbiA9IGNvb2tpZUNvbnRlbnRzLT5mcmFtZUR1cmF0aW9uOworICAgICAgICAgICAg
Zm9ybWF0RGVzY3JpcHRpb24gPSBjcmVhdGVPcHVzQXVkaW9Gb3JtYXREZXNjcmlwdGlvbigqY29v
a2llQ29udGVudHMpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFmb3JtYXREZXNjcmlwdGlv
bikgewpAQCAtMTQ1Myw3ICsxNDUzLDYgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNl
cldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdlYm06OlJlYWQKICAgICAg
ICAgLy8gT3B1cyB0ZWNobmljYWxseSBhbGxvd3MgdGhlIGZyYW1lIGR1cmF0aW9uIGFuZCBmcmFt
ZXMtcGVyLXBhY2tldCB2YWx1ZXMgdG8gY2hhbmdlIGZyb20gcGFja2V0IHRvIHBhY2tldC4KICAg
ICAgICAgLy8gQ29yZUF1ZGlvIGRvZXNuJ3Qgc3VwcG9ydCBBU0JEIHZhbHVlcyBsaWtlIHRoZXNl
IHRvIGNoYW5nZSBvbiBhIHBlci1wYWNrZXQgYmFzaXMsIHNvIHRocm93IGFuIGVycm9yIHdoZW4K
ICAgICAgICAgLy8gdGhhdCBraW5kIG9mIHZhcmlhYmlsaXR5IGlzIGVuY291bnRlcmVkLgotICAg
ICAgICBPcHVzQ29va2llQ29udGVudHMgY29va2llQ29udGVudHM7CiAgICAgICAgIGF1dG8mIHBy
aXZhdGVEYXRhID0gdHJhY2soKS5jb2RlY19wcml2YXRlLnZhbHVlKCk7CiAgICAgICAgIGF1dG8g
Y29udGlndW91c0J1ZmZlciA9IGNvbnRpZ3VvdXNDb21wbGV0ZUJsb2NrQnVmZmVyKG1fY3VycmVu
dFBhY2tldEJ5dGVPZmZzZXQsICptX2NvbXBsZXRlUGFja2V0U2l6ZSk7CiAgICAgICAgIGlmICgh
Y29udGlndW91c0J1ZmZlcikgewpAQCAtMTQ2Niw5ICsxNDY1LDggQEAgd2VibTo6U3RhdHVzIFNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OkF1ZGlvVHJhY2tEYXRhOjpjb25zdW1lRnJhbWVEYXRhKHdl
Ym06OlJlYWQKICAgICAgICAgICAgIFBBUlNFUl9MT0dfRVJST1JfSUZfUE9TU0lCTEUoIkNNQmxv
Y2tCdWZmZXJHZXREYXRhUG9pbnRlciBmYWlsZWQgd2l0aCBlcnJvciIsIGVycik7CiAgICAgICAg
ICAgICByZXR1cm4gU2tpcCgmcmVhZGVyLCBieXRlc1JlbWFpbmluZyk7CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKCFwYXJzZU9wdXNQcml2YXRlRGF0YShwcml2YXRlRGF0YS5zaXplKCksIHByaXZh
dGVEYXRhLmRhdGEoKSwgKm1fY29tcGxldGVQYWNrZXRTaXplLCBibG9ja0J1ZmZlckRhdGEsIGNv
b2tpZUNvbnRlbnRzKQotICAgICAgICAgICAgfHwgY29va2llQ29udGVudHMuZnJhbWVzUGVyUGFj
a2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0Ci0gICAgICAgICAgICB8fCBjb29raWVDb250ZW50cy5m
cmFtZUR1cmF0aW9uICE9IG1fZnJhbWVEdXJhdGlvbikgeworICAgICAgICBhdXRvIGNvb2tpZUNv
bnRlbnRzID0gcGFyc2VPcHVzUHJpdmF0ZURhdGEocHJpdmF0ZURhdGEuc2l6ZSgpLCBwcml2YXRl
RGF0YS5kYXRhKCksICptX2NvbXBsZXRlUGFja2V0U2l6ZSwgYmxvY2tCdWZmZXJEYXRhKTsKKyAg
ICAgICAgaWYgKCFjb29raWVDb250ZW50cyB8fCBjb29raWVDb250ZW50cy0+ZnJhbWVzUGVyUGFj
a2V0ICE9IG1fZnJhbWVzUGVyUGFja2V0IHx8IGNvb2tpZUNvbnRlbnRzLT5mcmFtZUR1cmF0aW9u
ICE9IG1fZnJhbWVEdXJhdGlvbikgewogICAgICAgICAgICAgUEFSU0VSX0xPR19FUlJPUl9JRl9Q
T1NTSUJMRSgiT3B1cyBmcmFtZXMtcGVyLXBhY2tldCBjaGFuZ2VkIHdpdGhpbiBhIHRyYWNrOyBl
cnJvciIpOwogICAgICAgICAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OkNvZGUoRXJyb3JDb2Rl
OjpWYXJpYWJsZUZyYW1lRHVyYXRpb24pKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERhdGFiYXNlQ29yZVRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1N5c3RlbUZvbnRE
YXRhYmFzZUNvcmVUZXh0LmgKaW5kZXggOWFkMWUwY2M0NTBmMGVhYTgyOTgxNzM1NTk3ODAwYWMw
ODA0OTZkNC4uZmUzMjcyNGJmZGZjNTFlOTVlY2UyODJlNzNlMzUxZjlmMWU3YWZmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU3lzdGVtRm9udERh
dGFiYXNlQ29yZVRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9TeXN0ZW1Gb250RGF0YWJhc2VDb3JlVGV4dC5oCkBAIC01OSwxNiArNTksNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICByZXR1cm4gZm9udE5hbWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYXNjYWRlTGlz
dFBhcmFtZXRlcnMmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
Zm9udE5hbWUgPT0gb3RoZXIuZm9udE5hbWUKLSAgICAgICAgICAgICAgICAmJiBsb2NhbGUgPT0g
b3RoZXIubG9jYWxlCi0gICAgICAgICAgICAgICAgJiYgd2VpZ2h0ID09IG90aGVyLndlaWdodAot
ICAgICAgICAgICAgICAgICYmIHdpZHRoID09IG90aGVyLndpZHRoCi0gICAgICAgICAgICAgICAg
JiYgc2l6ZSA9PSBvdGhlci5zaXplCi0gICAgICAgICAgICAgICAgJiYgYWxsb3dVc2VySW5zdGFs
bGVkRm9udHMgPT0gb3RoZXIuYWxsb3dVc2VySW5zdGFsbGVkRm9udHMKLSAgICAgICAgICAgICAg
ICAmJiBpdGFsaWMgPT0gb3RoZXIuaXRhbGljOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDYXNjYWRlTGlzdFBhcmFtZXRlcnMmKSBjb25zdCA9IGRlZmF1bHQ7CiAK
ICAgICAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxpdGllc0Nv
Y29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJNQXVkaW9V
dGlsaXRpZXNDb2NvYS5oCmluZGV4IDg3MTA0ZDhiN2IzNTdjMTYwYjZkY2NjNDFiZmUxZjg5ZTBh
NmMyNzEuLjhiNjdkZTZmNDkzMDFiYTAxMTU4YTk4MDA5OTU5Mjc3MDQ0NTIzNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYk1BdWRpb1V0aWxp
dGllc0NvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
V2ViTUF1ZGlvVXRpbGl0aWVzQ29jb2EuaApAQCAtMjgsOCArMjgsOCBAQAogI2lmIFBMQVRGT1JN
KENPQ09BKQogCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TZWNv
bmRzLmg+CiAKLWNsYXNzIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb247CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NSw5ICs1NSw5IEBAIHN0cnVjdCBPcHVzQ29va2ll
Q29udGVudHMgewogCiBXRUJDT1JFX0VYUE9SVCBib29sIGlzT3B1c0RlY29kZXJBdmFpbGFibGUo
KTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVnaXN0ZXJPcHVzRGVjb2RlcklmTmVlZGVkKCk7Ci1i
b29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBwcml2YXRlRGF0YVNpemUsIGNvbnN0IHZv
aWQqIHByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVEYXRhU2l6ZSwgY29uc3Qgdm9pZCogZnJhbWVE
YXRhLCBPcHVzQ29va2llQ29udGVudHMmKTsKK3N0ZDo6b3B0aW9uYWw8T3B1c0Nvb2tpZUNvbnRl
bnRzPiBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgcHJpdmF0ZURhdGFTaXplLCBjb25zdCB2
b2lkKiBwcml2YXRlRGF0YSwgc2l6ZV90IGZyYW1lRGF0YVNpemUsIGNvbnN0IHZvaWQqIGZyYW1l
RGF0YSk7CiBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gY3JlYXRlT3B1c0F1ZGlv
Rm9ybWF0RGVzY3JpcHRpb24oY29uc3QgT3B1c0Nvb2tpZUNvbnRlbnRzJik7CiAKIH0KIAotI2Vu
ZGlmIC8vICYmIFBMQVRGT1JNKENPQ09BKQorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViTUF1ZGlv
VXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQppbmRleCA3ZTBhZmIyOTBkZDg1YTc3ZjliZWZm
ZjQ5NDdhNDdiNzUzNWViMmY0Li5hYjViYTFmMjUyY2VjMjcxNmI1MDBmNmY5YTVjNGJiYTY3NDI4
MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9X
ZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9XZWJNQXVkaW9VdGlsaXRpZXNDb2NvYS5tbQpAQCAtMTY5LDcgKzE2OSw3
IEBAIGNvbnN0ZXhwciBpbnQzMl90IG9wdXNDb25maWdUb0JhbmR3aWR0aCh1aW50OF90IGNvbmZp
ZykKIH0KICNlbmRpZgogCi1ib29sIHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVfdCBjb2RlY1By
aXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLCBzaXplX3QgZnJhbWVTaXpl
LCBjb25zdCB2b2lkKiBmcmFtZURhdGEsIE9wdXNDb29raWVDb250ZW50cyYgY29va2llKQorc3Rk
OjpvcHRpb25hbDxPcHVzQ29va2llQ29udGVudHM+IHBhcnNlT3B1c1ByaXZhdGVEYXRhKHNpemVf
dCBjb2RlY1ByaXZhdGVTaXplLCBjb25zdCB2b2lkKiBjb2RlY1ByaXZhdGVEYXRhLCBzaXplX3Qg
ZnJhbWVTaXplLCBjb25zdCB2b2lkKiBmcmFtZURhdGEpCiB7CiAjaWYgRU5BQkxFKE9QVVMpCiAg
ICAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc4NDUKQEAgLTIwMSwxNiArMjAx
LDE3IEBAIGJvb2wgcGFyc2VPcHVzUHJpdmF0ZURhdGEoc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemUs
IGNvbnN0IHZvaWQqIGNvZGVjUHJpdmF0ZURhdGEsCiAgICAgYXV0byogcHJpdmF0ZURhdGFQdHIg
PSBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oY29kZWNQcml2YXRlRGF0YSk7CiAKICAgICBp
ZiAoY29kZWNQcml2YXRlU2l6ZSA8IDE5KQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMS4gTWFnaWMgU2lnbmF0dXJlOgogICAgIC8v
CiAgICAgLy8gICAgIFRoaXMgaXMgYW4gOC1vY3RldCAoNjQtYml0KSBmaWVsZCB0aGF0IGFsbG93
cyBjb2RlYwogICAgIC8vICAgICBpZGVudGlmaWNhdGlvbiBhbmQgaXMgaHVtYW4gcmVhZGFibGUu
CiAgICAgaWYgKHN0cm5jbXAoIk9wdXNIZWFkIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4ocHJpdmF0ZURhdGFQdHIpLCA4KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gMi4gVmVyc2lvbiAoOCBiaXRzLCB1bnNpZ25l
ZCk6CisgICAgT3B1c0Nvb2tpZUNvbnRlbnRzIGNvb2tpZTsKICAgICBjb29raWUudmVyc2lvbiA9
ICoocHJpdmF0ZURhdGFQdHIgKyA4KTsKIAogICAgIC8vIDMuIE91dHB1dCBDaGFubmVsIENvdW50
ICdDJyAoOCBiaXRzLCB1bnNpZ25lZCk6CkBAIC0yMzEsNyArMjMyLDcgQEAgYm9vbCBwYXJzZU9w
dXNQcml2YXRlRGF0YShzaXplX3QgY29kZWNQcml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQ
cml2YXRlRGF0YSwKICAgICBhdXRvIGZyYW1lUHRyID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGZyYW1lRGF0YSk7CiAKICAgICBpZiAoZnJhbWVTaXplIDwgMSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gaHR0cHM6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzY3MTYKICAgICAvLyAzLjEuIFRoZSBUT0MgQnl0ZQpAQCAt
Mjg1LDIxICsyODYsMjAgQEAgYm9vbCBwYXJzZU9wdXNQcml2YXRlRGF0YShzaXplX3QgY29kZWNQ
cml2YXRlU2l6ZSwgY29uc3Qgdm9pZCogY29kZWNQcml2YXRlRGF0YSwKICAgICAgICAgLy8KICAg
ICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgIEZpZ3VyZSA1OiBUaGUgZnJhbWUgY291bnQg
Ynl0ZQogICAgICAgICBpZiAoZnJhbWVTaXplIDwgMikKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgdWludDhfdCBm
cmFtZUNvdW50Qnl0ZSA9ICooZnJhbWVQdHIgKyAxKTsKICAgICAgICAgY29va2llLmlzVkJSID0g
KChmcmFtZUNvdW50Qnl0ZSAmIDBiMTAwMDAwMDApID4+IDcpID09IDE7CiAgICAgICAgIGNvb2tp
ZS5oYXNQYWRkaW5nID0gKChmcmFtZUNvdW50Qnl0ZSAmIDBiMDEwMDAwMDApID4+IDYpID09IDE7
CiAgICAgICAgIGNvb2tpZS5mcmFtZXNQZXJQYWNrZXQgPSAoZnJhbWVDb3VudEJ5dGUgJiAwYjAw
MTExMTExKTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGNvb2tpZTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvZGVjUHJpdmF0ZVNpemUpOwogICAgIFVOVVNFRF9QQVJB
TShjb2RlY1ByaXZhdGVEYXRhKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVTaXplKTsKICAgICBV
TlVTRURfUEFSQU0oZnJhbWVEYXRhKTsKLSAgICBVTlVTRURfUEFSQU0oY29va2llKTsKLSAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJvdGF0aW9u
U2Vzc2lvblZULmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVJv
dGF0aW9uU2Vzc2lvblZULmgKaW5kZXggYmRlZGNjZjcwYTg1YjFlNzI4NzAwODQ4OTY2NWY5OTU1
YTQ0ZmYwOS4uZTJkZGIwMjRkZDE0NDk4ODI4NGYxYjRlODU1MDQ4YjFlMjZmMWQwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VSb3RhdGlvblNl
c3Npb25WVC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdl
Um90YXRpb25TZXNzaW9uVlQuaApAQCAtNDUsMTMgKzQ1LDEyIEBAIHB1YmxpYzoKICAgICAgICAg
dW5zaWduZWQgYW5nbGUgeyAwIH07CiAKICAgICAgICAgYm9vbCBpc0lkZW50aXR5KCkgY29uc3Qg
eyByZXR1cm4gIWZsaXBYICYmICFmbGlwWSAmJiAhYW5nbGU7IH0KLSAgICB9OwogCi0gICAgZW51
bSBjbGFzcyBJc0NHSW1hZ2VDb21wYXRpYmxlIHsKLSAgICAgICAgTm8sCi0gICAgICAgIFllcywK
KyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJv
dGF0aW9uUHJvcGVydGllcyYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9OwogCisgICAgZW51bSBj
bGFzcyBJc0NHSW1hZ2VDb21wYXRpYmxlIDogYm9vbCB7IE5vLCBZZXMgfTsKKwogICAgIEltYWdl
Um90YXRpb25TZXNzaW9uVlQoQWZmaW5lVHJhbnNmb3JtJiYsIEZsb2F0U2l6ZSwgSXNDR0ltYWdl
Q29tcGF0aWJsZSk7CiAgICAgSW1hZ2VSb3RhdGlvblNlc3Npb25WVChjb25zdCBSb3RhdGlvblBy
b3BlcnRpZXMmLCBGbG9hdFNpemUsIElzQ0dJbWFnZUNvbXBhdGlibGUpOwogICAgIEltYWdlUm90
YXRpb25TZXNzaW9uVlQoKSA9IGRlZmF1bHQ7CkBAIC03NywxNCArNzYsNCBAQCBwcml2YXRlOgog
ICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUG9vbFJlZj4gbV9yb3RhdGlvblBvb2w7CiB9Owog
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJv
dGF0aW9uUHJvcGVydGllcyYgcm90YXRpb24xLCBjb25zdCBJbWFnZVJvdGF0aW9uU2Vzc2lvblZU
OjpSb3RhdGlvblByb3BlcnRpZXMmIHJvdGF0aW9uMikKLXsKLSAgICByZXR1cm4gcm90YXRpb24x
LmZsaXBYID09IHJvdGF0aW9uMi5mbGlwWCAmJiByb3RhdGlvbjEuZmxpcFkgPT0gcm90YXRpb24y
LmZsaXBZICYmIHJvdGF0aW9uMS5hbmdsZSA9PSByb3RhdGlvbjIuYW5nbGU7Ci19Ci0KLWlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW1hZ2VSb3RhdGlvblNlc3Npb25WVDo6Um90YXRpb25Q
cm9wZXJ0aWVzJiByb3RhdGlvbjEsIGNvbnN0IEltYWdlUm90YXRpb25TZXNzaW9uVlQ6OlJvdGF0
aW9uUHJvcGVydGllcyYgcm90YXRpb24yKQotewotICAgIHJldHVybiAhKHJvdGF0aW9uMSA9PSBy
b3RhdGlvbjIpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuaApp
bmRleCBkZjA2NDA2ZGNhYjY4YTI5YWMwMjk1NjkwYTBjOWUzNWZlM2U2MzU1Li4wMmUyZGExODMy
ZDdmOGY5ZTYyOGI4OTI5ZjY1YTBjNTMzY2FkM2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZXJhdG9yLmgKQEAgLTUwLDcgKzUwLDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICZtX2Rp
c3BsYXlMaXN0ID09ICZvdGhlci5tX2Rpc3BsYXlMaXN0ICYmIG1fY3Vyc29yID09IG90aGVyLm1f
Y3Vyc29yOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICB2b2lkIG9wZXJhdG9yKysoKSB7
IGFkdmFuY2UoKTsgfQogCiAgICAgc3RydWN0IFZhbHVlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCmlu
ZGV4IDUxMzViYjAyYTQwMjJkYzViYjRjOTA0NDkxOGNhZjc1NGQwODI3M2MuLjE0NDllODIyMjJh
ZDA1NzI2ZThhM2YwMzAwZTM4NDc0ZTBhYzZjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaApAQCAt
NzMsNyArNzMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWY8RmlsdGVyT3BlcmF0aW9uPiBj
bG9uZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZp
bHRlck9wZXJhdGlvbiYpIGNvbnN0ID0gMDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmls
dGVyT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8pOyB9CiAKICAgICB2
aXJ0dWFsIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlv
biogLypmcm9tKi8sIGNvbnN0IEJsZW5kaW5nQ29udGV4dCYsIGJvb2wgLypibGVuZFRvUGFzc3Ro
cm91Z2gqLyA9IGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgKaW5kZXggM2M3NzMw
MDY4NWNiYzIwNGQwZDUwZDQ1Yzk1NjZhOGE1ZTcxMWNmOS4uNzViMDEzOWY4M2E4OGNkZTEzNjg0
NjQ5NDU2NWE5NzY2NDNmNWUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmgKQEAgLTM2LDcgKzM2
LDYgQEAgY2xhc3MgRmlsdGVyT3BlcmF0aW9ucyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
KSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICB2b2lkIGNsZWFy
KCkgeyBtX29wZXJhdGlvbnMuY2xlYXIoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaApp
bmRleCBjZDM3ZWU0N2Y1YTNlMjhmNDdjNDVjNjI5MmJiOWRmMzFmMTMwM2QzLi5jYjAxZmZiYzlk
ZWI5NzRmMWRmYWMzMTE4N2RjNzg2NWJjNmFjZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3Jt
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTYgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAgICAgMjAxMCBEaXJr
IFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ3LDggKzQ3
LDggQEAgY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRTaXpl
OwogY2xhc3MgSW50UG9pbnQ7Ci1jbGFzcyBJbnRTaXplOwogY2xhc3MgSW50UmVjdDsKK2NsYXNz
IEludFNpemU7CiBjbGFzcyBSZWdpb247CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIApA
QCAtNjgsMjAgKzY4LDE1IEBAIHB1YmxpYzoKIAogICAgIC8vIFJvdW5kcyB0aGUgbWFwcGVkIHBv
aW50IHRvIHRoZSBuZWFyZXN0IGludGVnZXIgdmFsdWUuCiAgICAgV0VCQ09SRV9FWFBPUlQgSW50
UG9pbnQgbWFwUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLQogICAgIFdFQkNPUkVfRVhQ
T1JUIEZsb2F0UG9pbnQgbWFwUG9pbnQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwotCiAgICAg
V0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBtYXBTaXplKGNvbnN0IEludFNpemUmKSBjb25zdDsKLQog
ICAgIFdFQkNPUkVfRVhQT1JUIEZsb2F0U2l6ZSBtYXBTaXplKGNvbnN0IEZsb2F0U2l6ZSYpIGNv
bnN0OwogCiAgICAgLy8gUm91bmRzIHRoZSByZXN1bHRpbmcgbWFwcGVkIHJlY3RhbmdsZSBvdXQu
IFRoaXMgaXMgaGVscGZ1bCBmb3IgYm91bmRpbmcKICAgICAvLyBib3ggY29tcHV0YXRpb25zIGJ1
dCBtYXkgbm90IGJlIHdoYXQgaXMgd2FudGVkIGluIG90aGVyIGNvbnRleHRzLgogICAgIFdFQkNP
UkVfRVhQT1JUIEludFJlY3QgbWFwUmVjdChjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0KICAgICBX
RUJDT1JFX0VYUE9SVCBGbG9hdFJlY3QgbWFwUmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFF1YWQgbWFwUXVhZChjb25zdCBGbG9hdFF1YWQmKSBj
b25zdDsKLQogICAgIFdFQkNPUkVfRVhQT1JUIFJlZ2lvbiBtYXBSZWdpb24oY29uc3QgUmVnaW9u
JikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzSWRlbnRpdHkoKSBjb25zdDsK
QEAgLTEzNCwxMiArMTI5LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3Ry
YW5zZm9ybVswXSA9PSAxICYmIG1fdHJhbnNmb3JtWzFdID09IDAgJiYgbV90cmFuc2Zvcm1bMl0g
PT0gMCAmJiBtX3RyYW5zZm9ybVszXSA9PSAxOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgaXNJ
ZGVudGl0eU9yVHJhbnNsYXRpb25PckZsaXBwZWQoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fdHJhbnNmb3JtWzBdID09IDEgJiYgbV90cmFuc2Zvcm1bMV0gPT0gMCAmJiBtX3RyYW5z
Zm9ybVsyXSA9PSAwICYmIChtX3RyYW5zZm9ybVszXSA9PSAxIHx8IG1fdHJhbnNmb3JtWzNdID09
IC0xKTsKICAgICB9Ci0gICAgCisKICAgICBib29sIGlzUm90YXRlT3JTaGVhcigpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV90cmFuc2Zvcm1bMV0gfHwgbV90cmFuc2Zvcm1bMl07CkBA
IC0xNTAsMjQgKzE0NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAobV90cmFuc2Zvcm1b
MV0gPT0gMCAmJiBtX3RyYW5zZm9ybVsyXSA9PSAwKSB8fCAobV90cmFuc2Zvcm1bMF0gPT0gMCAm
JiBtX3RyYW5zZm9ybVszXSA9PSAwKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0gKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgbTIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKG1f
dHJhbnNmb3JtWzBdID09IG0yLm1fdHJhbnNmb3JtWzBdCi0gICAgICAgICAgICAgJiYgbV90cmFu
c2Zvcm1bMV0gPT0gbTIubV90cmFuc2Zvcm1bMV0KLSAgICAgICAgICAgICAmJiBtX3RyYW5zZm9y
bVsyXSA9PSBtMi5tX3RyYW5zZm9ybVsyXQotICAgICAgICAgICAgICYmIG1fdHJhbnNmb3JtWzNd
ID09IG0yLm1fdHJhbnNmb3JtWzNdCi0gICAgICAgICAgICAgJiYgbV90cmFuc2Zvcm1bNF0gPT0g
bTIubV90cmFuc2Zvcm1bNF0KLSAgICAgICAgICAgICAmJiBtX3RyYW5zZm9ybVs1XSA9PSBtMi5t
X3RyYW5zZm9ybVs1XSk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIGNvbnN0ID0gZGVmYXVs
dDsKIAogICAgIC8vICp0aGlzID0gKnRoaXMgKiB0IChpLmUuLCBhIG11bHRSaWdodCkKICAgICBB
ZmZpbmVUcmFuc2Zvcm0mIG9wZXJhdG9yKj0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0KQogICAg
IHsKICAgICAgICAgcmV0dXJuIG11bHRpcGx5KHQpOwogICAgIH0KLSAgICAKKwogICAgIC8vIHJl
c3VsdCA9ICp0aGlzICogdCAoaS5lLiwgYSBtdWx0UmlnaHQpCiAgICAgQWZmaW5lVHJhbnNmb3Jt
IG9wZXJhdG9yKihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHQpIGNvbnN0CiAgICAgewpAQCAtMTg2
LDEzICsxNzEsMTMgQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIGRlY29tcG9zZSB0aGUgbWF0
cml4IGludG8gaXRzIGNvbXBvbmVudCBwYXJ0cwotICAgIHR5cGVkZWYgc3RydWN0IHsKKyAgICBz
dHJ1Y3QgRGVjb21wb3NlZFR5cGUgewogICAgICAgICBkb3VibGUgc2NhbGVYLCBzY2FsZVk7CiAg
ICAgICAgIGRvdWJsZSBhbmdsZTsKICAgICAgICAgZG91YmxlIHJlbWFpbmRlckEsIHJlbWFpbmRl
ckIsIHJlbWFpbmRlckMsIHJlbWFpbmRlckQ7CiAgICAgICAgIGRvdWJsZSB0cmFuc2xhdGVYLCB0
cmFuc2xhdGVZOwotICAgIH0gRGVjb21wb3NlZFR5cGU7Ci0gICAgCisgICAgfTsKKwogICAgIGJv
b2wgZGVjb21wb3NlKERlY29tcG9zZWRUeXBlJikgY29uc3Q7CiAgICAgdm9pZCByZWNvbXBvc2Uo
Y29uc3QgRGVjb21wb3NlZFR5cGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbi5oCmluZGV4IDNmYzU2MmEwY2JlYjA4ZWM3NTg3N2I5MTdmZDk0YTQ5ZjQz
ZWZkMjkuLjA4NjIwZjkyMGE3ZWZiZWJiNzJhMzQ4ZjNiOGQwOTEwYjNmMTBhNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RU
cmFuc2Zvcm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNSZXByZXNlbnRhYmxlSW4yRCgpIGNvbnN0IGZpbmFs
OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3BlcmF0b3I9PShzdGF0aWNfY2FzdDxjb25zdCBUcmFu
c2Zvcm1PcGVyYXRpb24mPihvdGhlcikpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1h
dHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uJiBvdGhlcikgY29uc3QgPSBkZWZhdWx0OwogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRTaXplJikgY29uc3Qgb3ZlcnJpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9y
bU9wZXJhdGlvbi5oCmluZGV4IDZlYzg5N2I2MDdiMTc3ZjcwMTY2N2QxN2Q3M2I4MDdmYjE5MDU0
YjEuLjBlYmQ5YzZmODlhNDJhZjcyZjVlMzE5NmYxNDU4YzdkNjY1YjQ1NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNm
b3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtNTUsNyArNTUsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYSA9
PSAxICYmIG1fYiA9PSAwICYmIG1fYyA9PSAwICYmIG1fZCA9PSAxICYmIG1fZSA9PSAwICYmIG1f
ZiA9PSAwOyB9CiAgICAgYm9vbCBpc0FmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAhaXNJZGVudGl0eSgpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uJiBvdGhlcikgY29uc3QgeyByZXR1cm4gb3Bl
cmF0b3I9PShzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mPihvdGhlcikpOyB9
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbiYgb3Ro
ZXIpIGNvbnN0ID0gZGVmYXVsdDsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGFwcGx5KFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Bl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgKaW5kZXgg
NjAzODdlMWU5NGU2ZmIzYzFhMmNjOWUzYjY0ZWJlNDhkOTcwMDk3YS4uYjJkNjkzNjljMDc2Y2I0
NDI3NWVlNDkzYWNkMmIwNjJiOTM3YjBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNBZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIWlzSWRlbnRpdHkoKTsgfQogICAgIGJvb2wgaXNSZXByZXNlbnRhYmxlSW4yRCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGVy
c3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24mIG90aGVyKSBjb25zdCB7IHJldHVybiBvcGVyYXRv
cj09KHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiY+KG90aGVyKSk7IH0KKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24mIG90
aGVyKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4g
ZmxvYXRWYWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFuc2Zvcm1PcGVyYXRp
b24uaAppbmRleCA0NGMwODcyOTM2OGE3ZjI4OGJlNWU0M2U0MDIxYWEzYTA2Nzk2OTE4Li4wYjQz
ZWQyMzEzNTgzOGIzNzYxYjM0NTlmOGVhOTIzYjE2NGEzZDExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IGRvdWJsZSB6KCkgY29uc3QgeyByZXR1cm4gbV96OyB9CiAgICAgZG91YmxlIGFuZ2xlKCkgY29u
c3QgeyByZXR1cm4gbV9hbmdsZTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJvdGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG9wZXJhdG9yPT0oc3Rh
dGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJj4ob3RoZXIpKTsgfQorICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24mIG90aGVyKSBjb25zdCA9
IGRlZmF1bHQ7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBjb25zdCBCbGVuZGluZ0NvbnRleHQmLCBib29s
IGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJh
dGlvbi5oCmluZGV4IGZhNTljZGIwYTAwMzE2OWE2OGZjNjZkMWFjMDNmOGFiOWNiZTJmNDUuLmVh
YjE3YTY4MjdiMWE1YTEyZWQ3YTE3MTQ0NDVlZDkwZmFjYjgyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtT3BlcmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1PcGVyYXRpb24uaApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBS
ZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0ID0gMDsKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG8pOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNJZGVudGl0eSgpIGNv
bnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAppbmRleCBjZjU5YTE5
ZTgyNjFhNDQ2NzVmYjI3NWYyNTBiYTEyZWY4ZDYzY2U4Li44YzQzMTNiOTRlYTZhY2FlNjFjMzE4
OGI4NzRjMmJmMWJkMDE4MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybU9wZXJhdGlvbnMuaApA
QCAtMzgsMTEgKzM4LDcgQEAgY2xhc3MgVHJhbnNmb3JtT3BlcmF0aW9ucyB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgVHJhbnNmb3JtT3BlcmF0aW9ucyhib29sIG1ha2VJZGVudGl0eSA9IGZhbHNl
KTsKICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYg
bykgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMm
IG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmKSBjb25zdDsKICAg
ICAKICAgICB2b2lkIGFwcGx5KGNvbnN0IEZsb2F0U2l6ZSYgc3osIFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0KSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApp
bmRleCBjOTUxMTc3YTMxMGI3NjA0YzIxNTljZDZlMjQ5N2ZkOGYyNTdiODNiLi41ZjIxNjM5YTY5
MjU2ZDY4MGIwNDMwYzdlMDVjZTZlOTUyZTc4YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oCkBAIC0yOTEsMTMgKzI5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgZG91Ymxl
IGFuZ2xlOwogICAgICAgICBkb3VibGUgbTExLCBtMTIsIG0yMSwgbTIyOwogICAgICAgICAKLSAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlY29tcG9zZWQyVHlwZSYgb3RoZXIpIGNvbnN0
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzY2FsZVggPT0gb3RoZXIuc2NhbGVYICYm
IHNjYWxlWSA9PSBvdGhlci5zY2FsZVkKLSAgICAgICAgICAgICAgICAmJiB0cmFuc2xhdGVYID09
IG90aGVyLnRyYW5zbGF0ZVggJiYgdHJhbnNsYXRlWSA9PSBvdGhlci50cmFuc2xhdGVZCi0gICAg
ICAgICAgICAgICAgJiYgYW5nbGUgPT0gb3RoZXIuYW5nbGUKLSAgICAgICAgICAgICAgICAmJiBt
MTEgPT0gb3RoZXIubTExICYmIG0xMiA9PSBvdGhlci5tMTIgJiYgbTIxID09IG90aGVyLm0yMSAm
JiBtMjIgPT0gb3RoZXIubTIyOwotICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBEZWNvbXBvc2VkMlR5cGUmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKIAogICAgIHN0
cnVjdCBEZWNvbXBvc2VkNFR5cGUgewpAQCAtMzA3LDE0ICszMDEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGRvdWJsZSB0cmFuc2xhdGVYLCB0cmFuc2xhdGVZLCB0cmFuc2xhdGVaOwogICAgICAgICBk
b3VibGUgcGVyc3BlY3RpdmVYLCBwZXJzcGVjdGl2ZVksIHBlcnNwZWN0aXZlWiwgcGVyc3BlY3Rp
dmVXOwogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEZWNvbXBvc2VkNFR5cGUmIG90
aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc2NhbGVYID09IG90aGVy
LnNjYWxlWCAmJiBzY2FsZVkgPT0gb3RoZXIuc2NhbGVZICYmIHNjYWxlWiA9PSBvdGhlci5zY2Fs
ZVoKLSAgICAgICAgICAgICAgICAmJiBza2V3WFkgPT0gb3RoZXIuc2tld1hZICYmIHNrZXdYWiA9
PSBvdGhlci5za2V3WFogJiYgc2tld1laID09IG90aGVyLnNrZXdZWgotICAgICAgICAgICAgICAg
ICYmIHF1YXRlcm5pb25YID09IG90aGVyLnF1YXRlcm5pb25YICYmIHF1YXRlcm5pb25ZID09IG90
aGVyLnF1YXRlcm5pb25ZICYmIHF1YXRlcm5pb25aID09IG90aGVyLnF1YXRlcm5pb25aICYmIHF1
YXRlcm5pb25XID09IG90aGVyLnF1YXRlcm5pb25XCi0gICAgICAgICAgICAgICAgJiYgdHJhbnNs
YXRlWCA9PSBvdGhlci50cmFuc2xhdGVYICYmIHRyYW5zbGF0ZVkgPT0gb3RoZXIudHJhbnNsYXRl
WSAmJiB0cmFuc2xhdGVaID09IG90aGVyLnRyYW5zbGF0ZVoKLSAgICAgICAgICAgICAgICAmJiBw
ZXJzcGVjdGl2ZVggPT0gb3RoZXIucGVyc3BlY3RpdmVYICYmIHBlcnNwZWN0aXZlWSA9PSBvdGhl
ci5wZXJzcGVjdGl2ZVkgJiYgcGVyc3BlY3RpdmVaID09IG90aGVyLnBlcnNwZWN0aXZlWiAmJiBw
ZXJzcGVjdGl2ZVcgPT0gb3RoZXIucGVyc3BlY3RpdmVXOwotICAgICAgICB9CisgICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBEZWNvbXBvc2VkNFR5cGUmKSBjb25zdCA9IGRlZmF1bHQ7CiAg
ICAgfTsKICAgICAKICAgICBib29sIGRlY29tcG9zZTIoRGVjb21wb3NlZDJUeXBlJikgY29uc3Q7
CkBAIC0zNTgsOCArMzQ1LDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG1fbWF0cml4WzNd
WzNdID09IG0yLm1fbWF0cml4WzNdWzNdKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQotCiAgICAgLy8gKnRoaXMgPSAqdGhpcyAqIHQKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgb3BlcmF0b3IqPShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xp
c3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViR0xCbG9ja2xpc3QubW0KaW5k
ZXggYjUyYzg2MTg2ZjBiYjA2ZmQzMjNlZDI5ZjgyZDc3Yzk1OGZlMjYwOC4uODljMjQ4NDY5NjYw
MjA4OGI4MDkzZGMyNzhmZWU3OGFkODViNzUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYkdMQmxvY2tsaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJHTEJsb2NrbGlzdC5tbQpAQCAtMzUsNDMgKzM1LDExIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0cnVjdCBPU0J1aWxkSW5mbyB7Ci0gICAgT1NCdWlsZEluZm8oKQotICAg
ICAgICA6IG1ham9yKDApCi0gICAgICAgICwgbWlub3IoMCkKLSAgICAgICAgLCBidWlsZCgwKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBPU0J1aWxkSW5mbyhpbnQgbWFqb3IsIGludCBtaW5vciwgaW50
IGJ1aWxkKQotICAgICAgICA6IG1ham9yKG1ham9yKQotICAgICAgICAsIG1pbm9yKG1pbm9yKQot
ICAgICAgICAsIGJ1aWxkKGJ1aWxkKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgT1NCdWlsZEluZm8mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1ham9yID09IG90aGVyLm1ham9yICYmIG1pbm9yID09IG90aGVyLm1pbm9yICYmIGJ1aWxkID09
IG90aGVyLmJ1aWxkOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IE9TQnVpbGRJ
bmZvJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnRpZShtYWpvciwg
bWlub3IsIGJ1aWxkKSA+IHN0ZDo6dGllKG90aGVyLm1ham9yLCBvdGhlci5taW5vciwgb3RoZXIu
YnVpbGQpOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBPU0J1aWxkSW5mbyYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjp0aWUobWFqb3IsIG1pbm9y
LCBidWlsZCkgPD0gc3RkOjp0aWUob3RoZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWls
ZCk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgT1NCdWlsZEluZm8mIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6dGllKG1ham9yLCBtaW5vciwgYnVp
bGQpIDwgc3RkOjp0aWUob3RoZXIubWFqb3IsIG90aGVyLm1pbm9yLCBvdGhlci5idWlsZCk7Ci0g
ICAgfQorICAgIGludCBtYWpvciB7IDAgfTsgLy8gUmVwcmVzZW50cyB0aGUgMTMgaW4gMTNDNjQu
CisgICAgaW50IG1pbm9yIHsgMCB9OyAvLyBSZXByZXNlbnRzIHRoZSBDIGluIDEzQzY0IChhcyBh
IG51bWJlciB3aGVyZSBBID09IDEsIGkuZS4gMykuCisgICAgaW50IGJ1aWxkIHsgMCB9OyAvLyBS
ZXByZXNlbnRzIHRoZSA2NCBpbiAxM0M2NC4KIAotICAgIGludCBtYWpvcjsgLy8gUmVwcmVzZW50
cyB0aGUgMTMgaW4gMTNDNjQuCi0gICAgaW50IG1pbm9yOyAvLyBSZXByZXNlbnRzIHRoZSBDIGlu
IDEzQzY0IChhcyBhIG51bWJlciB3aGVyZSBBID09IDEsIGkuZS4gMykuCi0gICAgaW50IGJ1aWxk
OyAvLyBSZXByZXNlbnRzIHRoZSA2NCBpbiAxM0M2NC4KKyAgICBmcmllbmQgYXV0byBvcGVyYXRv
cjw9PihPU0J1aWxkSW5mbywgT1NCdWlsZEluZm8pID0gZGVmYXVsdDsKIH07CiAKIHN0YXRpYyBP
U0J1aWxkSW5mbyBidWlsZEluZm9Gcm9tT1NCdWlsZFN0cmluZyhOU1N0cmluZyAqYnVpbGRTdHJp
bmcpCkBAIC04Myw3ICs1MSw3IEBAIHN0YXRpYyBPU0J1aWxkSW5mbyBidWlsZEluZm9Gcm9tT1NC
dWlsZFN0cmluZyhOU1N0cmluZyAqYnVpbGRTdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgICAg
ICBOU0xvZyhAIldlYkdMQmxvY2tsaXN0IGNvdWxkIG5vdCBwYXJzZSBPU0J1aWxkIGVudHJ5OiAl
QCIsIGJ1aWxkU3RyaW5nKTsKICNlbmRpZgotICAgICAgICByZXR1cm4gT1NCdWlsZEluZm8oKTsK
KyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBOU1RleHRDaGVja2luZ1Jlc3VsdCAq
bWF0Y2hSZXN1bHQgPSBbbWF0Y2hlcyBvYmplY3RBdEluZGV4OjBdOwpAQCAtOTIsMTQgKzYwLDE0
IEBAIHN0YXRpYyBPU0J1aWxkSW5mbyBidWlsZEluZm9Gcm9tT1NCdWlsZFN0cmluZyhOU1N0cmlu
ZyAqYnVpbGRTdHJpbmcpCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBOU0xvZyhAIldlYkdMQmxv
Y2tsaXN0IGNvdWxkIG5vdCBwYXJzZSBPU0J1aWxkIGVudHJ5OiAlQCIsIGJ1aWxkU3RyaW5nKTsK
ICNlbmRpZgotICAgICAgICByZXR1cm4gT1NCdWlsZEluZm8oKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAKICAgICBpbnQgbWFqb3JWZXJzaW9uID0gW1tidWlsZFN0cmluZyBzdWJzdHJp
bmdXaXRoUmFuZ2U6W21hdGNoUmVzdWx0IHJhbmdlQXRJbmRleDoxXV0gaW50VmFsdWVdOwogICAg
IGludCBtaW5vclZlcnNpb24gPSBbW2J1aWxkU3RyaW5nIHN1YnN0cmluZ1dpdGhSYW5nZTpbbWF0
Y2hSZXN1bHQgcmFuZ2VBdEluZGV4OjJdXSBjaGFyYWN0ZXJBdEluZGV4OjBdIC0gJ0EnICsgMTsK
ICAgICBpbnQgYnVpbGRWZXJzaW9uID0gW1tidWlsZFN0cmluZyBzdWJzdHJpbmdXaXRoUmFuZ2U6
W21hdGNoUmVzdWx0IHJhbmdlQXRJbmRleDozXV0gaW50VmFsdWVdOwogCi0gICAgcmV0dXJuIE9T
QnVpbGRJbmZvKG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uLCBidWlsZFZlcnNpb24pOworICAg
IHJldHVybiB7IG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uLCBidWlsZFZlcnNpb24gfTsKIH0K
IAogYm9vbCBXZWJHTEJsb2NrbGlzdDo6c2hvdWxkQmxvY2tXZWJHTCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKaW5k
ZXggYmEwMjhmNGRiZGZkMTllYjEyYTZjN2ZlYzZjYTA0NDg2OTY1MTQwOS4uMjdiODE4N2Y0OTlj
MGViMTBiMWQxM2ZmMjJkYTRjZjU5YjFhNmI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaApAQCAtNzg2LDcgKzc4
Niw2IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRl
eDsgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
Y29uc3QgRmxhdHRlbmVkQ29uc3RyYWludCogbV9jb25zdHJhaW50IHsgbnVsbHB0ciB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRp
b1NoYXJlZFVuaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9C
YXNlQXVkaW9TaGFyZWRVbml0LmgKaW5kZXggMjViMmJmZDUzODQ1NjgzNGIyMmViMTY3NDQ1ZWRl
MGM3YTZiMzkwZi4uMTUxZjYxNGNhZDkwMjVlYjkyNGYwOWIxYThhNzBjYjhhY2I1ZWExNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRp
b1NoYXJlZFVuaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRp
bWUuaD4KKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbEJhc2UuaAppbmRleCBjOTA5ZTVlMTEyZTFmYWYy
N2RiZDFkMDUxYmI4MDRkMmM1ZmY4OTc3Li5iY2QxN2I0MmE3MGRlNDIzZjViNTdjYmRiOTBjNTIz
ZGZhYTdmZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Ny
ZWRlbnRpYWxCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsQmFzZS5oCkBAIC02Nyw3ICs2Nyw2IEBAIHByaXZhdGU6CiB9OwogCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IENyZWRlbnRpYWwmIGEsIGNvbnN0IENyZWRlbnRpYWwmIGIpIHsg
cmV0dXJuIENyZWRlbnRpYWxCYXNlOjpjb21wYXJlKGEsIGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IENyZWRlbnRpYWwmIGEsIGNvbnN0IENyZWRlbnRpYWwmIGIpIHsgcmV0dXJu
ICEoYSA9PSBiKTsgfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggZTlkMzQ0M2Y4YjVjNjgyNDQ2
NjU2YzE4ODA1NjU3Y2MyOWQyZDgzNy4uMDE0MWNiNzAzZTM5YjI2MDdhODY0MjlhN2E0ZTA0ZDMz
MTQ4ZTkwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApA
QCAtMTYxLDEwICsxNjEsNiBAQCBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICAgICAgICAg
IHJldHVybiBzdGQ6OmdldDwxPihkYXRhKSA9PSBzdGQ6OmdldDwxPihvdGhlci5kYXRhKTsKICAg
ICAgICAgcmV0dXJuIHN0ZDo6Z2V0PDI+KGRhdGEpID09IHN0ZDo6Z2V0PDI+KG90aGVyLmRhdGEp
OwogICAgIH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9ybURhdGFFbGVtZW50JiBvdGhl
cikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9
CiAgICAgCiAgICAgRGF0YSBkYXRhOwogfTsKQEAgLTI3OSwxMSArMjc1LDYgQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBGb3JtRGF0YSYgYSwgY29uc3QgRm9ybURhdGEmIGIpCiAgICAg
cmV0dXJuIGEuZWxlbWVudHMoKSA9PSBiLmVsZW1lbnRzKCk7CiB9CiAKLWlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgRm9ybURhdGEmIGEsIGNvbnN0IEZvcm1EYXRhJiBiKQotewotICAgIHJl
dHVybiAhKGEgPT0gYik7Ci19Ci0KIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiB2b2lkIEZv
cm1EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmgKaW5kZXggZmEwMzdmY2Y5Njgx
NzNjMGNhOTNkNDcxYzNkZDQxZGM0ODcwYjBjYi4uN2Y2OWM5OGNlYTEzMTE2ODJmZjFmN2M2ZGM1
YjFiZjY3MWI3ZjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQSGVhZGVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQSGVhZGVyTWFwLmgKQEAgLTk4LDcgKzk4LDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEhU
VFBIZWFkZXJNYXBDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7IH0KICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhUVFBIZWFkZXJNYXBD
b25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IG1fY29tbW9uSGVhZGVyc0l0ID09IG90aGVyLm1fY29tbW9uSGVhZGVyc0l0ICYmIG1fdW5jb21t
b25IZWFkZXJzSXQgPT0gb3RoZXIubV91bmNvbW1vbkhlYWRlcnNJdDsKQEAgLTIwMSwxMSArMjAw
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBmcmllbmQg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEhUVFBIZWFkZXJNYXAmIGEsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gIShhID09IGIpOwotICAgIH0KLQogICAgIHRl
bXBsYXRlIDxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIEhUVFBIZWFkZXJNYXAmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2VCYXNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuaAppbmRleCBkMWRlOTZh
ZTA2MDA1NzRmMDUyNWMwZjRmNWJlOGVhZDZkMmI4YTYyLi5mYzA3MGVhYzU2NzllZTZlNzQ4MGIy
YWQ2YTgxNWUwYjljZDdkOGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZUJhc2UuaApAQCAtOTksNyArOTksNiBAQCBwcml2YXRl
OgogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGEs
IGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYikgeyByZXR1cm4gUHJvdGVjdGlvblNwYWNlQmFzZTo6
Y29tcGFyZShhLCBiKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQcm90ZWN0aW9u
U3BhY2UmIGEsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAppbmRleCA0ODhkZWJjMTQzZDYz
ZjQ1N2U4ZDM4ZTljNmRjMjNhOWQyMGJhODE2Li4yYmY4MjM3ZjgwNzU3MzQ1ZGFjZGU3YWEyMmRk
ZjEyZDQ2NjQxYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlRXJyb3JCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUVycm9yQmFzZS5oCkBAIC0xMDcsNyArMTA3LDYgQEAgcHJpdmF0ZToKIFdFQkNP
UkVfRVhQT1JUIFJlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBVUkwmKTsKIAogaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBiKSB7IHJldHVybiBSZXNvdXJjZUVycm9yQmFzZTo6Y29tcGFyZShhLCBiKTsgfQot
aW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5oCmluZGV4IDQwYzAwOGNhZGZkNWVhNzU1MzdkMGM1Nzk4MDExZjBhNDQy
N2M0M2IuLjNlY2Y4MWUzZTFlYzUzYTM2YmY4YzE0Yzk3OTMyMDBmYzg5NDZlODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oCkBAIC0yNzQsNyArMjc0LDYgQEAgcHJpdmF0ZToKIGJvb2wgZXF1YWxJZ25vcmluZ0hlYWRl
ckZpZWxkcyhjb25zdCBSZXNvdXJjZVJlcXVlc3RCYXNlJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
QmFzZSYpOwogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBiKSB7IHJldHVybiBSZXNvdXJjZVJlcXVlc3RCYXNl
OjplcXVhbChhLCBiKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShSZXNvdXJjZVJlcXVlc3Qm
IGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKIFdF
QkNPUkVfRVhQT1JUIHVuc2lnbmVkIGluaXRpYWxpemVNYXhpbXVtSFRUUENvbm5lY3Rpb25Db3Vu
dFBlckhvc3QoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrTG9hZE1ldHJpY3MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5t
bQppbmRleCA2MzEyZTA2ODQyOTdiNDNjMzMxMWU0NzM5YjY4MWFiNDQ1YzMzNjcyLi5iZjVjNzRm
NGNmZGNhMzc1ZTNiZTQyMzJlNDc1YzIyZGFmZmNlY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtMb2FkTWV0cmljcy5t
bQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJSZXNvdXJjZUhhbmRsZS5oIgogI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9OU1VSTENvbm5lY3Rpb25TUEkuaD4KKyNpbXBvcnQgPHd0Zi9XYWxs
VGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0JpZGlSZXNvbHZlci5oCmluZGV4IDY5ZDllNDZlMDg2NTY4ZGM5MDdhYjU4NGRjNDI2
Njg1NzA1ZmRjZjAuLjgzOTgyMDI0ZTRhNGQyNWEyZGY4OWZlODk0N2ViMzA4MjhmNWMzNzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaApAQCAtMTIzLDEx
ICsxMjMsNiBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJpZGlTdGF0dXMmIHN0YXR1
czEsIGNvbnN0IEJpZGlTdGF0dXMmIHN0YXR1czIpCiAgICAgcmV0dXJuIHN0YXR1czEuZW9yID09
IHN0YXR1czIuZW9yICYmIHN0YXR1czEubGFzdCA9PSBzdGF0dXMyLmxhc3QgJiYgc3RhdHVzMS5s
YXN0U3Ryb25nID09IHN0YXR1czIubGFzdFN0cm9uZyAmJiAqKHN0YXR1czEuY29udGV4dCkgPT0g
KihzdGF0dXMyLmNvbnRleHQpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJp
ZGlTdGF0dXMmIHN0YXR1czEsIGNvbnN0IEJpZGlTdGF0dXMmIHN0YXR1czIpCi17Ci0gICAgcmV0
dXJuICEoc3RhdHVzMSA9PSBzdGF0dXMyKTsKLX0KLQogc3RydWN0IEJpZGlDaGFyYWN0ZXJSdW4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaAppbmRleCAwMmY0NDgy
MDBjOTQ0YzRhZTE0ZjEyOThjMzhiMjkxMTg3MzVkMTM5Li41MGI2ZDVhMmZmNzBmMjhlM2NjN2E3
ZjMzMDFiODQ5YTRmN2E5NjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaApAQCAtNDgsMTggKzQ4LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogc3RydWN0IFN0cmluZ1dpdGhEaXJlY3Rpb24gewogICAgIFN0cmluZyBzdHJpbmc7
CiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24geyBUZXh0RGlyZWN0aW9uOjpMVFIgfTsKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpIGNvbnN0ID0gZGVm
YXVsdDsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nV2l0aERpcmVj
dGlvbiYgYSwgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgYikKLXsKLSAgICByZXR1cm4gYS5z
dHJpbmcgPT0gYi5zdHJpbmcgJiYgYS5kaXJlY3Rpb24gPT0gYi5kaXJlY3Rpb247Ci19Ci0KLWlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgYSwgY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBp
bmxpbmUgU3RyaW5nV2l0aERpcmVjdGlvbiB0cnVuY2F0ZUZyb21FbmQoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYgc3RyaW5nLCB1bnNpZ25lZCBtYXhMZW5ndGgpCiB7CiAgICAgcmV0dXJuIHsg
c3RyaW5nLnN0cmluZy5sZWZ0KG1heExlbmd0aCksIHN0cmluZy5kaXJlY3Rpb24gfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZsYWdzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRGbGFncy5oCmluZGV4IDNhMzU5MjI0ZjBkYjcwYzlh
Nzc5Mzk5OGVmZjEwNDgxZmM1ZDUzNGYuLjZkYWZhMWNkOWNmNmExMWQ3Y2UzMDNhN2ViODhjNzNl
YzhkYzUxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEZs
YWdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RmxhZ3MuaApAQCAt
MjA4LDI2ICsyMDgsNyBAQCBzdHJ1Y3QgRm9udFZhcmlhbnRTZXR0aW5ncyB7CiAgICAgICAgICAg
ICAmJiBlYXN0QXNpYW5SdWJ5ID09IEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieTo6Tm9ybWFsOwog
ICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb250VmFyaWFudFNldHRpbmdzJiBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb21tb25MaWdhdHVyZXMgPT0gb3Ro
ZXIuY29tbW9uTGlnYXR1cmVzCi0gICAgICAgICAgICAmJiBkaXNjcmV0aW9uYXJ5TGlnYXR1cmVz
ID09IG90aGVyLmRpc2NyZXRpb25hcnlMaWdhdHVyZXMKLSAgICAgICAgICAgICYmIGhpc3Rvcmlj
YWxMaWdhdHVyZXMgPT0gb3RoZXIuaGlzdG9yaWNhbExpZ2F0dXJlcwotICAgICAgICAgICAgJiYg
Y29udGV4dHVhbEFsdGVybmF0ZXMgPT0gb3RoZXIuY29udGV4dHVhbEFsdGVybmF0ZXMKLSAgICAg
ICAgICAgICYmIHBvc2l0aW9uID09IG90aGVyLnBvc2l0aW9uCi0gICAgICAgICAgICAmJiBjYXBz
ID09IG90aGVyLmNhcHMKLSAgICAgICAgICAgICYmIG51bWVyaWNGaWd1cmUgPT0gb3RoZXIubnVt
ZXJpY0ZpZ3VyZQotICAgICAgICAgICAgJiYgbnVtZXJpY1NwYWNpbmcgPT0gb3RoZXIubnVtZXJp
Y1NwYWNpbmcKLSAgICAgICAgICAgICYmIG51bWVyaWNGcmFjdGlvbiA9PSBvdGhlci5udW1lcmlj
RnJhY3Rpb24KLSAgICAgICAgICAgICYmIG51bWVyaWNPcmRpbmFsID09IG90aGVyLm51bWVyaWNP
cmRpbmFsCi0gICAgICAgICAgICAmJiBudW1lcmljU2xhc2hlZFplcm8gPT0gb3RoZXIubnVtZXJp
Y1NsYXNoZWRaZXJvCi0gICAgICAgICAgICAmJiBhbHRlcm5hdGVzID09IG90aGVyLmFsdGVybmF0
ZXMKLSAgICAgICAgICAgICYmIGVhc3RBc2lhblZhcmlhbnQgPT0gb3RoZXIuZWFzdEFzaWFuVmFy
aWFudAotICAgICAgICAgICAgJiYgZWFzdEFzaWFuV2lkdGggPT0gb3RoZXIuZWFzdEFzaWFuV2lk
dGgKLSAgICAgICAgICAgICYmIGVhc3RBc2lhblJ1YnkgPT0gb3RoZXIuZWFzdEFzaWFuUnVieTsK
LSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRm9udFZhcmlhbnRTZXR0aW5ncyYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEZvbnRWYXJpYW50U2V0dGluZ3MmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAg
ICB1bnNpZ25lZCB1bmlxdWVWYWx1ZSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpbkRhdGEuaAppbmRleCBiN2YzOTllMTkyODhiODAzZDA5MjQ3NzQzZDQ1NjRkN2QyNWRjNGVm
Li43ZDAxMDcyOTQ0NjQ2YjVmOWUyZDg0ZWJlZGYwNTBkMTJjOWE0ZGMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtNTMsMTMgKzUzLDkgQEAgc3RydWN0IE1pbWVDbGFzc0lu
Zm8gewogICAgIFN0cmluZyB0eXBlOwogICAgIFN0cmluZyBkZXNjOwogICAgIFZlY3RvcjxTdHJp
bmc+IGV4dGVuc2lvbnM7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1pbWVDbGFzc0luZm8m
KSBjb25zdCA9IGRlZmF1bHQ7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1p
bWVDbGFzc0luZm8mIGEsIGNvbnN0IE1pbWVDbGFzc0luZm8mIGIpCi17Ci0gICAgcmV0dXJuIGEu
dHlwZSA9PSBiLnR5cGUgJiYgYS5kZXNjID09IGIuZGVzYyAmJiBhLmV4dGVuc2lvbnMgPT0gYi5l
eHRlbnNpb25zOwotfQotCiBzdHJ1Y3QgUGx1Z2luSW5mbyB7CiAgICAgU3RyaW5nIG5hbWU7CiAg
ICAgU3RyaW5nIGZpbGU7CkBAIC03MywxNiArNjksOSBAQCBzdHJ1Y3QgUGx1Z2luSW5mbyB7CiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIFN0cmluZyB2ZXJzaW9uU3RyaW5nOwogI2VuZGlmCi19Owog
Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KFBsdWdpbkluZm8mIGEsIFBsdWdpbkluZm8mIGIpCi17
Ci0gICAgYm9vbCByZXN1bHQgPSBhLm5hbWUgPT0gYi5uYW1lICYmIGEuZmlsZSA9PSBiLmZpbGUg
JiYgYS5kZXNjID09IGIuZGVzYyAmJiBhLm1pbWVzID09IGIubWltZXMgJiYgYS5pc0FwcGxpY2F0
aW9uUGx1Z2luID09IGIuaXNBcHBsaWNhdGlvblBsdWdpbiAmJiBhLmNsaWVudExvYWRQb2xpY3kg
PT0gYi5jbGllbnRMb2FkUG9saWN5ICYmIGEuYnVuZGxlSWRlbnRpZmllciA9PSBiLmJ1bmRsZUlk
ZW50aWZpZXI7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIHJlc3VsdCA9IHJlc3VsdCAmJiBhLnZl
cnNpb25TdHJpbmcgPT0gYi52ZXJzaW9uU3RyaW5nOwotI2VuZGlmCi0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGx1Z2luSW5mbyYpIGNvbnN0ID0gZGVm
YXVsdDsKK307CiAKIHN0cnVjdCBTdXBwb3J0ZWRQbHVnaW5JZGVudGlmaWVyIHsKICAgICBTdHJp
bmcgbWF0Y2hpbmdEb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Q1NTVmFsdWVLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NWYWx1ZUtleS5oCmlu
ZGV4IDc1MjYxNzcwOGYxNmY4OTIyZmQwMGFlOTc5MWI5Y2RhZjYwMzA5YWUuLjQ3NTk5YzdlYjgz
NzZmZTA5OWZjMmJhMTlhNmI1ZGZhM2ZlNWQzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9DU1NWYWx1ZUtleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9D
U1NWYWx1ZUtleS5oCkBAIC0zMCwyMiArMzAsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IENTU1ZhbHVlS2V5IHsKLQogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxDU1NWYWx1ZUtl
eT4gZGVjb2RlKERlY29kZXImKTsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NWYWx1
ZUtleSYpIGNvbnN0ID0gZGVmYXVsdDsKKwogICAgIHVuc2lnbmVkIGNzc1ZhbHVlSUQ7CiAgICAg
Ym9vbCB1c2VEYXJrQXBwZWFyYW5jZTsKICAgICBib29sIHVzZUVsZXZhdGVkVXNlckludGVyZmFj
ZUxldmVsOwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU1NWYWx1ZUtleSYg
YSwgY29uc3QgQ1NTVmFsdWVLZXkmIGIpCi17Ci0gICAgcmV0dXJuIGEuY3NzVmFsdWVJRCA9PSBi
LmNzc1ZhbHVlSUQgJiYgYS51c2VEYXJrQXBwZWFyYW5jZSA9PSBiLnVzZURhcmtBcHBlYXJhbmNl
ICYmIGEudXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwgPT0gYi51c2VFbGV2YXRlZFVzZXJJ
bnRlcmZhY2VMZXZlbDsKLX0KLQogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgQ1NTVmFs
dWVLZXk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBSZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ2xpcFJlY3QuaAppbmRleCA1MmFiYjY3MWRhNWE2MDYzYzk3MDhjZjUyNDcyNGQzMmVlNmVj
ZDMzLi42MzExMzFjZTYzNTFlMTQ0ZWNlNDY4Mzc1NGU1ZmIxYTU5YTNhNGJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ2xpcFJlY3QuaApAQCAtNTEsOCArNTEsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBhZmZlY3RlZEJ5UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9hZmZlY3RlZEJ5UmFkaXVzOyB9
CiAgICAgdm9pZCBzZXRBZmZlY3RlZEJ5UmFkaXVzKGJvb2wgYWZmZWN0ZWRCeVJhZGl1cykgeyBt
X2FmZmVjdGVkQnlSYWRpdXMgPSBhZmZlY3RlZEJ5UmFkaXVzOyB9CiAgICAgCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENsaXBSZWN0JiBvdGhlcikgY29uc3QgeyByZXR1cm4gcmVjdCgpID09
IG90aGVyLnJlY3QoKSAmJiBhZmZlY3RlZEJ5UmFkaXVzKCkgPT0gb3RoZXIuYWZmZWN0ZWRCeVJh
ZGl1cygpOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENsaXBSZWN0JiBvdGhlcikgY29u
c3QgeyByZXR1cm4gcmVjdCgpICE9IG90aGVyLnJlY3QoKSB8fCBhZmZlY3RlZEJ5UmFkaXVzKCkg
IT0gb3RoZXIuYWZmZWN0ZWRCeVJhZGl1cygpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENsaXBSZWN0JikgY29uc3QgPSBkZWZhdWx0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBM
YXlvdXRSZWN0JiBvdGhlclJlY3QpIGNvbnN0IHsgcmV0dXJuIHJlY3QoKSAhPSBvdGhlclJlY3Q7
IH0KICAgICAKICAgICB2b2lkIGludGVyc2VjdChjb25zdCBMYXlvdXRSZWN0JiBvdGhlcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50UmVnaW9uLmNwcAppbmRleCA3YjlkY2JjYzc1NjVi
OWE2YTMzYzRhYWI5ZGNkYWJhMmVjYjAxZWMzLi5jZGNjMjE5MTBhY2UxZDdlOTZjNzc4YTIwYTU5
MTc1NGZjZGQ5ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRS
ZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHAK
QEAgLTk4LDI3ICs5OCw2IEBAIGJvb2wgRXZlbnRSZWdpb25Db250ZXh0Ojpjb250YWlucyhjb25z
dCBJbnRSZWN0JiByZWN0KSBjb25zdAogCiBFdmVudFJlZ2lvbjo6RXZlbnRSZWdpb24oKSA9IGRl
ZmF1bHQ7CiAKLWJvb2wgRXZlbnRSZWdpb246Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRSZWdpb24m
IG90aGVyKSBjb25zdAotewotI2lmIEVOQUJMRShUT1VDSF9BQ1RJT05fUkVHSU9OUykKLSAgICBp
ZiAobV90b3VjaEFjdGlvblJlZ2lvbnMgIT0gb3RoZXIubV90b3VjaEFjdGlvblJlZ2lvbnMpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdIRUVMX0VWRU5UX1JF
R0lPTlMpCi0gICAgaWYgKG1fd2hlZWxFdmVudExpc3RlbmVyUmVnaW9uICE9IG90aGVyLm1fd2hl
ZWxFdmVudExpc3RlbmVyUmVnaW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1f
bm9uUGFzc2l2ZVdoZWVsRXZlbnRMaXN0ZW5lclJlZ2lvbiAhPSBvdGhlci5tX25vblBhc3NpdmVX
aGVlbEV2ZW50TGlzdGVuZXJSZWdpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKEVESVRBQkxFX1JFR0lPTikKLSAgICBpZiAobV9lZGl0YWJsZVJlZ2lvbiAh
PSBvdGhlci5tX2VkaXRhYmxlUmVnaW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYK
LSAgICByZXR1cm4gbV9yZWdpb24gPT0gb3RoZXIubV9yZWdpb247Ci19Ci0KIHZvaWQgRXZlbnRS
ZWdpb246OnVuaXRlKGNvbnN0IFJlZ2lvbiYgcmVnaW9uLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUsIGJvb2wgb3ZlcnJpZGVVc2VyTW9kaWZ5SXNFZGl0YWJsZSkKIHsKICAgICBtX3JlZ2lvbi51
bml0ZShyZWdpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V2ZW50
UmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uaAppbmRleCA5
OTZlNGI1ZGI2MjIzZWE5ODBiNGVhNzZjM2ZjZmNiZTViOWUzZWMwLi4yODJmM2FiZWM1ZTgyNTFi
M2Y4MzU0YWY1OWNmZjE0MTkzYTNlOWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRXZlbnRSZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRS
ZWdpb24uaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lvbi5pc0VtcHR5KCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudFJlZ2lvbiYpIGNvbnN0OworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBFdmVudFJlZ2lvbiYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHZvaWQg
dW5pdGUoY29uc3QgUmVnaW9uJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBib29sIG92ZXJyaWRlVXNl
ck1vZGlmeUlzRWRpdGFibGUgPSBmYWxzZSk7CiAgICAgdm9pZCB0cmFuc2xhdGUoY29uc3QgSW50
U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dhcFJlY3RzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2FwUmVjdHMuaAppbmRleCA3ZWM0OTNjZDE0ZWYx
MmUyODk0OWQ4YTI4ZGU0OTY5M2EzZmEyNTY2Li43NDhhMDM1NGRhYTk5ZjFlZWNiMTY0NWMzNzBh
YmZiNTQ5MTkwY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2FwUmVj
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR2FwUmVjdHMuaApAQCAtNDQsMTEg
KzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHYXBSZWN0cyYgb3Ro
ZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2xlZnQgPT0gb3RoZXIu
bGVmdCgpICYmIG1fY2VudGVyID09IG90aGVyLmNlbnRlcigpICYmIG1fcmlnaHQgPT0gb3RoZXIu
cmlnaHQoKTsKLSAgICAgICAgfQotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgR2FwUmVj
dHMmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgR2FwUmVjdHMmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBMYXlvdXRSZWN0IG1fbGVmdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
LmNwcAppbmRleCA1NjAyZDdjMmQ0ZDViY2E5MzI0NTQ0Yjc1YWQyMmNiMjY1OGVkMDJjLi4wZGY3
NDI2NTFmZjdiZGM4YmI2NDMzNDZmOWJjY2JjMjA0YzE5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0dyaWQuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBHcmlkSXRlcmF0b3I6OmlzRW1wdHlB
cmVhRW5vdWdoKHVuc2lnbmVkIHJvd1NwYW4sIHVuc2lnbmVkIGNvbHVtblNwYW4pIGNvbnMKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0
b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2
YXJ5aW5nVHJhY2tTcGFuKQorc3RkOjpvcHRpb25hbDxHcmlkQXJlYT4gR3JpZEl0ZXJhdG9yOjpu
ZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhlZFRyYWNrU3BhbiwgdW5zaWduZWQgdmFyeWlu
Z1RyYWNrU3BhbikKIHsKICAgICBBU1NFUlQoIW1fZ3JpZC5pc0VtcHR5KCkpOwogICAgIEFTU0VS
VCghbV9ncmlkWzBdLmlzRW1wdHkoKSk7CkBAIC0yMjIsNyArMjIyLDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEdyaWRBcmVhPiBHcmlkSXRlcmF0b3I6Om5leHRFbXB0eUdyaWRBcmVhKHVuc2lnbmVkIGZp
eGVkVHJhY2tTcGEKICAgICBBU1NFUlQodmFyeWluZ1RyYWNrU3BhbiA+PSAxKTsKIAogICAgIGlm
IChtX2dyaWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHVuc2lnbmVkIHJvd1NwYW4gPSAobV9kaXJlY3Rpb24g
PT0gRm9yQ29sdW1ucykgPyB2YXJ5aW5nVHJhY2tTcGFuIDogZml4ZWRUcmFja1NwYW47CiAgICAg
dW5zaWduZWQgY29sdW1uU3BhbiA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IGZpeGVk
VHJhY2tTcGFuIDogdmFyeWluZ1RyYWNrU3BhbjsKQEAgLTIzMSwxMyArMjMxLDEzIEBAIHN0ZDo6
dW5pcXVlX3B0cjxHcmlkQXJlYT4gR3JpZEl0ZXJhdG9yOjpuZXh0RW1wdHlHcmlkQXJlYSh1bnNp
Z25lZCBmaXhlZFRyYWNrU3BhCiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZWYXJ5aW5nVHJhY2tJ
bmRleCA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fZ3JpZC5zaXplKCkgOiBtX2dy
aWRbMF0uc2l6ZSgpOwogICAgIGZvciAoOyB2YXJ5aW5nVHJhY2tJbmRleCA8IGVuZE9mVmFyeWlu
Z1RyYWNrSW5kZXg7ICsrdmFyeWluZ1RyYWNrSW5kZXgpIHsKICAgICAgICAgaWYgKGlzRW1wdHlB
cmVhRW5vdWdoKHJvd1NwYW4sIGNvbHVtblNwYW4pKSB7Ci0gICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8R3JpZEFyZWE+IHJlc3VsdCA9IG1ha2VVbmlxdWU8R3JpZEFyZWE+KEdyaWRTcGFuOjp0
cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX3Jvd0luZGV4LCBtX3Jvd0luZGV4ICsgcm93U3Bh
biksIEdyaWRTcGFuOjp0cmFuc2xhdGVkRGVmaW5pdGVHcmlkU3BhbihtX2NvbHVtbkluZGV4LCBt
X2NvbHVtbkluZGV4ICsgY29sdW1uU3BhbikpOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBH
cmlkQXJlYShHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4obV9yb3dJbmRleCwg
bV9yb3dJbmRleCArIHJvd1NwYW4pLCBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmluaXRlR3JpZFNw
YW4obV9jb2x1bW5JbmRleCwgbV9jb2x1bW5JbmRleCArIGNvbHVtblNwYW4pKTsKICAgICAgICAg
ICAgIC8vIEFkdmFuY2UgdGhlIGl0ZXJhdG9yIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3Agd2hl
cmUgd2Ugd291bGQgcmV0dXJuIHRoZSBzYW1lIGdyaWQgYXJlYSBvdmVyIGFuZCBvdmVyLgogICAg
ICAgICAgICAgKyt2YXJ5aW5nVHJhY2tJbmRleDsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Hcmlk
LmgKaW5kZXggNzJjYWRmNjhlZjRkMzI2NmNlMWY4Y2VlYmRjOWE0OWRmMmJjODExYi4uNTk0N2Zl
NWU1Mzg2NTNkMGFhYzg0OTRmZWE4ZGE5NjdjMzA4NWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3Jp
ZC5oCkBAIC0zNywxMCArMzcsMTEgQEAgdHlwZWRlZiBWZWN0b3I8V2Vha1B0cjxSZW5kZXJCb3g+
LCAxPiBHcmlkQ2VsbDsKIHR5cGVkZWYgVmVjdG9yPFZlY3RvcjxHcmlkQ2VsbD4+IEdyaWRBc01h
dHJpeDsKIHR5cGVkZWYgTGlzdEhhc2hTZXQ8c2l6ZV90PiBPcmRlcmVkVHJhY2tJbmRleFNldDsK
IAotY2xhc3MgR3JpZEFyZWE7CiBjbGFzcyBHcmlkUG9zaXRpb25zUmVzb2x2ZXI7CiBjbGFzcyBS
ZW5kZXJHcmlkOwogCitzdHJ1Y3QgR3JpZEFyZWE7CisKIGNsYXNzIEdyaWQgZmluYWwgewogcHVi
bGljOgogICAgIGV4cGxpY2l0IEdyaWQoUmVuZGVyR3JpZCYpOwpAQCAtMTExLDcgKzExMiw3IEBA
IHB1YmxpYzoKIAogICAgIFJlbmRlckJveCogbmV4dEdyaWRJdGVtKCk7CiAgICAgYm9vbCBpc0Vt
cHR5QXJlYUVub3VnaCh1bnNpZ25lZCByb3dTcGFuLCB1bnNpZ25lZCBjb2x1bW5TcGFuKSBjb25z
dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IG5leHRFbXB0eUdyaWRBcmVhKHVuc2ln
bmVkIGZpeGVkVHJhY2tTcGFuLCB1bnNpZ25lZCB2YXJ5aW5nVHJhY2tTcGFuKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEdyaWRBcmVhPiBuZXh0RW1wdHlHcmlkQXJlYSh1bnNpZ25lZCBmaXhlZFRyYWNr
U3BhbiwgdW5zaWduZWQgdmFyeWluZ1RyYWNrU3Bhbik7CiAKIHByaXZhdGU6CiAgICAgY29uc3Qg
R3JpZEFzTWF0cml4JiBtX2dyaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGlnaGxpZ2h0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpZ2hsaWdodERh
dGEuaAppbmRleCBhZjExNWRkMzAwMDg4YWMwOTc5ZDAzNjEzMTk4ZTUxOGE1Y2Q1MDRhLi4wYTQ1
M2I3OGEwMzRlYmU1ZjRhN2MxY2NiMDk2ODJlN2I4NDhhMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGlnaGxpZ2h0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaWdobGlnaHREYXRhLmgKQEAgLTU1LDEwICs1NSw3IEBAIHB1YmxpYzoKICAgICB1
bnNpZ25lZCBzdGFydE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRPZmZzZXQ7IH0KICAg
ICB1bnNpZ25lZCBlbmRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2VuZE9mZnNldDsgfQogCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlbmRlclJhbmdlJiBvdGhlcikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3N0YXJ0ID09IG90aGVyLm1fc3RhcnQgJiYgbV9lbmQgPT0gb3Ro
ZXIubV9lbmQgJiYgbV9zdGFydE9mZnNldCA9PSBvdGhlci5tX3N0YXJ0T2Zmc2V0ICYmIG1fZW5k
T2Zmc2V0ID09IG90aGVyLm1fZW5kT2Zmc2V0OwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgUmVuZGVyUmFuZ2UmKSBjb25zdCA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgV2Vh
a1B0cjxSZW5kZXJPYmplY3Q+IG1fc3RhcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5oCmluZGV4IDI1YmNhMjdhMTY4NjY3
YmUyNDEwY2RlZTlhYmFhOWY4OTJjNDJlZDcuLjhjMTlkZmVlZWUyNTc3Zjc2MjkwZDI5N2Y4OWM0
ODIzN2NmNjdmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXllckFu
Y2VzdG9yQ2xpcHBpbmdTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXll
ckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5oCkBAIC00NywxNyArNDcsNyBAQCBzdHJ1Y3QgQ29tcG9z
aXRlZENsaXBEYXRhIHsKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IENvbXBvc2l0ZWRDbGlwRGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
Y2xpcHBpbmdMYXllciA9PSBvdGhlci5jbGlwcGluZ0xheWVyCi0gICAgICAgICAgICAmJiBjbGlw
UmVjdCA9PSBvdGhlci5jbGlwUmVjdAotICAgICAgICAgICAgJiYgaXNPdmVyZmxvd1Njcm9sbCA9
PSBvdGhlci5pc092ZXJmbG93U2Nyb2xsOwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgQ29tcG9zaXRlZENsaXBEYXRhJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IENvbXBvc2l0ZWRDbGlwRGF0YSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIFdlYWtQdHI8
UmVuZGVyTGF5ZXI+IGNsaXBwaW5nTGF5ZXI7IC8vIEZvciBzY3JvbGxlciBlbnRyaWVzLCB0aGUg
c2Nyb2xsaW5nIGxheWVyLiBGb3Igb3RoZXIgZW50cmllcywgdGhlIG1vc3QtZGVzY2VuZGFudCBs
YXllciB0aGF0IGhhcyBhIGNsaXAuCiAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdDsgLy8gSW4gdGhl
IGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoZSBSZW5kZXJMYXllciB0aGF0IG93bnMgdGhlIHN0YWNr
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xlZ2FjeUlubGluZUl0ZXJh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3IuaApp
bmRleCA3YzRiNjdiOTExYzE2ODdjODA2Y2RmOTQ3NmRhYmM0YzcxODk0NjMwLi5hZjI3YWZkYjlh
NzcxMjQxZTg0ZDlkNmIwM2E0OWNiZmQ1OGYyZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGVnYWN5SW5saW5lSXRlcmF0b3IuaApAQCAtMTM1LDExICsxMzUsNiBAQCBpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExlZ2FjeUlubGluZUl0ZXJhdG9yJiBpdDEsIGNvbnN0
IExlZ2FjeUlubGluZUl0ZXJhdAogICAgIHJldHVybiBpdDEub2Zmc2V0KCkgPT0gaXQyLm9mZnNl
dCgpICYmIGl0MS5yZW5kZXJlcigpID09IGl0Mi5yZW5kZXJlcigpOwogfQogCi1pbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IExlZ2FjeUlubGluZUl0ZXJhdG9yJiBpdDEsIGNvbnN0IExlZ2Fj
eUlubGluZUl0ZXJhdG9yJiBpdDIpCi17Ci0gICAgcmV0dXJuIGl0MS5vZmZzZXQoKSAhPSBpdDIu
b2Zmc2V0KCkgfHwgaXQxLnJlbmRlcmVyKCkgIT0gaXQyLnJlbmRlcmVyKCk7Ci19Ci0KIHN0YXRp
YyBpbmxpbmUgVUNoYXJEaXJlY3Rpb24gZW1iZWRDaGFyRnJvbURpcmVjdGlvbihUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbiwgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKQogewogICAgIGlmICh1bmlj
b2RlQmlkaSA9PSBFbWJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9N
YXJrZWRUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWFya2VkVGV4dC5oCmluZGV4
IDMwNDIwZTI0OGQyMDFlMDQxOGFjYjgzODE4YTBkZWQ4ZmY5YmE2MWEuLjA2YWJiYWEzM2I5MDkw
M2RlMmYxYzQwMDYzNjU3N2U5OTQ4YjM2MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9NYXJrZWRUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL01hcmtl
ZFRleHQuaApAQCAtNzQsMTEgKzc0LDcgQEAgc3RydWN0IE1hcmtlZFRleHQgewogICAgIFN0cmlu
ZyBoaWdobGlnaHROYW1lIHsgfTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IGVuZE9mZnNldCA8PSBzdGFydE9mZnNldDsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBN
YXJrZWRUZXh0JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWFya2VkVGV4dCYgb3RoZXIpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gc3RhcnRPZmZzZXQgPT0gb3RoZXIuc3RhcnRPZmZzZXQgJiYgZW5kT2Zm
c2V0ID09IG90aGVyLmVuZE9mZnNldCAmJiB0eXBlID09IG90aGVyLnR5cGUgJiYgbWFya2VyID09
IG90aGVyLm1hcmtlciAmJiBoaWdobGlnaHROYW1lID09IG90aGVyLmhpZ2hsaWdodE5hbWU7Ci0g
ICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXJrZWRUZXh0JikgY29uc3QgPSBkZWZh
dWx0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxNYXJrZWRUZXh0PiBzdWJk
aXZpZGUoY29uc3QgVmVjdG9yPE1hcmtlZFRleHQ+JiwgT3ZlcmxhcFN0cmF0ZWd5ID0gT3Zlcmxh
cFN0cmF0ZWd5OjpOb25lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1BhZ2luYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWdpbmF0aW9uLmgKaW5k
ZXggMjQ1OWY5Mzc4NTZiNjlhNDkzYzY1YjQwYmMxODhjOGFhNjk5N2VjYS4uNzViOTg5OGEyNTA5
OGFhYWYzMmI2MjAyMTViNTUwMzE3MmYzZjUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1BhZ2luYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFn
aW5hdGlvbi5oCkBAIC0zMiwxNSArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3Qg
UGFnaW5hdGlvbiB7CiAgICAgZW51bSBNb2RlIDogdWludDhfdCB7IFVucGFnaW5hdGVkLCBMZWZ0
VG9SaWdodFBhZ2luYXRlZCwgUmlnaHRUb0xlZnRQYWdpbmF0ZWQsIFRvcFRvQm90dG9tUGFnaW5h
dGVkLCBCb3R0b21Ub1RvcFBhZ2luYXRlZCB9OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFBhZ2luYXRpb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1vZGUgPT0g
b3RoZXIubW9kZSAmJiBiZWhhdmVzTGlrZUNvbHVtbnMgPT0gb3RoZXIuYmVoYXZlc0xpa2VDb2x1
bW5zICYmIHBhZ2VMZW5ndGggPT0gb3RoZXIucGFnZUxlbmd0aCAmJiBnYXAgPT0gb3RoZXIuZ2Fw
OwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQYWdpbmF0aW9uJiBvdGhlcikg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhZ2luYXRpb24mKSBjb25zdCA9IGRlZmF1bHQ7CiAK
ICAgICBNb2RlIG1vZGUgeyBVbnBhZ2luYXRlZCB9OwogICAgIGJvb2wgYmVoYXZlc0xpa2VDb2x1
bW5zIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYXRo
T3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGF0aE9wZXJhdGlvbi5oCmlu
ZGV4IDRiMGZhNzFmNjBiY2ZlZGI5ZWNiZDAxMWU5ZGRkYTcxZGVkY2UxOTIuLmU3NjBhNTdhOTY3
ODY1NGI3Zjg2ZWEwODRiYmQ1NzI4ODFlZjYxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9QYXRoT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1BhdGhPcGVyYXRpb24uaApAQCAtNTAsNyArNTAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
UGF0aE9wZXJhdGlvbigpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFBhdGhPcGVyYXRpb24mKSBjb25zdCA9IDA7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFBhdGhPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAog
ICAgIE9wZXJhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGJv
b2wgaXNTYW1lVHlwZShjb25zdCBQYXRoT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiBvLnR5
cGUoKSA9PSBtX3R5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcAppbmRleCBjZWNlZDM1ZTVjZTg3YmZiYzE0MDE4MzZjZDEzZWExYWVkZDdhZmMwLi4wMGVi
ZDVmZmMwNWI3MjIyYTRmN2E0M2IwYzQyMWIyYzM5NjU2ZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwCkBAIC00MzAsMjAgKzQzMCwxOSBAQCBTdHJpbmcg
UmVuZGVyQ291bnRlcjo6b3JpZ2luYWxUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGJlZm9yZUFmdGVyQ29udGFpbmVyID0gYmVmb3JlQWZ0ZXJDb250YWlu
ZXItPnBhcmVudCgpOwogICAgICAgICB9Ci0gICAgICAgIG1ha2VDb3VudGVyTm9kZSgqYmVmb3Jl
QWZ0ZXJDb250YWluZXIsIG1fY291bnRlci5pZGVudGlmaWVyKCksIHRydWUpLT5hZGRSZW5kZXJl
cihjb25zdF9jYXN0PFJlbmRlckNvdW50ZXImPigqdGhpcykpOworICAgICAgICBtYWtlQ291bnRl
ck5vZGUoKmJlZm9yZUFmdGVyQ29udGFpbmVyLCBtX2NvdW50ZXIuaWRlbnRpZmllciwgdHJ1ZSkt
PmFkZFJlbmRlcmVyKGNvbnN0X2Nhc3Q8UmVuZGVyQ291bnRlciY+KCp0aGlzKSk7CiAgICAgICAg
IEFTU0VSVChtX2NvdW50ZXJOb2RlKTsKICAgICB9CiAgICAgQ291bnRlck5vZGUqIGNoaWxkID0g
bV9jb3VudGVyTm9kZTsKICAgICBpbnQgdmFsdWUgPSBjaGlsZC0+YWN0c0FzUmVzZXQoKSA/IGNo
aWxkLT52YWx1ZSgpIDogY2hpbGQtPmNvdW50SW5QYXJlbnQoKTsKIAotICAgIFN0cmluZyB0ZXh0
ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCB2YWx1ZSk7CisgICAgU3Ry
aW5nIHRleHQgPSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIubGlzdFN0eWxlLCB2YWx1ZSk7CiAK
LSAgICBpZiAoIW1fY291bnRlci5zZXBhcmF0b3IoKS5pc051bGwoKSkgeworICAgIGlmICghbV9j
b3VudGVyLnNlcGFyYXRvci5pc051bGwoKSkgewogICAgICAgICBpZiAoIWNoaWxkLT5hY3RzQXNS
ZXNldCgpKQogICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC0+cGFyZW50KCk7CiAgICAgICAgIHdo
aWxlIChDb3VudGVyTm9kZSogcGFyZW50ID0gY2hpbGQtPnBhcmVudCgpKSB7Ci0gICAgICAgICAg
ICB0ZXh0ID0gbGlzdE1hcmtlclRleHQobV9jb3VudGVyLmxpc3RTdHlsZSgpLCBjaGlsZC0+Y291
bnRJblBhcmVudCgpKQotICAgICAgICAgICAgICAgICsgbV9jb3VudGVyLnNlcGFyYXRvcigpICsg
dGV4dDsKKyAgICAgICAgICAgIHRleHQgPSBsaXN0TWFya2VyVGV4dChtX2NvdW50ZXIubGlzdFN0
eWxlLCBjaGlsZC0+Y291bnRJblBhcmVudCgpKSArIG1fY291bnRlci5zZXBhcmF0b3IgKyB0ZXh0
OwogICAgICAgICAgICAgY2hpbGQgPSBwYXJlbnQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggMjZmOGZjYmMwYWIyNzk2MGM0OTM5
MjIzZTc0OGQ5M2MzYjgzYzk5YS4uMWI2NzQ1YTllNzkwYjgwNWIxMzUwMDA0MmU0MWUwOTNlZDgx
NjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtNzY1LDEz
ICs3NjUsMTMgQEAgdm9pZCBSZW5kZXJHcmlkOjpwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVy
SXRlcmF0b3IoR3JpZCYgZ3JpZCkgY29uc3QKICAgICBncmlkLmVuc3VyZUdyaWRTaXplKG1heGlt
dW1Sb3dJbmRleCArIGV4cGxpY2l0Um93U3RhcnQsIG1heGltdW1Db2x1bW5JbmRleCArIGV4cGxp
Y2l0Q29sdW1uU3RhcnQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8R3JpZEFyZWE+IFJlbmRlckdy
aWQ6OmNyZWF0ZUVtcHR5R3JpZEFyZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKEdy
aWQmIGdyaWQsIGNvbnN0IFJlbmRlckJveCYgZ3JpZEl0ZW0sIEdyaWRUcmFja1NpemluZ0RpcmVj
dGlvbiBzcGVjaWZpZWREaXJlY3Rpb24sIGNvbnN0IEdyaWRTcGFuJiBzcGVjaWZpZWRQb3NpdGlv
bnMpIGNvbnN0CitHcmlkQXJlYSBSZW5kZXJHcmlkOjpjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVj
aWZpZWRQb3NpdGlvbnNPdXRzaWRlR3JpZChHcmlkJiBncmlkLCBjb25zdCBSZW5kZXJCb3gmIGdy
aWRJdGVtLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gc3BlY2lmaWVkRGlyZWN0aW9uLCBjb25z
dCBHcmlkU3BhbiYgc3BlY2lmaWVkUG9zaXRpb25zKSBjb25zdAogewogICAgIEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBjcm9zc0RpcmVjdGlvbiA9IHNwZWNpZmllZERpcmVjdGlvbiA9PSBGb3JD
b2x1bW5zID8gRm9yUm93cyA6IEZvckNvbHVtbnM7CiAgICAgY29uc3QgdW5zaWduZWQgZW5kT2ZD
cm9zc0RpcmVjdGlvbiA9IGdyaWQubnVtVHJhY2tzKGNyb3NzRGlyZWN0aW9uKTsKICAgICB1bnNp
Z25lZCBjcm9zc0RpcmVjdGlvblNwYW5TaXplID0gR3JpZFBvc2l0aW9uc1Jlc29sdmVyOjpzcGFu
U2l6ZUZvckF1dG9QbGFjZWRJdGVtKGdyaWRJdGVtLCBjcm9zc0RpcmVjdGlvbik7CiAgICAgR3Jp
ZFNwYW4gY3Jvc3NEaXJlY3Rpb25Qb3NpdGlvbnMgPSBHcmlkU3Bhbjo6dHJhbnNsYXRlZERlZmlu
aXRlR3JpZFNwYW4oZW5kT2ZDcm9zc0RpcmVjdGlvbiwgZW5kT2ZDcm9zc0RpcmVjdGlvbiArIGNy
b3NzRGlyZWN0aW9uU3BhblNpemUpOwotICAgIHJldHVybiBtYWtlVW5pcXVlPEdyaWRBcmVhPihz
cGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25z
IDogc3BlY2lmaWVkUG9zaXRpb25zLCBzcGVjaWZpZWREaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/
IHNwZWNpZmllZFBvc2l0aW9ucyA6IGNyb3NzRGlyZWN0aW9uUG9zaXRpb25zKTsKKyAgICByZXR1
cm4gR3JpZEFyZWEoc3BlY2lmaWVkRGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBjcm9zc0RpcmVj
dGlvblBvc2l0aW9ucyA6IHNwZWNpZmllZFBvc2l0aW9ucywgc3BlY2lmaWVkRGlyZWN0aW9uID09
IEZvckNvbHVtbnMgPyBzcGVjaWZpZWRQb3NpdGlvbnMgOiBjcm9zc0RpcmVjdGlvblBvc2l0aW9u
cyk7CiB9CiAKIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJdGVtc09u
R3JpZChHcmlkJiBncmlkLCBjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mIGF1dG9HcmlkSXRlbXMp
IGNvbnN0CkBAIC03OTIsNyArNzkyLDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpwbGFjZVNwZWNpZmll
ZE1ham9yQXhpc0l0ZW1zT25HcmlkKEdyaWQmIGdyaWQsIGNvbnN0IFZlY3RvcjxSZW4KICAgICAg
ICAgdW5zaWduZWQgbWFqb3JBeGlzSW5pdGlhbFBvc2l0aW9uID0gbWFqb3JBeGlzUG9zaXRpb25z
LnN0YXJ0TGluZSgpOwogCiAgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihncmlkLCBhdXRv
UGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCksIG1ham9yQXhpc1Bvc2l0aW9ucy5zdGFydExp
bmUoKSwgaXNHcmlkQXV0b0Zsb3dEZW5zZSA/IDAgOiBtaW5vckF4aXNDdXJzb3JzLmdldChtYWpv
ckF4aXNJbml0aWFsUG9zaXRpb24pKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEdyaWRBcmVh
PiBlbXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9z
aXRpb25zLmludGVnZXJTcGFuKCksIG1pbm9yQXhpc1NwYW5TaXplKTsKKyAgICAgICAgYXV0byBl
bXB0eUdyaWRBcmVhID0gaXRlcmF0b3IubmV4dEVtcHR5R3JpZEFyZWEobWFqb3JBeGlzUG9zaXRp
b25zLmludGVnZXJTcGFuKCksIG1pbm9yQXhpc1NwYW5TaXplKTsKICAgICAgICAgaWYgKCFlbXB0
eUdyaWRBcmVhKQogICAgICAgICAgICAgZW1wdHlHcmlkQXJlYSA9IGNyZWF0ZUVtcHR5R3JpZEFy
ZWFBdFNwZWNpZmllZFBvc2l0aW9uc091dHNpZGVHcmlkKGdyaWQsICphdXRvR3JpZEl0ZW0sIGF1
dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJlY3Rpb24oKSwgbWFqb3JBeGlzUG9zaXRpb25zKTsKIApA
QCAtODI3LDcgKzgyNyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VBdXRvTWFqb3JBeGlzSXRl
bU9uR3JpZChHcmlkJiBncmlkLCBSZW5kZXJCb3gmIGdyaWRJdGVtLCBBCiAgICAgdW5zaWduZWQg
bWFqb3JBeGlzQXV0b1BsYWNlbWVudEN1cnNvciA9IGF1dG9QbGFjZW1lbnRNYWpvckF4aXNEaXJl
Y3Rpb24oKSA9PSBGb3JDb2x1bW5zID8gYXV0b1BsYWNlbWVudEN1cnNvci5zZWNvbmQgOiBhdXRv
UGxhY2VtZW50Q3Vyc29yLmZpcnN0OwogICAgIHVuc2lnbmVkIG1pbm9yQXhpc0F1dG9QbGFjZW1l
bnRDdXJzb3IgPSBhdXRvUGxhY2VtZW50TWFqb3JBeGlzRGlyZWN0aW9uKCkgPT0gRm9yQ29sdW1u
cyA/IGF1dG9QbGFjZW1lbnRDdXJzb3IuZmlyc3QgOiBhdXRvUGxhY2VtZW50Q3Vyc29yLnNlY29u
ZDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gZW1wdHlHcmlkQXJlYTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEdyaWRBcmVhPiBlbXB0eUdyaWRBcmVhOwogICAgIEdyaWRTcGFuIG1pbm9y
QXhpc1Bvc2l0aW9ucyA9IGdyaWQuZ3JpZEl0ZW1TcGFuKGdyaWRJdGVtLCBhdXRvUGxhY2VtZW50
TWlub3JBeGlzRGlyZWN0aW9uKCkpOwogICAgIGlmIChtaW5vckF4aXNQb3NpdGlvbnMuaXNUcmFu
c2xhdGVkRGVmaW5pdGUoKSkgewogICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHRyYWNrIGlu
IG1ham9yIGF4aXMgaWYgaW5pdGlhbCBwb3NpdGlvbiBpbiBtaW5vciBheGlzIGlzIGJlZm9yZSBh
dXRvLXBsYWNlbWVudCBjdXJzb3IuCkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBSZW5kZXJHcmlk
OjpwbGFjZUF1dG9NYWpvckF4aXNJdGVtT25HcmlkKEdyaWQmIGdyaWQsIFJlbmRlckJveCYgZ3Jp
ZEl0ZW0sIEEKIAogICAgICAgICAgICAgICAgIC8vIERpc2NhcmQgZW1wdHkgZ3JpZCBhcmVhIGFz
IGl0IGRvZXMgbm90IGZpdCBpbiB0aGUgbWlub3IgYXhpcyBkaXJlY3Rpb24uCiAgICAgICAgICAg
ICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSBuZXcgZW1wdHkgZ3JpZCBhcmVhIHll
dCBhcyB3ZSBtaWdodCBmaW5kIGEgdmFsaWQgb25lIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4KLSAg
ICAgICAgICAgICAgICBlbXB0eUdyaWRBcmVhID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICBl
bXB0eUdyaWRBcmVhID0gc3RkOjpudWxsb3B0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAvLyBBcyB3ZSdyZSBtb3ZpbmcgdG8gdGhlIG5leHQgdHJhY2sgaW4gdGhlIG1ham9yIGF4aXMg
d2Ugc2hvdWxkIHJlc2V0IHRoZSBhdXRvLXBsYWNlbWVudCBjdXJzb3IgaW4gdGhlIG1pbm9yIGF4
aXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCAyOWFlNTk0ODAwM2Vl
NmQyZGQ0NDNiNTY5OWRjYjJkN2MxN2I5NjI2Li42NWM5ZTZlMjUyNjg0OTcwMzM4NGRkZGNiYTE3
ODNjNGJiNzdiMTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTMy
LDkgKzMyLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgR3JpZEFyZWE7CiBj
bGFzcyBHcmlkU3BhbjsKIAorc3RydWN0IEdyaWRBcmVhOworCiBzdHJ1Y3QgQ29udGVudEFsaWdu
bWVudERhdGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnRBbGlnbm1lbnREYXRh
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMTEsNyArMTEyLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcGxhY2VJdGVtc09uR3JpZChHcmlkVHJhY2tTaXppbmdBbGdv
cml0aG0mLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkg
Y29uc3Q7CiAgICAgdm9pZCBwb3B1bGF0ZUV4cGxpY2l0R3JpZEFuZE9yZGVySXRlcmF0b3IoR3Jp
ZCYpIGNvbnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmlkQXJlYT4gY3JlYXRlRW1wdHlHcmlk
QXJlYUF0U3BlY2lmaWVkUG9zaXRpb25zT3V0c2lkZUdyaWQoR3JpZCYsIGNvbnN0IFJlbmRlckJv
eCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgR3JpZFNwYW4mKSBjb25zdDsKKyAg
ICBHcmlkQXJlYSBjcmVhdGVFbXB0eUdyaWRBcmVhQXRTcGVjaWZpZWRQb3NpdGlvbnNPdXRzaWRl
R3JpZChHcmlkJiwgY29uc3QgUmVuZGVyQm94JiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBj
b25zdCBHcmlkU3BhbiYpIGNvbnN0OwogICAgIHZvaWQgcGxhY2VTcGVjaWZpZWRNYWpvckF4aXNJ
dGVtc09uR3JpZChHcmlkJiwgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JikgY29uc3Q7CiAgICAg
dm9pZCBwbGFjZUF1dG9NYWpvckF4aXNJdGVtc09uR3JpZChHcmlkJiwgY29uc3QgVmVjdG9yPFJl
bmRlckJveCo+JikgY29uc3Q7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiBBdXRvUGxhY2VtZW50Q3Vyc29yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SXRlcmF0b3IuaAppbmRleCA1YjlmMjU3ZGE2MWMxMGUwYjY3MjNmZjg4MjQwYWJkYzk5NTk0MjQ0
Li40YWM5OGZmYTZmYjE5NDFjYjM4Zjc4MTVhMmY0MmE5MzVkYTFjZjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySXRlcmF0b3IuaApAQCAtNDIsOCArNDIsNyBAQCBwdWJsaWM6
CiAKICAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50OyB9CiAKLSAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVuZGVySXRlcmF0b3ImIG90aGVyKSBjb25zdDsKLSAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVuZGVySXRlcmF0b3ImIG90aGVyKSBjb25zdDsKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVuZGVySXRlcmF0b3ImKSBjb25zdDsKIAogICAgIFJl
bmRlckl0ZXJhdG9yJiB0cmF2ZXJzZU5leHQoKTsKICAgICBSZW5kZXJJdGVyYXRvciYgdHJhdmVy
c2VOZXh0U2libGluZygpOwpAQCAtNjcsOCArNjYsNyBAQCBwdWJsaWM6CiAKICAgICBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50OyB9CiAKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVuZGVyQ29uc3RJdGVyYXRvciYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBSZW5kZXJDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFJlbmRlckNvbnN0SXRlcmF0b3ImKSBjb25zdDsKIAogICAgIFJl
bmRlckNvbnN0SXRlcmF0b3ImIHRyYXZlcnNlTmV4dCgpOwogICAgIFJlbmRlckNvbnN0SXRlcmF0
b3ImIHRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKQEAgLTI5MCwxMiArMjg4LDYgQEAgaW5saW5lIGJv
b2wgUmVuZGVySXRlcmF0b3I8VD46Om9wZXJhdG9yPT0oY29uc3QgUmVuZGVySXRlcmF0b3ImIG90
aGVyKSBjb25zdAogICAgIHJldHVybiBtX2N1cnJlbnQgPT0gb3RoZXIubV9jdXJyZW50OwogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBib29sIFJlbmRlckl0ZXJhdG9yPFQ+Ojpv
cGVyYXRvciE9KGNvbnN0IFJlbmRlckl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0KIC8vIFJlbmRlckNvbnN0SXRlcmF0b3IKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0zNzUsMTIgKzM2Nyw2IEBAIGlubGluZSBib29sIFJlbmRl
ckNvbnN0SXRlcmF0b3I8VD46Om9wZXJhdG9yPT0oY29uc3QgUmVuZGVyQ29uc3RJdGVyYXRvciYg
b3RoZXIpCiAgICAgcmV0dXJuIG1fY3VycmVudCA9PSBvdGhlci5tX2N1cnJlbnQ7CiB9CiAKLXRl
bXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIGJvb2wgUmVuZGVyQ29uc3RJdGVyYXRvcjxUPjo6
b3BlcmF0b3IhPShjb25zdCBSZW5kZXJDb25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLXsKLSAg
ICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2luY2x1ZGUgIlJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggZjZlNWRhYzg0
NTBlZGExMDA4NDNjZDgzOThmMzk3ZjkyMDBiNzdlYi4uMzkzNTM1ZDdlODJjYTVjZmEwNmM5NzRl
MjNlNzczZGU1YjMxY2M0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBXZWJDb3JlSGFzM0RSZW5kZXJpbmcgPSB0cnVlOwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgIVVTRShDT01QT1NJVElOR19GT1JfU01BTExfQ0FOVkFTRVMpCi1zdGF0aWMgY29uc3Qg
aW50IGNhbnZhc0FyZWFUaHJlc2hvbGRSZXF1aXJpbmdDb21wb3NpdGluZyA9IDUwICogMTAwOwor
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjYW52YXNBcmVhVGhyZXNob2xkUmVxdWlyaW5nQ29t
cG9zaXRpbmcgPSA1MCAqIDEwMDsKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKaW5kZXggZTlm
MTFmZDRhMTgxM2E5NDJjOGJiZjA0ZjBiYzNhYjM3ZTBjODBlZS4uZjYyZGE1Yjk0NGRiYmVlYTY4
MjNjM2Y4MDA1Nzc5MmQ1MmUwZmQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCkBAIC00NjcsOCArNDY3LDggQEAgTGF5b3V0UmVjdCBSZW5kZXJSZXBs
YWNlZDo6cmVwbGFjZWRDb250ZW50UmVjdChjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXpl
KQogCiAgICAgTGVuZ3RoUG9pbnQgb2JqZWN0UG9zaXRpb24gPSBzdHlsZSgpLm9iamVjdFBvc2l0
aW9uKCk7CiAKLSAgICBMYXlvdXRVbml0IHhPZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
b2JqZWN0UG9zaXRpb24ueCgpLCBjb250ZW50UmVjdC53aWR0aCgpIC0gZmluYWxSZWN0LndpZHRo
KCkpOwotICAgIExheW91dFVuaXQgeU9mZnNldCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChvYmpl
Y3RQb3NpdGlvbi55KCksIGNvbnRlbnRSZWN0LmhlaWdodCgpIC0gZmluYWxSZWN0LmhlaWdodCgp
KTsKKyAgICBMYXlvdXRVbml0IHhPZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0
UG9zaXRpb24ueCwgY29udGVudFJlY3Qud2lkdGgoKSAtIGZpbmFsUmVjdC53aWR0aCgpKTsKKyAg
ICBMYXlvdXRVbml0IHlPZmZzZXQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgob2JqZWN0UG9zaXRp
b24ueSwgY29udGVudFJlY3QuaGVpZ2h0KCkgLSBmaW5hbFJlY3QuaGVpZ2h0KCkpOwogCiAgICAg
ZmluYWxSZWN0Lm1vdmUoeE9mZnNldCwgeU9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCmluZGV4IGNhNWI3NDBkOTA0NGJkNjVlMzY2YjU3ZDc2
YzM0MjhjM2Y5ZWUzZjYuLjRjNDc0Yzk1ZTNlZWMyMjJmMDUzOTkzNTIyNWQ0YTIxOWE2MDI4ZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRCb3hQYWludGVyLmNwcApAQCAtNjQw
LDcgKzY0MCw3IEBAIGNvbnN0IFNoYWRvd0RhdGEqIFRleHRCb3hQYWludGVyOjpkZWJ1Z1RleHRT
aGFkb3coKSBjb25zdAogICAgIGlmICghdGV4dEJveCgpLmxlZ2FjeUlubGluZUJveCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTaGFkb3dE
YXRhPiBkZWJ1Z1RleHRTaGFkb3coTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVk
KSwgTGVuZ3RoKExlbmd0aFR5cGU6OkZpeGVkKSksIExlbmd0aCgxMCwgTGVuZ3RoVHlwZTo6Rml4
ZWQpLCBMZW5ndGgoMjAsIExlbmd0aFR5cGU6OkZpeGVkKSwgU2hhZG93U3R5bGU6Ok5vcm1hbCwg
dHJ1ZSwgU1JHQkE8dWludDhfdD4geyAxNTAsIDAsIDAsIDE5MCB9KTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U2hhZG93RGF0YT4gZGVidWdUZXh0U2hhZG93KExlbmd0aFBvaW50IHsgeyBM
ZW5ndGhUeXBlOjpGaXhlZCB9LCB7IExlbmd0aFR5cGU6OkZpeGVkIH0gfSwgTGVuZ3RoKDEwLCBM
ZW5ndGhUeXBlOjpGaXhlZCksIExlbmd0aCgyMCwgTGVuZ3RoVHlwZTo6Rml4ZWQpLCBTaGFkb3dT
dHlsZTo6Tm9ybWFsLCB0cnVlLCBTUkdCQTx1aW50OF90PiB7IDE1MCwgMCwgMCwgMTkwIH0pOwog
ICAgIHJldHVybiAmZGVidWdUZXh0U2hhZG93LmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCmluZGV4IDRmZjQ4MTZm
YzQzZWNlNzhlZTg5NzcxZTE2ZDg1NWZhMDVmZmQxYzkuLmM3YjZiNmMyNjVmMDQyZWJkMWRmMzYx
ZDMyYjQwMmQzNjQ1NGY5ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCkBAIC0xODQsMTIgKzE4NCw2IEBAIHN0YXRpYyBTdHJv
a2VTdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShUZXh0RGVjb3JhdGlvblN0
eWxlIGRlY29yYXRpCiAgICAgcmV0dXJuIHN0cm9rZVN0eWxlOwogfQogCi1ib29sIFRleHREZWNv
cmF0aW9uUGFpbnRlcjo6U3R5bGVzOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlcyYgb3RoZXIpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHVuZGVybGluZUNvbG9yID09IG90aGVyLnVuZGVybGluZUNvbG9y
ICYmIG92ZXJsaW5lQ29sb3IgPT0gb3RoZXIub3ZlcmxpbmVDb2xvciAmJiBsaW5ldGhyb3VnaENv
bG9yID09IG90aGVyLmxpbmV0aHJvdWdoQ29sb3IKLSAgICAgICAgJiYgdW5kZXJsaW5lU3R5bGUg
PT0gb3RoZXIudW5kZXJsaW5lU3R5bGUgJiYgb3ZlcmxpbmVTdHlsZSA9PSBvdGhlci5vdmVybGlu
ZVN0eWxlICYmIGxpbmV0aHJvdWdoU3R5bGUgPT0gb3RoZXIubGluZXRocm91Z2hTdHlsZTsKLX0K
LQogVGV4dERlY29yYXRpb25QYWludGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBkZWNvcmF0aW9u
cywgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250LCBzdGQ6Om9wdGlvbmFsPFN0eWxlcz4gc3R5bGVzKQogICAgIDogbV9j
b250ZXh0IHsgY29udGV4dCB9CiAgICAgLCBtX2RlY29yYXRpb25zIHsgZGVjb3JhdGlvbnMgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCmlu
ZGV4IDYzOGFjOTYzNWQwZjY5ZTI0MWQ0MzViYTgyZjQ1OWI3NWY2N2JjNzYuLjA0MGM5YmQ2OGY2
NjkzYjg2YjUxZmM3Njk3NDllNGQ1MGVkODgzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKQEAgLTU3LDggKzU3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcGFpbnRMaW5lVGhyb3VnaChjb25zdCBDb2xvciYsIGZsb2F0IHRoaWNrbmVz
cywgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxPcmlnaW4pOwogCiAgICAgc3RydWN0IFN0eWxlcyB7
Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZXMmKSBjb25zdDsKLSAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlcyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZXMmKSBj
b25zdCA9IGRlZmF1bHQ7CiAKICAgICAgICAgQ29sb3IgdW5kZXJsaW5lQ29sb3I7CiAgICAgICAg
IENvbG9yIG92ZXJsaW5lQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvVGV4dFBhaW50U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWlu
dFN0eWxlLmNwcAppbmRleCAzYzA4M2IxOTE2Y2RkMmQwN2I4ZmI2OGJkMjJlMDQ4N2Q3NWZjZmFm
Li45ZmQ5NjRhY2U5OTU0MGQ5OTdhODNlODhmMDI0MjVmN2YxYzY4NDk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5jcHAKQEAgLTQ2LDE2ICs0Niw2IEBAIFRl
eHRQYWludFN0eWxlOjpUZXh0UGFpbnRTdHlsZShjb25zdCBDb2xvciYgY29sb3IpCiB7CiB9CiAK
LWJvb2wgVGV4dFBhaW50U3R5bGU6Om9wZXJhdG9yPT0oY29uc3QgVGV4dFBhaW50U3R5bGUmIG90
aGVyKSBjb25zdAotewotICAgIHJldHVybiBmaWxsQ29sb3IgPT0gb3RoZXIuZmlsbENvbG9yICYm
IHN0cm9rZUNvbG9yID09IG90aGVyLnN0cm9rZUNvbG9yICYmIGVtcGhhc2lzTWFya0NvbG9yID09
IG90aGVyLmVtcGhhc2lzTWFya0NvbG9yCi0gICAgICAgICYmIHN0cm9rZVdpZHRoID09IG90aGVy
LnN0cm9rZVdpZHRoICYmIHBhaW50T3JkZXIgPT0gb3RoZXIucGFpbnRPcmRlciAmJiBsaW5lSm9p
biA9PSBvdGhlci5saW5lSm9pbgotI2lmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpCi0gICAg
ICAgICYmIHVzZURhcmtBcHBlYXJhbmNlID09IG90aGVyLnVzZURhcmtBcHBlYXJhbmNlCi0jZW5k
aWYKLSAgICAgICAgJiYgbGluZUNhcCA9PSBvdGhlci5saW5lQ2FwICYmIG1pdGVyTGltaXQgPT0g
b3RoZXIubWl0ZXJMaW1pdDsKLX0KLQogYm9vbCB0ZXh0Q29sb3JJc0xlZ2libGVBZ2FpbnN0QmFj
a2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGNvbnN0IENvbG9yJiBiYWNrZ3Jv
dW5kQ29sb3IpCiB7CiAgICAgLy8gVXNlcyB0aGUgV0NBRyAyLjAgZGVmaW5pdGlvbiBvZiBsZWdp
YmlsaXR5OiBhIGNvbnRyYXN0IHJhdGlvIG9mIDQuNToxIG9yIGdyZWF0ZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50U3R5bGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCmluZGV4IDQ1OWJhZjExMmZjMDMyNzBhZmU0
NmZmZTg0ZWQwZDViYTZiMjZlMzkuLmI4MDk3ODA3YWE1YjFkMmZhMTRlMzFjNWNiNTU2OTAyMDUx
ODMyNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHls
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRTdHlsZS5oCkBAIC0z
MywxNyArMzMsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsK
K2NsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBTaGFkb3dEYXRhOworCiBzdHJ1Y3QgUGFpbnRJbmZv
OwogCiBzdHJ1Y3QgVGV4dFBhaW50U3R5bGUgewotICAgIFRleHRQYWludFN0eWxlKCkgeyB9Cisg
ICAgVGV4dFBhaW50U3R5bGUoKSA9IGRlZmF1bHQ7CiAgICAgVGV4dFBhaW50U3R5bGUoY29uc3Qg
Q29sb3ImKTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0UGFpbnRTdHlsZSYpIGNv
bnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0UGFpbnRTdHlsZSYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRleHRQYWludFN0eWxlJikgY29uc3QgPSBkZWZhdWx0OwogCiAgICAgQ29sb3IgZmlsbENv
bG9yOwogICAgIENvbG9yIHN0cm9rZUNvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZUludGVydmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwuaAppbmRleCA2Y2M0ZGFiNDlmNWMyMTAyOTAwMjVhZjkx
YjE1YmY0MGFmY2NlY2M4Li5iMjNjMjkyNTFhNDVhOTEwZDNkZTA0OWFlYjRiZmY1ZDUwZDAwMjU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2
YWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW50ZXJ2YWwu
aApAQCAtOTAsOCArOTAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzZXQoc3RkOjptaW48VD4o
eDEoKSwgaW50ZXJ2YWwueDEoKSksIHN0ZDo6bWF4PFQ+KHgyKCksIGludGVydmFsLngyKCkpKTsK
ICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgb3Ro
ZXIpIGNvbnN0IHsgcmV0dXJuIHgxKCkgPT0gb3RoZXIueDEoKSAmJiB4MigpID09IG90aGVyLngy
KCk7IH0KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhcGVJbnRlcnZhbDxUPiYgb3RoZXIp
IGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTaGFwZUludGVydmFsJikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAg
IFQgbV94MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMu
Y3BwCmluZGV4IDA4NmE2ZjZhNjNhMjVlNTAyM2FlOTViZmE4NGY0ZmE3ZDRmZmMyNjIuLjk4ZTEz
ZjNlNmNmY2FlOGQyNDhjNWE0ZjAyZmQwYTg1MWQ0NzZkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtNjMsMTEgKzYzLDcgQEAgdm9p
ZCBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZTo6dXBkYXRlQ29tcHV0ZWRMZW5ndGgoKQogfQog
CiBzdHJ1Y3QgU1ZHUGF0aFRyYW5zZm9ybWVkQnl0ZVN0cmVhbSB7Ci0gICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNWR1BhdGhUcmFuc2Zvcm1lZEJ5dGVTdHJlYW0mIG90aGVyKSBjb25zdCAKLSAg
ICB7IAotICAgICAgICByZXR1cm4gb3RoZXIub2Zmc2V0ID09IG9mZnNldCAmJiBvdGhlci56b29t
ID09IHpvb20gJiYgb3RoZXIucmF3U3RyZWFtID09IHJhd1N0cmVhbTsKLSAgICB9Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFNWR1BhdGhUcmFuc2Zvcm1lZEJ5dGVTdHJlYW0mIG90aGVyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTVkdQYXRoVHJhbnNmb3JtZWRCeXRlU3RyZWFtJikgY29uc3QgPSBkZWZhdWx0OwogICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHJhd1N0cmVhbS5pc0VtcHR5KCk7IH0KIAog
ICAgIFBhdGggcGF0aCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9C
YXNpY1NoYXBlcy5oCmluZGV4IDliZjAzNzM0NzZiNTNlNWM3YTRhOWJjNjIzOWU0NWVjNGFkNTM0
ZTQuLjdlMmZlZTU5OWY0YTliMDU4MmRlY2JhOTljMjE5OWYxZTBhYjlkOTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC0xMDIsMTIgKzEwMiw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVDZW50ZXJDb29yZGluYXRlKFRv
cExlZnQsIFdlYkNvcmU6OmJsZW5kKGZyb20ubV9jb21wdXRlZExlbmd0aCwgbV9jb21wdXRlZExl
bmd0aCwgY29udGV4dCkpOwogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
QmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fZGlyZWN0aW9uID09IG90aGVyLm1fZGlyZWN0aW9uCi0gICAgICAgICAgICAmJiBt
X2xlbmd0aCA9PSBvdGhlci5tX2xlbmd0aAotICAgICAgICAgICAgJiYgbV9jb21wdXRlZExlbmd0
aCA9PSBvdGhlci5tX2NvbXB1dGVkTGVuZ3RoOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUmKSBjb25zdCA9IGRlZmF1bHQ7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCB1cGRhdGVDb21wdXRlZExlbmd0aCgpOwpAQCAtMTUzLDEwICsxNDgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBCYXNpY1NoYXBlUmFkaXVzKFdlYkNvcmU6OmJs
ZW5kKGZyb20udmFsdWUoKSwgdmFsdWUoKSwgY29udGV4dCkpOwogICAgIH0KICAgICAKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZVJhZGl1cyYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlICYmIG1fdHlwZSA9PSBv
dGhlci5tX3R5cGU7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBl
UmFkaXVzJikgY29uc3QgPSBkZWZhdWx0OwogCiBwcml2YXRlOgogICAgIExlbmd0aCBtX3ZhbHVl
IHsgTGVuZ3RoVHlwZTo6VW5kZWZpbmVkIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0JvcmRlckRhdGEuaAppbmRleCBlNDM5ODNlMjJiYTNlMmMyMTQxYjE2YzA4MTRiZGFiYzgz
OWM4MmE0Li5iM2E0MzE2ZWMwZDIyNGM3YzI0ZmRhMGE3M2Y5NjY4YmNkYmM1ZTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJEYXRhLmgKQEAgLTk5LDE2ICs5OSw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZsb2F0Qm94RXh0ZW50KGJvcmRlclRvcFdpZHRo
KCksIGJvcmRlclJpZ2h0V2lkdGgoKSwgYm9yZGVyQm90dG9tV2lkdGgoKSwgYm9yZGVyTGVmdFdp
ZHRoKCkpOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3JkZXJEYXRhJiBv
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fbGVmdCA9PSBvLm1fbGVmdCAmJiBtX3Jp
Z2h0ID09IG8ubV9yaWdodCAmJiBtX3RvcCA9PSBvLm1fdG9wICYmIG1fYm90dG9tID09IG8ubV9i
b3R0b20gJiYgbV9pbWFnZSA9PSBvLm1faW1hZ2UKLSAgICAgICAgICAgICYmIG1fdG9wTGVmdFJh
ZGl1cyA9PSBvLm1fdG9wTGVmdFJhZGl1cyAmJiBtX3RvcFJpZ2h0UmFkaXVzID09IG8ubV90b3BS
aWdodFJhZGl1cyAmJiBtX2JvdHRvbUxlZnRSYWRpdXMgPT0gby5tX2JvdHRvbUxlZnRSYWRpdXMg
JiYgbV9ib3R0b21SaWdodFJhZGl1cyA9PSBvLm1fYm90dG9tUmlnaHRSYWRpdXM7Ci0gICAgfQot
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJvcmRlckRhdGEmIG8pIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IEJvcmRlckRhdGEmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBjb25zdCBCb3JkZXJW
YWx1ZSYgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQogICAgIGNvbnN0IEJvcmRlclZh
bHVlJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmgKaW5kZXggZGNlZmY0YTYyZTQwNGFiOWNkNzhj
MmEwNzM4ODQ2MGI0NjBkOTU4Ni4uZDc2MmVlMGQ0YTQ1ODJkODk0N2QyNzhhNDg4MzNlYzE2Mjg4
ZmM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmgK
QEAgLTUzLDE1ICs1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5vblplcm8oKSAmJiAh
aXNUcmFuc3BhcmVudCgpICYmIHN0eWxlKCkgIT0gQm9yZGVyU3R5bGU6OkhpZGRlbjsKICAgICB9
CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQm9yZGVyVmFsdWUmIG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV93aWR0aCA9PSBvLm1fd2lkdGggJiYgbV9zdHlsZSA9PSBvLm1f
c3R5bGUgJiYgbV9jb2xvciA9PSBvLm1fY29sb3I7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEJvcmRlclZhbHVlJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3JkZXJWYWx1
ZSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9D
b250ZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRh
LmgKaW5kZXggMmMxMmRkOWI0MGRkNDBiM2MwYmY2NzQ5MzIyYWUyYjBmZDFlMDcwZi4uNTNlNTI4
MjFjYTY3ZTE4NDZjNjNkZTMyMzg2OWJhNDk5ZjQ2ZGU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgKQEAgLTEwOCwxMSArMTA4LDYgQEAgaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbWFnZUNvbnRlbnREYXRhJiBhLCBjb25zdCBJbWFnZUNv
bnRlbnREYXRhJiBiKQogICAgIHJldHVybiAmYS5pbWFnZSgpID09ICZiLmltYWdlKCk7CiB9CiAK
LWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW1hZ2VDb250ZW50RGF0YSYgYSwgY29uc3Qg
SW1hZ2VDb250ZW50RGF0YSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiBjbGFz
cyBUZXh0Q29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29udGVudERhdGEgewogcHVibGljOgog
ICAgIGV4cGxpY2l0IFRleHRDb250ZW50RGF0YShjb25zdCBTdHJpbmcmIHRleHQpCkBAIC0xMzYs
MTEgKzEzMSw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dENvbnRlbnREYXRh
JiBhLCBjb25zdCBUZXh0Q29udGVudERhdGEmIGIpCiAgICAgcmV0dXJuIGEudGV4dCgpID09IGIu
dGV4dCgpOwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRDb250ZW50RGF0
YSYgYSwgY29uc3QgVGV4dENvbnRlbnREYXRhJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7
Ci19Ci0KIGNsYXNzIENvdW50ZXJDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0
YSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ291bnRlckNvbnRlbnREYXRhKHN0ZDo6dW5pcXVl
X3B0cjxDb3VudGVyQ29udGVudD4gY291bnRlcikKQEAgLTE3MiwxMSArMTYyLDYgQEAgaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3VudGVyQ29udGVudERhdGEmIGEsIGNvbnN0IENvdW50
ZXJDb250ZW50RGF0YSYgYikKICAgICByZXR1cm4gYS5jb3VudGVyKCkgPT0gYi5jb3VudGVyKCk7
CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ291bnRlckNvbnRlbnREYXRhJiBh
LCBjb25zdCBDb3VudGVyQ29udGVudERhdGEmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsK
LX0KLQogY2xhc3MgUXVvdGVDb250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUXVvdGVDb250ZW50RGF0YShRdW90ZVR5cGUgcXVvdGUp
CkBAIC0yMDAsMTEgKzE4NSw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVvdGVD
b250ZW50RGF0YSYgYSwgY29uc3QgUXVvdGVDb250ZW50RGF0YSYgYikKICAgICByZXR1cm4gYS5x
dW90ZSgpID09IGIucXVvdGUoKTsKIH0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBR
dW90ZUNvbnRlbnREYXRhJiBhLCBjb25zdCBRdW90ZUNvbnRlbnREYXRhJiBiKQotewotICAgIHJl
dHVybiAhKGEgPT0gYik7Ci19Ci0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29udGVu
dERhdGEmIGEsIGNvbnN0IENvbnRlbnREYXRhJiBiKQogewogICAgIGlmIChhLnR5cGUoKSAhPSBi
LnR5cGUoKSkKQEAgLTIyNSwxMSArMjA1LDYgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDb250ZW50RGF0YSYgYSwgY29uc3QgQ29udGVudERhdGEmIGIpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbnRlbnREYXRhJiBhLCBjb25z
dCBDb250ZW50RGF0YSYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DT05URU5U
X0RBVEEoVG9DbGFzc05hbWUsIENvbnRlbnREYXRhTmFtZSkgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJDb250ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckNvbnRlbnQuaAppbmRleCA1ODZjYzY2OTgwMjY1ZDk4
NjNhY2FhYTdlZTZiOGE5ODY0ODMyNmM2Li5mY2Y1NDVjZTMyNjM5Njc2NzlhZDVlYjE0NzZiOGYw
ZTIyYzZiY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291
bnRlckNvbnRlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRl
ckNvbnRlbnQuaApAQCAtMjksMzIgKzI5LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQ291bnRlckNvbnRlbnQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIENvdW50ZXJDb250ZW50KGNvbnN0IEF0b21TdHJpbmcmIGlkZW50aWZpZXIsIExp
c3RTdHlsZVR5cGUgc3R5bGUsIGNvbnN0IEF0b21TdHJpbmcmIHNlcGFyYXRvcikKLSAgICAgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAgICAgLCBtX2xpc3RTdHlsZShzdHlsZSkK
LSAgICAgICAgLCBtX3NlcGFyYXRvcihzZXBhcmF0b3IpCi0gICAgewotICAgICAgICBBU1NFUlQo
c3R5bGUgIT0gTGlzdFN0eWxlVHlwZTo6U3RyaW5nKTsKLSAgICB9CitzdHJ1Y3QgQ291bnRlckNv
bnRlbnQgeworICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKIAotICAgIGNvbnN0
IEF0b21TdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0K
LSAgICBMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdFN0eWxl
OyB9Ci0gICAgY29uc3QgQXRvbVN0cmluZyYgc2VwYXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXBhcmF0b3I7IH0KKyAgICBBdG9tU3RyaW5nIGlkZW50aWZpZXI7CisgICAgTGlzdFN0eWxlVHlw
ZSBsaXN0U3R5bGU7CisgICAgQXRvbVN0cmluZyBzZXBhcmF0b3I7CiAKLXByaXZhdGU6Ci0gICAg
QXRvbVN0cmluZyBtX2lkZW50aWZpZXI7Ci0gICAgTGlzdFN0eWxlVHlwZSBtX2xpc3RTdHlsZTsK
LSAgICBBdG9tU3RyaW5nIG1fc2VwYXJhdG9yOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
b3VudGVyQ29udGVudCYpIGNvbnN0ID0gZGVmYXVsdDsKIH07CiAKLXN0YXRpYyBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXJDb250ZW50JiBhLCBjb25zdCBDb3VudGVyQ29udGVu
dCYgYikKLXsKLSAgICByZXR1cm4gYS5pZGVudGlmaWVyKCkgPT0gYi5pZGVudGlmaWVyKCkKLSAg
ICAgICAgJiYgYS5saXN0U3R5bGUoKSA9PSBiLmxpc3RTdHlsZSgpCi0gICAgICAgICYmIGEuc2Vw
YXJhdG9yKCkgPT0gYi5zZXBhcmF0b3IoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3Rp
dmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMu
aAppbmRleCAwZTMyYmYyNDg2OWJkYmE4Y2YwYzg1YWVkODM4YjAyY2JlZTlhMDQ5Li41YzkzYWM1
OGZiNTA1YmYxM2JmMjdmMWQ1ZWM3Y2I0YjllMzQzOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaApAQCAtMjgsMTggKzI4LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IENvdW50ZXJEaXJlY3RpdmVzIHsKICAgICBz
dGQ6Om9wdGlvbmFsPGludD4gcmVzZXRWYWx1ZTsKICAgICBzdGQ6Om9wdGlvbmFsPGludD4gaW5j
cmVtZW50VmFsdWU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXJEaXJlY3RpdmVz
JikgY29uc3QgPSBkZWZhdWx0OwogfTsKIAotY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDb3VudGVyRGlyZWN0aXZlcyYgYSwgY29uc3QgQ291bnRlckRpcmVjdGl2ZXMmIGIpCi17Ci0g
ICAgcmV0dXJuIGEuaW5jcmVtZW50VmFsdWUgPT0gYi5pbmNyZW1lbnRWYWx1ZSAmJiBhLnJlc2V0
VmFsdWUgPT0gYi5yZXNldFZhbHVlOwotfQotCi1jb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IENvdW50ZXJEaXJlY3RpdmVzJiBhLCBjb25zdCBDb3VudGVyRGlyZWN0aXZlcyYgYikKLXsK
LSAgICByZXR1cm4gIShhID09IGIpOwotfQotCiB1c2luZyBDb3VudGVyRGlyZWN0aXZlTWFwID0g
SGFzaE1hcDxBdG9tU3RyaW5nLCBDb3VudGVyRGlyZWN0aXZlcz47CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9DdXJz
b3JEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ3Vyc29yRGF0YS5oCmlu
ZGV4IDU2ZmNjZDBlOTg2NzVlZmI1OWY0YzM5OWNhZjE2OTBiNWIxOWVkZGEuLjhkYzk5MGM1NWVk
NzVhNDExYWM3N2MzYTZhOTgyZGQyYzVmNjMyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9DdXJzb3JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0N1cnNvckRhdGEuaApAQCAtMzcsMjIgKzM3LDE0IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1cnNvckRhdGEmIG8pIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9ob3RTcG90ID09IG8ubV9ob3RTcG90ICYmIG1faW1h
Z2UgPT0gby5tX2ltYWdlOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDdXJz
b3JEYXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0g
ICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXJzb3JEYXRhJikgY29uc3QgPSBkZWZh
dWx0OwogCi0gICAgU3R5bGVJbWFnZSogaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdl
dCgpOyB9ICAgIAorICAgIFN0eWxlSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0SW1hZ2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2Up
IHsgbV9pbWFnZSA9IFdURk1vdmUoaW1hZ2UpOyB9CiAKICAgICAvLyBIb3Qgc3BvdCBpbiB0aGUg
aW1hZ2UgaW4gbG9naWNhbCBwaXhlbHMuCiAgICAgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QoKSBj
b25zdCB7IHJldHVybiBtX2hvdFNwb3Q7IH0KLSAgICAKKwogcHJpdmF0ZToKICAgICBSZWZQdHI8
U3R5bGVJbWFnZT4gbV9pbWFnZTsKICAgICBJbnRQb2ludCBtX2hvdFNwb3Q7IC8vIGZvciBDU1Mz
IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9DdXJz
b3JMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ3Vyc29yTGlzdC5oCmlu
ZGV4IDI5ODMwYzZjNDkzNmNjNGViMTE0MGI1ZDkwYzhkODk1ODJlMThlYTEuLmUxZjUzMDFjNDFl
YTBjYmRkOGQwZjdiYjA4MGU1YWQzZTVmNDk5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9DdXJzb3JMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0N1cnNvckxpc3QuaApAQCAtNDMsNyArNDMsNiBAQCBwdWJsaWM6CiAgICAgQ3Vy
c29yRGF0YSYgYXQoc2l6ZV90IGkpIHsgcmV0dXJuIG1fdmVjdG9yLmF0KGkpOyB9CiAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ3Vyc29yTGlzdCYgbykgY29uc3QgeyByZXR1cm4gbV92ZWN0
b3IgPT0gby5tX3ZlY3RvcjsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDdXJzb3JMaXN0
JiBvKSBjb25zdCB7IHJldHVybiBtX3ZlY3RvciAhPSBvLm1fdmVjdG9yOyB9CiAKICAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNpemUoKTsgfQogICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IEN1cnNvckRhdGEmIGN1cnNvckRhdGEpIHsgbV92ZWN0b3IuYXBwZW5kKGN1cnNv
ckRhdGEpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmls
bExheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKaW5k
ZXggOTVkMzg2MjdlMTQxM2Y1MjYxYzA5YzlmZDlmYjFhYTIyMGQ1NDhiNC4uZTdkZTM2ZGQxODFh
NjA1M2FkMjdiYWI5MmZiMDhmZTk4MmI1MmZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWxsTGF5ZXIuaApAQCAtMzUsMzAgKzM1LDExIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiAKIHN0cnVjdCBGaWxsU2l6ZSB7Ci0gICAgRmlsbFNp
emUoKQotICAgICAgICA6IHR5cGUoRmlsbFNpemVUeXBlOjpTaXplKQotICAgIHsKLSAgICB9Ci0K
LSAgICBGaWxsU2l6ZShGaWxsU2l6ZVR5cGUgdHlwZSwgY29uc3QgTGVuZ3RoU2l6ZSYgc2l6ZSkK
LSAgICAgICAgOiB0eXBlKHR5cGUpCi0gICAgICAgICwgc2l6ZShzaXplKQotICAgIHsKLSAgICB9
Ci0KLSAgICBGaWxsU2l6ZVR5cGUgdHlwZTsKKyAgICBGaWxsU2l6ZVR5cGUgdHlwZSB7IEZpbGxT
aXplVHlwZTo6U2l6ZSB9OwogICAgIExlbmd0aFNpemUgc2l6ZTsKLX07Ci0KLWlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgRmlsbFNpemUmIGEsIGNvbnN0IEZpbGxTaXplJiBiKQotewotICAg
IHJldHVybiBhLnR5cGUgPT0gYi50eXBlICYmIGEuc2l6ZSA9PSBiLnNpemU7Ci19CiAKLWlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRmlsbFNpemUmIGEsIGNvbnN0IEZpbGxTaXplJiBiKQot
ewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZp
bGxTaXplJikgY29uc3QgPSBkZWZhdWx0OworfTsKIAogY2xhc3MgRmlsbExheWVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8RmlsbExheWVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC04NCw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2RlPihtX2JsZW5kTW9kZSk7IH0KICAgICBjb25z
dCBMZW5ndGhTaXplJiBzaXplTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9zaXplTGVuZ3RoOyB9
CiAgICAgRmlsbFNpemVUeXBlIHNpemVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RmlsbFNpemVUeXBlPihtX3NpemVUeXBlKTsgfQotICAgIEZpbGxTaXplIHNpemUoKSBjb25zdCB7
IHJldHVybiBGaWxsU2l6ZShzdGF0aWNfY2FzdDxGaWxsU2l6ZVR5cGU+KG1fc2l6ZVR5cGUpLCBt
X3NpemVMZW5ndGgpOyB9CisgICAgRmlsbFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsgc2l6
ZVR5cGUoKSwgbV9zaXplTGVuZ3RoIH07IH0KICAgICBNYXNrTW9kZSBtYXNrTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hc2tNb2RlPihtX21hc2tNb2RlKTsgfQogCiAgICAgY29u
c3QgRmlsbExheWVyKiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9CkBAIC0x
NDQsNyArMTI1LDYgQEAgcHVibGljOgogICAgIEZpbGxMYXllciYgb3BlcmF0b3I9KGNvbnN0IEZp
bGxMYXllciYpOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbGxMYXllciYpIGNvbnN0
OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWxsTGF5ZXImIG90aGVyKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgYm9vbCBjb250YWluc0ltYWdlKFN0eWxl
SW1hZ2UmKSBjb25zdDsKICAgICBib29sIGltYWdlc0FyZUxvYWRlZCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAppbmRleCBiN2ViZDFkOTYxZGU4ODI2
ZmI4MzAzMzA5YjhlNjM1MmYyMGY5ZWFiLi43MjdmOWUyZmRlYThjMWEwNDQ5MDcyNWE5OWRjYTQz
MTg3YTMwMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3Jp
ZEFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaApA
QCAtNDIsNyArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBEZXNwaXRlIGxpbmUgbnVt
YmVycyBpbiB0aGUgc3BlYyBzdGFydCBpbiAiMSIsIHRoZSBpbmRleGVzIGhlcmUgc3RhcnQgaW4g
IjAiLgogY2xhc3MgR3JpZFNwYW4gewogcHVibGljOgotCiAgICAgc3RhdGljIEdyaWRTcGFuIHVu
dHJhbnNsYXRlZERlZmluaXRlR3JpZFNwYW4oaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAg
ICAgewogICAgICAgICByZXR1cm4gR3JpZFNwYW4oc3RhcnRMaW5lLCBlbmRMaW5lLCBVbnRyYW5z
bGF0ZWREZWZpbml0ZSk7CkBAIC01OCwxMCArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBHcmlkU3BhbigwLCAxLCBJbmRlZmluaXRlKTsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgR3JpZFNwYW4mIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV90eXBl
ID09IG8ubV90eXBlICYmIG1fc3RhcnRMaW5lID09IG8ubV9zdGFydExpbmUgJiYgbV9lbmRMaW5l
ID09IG8ubV9lbmRMaW5lOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR3JpZFNw
YW4mKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICB1bnNpZ25lZCBpbnRlZ2VyU3BhbigpIGNvbnN0
CiAgICAgewpAQCAtMTQyLDggKzEzOCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0K
LSAgICBlbnVtIEdyaWRTcGFuVHlwZSB7VW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWRE
ZWZpbml0ZSwgSW5kZWZpbml0ZX07CisgICAgZW51bSBHcmlkU3BhblR5cGUgOiB1aW50OF90IHsg
VW50cmFuc2xhdGVkRGVmaW5pdGUsIFRyYW5zbGF0ZWREZWZpbml0ZSwgSW5kZWZpbml0ZSB9Owog
CiAgICAgR3JpZFNwYW4oaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUsIEdyaWRTcGFuVHlwZSB0
eXBlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQpAQCAtMTYzLDQxICsxNTgsMzAgQEAgcHJpdmF0
ZToKICAgICBpbnQgbV9zdGFydExpbmU7CiAgICAgaW50IG1fZW5kTGluZTsKICAgICBHcmlkU3Bh
blR5cGUgbV90eXBlOwotCi0KIH07CiAKIC8vIFRoaXMgcmVwcmVzZW50cyBhIGdyaWQgYXJlYSB0
aGF0IHNwYW5zIGluIGJvdGggcm93cycgYW5kIGNvbHVtbnMnIGRpcmVjdGlvbi4KLWNsYXNzIEdy
aWRBcmVhIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBI
YXNoTWFwIHJlcXVpcmVzIGEgZGVmYXVsdCBjb25zdHVjdG9yLgotICAgIEdyaWRBcmVhKCkKLSAg
ICAgICAgOiBjb2x1bW5zKEdyaWRTcGFuOjppbmRlZmluaXRlR3JpZFNwYW4oKSkKLSAgICAgICAg
LCByb3dzKEdyaWRTcGFuOjppbmRlZmluaXRlR3JpZFNwYW4oKSkKLSAgICB7Ci0gICAgfQorc3Ry
dWN0IEdyaWRBcmVhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKLSAg
ICBHcmlkQXJlYShjb25zdCBHcmlkU3BhbiYgciwgY29uc3QgR3JpZFNwYW4mIGMpCi0gICAgICAg
IDogY29sdW1ucyhjKQotICAgICAgICAsIHJvd3MocikKKyAgICBHcmlkQXJlYSgpCisgICAgICAg
IDogcm93cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCisgICAgICAgICwgY29sdW1u
cyhHcmlkU3Bhbjo6aW5kZWZpbml0ZUdyaWRTcGFuKCkpCiAgICAgewogICAgIH0KIAotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBHcmlkQXJlYSYgbykgY29uc3QKKyAgICBHcmlkQXJlYShHcmlk
U3BhbiByb3dzLCBHcmlkU3BhbiBjb2x1bW5zKQorICAgICAgICA6IHJvd3Mocm93cykKKyAgICAg
ICAgLCBjb2x1bW5zKGNvbHVtbnMpCiAgICAgewotICAgICAgICByZXR1cm4gY29sdW1ucyA9PSBv
LmNvbHVtbnMgJiYgcm93cyA9PSBvLnJvd3M7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEdyaWRBcmVhJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlkQXJlYSYpIGNvbnN0
ID0gZGVmYXVsdDsKIAotICAgIEdyaWRTcGFuIGNvbHVtbnM7CiAgICAgR3JpZFNwYW4gcm93czsK
KyAgICBHcmlkU3BhbiBjb2x1bW5zOwogfTsKIAotdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgR3Jp
ZEFyZWE+IE5hbWVkR3JpZEFyZWFNYXA7Cit1c2luZyBOYW1lZEdyaWRBcmVhTWFwID0gSGFzaE1h
cDxTdHJpbmcsIEdyaWRBcmVhPjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRMZW5ndGguaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkTGVuZ3RoLmgKaW5kZXggODZhY2QzMzBkZjY5Zjgz
YjBkMmZkMzIyN2ViYjgwZTllZmU3ZTg3YS4uYzljZDY2NzgxZmE1MjQ5OWM4ODlmM2Q1NmQzMzQ4
NGUwOGMxNDRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dy
aWRMZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZExlbmd0
aC5oCkBAIC00Miw3ICs0Miw2IEBAIGNsYXNzIEdyaWRMZW5ndGggewogcHVibGljOgogICAgIEdy
aWRMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgpCiAgICAgICAgIDogbV9sZW5ndGgobGVuZ3Ro
KQotICAgICAgICAsIG1fZmxleCgwKQogICAgICAgICAsIG1fdHlwZShMZW5ndGhUeXBlKQogICAg
IHsKICAgICAgICAgQVNTRVJUKCFsZW5ndGguaXNVbmRlZmluZWQoKSk7CkBAIC02MywyMyArNjIs
MTYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBt
X3R5cGUgPT0gTGVuZ3RoVHlwZSAmJiBtX2xlbmd0aC5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKTsg
fQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdyaWRMZW5ndGgmIG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV90eXBlID09IG8ubV90eXBlICYmIG1fZmxleCA9PSBvLm1fZmxl
eCAmJiBtX2xlbmd0aCA9PSBvLm1fbGVuZ3RoOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgR3JpZExlbmd0aCYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIGJvb2wgaXNDb250ZW50
U2l6ZWQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTGVuZ3RoVHlwZSAmJiAobV9sZW5ndGgu
aXNBdXRvKCkgfHwgbV9sZW5ndGguaXNNaW5Db250ZW50KCkgfHwgbV9sZW5ndGguaXNNYXhDb250
ZW50KCkpOyB9CiAgICAgYm9vbCBpc0F1dG8oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTGVu
Z3RoVHlwZSAmJiBtX2xlbmd0aC5pc0F1dG8oKTsgfQogCiBwcml2YXRlOgotICAgIC8vIElkZWFs
bHkgd2Ugd291bGQgcHV0IHRoZSAyIGZvbGxvd2luZyBmaWVsZHMgaW4gYSB1bmlvbiwgYnV0IExl
bmd0aCBoYXMgYSBjb25zdHJ1Y3RvciwKLSAgICAvLyBhIGRlc3RydWN0b3IgYW5kIGEgY29weSBh
c3NpZ25tZW50IHdoaWNoIGlzbid0IGFsbG93ZWQuCisgICAgLy8gQ291bGQgdXNlIGEgVmFyaWFu
dCBoZXJlLgogICAgIExlbmd0aCBtX2xlbmd0aDsKLSAgICBkb3VibGUgbV9mbGV4OwotICAgIGVu
dW0gR3JpZExlbmd0aFR5cGUgewotICAgICAgICBMZW5ndGhUeXBlLAotICAgICAgICBGbGV4VHlw
ZQotICAgIH07CisgICAgZG91YmxlIG1fZmxleCB7IDAgfTsKKyAgICBlbnVtIEdyaWRMZW5ndGhU
eXBlIDogYm9vbCB7IExlbmd0aFR5cGUsIEZsZXhUeXBlIH07CiAgICAgR3JpZExlbmd0aFR5cGUg
bV90eXBlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0dyaWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBv
c2l0aW9uLmNwcAppbmRleCBlNmNjOTYxN2I5MDFiNDJhMGVhMzQzMjU3YmYxZjhkMTUxZGVlYmFh
Li41ZjRjZTI4Mjk2YmJkMGQwN2YwNzUzMzQxODM2YzU3YTUyNmVkNTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcApAQCAtOTUsMTEgKzk1
LDYgQEAgaW50IEdyaWRQb3NpdGlvbjo6bWluKCkKICAgICByZXR1cm4gLW1heCgpOwogfQogCi1i
b29sIEdyaWRQb3NpdGlvbjo6b3BlcmF0b3I9PShjb25zdCBHcmlkUG9zaXRpb24mIG90aGVyKSBj
b25zdAotewotICAgIHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBlICYmIG1faW50ZWdlclBv
c2l0aW9uID09IG90aGVyLm1faW50ZWdlclBvc2l0aW9uICYmIG1fbmFtZWRHcmlkTGluZSA9PSBv
dGhlci5tX25hbWVkR3JpZExpbmU7Ci19Ci0KIHZvaWQgR3JpZFBvc2l0aW9uOjpzZXRNYXhQb3Np
dGlvbkZvclRlc3RpbmcodW5zaWduZWQgbWF4UG9zaXRpb24pCiB7CiAgICAgZ01heFBvc2l0aW9u
Rm9yVGVzdGluZyA9IHN0YXRpY19jYXN0PGludD4obWF4UG9zaXRpb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5oCmluZGV4IDI1MjdmN2M3M2Y3ZTQz
MDY5NTY3ODZiNWU1MThiNjRkZWE0YmFiYjUuLjQ2YjU2OTkyYjU5NmU3NTcxOTUzNTA5ZWExNWRk
ZmEwMzBiMTBkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9H
cmlkUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBv
c2l0aW9uLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBuYW1lZEdyaWRM
aW5lKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHNwYW5Qb3NpdGlvbigpIGNvbnN0
OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdyaWRQb3NpdGlvbiYgb3RoZXIpIGNvbnN0
OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlkUG9zaXRpb24mKSBjb25zdCA9IGRlZmF1
bHQ7CiAKICAgICBib29sIHNob3VsZEJlUmVzb2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGlzQXV0bygpIHx8IGlzU3BhbigpOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuaAppbmRleCAxZjMwODc4MGZlZjY5OTY1
YWFhNTQxOGU5NWVmYWY5MWU5YmMxMDk4Li5lNWY5MzU0NzZkMTY4ZmU3ODNmMTA2ZDNiY2I2YWUw
ZWVlYzc0ZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvS2V5
ZnJhbWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1l
TGlzdC5oCkBAIC04MSw4ICs4MSw3IEBAIHB1YmxpYzoKICAgICB+S2V5ZnJhbWVMaXN0KCk7CiAg
ICAgICAgIAogICAgIEtleWZyYW1lTGlzdCYgb3BlcmF0b3I9KEtleWZyYW1lTGlzdCYmKSA9IGRl
ZmF1bHQ7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEtleWZyYW1lTGlzdCYgbykgY29uc3Q7
Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEtleWZyYW1lTGlzdCYgbykgY29uc3QgeyByZXR1
cm4gISgqdGhpcyA9PSBvKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBLZXlmcmFtZUxp
c3QmKSBjb25zdDsKIAogICAgIGNvbnN0IEF0b21TdHJpbmcmIGFuaW1hdGlvbk5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2FuaW1hdGlvbk5hbWU7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9MaW5lQ2xhbXBWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0xpbmVDbGFtcFZhbHVlLmgKaW5kZXggMjVkYjRlMzI1ZWEzMmFlMjI0
NWY5YWM3ZjQ2MjRiYTBlNDViYzk2Ni4uNGU0MzRjMjg3MjFhN2M5MjhjZjFiYTQ4NDUwMDg1ODQ2
ZTUzYjBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0xpbmVD
bGFtcFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0xpbmVDbGFt
cFZhbHVlLmgKQEAgLTMwLDM3ICszMCwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBj
bGFzcyBMaW5lQ2xhbXBWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgTGluZUNsYW1wVmFsdWUoKQotICAg
ICAgICA6IG1fdHlwZShMaW5lQ2xhbXA6OkxpbmVDb3VudCkKLSAgICAgICAgLCBtX3ZhbHVlKC0x
KQotICAgIHsKLSAgICB9Ci0gICAgCisgICAgTGluZUNsYW1wVmFsdWUoKSA9IGRlZmF1bHQ7CisK
ICAgICBMaW5lQ2xhbXBWYWx1ZShpbnQgdmFsdWUsIExpbmVDbGFtcCB0eXBlKQogICAgICAgICA6
IG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KLSAg
ICAKKwogICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICAKICAg
ICBib29sIGlzUGVyY2VudGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBMaW5lQ2xhbXA6
OlBlcmNlbnRhZ2U7IH0KLQogICAgIGJvb2wgaXNOb25lKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZSA9PSAtMTsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExpbmVDbGFtcFZhbHVlJiBv
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHZhbHVlKCkgPT0gby52YWx1ZSgpICYmIGlz
UGVyY2VudGFnZSgpID09IG8uaXNQZXJjZW50YWdlKCk7Ci0gICAgfQotICAgIAotICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBMaW5lQ2xhbXBWYWx1ZSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
TGluZUNsYW1wVmFsdWUmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgCiBwcml2YXRlOgotICAgIExp
bmVDbGFtcCBtX3R5cGU7Ci0gICAgaW50IG1fdmFsdWU7CisgICAgTGluZUNsYW1wIG1fdHlwZSB7
IExpbmVDbGFtcDo6TGluZUNvdW50IH07CisgICAgaW50IG1fdmFsdWUgeyAtMSB9OwogfTsKICAg
ICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL05pbmVQaWVjZUltYWdlLmgKaW5kZXggYzM5ZGVjMzM0NDEyZGQ5NTA2MGE1YTE2ZjQy
ZmY5NDgyYmUzYmQ0ZS4uZjM4OTM4NmI4OGVkYzg5ZTMxZDQ4ZTExOGQ2ZGY5OWE5OTYyMWQzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmgK
QEAgLTEwNiwxNiArMTA2LDEyIEBAIGlubGluZSBzdGQ6Om9wdGlvbmFsPEJveFNpZGU+IGltYWdl
UGllY2VWZXJ0aWNhbFNpZGUoSW1hZ2VQaWVjZSBwaWVjZSkKIAogY2xhc3MgTmluZVBpZWNlSW1h
Z2UgewogcHVibGljOgotICAgIGVudW0gY2xhc3MgVHlwZSB7Ci0gICAgICAgIE5vcm1hbCwKLSAg
ICAgICAgTWFzawotICAgIH07CisgICAgZW51bSBjbGFzcyBUeXBlIDogYm9vbCB7IE5vcm1hbCwg
TWFzayB9OwogCiAgICAgTmluZVBpZWNlSW1hZ2UoVHlwZSA9IFR5cGU6Ok5vcm1hbCk7CiAgICAg
TmluZVBpZWNlSW1hZ2UoUmVmUHRyPFN0eWxlSW1hZ2U+JiYsIExlbmd0aEJveCBpbWFnZVNsaWNl
cywgYm9vbCBmaWxsLCBMZW5ndGhCb3ggYm9yZGVyU2xpY2VzLCBMZW5ndGhCb3ggb3V0c2V0LCBO
aW5lUGllY2VJbWFnZVJ1bGUgaG9yaXpvbnRhbFJ1bGUsIE5pbmVQaWVjZUltYWdlUnVsZSB2ZXJ0
aWNhbFJ1bGUpOwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5pbmVQaWVjZUltYWdlJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gbV9kYXRhID09IG90aGVyLm1fZGF0YTsgfQotICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBOaW5lUGllY2VJbWFnZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YSAhPSBvdGhlci5tX2RhdGE7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTmluZVBp
ZWNlSW1hZ2UmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBib29sIGhhc0ltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLT5pbWFnZTsgfQogICAgIFN0eWxlSW1hZ2UqIGltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhLT5pbWFnZS5nZXQoKTsgfQpAQCAtMTkyLDcgKzE4OCw2IEBAIHByaXZh
dGU6CiAgICAgICAgIFJlZjxEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IERhdGEmKSBjb25zdDsKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IERhdGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAg
ICAgIGJvb2wgZmlsbCB7IGZhbHNlIH07CiAgICAgICAgIE5pbmVQaWVjZUltYWdlUnVsZSBob3Jp
em9udGFsUnVsZSB7IE5pbmVQaWVjZUltYWdlUnVsZTo6U3RyZXRjaCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL09mZnNldFJvdGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PZmZzZXRSb3RhdGlvbi5jcHAKaW5kZXggZmU4M2Y4
Mjk4MjIzZWI4ODgxOGU2MWM2N2I4NmUxNDU2NzRiNTg5OC4uZWEwNWJkYTE2YWIzYzZkNzVmMjkw
MjI4Zjk3ODViNDM0N2Q1MjZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL09mZnNldFJvdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvT2Zmc2V0Um90YXRpb24uY3BwCkBAIC0zNCwxMSArMzQsNiBAQCBPZmZzZXRSb3RhdGlv
bjo6T2Zmc2V0Um90YXRpb24oYm9vbCBoYXNBdXRvLCBmbG9hdCBhbmdsZSkKIHsKIH0KIAotYm9v
bCBPZmZzZXRSb3RhdGlvbjo6b3BlcmF0b3I9PShjb25zdCBPZmZzZXRSb3RhdGlvbiYgbykgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9oYXNBdXRvID09IG8ubV9oYXNBdXRvICYmIG1fYW5nbGUgPT0g
by5tX2FuZ2xlOwotfQotCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgT2Zmc2V0Um90YXRpb24mIHJvdGF0aW9uKQogewogICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiaGFzQXV0byIsIHJvdGF0aW9uLmhhc0F1dG8oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT2Zmc2V0Um90YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9PZmZzZXRSb3RhdGlvbi5oCmluZGV4IDM0MTI3ZmVhZmNmM2Nj
YTg2ZjVhODY5ZjMyNzBhNTkwODRlYjViOGIuLjhkMTNlMDcyOTFmMjczOTUxNGQ2MGJmMGFiNWQx
MDgyZWNmYTVhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9P
ZmZzZXRSb3RhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PZmZz
ZXRSb3RhdGlvbi5oCkBAIC0zNiw4ICszNiw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0F1dG8o
KSBjb25zdCB7IHJldHVybiBtX2hhc0F1dG87IH0KICAgICBmbG9hdCBhbmdsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYW5nbGU7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPZmZzZXRSb3Rh
dGlvbiYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPZmZzZXRSb3RhdGlvbiYg
bykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBPZmZzZXRSb3RhdGlvbiYpIGNvbnN0ID0gZGVmYXVsdDsKIAogcHJpdmF0ZToKICAgICBi
b29sIG1faGFzQXV0bzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9PdXRsaW5lVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PdXRsaW5l
VmFsdWUuaAppbmRleCAyMDI5MzJjN2M5MmI3ZTFmMDNkYWEwMzczZDg0NjhiZDUzMWQxZWQzLi42
NDAzMGYzZDA5OWU5MjA4NWVjYjQ1OGYyMzJlMzdkM2FjZGU4MzMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL091dGxpbmVWYWx1ZS5oCkBAIC0yOSwxNyArMjksOSBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPdXRsaW5lVmFsdWUgOiBwdWJsaWMgQm9yZGVy
VmFsdWUgewotZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOworICAgIGZyaWVuZCBjbGFzcyBSZW5k
ZXJTdHlsZTsKIHB1YmxpYzoKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3V0bGluZVZhbHVl
JiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dpZHRoICYm
IG1fc3R5bGUgPT0gby5tX3N0eWxlICYmIG1fY29sb3IgPT0gby5tX2NvbG9yICYmIG1fb2Zmc2V0
ID09IG8ubV9vZmZzZXQgJiYgbV9pc0F1dG8gPT0gby5tX2lzQXV0bzsKLSAgICB9Ci0gICAgCi0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE91dGxpbmVWYWx1ZSYgbykgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgT3V0bGluZVZhbHVlJikgY29uc3QgPSBkZWZhdWx0OwogICAgIAogICAgIGZsb2F0IG9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgT3V0bGluZUlzQXV0byBpc0F1
dG8oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxPdXRsaW5lSXNBdXRvPihtX2lzQXV0byk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9RdW90ZXNEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUXVvdGVzRGF0YS5oCmluZGV4IDVk
M2VjMTg5MTJlMWY2ZjIyYmU1NjY3NGIxNmY5YmUxMmI2N2Y3ZDcuLjc1NGYxN2Y2ZjYwYTlkMDZj
ZmMyMDRiYjM1ZGUzNzZkNDMyMGVkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9RdW90ZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1F1b3Rlc0RhdGEuaApAQCAtNTUsOSArNTUsNCBAQCBwcml2YXRlOgogI3ByYWdtYSB3YXJu
aW5nKHBvcCkKICNlbmRpZgogCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFF1b3Rlc0Rh
dGEmIGEsIGNvbnN0IFF1b3Rlc0RhdGEmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggNmI3NmMyNTc3OWE0YjFlNzA1NTlmNmM0ZGZiNDgx
NzYzZTU0OTMxZS4uZjhlYjVkMjA5ZjhlYjNhMjU1YzU0NTBhODEwNWY0MmUxZTM3ZWY4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0x
NDk3LDcgKzE0OTcsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBseU1vdGlvblBhdGhUcmFuc2Zv
cm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29ucwogICAgIC8vIFNoaWZ0IGVs
ZW1lbnQgdG8gdGhlIGFuY2hvciBzcGVjaWZpZWQgYnkgb2Zmc2V0LWFuY2hvci4KICAgICBhdXRv
IHRyYW5zZm9ybU9yaWdpbiA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludCh0cmFuc2Zvcm1Pcmln
aW5YWSgpLCBib3VuZGluZ0JveC5zaXplKCkpICsgYm91bmRpbmdCb3gubG9jYXRpb24oKTsKICAg
ICBhdXRvIGFuY2hvciA9IHRyYW5zZm9ybU9yaWdpbjsKLSAgICBpZiAoIW9mZnNldEFuY2hvcigp
LngoKS5pc0F1dG8oKSkKKyAgICBpZiAoIW9mZnNldEFuY2hvcigpLnguaXNBdXRvKCkpCiAgICAg
ICAgIGFuY2hvciA9IGZsb2F0UG9pbnRGb3JMZW5ndGhQb2ludChvZmZzZXRBbmNob3IoKSwgYm91
bmRpbmdCb3guc2l6ZSgpKSArIGJvdW5kaW5nQm94LmxvY2F0aW9uKCk7CiAgICAgdHJhbnNmb3Jt
LnRyYW5zbGF0ZSgtYW5jaG9yLngoKSwgLWFuY2hvci55KCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDA3NDMxZjlhMjgwMTFjN2Y3ZWE5
YWE1YzY1OWMwNTkwMTE4MTQ1ODguLjQ4ODZmYWY2ZDE0NWMyZjE2NGFhNzYxNzY0ZDM3ZTZlZjcx
NmIyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CkBAIC0xMDksNyArMTA5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCb3JkZXJE
YXRhOwogY2xhc3MgQ29udGVudERhdGE7Ci1jbGFzcyBDb3VudGVyQ29udGVudDsKIGNsYXNzIEN1
cnNvckxpc3Q7CiBjbGFzcyBGb250Q2FzY2FkZTsKIGNsYXNzIEZvbnRNZXRyaWNzOwpAQCAtMTIx
LDYgKzEyMCw3IEBAIGNsYXNzIFN0eWxlSW5oZXJpdGVkRGF0YTsKIGNsYXNzIFN0eWxlU2Nyb2xs
U25hcEFyZWE7CiBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAorc3RydWN0IENvdW50ZXJD
b250ZW50Owogc3RydWN0IFNjcm9sbFNuYXBBbGlnbjsKIHN0cnVjdCBTY3JvbGxTbmFwVHlwZTsK
IApAQCAtMTYxLDcgKzE2MSw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFJlbmRlclN0eWxlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0K
IAogICAgIHZvaWQgaW5oZXJpdEZyb20oY29uc3QgUmVuZGVyU3R5bGUmIGluaGVyaXRQYXJlbnQp
OwogICAgIHZvaWQgY29weU5vbkluaGVyaXRlZEZyb20oY29uc3QgUmVuZGVyU3R5bGUmKTsKQEAg
LTE1ODIsNyArMTU4MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgVGV4dENvbWJpbmUgaW5pdGlh
bFRleHRDb21iaW5lKCkgeyByZXR1cm4gVGV4dENvbWJpbmU6Ok5vbmU7IH0KICAgICBzdGF0aWMg
VGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRpb24oKSB7IHJldHVybiBUZXh0T3Jp
ZW50YXRpb246Ok1peGVkOyB9CiAgICAgc3RhdGljIE9iamVjdEZpdCBpbml0aWFsT2JqZWN0Rml0
KCkgeyByZXR1cm4gT2JqZWN0Rml0OjpGaWxsOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGlu
aXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aCg1MC4wZiwg
TGVuZ3RoVHlwZTo6UGVyY2VudCksIExlbmd0aCg1MC4wZiwgTGVuZ3RoVHlwZTo6UGVyY2VudCkp
OyB9CisgICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPYmplY3RQb3NpdGlvbigpIHsgcmV0
dXJuIHsgTGVuZ3RoKDUwLjBmLCBMZW5ndGhUeXBlOjpQZXJjZW50KSwgTGVuZ3RoKDUwLjBmLCBM
ZW5ndGhUeXBlOjpQZXJjZW50KSB9OyB9CiAgICAgc3RhdGljIEVtcHR5Q2VsbCBpbml0aWFsRW1w
dHlDZWxscygpIHsgcmV0dXJuIEVtcHR5Q2VsbDo6U2hvdzsgfQogICAgIHN0YXRpYyBMaXN0U3R5
bGVQb3NpdGlvbiBpbml0aWFsTGlzdFN0eWxlUG9zaXRpb24oKSB7IHJldHVybiBMaXN0U3R5bGVQ
b3NpdGlvbjo6T3V0c2lkZTsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBpbml0aWFs
TGlzdFN0eWxlU3RyaW5nVmFsdWUoKSB7IHJldHVybiBudWxsQXRvbSgpOyB9CkBAIC0xODk1LDEx
ICsxODk0LDExIEBAIHB1YmxpYzoKIAogICAgIExlbmd0aFBvaW50IG9mZnNldFBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+b2Zmc2V0UG9zaXRpb247IH0K
ICAgICB2b2lkIHNldE9mZnNldFBvc2l0aW9uKExlbmd0aFBvaW50JiYgcG9zaXRpb24pIHsgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCBvZmZzZXRQb3NpdGlvbiwgV1RGTW92ZShwb3Np
dGlvbikpOyB9Ci0gICAgc3RhdGljIExlbmd0aFBvaW50IGluaXRpYWxPZmZzZXRQb3NpdGlvbigp
IHsgcmV0dXJuIExlbmd0aFBvaW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExl
bmd0aFR5cGU6OkF1dG8pKTsgfQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0
UG9zaXRpb24oKSB7IHJldHVybiB7IHsgTGVuZ3RoVHlwZTo6QXV0byB9LCB7IExlbmd0aFR5cGU6
OkF1dG8gfSB9OyB9CiAKICAgICBMZW5ndGhQb2ludCBvZmZzZXRBbmNob3IoKSBjb25zdCB7IHJl
dHVybiBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5vZmZzZXRBbmNob3I7IH0KICAgICB2b2lkIHNl
dE9mZnNldEFuY2hvcihMZW5ndGhQb2ludCYmIHBvc2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgb2Zmc2V0QW5jaG9yLCBXVEZNb3ZlKHBvc2l0aW9uKSk7IH0KLSAgICBz
dGF0aWMgTGVuZ3RoUG9pbnQgaW5pdGlhbE9mZnNldEFuY2hvcigpIHsgcmV0dXJuIExlbmd0aFBv
aW50KExlbmd0aChMZW5ndGhUeXBlOjpBdXRvKSwgTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8pKTsg
fQorICAgIHN0YXRpYyBMZW5ndGhQb2ludCBpbml0aWFsT2Zmc2V0QW5jaG9yKCkgeyByZXR1cm4g
eyB7IExlbmd0aFR5cGU6OkF1dG8gfSwgeyBMZW5ndGhUeXBlOjpBdXRvIH0gfTsgfQogCiAgICAg
T2Zmc2V0Um90YXRpb24gb2Zmc2V0Um90YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+b2Zmc2V0Um90YXRlOyB9CiAgICAgdm9pZCBzZXRPZmZzZXRSb3RhdGUoT2Zm
c2V0Um90YXRpb24mJiByb3RhdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEs
IG9mZnNldFJvdGF0ZSwgV1RGTW92ZShyb3RhdGlvbikpOyB9CkBAIC0xOTA4LDcgKzE5MDcsNiBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0cnVjdCBOb25Jbmhlcml0ZWRGbGFncyB7CiAgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBOb25Jbmhlcml0ZWRGbGFncyYpIGNvbnN0OwotICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgICAgIHZvaWQgY29weU5vbklu
aGVyaXRlZEZyb20oY29uc3QgTm9uSW5oZXJpdGVkRmxhZ3MmKTsKIApAQCAtMTk1MSw3ICsxOTQ5
LDYgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBJbmhlcml0ZWRGbGFncyB7CiAgICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYpIGNvbnN0OwotICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgICAgIHVuc2lnbmVkIGVtcHR5Q2VsbHMgOiAxOyAv
LyBFbXB0eUNlbGwKICAgICAgICAgdW5zaWduZWQgY2FwdGlvblNpZGUgOiAyOyAvLyBDYXB0aW9u
U2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUu
aAppbmRleCA3ZjE5YjBmOWYyOWUxNWM4NjdkNTYzODA4OGE0YTBkMmYyZThkZjIxLi45N2Q3ZmVi
MjIwMDYxYWQwYWZhZTA3NmVmZDM0NjAzNDdmY2JiYjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtNDYsNyArNDYsNiBAQCBwdWJs
aWM6CiAgICAgU3R5bGVEaWZmZXJlbmNlIGRpZmYoY29uc3QgU1ZHUmVuZGVyU3R5bGUmKSBjb25z
dDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdSZW5kZXJTdHlsZSYpIGNvbnN0Owot
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTVkdSZW5kZXJTdHlsZSYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICAvLyBJbml0aWFsIHZhbHVlcyBmb3Ig
YWxsIHRoZSBwcm9wZXJ0aWVzCiAgICAgc3RhdGljIEFsaWdubWVudEJhc2VsaW5lIGluaXRpYWxB
bGlnbm1lbnRCYXNlbGluZSgpIHsgcmV0dXJuIEFsaWdubWVudEJhc2VsaW5lOjpBdXRvOyB9CkBA
IC0xOTIsNyArMTkxLDYgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBJbmhlcml0ZWRGbGFncyB7
CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmhlcml0ZWRGbGFncyYpIGNvbnN0Owot
ICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5oZXJpdGVkRmxhZ3MmIG90aGVyKSBjb25z
dCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgICAgIHVuc2lnbmVkIHNoYXBl
UmVuZGVyaW5nIDogMjsgLy8gU2hhcGVSZW5kZXJpbmcKICAgICAgICAgdW5zaWduZWQgY2xpcFJ1
bGUgOiAxOyAvLyBXaW5kUnVsZQpAQCAtMjA3LDcgKzIwNSw2IEBAIHByaXZhdGU6CiAgICAgc3Ry
dWN0IE5vbkluaGVyaXRlZEZsYWdzIHsKICAgICAgICAgLy8gMzIgYml0IG5vbi1pbmhlcml0ZWQs
IGRvbid0IGFkZCB0byB0aGUgc3RydWN0LCBvciB0aGUgb3BlcmF0b3Igd2lsbCBicmVhay4KICAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gZmxhZ3MgPT0gb3RoZXIuZmxhZ3M7IH0KLSAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IE5vbkluaGVyaXRlZEZsYWdzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gZmxhZ3Mg
IT0gb3RoZXIuZmxhZ3M7IH0KIAogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBzdHJ1Y3Qg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0
eWxlRGVmcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
RGVmcy5oCmluZGV4IGUxMzQxOGFhYmY4YTgwNWIwYmJmZTdmNTUzZTRjZjM4NjI1MTA5MGYuLmE4
YmFmNDM5NzhhMmNkOGI1YTA3ZWIwZmEyYmQ3YjliZmUzODMwOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZURlZnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmgKQEAgLTE0OSwx
MCArMTQ5LDYgQEAgcHVibGljOgogICAgIFJlZjxTdHlsZUZpbGxEYXRhPiBjb3B5KCkgY29uc3Q7
CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVGaWxsRGF0YSYpIGNvbnN0OwotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUZpbGxEYXRhJiBvdGhlcikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CiAKICAgICBmbG9hdCBv
cGFjaXR5OwogICAgIENvbG9yIHBhaW50Q29sb3I7CkBAIC0xNzMsMTAgKzE2OSw2IEBAIHB1Ymxp
YzoKICAgICBSZWY8U3R5bGVTdHJva2VEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU3R5bGVTdHJva2VEYXRhJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFN0eWxlU3Ryb2tlRGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQogCiAgICAgZmxvYXQgb3BhY2l0eTsKIApA
QCAtMjAzLDEwICsxOTUsNiBAQCBwdWJsaWM6CiAgICAgUmVmPFN0eWxlU3RvcERhdGE+IGNvcHko
KSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVN0b3BEYXRhJikgY29u
c3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlU3RvcERhdGEmIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KIAogICAg
IGZsb2F0IG9wYWNpdHk7CiAgICAgQ29sb3IgY29sb3I7CkBAIC0yMjIsMTAgKzIxMCw2IEBAIHB1
YmxpYzoKICAgICBSZWY8U3R5bGVUZXh0RGF0YT4gY29weSgpIGNvbnN0OwogICAgIAogICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVRleHREYXRhJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlVGV4dERhdGEmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgIH0KIAogICAgIFNWR0xlbmd0aFZh
bHVlIGtlcm5pbmc7CiAKQEAgLTI0MSwxMCArMjI1LDYgQEAgcHVibGljOgogICAgIFJlZjxTdHls
ZU1pc2NEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5
bGVNaXNjRGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZU1pc2NE
YXRhJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLSAgICB9CiAKICAgICBmbG9hdCBmbG9vZE9wYWNpdHk7CiAgICAgQ29sb3IgZmxvb2RDb2xv
cjsKQEAgLTI2NCwxMCArMjQ0LDYgQEAgcHVibGljOgogICAgIFJlZjxTdHlsZVNoYWRvd1NWR0Rh
dGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVNoYWRv
d1NWR0RhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVTaGFkb3dT
VkdEYXRhJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKLSAgICB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93Owog
CkBAIC0yODMsMTAgKzI1OSw2IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVJbmhlcml0ZWRSZXNv
dXJjZURhdGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHls
ZUluaGVyaXRlZFJlc291cmNlRGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZUluaGVyaXRlZFJlc291cmNlRGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQogCiAgICAgU3RyaW5nIG1hcmtlclN0
YXJ0OwogICAgIFN0cmluZyBtYXJrZXJNaWQ7CkBAIC0zMDQsMTAgKzI3Niw2IEBAIHB1YmxpYzoK
ICAgICBSZWY8U3R5bGVMYXlvdXREYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU3R5bGVMYXlvdXREYXRhJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0eWxlTGF5b3V0RGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQogCiAgICAgTGVuZ3RoIGN4OwogICAgIExlbmd0
aCBjeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmNwcApp
bmRleCA4N2NhMmIyNTJmOTZmODVlNGI0NDBiNmZkMmMwZjhlOTNhZGU3YTBjLi5kZTNkYzZjNGNk
ZTEyOTdlZWEwY2ZjZDZkNjFkNjQ0MTI4MTBlMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFNoYWRvd0RhdGE6OlNoYWRvd0RhdGEoY29uc3QgU2hhZG93RGF0YSYgbykK
LSAgICA6IG1fbG9jYXRpb24oby5tX2xvY2F0aW9uLngoKSwgby5tX2xvY2F0aW9uLnkoKSkKKyAg
ICA6IG1fbG9jYXRpb24oby5tX2xvY2F0aW9uKQogICAgICwgbV9zcHJlYWQoby5tX3NwcmVhZCkK
ICAgICAsIG1fcmFkaXVzKG8ubV9yYWRpdXMpCiAgICAgLCBtX2NvbG9yKG8ubV9jb2xvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oCmluZGV4IDIyZmVmNzYy
YmNhMzEwYjYzYWVmZTg1ODZmNDIyYWI5ZjgzYzA1ZjIuLjQzNGZiNzcwNzRiMTYxYmE5NDgyMmVl
MWQ0ZjEwMWVkZjA0MmE5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TaGFkb3dEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1No
YWRvd0RhdGEuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgU2hhZG93RGF0YSgpID0g
ZGVmYXVsdDsKIAogICAgIFNoYWRvd0RhdGEoY29uc3QgTGVuZ3RoUG9pbnQmIGxvY2F0aW9uLCBM
ZW5ndGggcmFkaXVzLCBMZW5ndGggc3ByZWFkLCBTaGFkb3dTdHlsZSBzdHlsZSwgYm9vbCBpc1dl
YmtpdEJveFNoYWRvdywgY29uc3QgQ29sb3ImIGNvbG9yKQotICAgICAgICA6IG1fbG9jYXRpb24o
bG9jYXRpb24ueCgpLCBsb2NhdGlvbi55KCkpCisgICAgICAgIDogbV9sb2NhdGlvbihsb2NhdGlv
bikKICAgICAgICAgLCBtX3NwcmVhZChzcHJlYWQpCiAgICAgICAgICwgbV9yYWRpdXMocmFkaXVz
KQogICAgICAgICAsIG1fY29sb3IoY29sb3IpCkBAIC01NiwxNCArNTYsMTAgQEAgcHVibGljOgog
CiAgICAgU2hhZG93RGF0YSYgb3BlcmF0b3I9KFNoYWRvd0RhdGEmJikgPSBkZWZhdWx0OwogCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYWRvd0RhdGEmIG8pIGNvbnN0OwotICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBTaGFkb3dEYXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFk
b3dEYXRhJikgY29uc3Q7CiAgICAgCi0gICAgY29uc3QgTGVuZ3RoJiB4KCkgY29uc3QgeyByZXR1
cm4gbV9sb2NhdGlvbi54KCk7IH0KLSAgICBjb25zdCBMZW5ndGgmIHkoKSBjb25zdCB7IHJldHVy
biBtX2xvY2F0aW9uLnkoKTsgfQorICAgIGNvbnN0IExlbmd0aCYgeCgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9jYXRpb24ueDsgfQorICAgIGNvbnN0IExlbmd0aCYgeSgpIGNvbnN0IHsgcmV0dXJuIG1f
bG9jYXRpb24ueTsgfQogICAgIGNvbnN0IExlbmd0aFBvaW50JiBsb2NhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fbG9jYXRpb247IH0KICAgICBjb25zdCBMZW5ndGgmIHJhZGl1cygpIGNvbnN0IHsg
cmV0dXJuIG1fcmFkaXVzOyB9CiAgICAgTGF5b3V0VW5pdCBwYWludGluZ0V4dGVudCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAppbmRleCA1ZGYx
NDI4OWJlMTA3YzRkYTY3YjE1MjIxOWJjYjU1YWM3MTRhYTNmLi5kY2Q2OTNkYTJlZjlhOGFkMWQw
MDMzYTFjYWVmYmVmZWFiMTdjODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU2hhcGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TaGFwZVZhbHVlLmgKQEAgLTY3LDEwICs2Nyw2IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGVWYWx1ZSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBTaGFwZVZhbHVlJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CiAKIHByaXZhdGU6CiAgICAgU2hhcGVWYWx1ZShS
ZWY8QmFzaWNTaGFwZT4mJiBzaGFwZSwgQ1NTQm94VHlwZSBjc3NCb3gpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaAppbmRleCA3
ZjNiY2NkOTI3YmUwOWRjYTBjOWI5ODA1NGE1NzUyOGViODk1MTEyLi45ZTA5YzVhMjA4NWU1YmJl
ZGY5OTliYWVkMDUwNWM5ZTUxZTc1Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgKQEAgLTM5LDcgKzM5LDYgQEAgcHVi
bGljOgogICAgIFJlZjxTdHlsZUJhY2tncm91bmREYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYpIGNvbnN0OwotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogICAgIGJvb2wgaXNFcXVpdmFsZW50Rm9yUGFp
bnRpbmcoY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYsIGJvb2wgY3VycmVudENvbG9yRGlmZmVy
cykgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUJveERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJveERh
dGEuaAppbmRleCAxYTlmMDdhY2E2YTgwMmRiYTYxYjdlYzkzZGI2MDVhYzY2ZGMzNDAzLi45OWRh
ZTc1YTlkMzA0ZTJlOWEzZmY3M2YxY2FiYzZmYTE1YmYyOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCb3hEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQm94RGF0YS5oCkBAIC0zOSwxMCArMzksNiBAQCBwdWJs
aWM6CiAgICAgUmVmPFN0eWxlQm94RGF0YT4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFN0eWxlQm94RGF0YSYgbykgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0eWxlQm94RGF0YSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0
aGlzID09IG8pOwotICAgIH0KIAogICAgIGNvbnN0IExlbmd0aCYgd2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtX3dpZHRoOyB9CiAgICAgY29uc3QgTGVuZ3RoJiBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2hlaWdodDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ29sb3JTY2hlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNvbG9yU2NoZW1lLmgKaW5kZXggZWQzMGE4YWY3MTVkMmU4MDAyNzhjZGQyODVmOWM3MzNlYTJh
YWNiYS4uOGQ5NTY2ZmEwZmRlOWU2OWQwNWFlMDFlNDZhYmZmMjIwYmQ5NWE3MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ29sb3JTY2hlbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDb2xvclNjaGVtZS5oCkBAIC00
MSwxMiArNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnMo
YWxsb3dzVHJhbnNmb3JtYXRpb25zKQogICAgIHsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFN0eWxlQ29sb3JTY2hlbWUmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fY29sb3JTY2hlbWUgPT0gb3RoZXIubV9jb2xvclNjaGVtZSAmJiBtX2FsbG93c1RyYW5zZm9y
bWF0aW9ucyA9PSBvdGhlci5tX2FsbG93c1RyYW5zZm9ybWF0aW9uczsKLSAgICB9Ci0KLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVDb2xvclNjaGVtZSYgb3RoZXIpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxl
Q29sb3JTY2hlbWUmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBib29sIGlzQXV0bygpIGNvbnN0
IHsgcmV0dXJuIG1fY29sb3JTY2hlbWUuaXNFbXB0eSgpICYmIG1fYWxsb3dzVHJhbnNmb3JtYXRp
b25zOyB9CiAgICAgYm9vbCBpc09ubHkoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU2NoZW1lLmlz
RW1wdHkoKSAmJiAhbV9hbGxvd3NUcmFuc2Zvcm1hdGlvbnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YS5o
CmluZGV4IGQ2NTgwMWFkNmE5ODI3MjlkM2MxNDZhOTU1NWI0Yjc4NzQwOTYyNDIuLmNhOTY4ZWVk
YzZiZTMyODE4N2UwNzExYjljMjk2YjVlNmEwYWU2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ29udGVudEFsaWdubWVudERhdGEuaApA
QCAtNTIsMTUgKzUyLDcgQEAgcHVibGljOgogICAgIENvbnRlbnREaXN0cmlidXRpb24gZGlzdHJp
YnV0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udGVudERpc3RyaWJ1dGlvbj4o
bV9kaXN0cmlidXRpb24pOyB9CiAgICAgT3ZlcmZsb3dBbGlnbm1lbnQgb3ZlcmZsb3coKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxPdmVyZmxvd0FsaWdubWVudD4obV9vdmVyZmxvdyk7IH0K
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBv
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcG9zaXRpb24gPT0gby5tX3Bvc2l0aW9u
ICYmIG1fZGlzdHJpYnV0aW9uID09IG8ubV9kaXN0cmlidXRpb24gJiYgbV9vdmVyZmxvdyA9PSBv
Lm1fb3ZlcmZsb3c7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlQ29u
dGVudEFsaWdubWVudERhdGEmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvKTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlQ29udGVudEFs
aWdubWVudERhdGEmKSBjb25zdCA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9wb3NpdGlvbiA6IDQ7IC8vIENvbnRlbnRQb3NpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaAppbmRleCBi
MTViY2YyNTE1ODVhMzBhYjAzNDg5OWY5ZWZhNmI5ODljMjY0MGUxLi4wZDZjMTBlMjg2YjQ4YWVl
YmRiOWU2YzAxZjE4MWRlYzU0YjZlYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGEuaApAQCAtNDgsOCArNDgs
NiBAQCBwdWJsaWM6CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotCi0gICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKICAgICB2b2lkIHNldEN1c3RvbVByb3Bl
cnR5VmFsdWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZSwgUmVmPENTU0N1c3RvbVByb3BlcnR5VmFs
dWU+JiYgdmFsdWUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YS5oCmluZGV4IDg2
YjdiY2FmNmEzYmUyZGE3YWQxODU2MTA2MGE3N2NiOGE2MDllMWYuLjZjYzVjYjIxZTQ2YjQwOTIz
NWI2YTRiOTVjZTA1MTRiOWI4YWIxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhLmgK
QEAgLTM1LDEwICszNSw2IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVEZXByZWNhdGVkRmxleGli
bGVCb3hEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5
bGVEZXByZWNhdGVkRmxleGlibGVCb3hEYXRhJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YSYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQogCiAgICAgZmxvYXQg
ZmxleDsKICAgICB1bnNpZ25lZCBmbGV4R3JvdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVGaWx0ZXJEYXRhLmgKaW5kZXggYThiYTgzMWUyYzI1NWQ3ZTgyYmU4
M2ZhNTU5MzI4YzEyZjRhZmNlYi4uZjVjY2EwNzdmMDAyN2NkMGMwYTdlMTg4NWZmNjJiYTI2MTM1
ZTZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlRmls
dGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZpbHRl
ckRhdGEuaApAQCAtMzcsMTAgKzM3LDYgQEAgcHVibGljOgogICAgIFJlZjxTdHlsZUZpbHRlckRh
dGE+IGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZUZpbHRl
ckRhdGEmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVGaWx0ZXJEYXRh
JiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQog
CiAgICAgRmlsdGVyT3BlcmF0aW9ucyBvcGVyYXRpb25zOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVGbGV4aWJsZUJveERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCmluZGV4IGQ0NWFl
ZDE3ZTU1MTJhZDRkODFhYjhhMzBjOWI2MmFiOWU1NTdhZTUuLjAyMzRjMjRkOTM1NTg4ZGI1OTQ2
NGMxOWZiMTExZjZhZDM2ZTJkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oCkBAIC0zNywxMCArMzcsNiBAQCBwdWJs
aWM6CiAgICAgUmVmPFN0eWxlRmxleGlibGVCb3hEYXRhPiBjb3B5KCkgY29uc3Q7CiAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVGbGV4aWJsZUJveERhdGEmKSBjb25zdDsKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVGbGV4aWJsZUJveERhdGEmIG8pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9CiAKICAgICBmbG9hdCBmbGV4
R3JvdzsKICAgICBmbG9hdCBmbGV4U2hyaW5rOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdyaWREYXRhLmgKaW5kZXggNDNkZTM4NjBkNWE5NmUyYTNlZjZkMWRmNmU0
MDFmMjBhOWExNTFiZC4uZTQ3MWFiNDZhNGU5MjgyZDdhMGY0OTFkNDBkYmI5N2NhYjhjNTBiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkRGF0YS5oCkBA
IC02MCwxMSArNjAsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAmJiBhdXRvUmVwZWF0Q29sdW1u
c1R5cGUgPT0gby5hdXRvUmVwZWF0Q29sdW1uc1R5cGUgJiYgYXV0b1JlcGVhdFJvd3NUeXBlID09
IG8uYXV0b1JlcGVhdFJvd3NUeXBlOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZUdyaWREYXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gbyk7Ci0gICAgfQotCiAgICAgVmVjdG9yPEdyaWRUcmFja1NpemU+IGdyaWRDb2x1bW5zOwog
ICAgIFZlY3RvcjxHcmlkVHJhY2tTaXplPiBncmlkUm93czsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR3JpZEl0ZW1EYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHcmlkSXRlbURhdGEuaAppbmRleCA3YWIwZDliZDhh
MGM0MGRhMDU0MjdmMTY2ZTkxMTEyOTNlNjgwMDUxLi42Yzg5NjA0Y2YyYTIyY2ZjODNiNzdhOWEw
MTY0ZTM0YzYwMDg0NWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVHcmlkSXRlbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVHcmlkSXRlbURhdGEuaApAQCAtNDcsMTEgKzQ3LDYgQEAgcHVibGljOgogICAgICAg
ICAgICAgJiYgZ3JpZFJvd1N0YXJ0ID09IG8uZ3JpZFJvd1N0YXJ0ICYmIGdyaWRSb3dFbmQgPT0g
by5ncmlkUm93RW5kOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZUdy
aWRJdGVtRGF0YSYgbykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8p
OwotICAgIH0KLQogICAgIEdyaWRQb3NpdGlvbiBncmlkQ29sdW1uU3RhcnQ7CiAgICAgR3JpZFBv
c2l0aW9uIGdyaWRDb2x1bW5FbmQ7CiAgICAgR3JpZFBvc2l0aW9uIGdyaWRSb3dTdGFydDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEu
aAppbmRleCA1NjJjMjM2MjU1OGFmZDQxNTNkNTcwZWE1NTExZTQ0NzNlNjU2MGYxLi40MzRjMmE2
YTY3ZTI5YzljNjVlMGQyMzVjMTY3YTYwMDczZTdiZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCkBAIC0zOCw3ICszOCw2
IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVJbmhlcml0ZWREYXRhPiBjb3B5KCkgY29uc3Q7CiAK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJikgY29uc3Q7Ci0g
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBmbG9hdCBob3Jpem9udGFsQm9y
ZGVyU3BhY2luZzsKICAgICBmbG9hdCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTWFycXVlZURhdGEuaAppbmRleCBiMDZi
NjQ1MzcyZmQ5ODkwZGZlYmM5MDkwZWFjNjU4M2I5OGE5OWFmLi5kM2FlYzg1NGMzOTc4NTcyYjhj
NDgyOTY0Y2Q3ZDI0NmNmZDQwMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVNYXJxdWVlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZU1hcnF1ZWVEYXRhLmgKQEAgLTM2LDExICszNiw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFN0eWxlTWFycXVlZURhdGE+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3R5bGVNYXJxdWVlRGF0YSk7IH0KICAgICBSZWY8U3R5bGVNYXJxdWVlRGF0YT4gY29w
eSgpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlTWFycXVlZURhdGEm
IG8pIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZU1hcnF1ZWVEYXRhJiBv
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7Ci0gICAgfQorICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU1hcnF1ZWVEYXRhJikgY29uc3Q7CiAKICAgICBM
ZW5ndGggaW5jcmVtZW50OwogICAgIGludCBzcGVlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgKaW5kZXggZWNkNDRmZDc2NTllZmU0
YTU4OTFjYTcxNjQ3ZDQ5OGJiNDJmMTVjNy4uMTY5MGRmZDVjZDVhMDQ0NjMyY2UwNWNjMGJkODcw
M2M4NTA5NzAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlTXVsdGlDb2xEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlTXVsdGlDb2xEYXRhLmgKQEAgLTM5LDcgKzM5LDYgQEAgcHVibGljOgogICAgIFJlZjxTdHls
ZU11bHRpQ29sRGF0YT4gY29weSgpIGNvbnN0OwogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHlsZU11bHRpQ29sRGF0YSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZU11bHRpQ29sRGF0YSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CiAKICAgICB1bnNpZ25lZCBzaG9ydCBydWxlV2lkdGgoKSBjb25zdAogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0
ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YS5oCmluZGV4IDU2NzA4YmVmZmRkMjhiMzZmOTk4ZmY4ZDIyMDc4NzQ0YWZhYTMwZDku
Ljk5M2U5NmM4MTRiNWMyZjI4M2ZkM2I2NWQ1Y2VlYjk2NGM0ZmQzNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
aApAQCAtNjQsMTEgKzY0LDcgQEAgcHVibGljOgogICAgIFJlZjxTdHlsZVJhcmVJbmhlcml0ZWRE
YXRhPiBjb3B5KCkgY29uc3Q7CiAgICAgflN0eWxlUmFyZUluaGVyaXRlZERhdGEoKTsKIAotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhJiBvKSBjb25zdDsK
LSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOwotICAgIH0KKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYpIGNvbnN0OwogCiAgICAg
Ym9vbCBoYXNDb2xvckZpbHRlcnMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKaW5kZXgg
ZGIzZWQ3YTY3NDM3NDc4YTI0MTAxMjlmMDExNGUxODE1ZDVmODMzMy4uNjNkNWY1Y2Q2NGY0MzAy
ZWYyYTQ1ZmZhZmEzZjUwMDdlOTNkYzdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBAIC05MCw3
ICs5MCw2IEBAIHB1YmxpYzoKICAgICB+U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpOwogICAg
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJikg
Y29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEmIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogCiAgICAgTGVu
Z3RoUG9pbnQgcGVyc3BlY3RpdmVPcmlnaW4oKSBjb25zdCB7IHJldHVybiB7IHBlcnNwZWN0aXZl
T3JpZ2luWCwgcGVyc3BlY3RpdmVPcmlnaW5ZIH07IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmVmbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmVmbGVjdGlvbi5oCmluZGV4IGNjYjMyNDE0Y2Q1M2RlYjdj
YWYxMTJiZGM0YzhkZGIzMDUxN2NhM2UuLmRjMDJlNjM4MTU2ZjBiMmFhZDhmYmZjZGFkOTZjODk0
ZmQ0YmQ2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJlZmxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
ZWZsZWN0aW9uLmgKQEAgLTQyLDcgKzQyLDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fZGlyZWN0aW9uID09IG8ubV9kaXJlY3Rpb24gJiYgbV9vZmZzZXQgPT0gby5tX29mZnNl
dCAmJiBtX21hc2sgPT0gby5tX21hc2s7CiAgICAgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZVJlZmxlY3Rpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAog
ICAgIFJlZmxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJl
Y3Rpb247IH0KICAgICBjb25zdCBMZW5ndGgmIG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zm
c2V0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVT
Y3JvbGxTbmFwUG9pbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVT
Y3JvbGxTbmFwUG9pbnRzLmgKaW5kZXggYTJjN2IwZGIzZDZlNWZlZDY1MzZhNTYzOWI0NTc5MmU0
NzgwMTE3OS4uOTY2NjRlOTE5NjFhOTc5MzAxMDc0YTIyYWUwYzQxNDUzMDQxOWNhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2Nyb2xsU25hcFBvaW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQ
b2ludHMuaApAQCAtMjUsMzYgKzI1LDIwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
TGVuZ3RoQm94LmgiCi0jaW5jbHVkZSAiTGVuZ3RoU2l6ZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0
eWxlQ29uc3RhbnRzLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNjcm9sbFNuYXBU
eXBlIHsKICAgICBTY3JvbGxTbmFwQXhpcyBheGlzIHsgU2Nyb2xsU25hcEF4aXM6OkJvdGggfTsK
ICAgICBTY3JvbGxTbmFwU3RyaWN0bmVzcyBzdHJpY3RuZXNzIHsgU2Nyb2xsU25hcFN0cmljdG5l
c3M6Ok5vbmUgfTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2Nyb2xsU25hcFR5cGUmKSBj
b25zdCA9IGRlZmF1bHQ7CiB9OwogCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcm9s
bFNuYXBUeXBlJiBhLCBjb25zdCBTY3JvbGxTbmFwVHlwZSYgYikKLXsKLSAgICByZXR1cm4gYS5h
eGlzID09IGIuYXhpcyAmJiBhLnN0cmljdG5lc3MgPT0gYi5zdHJpY3RuZXNzOwotfQotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNjcm9sbFNuYXBUeXBlJiBhLCBjb25zdCBTY3JvbGxT
bmFwVHlwZSYgYikgeyByZXR1cm4gIShhID09IGIpOyB9Ci0KIHN0cnVjdCBTY3JvbGxTbmFwQWxp
Z24gewogICAgIFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlIGJsb2NrQWxpZ24geyBTY3JvbGxTbmFw
QXhpc0FsaWduVHlwZTo6Tm9uZSB9OwogICAgIFNjcm9sbFNuYXBBeGlzQWxpZ25UeXBlIGlubGlu
ZUFsaWduIHsgU2Nyb2xsU25hcEF4aXNBbGlnblR5cGU6Ok5vbmUgfTsKKyAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgU2Nyb2xsU25hcEFsaWduJikgY29uc3QgPSBkZWZhdWx0OwogfTsKIAotaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JvbGxTbmFwQWxpZ24mIGEsIGNvbnN0IFNjcm9s
bFNuYXBBbGlnbiYgYikKLXsKLSAgICByZXR1cm4gYS5ibG9ja0FsaWduID09IGIuYmxvY2tBbGln
biAmJiBhLmlubGluZUFsaWduID09IGIuaW5saW5lQWxpZ247Ci19Ci0KLWlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgU2Nyb2xsU25hcEFsaWduJiBhLCBjb25zdCBTY3JvbGxTbmFwQWxpZ24m
IGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTZWxmQWxpZ25tZW50
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU2VsZkFsaWdubWVu
dERhdGEuaAppbmRleCAwOWYyMWQ4ODU0ODUwZjRlMGU0N2FmNjIxYmQ0MGQxMTQ4MTNiMmNjLi43
MDA5ODdiNWFmZDFlYzU5Y2U4ZGRkMzQ3OGRjMGQwYjIwYWFmZTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVTZWxmQWxpZ25tZW50RGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVNlbGZBbGlnbm1lbnREYXRhLmgK
QEAgLTU3LDExICs1Nyw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcG9zaXRpb24gPT0g
by5tX3Bvc2l0aW9uICYmIG1fcG9zaXRpb25UeXBlID09IG8ubV9wb3NpdGlvblR5cGUgJiYgbV9v
dmVyZmxvdyA9PSBvLm1fb3ZlcmZsb3c7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFN0eWxlU2VsZkFsaWdubWVudERhdGEmIG8pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9wb3Np
dGlvbiA6IDQ7IC8vIEl0ZW1Qb3NpdGlvbgogICAgIHVuc2lnbmVkIG1fcG9zaXRpb25UeXBlOiAx
OyAvLyBXaGV0aGVyIG9yIG5vdCBhbGlnbm1lbnQgdXNlcyB0aGUgJ2xlZ2FjeScga2V5d29yZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVN1cnJvdW5k
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRh
LmgKaW5kZXggOTg0NmIzMGQ4MzhhN2NmMWNmNGZkYjA5YmQ5ZjQ3NGE3YjI0ZGUxMi4uOWZmNTMy
YWQ0YjQ3OTYzMDg0MzA1NjJjNzAyN2UwMzIzZDUxNzQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlU3Vycm91bmREYXRhLmgKQEAgLTM4LDExICszOCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0eWxlU3Vycm91bmREYXRhPiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlU3Vycm91bmREYXRhKTsgfQogICAgIFJlZjxTdHls
ZVN1cnJvdW5kRGF0YT4gY29weSgpIGNvbnN0OwogICAgIAotICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHlsZVN1cnJvdW5kRGF0YSYgbykgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFN0eWxlU3Vycm91bmREYXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gbyk7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZVN1cnJv
dW5kRGF0YSYpIGNvbnN0OwogCiAgICAgTGVuZ3RoQm94IG9mZnNldDsKICAgICBMZW5ndGhCb3gg
bWFyZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
VHJhbnNmb3JtRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlVHJh
bnNmb3JtRGF0YS5oCmluZGV4IGMzNDE1Yzk5NGU5MzdlOWQ1NWI1M2MwMzM5NWJmOWM3NDU5NDU5
MmEuLmI2ZWE3M2VjMWI3Njg2YTM2NjAzODU4NjY1ZTZhZDQ2ODE2OGVkYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVRyYW5zZm9ybURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVUcmFuc2Zvcm1EYXRhLmgKQEAg
LTQwLDEwICs0MCw2IEBAIHB1YmxpYzoKICAgICBSZWY8U3R5bGVUcmFuc2Zvcm1EYXRhPiBjb3B5
KCkgY29uc3Q7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVUcmFuc2Zvcm1EYXRh
JikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlVHJhbnNmb3JtRGF0YSYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0g
ICAgfQogICAgIAogICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gb3BlcmF0
aW9ucy5zaXplKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlVmlzdWFsRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlVmlzdWFsRGF0YS5oCmluZGV4IGQ0MThhY2I1MGEyNGY4YTNiMjE4ZGRlMThjMzNlMWFhODhh
OGNiM2IuLjBlNDgxNWUwNzRiYThkODNmNmJlMDU0MjE3N2NkNzZlNjRlNTcxZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVZpc3VhbERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVWaXN1YWxEYXRhLmgKQEAgLTQ0
LDcgKzQ0LDYgQEAgcHVibGljOgogICAgICAgICAgICAgJiYgdGV4dERlY29yYXRpb24gPT0gb3Ro
ZXIudGV4dERlY29yYXRpb24KICAgICAgICAgICAgICYmIHpvb20gPT0gb3RoZXIuem9vbTsKICAg
ICB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlVmlzdWFsRGF0YSYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKICAgICBMZW5ndGhCb3ggY2xpcDsK
ICAgICBib29sIGhhc0NsaXAgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1RleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvVGV4dERlY29yYXRpb25UaGlja25lc3MuaAppbmRleCBiYjBiZGVkOTJjNTJm
M2Q4MTlkZTk2NjFjYzVjMjAwYmEyZmMzNWFkLi5hYjE5MDVjNjQ4NGE0NmM0ZjU2ODkxZDBmYTdi
OGY0MzZmNzU1YmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
VGV4dERlY29yYXRpb25UaGlja25lc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvVGV4dERlY29yYXRpb25UaGlja25lc3MuaApAQCAtMTAxLDExICsxMDEsNiBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dERl
Y29yYXRpb25UaGlja25lc3MmIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUg
OiB1aW50OF90IHsKICAgICAgICAgQXV0bywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9UZXh0U2l6ZUFkanVzdG1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9UZXh0U2l6ZUFkanVzdG1lbnQuaAppbmRleCBkYzZmYmE4MzU4OThkNmMxZWY2
MWQyZTVhZmY4ODM5NTA3YjYzMTI1Li4zMGJiYjUwZjM2Y2JlOTJkYTU1Zjg1NDg2YjIxNTA4NmM0
NDA4ZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFNp
emVBZGp1c3RtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRT
aXplQWRqdXN0bWVudC5oCkBAIC00Miw4ICs0Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzTm9u
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gTm9UZXh0U2l6ZUFkanVzdG1lbnQ7IH0KICAg
ICBib29sIGlzUGVyY2VudGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPj0gMDsgfQogCi0g
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRTaXplQWRqdXN0bWVudCYgYW5BZGp1c3RtZW50
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlID09IGFuQWRqdXN0bWVudC5tX3ZhbHVlOyB9Ci0gICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRTaXplQWRqdXN0bWVudCYgYW5BZGp1c3RtZW50KSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlICE9IGFuQWRqdXN0bWVudC5tX3ZhbHVlOyB9CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFRleHRTaXplQWRqdXN0bWVudCYpIGNvbnN0ID0gZGVmYXVsdDsK
IAogcHJpdmF0ZToKICAgICBmbG9hdCBtX3ZhbHVlOwpAQCAtNjUsOCArNjQsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGNvbnRhaW5zKEZpZWxkcykgY29uc3Q7CiAKLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQXV0b3NpemVTdGF0dXMmIG90aGVyKSBjb25zdCB7IHJldHVybiBmaWVsZHMoKSA9
PSBvdGhlci5maWVsZHMoKTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdXRvc2l6ZVN0
YXR1cyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEF1dG9zaXplU3RhdHVzJikgY29uc3QgPSBkZWZhdWx0OwogCiAg
ICAgc3RhdGljIGZsb2F0IGlkZW1wb3RlbnRUZXh0U2l6ZShmbG9hdCBzcGVjaWZpZWRTaXplLCBm
bG9hdCBwYWdlU2NhbGUpOwogICAgIHN0YXRpYyBBdXRvc2l6ZVN0YXR1cyBjb21wdXRlU3RhdHVz
KGNvbnN0IFJlbmRlclN0eWxlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvVGV4dFVuZGVybGluZU9mZnNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1RleHRVbmRlcmxpbmVPZmZzZXQuaAppbmRleCA5NjFlN2IyZDkzMTJkMmExOTkwZDhl
YWI1NjY5MDMwZGM5MzI1YTNiLi4wZTQwMmVjZWQ5M2FjOTJkMGYxNGJkZGI2OGZkNWE5MDZiZGE2
NTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dFVuZGVy
bGluZU9mZnNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5k
ZXJsaW5lT2Zmc2V0LmgKQEAgLTcxLDE1ICs3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fbGVuZ3RoLnZhbHVlX29yKGRlZmF1bHRWYWx1ZSk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRleHRVbmRlcmxpbmVPZmZzZXQmIG90aGVyKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fbGVuZ3RoID09IG90aGVyLm1fbGVuZ3RoOwotICAgIH0KLQotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBUZXh0VW5kZXJsaW5lT2Zmc2V0JiBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICB9CisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFRleHRVbmRlcmxpbmVPZmZzZXQmKSBjb25zdCA9IGRlZmF1bHQ7CiAK
IHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBUeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9XaWxsQ2hhbmdlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1dpbGxDaGFuZ2VEYXRhLmgKaW5kZXggZDlmMGRkM2FkOTc1ZTBlMzNkZmY2
MzM3N2EwZmI5ODUzOTYzYWY1Yi4uNzRmZTk2N2JhMTIxMDRjMGE2Y2MxOWMxYTcyN2M4NTgyMDEw
MmJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1dpbGxDaGFu
Z2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1dpbGxDaGFuZ2VE
YXRhLmgKQEAgLTQwLDEwICs0MCw2IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFdpbGxDaGFuZ2VEYXRhJikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFdpbGxDaGFuZ2VEYXRhJiBvKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gbyk7Ci0gICAgfQogCiAgICAgYm9vbCBpc0F1dG8oKSBjb25zdCB7IHJldHVy
biBtX2FuaW1hdGFibGVGZWF0dXJlcy5pc0VtcHR5KCk7IH0KICAgICBzaXplX3QgbnVtRmVhdHVy
ZXMoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGFibGVGZWF0dXJlcy5zaXplKCk7IH0KQEAgLTEx
NiwxMCArMTEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGFibGVGZWF0dXJlJiBvdGhl
cikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fZmVhdHVyZSA9PSBvdGhl
ci5tX2ZlYXR1cmUgJiYgbV9jc3NQcm9wZXJ0eUlEID09IG90aGVyLm1fY3NzUHJvcGVydHlJRDsK
LSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQW5pbWF0YWJsZUZlYXR1
cmUmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgfTsKIAogICAgIFZlY3RvcjxBbmltYXRhYmxlRmVh
dHVyZSwgMT4gbV9hbmltYXRhYmxlRmVhdHVyZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRNZXRyaWNzLmgKaW5kZXggODA5NjI5ZDBmNjQzY2Q2YmU5YmZlMjRiY2M3
N2RkMzk1MDU2MzY5Ny4uZjNkZTJmN2YwYTY1ODc1ZWU2OGJkZjg5ZDdlYThiMjYxNjdjOWIxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3MuaApAQCAt
NDcsMTkgKzQ3LDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVuZ3RoOyB9CiAKICAgICBzdHJ1Y3QgR2x5cGggewotICAgICAgICBHbHlwaCgpCi0g
ICAgICAgICAgICA6IGlzVmFsaWQoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHbHlwaCYgb3RoZXIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBpc1ZhbGlkID09IG90aGVyLmlzVmFsaWQKLSAgICAgICAgICAgICAgICAm
JiBuYW1lID09IG90aGVyLm5hbWUKLSAgICAgICAgICAgICAgICAmJiB1bmljb2RlU3RyaW5nID09
IG90aGVyLnVuaWNvZGVTdHJpbmc7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGlzVmFsaWQ7
CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHbHlwaCYpIGNvbnN0ID0gZGVmYXVsdDsK
KworICAgICAgICBib29sIGlzVmFsaWQgeyBmYWxzZSB9OwogICAgICAgICBTdHJpbmcgbmFtZTsK
ICAgICAgICAgU3RyaW5nIHVuaWNvZGVTdHJpbmc7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL01hdGNoUmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9NYXRj
aFJlc3VsdC5oCmluZGV4IDllOWEzNWRmZmY0ZjdiYzcwYWFhMjMzNjQ5NGFiOTc4MGJlNmZmMjgu
LjAxZjYxNjg3ZDFiOGYzYzg0NGNhNDQ5ODVlMGQxMzhiMDBiOTg3NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL01hdGNoUmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvTWF0Y2hSZXN1bHQuaApAQCAtNDIsNiArNDIsOCBAQCBzdHJ1Y3QgTWF0Y2hlZFByb3BlcnRp
ZXMgewogICAgIFNjb3BlT3JkaW5hbCBzdHlsZVNjb3BlT3JkaW5hbCB7IFNjb3BlT3JkaW5hbDo6
RWxlbWVudCB9OwogICAgIEZyb21TdHlsZUF0dHJpYnV0ZSBmcm9tU3R5bGVBdHRyaWJ1dGUgeyBG
cm9tU3R5bGVBdHRyaWJ1dGU6Ok5vIH07CiAgICAgQ2FzY2FkZUxheWVyUHJpb3JpdHkgY2FzY2Fk
ZUxheWVyUHJpb3JpdHkgeyBSdWxlU2V0OjpjYXNjYWRlTGF5ZXJQcmlvcml0eUZvclVubGF5ZXJl
ZCB9OworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJikgY29u
c3QgPSBkZWZhdWx0OwogfTsKIAogc3RydWN0IE1hdGNoUmVzdWx0IHsKQEAgLTUxLDM1ICs1Myw5
IEBAIHN0cnVjdCBNYXRjaFJlc3VsdCB7CiAgICAgVmVjdG9yPE1hdGNoZWRQcm9wZXJ0aWVzPiBh
dXRob3JEZWNsYXJhdGlvbnM7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiB1
c2VyQWdlbnREZWNsYXJhdGlvbnMuaXNFbXB0eSgpICYmIHVzZXJEZWNsYXJhdGlvbnMuaXNFbXB0
eSgpICYmIGF1dGhvckRlY2xhcmF0aW9ucy5pc0VtcHR5KCk7IH0KLX07Ci0KLWlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgTWF0Y2hSZXN1bHQmIGEsIGNvbnN0IE1hdGNoUmVzdWx0JiBiKQot
ewotICAgIHJldHVybiBhLmlzQ2FjaGVhYmxlID09IGIuaXNDYWNoZWFibGUKLSAgICAgICAgJiYg
YS51c2VyQWdlbnREZWNsYXJhdGlvbnMgPT0gYi51c2VyQWdlbnREZWNsYXJhdGlvbnMKLSAgICAg
ICAgJiYgYS51c2VyRGVjbGFyYXRpb25zID09IGIudXNlckRlY2xhcmF0aW9ucwotICAgICAgICAm
JiBhLmF1dGhvckRlY2xhcmF0aW9ucyA9PSBiLmF1dGhvckRlY2xhcmF0aW9uczsKLX0KLQotaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBNYXRjaFJlc3VsdCYgYSwgY29uc3QgTWF0Y2hSZXN1
bHQmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBNYXRjaGVkUHJvcGVydGllcyYgYSwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMm
IGIpCi17Ci0gICAgcmV0dXJuIGEucHJvcGVydGllcyA9PSBiLnByb3BlcnRpZXMKLSAgICAgICAg
JiYgYS5saW5rTWF0Y2hUeXBlID09IGIubGlua01hdGNoVHlwZQotICAgICAgICAmJiBhLmFsbG93
bGlzdFR5cGUgPT0gYi5hbGxvd2xpc3RUeXBlCi0gICAgICAgICYmIGEuc3R5bGVTY29wZU9yZGlu
YWwgPT0gYi5zdHlsZVNjb3BlT3JkaW5hbAotICAgICAgICAmJiBhLmZyb21TdHlsZUF0dHJpYnV0
ZSA9PSBiLmZyb21TdHlsZUF0dHJpYnV0ZQotICAgICAgICAmJiBhLmNhc2NhZGVMYXllclByaW9y
aXR5ID09IGIuY2FzY2FkZUxheWVyUHJpb3JpdHk7Ci19CiAKLWlubGluZSBib29sIG9wZXJhdG9y
IT0oY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIGEsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiBi
KQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE1hdGNoUmVzdWx0JikgY29uc3QgPSBkZWZhdWx0OworfTsKIAogaW5saW5lIHZvaWQgYWRkKEhh
c2hlciYgaGFzaGVyLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYgbWF0Y2hlZFByb3BlcnRpZXMp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4
IDcyNjhiNGQ4MjEyMDJjMzdlZWMyMTM0MmExNmQ4OWQzYTA3ZThkNjYuLjgzMjQ5ZjhiMWI4ZTYx
NGM5YTFhMWI0MzZlMTcxMDg5Yjk0ZjgzZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0yNjgsOCArMjY4LDggQEAgaW5saW5lIFRhYlNpemUg
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRhYlNpemUoY29uc3QgQnVpbGRlclN0YXRlJiBidWls
ZGVyU3RhdGUKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCi0g
ICAgICAgIHJldHVybiBUYWJTaXplKHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoKSwgU3BhY2VW
YWx1ZVR5cGUpOwotICAgIHJldHVybiBUYWJTaXplKHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5n
dGg8ZmxvYXQ+KGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpLCBMZW5n
dGhWYWx1ZVR5cGUpOworICAgICAgICByZXR1cm4geyBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVl
KCksIFRhYlNpemU6OlNwYWNlcyB9OworICAgIHJldHVybiB7IHByaW1pdGl2ZVZhbHVlLmNvbXB1
dGVMZW5ndGg8ZmxvYXQ+KGJ1aWxkZXJTdGF0ZS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkp
LCBUYWJTaXplOjpMZW5ndGggfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTQxNyw3
ICs0MTcsNyBAQCBpbmxpbmUgTGVuZ3RoUG9pbnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBv
c2l0aW9uKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLAogICAgIExlbmd0aCBsZW5ndGhYID0g
Y29udmVydFBvc2l0aW9uQ29tcG9uZW50PENTU1ZhbHVlTGVmdCwgQ1NTVmFsdWVSaWdodD4oYnVp
bGRlclN0YXRlLCAqcGFpci0+Zmlyc3QoKSk7CiAgICAgTGVuZ3RoIGxlbmd0aFkgPSBjb252ZXJ0
UG9zaXRpb25Db21wb25lbnQ8Q1NTVmFsdWVUb3AsIENTU1ZhbHVlQm90dG9tPihidWlsZGVyU3Rh
dGUsICpwYWlyLT5zZWNvbmQoKSk7CiAKLSAgICByZXR1cm4gTGVuZ3RoUG9pbnQobGVuZ3RoWCwg
bGVuZ3RoWSk7CisgICAgcmV0dXJuIHsgbGVuZ3RoWCwgbGVuZ3RoWSB9OwogfQogCiBpbmxpbmUg
TGVuZ3RoUG9pbnQgQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uT3JBdXRvKEJ1aWxk
ZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC00MjcsNyAr
NDI3LDcgQEAgaW5saW5lIExlbmd0aFBvaW50IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3Np
dGlvbk9yQXV0byhCdWlsZGVyU3RhdGUmIGJ1aWxkZXIKICAgICBpZiAocHJpbWl0aXZlVmFsdWUu
aXNQYWlyKCkpCiAgICAgICAgIHJldHVybiBjb252ZXJ0UG9zaXRpb24oYnVpbGRlclN0YXRlLCB2
YWx1ZSk7CiAKLSAgICByZXR1cm4gTGVuZ3RoUG9pbnQoTGVuZ3RoKExlbmd0aFR5cGU6OkF1dG8p
LCBMZW5ndGgoTGVuZ3RoVHlwZTo6QXV0bykpOworICAgIHJldHVybiB7IHsgTGVuZ3RoVHlwZTo6
QXV0byB9LCB7IExlbmd0aFR5cGU6OkF1dG8gfSB9OwogfQogCiBpbmxpbmUgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uTGluZT4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9u
KEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggZTAxOTE4ZDAwNDIwZTczZjZlYWY1NzQyMjI1
NjlmNGZlNzZkM2U2Zi4uMmMwMmIzMDUzMjY4OTkyMmRiYTFjMTJjYTE4OGY3NTM1NDEyMWM3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTk1Niw3ICs5
NTYsNyBAQCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1Zh
bHVlKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLAogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBjb2xvciA9IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLmNvbG9yKCk7CiAKLSAgICAgICAgYXV0byBz
aGFkb3dEYXRhID0gbWFrZVVuaXF1ZTxTaGFkb3dEYXRhPihMZW5ndGhQb2ludCh4LCB5KSwgYmx1
ciwgc3ByZWFkLCBzaGFkb3dTdHlsZSwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCb3hT
aGFkb3csIGNvbG9yLmlzVmFsaWQoKSA/IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50QmxhY2sp
OworICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBtYWtlVW5pcXVlPFNoYWRvd0RhdGE+KExlbmd0
aFBvaW50IHsgeCwgeSB9LCBibHVyLCBzcHJlYWQsIHNoYWRvd1N0eWxlLCBwcm9wZXJ0eSA9PSBD
U1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xv
cjo6dHJhbnNwYXJlbnRCbGFjayk7CiAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0
eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRUZXh0U2hh
ZG93KFdURk1vdmUoc2hhZG93RGF0YSksICFpc0ZpcnN0RW50cnkpOyAvLyBhZGQgdG8gdGhlIGxp
c3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5CiAgICAgICAgIGVsc2UKQEAgLTE1ODUs
NyArMTU4NSw3IEBAIGlubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50
KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1CiAgICAgICAgICAgICBDU1NWYWx1
ZUlEIGxpc3RTdHlsZUlkZW50ID0gY291bnRlclZhbHVlLT5saXN0U3R5bGVJZGVudCgpOwogICAg
ICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50ICE9IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAg
ICAgICBsaXN0U3R5bGVUeXBlID0gc3RhdGljX2Nhc3Q8TGlzdFN0eWxlVHlwZT4obGlzdFN0eWxl
SWRlbnQgLSBDU1NWYWx1ZURpc2MpOwotICAgICAgICAgICAgYXV0byBjb3VudGVyID0gbWFrZVVu
aXF1ZTxDb3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHls
ZVR5cGUsIGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOworICAgICAgICAgICAgYXV0byBjb3Vu
dGVyID0gbWFrZVVuaXF1ZTxDb3VudGVyQ29udGVudD4oQ291bnRlckNvbnRlbnQgeyBjb3VudGVy
VmFsdWUtPmlkZW50aWZpZXIoKSwgbGlzdFN0eWxlVHlwZSwgY291bnRlclZhbHVlLT5zZXBhcmF0
b3IoKSB9KTsKICAgICAgICAgICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldENvbnRlbnQoV1RG
TW92ZShjb3VudGVyKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAg
ICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCmluZGV4IGM0OGJkMjRkNWE0YjQy
MmViNWJjYjE4ZTlhNTM3MGYzNmYyZDc5NDAuLmM3OTdkMzRlZWVhZDFkMDgwMDk0ODUyNzUwNWMx
ZWRkY2M2MWViYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCkBAIC02MCwxMiArNjAsNyBA
QCBzdHJ1Y3QgU3R5bGVhYmxlIHsKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZWFi
bGUmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICgmZWxlbWVudCA9PSAmb3Ro
ZXIuZWxlbWVudCAmJiBwc2V1ZG9JZCA9PSBvdGhlci5wc2V1ZG9JZCk7Ci0gICAgfQotCi0gICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlYWJsZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgICAgIHJldHVybiAmZWxlbWVudCA9
PSAmb3RoZXIuZWxlbWVudCAmJiBwc2V1ZG9JZCA9PSBvdGhlci5wc2V1ZG9JZDsKICAgICB9CiAK
ICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoVmFsdWUuaAppbmRleCA0NDhiOTRmYzY1ODg0NDE0NGVlOGMzNDhlMTZlZTZmNGNhMWNhOGMz
Li44YWY2ZDkyY2JiYzI2ZDliZjBmZTg0MzE5NWIzNTVhMTk0NmJiM2ZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoVmFsdWUuaApAQCAtOTEsMjIgKzkxLDE0IEBAIHB1YmxpYzoKIAogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKGNvbnN0IFNWR0xlbmd0aENv
bnRleHQmLCBTVkdMZW5ndGhUeXBlKTsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYpIGNvbnN0ID0gZGVmYXVsdDsKKwogcHJpdmF0ZToKICAgICBmbG9hdCBtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0cyB7IDAgfTsKICAgICBTVkdMZW5ndGhUeXBlIG1fbGVuZ3RoVHlw
ZSB7IFNWR0xlbmd0aFR5cGU6Ok51bWJlciB9OwogICAgIFNWR0xlbmd0aE1vZGUgbV9sZW5ndGhN
b2RlIHsgU1ZHTGVuZ3RoTW9kZTo6T3RoZXIgfTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGEsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBiKQotewot
ICAgIHJldHVybiBhLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID09IGIudmFsdWVJblNwZWNpZmll
ZFVuaXRzKCkgJiYgYS5sZW5ndGhUeXBlKCkgPT0gYi5sZW5ndGhUeXBlKCkgJiYgYS5sZW5ndGhN
b2RlKCkgPT0gYi5sZW5ndGhNb2RlKCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgU1ZHTGVuZ3RoVmFsdWUmIGEsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBiKQotewotICAgIHJl
dHVybiBhLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpICE9IGIudmFsdWVJblNwZWNpZmllZFVuaXRz
KCkgfHwgYS5sZW5ndGhUeXBlKCkgIT0gYi5sZW5ndGhUeXBlKCkgfHwgYS5sZW5ndGhNb2RlKCkg
IT0gYi5sZW5ndGhNb2RlKCk7Ci19Ci0KIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBjb25zdCBTVkdMZW5ndGhWYWx1ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5dGVTdHJlYW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5oCmluZGV4IDlhYzhjNTUx
NmUwYmViNTA2ZDUwZGQxMDkyMDY1NmM5NzVlMjEzZmUuLmNjNmZmYmUyOGM0MDJlOGE4M2M4MTNi
NDc1ZTFiOWYxNmIxODFjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
Qnl0ZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbS5o
CkBAIC04MSw4ICs4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0K
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdQYXRoQnl0ZVN0cmVhbSYgb3RoZXIpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YSA9PSBvdGhlci5tX2RhdGE7IH0KLSAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgU1ZHUGF0aEJ5dGVTdHJlYW0mIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdQYXRoQnl0ZVN0cmVh
bSYpIGNvbnN0ID0gZGVmYXVsdDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdQYXRoQnl0ZVN0
cmVhbT4gY29weSgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L2FuaW1hdGlvbi9TTUlMVGltZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TTUlM
VGltZS5oCmluZGV4IGZmMDY0NmNjMzkwYjdkMzY0ZDM3ZmZlNzI5MmQ5YWY2ODk2NGQ1Y2YuLmM2
YTJkNTVkNDhhMjgzZGExYzI3ZDliNWM3YTc0MDI3YmQ1ZTc4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NNSUxUaW1lLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaXNGaW5pdGUoKSBjb25zdCB7IHJldHVybiBtX3RpbWUgPCBpbmRlZmluaXRlVmFsdWU7IH0K
ICAgICBib29sIGlzSW5kZWZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZSA9PSBpbmRlZmlu
aXRlVmFsdWU7IH0KICAgICBib29sIGlzVW5yZXNvbHZlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZSA9PSB1bnJlc29sdmVkVmFsdWU7IH0KLSAgICAKKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29u
c3QgZG91YmxlIHVucmVzb2x2ZWRWYWx1ZTsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIGluZGVm
aW5pdGVWYWx1ZTsKQEAgLTgzLDEyICs4Myw4IEBAIHByaXZhdGU6CiAKIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU01JTFRpbWUmIGEsIGNvbnN0IFNNSUxUaW1lJiBiKSB7IHJldHVybiBh
LmlzRmluaXRlKCkgJiYgYS52YWx1ZSgpID09IGIudmFsdWUoKTsgfQogaW5saW5lIGJvb2wgb3Bl
cmF0b3IhKGNvbnN0IFNNSUxUaW1lJiBhKSB7IHJldHVybiAhYS5pc0Zpbml0ZSgpIHx8ICFhLnZh
bHVlKCk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU01JTFRpbWUmIGEsIGNvbnN0
IFNNSUxUaW1lJiBiKSB7IHJldHVybiAhb3BlcmF0b3I9PShhLCBiKTsgfQotaW5saW5lIGJvb2wg
b3BlcmF0b3I+KGNvbnN0IFNNSUxUaW1lJiBhLCBjb25zdCBTTUlMVGltZSYgYikgeyByZXR1cm4g
YS52YWx1ZSgpID4gYi52YWx1ZSgpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgU01J
TFRpbWUmIGEsIGNvbnN0IFNNSUxUaW1lJiBiKSB7IHJldHVybiBhLnZhbHVlKCkgPCBiLnZhbHVl
KCk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgU01JTFRpbWUmIGEsIGNvbnN0IFNN
SUxUaW1lJiBiKSB7IHJldHVybiBhLnZhbHVlKCkgPiBiLnZhbHVlKCkgfHwgb3BlcmF0b3I9PShh
LCBiKTsgfQotaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBTTUlMVGltZSYgYSwgY29uc3Qg
U01JTFRpbWUmIGIpIHsgcmV0dXJuIGEudmFsdWUoKSA8IGIudmFsdWUoKSB8fCBvcGVyYXRvcj09
KGEsIGIpOyB9Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgU01JTFRpbWVXaXRoT3JpZ2lu
JiBhLCBjb25zdCBTTUlMVGltZVdpdGhPcmlnaW4mIGIpIHsgcmV0dXJuIGEudGltZSgpIDwgYi50
aW1lKCk7IH0KK2lubGluZSBhdXRvIG9wZXJhdG9yPD0+KGNvbnN0IFNNSUxUaW1lJiBhLCBjb25z
dCBTTUlMVGltZSYgYikgeyByZXR1cm4gYS52YWx1ZSgpIDw9PiBiLnZhbHVlKCk7IH0KK2lubGlu
ZSBhdXRvIG9wZXJhdG9yPD0+KGNvbnN0IFNNSUxUaW1lV2l0aE9yaWdpbiYgYSwgY29uc3QgU01J
TFRpbWVXaXRoT3JpZ2luJiBiKSB7IHJldHVybiBhLnRpbWUoKSA8PT4gYi50aW1lKCk7IH0KIAog
U01JTFRpbWUgb3BlcmF0b3IrKGNvbnN0IFNNSUxUaW1lJiwgY29uc3QgU01JTFRpbWUmKTsKIFNN
SUxUaW1lIG9wZXJhdG9yLShjb25zdCBTTUlMVGltZSYsIGNvbnN0IFNNSUxUaW1lJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMzVhNjZlMDk1ZTc1YTEzNDc5YzdiMWM1
NjJjZTExOTFhYjFlZTE5NC4uNjU1YTc5ODk4YzJmYzU3YWI2M2Y0YzMzOGEzZjY3Yjk2N2IzYzY3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjQ5MCw3ICs2NDkwLDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFTZXNzaW9uQ29vcmRp
bmF0b3JDb21tYW5kc1Nob3VsZEZhaWwoYm8KIH0KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VT
U0lPTikKIAotY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdHJpbmcoUGFydGlhbE9yZGVyaW5nIG9y
ZGVyaW5nKQorY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdHJpbmcoc3RkOjpwYXJ0aWFsX29yZGVy
aW5nIG9yZGVyaW5nKQogewogICAgIGlmIChpc19sdChvcmRlcmluZykpCiAgICAgICAgIHJldHVy
biAibGVzcyJfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAppbmRleCA1
Zjg1NDVlYmE1YjBlN2I4YmJhYmE1YzY5M2MyYTQzNDE4OGIyYmE5Li5iNmQ4ZDRiMDQxZTU1MWE4
NTE0ZWJhMmE4MDdhNzY1Y2JmOWZjNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NjcmlwdEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuY3BwCkBAIC03OCw5ICs3OCw0IEBAIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRC
dWZmZXImIGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKICAgICByZXR1cm4gKmEuYnVmZmVyKCkg
PT0gKmIuYnVmZmVyKCk7CiB9CiAKLWJvb2wgb3BlcmF0b3IhPShjb25zdCBTY3JpcHRCdWZmZXIm
IGEsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgYikKLXsKLSAgICByZXR1cm4gIShhID09IGIpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIu
aAppbmRleCBmZDJjMWFlMmY2M2I2MGQ3NGMzMGQyNDJhOTg5YTBiZmQ5MWRlNDk0Li42ODJhYTI2
M2RmZWI2Y2JlYWQzMWQ5ZTRjZTNmZDNkMDYzNGZkMGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
U2NyaXB0QnVmZmVyLmgKQEAgLTYyLDYgKzYyLDUgQEAgcHJpdmF0ZToKIH07CiAKIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKLWJvb2wg
b3BlcmF0b3IhPShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oCmluZGV4
IDcyNWE4M2FjMjEwYWZmYjEyOWMwZTU4NjE4NmUxOWJlMmQwNzgxNTIuLjNmNDQ3YWQyZGNhNDY4
NmFkMDlhOGFmMmJkNTllZWM0ODRlOTNlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
LmgKQEAgLTM1LDYgKzM1LDggQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciB7CiAgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
cjsKICAgICBTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JJZGVudGlmaWVyOwogCisgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYpIGNv
bnN0ID0gZGVmYXVsdDsKKwogICAgIFN0cmluZyBsb2dnaW5nU3RyaW5nKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBjb25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkgKyAi
LSIgKyBqb2JJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKTsKQEAgLTQ0LDExICs0Niw2IEBAIHN0
cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgewogICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBhLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImIGIpCi17Ci0gICAgcmV0dXJuIGEuY29ubmVjdGlvbklkZW50aWZp
ZXIgPT0gYi5jb25uZWN0aW9uSWRlbnRpZmllciAmJiBhLmpvYklkZW50aWZpZXIgPT0gYi5qb2JJ
ZGVudGlmaWVyOwotfQotCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCmluZGV4IDk2Y2RiM2E4MjI4NjYxY2FlYWFlY2Iz
N2NlZjYwMjJhNDBhMDUyMmQuLjFiODZkNDJhM2RhOTI4NGU5M2RlZGExOWE3YjYyMGQ4Y2YyMDhm
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKQEAgLTU1LDExICs1NSw2IEBAIHVu
c2lnbmVkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6Omhhc2goKSBjb25zdAogICAgIHJl
dHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnkoaGFzaGVzLCBzaXplb2YoaGFzaGVzKSk7CiB9
CiAKLWJvb2wgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6b3BlcmF0b3I9PShjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4g
bV90b3BPcmlnaW4gPT0gb3RoZXIubV90b3BPcmlnaW4gJiYgbV9zY29wZSA9PSBvdGhlci5tX3Nj
b3BlOwotfQotCiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXk6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKICAgICByZXR1cm4geyBtX3Rv
cE9yaWdpbi5pc29sYXRlZENvcHkoKSwgbV9zY29wZS5pc29sYXRlZENvcHkoKSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LmgKaW5kZXggZDMyZjRkOWZhN2FiZDk5MjMzOTY2ZDUzY2E4Njc4ZjZk
MDczYTJjMC4uZjk0Mjk0YTdiNTc1NjRmZWI2MDVkYzE1ZTc5ODAzOWI4YzQ3YTZiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleS5oCkBAIC00MCw4ICs0MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBlbXB0eUtleSgpOwogICAgIHVuc2lnbmVk
IGhhc2goKSBjb25zdDsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSkgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBr
ZXkpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmKSBjb25zdCA9IGRlZmF1bHQ7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gKnRoaXMgPT0gZW1wdHlLZXkoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNNYXRj
aGluZyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGll
bnRVUkwpIGNvbnN0OwogICAgIGJvb2wgb3JpZ2luSXNNYXRjaGluZyhjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAyMDFkMWFmZGY3MzJl
MmJjZjBmNThkYTMxMDAyNDA4YmI3YWFhYTZhLi5iMjZkNjQyN2QzOGY1NzM0YWM1NjlkMmU3NmE1
Y2MwYTU5MGU3N2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcApAQCAtOTAsMjEgKzkwLDYgQEAgU2Vjb25kcyBPcGVyYXRpbmdEYXRlOjpzZWNvbmRzU2lu
Y2VFcG9jaCgpIGNvbnN0CiAgICAgcmV0dXJuIFNlY29uZHMgeyBkYXRlVG9EYXlzRnJvbTE5NzAo
bV95ZWFyLCBtX21vbnRoLCBtX21vbnRoRGF5KSAqIHNlY29uZHNQZXJEYXkgfTsKIH0KIAotYm9v
bCBPcGVyYXRpbmdEYXRlOjpvcGVyYXRvcj09KGNvbnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBj
b25zdAotewotICAgIHJldHVybiBtX21vbnRoRGF5ID09IG90aGVyLm1fbW9udGhEYXkgJiYgbV9t
b250aCA9PSBvdGhlci5tX21vbnRoICYmIG1feWVhciA9PSBvdGhlci5tX3llYXI7Ci19Ci0KLWJv
b2wgT3BlcmF0aW5nRGF0ZTo6b3BlcmF0b3I8KGNvbnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBj
b25zdAotewotICAgIHJldHVybiBzZWNvbmRzU2luY2VFcG9jaCgpIDwgb3RoZXIuc2Vjb25kc1Np
bmNlRXBvY2goKTsKLX0KLQotYm9vbCBPcGVyYXRpbmdEYXRlOjpvcGVyYXRvcjw9KGNvbnN0IE9w
ZXJhdGluZ0RhdGUmIG90aGVyKSBjb25zdAotewotICAgIHJldHVybiBzZWNvbmRzU2luY2VFcG9j
aCgpIDw9IG90aGVyLnNlY29uZHNTaW5jZUVwb2NoKCk7Ci19Ci0KIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSYgc3RvcmUsIFN1c3BlbmRhYmxlV29ya1F1ZXVlJiB3b3JrUXVldWUsIFNo
b3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCkKICAgICA6IG1fc3Rv
cmUoc3RvcmUpCiAgICAgLCBtX3dvcmtRdWV1ZSh3b3JrUXVldWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMWEzYjA4YmY3M2UxNGZjN2NlMGE2NTdkZTU4
M2Y5ZjIyZDRhYTgyMi4uOTczNGEwYTZkZmQ2NTM5YzgzOGQ1MDhjMDQ5NTA3MDQzNDBkZjAzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNjEsOSArNjEs
NyBAQCBwdWJsaWM6CiAgICAgaW50IG1vbnRoKCkgY29uc3QgeyByZXR1cm4gbV9tb250aDsgfQog
ICAgIGludCBtb250aERheSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9udGhEYXk7IH0KIAotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29uc3Q7Ci0gICAgYm9v
bCBvcGVyYXRvcjwoY29uc3QgT3BlcmF0aW5nRGF0ZSYgb3RoZXIpIGNvbnN0OwotICAgIGJvb2wg
b3BlcmF0b3I8PShjb25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29uc3Q7CisgICAgZnJpZW5k
IGF1dG8gb3BlcmF0b3I8PT4oT3BlcmF0aW5nRGF0ZSwgT3BlcmF0aW5nRGF0ZSkgPSBkZWZhdWx0
OwogICAgIAogICAgIE9wZXJhdGluZ0RhdGUoaW50IHllYXIsIGludCBtb250aCwgaW50IG1vbnRo
RGF5KQogICAgICAgICA6IG1feWVhcih5ZWFyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmgKaW5kZXggYTEwYTE2MGQ1YTQ2OWU0
NTJmZjNkNjc1MGRjNjFmOWZmN2NhODdlNC4uYWI3NzQ5Zjk3YTAzYzZlNGVmNGI2OTA2MGRlZGFk
NWFkODk0YWYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVLZXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUtleS5oCkBAIC04Niw3ICs4Niw2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxLZXk+IGRlY29kZShXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyJik7
CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgS2V5JikgY29uc3Q7Ci0gICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEtleSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OyB9CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIFN0cmluZyBoYXNoQXNTdHJpbmcoY29uc3QgSGFz
aFR5cGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1N0cmluZ1Jl
ZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmgK
aW5kZXggNTZiMWRkMDAxYzZmMTQ1ZWI2MDA1MGFjZWYzYjZjODEyZDk5NmYwZC4uMmM1MGUxYTVl
YjEzZmM5NjlmZTFiY2M2MWFiN2QzMjVlMzQ5Y2RiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvU3RyaW5nUmVmZXJlbmNlLmgKQEAgLTg0LDExICs4NCw2IEBAIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nUmVmZXJlbmNlJiBhLCBjb25zdCBTdHJpbmdSZWZlcmVu
Y2UmIGIpCiAgICAgcmV0dXJuIGEuc2l6ZSgpID09IGIuc2l6ZSgpICYmICFtZW1jbXAoYS5kYXRh
KCksIGIuZGF0YSgpLCBhLnNpemUoKSk7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgU3RyaW5nUmVmZXJlbmNlJiBhLCBjb25zdCBTdHJpbmdSZWZlcmVuY2UmIGIpCi17Ci0gICAg
cmV0dXJuICEoYSA9PSBiKTsKLX0KLQogaW5saW5lIGJvb2wgU3RyaW5nUmVmZXJlbmNlOjpIYXNo
OjplcXVhbChjb25zdCBTdHJpbmdSZWZlcmVuY2UmIGEsIGNvbnN0IFN0cmluZ1JlZmVyZW5jZSYg
YikKIHsKICAgICByZXR1cm4gYSA9PSBiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvV0tHZW9tZXRyeS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tHZW9t
ZXRyeS5oCmluZGV4IGM4MmNlZGUyMTRiYjE5YmJjNWY0YzQ5YzIyNTk3NTdmMDY2YzU5MmUuLjNi
YWM5OTlkMDkyZGU1YzBjNzQzYjJhZmZlY2Y4YjA2MDliMzY4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS0dlb21ldHJ5LmgKQEAgLTM1LDYgKzM1LDkgQEAgZXh0ZXJuICJDIiB7CiBz
dHJ1Y3QgV0tQb2ludCB7CiAgICAgZG91YmxlIHg7CiAgICAgZG91YmxlIHk7CisjaWZkZWYgX19j
cGx1c3BsdXMKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgV0tQb2ludCYpIGNvbnN0ID0gZGVm
YXVsdDsKKyNlbmRpZgogfTsKIHR5cGVkZWYgc3RydWN0IFdLUG9pbnQgV0tQb2ludDsKIApAQCAt
OTEsMTEgKzk0LDYgQEAgV0tfRVhQT1JUIFdLUmVjdCBXS1JlY3RHZXRWYWx1ZShXS1JlY3RSZWYg
cmVjdCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFdLUG9pbnQmIGEsIGNvbnN0IFdLUG9pbnQmIGIpCi17Ci0gICAgcmV0dXJuIGEueCA9
PSBiLnggJiYgYS55ID09IGIueTsKLX0KICNlbmRpZgogCiAjZW5kaWYgLyogV0tHZW9tZXRyeV9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9DYWxsYmFja0lELmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9DYWxsYmFja0lELmgKaW5kZXggMTZlMjk2ZDU1MTBhNzBjOTBlYTA1
MTdjYThmYTc3NzM4YWZlM2E1Ny4uOGJkMzA4MTBmZGRkZDg4YjNjZmQzZTMxYmY5MDM5ZjVjYjNi
NzUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ2FsbGJhY2tJRC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NhbGxiYWNrSUQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ2FsbGJhY2tJRCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faWQgPT0gb3RoZXIubV9p
ZDsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWxsYmFja0lEJikgY29uc3QgPSBkZWZh
dWx0OwogCiAgICAgdWludDY0X3QgdG9JbnRlZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQog
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gaXNWYWxpZENh
bGxiYWNrSUQobV9pZCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xheWVy
VHJlZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTGF5ZXJUcmVlQ29udGV4dC5j
cHAKaW5kZXggOWI2MjJmNWI0MDdhNmM5ZDNjNWJlZWQxNjFhMzRlNWQ2NjQ5ZWZlYS4uY2ZhNWMz
N2VkNDdhZDI0MDcwYjg4YzdmZWNkZjUzMzI5NTkxYTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvTGF5ZXJUcmVlQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvTGF5ZXJUcmVlQ29udGV4dC5jcHAKQEAgLTU5LDkgKzU5LDQgQEAgYm9vbCBMYXllclRyZWVD
b250ZXh0Ojppc0VtcHR5KCkgY29uc3QKICAgICByZXR1cm4gIWNvbnRleHRJRDsKIH0KIAotYm9v
bCBvcGVyYXRvcj09KGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGEsIGNvbnN0IExheWVyVHJlZUNv
bnRleHQmIGIpCi17Ci0gICAgcmV0dXJuIGEuY29udGV4dElEID09IGIuY29udGV4dElEOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0xheWVyVHJlZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xheWVyVHJlZUNvbnRl
eHQuaAppbmRleCA3NjAxMzAwYjM5NDhlODc4OGM5NTRjZDE1YTEzOWMxOGNjNjE3ZjRlLi4xMTAz
NjkyOGUyOTIxYTY3NWQ4MmUyZWY0NzUzODVmYjIyOGRkMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9MYXllclRyZWVDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvTGF5ZXJUcmVlQ29udGV4dC5oCkBAIC01MiwxNiArNTIsMTEgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYpIGNvbnN0ID0gZGVmYXVsdDsKKwogICAgIHVpbnQ2NF90IGNvbnRleHRJRDsK
IH07CiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBMYXllclRyZWVDb250ZXh0JiwgY29uc3QgTGF5
ZXJUcmVlQ29udGV4dCYpOwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExheWVyVHJl
ZUNvbnRleHQmIGEsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGIpCi17Ci0gICAgcmV0dXJuICEo
YSA9PSBiKTsKLX0KLQogfQogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL01vbm90b25pY09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL01vbm90b25pY09iamVjdElkZW50aWZpZXIuaAppbmRleCA0Y2VkODg2YThlMGVlYWUz
YTRlNjc5ODBhNWJhZTkyOTdiYTIwZjE3Li5iZTE0YzdjOTAzOTgxOGRkM2U3NTVhYjM0ZDhkNmUz
NmU1YjM5ZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Nb25vdG9uaWNPYmpl
Y3RJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTW9ub3RvbmljT2JqZWN0
SWRlbnRpZmllci5oCkBAIC02MCwzNSArNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBN
b25vdG9uaWNPYmplY3RJZGVudGlmaWVyIHsgKmlkZW50aWZpZXIgfTsKICAgICB9CiAKLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTW9ub3RvbmljT2JqZWN0SWRlbnRpZmllciYgb3RoZXIpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyID09IG90aGVyLm1faWRlbnRp
ZmllcjsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPihjb25zdCBNb25vdG9uaWNPYmplY3RJ
ZGVudGlmaWVyJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkZW50aWZp
ZXIgPiBvdGhlci5tX2lkZW50aWZpZXI7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj49KGNv
bnN0IE1vbm90b25pY09iamVjdElkZW50aWZpZXImIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1faWRlbnRpZmllciA+PSBvdGhlci5tX2lkZW50aWZpZXI7Ci0gICAgfQotCi0g
ICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgTW9ub3RvbmljT2JqZWN0SWRlbnRpZmllciYgb3RoZXIp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pZGVudGlmaWVyIDwgb3RoZXIubV9pZGVu
dGlmaWVyOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBNb25vdG9uaWNPYmpl
Y3RJZGVudGlmaWVyJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkZW50
aWZpZXIgPD0gb3RoZXIubV9pZGVudGlmaWVyOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBNb25vdG9uaWNPYmplY3RJZGVudGlmaWVyJiBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2lkZW50aWZpZXIgIT0gb3RoZXIubV9pZGVudGlmaWVyOwotICAgIH0K
KyAgICBmcmllbmQgYXV0byBvcGVyYXRvcjw9PihNb25vdG9uaWNPYmplY3RJZGVudGlmaWVyLCBN
b25vdG9uaWNPYmplY3RJZGVudGlmaWVyKSA9IGRlZmF1bHQ7CiAKICAgICBNb25vdG9uaWNPYmpl
Y3RJZGVudGlmaWVyJiBpbmNyZW1lbnQoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1Njcm9sbGluZ0FjY2VsZXJhdGlvbkN1cnZlLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9TY3JvbGxpbmdBY2NlbGVyYXRpb25DdXJ2ZS5oCmluZGV4IDIwYTA1ZThjY2MyNzI3YTNk
ZTAxYzU1M2Q0YmEyNjBiOTMwZTZkODEuLmUzOWFmYzk0MDg2M2JiOGNmM2ZkYTE3NzE0YjRhM2I4
OGY3MzI3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Njcm9sbGluZ0FjY2Vs
ZXJhdGlvbkN1cnZlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Nyb2xsaW5nQWNjZWxl
cmF0aW9uQ3VydmUuaApAQCAtNTMsMTkgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZW5jb2Rl
KElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNjcm9sbGlu
Z0FjY2VsZXJhdGlvbkN1cnZlPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAKLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU2Nyb2xsaW5nQWNjZWxlcmF0aW9uQ3VydmUmIG90aGVyKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcGFyYW1ldGVycy5nYWluTGluZWFyID09IG90aGVyLm1f
cGFyYW1ldGVycy5nYWluTGluZWFyCi0gICAgICAgICAgICAmJiBtX3BhcmFtZXRlcnMuZ2FpblBh
cmFib2xpYyA9PSBvdGhlci5tX3BhcmFtZXRlcnMuZ2FpblBhcmFib2xpYwotICAgICAgICAgICAg
JiYgbV9wYXJhbWV0ZXJzLmdhaW5DdWJpYyA9PSBvdGhlci5tX3BhcmFtZXRlcnMuZ2FpbkN1Ymlj
Ci0gICAgICAgICAgICAmJiBtX3BhcmFtZXRlcnMuZ2FpblF1YXJ0aWMgPT0gb3RoZXIubV9wYXJh
bWV0ZXJzLmdhaW5RdWFydGljCi0gICAgICAgICAgICAmJiBtX3BhcmFtZXRlcnMudGFuZ2VudFNw
ZWVkTGluZWFyID09IG90aGVyLm1fcGFyYW1ldGVycy50YW5nZW50U3BlZWRMaW5lYXIKLSAgICAg
ICAgICAgICYmIG1fcGFyYW1ldGVycy50YW5nZW50U3BlZWRQYXJhYm9saWNSb290ID09IG90aGVy
Lm1fcGFyYW1ldGVycy50YW5nZW50U3BlZWRQYXJhYm9saWNSb290Ci0gICAgICAgICAgICAmJiBt
X3BhcmFtZXRlcnMucmVzb2x1dGlvbiA9PSBvdGhlci5tX3BhcmFtZXRlcnMucmVzb2x1dGlvbgot
ICAgICAgICAgICAgJiYgbV9wYXJhbWV0ZXJzLmZyYW1lUmF0ZSA9PSBvdGhlci5tX3BhcmFtZXRl
cnMuZnJhbWVSYXRlOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTY3JvbGxp
bmdBY2NlbGVyYXRpb25DdXJ2ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNjcm9sbGluZ0FjY2VsZXJhdGlvbkN1
cnZlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzID09IG90aGVyLm1fcGFyYW1l
dGVyczsgfQogICAgIAogcHJpdmF0ZToKICAgICBmcmllbmQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgU2Nyb2xsaW5nQWNjZWxlcmF0aW9uQ3VydmUmKTsKQEAgLTc0
LDcgKzYyLDcgQEAgcHJpdmF0ZToKIAogICAgIGZsb2F0IGV2YWx1YXRlUXVhcnRpYyhmbG9hdCkg
Y29uc3Q7CiAKLSAgICBzdHJ1Y3QgeworICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKICAgICAgICAg
ZmxvYXQgZ2FpbkxpbmVhciB7IDAgfTsKICAgICAgICAgZmxvYXQgZ2FpblBhcmFib2xpYyB7IDAg
fTsKICAgICAgICAgZmxvYXQgZ2FpbkN1YmljIHsgMCB9OwpAQCAtODYsNiArNzQsOCBAQCBwcml2
YXRlOgogICAgICAgICAvLyBvZiB0aGUgY3VydmUsIGp1c3QgcmVxdWlyZWQgdG8gdXNlIGl0OyB0
aGV5IHNob3VsZCBiZSBwbHVtYmVkIHNlcGFyYXRlbHkuCiAgICAgICAgIGZsb2F0IHJlc29sdXRp
b24geyAwIH07CiAgICAgICAgIGZsb2F0IGZyYW1lUmF0ZSB7IDAgfTsKKworICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUGFyYW1ldGVycyYpIGNvbnN0ID0gZGVmYXVsdDsKICAgICB9IG1f
cGFyYW1ldGVyczsKIAogICAgIHN0cnVjdCBDb21wdXRlZEludGVybWVkaWF0ZVZhbHVlcyB7CkBA
IC05Niw3ICs4Niw2IEBAIHByaXZhdGU6CiAgICAgICAgIGZsb2F0IGZhbGxvZmZTbG9wZSB7IDAg
fTsKICAgICAgICAgZmxvYXQgZmFsbG9mZkludGVyY2VwdCB7IDAgfTsKICAgICB9OwotCiAgICAg
c3RkOjpvcHRpb25hbDxDb21wdXRlZEludGVybWVkaWF0ZVZhbHVlcz4gbV9pbnRlcm1lZGlhdGVz
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRl
bURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuY3Bw
CmluZGV4IDE0MTM5ZDI0YzYwZjExMWJmNDg4YzVjNGY4YThkNjhkZWJkMTllYTUuLjk1YTYyMmUy
MGM1ODdjODE0YTM5ODVmYTEzZjhiNDM0NDc5ZTQyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0YS5jcHAKQEAgLTM1LDI1ICszNSwxOCBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvRWxlbWVudElubGluZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZW51
SXRlbUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxOYW1lcy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvSFRNTFBhcnNlcklkaW9tcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3Rh
dGljIEl0ZW1UeXBlIGl0ZW1UeXBlKGNvbnN0IFN0cmluZyYpCi17Ci0gICAgcmV0dXJuIEl0ZW1U
eXBlOjpCdXR0b247Ci19Ci0KIFRvdWNoQmFyTWVudUl0ZW1EYXRhOjpUb3VjaEJhck1lbnVJdGVt
RGF0YShjb25zdCBXZWJDb3JlOjpIVE1MTWVudUl0ZW1FbGVtZW50JiBlbGVtZW50KQorICAgIDog
aWRlbnRpZmllcihlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2ViQ29y
ZTo6SFRNTE5hbWVzOjppZEF0dHIpKQorICAgICwgcHJpb3JpdHkodmFsdWVPckRlZmF1bHQocGFy
c2VWYWxpZEhUTUxGbG9hdGluZ1BvaW50TnVtYmVyKGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihXZWJDb3JlOjpIVE1MTmFtZXM6OnZhbHVlQXR0cikpKSkKIHsKLSAgICB0
eXBlID0gaXRlbVR5cGUoZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdl
YkNvcmU6OkhUTUxOYW1lczo6dHlwZUF0dHIpKTsKLSAgICBpZGVudGlmaWVyID0gZWxlbWVudC5h
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6aWRBdHRy
KTsKLSAgICBwcmlvcml0eSA9IGVsZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihXZWJDb3JlOjpIVE1MTmFtZXM6OnZhbHVlQXR0cikudG9GbG9hdCgpOwogfQogCiB2b2lkIFRv
dWNoQmFyTWVudUl0ZW1EYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewotICAgIGVuY29kZXIgPDwgdHlwZTsKLSAgICAKICAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7
CiAgICAgZW5jb2RlciA8PCBwcmlvcml0eTsKIH0KQEAgLTYxLDE1ICs1NCwxMCBAQCB2b2lkIFRv
dWNoQmFyTWVudUl0ZW1EYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
c3RkOjpvcHRpb25hbDxUb3VjaEJhck1lbnVJdGVtRGF0YT4gVG91Y2hCYXJNZW51SXRlbURhdGE6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgVG91Y2hCYXJNZW51SXRlbURh
dGEgcmVzdWx0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnR5cGUpKQotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIAogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByaW9yaXR5KSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAKICAgICByZXR1cm4gc3RkOjptYWtlX29wdGlvbmFsKFdURk1vdmUo
cmVzdWx0KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RvdWNoQmFy
TWVudUl0ZW1EYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ub3VjaEJhck1lbnVJdGVtRGF0
YS5oCmluZGV4IDA1YzZkZGRiY2RiNWRlZjQ5MGJhYTYwNjUwZTU4YTVjNTI2NTVkZTYuLmUxNjk2
MGY4YTY1MjdlMWY5OTgzYjU5ZDNjZTgzN2I4Nzc5YTc1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1RvdWNoQmFyTWVudUl0ZW1EYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvVG91Y2hCYXJNZW51SXRlbURhdGEuaApAQCAtMjcsOCArMjcsNiBAQAogCiAjaWYgSEFW
RShUT1VDSF9CQVIpCiAKLSNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgPHd0
Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBJUEMgewpAQCAtNDIsNjggKzQwLDI0IEBAIGNsYXNzIEhUTUxNZW51SXRlbUVsZW1lbnQ7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAotLy8gQmFzZWQgb24gTlNUb3VjaEJhckl0ZW0g
dHlwZXMuCi1lbnVtIEl0ZW1UeXBlIHsKLSAgICBCdXR0b24KLX07Ci0KIHN0cnVjdCBUb3VjaEJh
ck1lbnVJdGVtRGF0YSB7Ci0gICAgZXhwbGljaXQgVG91Y2hCYXJNZW51SXRlbURhdGEoKSA9IGRl
ZmF1bHQ7CisgICAgVG91Y2hCYXJNZW51SXRlbURhdGEoKSA9IGRlZmF1bHQ7CiAgICAgZXhwbGlj
aXQgVG91Y2hCYXJNZW51SXRlbURhdGEoY29uc3QgV2ViQ29yZTo6SFRNTE1lbnVJdGVtRWxlbWVu
dCYpOwotICAgIAorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1E
YXRhJikgY29uc3QgPSBkZWZhdWx0OwogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFRvdWNoQmFyTWVudUl0ZW1EYXRhPiBkZWNv
ZGUoSVBDOjpEZWNvZGVyJik7CiAgICAgCi0gICAgSXRlbVR5cGUgdHlwZSB7IEl0ZW1UeXBlOjpC
dXR0b24gfTsKICAgICBTdHJpbmcgaWRlbnRpZmllcjsKLSAgICBmbG9hdCBwcmlvcml0eSB7IDAu
MCB9OwotICAgIGJvb2wgdmFsaWRUb3VjaEJhckRpc3BsYXkgeyB0cnVlIH07CisgICAgZG91Ymxl
IHByaW9yaXR5IHsgMC4wIH07CiB9OwotICAgIAotLy8gVG91Y2ggQmFyIE1lbnUgSXRlbXMgd2ls
bCBiZSBvcmRlcmVkIGJhc2VkIG9uIHByaW9yaXR5LgotaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiBsaHMsIGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRh
JiByaHMpCi17Ci0gICAgcmV0dXJuIGxocy5wcmlvcml0eSA8IHJocy5wcmlvcml0eTsKLX0KLQot
aW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiBsaHMsIGNv
bnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiByaHMpCi17Ci0gICAgcmV0dXJuIHJocyA8IGxoczsK
LX0KIAotaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYg
bGhzLCBjb25zdCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgcmhzKQotewotICAgIHJldHVybiAhKGxo
cyA+IHJocyk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgVG91Y2hCYXJNZW51
SXRlbURhdGEmIGxocywgY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIHJocykKLXsKLSAgICBy
ZXR1cm4gIShsaHMgPCByaHMpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRv
dWNoQmFyTWVudUl0ZW1EYXRhJiBsaHMsIGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiByaHMp
Ci17Ci0gICAgcmV0dXJuIGxocy50eXBlID09IHJocy50eXBlCi0gICAgICAgICYmIGxocy5pZGVu
dGlmaWVyID09IHJocy5pZGVudGlmaWVyCi0gICAgICAgICYmIGxocy5wcmlvcml0eSA9PSByaHMu
cHJpb3JpdHk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVG91Y2hCYXJNZW51
SXRlbURhdGEmIGxocywgY29uc3QgVG91Y2hCYXJNZW51SXRlbURhdGEmIHJocykKKy8vIFRvdWNo
IEJhciBNZW51IEl0ZW1zIHdpbGwgYmUgb3JkZXJlZCBiYXNlZCBvbiBwcmlvcml0eS4KK2NvbnN0
ZXhwciBhdXRvIG9wZXJhdG9yPD0+KGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJiBhLCBjb25z
dCBUb3VjaEJhck1lbnVJdGVtRGF0YSYgYikKIHsKLSAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsK
KyAgICByZXR1cm4gYS5wcmlvcml0eSA8PT4gYi5wcmlvcml0eTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYktpdDo6SXRlbVR5cGU+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAot
ICAgICAgICBXZWJLaXQ6Okl0ZW1UeXBlLAotICAgICAgICBXZWJLaXQ6Okl0ZW1UeXBlOjpCdXR0
b24KLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KICNlbmRpZiAvLyBIQVZFKFRP
VUNIX0JBUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VOZXR3b3Jr
UGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZU5ldHdvcmtQYXJhbWV0
ZXJzLmgKaW5kZXggNjExZDg4NTNhMzQ1MWYzNmJlNDgzZTJjZmM1NjMxZmJmYTY3NjgwNy4uMzY5
ZWM4NDNkNDQ5MTBhMzllOTlmMzUxNDI3ZDBkNjhmNmZiYjYyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzLmgKQEAgLTQ3LDkgKzQ3LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgOiBtX2F0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllci5pc0hhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSgpOyB9CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIG1f
YXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXIuaGFzaCgpOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1f
YXR0cmlidXRlZEJ1bmRsZUlkZW50aWZpZXIgPT0gb3RoZXIubV9hdHRyaWJ1dGVkQnVuZGxlSWRl
bnRpZmllcjsgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJQYWdlTmV0d29ya1BhcmFt
ZXRlcnMmKSBjb25zdCA9IGRlZmF1bHQ7CiAKICAgICBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZWRC
dW5kbGVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVkQnVuZGxlSWRlbnRp
ZmllcjsgfQorCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2F0dHJpYnV0ZWRCdW5kbGVJZGVudGlm
aWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1h
dFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
TWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJzb3IuY3BwCmluZGV4IDZhYTAyM2M2NjU2
MzQzMjViNzQ4YmIzZDc1NTg2MGQwOTQ3ZTBiNGUuLmZkNTcxYzMzNjEyZGM5MTRlYTUxNGI1NmYy
Y2JhNjAxZDhlZmZmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRp
YUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhU2FtcGxlQ3Vyc29yLmNwcApAQCAtMzA0
LDYgKzMwNCwxMSBAQCBPU1N0YXR1cyBNZWRpYVNhbXBsZUN1cnNvcjo6c3RlcEJ5UHJlc2VudGF0
aW9uVGltZShDTVRpbWUgdGltZSwgQm9vbGVhbiogd2FzUGlubgogICAgIHJldHVybiBzdGVwSW5Q
cmVzZW50YXRpb25UaW1lKFBBTDo6dG9NZWRpYVRpbWUodGltZSksICp3YXNQaW5uZWQpOwogfQog
CitzdGF0aWMgQ0ZDb21wYXJpc29uUmVzdWx0IG1ha2VDRkNvbXBhcmlzb25SZXN1bHQoc3RkOjpw
YXJ0aWFsX29yZGVyaW5nIG9yZGVyaW5nKQoreworICAgIHJldHVybiBpc19sdChvcmRlcmluZykg
PyBrQ0ZDb21wYXJlTGVzc1RoYW4gOiBpc19ndChvcmRlcmluZykgPyBrQ0ZDb21wYXJlR3JlYXRl
clRoYW4gOiBrQ0ZDb21wYXJlRXF1YWxUbzsKK30KKwogQ0ZDb21wYXJpc29uUmVzdWx0IE1lZGlh
U2FtcGxlQ3Vyc29yOjpjb21wYXJlSW5EZWNvZGVPcmRlcihNVFBsdWdpblNhbXBsZUN1cnNvclJl
ZiBvdGhlckN1cnNvclJlZikgY29uc3QKIHsKICAgICBNZWRpYVNhbXBsZUN1cnNvciogb3RoZXJD
dXJzb3IgPSB1bndyYXAob3RoZXJDdXJzb3JSZWYpOwpAQCAtMzI1LDE0ICszMzAsNyBAQCBDRkNv
bXBhcmlzb25SZXN1bHQgTWVkaWFTYW1wbGVDdXJzb3I6OmNvbXBhcmVJbkRlY29kZU9yZGVyKE1U
UGx1Z2luU2FtcGxlQ3Vyc29yUgogICAgICAgICBvdGhlclByZXNlbnRhdGlvblRpbWUgPSB0aW1p
bmcucHJlc2VudGF0aW9uVGltZTsKICAgICB9KTsKIAotICAgIHN3aXRjaCAocHJlc2VudGF0aW9u
VGltZS5jb21wYXJlKG90aGVyUHJlc2VudGF0aW9uVGltZSkpIHsKLSAgICBjYXNlIE1lZGlhVGlt
ZTo6TGVzc1RoYW46Ci0gICAgICAgIHJldHVybiBrQ0ZDb21wYXJlTGVzc1RoYW47Ci0gICAgY2Fz
ZSBNZWRpYVRpbWU6OkVxdWFsVG86Ci0gICAgICAgIHJldHVybiBrQ0ZDb21wYXJlRXF1YWxUbzsK
LSAgICBjYXNlIE1lZGlhVGltZTo6R3JlYXRlclRoYW46Ci0gICAgICAgIHJldHVybiBrQ0ZDb21w
YXJlR3JlYXRlclRoYW47Ci0gICAgfQorICAgIHJldHVybiBtYWtlQ0ZDb21wYXJpc29uUmVzdWx0
KHByZXNlbnRhdGlvblRpbWUgPD0+IG90aGVyUHJlc2VudGF0aW9uVGltZSk7CiB9CiAKIE9TU3Rh
dHVzIE1lZGlhU2FtcGxlQ3Vyc29yOjpnZXRTYW1wbGVUaW1pbmcoQ01TYW1wbGVUaW1pbmdJbmZv
KiBzYW1wbGVUaW1pbmcpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvY3BwL1dLUmV0YWluUHRyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvY3Bw
L1dLUmV0YWluUHRyLmgKaW5kZXggZjRlYjkxNGQ3OTJhMDA4ZTM1MjlmNDJmNWE3MzBiZDQ3ZTE3
ZTE0Ny4uMjhkOGQxOWQxNjdmNTM2MzVmN2YwMmE2MTdjZDAwMmNjODA0MDFhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5QdHIuaApAQCAtMjE2LDI2ICsy
MTYsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFdLUmV0YWluUHRyPFQ+JiBhLAogICAgIHJldHVybiBhLmdldCgpID09IGI7
IAogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVy
YXRvcj09KFQqIGEsIGNvbnN0IFdLUmV0YWluUHRyPFU+JiBiKSAKLXsKLSAgICByZXR1cm4gYSA9
PSBiLmdldCgpOyAKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBXS1JldGFpblB0cjxUPiYgYSwgY29uc3QgV0tSZXRhaW5Q
dHI8VT4mIGIpCi17IAotICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7IAotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFdLUmV0YWluUHRyPFQ+JiBhLCBVKiBiKQotewotICAgIHJldHVybiBhLmdldCgpICE9IGI7IAot
fQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KFQqIGEsIGNvbnN0IFdLUmV0YWluUHRyPFU+JiBiKQoteyAKLSAgICByZXR1cm4gYSAhPSBi
LmdldCgpOyAKLX0KLQogI2lmIChkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikpICYm
ICEoKF9NU0NfVkVSID4gMTkwMCkgJiYgX19jbGFuZ19fKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIFdLUmV0YWluUHRyPFQ+IGFkb3B0V0soVCkgX0NoZWNrX3JldHVybl87CiAjZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KaW5kZXggMzgwMDlmNDM1M2NlYzRjODBmYWM4ZWIyNWMxOWQyODAyNTJhOGVi
Ni4uM2Y4ODUyYzA3ZDRjY2E3ZGI1ZDVlODg2ZDZmNmY2ZTFlYzVjYmYyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCkBAIC0zMDQsMTEgKzMwNCw2IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgV0tT
ZWxlY3Rpb25EcmF3aW5nSW5mbyYgYSwgY29uc3QgV0tTZWxlY3Rpb25EcmF3aW5nCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV0tTZWxlY3Rpb25E
cmF3aW5nSW5mbyYgYSwgY29uc3QgV0tTZWxlY3Rpb25EcmF3aW5nSW5mbyYgYikKLXsKLSAgICBy
ZXR1cm4gIShhID09IGIpOwotfQotCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiBzdHJlYW0sIFdLU2VsZWN0aW9uRHJhd2luZ0luZm86OlNlbGVjdGlvblR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmgKaW5kZXggMzM1ZjNmYWRmYWFlZWUzZWI2MjUxZWZiOTg5OTUzOTE0ZDYw
MTYzNS4uZDhmNzdmNmFmMWI1N2EyMDhhNGVlMmRlMzM1OWE1YmFhODlkMmMxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbWFnZU9wdGlvbnMuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxvcHRpb25hbD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvSGlzdG9yeS9CaW5hcnlQcm9wZXJ0eUxpc3QuY3Bw
CmluZGV4IDY5OTBhYTAwYzE2OTY4MWY5NmIzMGViZDcxYzRmMzlkYTIwY2Y2MzUuLmNjYTg0YmI2
MGI2YmEyNjc0NzhjZWQ0M2Q0MTk3NjdlMGIzNjM5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0hpc3RvcnkvQmluYXJ5UHJvcGVydHlMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9IaXN0b3J5L0JpbmFyeVByb3BlcnR5TGlzdC5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhMZW5ndGhJbk1hcmtlckJ5dGUgPSAweEU7
CiAKIGNsYXNzIEludGVnZXJBcnJheSB7CiBwdWJsaWM6Ci0gICAgSW50ZWdlckFycmF5KCkgOiBt
X2ludGVnZXJzKDApLCBtX3NpemUoMCkgeyB9CisgICAgSW50ZWdlckFycmF5KCkgPSBkZWZhdWx0
OwogICAgIEludGVnZXJBcnJheShjb25zdCBpbnQqIGludGVnZXJzLCBzaXplX3Qgc2l6ZSkgOiBt
X2ludGVnZXJzKGludGVnZXJzKSwgbV9zaXplKHNpemUpIHsgQVNTRVJUKGludGVnZXJzKTsgQVNT
RVJUKHNpemUpOyB9CiAKICAgICBib29sIGlzRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4g
SGFzaFRyYWl0czxzaXplX3Q+Ojppc0RlbGV0ZWRWYWx1ZShtX3NpemUpOyB9CkBAIC02MCwxOSAr
NjAsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IGludCogaW50ZWdlcnMoKSBjb25zdCB7IEFTU0VS
VCghaXNEZWxldGVkVmFsdWUoKSk7IHJldHVybiBtX2ludGVnZXJzOyB9CiAgICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IEFTU0VSVCghaXNEZWxldGVkVmFsdWUoKSk7IHJldHVybiBtX3NpemU7IH0K
IAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnRlZ2VyQXJyYXkmKSBjb25zdCA9IGRlZmF1
bHQ7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIHN0cnVjdCBJbnRlZ2VyQXJyYXlIYXNoVHJhaXRz
OwotICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50ZWdlckFycmF5JiwgY29uc3Qg
SW50ZWdlckFycmF5Jik7CiAKLSAgICBjb25zdCBpbnQqIG1faW50ZWdlcnM7Ci0gICAgc2l6ZV90
IG1fc2l6ZTsKKyAgICBjb25zdCBpbnQqIG1faW50ZWdlcnMgeyBudWxscHRyIH07CisgICAgc2l6
ZV90IG1fc2l6ZSB7IDAgfTsKIH07CiAKLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50
ZWdlckFycmF5JiBhLCBjb25zdCBJbnRlZ2VyQXJyYXkmIGIpCi17Ci0gICAgcmV0dXJuIGEubV9p
bnRlZ2VycyA9PSBiLm1faW50ZWdlcnMgJiYgIGEubV9zaXplID09IGIubV9zaXplOwotfQotCiBz
dHJ1Y3QgSW50ZWdlckFycmF5SGFzaFRyYWl0cyA6IEhhc2hUcmFpdHM8SW50ZWdlckFycmF5PiB7
CiAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEludGVnZXJBcnJheSYgc2xv
dCkgeyBIYXNoVHJhaXRzPHNpemVfdD46OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShzbG90Lm1fc2l6
ZSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBJbnRlZ2VyQXJyYXkm
IHNsb3QpIHsgcmV0dXJuIEhhc2hUcmFpdHM8c2l6ZV90Pjo6aXNEZWxldGVkVmFsdWUoc2xvdC5t
X3NpemUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0JpdHMuaCBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvQml0cy5oCmluZGV4IDNlNzUwYzA3OWIxMTcyYzkxY2I4MDQ1
NDI2ODYyZDM2NjI2YTY5MWYuLjY1ODRiOTdmZTU1ZDllY2U5N2EwMmRiNmY4ZTEyZTBkYjk0ZWRh
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQml0cy5oCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvQml0cy5oCkBAIC0yNTEsMTIgKzI1MSw2IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90
aGVyPgotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPdGhlciYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgfQotICAgIAogICAgIGJv
b2wgYXQoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGF0SW1wbChp
bmRleCk7Cg==
</data>
<flag name="commit-queue"
          id="474855"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>