<?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>151735</bug_id>
          
          <creation_ts>2015-12-01 17:38:35 -0800</creation_ts>
          <short_desc>[JSC] Handle x86 partial register stalls in Air</short_desc>
          <delta_ts>2015-12-04 04:00:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>151857</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1145488</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-01 17:38:35 -0800</bug_when>
    <thetext>[JSC] Handle x86 partial register stalls in Air</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145490</commentid>
    <comment_count>1</comment_count>
      <attachid>266419</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-01 17:53:52 -0800</bug_when>
    <thetext>Created attachment 266419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145515</commentid>
    <comment_count>2</comment_count>
      <attachid>266419</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-01 20:40:23 -0800</bug_when>
    <thetext>Comment on attachment 266419
Patch

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

This looks really good - but I think you should change how you use FPRInfo.

&gt; Source/JavaScriptCore/ChangeLog:25
&gt; +        information from block to block until no unsafe chain in found.

*is found

&gt; Source/JavaScriptCore/ChangeLog:34
&gt; +        -Anything with a special can have hidden instructions. We should weight that.

Interesting!  Most specials can tell you precisely what is going on: C call can tell you that it&apos;s a call, and checks can tell you the exact instruction.  The patchpoint special is super weird though.

If we can abstract the effect on the FPU as something as broad as &quot;doesFloatMath&quot; then we could add it as a field in B3::PatchpointValue.

&gt; Source/JavaScriptCore/b3/air/AirFixPartialRegisterStalls.cpp:126
&gt; +#if !CPU(X86_64)

Let&apos;s use &quot;if (!isX86()) return;&quot;.  I think that it&apos;s best if the compiler avoids #if&apos;s.  I&apos;ve found it to be super confusing because a compiler usually has two inherent levels of meta: there is the program and there is the program that the program is operating on.  The C preprocessor adds a third-level - now you have a program that is modifying the program that is operating on some program.

Luckily, the meta nature of a compiler means that you can get away with run-time architecture checks.  And the &quot;run-time check&quot; that I&apos;m proposing is actually constant-folded by the compiler anyway.

&gt; Source/JavaScriptCore/b3/air/AirFixPartialRegisterStalls.cpp:217
&gt; +                    if (localDistance.distance[FPRInfo::toIndex(reg.fpr())] &lt; minimumSafeDistance)

We should avoid using GPRInfo and FPRInfo register indexing in Air.  If we need something like a register index, we should introduce this as a concept in Air or somewhere else.  This is because GPRInfo and FPRInfo have register &quot;indexes&quot; for those registers that are legal to use for user values in the DFG.

&gt; Source/JavaScriptCore/jit/FPRInfo.h:49
&gt; -    static const unsigned numberOfRegisters = 6;
&gt; +#if CPU(X86_64)
&gt; +    static const unsigned numberOfRegisters = 16;
&gt; +#else
&gt; +    static const unsigned numberOfRegisters = 8;
&gt; +#endif
&gt; +

This is a potentially dangerous change, since it makes the DFG use more xmm registers.  That&apos;s possibly bad because there may be assumptions about the top xmm registers being available for scratch.  I think if we wanted to change this constant, then we should do it as its own patch and with the understanding that FPRInfo::numberOfRegisters is NOT the number of FPRs in the CPU, but rather, the number of FPU registers that we want the DFG to use.

I don&apos;t think you should need to touch this code, because it would be wrong to use GPRInfo/FPRInfo &quot;indexes&quot; inside Air.  Those indexes have a pretty specific meaning in the DFG register allocator and the scratch register allocator used in polymorphic inline caches.

So, I think that what you really want is a true notion of register index - i.e. not what GPRInfo/FPRInfo call the &quot;index&quot;.  If you want this, then you should create such a thing, either in the assembler directory - possibly as a new API in MacroAssembler - or as a set of helpers inside Air.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145520</commentid>
    <comment_count>3</comment_count>
      <attachid>266428</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-01 21:16:56 -0800</bug_when>
    <thetext>Created attachment 266428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145521</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-01 21:18:48 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; This is a potentially dangerous change, since it makes the DFG use more xmm
&gt; registers.  That&apos;s possibly bad because there may be assumptions about the
&gt; top xmm registers being available for scratch.  I think if we wanted to
&gt; change this constant, then we should do it as its own patch and with the
&gt; understanding that FPRInfo::numberOfRegisters is NOT the number of FPRs in
&gt; the CPU, but rather, the number of FPU registers that we want the DFG to use.
&gt; 
&gt; I don&apos;t think you should need to touch this code, because it would be wrong
&gt; to use GPRInfo/FPRInfo &quot;indexes&quot; inside Air.  Those indexes have a pretty
&gt; specific meaning in the DFG register allocator and the scratch register
&gt; allocator used in polymorphic inline caches.
&gt; 
&gt; So, I think that what you really want is a true notion of register index -
&gt; i.e. not what GPRInfo/FPRInfo call the &quot;index&quot;.  If you want this, then you
&gt; should create such a thing, either in the assembler directory - possibly as
&gt; a new API in MacroAssembler - or as a set of helpers inside Air.

Looks like the MacroAssembler already had what we need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145531</commentid>
    <comment_count>5</comment_count>
      <attachid>266433</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-01 23:55:19 -0800</bug_when>
    <thetext>Created attachment 266433
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145594</commentid>
    <comment_count>6</comment_count>
      <attachid>266448</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-02 09:56:35 -0800</bug_when>
    <thetext>Created attachment 266448
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145614</commentid>
    <comment_count>7</comment_count>
      <attachid>266448</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-02 10:49:23 -0800</bug_when>
    <thetext>Comment on attachment 266448
Patch for landing

Clearing flags on attachment: 266448

Committed r192946: &lt;http://trac.webkit.org/changeset/192946&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145615</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-02 10:49:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266419</attachid>
            <date>2015-12-01 17:53:52 -0800</date>
            <delta_ts>2015-12-01 21:16:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151735-20151201175329.patch</filename>
            <type>text/plain</type>
            <size>24422</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjI5NTVlNzFkNDNmNTg1MGE3MTI5MGUwNmVmMjhkMTY1MjRlODRhLi40MTE0ZGI2ZjBlNmRhNjU2
OWU0ZjRjNTcyNjAxNTdmYzNmNTY1YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OSBAQAorMjAxNS0xMi0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBIYW5kbGUgeDg2IHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGxz
IGluIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxNzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGEgcHJpbWl0aXZlIGZhbHNlLWRlcGVuZGVuY3kgYnJlYWtpbmcKKyAg
ICAgICAgYWxnb3JpdGhtIHRvIEFpci4gV2UgbG9vayBmb3IgcmVkZWZpbml0aW9uIG9mIHRoZSBz
YW1lCisgICAgICAgIHZhcmlhYmxlIHRoYXQgaXMgdG9vIGNsb3NlIHRvIGEgcGFydGlhbCBkZWZp
bml0aW9uLgorCisgICAgICAgIFRoZXJlIGlzIG5vdCBleHBsaWNpdCBkZXBlbmRlbmN5IHRyYWNr
aW5nIGdvaW5nIG9uLAorICAgICAgICBidXQgaXQgaXMgcHJldHR5IGZhc3QgYW5kIHRoZSBleHRy
YSB4b3JwcyBhZGRlZCBvbiBmYWxzZS1wb3NpdGl2ZXMKKyAgICAgICAgYXJlIGNoZWFwIGFueXdh
eS4KKworICAgICAgICBUeXBpY2FsbHksIHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGxzIGFwcGVhciBm
cm9tIGluc3RydWN0aW9ucworICAgICAgICBpbnRlcmZlcmluZyB3aXRoIHRoZW1zZWx2ZXMgaW4g
c21hbGwgbG9vcHMuIFNvbWV0aGluZyBsaWtlOgorCisgICAgICAgICAgTGFiZWwwOgorICAgICAg
ICAgICAgY3Z0c2kyc2RxICVlYXgsICV4bW0wCisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAg
IGptcCBMYWJlbDAKKworICAgICAgICBUaG9zZSBhcmUgY29ycmVjdGx5IGRldGVjdGVkIGJ5IHBy
b3BhZ2F0aW5nIHRoZSBsb2NhbCBkaXN0YW5jZQorICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIGJs
b2NrIHRvIGJsb2NrIHVudGlsIG5vIHVuc2FmZSBjaGFpbiBpbiBmb3VuZC4KKworICAgICAgICBU
aGUgdGVzdCB0ZXN0SW50MzJUb0RvdWJsZVBhcnRpYWxSZWdpc3RlclN0YWxsKCkgY2hlY2tzIHRo
ZSBraW5kCisgICAgICAgIG9mIGNhc2VzIHdlIHR5cGljYWxseSBmaW5kIGZyb20gSmF2YVNjcmlw
dC4KKyAgICAgICAgVGhlIGV4ZWN1dGlvbiB0aW1lIGlzIDIwJSBmYXN0ZXIgd2l0aCBhIHJlZ2lz
dGVyIHJlc2V0ICh3aGljaCBpcworICAgICAgICBhc3RvdW5kaW5nIHNpbmNlIHRoZSB2ZXJ5IG5l
eHQgaW5zdHJ1Y3Rpb24gaGFzIGEgcmVhbCBkZXBlbmRlbmN5KS4KKworICAgICAgICBGdXR1cmUg
dHdlYWtzIHdpbGwgYmUgbmVlZGVkIHdoZW4gd2UgY2FuIHJ1biBtb3JlIEphdmFTY3JpcHQ6Cisg
ICAgICAgIC1IYW5kbGUgZnVuY3Rpb24gY2FsbHMgZGlmZmVyZW50bHkuCisgICAgICAgIC1Bbnl0
aGluZyB3aXRoIGEgc3BlY2lhbCBjYW4gaGF2ZSBoaWRkZW4gaW5zdHJ1Y3Rpb25zLiBXZSBzaG91
bGQgd2VpZ2h0IHRoYXQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bi5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZVplcm9Ub0Rv
dWJsZSk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6OnhvcnBzX3JyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4
b3JwZF9ycik6CisgICAgICAgIEFjY29yZGluZyB0byB0aGUgZG9jdW1lbnRhdGlvbiwgc3RhcnRp
bmcgd2l0aCBTYW5keSBCcmlkZ2UsCisgICAgICAgIHJlZ2lzdGVycyByZXNldCBjYW4gYmUgZG9u
ZSBpbiB0aGUgZnJvbnRlbmQgd2l0aCB4b3Jwcy4KKworICAgICAgICAqIGIzL0IzSW5kZXhTZXQu
aDoKKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpyZW1vdmUpOgorICAgICAgICAqIGIzL2Fp
ci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkFpcjo6Zml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzKToKKyAgICAgICAgKiBiMy9haXIvQWly
Rml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmg6IEFkZGVkLgorICAgICAgICAqIGIzL2Fpci9BaXJH
ZW5lcmF0ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OnByZXBhcmVGb3JHZW5lcmF0aW9u
KToKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEludDMy
VG9Eb3VibGVQYXJ0aWFsUmVnaXN0ZXJTdGFsbCk6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgor
ICAgICAgICAqIGppdC9GUFJJbmZvLmg6CisKIDIwMTUtMTEtMzAgIEJlbmphbWluIFBvdWxhaW4g
IDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQWRkIFNxcnQgdG8gQjMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTM1ZjE2ZTMzYTVmYjk3M2IzODcyYzkwMDAy
MmE0YWY0YmYyNjFhYy4uNjg5ZTNhMDI2ZTY5MTdmOWNkNDFlZDFhNDk1NDZiNGFiMGQ5NDFjYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwODUsNiArMTA4NSw4IEBACiAJCTFB
Q0Y3Mzc3MTcxQ0E2RkIwMEM5QkIxRSAvKiBXZWFrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQ0Y3Mzc2MTcxQ0E2RkIwMEM5QkIxRSAvKiBXZWFr
LmNwcCAqLzsgfTsKIAkJMjYwMEI1QTYxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MDBC
NUE0MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgKi87IH07CiAJCTI2MDBC
NUE3MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8q
IEpTU3RyaW5nSm9pbmVyLmggKi87IH07CisJCTI2MkQ4NUI2MUMwRDY1MEYwMDZBQ0I2MSAvKiBB
aXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjYyRDg1QjQxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBh
cnRpYWxSZWdpc3RlclN0YWxscy5jcHAgKi87IH07CisJCTI2MkQ4NUI3MUMwRDY1MEYwMDZBQ0I2
MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MkQ4NUI1MUMwRDY1MEYwMDZBQ0I2MSAvKiBBaXJG
aXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCAqLzsgfTsKIAkJMjY3MThCQTQxQkU5OUY3ODAwNTIw
MTdCIC8qIEFpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NzE4QkEyMUJFOTlGNzgwMDUyMDE3QiAv
KiBBaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAgKi87IH07CiAJCTI2NzE4QkE1MUJF
OTlGNzgwMDUyMDE3QiAvKiBBaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY3MThCQTMxQkU5OUY3ODAw
NTIwMTdCIC8qIEFpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmggKi87IH07CiAJCTI2ODRE
NDM4MUMwMDE2MUMwMDgxRDY2MyAvKiBBaXJMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY4NEQ0MzcxQzAwMTYxQzAwODFENjYzIC8qIEFp
ckxpdmVuZXNzLmggKi87IH07CkBAIC0zMTIwLDYgKzMxMjIsOCBAQAogCQkxQ0FBOEI0QjBEMzJD
MzlBMDA0MUJDRkYgLyogSmF2YVNjcmlwdENvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSmF2YVNjcmlwdENvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9pbmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjYwMEI1QTUxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5n
Sm9pbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSm9pbmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2MkQ4NUI0MUMwRDY1MEYwMDZBQ0I2
MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcDsgcGF0aCA9
IGIzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyNjJEODVCNTFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJl
Z2lzdGVyU3RhbGxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckZpeFBh
cnRpYWxSZWdpc3RlclN0YWxscy5oOyBwYXRoID0gYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3Rl
clN0YWxscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjQwOTFGQTFCRTJGRDQx
MDA2ODREQjIgLyogQWlyT3Bjb2RlLm9wY29kZXMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gQWlyT3Bjb2RlLm9wY29kZXM7IHBh
dGggPSBiMy9haXIvQWlyT3Bjb2RlLm9wY29kZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTI2NzE4QkEyMUJFOTlGNzgwMDUyMDE3QiAvKiBBaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVz
Y2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJJdGVyYXRl
ZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHA7IHBhdGggPSBiMy9haXIvQWlySXRlcmF0ZWRSZWdpc3Rl
ckNvYWxlc2NpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjcxOEJBMzFC
RTk5Rjc4MDA1MjAxN0IgLyogQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2Npbmcu
aDsgcGF0aCA9IGIzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDYxNyw2ICs0NjIxLDggQEAKIAkJCQkwRkVDODU1MTFC
REFDREM3MDA4MEZGNzQgLyogQWlyQ29kZS5oICovLAogCQkJCTBGNDU3MDM2MUJFNDRDOTEwMDYy
QTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgKi8sCiAJCQkJMEY0NTcwMzcxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi8sCisJCQkJMjYyRDg1QjQxQzBE
NjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAgKi8sCisJCQkJ
MjYyRDg1QjUxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5o
ICovLAogCQkJCTBGRUM4NTUyMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJGcmVxdWVudGVkQmxvY2su
aCAqLywKIAkJCQkwRkVDODU1MzFCREFDREM3MDA4MEZGNzQgLyogQWlyR2VuZXJhdGUuY3BwICov
LAogCQkJCTBGRUM4NTU0MUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJHZW5lcmF0ZS5oICovLApAQCAt
Nzc3Nyw2ICs3NzgzLDcgQEAKIAkJCQk4NjcwNEI4NzEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJ
VC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCODgxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQ
YXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZ
YXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjYyRDg1QjcxQzBENjUwRjAwNkFDQjYx
IC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3
MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAg
LTg2ODksNiArODY5Niw3IEBACiAJCQkJQTFCOUUyM0QxQjRFMEQ2NzAwQkM3RkVEIC8qIEludGxD
b2xsYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q2RDFCNERDMTQx
MDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
NTg3RDZGMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkyNjJEODVCNjFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4
UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExNTg3RDcxMUI0
REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTFENzkyRkMxQjQzODY0QjAwNDUxNkY1IC8qIEludGxOdW1iZXJGb3JtYXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFENzkyRkUxQjQzODY0QjAwNDUxNkY1IC8qIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aAppbmRleCA5Y2VjZGI0M2E1OWRlNGRmM2FlMDcyMzdkY2Q3ZTk1YzBkMWZiYjRiLi4xYjY5M2M1
MGQxMTI0YmVmZmVjODZmM2Q3YmM1Y2Q2ZDBhMTRiZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBA
IC05OTYsNyArOTk2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtb3ZlWmVyb1RvRG91YmxlKEZQ
UmVnaXN0ZXJJRCByZWcpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci54b3JwZF9ycihyZWcs
IHJlZyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnBzX3JyKHJlZywgcmVnKTsKICAgICB9CiAK
ICAgICBKdW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3Rl
cklEIHNjcmF0Y2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAppbmRleCAzMGE0MTU2MWQ2M2YyZDA4ZjdkZDk1ZWE3NDBiNDg2MzA3MzEzNzUwLi42
NTNjMzhkODg3M2E1ZDJjNWUxOTJiMTBlY2MzZjUxMjgwOWUxNmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTIxMjAsOCArMjEyMCwx
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfRElWU0RfVnNk
V3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9pZCB4
b3Jwc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAg
ICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hPUlBEX1ZwZFdwZCwgKFJlZ2lzdGVySUQp
ZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgIH0KKwogICAgIHZvaWQgeG9ycGRfcnIoWE1NUmVn
aXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKKyAgICAgICAgaWYgKHNyYyA9
PSBkc3QpIHsKKyAgICAgICAgICAgIHhvcnBzX3JyKHNyYywgZHN0KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV82Nik7
CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWE9SUERfVnBkV3BkLCAoUmVnaXN0
ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0luZGV4U2V0LmgKaW5kZXggNzcyYzUxMTc2OTU5YzcwNzY1MDQ5NmI0M2QyNTYzMWQ2NTVhMmZi
NC4uMDVmZTQyODIwOWFkZjI0ZGJjZjJjMDY1NjM5OGQ5OTFlNGM0NDExNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNJbmRleFNldC5oCkBAIC00OCw2ICs0OCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiAhbV9zZXQuc2V0KHZhbHVlLT5pbmRleCgpKTsKICAgICB9CiAKKyAgICBib29s
IHJlbW92ZShUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NldC5jbGVhcih2YWx1
ZS0+aW5kZXgoKSk7CisgICAgfQorCiAgICAgYm9vbCBjb250YWlucyhUKiB2YWx1ZSkgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzBjNjhlYzVmOWJhNmZmMWVmNmRiMWVhZWU1MDczNTIxMjZmNDMzNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lz
dGVyU3RhbGxzLmNwcApAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBaXJG
aXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNs
dWRlICJBaXJCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQWlyQ29kZS5oIgorI2luY2x1ZGUgIkFp
ckluc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkFpckluc3QuaCIKKyNpbmNsdWRlICJBaXJJbnN0
SW5saW5lcy5oIgorI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKKyNpbmNsdWRlICJCM0luZGV4
TWFwLmgiCisjaW5jbHVkZSAiQjNJbmRleFNldC5oIgorI2luY2x1ZGUgIkZQUkluZm8uaCIKKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBu
YW1lc3BhY2UgQWlyIHsKKworbmFtZXNwYWNlIHsKKworYm9vbCBoYXNQYXJ0aWFsWG1tUmVnVXBk
YXRlKGNvbnN0IEluc3QmIGluc3QpCit7CisgICAgc3dpdGNoIChpbnN0Lm9wY29kZSkgeworICAg
IGNhc2UgQ29udmVydEludDMyVG9Eb3VibGU6CisgICAgY2FzZSBDb252ZXJ0SW50NjRUb0RvdWJs
ZToKKyAgICBjYXNlIFNxcnREb3VibGU6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1
bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
aXNEZXBlbmRlbmN5QnJlYWtpbmcoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAgICAvLyAieG9ycHMg
cmVnLCByZWciIGlzIHVzZWQgYnkgdGhlIGZyb250ZW5kIHRvIHJlbW92ZSB0aGUgZGVwZW5kZW5j
eSBvbiBpdHMgYXJndW1lbnQuCisgICAgcmV0dXJuIGluc3Qub3Bjb2RlID09IE1vdmVaZXJvVG9E
b3VibGU7Cit9CisKKy8vIEZJWE1FOiBmaW5kIGEgZ29vZCBkaXN0YW5jZSBwZXIgYXJjaGl0ZWN0
dXJlIGV4cGVyaW1lbnRhbGx5LgorLy8gTExWTSB1c2VzIGEgZGlzdGFuY2Ugb2YgMTYgYnV0IHRo
YXQgY29tZXMgZnJvbSBOZWhhbGVtLgordW5zaWduZWQgY2hhciBtaW5pbXVtU2FmZURpc3RhbmNl
ID0gMTY7CisKK3N0cnVjdCBGUERlZkRpc3RhbmNlIHsKKyAgICBGUERlZkRpc3RhbmNlKCkKKyAg
ICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBGUFJJbmZvOjpudW1iZXJPZlJl
Z2lzdGVyczsgKytpKQorICAgICAgICAgICAgZGlzdGFuY2VbaV0gPSAyNTU7CisgICAgfQorCisg
ICAgdm9pZCByZXNldChGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXgg
PSBGUFJJbmZvOjp0b0luZGV4KHJlZyk7CisgICAgICAgIGRpc3RhbmNlW2luZGV4XSA9IDI1NTsK
KyAgICB9CisKKyAgICB2b2lkIGFkZChGUFJSZWcgcmVnLCB1bnNpZ25lZCByZWdpc3RlckRpc3Rh
bmNlKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBGUFJJbmZvOjp0b0luZGV4KHJl
Zyk7CisgICAgICAgIGlmIChyZWdpc3RlckRpc3RhbmNlIDwgZGlzdGFuY2VbaW5kZXhdKQorICAg
ICAgICAgICAgZGlzdGFuY2VbaW5kZXhdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ocmVn
aXN0ZXJEaXN0YW5jZSk7CisgICAgfQorCisgICAgYm9vbCB1cGRhdGVGcm9tUHJlY2Vzc29yKEZQ
RGVmRGlzdGFuY2UmIHByZWNlc3NvckRpc3RhbmNlLCB1bnNpZ25lZCBjb25zdGFudE9mZnNldCA9
IDApCisgICAgeworICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHJlZ0Rpc3RhbmNlID0gcHJlY2Vzc29yRGlzdGFuY2UuZGlzdGFu
Y2VbaV0gKyBjb25zdGFudE9mZnNldDsKKyAgICAgICAgICAgIGlmIChyZWdEaXN0YW5jZSA8IG1p
bmltdW1TYWZlRGlzdGFuY2UgJiYgcmVnRGlzdGFuY2UgPCBkaXN0YW5jZVtpXSkgeworICAgICAg
ICAgICAgICAgIGRpc3RhbmNlW2ldID0gcmVnRGlzdGFuY2U7CisgICAgICAgICAgICAgICAgY2hh
bmdlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNo
YW5nZWQ7CisgICAgfQorCisgICAgdW5zaWduZWQgY2hhciBkaXN0YW5jZVtGUFJJbmZvOjpudW1i
ZXJPZlJlZ2lzdGVyc107Cit9OworCit2b2lkIHVwZGF0ZURpc3RhbmNlcyhJbnN0JiBpbnN0LCBG
UERlZkRpc3RhbmNlJiBsb2NhbERpc3RhbmNlLCB1bnNpZ25lZCYgZGlzdGFuY2VUb0Jsb2NrRW5k
KQoreworICAgIC0tZGlzdGFuY2VUb0Jsb2NrRW5kOworCisgICAgaWYgKGlzRGVwZW5kZW5jeUJy
ZWFraW5nKGluc3QpKSB7CisgICAgICAgIGxvY2FsRGlzdGFuY2UucmVzZXQoaW5zdC5hcmdzWzBd
LnRtcCgpLmZwcigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGluc3QuZm9yRWFj
aFRtcChbJl0gKFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7CisgICAgICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UodG1wLmlzUmVnKCksICJUaGlzIHBoYXNlIG11c3QgYmUgcnVu
IGFmdGVyIHJlZ2lzdGVyIGFsbG9jYXRpb24uIik7CisKKyAgICAgICAgaWYgKHRtcC5pc0ZQUigp
ICYmIEFyZzo6aXNEZWYocm9sZSkpCisgICAgICAgICAgICBsb2NhbERpc3RhbmNlLmFkZCh0bXAu
ZnByKCksIGRpc3RhbmNlVG9CbG9ja0VuZCk7CisgICAgfSk7Cit9CisKK30KKwordm9pZCBmaXhQ
YXJ0aWFsUmVnaXN0ZXJTdGFsbHMoQ29kZSYgY29kZSkKK3sKKyNpZiAhQ1BVKFg4Nl82NCkKKyAg
ICByZXR1cm47CisjZW5kaWYKKyAgICBQaGFzZVNjb3BlIHBoYXNlU2NvcGUoY29kZSwgImZpeFBh
cnRpYWxSZWdpc3RlclN0YWxscyIpOworCisgICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBjYW5kaWRh
dGVzOworCisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKKyAgICAgICAgZm9y
IChjb25zdCBJbnN0JiBpbnN0IDogKmJsb2NrKSB7CisgICAgICAgICAgICBpZiAoaGFzUGFydGlh
bFhtbVJlZ1VwZGF0ZShpbnN0KSkgeworICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5k
KGJsb2NrKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIEZvcnR1bmF0ZWx5LCBQYXJ0aWFsIFN0YWxscyBhcmUgcmFyZWx5
IHVzZWQuIFJldHVybiBlYXJseSBpZiBubyBibG9jaworICAgIC8vIGNhcmVzIGFib3V0IHRoZW0u
CisgICAgaWYgKGNhbmRpZGF0ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBGb3IgZWFjaCBibG9jaywgdGhpcyBwcm92aWRlcyB0aGUgZGlzdGFuY2UgdG8gdGhlIGxhc3Qg
aW5zdHJ1Y3Rpb24gc2V0dGluZyBlYWNoIHJlZ2lzdGVyCisgICAgLy8gb24gYmxvY2sgKmVudHJ5
Ki4KKyAgICBJbmRleE1hcDxCYXNpY0Jsb2NrLCBGUERlZkRpc3RhbmNlPiBsYXN0RGVmRGlzdGFu
Y2UoY29kZS5zaXplKCkpOworCisgICAgLy8gQmxvY2tzIHdpdGggZGlydHkgZGlzdGFuY2UgYXQg
aGVhZC4KKyAgICBJbmRleFNldDxCYXNpY0Jsb2NrPiBkaXJ0eTsKKworICAgIC8vIEZpcnN0LCB3
ZSBjb21wdXRlIHRoZSBsb2NhbCBkaXN0YW5jZSBmb3IgZWFjaCBibG9jayBhbmQgcHVzaCBpdCB0
byB0aGUgc3VjY2Vzc29ycy4KKyAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogY29kZSkgewor
ICAgICAgICBGUERlZkRpc3RhbmNlIGxvY2FsRGlzdGFuY2U7CisKKyAgICAgICAgdW5zaWduZWQg
ZGlzdGFuY2VUb0Jsb2NrRW5kID0gYmxvY2stPnNpemUoKTsKKyAgICAgICAgZm9yIChJbnN0JiBp
bnN0IDogKmJsb2NrKQorICAgICAgICAgICAgdXBkYXRlRGlzdGFuY2VzKGluc3QsIGxvY2FsRGlz
dGFuY2UsIGRpc3RhbmNlVG9CbG9ja0VuZCk7CisKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBz
dWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29yQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGlmIChs
YXN0RGVmRGlzdGFuY2Vbc3VjY2Vzc29yXS51cGRhdGVGcm9tUHJlY2Vzc29yKGxvY2FsRGlzdGFu
Y2UpKQorICAgICAgICAgICAgICAgIGRpcnR5LmFkZChzdWNjZXNzb3IpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gTm93IHdlIHByb3BhZ2F0ZSB0aGUgbWluaW11bXMgYWNjcm9zcyBibG9j
a3MuCisgICAgYm9vbCBjaGFuZ2VkOworICAgIGRvIHsKKyAgICAgICAgY2hhbmdlZCA9IGZhbHNl
OworCisgICAgICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBjb2RlKSB7CisgICAgICAgICAg
ICBpZiAoIWRpcnR5LnJlbW92ZShibG9jaykpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIC8vIExpdHRsZSBzaG9ydGN1dDogaWYgdGhlIGJsb2NrIGlzIGJpZyBlbm91
Z2gsIHByb3BhZ2F0aW5nIGl0IHdvbid0IGFkZCBhbnkgaW5mb3JtYXRpb24uCisgICAgICAgICAg
ICBpZiAoYmxvY2stPnNpemUoKSA+PSBtaW5pbXVtU2FmZURpc3RhbmNlKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB1bnNpZ25lZCBibG9ja1NpemUgPSBibG9jay0+
c2l6ZSgpOworICAgICAgICAgICAgRlBEZWZEaXN0YW5jZSYgYmxvY2tEaXN0YW5jZSA9IGxhc3RE
ZWZEaXN0YW5jZVtibG9ja107CisgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3Nv
ciA6IGJsb2NrLT5zdWNjZXNzb3JCbG9ja3MoKSkgeworICAgICAgICAgICAgICAgIGlmIChsYXN0
RGVmRGlzdGFuY2Vbc3VjY2Vzc29yXS51cGRhdGVGcm9tUHJlY2Vzc29yKGJsb2NrRGlzdGFuY2Us
IGJsb2NrU2l6ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZGlydHkuYWRkKHN1Y2Nlc3Nvcik7
CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gd2hpbGUgKGNoYW5nZWQpOworCisgICAg
Ly8gRmluYWxseSwgdXBkYXRlIGVhY2ggYmxvY2sgYXMgbmVlZGVkLgorICAgIEluc2VydGlvblNl
dCBpbnNlcnRpb25TZXQoY29kZSk7CisgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNhbmRp
ZGF0ZXMpIHsKKyAgICAgICAgdW5zaWduZWQgZGlzdGFuY2VUb0Jsb2NrRW5kID0gYmxvY2stPnNp
emUoKTsKKyAgICAgICAgRlBEZWZEaXN0YW5jZSYgbG9jYWxEaXN0YW5jZSA9IGxhc3REZWZEaXN0
YW5jZVtibG9ja107CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgSW5zdCYgaW5zdCA9IGJsb2NrLT5hdChpKTsKKwor
ICAgICAgICAgICAgaWYgKGhhc1BhcnRpYWxYbW1SZWdVcGRhdGUoaW5zdCkpIHsKKyAgICAgICAg
ICAgICAgICBSZWdpc3RlclNldCBkZWZzOworICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVz
ZXM7CisgICAgICAgICAgICAgICAgaW5zdC5mb3JFYWNoVG1wKFsmXSAoVG1wJiB0bXAsIEFyZzo6
Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRtcC5pc0ZQ
UigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0RlZihyb2xlKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZzLnNldCh0bXAuZnByKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNBbnlVc2Uocm9sZSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXNlcy5zZXQodG1wLmZwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91
dCB2YWx1ZXMgd2UgZGVmaW5lIGJ1dCBub3QgdXNlLiBPdGhlcndpc2Ugd2UgaGF2ZSB0byB3YWl0
CisgICAgICAgICAgICAgICAgLy8gZm9yIHRoZSB2YWx1ZSB0byBiZSByZXNvbHZlZCBhbnl3YXku
CisgICAgICAgICAgICAgICAgZGVmcy5leGNsdWRlKHVzZXMpOworCisgICAgICAgICAgICAgICAg
ZGVmcy5mb3JFYWNoKFsmXSAoUmVnIHJlZykgeworICAgICAgICAgICAgICAgICAgICBpZiAobG9j
YWxEaXN0YW5jZS5kaXN0YW5jZVtGUFJJbmZvOjp0b0luZGV4KHJlZy5mcHIoKSldIDwgbWluaW11
bVNhZmVEaXN0YW5jZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNl
cnQoaSwgTW92ZVplcm9Ub0RvdWJsZSwgaW5zdC5vcmlnaW4sIFRtcChyZWcpKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlRGlzdGFuY2Vz
KGluc3QsIGxvY2FsRGlzdGFuY2UsIGRpc3RhbmNlVG9CbG9ja0VuZCk7CisgICAgICAgIH0KKyAg
ICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOworICAgIH0KK30KKworfSB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVy
U3RhbGxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdp
c3RlclN0YWxscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyZWE2ODkwYmRmMjNjNWQ1MDAyZGEwZGU3ZTFiMTRh
NGQ2NjFhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFpckZpeFBhcnRp
YWxSZWdpc3RlclN0YWxsc19oCisjZGVmaW5lIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxsc19o
CisKKyNpZiBFTkFCTEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CisKK2NsYXNzIENvZGU7CisKKy8vIHg4NiBoYXMgYSBwaXBlbGluaW5n
IGhhemFyZCBjYXVzZWQgYnkgZmFsc2UgZGVwZW5kZW5jaWVzIGJldHdlZW4gaW5zdHJ1Y3Rpb25z
LgorLy8KKy8vIFNvbWUgaW5zdHJ1Y3Rpb25zIHVwZGF0ZSBvbmx5IHBhcnQgb2YgYSByZWdpc3Rl
ciwgdGhleSBjYW4gb25seSBiZSBzY2hlZHVsZWQgYWZ0ZXIKKy8vIHRoZSBwcmV2aW91cyBkZWZp
bml0aW9uIGlzIGNvbXB1dGVkLiBUaGlzIHByb2JsZW0gY2FuIGJlIGF2b2lkZWQgYnkgdGhlIGNv
bXBpbGVyCisvLyBieSBleHBsaWNpdGVseSByZXNldHRpbmcgdGhlIGVudGlyZSByZWdpc3RlciBi
ZWZvcmUgZXhlY3V0aW5nIHRoZSBpbnN0cnVjdGlvbiB3aXRoCisvLyBwYXJ0aWFsIHVwZGF0ZS4K
Ky8vCisvLyBTZWUgIlBhcnRpYWwgWE1NIFJlZ2lzdGVyIFN0YWxscyIgYW5kICJEZXBlbmRlbmN5
IEJyZWFraW5nIElkaW9tcyIgaW4gdGhlIG1hbnVhbC4KK3ZvaWQgZml4UGFydGlhbFJlZ2lzdGVy
U3RhbGxzKENvZGUmKTsKKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0
YWxsc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVy
YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCmlu
ZGV4IDI4NmIwYzcyZmM2YmQwYmUzM2ZkNjAwMmZlYTIzNTNlYWVmM2VhMGUuLjY4ZTc2YWQwYTlh
MDE4NWVlYmQ4MzRjNGUwZTQ3NWY3YWUzYWQ0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQWly
QWxsb2NhdGVTdGFjay5oIgogI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJBaXJFbGlt
aW5hdGVEZWFkQ29kZS5oIgorI2luY2x1ZGUgIkFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5o
IgogI2luY2x1ZGUgIkFpckdlbmVyYXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiQWlySGFuZGxl
Q2FsbGVlU2F2ZXMuaCIKICNpbmNsdWRlICJBaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5o
IgpAQCAtOTUsNiArOTYsMTAgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2Rl
KQogICAgIC8vIGZyZXF1ZW5jeSBzdWNjZXNzb3IgaXMgYWxzbyB0aGUgZmFsbC10aHJvdWdoIHRh
cmdldC4KICAgICBvcHRpbWl6ZUJsb2NrT3JkZXIoY29kZSk7CiAKKyAgICAvLyBBdHRlbXB0IHRv
IHJlbW92ZSBmYWxzZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBpbnN0cnVjdGlvbnMgY3JlYXRlZCBi
eSBwYXJ0aWFsIHJlZ2lzdGVyIGNoYW5nZXMuCisgICAgLy8gVGhpcyBtdXN0IGJlIGV4ZWN1dGVk
IGFzIGxhdGUgYXMgcG9zc2libGUgYXMgaXQgZGVwZW5kcyBvbiB0aGUgaW5zdHJ1Y3Rpb25zIG9y
ZGVyIGFuZCByZWdpc3RlciB1c2UuCisgICAgZml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzKGNvZGUp
OworCiAgICAgLy8gVGhpcyBpcyBuZWVkZWQgdG8gc2F0aXNmeSBhIHJlcXVpcmVtZW50IG9mIEIz
OjpTdGFja21hcFZhbHVlLgogICAgIHJlcG9ydFVzZWRSZWdpc3RlcnMoY29kZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKaW5kZXggYWI0MWI2MjM0ZDY1ODBjNTc5YzE4ZTkyMjE1
ZmIwM2U5Mzc1ZDNkYi4uMGRhZDAzMDI2NGMzZDg3ZDcwMDU3ZGM3MzYyYjQzNzdkZWU0NzVlYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTI2NjcsNiArMjY2Nyw0NSBAQCB2
b2lkIHRlc3RTcGlsbEZQKCkKICAgICBjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgMS4xLCAy
LjUpOwogfQogCit2b2lkIHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyU3RhbGwoKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgQmFzaWNCbG9jayogbG9vcCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNp
Y0Jsb2NrKiBkb25lID0gcHJvYy5hZGRCbG9jaygpOworCisgICAgLy8gSGVhZC4KKyAgICBWYWx1
ZSogdG90YWwgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIDAuKTsKKyAgICBWYWx1ZSogY291bnRlciA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBVcHNp
bG9uVmFsdWUqIG9yaWdpbmFsVG90YWwgPSByb290LT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgdG90YWwpOworICAgIFVwc2lsb25WYWx1ZSogb3JpZ2luYWxDb3VudGVy
ID0gcm9vdC0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCksIGNvdW50ZXIp
OworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIEp1bXAsIE9yaWdpbigp
LCBGcmVxdWVudGVkQmxvY2sobG9vcCkpOworCisgICAgLy8gTG9vcC4KKyAgICBWYWx1ZSogbG9v
cENvdW50ZXIgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFBoaSwgSW50NjQsIE9yaWdp
bigpKTsKKyAgICBWYWx1ZSogbG9vcFRvdGFsID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBQaGksIERvdWJsZSwgT3JpZ2luKCkpOworICAgIG9yaWdpbmFsQ291bnRlci0+c2V0UGhpKGxv
b3BDb3VudGVyKTsKKyAgICBvcmlnaW5hbFRvdGFsLT5zZXRQaGkobG9vcFRvdGFsKTsKKworICAg
IFZhbHVlKiB0cnVuY2F0ZWRDb3VudGVyID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBU
cnVuYywgT3JpZ2luKCksIGxvb3BDb3VudGVyKTsKKyAgICBWYWx1ZSogZG91YmxlQ291bnRlciA9
IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIHRydW5jYXRlZENv
dW50ZXIpOworICAgIFZhbHVlKiB1cGRhdGVkVG90YWwgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIEFkZCwgT3JpZ2luKCksIGRvdWJsZUNvdW50ZXIsIGxvb3BUb3RhbCk7CisgICAgVXBz
aWxvblZhbHVlKiB1cGRhdGVkVG90YWxVcHNpbG9uID0gbG9vcC0+YXBwZW5kTmV3PFVwc2lsb25W
YWx1ZT4ocHJvYywgT3JpZ2luKCksIHVwZGF0ZWRUb3RhbCk7CisgICAgdXBkYXRlZFRvdGFsVXBz
aWxvbi0+c2V0UGhpKGxvb3BUb3RhbCk7CisKKyAgICBWYWx1ZSogZGVjQ291bnRlciA9IGxvb3At
PmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgU3ViLCBPcmlnaW4oKSwgbG9vcENvdW50ZXIsIGxvb3At
PmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisgICAgVXBzaWxv
blZhbHVlKiBkZWNDb3VudGVyVXBzaWxvbiA9IGxvb3AtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBkZWNDb3VudGVyKTsKKyAgICBkZWNDb3VudGVyVXBzaWxvbi0+c2V0
UGhpKGxvb3BDb3VudGVyKTsKKyAgICBsb29wLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAg
ICAgICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwKKyAgICAgICAgZGVjQ291bnRlciwKKyAgICAg
ICAgRnJlcXVlbnRlZEJsb2NrKGxvb3ApLCBGcmVxdWVudGVkQmxvY2soZG9uZSkpOworCisgICAg
Ly8gVGFpbC4KKyAgICBkb25lLT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLCB1cGRhdGVkVG90YWwpOworICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVB
bmRSdW48ZG91YmxlPihwcm9jLCAxMDAwMDApLCA1MDAwMDUwMDAwLikpOworfQorCiB2b2lkIHRl
c3RCcmFuY2goKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtNTg4OCw2ICs1OTI3LDggQEAg
dm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0U3BpbGxHUCgpKTsKICAg
ICBSVU4odGVzdFNwaWxsRlAoKSk7CiAKKyAgICBSVU4odGVzdEludDMyVG9Eb3VibGVQYXJ0aWFs
UmVnaXN0ZXJTdGFsbCgpKTsKKwogICAgIFJVTih0ZXN0Q2FsbFNpbXBsZSgxLCAyKSk7CiAgICAg
UlVOKHRlc3RDYWxsRnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRlBSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9GUFJJbmZvLmgKaW5kZXggNTQ0ZTkwNjJjYjdjZTk0ZGE1ZThjYjVlMTdjNWZlNzU4
MTNjZDc5Mi4uYjczZDQ0NmJjMTQ2OWU1Zjk2MzQ3ZjRmYTI0OWFjZjkwZmYxZTgxYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9GUFJJbmZvLmgKQEAgLTQxLDcgKzQxLDEyIEBAIHR5cGVkZWYgTWFj
cm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCBGUFJSZWc7CiBjbGFzcyBGUFJJbmZvIHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7Ci0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKyNpZiBDUFUoWDg2XzY0KQorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDE2OworI2Vsc2UKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA4OworI2VuZGlmCisKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVudFJlZ2lzdGVycyA9IDg7CiAKICAg
ICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266428</attachid>
            <date>2015-12-01 21:16:56 -0800</date>
            <delta_ts>2015-12-01 23:55:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151735-20151201211633.patch</filename>
            <type>text/plain</type>
            <size>23863</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyODU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjI5NTVlNzFkNDNmNTg1MGE3MTI5MGUwNmVmMjhkMTY1MjRlODRhLi40MDQxNzMxYmQ5Mzk3OTZl
NDg4NGFlZjVhOWU0ZGViZDE5ZGNjNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxNS0xMi0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBIYW5kbGUgeDg2IHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGxz
IGluIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxNzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGEgcHJpbWl0aXZlIGZhbHNlLWRlcGVuZGVuY3kgYnJlYWtpbmcKKyAg
ICAgICAgYWxnb3JpdGhtIHRvIEFpci4gV2UgbG9vayBmb3IgcmVkZWZpbml0aW9uIG9mIHRoZSBz
YW1lCisgICAgICAgIHZhcmlhYmxlIHRoYXQgaXMgdG9vIGNsb3NlIHRvIGEgcGFydGlhbCBkZWZp
bml0aW9uLgorCisgICAgICAgIFRoZXJlIGlzIG5vdCBleHBsaWNpdCBkZXBlbmRlbmN5IHRyYWNr
aW5nIGdvaW5nIG9uLAorICAgICAgICBidXQgaXQgaXMgcHJldHR5IGZhc3QgYW5kIHRoZSBleHRy
YSB4b3JwcyBhZGRlZCBvbiBmYWxzZS1wb3NpdGl2ZXMKKyAgICAgICAgYXJlIGNoZWFwIGFueXdh
eS4KKworICAgICAgICBUeXBpY2FsbHksIHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGxzIGFwcGVhciBm
cm9tIGluc3RydWN0aW9ucworICAgICAgICBpbnRlcmZlcmluZyB3aXRoIHRoZW1zZWx2ZXMgaW4g
c21hbGwgbG9vcHMuIFNvbWV0aGluZyBsaWtlOgorCisgICAgICAgICAgTGFiZWwwOgorICAgICAg
ICAgICAgY3Z0c2kyc2RxICVlYXgsICV4bW0wCisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAg
IGptcCBMYWJlbDAKKworICAgICAgICBUaG9zZSBhcmUgY29ycmVjdGx5IGRldGVjdGVkIGJ5IHBy
b3BhZ2F0aW5nIHRoZSBsb2NhbCBkaXN0YW5jZQorICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIGJs
b2NrIHRvIGJsb2NrIHVudGlsIG5vIHVuc2FmZSBjaGFpbiBpcyBmb3VuZC4KKworICAgICAgICBU
aGUgdGVzdCB0ZXN0SW50MzJUb0RvdWJsZVBhcnRpYWxSZWdpc3RlclN0YWxsKCkgY2hlY2tzIHRo
ZSBraW5kCisgICAgICAgIG9mIGNhc2VzIHdlIHR5cGljYWxseSBmaW5kIGZyb20gSmF2YVNjcmlw
dC4KKyAgICAgICAgVGhlIGV4ZWN1dGlvbiB0aW1lIGlzIDIwJSBmYXN0ZXIgd2l0aCBhIHJlZ2lz
dGVyIHJlc2V0ICh3aGljaCBpcworICAgICAgICBhc3RvdW5kaW5nIHNpbmNlIHRoZSB2ZXJ5IG5l
eHQgaW5zdHJ1Y3Rpb24gaGFzIGEgcmVhbCBkZXBlbmRlbmN5KS4KKworICAgICAgICBGdXR1cmUg
dHdlYWtzIHdpbGwgYmUgbmVlZGVkIHdoZW4gd2UgY2FuIHJ1biBtb3JlIEphdmFTY3JpcHQ6Cisg
ICAgICAgIC1IYW5kbGUgZnVuY3Rpb24gY2FsbHMgZGlmZmVyZW50bHkuCisgICAgICAgIC1Bbnl0
aGluZyB3aXRoIGEgc3BlY2lhbCBjYW4gaGF2ZSBoaWRkZW4gaW5zdHJ1Y3Rpb25zLgorICAgICAg
ICAgV2UgbmVlZCB0byB0YWtlIHRoZW0gaW50byBhY2NvdW50LgorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246Om1vdmVaZXJvVG9Eb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3Jwc19ycik6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6eG9ycGRfcnIpOgorICAgICAgICBBY2NvcmRpbmcgdG8gdGhl
IGRvY3VtZW50YXRpb24sIHN0YXJ0aW5nIHdpdGggU2FuZHkgQnJpZGdlLAorICAgICAgICByZWdp
c3RlcnMgcmVzZXQgY2FuIGJlIGRvbmUgaW4gdGhlIGZyb250ZW5kIHdpdGggeG9ycHMuCisKKyAg
ICAgICAgKiBiMy9CM0luZGV4U2V0Lmg6CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6cmVt
b3ZlKToKKyAgICAgICAgKiBiMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6OmZpeFBhcnRpYWxSZWdpc3RlclN0YWxscyk6
CisgICAgICAgICogYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oOiBBZGRlZC4K
KyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyU3RhbGwpOgorICAg
ICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAgICAgKiBqaXQvRlBSSW5mby5oOgorCiAyMDE1LTEx
LTMwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtK
U0NdIEFkZCBTcXJ0IHRvIEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUzNWYx
NmUzM2E1ZmI5NzNiMzg3MmM5MDAwMjJhNGFmNGJmMjYxYWMuLjY4OWUzYTAyNmU2OTE3ZjljZDQx
ZWQxYTQ5NTQ2YjRhYjBkOTQxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MDg1LDYgKzEwODUsOCBAQAogCQkxQUNGNzM3NzE3MUNBNkZCMDBDOUJCMUUgLyogV2Vhay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNGNzM3NjE3
MUNBNkZCMDBDOUJCMUUgLyogV2Vhay5jcHAgKi87IH07CiAJCTI2MDBCNUE2MTUyQkFBQTcwMDkx
RUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2lu
ZXIuY3BwICovOyB9OwogCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2lu
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MDBC
NUE1MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovOyB9OworCQkyNjJEODVC
NjFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MkQ4NUI0MUMwRDY1
MEYwMDZBQ0I2MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwICovOyB9OworCQky
NjJEODVCNzFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjJEODVCNTFD
MEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmggKi87IH07CiAJ
CTI2NzE4QkE0MUJFOTlGNzgwMDUyMDE3QiAvKiBBaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2lu
Zy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjcx
OEJBMjFCRTk5Rjc4MDA1MjAxN0IgLyogQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3Bw
ICovOyB9OwogCQkyNjcxOEJBNTFCRTk5Rjc4MDA1MjAxN0IgLyogQWlySXRlcmF0ZWRSZWdpc3Rl
ckNvYWxlc2NpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDI2NzE4QkEzMUJFOTlGNzgwMDUyMDE3QiAvKiBBaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVz
Y2luZy5oICovOyB9OwogCQkyNjg0RDQzODFDMDAxNjFDMDA4MUQ2NjMgLyogQWlyTGl2ZW5lc3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2ODRENDM3
MUMwMDE2MUMwMDgxRDY2MyAvKiBBaXJMaXZlbmVzcy5oICovOyB9OwpAQCAtMzEyMCw2ICszMTIy
LDggQEAKIAkJMUNBQThCNEIwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHRDb3JlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEphdmFTY3JpcHRDb3JlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MDBCNUE0MTUyQkFBQTcwMDkxRUU1RiAvKiBKU1N0cmlu
Z0pvaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1N0cmlu
Z0pvaW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MDBCNUE1MTUyQkFB
QTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1N0cmluZ0pvaW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
NjJEODVCNDFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckZpeFBhcnRpYWxSZWdp
c3RlclN0YWxscy5jcHA7IHBhdGggPSBiMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjYyRDg1QjUxQzBENjUwRjAwNkFD
QjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaDsgcGF0aCA9IGIzL2Fp
ci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjY0MDkxRkExQkUyRkQ0MTAwNjg0REIyIC8qIEFpck9wY29kZS5vcGNvZGVzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IEFpck9wY29kZS5vcGNvZGVzOyBwYXRoID0gYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjcxOEJBMjFCRTk5Rjc4MDA1MjAxN0IgLyogQWly
SXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuY3BwOyBwYXRoID0gYjMv
YWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjY3MThCQTMxQkU5OUY3ODAwNTIwMTdCIC8qIEFpckl0ZXJhdGVkUmVnaXN0
ZXJDb2FsZXNjaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFpckl0ZXJh
dGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmg7IHBhdGggPSBiMy9haXIvQWlySXRlcmF0ZWRSZWdpc3Rl
ckNvYWxlc2NpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2MTcsNiArNDYy
MSw4IEBACiAJCQkJMEZFQzg1NTExQkRBQ0RDNzAwODBGRjc0IC8qIEFpckNvZGUuaCAqLywKIAkJ
CQkwRjQ1NzAzNjFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwICov
LAogCQkJCTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5o
ICovLAorCQkJCTI2MkQ4NUI0MUMwRDY1MEYwMDZBQ0I2MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0
ZXJTdGFsbHMuY3BwICovLAorCQkJCTI2MkQ4NUI1MUMwRDY1MEYwMDZBQ0I2MSAvKiBBaXJGaXhQ
YXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCAqLywKIAkJCQkwRkVDODU1MjFCREFDREM3MDA4MEZGNzQg
LyogQWlyRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg1NTMxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckdlbmVyYXRlLmNwcCAqLywKIAkJCQkwRkVDODU1NDFCREFDREM3MDA4MEZGNzQgLyog
QWlyR2VuZXJhdGUuaCAqLywKQEAgLTc3NzcsNiArNzc4Myw3IEBACiAJCQkJODY3MDRCODcxMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0Qjg4MTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJyUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4
QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAorCQkJCTI2
MkQ4NUI3MUMwRDY1MEYwMDZBQ0I2MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4
Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CkBAIC04Njg5LDYgKzg2OTYsNyBAQAogCQkJCUExQjlFMjNEMUI0
RTBENjcwMEJDN0ZFRCAvKiBJbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTE1ODdENkQxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRlVGltZUZvcm1hdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBMTU4N0Q2RjFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjYyRDg1QjYxQzBE
NjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBMTU4N0Q3MTFCNERDMTQxMDBENjk4NDkgLyogSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRDc5MkZDMUI0Mzg2NEIwMDQ1MTZG
NSAvKiBJbnRsTnVtYmVyRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRDc5MkZFMUI0
Mzg2NEIwMDQ1MTZGNSAvKiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKaW5kZXggOWNlY2RiNDNhNTlkZTRkZjNhZTA3MjM3ZGNk
N2U5NWMwZDFmYmI0Yi4uMWI2OTNjNTBkMTEyNGJlZmZlYzg2ZjNkN2JjNWNkNmQwYTE0YmRiYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaApAQCAtOTk2LDcgKzk5Niw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgbW92ZVplcm9Ub0RvdWJsZShGUFJlZ2lzdGVySUQgcmVnKQogICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIueG9ycGRfcnIocmVnLCByZWcpOworICAgICAgICBtX2Fzc2VtYmxlci54b3Jwc19y
cihyZWcsIHJlZyk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hEb3VibGVOb25aZXJvKEZQUmVn
aXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKaW5kZXggMzBhNDE1NjFkNjNmMmQwOGY3ZGQ5
NWVhNzQwYjQ4NjMwNzMxMzc1MC4uNjUzYzM4ZDg4NzNhNWQyYzVlMTkyYjEwZWNjM2Y1MTI4MDll
MTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCkBAIC0yMTIwLDggKzIxMjAsMTcgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3AoT1AyX0RJVlNEX1ZzZFdzZCwgKFJlZ2lzdGVySUQpZHN0LCBiYXNlLCBvZmZzZXQp
OwogICAgIH0KIAorICAgIHZvaWQgeG9ycHNfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lz
dGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9wKE9QMl9YT1JQ
RF9WcGRXcGQsIChSZWdpc3RlcklEKWRzdCwgKFJlZ2lzdGVySUQpc3JjKTsKKyAgICB9CisKICAg
ICB2b2lkIHhvcnBkX3JyKFhNTVJlZ2lzdGVySUQgc3JjLCBYTU1SZWdpc3RlcklEIGRzdCkKICAg
ICB7CisgICAgICAgIGlmIChzcmMgPT0gZHN0KSB7CisgICAgICAgICAgICB4b3Jwc19ycihzcmMs
IGRzdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgbV9mb3JtYXR0
ZXIucHJlZml4KFBSRV9TU0VfNjYpOwogICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1Ay
X1hPUlBEX1ZwZFdwZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4U2V0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleFNldC5oCmluZGV4IDc3MmM1MTE3Njk1OWM3MDc2
NTA0OTZiNDNkMjU2MzFkNjU1YTJmYjQuLjA1ZmU0MjgyMDlhZGYyNGRiY2YyYzA2NTYzOThkOTkx
ZTRjNDQxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4U2V0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaApAQCAtNDgsNiAr
NDgsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gIW1fc2V0LnNldCh2YWx1ZS0+aW5kZXgo
KSk7CiAgICAgfQogCisgICAgYm9vbCByZW1vdmUoVCogdmFsdWUpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9zZXQuY2xlYXIodmFsdWUtPmluZGV4KCkpOworICAgIH0KKwogICAgIGJvb2wgY29u
dGFpbnMoVCogdmFsdWUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIXZhbHVlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJT
dGFsbHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVn
aXN0ZXJTdGFsbHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxY2I0ZWNmODMyOGJlNzY1OGU1NjVlNTQ5NjA5
OGUwMTY4OTk4ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAKQEAgLTAsMCArMSwyMzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmgiCisKKyNpZiBF
TkFCTEUoQjNfSklUKQorCisjaW5jbHVkZSAiQWlyQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkFp
ckNvZGUuaCIKKyNpbmNsdWRlICJBaXJJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJBaXJJbnN0
LmgiCisjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKKyNpbmNsdWRlICJBaXJQaGFzZVNjb3Bl
LmgiCisjaW5jbHVkZSAiQjNJbmRleE1hcC5oIgorI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgeworCituYW1lc3BhY2Ug
eworCitib29sIGhhc1BhcnRpYWxYbW1SZWdVcGRhdGUoY29uc3QgSW5zdCYgaW5zdCkKK3sKKyAg
ICBzd2l0Y2ggKGluc3Qub3Bjb2RlKSB7CisgICAgY2FzZSBDb252ZXJ0SW50MzJUb0RvdWJsZToK
KyAgICBjYXNlIENvbnZlcnRJbnQ2NFRvRG91YmxlOgorICAgIGNhc2UgU3FydERvdWJsZToKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBpc0RlcGVuZGVuY3lCcmVha2luZyhjb25zdCBJ
bnN0JiBpbnN0KQoreworICAgIC8vICJ4b3JwcyByZWcsIHJlZyIgaXMgdXNlZCBieSB0aGUgZnJv
bnRlbmQgdG8gcmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9uIGl0cyBhcmd1bWVudC4KKyAgICByZXR1
cm4gaW5zdC5vcGNvZGUgPT0gTW92ZVplcm9Ub0RvdWJsZTsKK30KKworLy8gRklYTUU6IGZpbmQg
YSBnb29kIGRpc3RhbmNlIHBlciBhcmNoaXRlY3R1cmUgZXhwZXJpbWVudGFsbHkuCisvLyBMTFZN
IHVzZXMgYSBkaXN0YW5jZSBvZiAxNiBidXQgdGhhdCBjb21lcyBmcm9tIE5laGFsZW0uCit1bnNp
Z25lZCBjaGFyIG1pbmltdW1TYWZlRGlzdGFuY2UgPSAxNjsKKworc3RydWN0IEZQRGVmRGlzdGFu
Y2UgeworICAgIEZQRGVmRGlzdGFuY2UoKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZkZQUmVnaXN0ZXJzKCk7ICsraSkKKyAg
ICAgICAgICAgIGRpc3RhbmNlW2ldID0gMjU1OworICAgIH0KKworICAgIHZvaWQgcmVzZXQoRlBS
UmVnIHJlZykKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gTWFjcm9Bc3NlbWJsZXI6
OmZwUmVnaXN0ZXJJbmRleChyZWcpOworICAgICAgICBkaXN0YW5jZVtpbmRleF0gPSAyNTU7Cisg
ICAgfQorCisgICAgdm9pZCBhZGQoRlBSUmVnIHJlZywgdW5zaWduZWQgcmVnaXN0ZXJEaXN0YW5j
ZSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gTWFjcm9Bc3NlbWJsZXI6OmZwUmVn
aXN0ZXJJbmRleChyZWcpOworICAgICAgICBpZiAocmVnaXN0ZXJEaXN0YW5jZSA8IGRpc3RhbmNl
W2luZGV4XSkKKyAgICAgICAgICAgIGRpc3RhbmNlW2luZGV4XSA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KHJlZ2lzdGVyRGlzdGFuY2UpOworICAgIH0KKworICAgIGJvb2wgdXBkYXRlRnJv
bVByZWNlc3NvcihGUERlZkRpc3RhbmNlJiBwcmVjZXNzb3JEaXN0YW5jZSwgdW5zaWduZWQgY29u
c3RhbnRPZmZzZXQgPSAwKQorICAgIHsKKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZG
UFJlZ2lzdGVycygpOyArK2kpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlZ0Rpc3RhbmNlID0g
cHJlY2Vzc29yRGlzdGFuY2UuZGlzdGFuY2VbaV0gKyBjb25zdGFudE9mZnNldDsKKyAgICAgICAg
ICAgIGlmIChyZWdEaXN0YW5jZSA8IG1pbmltdW1TYWZlRGlzdGFuY2UgJiYgcmVnRGlzdGFuY2Ug
PCBkaXN0YW5jZVtpXSkgeworICAgICAgICAgICAgICAgIGRpc3RhbmNlW2ldID0gcmVnRGlzdGFu
Y2U7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgfQorCisgICAgdW5zaWduZWQgY2hh
ciBkaXN0YW5jZVtNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lzdGVycygpXTsKK307CisK
K3ZvaWQgdXBkYXRlRGlzdGFuY2VzKEluc3QmIGluc3QsIEZQRGVmRGlzdGFuY2UmIGxvY2FsRGlz
dGFuY2UsIHVuc2lnbmVkJiBkaXN0YW5jZVRvQmxvY2tFbmQpCit7CisgICAgLS1kaXN0YW5jZVRv
QmxvY2tFbmQ7CisKKyAgICBpZiAoaXNEZXBlbmRlbmN5QnJlYWtpbmcoaW5zdCkpIHsKKyAgICAg
ICAgbG9jYWxEaXN0YW5jZS5yZXNldChpbnN0LmFyZ3NbMF0udG1wKCkuZnByKCkpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaW5zdC5mb3JFYWNoVG1wKFsmXSAoVG1wJiB0bXAsIEFy
Zzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSh0
bXAuaXNSZWcoKSwgIlRoaXMgcGhhc2UgbXVzdCBiZSBydW4gYWZ0ZXIgcmVnaXN0ZXIgYWxsb2Nh
dGlvbi4iKTsKKworICAgICAgICBpZiAodG1wLmlzRlBSKCkgJiYgQXJnOjppc0RlZihyb2xlKSkK
KyAgICAgICAgICAgIGxvY2FsRGlzdGFuY2UuYWRkKHRtcC5mcHIoKSwgZGlzdGFuY2VUb0Jsb2Nr
RW5kKTsKKyAgICB9KTsKK30KKworfQorCit2b2lkIGZpeFBhcnRpYWxSZWdpc3RlclN0YWxscyhD
b2RlJiBjb2RlKQoreworICAgIGlmICghaXNYODYoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
UGhhc2VTY29wZSBwaGFzZVNjb3BlKGNvZGUsICJmaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMiKTsK
KworICAgIFZlY3RvcjxCYXNpY0Jsb2NrKj4gY2FuZGlkYXRlczsKKworICAgIGZvciAoQmFzaWNC
bG9jayogYmxvY2sgOiBjb2RlKSB7CisgICAgICAgIGZvciAoY29uc3QgSW5zdCYgaW5zdCA6ICpi
bG9jaykgeworICAgICAgICAgICAgaWYgKGhhc1BhcnRpYWxYbW1SZWdVcGRhdGUoaW5zdCkpIHsK
KyAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLmFwcGVuZChibG9jayk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGb3J0
dW5hdGVseSwgUGFydGlhbCBTdGFsbHMgYXJlIHJhcmVseSB1c2VkLiBSZXR1cm4gZWFybHkgaWYg
bm8gYmxvY2sKKyAgICAvLyBjYXJlcyBhYm91dCB0aGVtLgorICAgIGlmIChjYW5kaWRhdGVzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRm9yIGVhY2ggYmxvY2ssIHRoaXMg
cHJvdmlkZXMgdGhlIGRpc3RhbmNlIHRvIHRoZSBsYXN0IGluc3RydWN0aW9uIHNldHRpbmcgZWFj
aCByZWdpc3RlcgorICAgIC8vIG9uIGJsb2NrICplbnRyeSouCisgICAgSW5kZXhNYXA8QmFzaWNC
bG9jaywgRlBEZWZEaXN0YW5jZT4gbGFzdERlZkRpc3RhbmNlKGNvZGUuc2l6ZSgpKTsKKworICAg
IC8vIEJsb2NrcyB3aXRoIGRpcnR5IGRpc3RhbmNlIGF0IGhlYWQuCisgICAgSW5kZXhTZXQ8QmFz
aWNCbG9jaz4gZGlydHk7CisKKyAgICAvLyBGaXJzdCwgd2UgY29tcHV0ZSB0aGUgbG9jYWwgZGlz
dGFuY2UgZm9yIGVhY2ggYmxvY2sgYW5kIHB1c2ggaXQgdG8gdGhlIHN1Y2Nlc3NvcnMuCisgICAg
Zm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKKyAgICAgICAgRlBEZWZEaXN0YW5jZSBs
b2NhbERpc3RhbmNlOworCisgICAgICAgIHVuc2lnbmVkIGRpc3RhbmNlVG9CbG9ja0VuZCA9IGJs
b2NrLT5zaXplKCk7CisgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6ICpibG9jaykKKyAgICAgICAg
ICAgIHVwZGF0ZURpc3RhbmNlcyhpbnN0LCBsb2NhbERpc3RhbmNlLCBkaXN0YW5jZVRvQmxvY2tF
bmQpOworCisgICAgICAgIGZvciAoQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nl
c3NvckJsb2NrcygpKSB7CisgICAgICAgICAgICBpZiAobGFzdERlZkRpc3RhbmNlW3N1Y2Nlc3Nv
cl0udXBkYXRlRnJvbVByZWNlc3Nvcihsb2NhbERpc3RhbmNlKSkKKyAgICAgICAgICAgICAgICBk
aXJ0eS5hZGQoc3VjY2Vzc29yKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE5vdyB3ZSBw
cm9wYWdhdGUgdGhlIG1pbmltdW1zIGFjY3Jvc3MgYmxvY2tzLgorICAgIGJvb2wgY2hhbmdlZDsK
KyAgICBkbyB7CisgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKworICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIGJsb2NrIDogY29kZSkgeworICAgICAgICAgICAgaWYgKCFkaXJ0eS5yZW1vdmUoYmxv
Y2spKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvLyBMaXR0bGUg
c2hvcnRjdXQ6IGlmIHRoZSBibG9jayBpcyBiaWcgZW5vdWdoLCBwcm9wYWdhdGluZyBpdCB3b24n
dCBhZGQgYW55IGluZm9ybWF0aW9uLgorICAgICAgICAgICAgaWYgKGJsb2NrLT5zaXplKCkgPj0g
bWluaW11bVNhZmVEaXN0YW5jZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgdW5zaWduZWQgYmxvY2tTaXplID0gYmxvY2stPnNpemUoKTsKKyAgICAgICAgICAgIEZQ
RGVmRGlzdGFuY2UmIGJsb2NrRGlzdGFuY2UgPSBsYXN0RGVmRGlzdGFuY2VbYmxvY2tdOworICAg
ICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29yQmxv
Y2tzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobGFzdERlZkRpc3RhbmNlW3N1Y2Nlc3Nvcl0u
dXBkYXRlRnJvbVByZWNlc3NvcihibG9ja0Rpc3RhbmNlLCBibG9ja1NpemUpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGRpcnR5LmFkZChzdWNjZXNzb3IpOworICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKworICAgIC8vIEZpbmFsbHksIHVwZGF0ZSBlYWNo
IGJsb2NrIGFzIG5lZWRlZC4KKyAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KGNvZGUpOwor
ICAgIGZvciAoQmFzaWNCbG9jayogYmxvY2sgOiBjYW5kaWRhdGVzKSB7CisgICAgICAgIHVuc2ln
bmVkIGRpc3RhbmNlVG9CbG9ja0VuZCA9IGJsb2NrLT5zaXplKCk7CisgICAgICAgIEZQRGVmRGlz
dGFuY2UmIGxvY2FsRGlzdGFuY2UgPSBsYXN0RGVmRGlzdGFuY2VbYmxvY2tdOworCisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBibG9jay0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
ICAgIEluc3QmIGluc3QgPSBibG9jay0+YXQoaSk7CisKKyAgICAgICAgICAgIGlmIChoYXNQYXJ0
aWFsWG1tUmVnVXBkYXRlKGluc3QpKSB7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJTZXQgZGVm
czsKKyAgICAgICAgICAgICAgICBSZWdpc3RlclNldCB1c2VzOworICAgICAgICAgICAgICAgIGlu
c3QuZm9yRWFjaFRtcChbJl0gKFRtcCYgdG1wLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICh0bXAuaXNGUFIoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKEFyZzo6aXNEZWYocm9sZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVmcy5zZXQodG1wLmZwcigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcmc6
OmlzQW55VXNlKHJvbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXMuc2V0KHRt
cC5mcHIoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgdmFsdWVzIHdlIGRlZmluZSBidXQg
bm90IHVzZS4gT3RoZXJ3aXNlIHdlIGhhdmUgdG8gd2FpdAorICAgICAgICAgICAgICAgIC8vIGZv
ciB0aGUgdmFsdWUgdG8gYmUgcmVzb2x2ZWQgYW55d2F5LgorICAgICAgICAgICAgICAgIGRlZnMu
ZXhjbHVkZSh1c2VzKTsKKworICAgICAgICAgICAgICAgIGRlZnMuZm9yRWFjaChbJl0gKFJlZyBy
ZWcpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsRGlzdGFuY2UuZGlzdGFuY2VbTWFj
cm9Bc3NlbWJsZXI6OmZwUmVnaXN0ZXJJbmRleChyZWcuZnByKCkpXSA8IG1pbmltdW1TYWZlRGlz
dGFuY2UpCisgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0KGksIE1v
dmVaZXJvVG9Eb3VibGUsIGluc3Qub3JpZ2luLCBUbXAocmVnKSk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHVwZGF0ZURpc3RhbmNlcyhpbnN0LCBs
b2NhbERpc3RhbmNlLCBkaXN0YW5jZVRvQmxvY2tFbmQpOworICAgICAgICB9CisgICAgICAgIGlu
c2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAgICB9Cit9CisKK30gfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVOQUJMRShCM19KSVQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFs
bHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMmVhNjg5MGJkZjIzYzVkNTAwMmRhMGRlN2UxYjE0YTRkNjYxYTFh
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQ
YXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBaXJGaXhQYXJ0aWFsUmVnaXN0
ZXJTdGFsbHNfaAorI2RlZmluZSBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHNfaAorCisjaWYg
RU5BQkxFKEIzX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFj
ZSBBaXIgeworCitjbGFzcyBDb2RlOworCisvLyB4ODYgaGFzIGEgcGlwZWxpbmluZyBoYXphcmQg
Y2F1c2VkIGJ5IGZhbHNlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIGluc3RydWN0aW9ucy4KKy8vCisv
LyBTb21lIGluc3RydWN0aW9ucyB1cGRhdGUgb25seSBwYXJ0IG9mIGEgcmVnaXN0ZXIsIHRoZXkg
Y2FuIG9ubHkgYmUgc2NoZWR1bGVkIGFmdGVyCisvLyB0aGUgcHJldmlvdXMgZGVmaW5pdGlvbiBp
cyBjb21wdXRlZC4gVGhpcyBwcm9ibGVtIGNhbiBiZSBhdm9pZGVkIGJ5IHRoZSBjb21waWxlcgor
Ly8gYnkgZXhwbGljaXRlbHkgcmVzZXR0aW5nIHRoZSBlbnRpcmUgcmVnaXN0ZXIgYmVmb3JlIGV4
ZWN1dGluZyB0aGUgaW5zdHJ1Y3Rpb24gd2l0aAorLy8gcGFydGlhbCB1cGRhdGUuCisvLworLy8g
U2VlICJQYXJ0aWFsIFhNTSBSZWdpc3RlciBTdGFsbHMiIGFuZCAiRGVwZW5kZW5jeSBCcmVha2lu
ZyBJZGlvbXMiIGluIHRoZSBtYW51YWwuCit2b2lkIGZpeFBhcnRpYWxSZWdpc3RlclN0YWxscyhD
b2RlJik7CisKK30gfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzOjpBaXIKKworI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCisKKyNlbmRpZiAvLyBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHNfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAppbmRleCAyODZi
MGM3MmZjNmJkMGJlMzNmZDYwMDJmZWEyMzUzZWFlZjNlYTBlLi42OGU3NmFkMGE5YTAxODVlZWJk
ODM0YzRlMGU0NzVmN2FlM2FkNDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckdlbmVyYXRlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkFpckFsbG9jYXRl
U3RhY2suaCIKICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWlyRWxpbWluYXRlRGVh
ZENvZGUuaCIKKyNpbmNsdWRlICJBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKICNpbmNs
dWRlICJBaXJHZW5lcmF0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIkFpckhhbmRsZUNhbGxlZVNh
dmVzLmgiCiAjaW5jbHVkZSAiQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmcuaCIKQEAgLTk1
LDYgKzk2LDEwIEBAIHZvaWQgcHJlcGFyZUZvckdlbmVyYXRpb24oQ29kZSYgY29kZSkKICAgICAv
LyBmcmVxdWVuY3kgc3VjY2Vzc29yIGlzIGFsc28gdGhlIGZhbGwtdGhyb3VnaCB0YXJnZXQuCiAg
ICAgb3B0aW1pemVCbG9ja09yZGVyKGNvZGUpOwogCisgICAgLy8gQXR0ZW1wdCB0byByZW1vdmUg
ZmFsc2UgZGVwZW5kZW5jaWVzIGJldHdlZW4gaW5zdHJ1Y3Rpb25zIGNyZWF0ZWQgYnkgcGFydGlh
bCByZWdpc3RlciBjaGFuZ2VzLgorICAgIC8vIFRoaXMgbXVzdCBiZSBleGVjdXRlZCBhcyBsYXRl
IGFzIHBvc3NpYmxlIGFzIGl0IGRlcGVuZHMgb24gdGhlIGluc3RydWN0aW9ucyBvcmRlciBhbmQg
cmVnaXN0ZXIgdXNlLgorICAgIGZpeFBhcnRpYWxSZWdpc3RlclN0YWxscyhjb2RlKTsKKwogICAg
IC8vIFRoaXMgaXMgbmVlZGVkIHRvIHNhdGlzZnkgYSByZXF1aXJlbWVudCBvZiBCMzo6U3RhY2tt
YXBWYWx1ZS4KICAgICByZXBvcnRVc2VkUmVnaXN0ZXJzKGNvZGUpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy90ZXN0YjMuY3BwCmluZGV4IGFiNDFiNjIzNGQ2NTgwYzU3OWMxOGU5MjIxNWZiMDNlOTM3
NWQzZGIuLjBkYWQwMzAyNjRjM2Q4N2Q3MDA1N2RjNzM2MmI0Mzc3ZGVlNDc1ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC0yNjY3LDYgKzI2NjcsNDUgQEAgdm9pZCB0ZXN0
U3BpbGxGUCgpCiAgICAgY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIDEuMSwgMi41KTsKIH0K
IAordm9pZCB0ZXN0SW50MzJUb0RvdWJsZVBhcnRpYWxSZWdpc3RlclN0YWxsKCkKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIEJhc2ljQmxvY2sqIGxvb3AgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayog
ZG9uZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIC8vIEhlYWQuCisgICAgVmFsdWUqIHRvdGFs
ID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLik7
CisgICAgVmFsdWUqIGNvdW50ZXIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVXBzaWxvblZhbHVl
KiBvcmlnaW5hbFRvdGFsID0gcm9vdC0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIHRvdGFsKTsKKyAgICBVcHNpbG9uVmFsdWUqIG9yaWdpbmFsQ291bnRlciA9IHJvb3Qt
PmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjb3VudGVyKTsKKyAgICBy
b290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVl
bnRlZEJsb2NrKGxvb3ApKTsKKworICAgIC8vIExvb3AuCisgICAgVmFsdWUqIGxvb3BDb3VudGVy
ID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDY0LCBPcmlnaW4oKSk7Cisg
ICAgVmFsdWUqIGxvb3BUb3RhbCA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBE
b3VibGUsIE9yaWdpbigpKTsKKyAgICBvcmlnaW5hbENvdW50ZXItPnNldFBoaShsb29wQ291bnRl
cik7CisgICAgb3JpZ2luYWxUb3RhbC0+c2V0UGhpKGxvb3BUb3RhbCk7CisKKyAgICBWYWx1ZSog
dHJ1bmNhdGVkQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9y
aWdpbigpLCBsb29wQ291bnRlcik7CisgICAgVmFsdWUqIGRvdWJsZUNvdW50ZXIgPSBsb29wLT5h
cHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCB0cnVuY2F0ZWRDb3VudGVyKTsK
KyAgICBWYWx1ZSogdXBkYXRlZFRvdGFsID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
ZGQsIE9yaWdpbigpLCBkb3VibGVDb3VudGVyLCBsb29wVG90YWwpOworICAgIFVwc2lsb25WYWx1
ZSogdXBkYXRlZFRvdGFsVXBzaWxvbiA9IGxvb3AtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCB1cGRhdGVkVG90YWwpOworICAgIHVwZGF0ZWRUb3RhbFVwc2lsb24tPnNl
dFBoaShsb29wVG90YWwpOworCisgICAgVmFsdWUqIGRlY0NvdW50ZXIgPSBsb29wLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGxvb3BDb3VudGVyLCBsb29wLT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworICAgIFVwc2lsb25WYWx1ZSog
ZGVjQ291bnRlclVwc2lsb24gPSBsb29wLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgZGVjQ291bnRlcik7CisgICAgZGVjQ291bnRlclVwc2lsb24tPnNldFBoaShsb29w
Q291bnRlcik7CisgICAgbG9vcC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHBy
b2MsIEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGRlY0NvdW50ZXIsCisgICAgICAgIEZyZXF1
ZW50ZWRCbG9jayhsb29wKSwgRnJlcXVlbnRlZEJsb2NrKGRvbmUpKTsKKworICAgIC8vIFRhaWwu
CisgICAgZG9uZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwgdXBkYXRlZFRvdGFsKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRv
dWJsZT4ocHJvYywgMTAwMDAwKSwgNTAwMDA1MDAwMC4pKTsKK30KKwogdm9pZCB0ZXN0QnJhbmNo
KCkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTU4ODgsNiArNTkyNyw4IEBAIHZvaWQgcnVu
KGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdFNwaWxsR1AoKSk7CiAgICAgUlVOKHRl
c3RTcGlsbEZQKCkpOwogCisgICAgUlVOKHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVy
U3RhbGwoKSk7CisKICAgICBSVU4odGVzdENhbGxTaW1wbGUoMSwgMikpOwogICAgIFJVTih0ZXN0
Q2FsbEZ1bmN0aW9uV2l0aEhlbGxhQXJndW1lbnRzKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266433</attachid>
            <date>2015-12-01 23:55:19 -0800</date>
            <delta_ts>2015-12-02 09:56:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151735-20151201235455.patch</filename>
            <type>text/plain</type>
            <size>27550</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyOTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YmNlNDk0MmQ2OTU0MDgyMGY0ODAwY2JjMDY4YWZmMTA5ZGE2ZGFmLi5lODEyNjE2ZDMxNmM4Njlk
ZGE2M2E0MTg3ODZlOWFkNWMwNTUxNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxNS0xMi0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBIYW5kbGUgeDg2IHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGxz
IGluIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxNzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGEgcHJpbWl0aXZlIGZhbHNlLWRlcGVuZGVuY3kgYnJlYWtpbmcKKyAg
ICAgICAgYWxnb3JpdGhtIHRvIEFpci4gV2UgbG9vayBmb3IgcmVkZWZpbml0aW9uIG9mIHRoZSBz
YW1lCisgICAgICAgIHZhcmlhYmxlIHRoYXQgaXMgdG9vIGNsb3NlIHRvIGEgcGFydGlhbCBkZWZp
bml0aW9uLgorCisgICAgICAgIFRoZXJlIGlzIG5vdCBleHBsaWNpdCBkZXBlbmRlbmN5IHRyYWNr
aW5nIGdvaW5nIG9uLAorICAgICAgICBidXQgaXQgaXMgcHJldHR5IGZhc3QgYW5kIHRoZSBleHRy
YSB4b3JwcyBhZGRlZCBvbiBmYWxzZS1wb3NpdGl2ZXMKKyAgICAgICAgYXJlIGNoZWFwIGFueXdh
eS4KKworICAgICAgICBUeXBpY2FsbHksIHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGxzIGFwcGVhciBm
cm9tIGluc3RydWN0aW9ucworICAgICAgICBpbnRlcmZlcmluZyB3aXRoIHRoZW1zZWx2ZXMgaW4g
c21hbGwgbG9vcHMuIFNvbWV0aGluZyBsaWtlOgorCisgICAgICAgICAgTGFiZWwwOgorICAgICAg
ICAgICAgY3Z0c2kyc2RxICVlYXgsICV4bW0wCisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAg
IGptcCBMYWJlbDAKKworICAgICAgICBUaG9zZSBhcmUgY29ycmVjdGx5IGRldGVjdGVkIGJ5IHBy
b3BhZ2F0aW5nIHRoZSBsb2NhbCBkaXN0YW5jZQorICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIGJs
b2NrIHRvIGJsb2NrIHVudGlsIG5vIHVuc2FmZSBjaGFpbiBpcyBmb3VuZC4KKworICAgICAgICBU
aGUgdGVzdCB0ZXN0SW50MzJUb0RvdWJsZVBhcnRpYWxSZWdpc3RlclN0YWxsKCkgY2hlY2tzIHRo
ZSBraW5kCisgICAgICAgIG9mIGNhc2VzIHdlIHR5cGljYWxseSBmaW5kIGZyb20gSmF2YVNjcmlw
dC4KKyAgICAgICAgVGhlIGV4ZWN1dGlvbiB0aW1lIGlzIDIwJSBmYXN0ZXIgd2l0aCBhIHJlZ2lz
dGVyIHJlc2V0ICh3aGljaCBpcworICAgICAgICBhc3RvdW5kaW5nIHNpbmNlIHRoZSB2ZXJ5IG5l
eHQgaW5zdHJ1Y3Rpb24gaGFzIGEgcmVhbCBkZXBlbmRlbmN5KS4KKworICAgICAgICBGdXR1cmUg
dHdlYWtzIHdpbGwgYmUgbmVlZGVkIHdoZW4gd2UgY2FuIHJ1biBtb3JlIEphdmFTY3JpcHQ6Cisg
ICAgICAgIC1IYW5kbGUgZnVuY3Rpb24gY2FsbHMgZGlmZmVyZW50bHkuCisgICAgICAgIC1Bbnl0
aGluZyB3aXRoIGEgc3BlY2lhbCBjYW4gaGF2ZSBoaWRkZW4gaW5zdHJ1Y3Rpb25zLgorICAgICAg
ICAgV2UgbmVlZCB0byB0YWtlIHRoZW0gaW50byBhY2NvdW50LgorCisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJY
ODZDb21tb246Om1vdmVaZXJvVG9Eb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3Jwc19ycik6CisgICAgICAg
IChKU0M6Olg4NkFzc2VtYmxlcjo6eG9ycGRfcnIpOgorICAgICAgICBBY2NvcmRpbmcgdG8gdGhl
IGRvY3VtZW50YXRpb24sIHN0YXJ0aW5nIHdpdGggU2FuZHkgQnJpZGdlLAorICAgICAgICByZWdp
c3RlcnMgcmVzZXQgY2FuIGJlIGRvbmUgaW4gdGhlIGZyb250ZW5kIHdpdGggeG9ycHMuCisKKyAg
ICAgICAgKiBiMy9CM0luZGV4U2V0Lmg6CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6cmVt
b3ZlKToKKyAgICAgICAgKiBiMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6OmZpeFBhcnRpYWxSZWdpc3RlclN0YWxscyk6
CisgICAgICAgICogYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oOiBBZGRlZC4K
KyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpwcmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyU3RhbGwpOgorICAg
ICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAgICAgKiBqaXQvRlBSSW5mby5oOgorCiAyMDE1LTEy
LTAxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtF
UzZdIEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBh
bmQgZW5hYmxlIHRoaXMgZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAz
MzliMzQwNGE4YjY5ZTY2OWNiYTJjYmU5N2ExMDhlZGY5YzVhMjVmLi5kMjNiMDgwOGNmNzBmZGE3
MTdkYzEwNDViNDVkYTgxOTg2Y2QyNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTA4Niw2ICsxMDg2LDggQEAKIAkJMUFDRjczNzcxNzFDQTZGQjAwQzlCQjFFIC8qIFdlYWsu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDRjcz
NzYxNzFDQTZGQjAwQzlCQjFFIC8qIFdlYWsuY3BwICovOyB9OwogCQkyNjAwQjVBNjE1MkJBQUE3
MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5n
Sm9pbmVyLmNwcCAqLzsgfTsKIAkJMjYwMEI1QTcxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5n
Sm9pbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
NjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLzsgfTsKKwkJMjYy
RDg1QjYxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjJEODVCNDFD
MEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcCAqLzsgfTsK
KwkJMjYyRDg1QjcxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxs
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYyRDg1
QjUxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oICovOyB9
OwogCQkyNjcxOEJBNDFCRTk5Rjc4MDA1MjAxN0IgLyogQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxl
c2NpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjY3MThCQTIxQkU5OUY3ODAwNTIwMTdCIC8qIEFpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5n
LmNwcCAqLzsgfTsKIAkJMjY3MThCQTUxQkU5OUY3ODAwNTIwMTdCIC8qIEFpckl0ZXJhdGVkUmVn
aXN0ZXJDb2FsZXNjaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNjcxOEJBMzFCRTk5Rjc4MDA1MjAxN0IgLyogQWlySXRlcmF0ZWRSZWdpc3RlckNv
YWxlc2NpbmcuaCAqLzsgfTsKIAkJMjY4NEQ0MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVu
ZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjg0
RDQzNzFDMDAxNjFDMDA4MUQ2NjMgLyogQWlyTGl2ZW5lc3MuaCAqLzsgfTsKQEAgLTMxMzgsNiAr
MzE0MCw4IEBACiAJCTFDQUE4QjRCMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0Q29yZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNT
dHJpbmdKb2luZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNT
dHJpbmdKb2luZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNTE1
MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMjYyRDg1QjQxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxs
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJGaXhQYXJ0aWFs
UmVnaXN0ZXJTdGFsbHMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0
YWxscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2MkQ4NUI1MUMwRDY1MEYw
MDZBQ0I2MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmg7IHBhdGggPSBi
My9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI2NDA5MUZBMUJFMkZENDEwMDY4NERCMiAvKiBBaXJPcGNvZGUub3Bjb2RlcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5h
bWUgPSBBaXJPcGNvZGUub3Bjb2RlczsgcGF0aCA9IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY3MThCQTIxQkU5OUY3ODAwNTIwMTdCIC8q
IEFpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEFpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcDsgcGF0aCA9
IGIzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI2NzE4QkEzMUJFOTlGNzgwMDUyMDE3QiAvKiBBaXJJdGVyYXRlZFJl
Z2lzdGVyQ29hbGVzY2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJJ
dGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5oOyBwYXRoID0gYjMvYWlyL0Fpckl0ZXJhdGVkUmVn
aXN0ZXJDb2FsZXNjaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjU1LDYg
KzQ2NTksOCBAQAogCQkJCTBGRUM4NTUxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmggKi8s
CiAJCQkJMEY0NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmNw
cCAqLywKIAkJCQkwRjQ1NzAzNzFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENv
ZGUuaCAqLywKKwkJCQkyNjJEODVCNDFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJl
Z2lzdGVyU3RhbGxzLmNwcCAqLywKKwkJCQkyNjJEODVCNTFDMEQ2NTBGMDA2QUNCNjEgLyogQWly
Rml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmggKi8sCiAJCQkJMEZFQzg1NTIxQkRBQ0RDNzAwODBG
Rjc0IC8qIEFpckZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NTUzMUJEQUNEQzcwMDgw
RkY3NCAvKiBBaXJHZW5lcmF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg1NTQxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckdlbmVyYXRlLmggKi8sCkBAIC03ODQxLDYgKzc4NDcsNyBAQAogCQkJCTg2NzA0Qjg3
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4
ODEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3
MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkyNjJEODVCNzFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5
bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtODc1NCw2ICs4NzYxLDcgQEAKIAkJCQlBMUI5RTIz
RDFCNEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxE
YXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI2MkQ4NUI2
MUMwRDY1MEYwMDZBQ0I2MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzBCNzkxOUIxQzAyNEE0NjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVu
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENzExQjREQzE0MTAwRDY5ODQ5IC8q
IEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUQ3
OTJGQzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAppbmRleCA5Y2VjZGI0M2E1OWRlNGRmM2FlMDcyMzdkY2Q3ZTk1
YzBkMWZiYjRiLi4xYjY5M2M1MGQxMTI0YmVmZmVjODZmM2Q3YmM1Y2Q2ZDBhMTRiZGJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbi5oCkBAIC05OTYsNyArOTk2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBt
b3ZlWmVyb1RvRG91YmxlKEZQUmVnaXN0ZXJJRCByZWcpCiAgICAgewotICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JwZF9ycihyZWcsIHJlZyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnBzX3JyKHJl
ZywgcmVnKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3Rl
cklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCAzMGE0MTU2MWQ2M2YyZDA4ZjdkZDk1ZWE3
NDBiNDg2MzA3MzEzNzUwLi42NTNjMzhkODg3M2E1ZDJjNWUxOTJiMTBlY2MzZjUxMjgwOWUxNmI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgK
QEAgLTIxMjAsOCArMjEyMCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5
dGVPcChPUDJfRElWU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CiAg
ICAgfQogCisgICAgdm9pZCB4b3Jwc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hPUlBEX1Zw
ZFdwZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgIH0KKwogICAgIHZv
aWQgeG9ycGRfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsK
KyAgICAgICAgaWYgKHNyYyA9PSBkc3QpIHsKKyAgICAgICAgICAgIHhvcnBzX3JyKHNyYywgZHN0
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBtX2Zvcm1hdHRlci5w
cmVmaXgoUFJFX1NTRV82Nik7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWE9S
UERfVnBkV3BkLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4U2V0LmgKaW5kZXggNzcyYzUxMTc2OTU5YzcwNzY1MDQ5
NmI0M2QyNTYzMWQ2NTVhMmZiNC4uMDVmZTQyODIwOWFkZjI0ZGJjZjJjMDY1NjM5OGQ5OTFlNGM0
NDExNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleFNldC5oCkBAIC00OCw2ICs0OCwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhbV9zZXQuc2V0KHZhbHVlLT5pbmRleCgpKTsK
ICAgICB9CiAKKyAgICBib29sIHJlbW92ZShUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3NldC5jbGVhcih2YWx1ZS0+aW5kZXgoKSk7CisgICAgfQorCiAgICAgYm9vbCBjb250YWlu
cyhUKiB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxs
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3Rl
clN0YWxscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFjYjRlY2Y4MzI4YmU3NjU4ZTU2NWU1NDk2MDk4ZTAx
Njg5OThmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcApAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKKworI2lmIEVOQUJM
RShCM19KSVQpCisKKyNpbmNsdWRlICJBaXJCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQWlyQ29k
ZS5oIgorI2luY2x1ZGUgIkFpckluc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkFpckluc3QuaCIK
KyNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIK
KyNpbmNsdWRlICJCM0luZGV4TWFwLmgiCisjaW5jbHVkZSAiQjNJbmRleFNldC5oIgorI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK25hbWVzcGFjZSB7CisK
K2Jvb2wgaGFzUGFydGlhbFhtbVJlZ1VwZGF0ZShjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHN3
aXRjaCAoaW5zdC5vcGNvZGUpIHsKKyAgICBjYXNlIENvbnZlcnRJbnQzMlRvRG91YmxlOgorICAg
IGNhc2UgQ29udmVydEludDY0VG9Eb3VibGU6CisgICAgY2FzZSBTcXJ0RG91YmxlOgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIGZhbHNlOworfQorCitib29sIGlzRGVwZW5kZW5jeUJyZWFraW5nKGNvbnN0IEluc3Qm
IGluc3QpCit7CisgICAgLy8gInhvcnBzIHJlZywgcmVnIiBpcyB1c2VkIGJ5IHRoZSBmcm9udGVu
ZCB0byByZW1vdmUgdGhlIGRlcGVuZGVuY3kgb24gaXRzIGFyZ3VtZW50LgorICAgIHJldHVybiBp
bnN0Lm9wY29kZSA9PSBNb3ZlWmVyb1RvRG91YmxlOworfQorCisvLyBGSVhNRTogZmluZCBhIGdv
b2QgZGlzdGFuY2UgcGVyIGFyY2hpdGVjdHVyZSBleHBlcmltZW50YWxseS4KKy8vIExMVk0gdXNl
cyBhIGRpc3RhbmNlIG9mIDE2IGJ1dCB0aGF0IGNvbWVzIGZyb20gTmVoYWxlbS4KK3Vuc2lnbmVk
IGNoYXIgbWluaW11bVNhZmVEaXN0YW5jZSA9IDE2OworCitzdHJ1Y3QgRlBEZWZEaXN0YW5jZSB7
CisgICAgRlBEZWZEaXN0YW5jZSgpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mRlBSZWdpc3RlcnMoKTsgKytpKQorICAgICAg
ICAgICAgZGlzdGFuY2VbaV0gPSAyNTU7CisgICAgfQorCisgICAgdm9pZCByZXNldChGUFJSZWcg
cmVnKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBNYWNyb0Fzc2VtYmxlcjo6ZnBS
ZWdpc3RlckluZGV4KHJlZyk7CisgICAgICAgIGRpc3RhbmNlW2luZGV4XSA9IDI1NTsKKyAgICB9
CisKKyAgICB2b2lkIGFkZChGUFJSZWcgcmVnLCB1bnNpZ25lZCByZWdpc3RlckRpc3RhbmNlKQor
ICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBNYWNyb0Fzc2VtYmxlcjo6ZnBSZWdpc3Rl
ckluZGV4KHJlZyk7CisgICAgICAgIGlmIChyZWdpc3RlckRpc3RhbmNlIDwgZGlzdGFuY2VbaW5k
ZXhdKQorICAgICAgICAgICAgZGlzdGFuY2VbaW5kZXhdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4ocmVnaXN0ZXJEaXN0YW5jZSk7CisgICAgfQorCisgICAgYm9vbCB1cGRhdGVGcm9tUHJl
Y2Vzc29yKEZQRGVmRGlzdGFuY2UmIHByZWNlc3NvckRpc3RhbmNlLCB1bnNpZ25lZCBjb25zdGFu
dE9mZnNldCA9IDApCisgICAgeworICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZkZQUmVn
aXN0ZXJzKCk7ICsraSkgeworICAgICAgICAgICAgdW5zaWduZWQgcmVnRGlzdGFuY2UgPSBwcmVj
ZXNzb3JEaXN0YW5jZS5kaXN0YW5jZVtpXSArIGNvbnN0YW50T2Zmc2V0OworICAgICAgICAgICAg
aWYgKHJlZ0Rpc3RhbmNlIDwgbWluaW11bVNhZmVEaXN0YW5jZSAmJiByZWdEaXN0YW5jZSA8IGRp
c3RhbmNlW2ldKSB7CisgICAgICAgICAgICAgICAgZGlzdGFuY2VbaV0gPSByZWdEaXN0YW5jZTsK
KyAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjaGFyIGRp
c3RhbmNlW01hY3JvQXNzZW1ibGVyOjpudW1iZXJPZkZQUmVnaXN0ZXJzKCldOworfTsKKwordm9p
ZCB1cGRhdGVEaXN0YW5jZXMoSW5zdCYgaW5zdCwgRlBEZWZEaXN0YW5jZSYgbG9jYWxEaXN0YW5j
ZSwgdW5zaWduZWQmIGRpc3RhbmNlVG9CbG9ja0VuZCkKK3sKKyAgICAtLWRpc3RhbmNlVG9CbG9j
a0VuZDsKKworICAgIGlmIChpc0RlcGVuZGVuY3lCcmVha2luZyhpbnN0KSkgeworICAgICAgICBs
b2NhbERpc3RhbmNlLnJlc2V0KGluc3QuYXJnc1swXS50bXAoKS5mcHIoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpbnN0LmZvckVhY2hUbXAoWyZdIChUbXAmIHRtcCwgQXJnOjpS
b2xlIHJvbGUsIEFyZzo6VHlwZSkgeworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHRtcC5p
c1JlZygpLCAiVGhpcyBwaGFzZSBtdXN0IGJlIHJ1biBhZnRlciByZWdpc3RlciBhbGxvY2F0aW9u
LiIpOworCisgICAgICAgIGlmICh0bXAuaXNGUFIoKSAmJiBBcmc6OmlzRGVmKHJvbGUpKQorICAg
ICAgICAgICAgbG9jYWxEaXN0YW5jZS5hZGQodG1wLmZwcigpLCBkaXN0YW5jZVRvQmxvY2tFbmQp
OworICAgIH0pOworfQorCit9CisKK3ZvaWQgZml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzKENvZGUm
IGNvZGUpCit7CisgICAgaWYgKCFpc1g4NigpKQorICAgICAgICByZXR1cm47CisKKyAgICBQaGFz
ZVNjb3BlIHBoYXNlU2NvcGUoY29kZSwgImZpeFBhcnRpYWxSZWdpc3RlclN0YWxscyIpOworCisg
ICAgVmVjdG9yPEJhc2ljQmxvY2sqPiBjYW5kaWRhdGVzOworCisgICAgZm9yIChCYXNpY0Jsb2Nr
KiBibG9jayA6IGNvZGUpIHsKKyAgICAgICAgZm9yIChjb25zdCBJbnN0JiBpbnN0IDogKmJsb2Nr
KSB7CisgICAgICAgICAgICBpZiAoaGFzUGFydGlhbFhtbVJlZ1VwZGF0ZShpbnN0KSkgeworICAg
ICAgICAgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZvcnR1bmF0
ZWx5LCBQYXJ0aWFsIFN0YWxscyBhcmUgcmFyZWx5IHVzZWQuIFJldHVybiBlYXJseSBpZiBubyBi
bG9jaworICAgIC8vIGNhcmVzIGFib3V0IHRoZW0uCisgICAgaWYgKGNhbmRpZGF0ZXMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGb3IgZWFjaCBibG9jaywgdGhpcyBwcm92
aWRlcyB0aGUgZGlzdGFuY2UgdG8gdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gc2V0dGluZyBlYWNoIHJl
Z2lzdGVyCisgICAgLy8gb24gYmxvY2sgKmVudHJ5Ki4KKyAgICBJbmRleE1hcDxCYXNpY0Jsb2Nr
LCBGUERlZkRpc3RhbmNlPiBsYXN0RGVmRGlzdGFuY2UoY29kZS5zaXplKCkpOworCisgICAgLy8g
QmxvY2tzIHdpdGggZGlydHkgZGlzdGFuY2UgYXQgaGVhZC4KKyAgICBJbmRleFNldDxCYXNpY0Js
b2NrPiBkaXJ0eTsKKworICAgIC8vIEZpcnN0LCB3ZSBjb21wdXRlIHRoZSBsb2NhbCBkaXN0YW5j
ZSBmb3IgZWFjaCBibG9jayBhbmQgcHVzaCBpdCB0byB0aGUgc3VjY2Vzc29ycy4KKyAgICBmb3Ig
KEJhc2ljQmxvY2sqIGJsb2NrIDogY29kZSkgeworICAgICAgICBGUERlZkRpc3RhbmNlIGxvY2Fs
RGlzdGFuY2U7CisKKyAgICAgICAgdW5zaWduZWQgZGlzdGFuY2VUb0Jsb2NrRW5kID0gYmxvY2st
PnNpemUoKTsKKyAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKQorICAgICAgICAgICAg
dXBkYXRlRGlzdGFuY2VzKGluc3QsIGxvY2FsRGlzdGFuY2UsIGRpc3RhbmNlVG9CbG9ja0VuZCk7
CisKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29y
QmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGlmIChsYXN0RGVmRGlzdGFuY2Vbc3VjY2Vzc29yXS51
cGRhdGVGcm9tUHJlY2Vzc29yKGxvY2FsRGlzdGFuY2UpKQorICAgICAgICAgICAgICAgIGRpcnR5
LmFkZChzdWNjZXNzb3IpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTm93IHdlIHByb3Bh
Z2F0ZSB0aGUgbWluaW11bXMgYWNjcm9zcyBibG9ja3MuCisgICAgYm9vbCBjaGFuZ2VkOworICAg
IGRvIHsKKyAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworCisgICAgICAgIGZvciAoQmFzaWNCbG9j
ayogYmxvY2sgOiBjb2RlKSB7CisgICAgICAgICAgICBpZiAoIWRpcnR5LnJlbW92ZShibG9jaykp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIC8vIExpdHRsZSBzaG9y
dGN1dDogaWYgdGhlIGJsb2NrIGlzIGJpZyBlbm91Z2gsIHByb3BhZ2F0aW5nIGl0IHdvbid0IGFk
ZCBhbnkgaW5mb3JtYXRpb24uCisgICAgICAgICAgICBpZiAoYmxvY2stPnNpemUoKSA+PSBtaW5p
bXVtU2FmZURpc3RhbmNlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAg
ICB1bnNpZ25lZCBibG9ja1NpemUgPSBibG9jay0+c2l6ZSgpOworICAgICAgICAgICAgRlBEZWZE
aXN0YW5jZSYgYmxvY2tEaXN0YW5jZSA9IGxhc3REZWZEaXN0YW5jZVtibG9ja107CisgICAgICAg
ICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JCbG9ja3Mo
KSkgeworICAgICAgICAgICAgICAgIGlmIChsYXN0RGVmRGlzdGFuY2Vbc3VjY2Vzc29yXS51cGRh
dGVGcm9tUHJlY2Vzc29yKGJsb2NrRGlzdGFuY2UsIGJsb2NrU2l6ZSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZGlydHkuYWRkKHN1Y2Nlc3Nvcik7CisgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0gd2hpbGUgKGNoYW5nZWQpOworCisgICAgLy8gRmluYWxseSwgdXBkYXRlIGVhY2ggYmxv
Y2sgYXMgbmVlZGVkLgorICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQoY29kZSk7CisgICAg
Zm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNhbmRpZGF0ZXMpIHsKKyAgICAgICAgdW5zaWduZWQg
ZGlzdGFuY2VUb0Jsb2NrRW5kID0gYmxvY2stPnNpemUoKTsKKyAgICAgICAgRlBEZWZEaXN0YW5j
ZSYgbG9jYWxEaXN0YW5jZSA9IGxhc3REZWZEaXN0YW5jZVtibG9ja107CisKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
SW5zdCYgaW5zdCA9IGJsb2NrLT5hdChpKTsKKworICAgICAgICAgICAgaWYgKGhhc1BhcnRpYWxY
bW1SZWdVcGRhdGUoaW5zdCkpIHsKKyAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBkZWZzOwor
ICAgICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZXM7CisgICAgICAgICAgICAgICAgaW5zdC5m
b3JFYWNoVG1wKFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHRtcC5pc0ZQUigpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoQXJnOjppc0RlZihyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZWZzLnNldCh0bXAuZnByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNB
bnlVc2Uocm9sZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcy5zZXQodG1wLmZw
cigpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCB2YWx1ZXMgd2UgZGVmaW5lIGJ1dCBub3Qg
dXNlLiBPdGhlcndpc2Ugd2UgaGF2ZSB0byB3YWl0CisgICAgICAgICAgICAgICAgLy8gZm9yIHRo
ZSB2YWx1ZSB0byBiZSByZXNvbHZlZCBhbnl3YXkuCisgICAgICAgICAgICAgICAgZGVmcy5leGNs
dWRlKHVzZXMpOworCisgICAgICAgICAgICAgICAgZGVmcy5mb3JFYWNoKFsmXSAoUmVnIHJlZykg
eworICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxEaXN0YW5jZS5kaXN0YW5jZVtNYWNyb0Fz
c2VtYmxlcjo6ZnBSZWdpc3RlckluZGV4KHJlZy5mcHIoKSldIDwgbWluaW11bVNhZmVEaXN0YW5j
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoaSwgTW92ZVpl
cm9Ub0RvdWJsZSwgaW5zdC5vcmlnaW4sIFRtcChyZWcpKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlRGlzdGFuY2VzKGluc3QsIGxvY2Fs
RGlzdGFuY2UsIGRpc3RhbmNlVG9CbG9ja0VuZCk7CisgICAgICAgIH0KKyAgICAgICAgaW5zZXJ0
aW9uU2V0LmV4ZWN1dGUoYmxvY2spOworICAgIH0KK30KKworfSB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjMyZWE2ODkwYmRmMjNjNWQ1MDAyZGEwZGU3ZTFiMTRhNGQ2NjFhMWEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRp
YWxSZWdpc3RlclN0YWxscy5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0
YWxsc19oCisjZGVmaW5lIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxsc19oCisKKyNpZiBFTkFC
TEUoQjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFp
ciB7CisKK2NsYXNzIENvZGU7CisKKy8vIHg4NiBoYXMgYSBwaXBlbGluaW5nIGhhemFyZCBjYXVz
ZWQgYnkgZmFsc2UgZGVwZW5kZW5jaWVzIGJldHdlZW4gaW5zdHJ1Y3Rpb25zLgorLy8KKy8vIFNv
bWUgaW5zdHJ1Y3Rpb25zIHVwZGF0ZSBvbmx5IHBhcnQgb2YgYSByZWdpc3RlciwgdGhleSBjYW4g
b25seSBiZSBzY2hlZHVsZWQgYWZ0ZXIKKy8vIHRoZSBwcmV2aW91cyBkZWZpbml0aW9uIGlzIGNv
bXB1dGVkLiBUaGlzIHByb2JsZW0gY2FuIGJlIGF2b2lkZWQgYnkgdGhlIGNvbXBpbGVyCisvLyBi
eSBleHBsaWNpdGVseSByZXNldHRpbmcgdGhlIGVudGlyZSByZWdpc3RlciBiZWZvcmUgZXhlY3V0
aW5nIHRoZSBpbnN0cnVjdGlvbiB3aXRoCisvLyBwYXJ0aWFsIHVwZGF0ZS4KKy8vCisvLyBTZWUg
IlBhcnRpYWwgWE1NIFJlZ2lzdGVyIFN0YWxscyIgYW5kICJEZXBlbmRlbmN5IEJyZWFraW5nIElk
aW9tcyIgaW4gdGhlIG1hbnVhbC4KK3ZvaWQgZml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzKENvZGUm
KTsKKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxF
KEIzX0pJVCkKKworI2VuZGlmIC8vIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxsc19oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IDI4NmIwYzcy
ZmM2YmQwYmUzM2ZkNjAwMmZlYTIzNTNlYWVmM2VhMGUuLjY4ZTc2YWQwYTlhMDE4NWVlYmQ4MzRj
NGUwZTQ3NWY3YWUzYWQ0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyR2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
R2VuZXJhdGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQWlyQWxsb2NhdGVTdGFj
ay5oIgogI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJBaXJFbGltaW5hdGVEZWFkQ29k
ZS5oIgorI2luY2x1ZGUgIkFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oIgogI2luY2x1ZGUg
IkFpckdlbmVyYXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiQWlySGFuZGxlQ2FsbGVlU2F2ZXMu
aCIKICNpbmNsdWRlICJBaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5oIgpAQCAtOTUsNiAr
OTYsMTAgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgIC8vIGZy
ZXF1ZW5jeSBzdWNjZXNzb3IgaXMgYWxzbyB0aGUgZmFsbC10aHJvdWdoIHRhcmdldC4KICAgICBv
cHRpbWl6ZUJsb2NrT3JkZXIoY29kZSk7CiAKKyAgICAvLyBBdHRlbXB0IHRvIHJlbW92ZSBmYWxz
ZSBkZXBlbmRlbmNpZXMgYmV0d2VlbiBpbnN0cnVjdGlvbnMgY3JlYXRlZCBieSBwYXJ0aWFsIHJl
Z2lzdGVyIGNoYW5nZXMuCisgICAgLy8gVGhpcyBtdXN0IGJlIGV4ZWN1dGVkIGFzIGxhdGUgYXMg
cG9zc2libGUgYXMgaXQgZGVwZW5kcyBvbiB0aGUgaW5zdHJ1Y3Rpb25zIG9yZGVyIGFuZCByZWdp
c3RlciB1c2UuCisgICAgZml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzKGNvZGUpOworCiAgICAgLy8g
VGhpcyBpcyBuZWVkZWQgdG8gc2F0aXNmeSBhIHJlcXVpcmVtZW50IG9mIEIzOjpTdGFja21hcFZh
bHVlLgogICAgIHJlcG9ydFVzZWRSZWdpc3RlcnMoY29kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAKaW5kZXggYWI0MWI2MjM0ZDY1ODBjNTc5YzE4ZTkyMjE1ZmIwM2U5Mzc1ZDNk
Yi4uYjIwN2ZhYzE4MTA2M2FmODVkZTFhZDBlM2IwZDZiMDM5OGM4MmNlZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTI2NjcsNiArMjY2NywxMDYgQEAgdm9pZCB0ZXN0U3Bp
bGxGUCgpCiAgICAgY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIDEuMSwgMi41KTsKIH0KIAor
dm9pZCB0ZXN0SW50MzJUb0RvdWJsZVBhcnRpYWxSZWdpc3RlclN0YWxsKCkKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IEJhc2ljQmxvY2sqIGxvb3AgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZG9u
ZSA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIC8vIEhlYWQuCisgICAgVmFsdWUqIHRvdGFsID0g
cm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLik7Cisg
ICAgVmFsdWUqIGNvdW50ZXIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVXBzaWxvblZhbHVlKiBv
cmlnaW5hbFRvdGFsID0gcm9vdC0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIHRvdGFsKTsKKyAgICBVcHNpbG9uVmFsdWUqIG9yaWdpbmFsQ291bnRlciA9IHJvb3QtPmFw
cGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjb3VudGVyKTsKKyAgICByb290
LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRl
ZEJsb2NrKGxvb3ApKTsKKworICAgIC8vIExvb3AuCisgICAgVmFsdWUqIGxvb3BDb3VudGVyID0g
bG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDY0LCBPcmlnaW4oKSk7CisgICAg
VmFsdWUqIGxvb3BUb3RhbCA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBEb3Vi
bGUsIE9yaWdpbigpKTsKKyAgICBvcmlnaW5hbENvdW50ZXItPnNldFBoaShsb29wQ291bnRlcik7
CisgICAgb3JpZ2luYWxUb3RhbC0+c2V0UGhpKGxvb3BUb3RhbCk7CisKKyAgICBWYWx1ZSogdHJ1
bmNhdGVkQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdp
bigpLCBsb29wQ291bnRlcik7CisgICAgVmFsdWUqIGRvdWJsZUNvdW50ZXIgPSBsb29wLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCB0cnVuY2F0ZWRDb3VudGVyKTsKKyAg
ICBWYWx1ZSogdXBkYXRlZFRvdGFsID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQs
IE9yaWdpbigpLCBkb3VibGVDb3VudGVyLCBsb29wVG90YWwpOworICAgIFVwc2lsb25WYWx1ZSog
dXBkYXRlZFRvdGFsVXBzaWxvbiA9IGxvb3AtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCB1cGRhdGVkVG90YWwpOworICAgIHVwZGF0ZWRUb3RhbFVwc2lsb24tPnNldFBo
aShsb29wVG90YWwpOworCisgICAgVmFsdWUqIGRlY0NvdW50ZXIgPSBsb29wLT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGxvb3BDb3VudGVyLCBsb29wLT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworICAgIFVwc2lsb25WYWx1ZSogZGVj
Q291bnRlclVwc2lsb24gPSBsb29wLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmln
aW4oKSwgZGVjQ291bnRlcik7CisgICAgZGVjQ291bnRlclVwc2lsb24tPnNldFBoaShsb29wQ291
bnRlcik7CisgICAgbG9vcC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2Ms
IEJyYW5jaCwgT3JpZ2luKCksCisgICAgICAgIGRlY0NvdW50ZXIsCisgICAgICAgIEZyZXF1ZW50
ZWRCbG9jayhsb29wKSwgRnJlcXVlbnRlZEJsb2NrKGRvbmUpKTsKKworICAgIC8vIFRhaWwuCisg
ICAgZG9uZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwg
dXBkYXRlZFRvdGFsKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJs
ZT4ocHJvYywgMTAwMDAwKSwgNTAwMDA1MDAwMC4pKTsKK30KKwordm9pZCB0ZXN0SW50MzJUb0Rv
dWJsZVBhcnRpYWxSZWdpc3RlcldpdGhvdXRTdGFsbCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7
CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2Nr
KiBsb29wID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFk
ZEJsb2NrKCk7CisKKyAgICAvLyBIZWFkLgorICAgIFZhbHVlKiB0b3RhbCA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMC4pOworICAgIFZhbHVlKiBj
b3VudGVyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFVwc2lsb25WYWx1ZSogb3JpZ2luYWxUb3Rh
bCA9IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0b3RhbCk7
CisgICAgVXBzaWxvblZhbHVlKiBvcmlnaW5hbENvdW50ZXIgPSByb290LT5hcHBlbmROZXc8VXBz
aWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgY291bnRlcik7CisgICAgdWludDY0X3QgZm9yUGFk
ZGluZ0lucHV0OworICAgIFZhbHVlKiBmb3JQYWRkaW5nSW5wdXRBZGRyZXNzID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmZm9yUGFkZGluZ0lucHV0KTsK
KyAgICB1aW50NjRfdCBmb3JQYWRkaW5nT3V0cHV0OworICAgIFZhbHVlKiBmb3JQYWRkaW5nT3V0
cHV0QWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgJmZvclBhZGRpbmdPdXRwdXQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+
KHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2sobG9vcCkpOworCisgICAgLy8g
TG9vcC4KKyAgICBWYWx1ZSogbG9vcENvdW50ZXIgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFBoaSwgSW50NjQsIE9yaWdpbigpKTsKKyAgICBWYWx1ZSogbG9vcFRvdGFsID0gbG9vcC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIERvdWJsZSwgT3JpZ2luKCkpOworICAgIG9yaWdp
bmFsQ291bnRlci0+c2V0UGhpKGxvb3BDb3VudGVyKTsKKyAgICBvcmlnaW5hbFRvdGFsLT5zZXRQ
aGkobG9vcFRvdGFsKTsKKworICAgIFZhbHVlKiB0cnVuY2F0ZWRDb3VudGVyID0gbG9vcC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIGxvb3BDb3VudGVyKTsKKyAgICBW
YWx1ZSogZG91YmxlQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwg
T3JpZ2luKCksIHRydW5jYXRlZENvdW50ZXIpOworICAgIFZhbHVlKiB1cGRhdGVkVG90YWwgPSBs
b29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGRvdWJsZUNvdW50ZXIs
IGxvb3BUb3RhbCk7CisKKyAgICAvLyBBZGQgZW5vdWdoIHBhZGRpbmcgaW5zdHJ1Y3Rpb25zIHRv
IGF2b2lkIGEgc3RhbGwuCisgICAgVmFsdWUqIGxvYWRQYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3
PE1lbW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGZvclBhZGRpbmdJbnB1
dEFkZHJlc3MpOworICAgIFZhbHVlKiBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXRYb3IsIE9yaWdpbigpLCBsb2FkUGFkZGluZywgbG9vcENvdW50ZXIpOworICAgIHBh
ZGRpbmcgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHBhZGRp
bmcsIGxvb3BDb3VudGVyKTsKKyAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihw
cm9jLCBCaXRPciwgT3JpZ2luKCksIHBhZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAgICBwYWRkaW5n
ID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBwYWRkaW5nLCBs
b29wQ291bnRlcik7CisgICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
Qml0WG9yLCBPcmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOworICAgIHBhZGRpbmcgPSBs
b29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHBhZGRpbmcsIGxvb3BD
b3VudGVyKTsKKyAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRP
ciwgT3JpZ2luKCksIHBhZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAgICBwYWRkaW5nID0gbG9vcC0+
YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291bnRl
cik7CisgICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBP
cmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOworICAgIHBhZGRpbmcgPSBsb29wLT5hcHBl
bmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHBhZGRpbmcsIGxvb3BDb3VudGVyKTsK
KyAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3JpZ2lu
KCksIHBhZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7CisgICAg
bG9vcC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHBhZGRp
bmcsIGZvclBhZGRpbmdPdXRwdXRBZGRyZXNzKTsKKworICAgIFVwc2lsb25WYWx1ZSogdXBkYXRl
ZFRvdGFsVXBzaWxvbiA9IGxvb3AtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdp
bigpLCB1cGRhdGVkVG90YWwpOworICAgIHVwZGF0ZWRUb3RhbFVwc2lsb24tPnNldFBoaShsb29w
VG90YWwpOworCisgICAgVmFsdWUqIGRlY0NvdW50ZXIgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIFN1YiwgT3JpZ2luKCksIGxvb3BDb3VudGVyLCBsb29wLT5hcHBlbmROZXc8Q29uc3Q2
NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworICAgIFVwc2lsb25WYWx1ZSogZGVjQ291bnRl
clVwc2lsb24gPSBsb29wLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
ZGVjQ291bnRlcik7CisgICAgZGVjQ291bnRlclVwc2lsb24tPnNldFBoaShsb29wQ291bnRlcik7
CisgICAgbG9vcC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIEJyYW5j
aCwgT3JpZ2luKCksCisgICAgICAgIGRlY0NvdW50ZXIsCisgICAgICAgIEZyZXF1ZW50ZWRCbG9j
ayhsb29wKSwgRnJlcXVlbnRlZEJsb2NrKGRvbmUpKTsKKworICAgIC8vIFRhaWwuCisgICAgZG9u
ZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdXBkYXRl
ZFRvdGFsKTsKKyAgICBXVEZMb2dBbHdheXMoImNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAx
MDAwMDApID0gJWZcbiIsIGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAxMDAwMDApKTsKKy8v
ICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAxMDAwMDAp
LCA1MDAwMDUwMDAwLikpOworfQorCiB2b2lkIHRlc3RCcmFuY2goKQogewogICAgIFByb2NlZHVy
ZSBwcm9jOwpAQCAtNTg4OCw2ICs1OTg4LDkgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVy
KQogICAgIFJVTih0ZXN0U3BpbGxHUCgpKTsKICAgICBSVU4odGVzdFNwaWxsRlAoKSk7CiAKKyAg
ICBSVU4odGVzdEludDMyVG9Eb3VibGVQYXJ0aWFsUmVnaXN0ZXJTdGFsbCgpKTsKKyAgICBSVU4o
dGVzdEludDMyVG9Eb3VibGVQYXJ0aWFsUmVnaXN0ZXJXaXRob3V0U3RhbGwoKSk7CisKICAgICBS
VU4odGVzdENhbGxTaW1wbGUoMSwgMikpOwogICAgIFJVTih0ZXN0Q2FsbEZ1bmN0aW9uV2l0aEhl
bGxhQXJndW1lbnRzKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266448</attachid>
            <date>2015-12-02 09:56:35 -0800</date>
            <delta_ts>2015-12-02 10:49:23 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-151735-20151202095611.patch</filename>
            <type>text/plain</type>
            <size>27443</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyOTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
YmNlNDk0MmQ2OTU0MDgyMGY0ODAwY2JjMDY4YWZmMTA5ZGE2ZGFmLi4yMDBlZDgxODZhNGE4MmYy
ZDllNmVkZDhkZGM0MzBhZGYxZWVmY2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxNS0xMi0wMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBIYW5kbGUgeDg2IHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGxz
IGluIEFpcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxNzM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhZGRzIGEgcHJpbWl0aXZlIGZhbHNlLWRlcGVuZGVuY3kgYnJlYWtpbmcKKyAgICAg
ICAgYWxnb3JpdGhtIHRvIEFpci4gV2UgbG9vayBmb3IgcmVkZWZpbml0aW9uIG9mIHRoZSBzYW1l
CisgICAgICAgIHZhcmlhYmxlIHRoYXQgaXMgdG9vIGNsb3NlIHRvIGEgcGFydGlhbCBkZWZpbml0
aW9uLgorCisgICAgICAgIFRoZXJlIGlzIG5vdCBleHBsaWNpdCBkZXBlbmRlbmN5IHRyYWNraW5n
IGdvaW5nIG9uLAorICAgICAgICBidXQgaXQgaXMgcHJldHR5IGZhc3QgYW5kIHRoZSBleHRyYSB4
b3JwcyBhZGRlZCBvbiBmYWxzZS1wb3NpdGl2ZXMKKyAgICAgICAgYXJlIGNoZWFwIGFueXdheS4K
KworICAgICAgICBUeXBpY2FsbHksIHBhcnRpYWwgcmVnaXN0ZXIgc3RhbGxzIGFwcGVhciBmcm9t
IGluc3RydWN0aW9ucworICAgICAgICBpbnRlcmZlcmluZyB3aXRoIHRoZW1zZWx2ZXMgaW4gc21h
bGwgbG9vcHMuIFNvbWV0aGluZyBsaWtlOgorCisgICAgICAgICAgTGFiZWwwOgorICAgICAgICAg
ICAgY3Z0c2kyc2RxICVlYXgsICV4bW0wCisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIGpt
cCBMYWJlbDAKKworICAgICAgICBUaG9zZSBhcmUgY29ycmVjdGx5IGRldGVjdGVkIGJ5IHByb3Bh
Z2F0aW5nIHRoZSBsb2NhbCBkaXN0YW5jZQorICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIGJsb2Nr
IHRvIGJsb2NrIHVudGlsIG5vIHVuc2FmZSBjaGFpbiBpcyBmb3VuZC4KKworICAgICAgICBUaGUg
dGVzdCB0ZXN0SW50MzJUb0RvdWJsZVBhcnRpYWxSZWdpc3RlclN0YWxsKCkgY2hlY2tzIHRoZSBr
aW5kCisgICAgICAgIG9mIGNhc2VzIHdlIHR5cGljYWxseSBmaW5kIGZyb20gSmF2YVNjcmlwdC4K
KyAgICAgICAgVGhlIGV4ZWN1dGlvbiB0aW1lIGlzIDIwJSBmYXN0ZXIgd2l0aCBhIHJlZ2lzdGVy
IHJlc2V0ICh3aGljaCBpcworICAgICAgICBhc3RvdW5kaW5nIHNpbmNlIHRoZSB2ZXJ5IG5leHQg
aW5zdHJ1Y3Rpb24gaGFzIGEgcmVhbCBkZXBlbmRlbmN5KS4KKworICAgICAgICBGdXR1cmUgdHdl
YWtzIHdpbGwgYmUgbmVlZGVkIHdoZW4gd2UgY2FuIHJ1biBtb3JlIEphdmFTY3JpcHQ6CisgICAg
ICAgIC1IYW5kbGUgZnVuY3Rpb24gY2FsbHMgZGlmZmVyZW50bHkuCisgICAgICAgIC1Bbnl0aGlu
ZyB3aXRoIGEgc3BlY2lhbCBjYW4gaGF2ZSBoaWRkZW4gaW5zdHJ1Y3Rpb25zLgorICAgICAgICAg
V2UgbmVlZCB0byB0YWtlIHRoZW0gaW50byBhY2NvdW50LgorCisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZD
b21tb246Om1vdmVaZXJvVG9Eb3VibGUpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjp4b3Jwc19ycik6CisgICAgICAgIChK
U0M6Olg4NkFzc2VtYmxlcjo6eG9ycGRfcnIpOgorICAgICAgICBBY2NvcmRpbmcgdG8gdGhlIGRv
Y3VtZW50YXRpb24sIHN0YXJ0aW5nIHdpdGggU2FuZHkgQnJpZGdlLAorICAgICAgICByZWdpc3Rl
cnMgcmVzZXQgY2FuIGJlIGRvbmUgaW4gdGhlIGZyb250ZW5kIHdpdGggeG9ycHMuCisKKyAgICAg
ICAgKiBiMy9CM0luZGV4U2V0Lmg6CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6cmVtb3Zl
KToKKyAgICAgICAgKiBiMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkIzOjpBaXI6OmZpeFBhcnRpYWxSZWdpc3RlclN0YWxscyk6Cisg
ICAgICAgICogYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpw
cmVwYXJlRm9yR2VuZXJhdGlvbik6CisgICAgICAgICogYjMvdGVzdGIzLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyU3RhbGwpOgorICAgICAg
ICAoSlNDOjpCMzo6cnVuKToKKyAgICAgICAgKiBqaXQvRlBSSW5mby5oOgorCiAyMDE1LTEyLTAx
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZd
IEltcGxlbWVudCBMTEludC9CYXNlbGluZSBTdXBwb3J0IGZvciBFUzYgR2VuZXJhdG9ycyBhbmQg
ZW5hYmxlIHRoaXMgZmVhdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMzli
MzQwNGE4YjY5ZTY2OWNiYTJjYmU5N2ExMDhlZGY5YzVhMjVmLi5kMjNiMDgwOGNmNzBmZGE3MTdk
YzEwNDViNDVkYTgxOTg2Y2QyNmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTA4Niw2ICsxMDg2LDggQEAKIAkJMUFDRjczNzcxNzFDQTZGQjAwQzlCQjFFIC8qIFdlYWsuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDRjczNzYx
NzFDQTZGQjAwQzlCQjFFIC8qIFdlYWsuY3BwICovOyB9OwogCQkyNjAwQjVBNjE1MkJBQUE3MDA5
MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9p
bmVyLmNwcCAqLzsgfTsKIAkJMjYwMEI1QTcxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9p
bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjAw
QjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLzsgfTsKKwkJMjYyRDg1
QjYxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjJEODVCNDFDMEQ2
NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcCAqLzsgfTsKKwkJ
MjYyRDg1QjcxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYyRDg1QjUx
QzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oICovOyB9Owog
CQkyNjcxOEJBNDFCRTk5Rjc4MDA1MjAxN0IgLyogQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2Np
bmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjY3
MThCQTIxQkU5OUY3ODAwNTIwMTdCIC8qIEFpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNw
cCAqLzsgfTsKIAkJMjY3MThCQTUxQkU5OUY3ODAwNTIwMTdCIC8qIEFpckl0ZXJhdGVkUmVnaXN0
ZXJDb2FsZXNjaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyNjcxOEJBMzFCRTk5Rjc4MDA1MjAxN0IgLyogQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxl
c2NpbmcuaCAqLzsgfTsKIAkJMjY4NEQ0MzgxQzAwMTYxQzAwODFENjYzIC8qIEFpckxpdmVuZXNz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNjg0RDQz
NzFDMDAxNjFDMDA4MUQ2NjMgLyogQWlyTGl2ZW5lc3MuaCAqLzsgfTsKQEAgLTMxMzgsNiArMzE0
MCw4IEBACiAJCTFDQUE4QjRCMEQzMkMzOUEwMDQxQkNGRiAvKiBKYXZhU2NyaXB0Q29yZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKYXZhU2NyaXB0Q29yZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNDE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJp
bmdKb2luZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyNjAwQjVBNTE1MkJB
QUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNTdHJpbmdKb2luZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MjYyRDg1QjQxQzBENjUwRjAwNkFDQjYxIC8qIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJGaXhQYXJ0aWFsUmVn
aXN0ZXJTdGFsbHMuY3BwOyBwYXRoID0gYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxs
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI2MkQ4NUI1MUMwRDY1MEYwMDZB
Q0I2MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmg7IHBhdGggPSBiMy9h
aXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTI2NDA5MUZBMUJFMkZENDEwMDY4NERCMiAvKiBBaXJPcGNvZGUub3Bjb2RlcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUg
PSBBaXJPcGNvZGUub3Bjb2RlczsgcGF0aCA9IGIzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjY3MThCQTIxQkU5OUY3ODAwNTIwMTdCIC8qIEFp
ckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEFpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcDsgcGF0aCA9IGIz
L2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTI2NzE4QkEzMUJFOTlGNzgwMDUyMDE3QiAvKiBBaXJJdGVyYXRlZFJlZ2lz
dGVyQ29hbGVzY2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJJdGVy
YXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5oOyBwYXRoID0gYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0
ZXJDb2FsZXNjaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjU1LDYgKzQ2
NTksOCBAQAogCQkJCTBGRUM4NTUxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJDb2RlLmggKi8sCiAJ
CQkJMEY0NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAq
LywKIAkJCQkwRjQ1NzAzNzFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUu
aCAqLywKKwkJCQkyNjJEODVCNDFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lz
dGVyU3RhbGxzLmNwcCAqLywKKwkJCQkyNjJEODVCNTFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4
UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmggKi8sCiAJCQkJMEZFQzg1NTIxQkRBQ0RDNzAwODBGRjc0
IC8qIEFpckZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NTUzMUJEQUNEQzcwMDgwRkY3
NCAvKiBBaXJHZW5lcmF0ZS5jcHAgKi8sCiAJCQkJMEZFQzg1NTQxQkRBQ0RDNzAwODBGRjc0IC8q
IEFpckdlbmVyYXRlLmggKi8sCkBAIC03ODQxLDYgKzc4NDcsNyBAQAogCQkJCTg2NzA0Qjg3MTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI4ODEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRC
OEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKKwkJCQky
NjJEODVCNzFDMEQ2NTBGMDA2QUNCNjEgLyogQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRh
eENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtODc1NCw2ICs4NzYxLDcgQEAKIAkJCQlBMUI5RTIzRDFC
NEUwRDY3MDBCQzdGRUQgLyogSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExNTg3RDZEMUI0REMxNDEwMEQ2OTg0OSAvKiBJbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENkYxQjREQzE0MTAwRDY5ODQ5IC8qIEludGxEYXRl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI2MkQ4NUI2MUMw
RDY1MEYwMDZBQ0I2MSAvKiBBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNzBCNzkxOUIxQzAyNEE0NjAwMjQ4MUUyIC8qIEpTR2VuZXJhdG9yRnVuY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE1ODdENzExQjREQzE0MTAwRDY5ODQ5IC8qIElu
dGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUQ3OTJG
QzFCNDM4NjRCMDA0NTE2RjUgLyogSW50bE51bWJlckZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaAppbmRleCA5Y2VjZGI0M2E1OWRlNGRmM2FlMDcyMzdkY2Q3ZTk1YzBk
MWZiYjRiLi4xYjY5M2M1MGQxMTI0YmVmZmVjODZmM2Q3YmM1Y2Q2ZDBhMTRiZGJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29t
bW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCkBAIC05OTYsNyArOTk2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtb3Zl
WmVyb1RvRG91YmxlKEZQUmVnaXN0ZXJJRCByZWcpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci54b3JwZF9ycihyZWcsIHJlZyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcnBzX3JyKHJlZywg
cmVnKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklE
IHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCAzMGE0MTU2MWQ2M2YyZDA4ZjdkZDk1ZWE3NDBi
NDg2MzA3MzEzNzUwLi42NTNjMzhkODg3M2E1ZDJjNWUxOTJiMTBlY2MzZjUxMjgwOWUxNmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAg
LTIxMjAsOCArMjEyMCwxNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVP
cChPUDJfRElWU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAg
fQogCisgICAgdm9pZCB4b3Jwc19ycihYTU1SZWdpc3RlcklEIHNyYywgWE1NUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX1hPUlBEX1ZwZFdw
ZCwgKFJlZ2lzdGVySUQpZHN0LCAoUmVnaXN0ZXJJRClzcmMpOworICAgIH0KKwogICAgIHZvaWQg
eG9ycGRfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQogICAgIHsKKyAg
ICAgICAgaWYgKHNyYyA9PSBkc3QpIHsKKyAgICAgICAgICAgIHhvcnBzX3JyKHNyYywgZHN0KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBtX2Zvcm1hdHRlci5wcmVm
aXgoUFJFX1NTRV82Nik7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfWE9SUERf
VnBkV3BkLCAoUmVnaXN0ZXJJRClkc3QsIChSZWdpc3RlcklEKXNyYyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0luZGV4U2V0LmgKaW5kZXggNzcyYzUxMTc2OTU5YzcwNzY1MDQ5NmI0
M2QyNTYzMWQ2NTVhMmZiNC4uMDVmZTQyODIwOWFkZjI0ZGJjZjJjMDY1NjM5OGQ5OTFlNGM0NDEx
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleFNldC5oCkBAIC00OCw2ICs0OCwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhbV9zZXQuc2V0KHZhbHVlLT5pbmRleCgpKTsKICAg
ICB9CiAKKyAgICBib29sIHJlbW92ZShUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X3NldC5jbGVhcih2YWx1ZS0+aW5kZXgoKSk7CisgICAgfQorCiAgICAgYm9vbCBjb250YWlucyhU
KiB2YWx1ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghdmFsdWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0
YWxscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODFjYjRlY2Y4MzI4YmU3NjU4ZTU2NWU1NDk2MDk4ZTAxNjg5
OThmMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Rml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcApAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuaCIKKworI2lmIEVOQUJMRShC
M19KSVQpCisKKyNpbmNsdWRlICJBaXJCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQWlyQ29kZS5o
IgorI2luY2x1ZGUgIkFpckluc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkFpckluc3QuaCIKKyNp
bmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKKyNp
bmNsdWRlICJCM0luZGV4TWFwLmgiCisjaW5jbHVkZSAiQjNJbmRleFNldC5oIgorI2luY2x1ZGUg
Ik1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CisKK25hbWVzcGFjZSB7CisKK2Jv
b2wgaGFzUGFydGlhbFhtbVJlZ1VwZGF0ZShjb25zdCBJbnN0JiBpbnN0KQoreworICAgIHN3aXRj
aCAoaW5zdC5vcGNvZGUpIHsKKyAgICBjYXNlIENvbnZlcnRJbnQzMlRvRG91YmxlOgorICAgIGNh
c2UgQ29udmVydEludDY0VG9Eb3VibGU6CisgICAgY2FzZSBTcXJ0RG91YmxlOgorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIGlzRGVwZW5kZW5jeUJyZWFraW5nKGNvbnN0IEluc3QmIGlu
c3QpCit7CisgICAgLy8gInhvcnBzIHJlZywgcmVnIiBpcyB1c2VkIGJ5IHRoZSBmcm9udGVuZCB0
byByZW1vdmUgdGhlIGRlcGVuZGVuY3kgb24gaXRzIGFyZ3VtZW50LgorICAgIHJldHVybiBpbnN0
Lm9wY29kZSA9PSBNb3ZlWmVyb1RvRG91YmxlOworfQorCisvLyBGSVhNRTogZmluZCBhIGdvb2Qg
ZGlzdGFuY2UgcGVyIGFyY2hpdGVjdHVyZSBleHBlcmltZW50YWxseS4KKy8vIExMVk0gdXNlcyBh
IGRpc3RhbmNlIG9mIDE2IGJ1dCB0aGF0IGNvbWVzIGZyb20gTmVoYWxlbS4KK3Vuc2lnbmVkIGNo
YXIgbWluaW11bVNhZmVEaXN0YW5jZSA9IDE2OworCitzdHJ1Y3QgRlBEZWZEaXN0YW5jZSB7Cisg
ICAgRlBEZWZEaXN0YW5jZSgpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mRlBSZWdpc3RlcnMoKTsgKytpKQorICAgICAgICAg
ICAgZGlzdGFuY2VbaV0gPSAyNTU7CisgICAgfQorCisgICAgdm9pZCByZXNldChGUFJSZWcgcmVn
KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBNYWNyb0Fzc2VtYmxlcjo6ZnBSZWdp
c3RlckluZGV4KHJlZyk7CisgICAgICAgIGRpc3RhbmNlW2luZGV4XSA9IDI1NTsKKyAgICB9CisK
KyAgICB2b2lkIGFkZChGUFJSZWcgcmVnLCB1bnNpZ25lZCByZWdpc3RlckRpc3RhbmNlKQorICAg
IHsKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBNYWNyb0Fzc2VtYmxlcjo6ZnBSZWdpc3Rlcklu
ZGV4KHJlZyk7CisgICAgICAgIGlmIChyZWdpc3RlckRpc3RhbmNlIDwgZGlzdGFuY2VbaW5kZXhd
KQorICAgICAgICAgICAgZGlzdGFuY2VbaW5kZXhdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cj4ocmVnaXN0ZXJEaXN0YW5jZSk7CisgICAgfQorCisgICAgYm9vbCB1cGRhdGVGcm9tUHJlY2Vz
c29yKEZQRGVmRGlzdGFuY2UmIHByZWNlc3NvckRpc3RhbmNlLCB1bnNpZ25lZCBjb25zdGFudE9m
ZnNldCA9IDApCisgICAgeworICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZkZQUmVnaXN0
ZXJzKCk7ICsraSkgeworICAgICAgICAgICAgdW5zaWduZWQgcmVnRGlzdGFuY2UgPSBwcmVjZXNz
b3JEaXN0YW5jZS5kaXN0YW5jZVtpXSArIGNvbnN0YW50T2Zmc2V0OworICAgICAgICAgICAgaWYg
KHJlZ0Rpc3RhbmNlIDwgbWluaW11bVNhZmVEaXN0YW5jZSAmJiByZWdEaXN0YW5jZSA8IGRpc3Rh
bmNlW2ldKSB7CisgICAgICAgICAgICAgICAgZGlzdGFuY2VbaV0gPSByZWdEaXN0YW5jZTsKKyAg
ICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjaGFyIGRpc3Rh
bmNlW01hY3JvQXNzZW1ibGVyOjpudW1iZXJPZkZQUmVnaXN0ZXJzKCldOworfTsKKwordm9pZCB1
cGRhdGVEaXN0YW5jZXMoSW5zdCYgaW5zdCwgRlBEZWZEaXN0YW5jZSYgbG9jYWxEaXN0YW5jZSwg
dW5zaWduZWQmIGRpc3RhbmNlVG9CbG9ja0VuZCkKK3sKKyAgICAtLWRpc3RhbmNlVG9CbG9ja0Vu
ZDsKKworICAgIGlmIChpc0RlcGVuZGVuY3lCcmVha2luZyhpbnN0KSkgeworICAgICAgICBsb2Nh
bERpc3RhbmNlLnJlc2V0KGluc3QuYXJnc1swXS50bXAoKS5mcHIoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpbnN0LmZvckVhY2hUbXAoWyZdIChUbXAmIHRtcCwgQXJnOjpSb2xl
IHJvbGUsIEFyZzo6VHlwZSkgeworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHRtcC5pc1Jl
ZygpLCAiVGhpcyBwaGFzZSBtdXN0IGJlIHJ1biBhZnRlciByZWdpc3RlciBhbGxvY2F0aW9uLiIp
OworCisgICAgICAgIGlmICh0bXAuaXNGUFIoKSAmJiBBcmc6OmlzRGVmKHJvbGUpKQorICAgICAg
ICAgICAgbG9jYWxEaXN0YW5jZS5hZGQodG1wLmZwcigpLCBkaXN0YW5jZVRvQmxvY2tFbmQpOwor
ICAgIH0pOworfQorCit9CisKK3ZvaWQgZml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzKENvZGUmIGNv
ZGUpCit7CisgICAgaWYgKCFpc1g4NigpKQorICAgICAgICByZXR1cm47CisKKyAgICBQaGFzZVNj
b3BlIHBoYXNlU2NvcGUoY29kZSwgImZpeFBhcnRpYWxSZWdpc3RlclN0YWxscyIpOworCisgICAg
VmVjdG9yPEJhc2ljQmxvY2sqPiBjYW5kaWRhdGVzOworCisgICAgZm9yIChCYXNpY0Jsb2NrKiBi
bG9jayA6IGNvZGUpIHsKKyAgICAgICAgZm9yIChjb25zdCBJbnN0JiBpbnN0IDogKmJsb2NrKSB7
CisgICAgICAgICAgICBpZiAoaGFzUGFydGlhbFhtbVJlZ1VwZGF0ZShpbnN0KSkgeworICAgICAg
ICAgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5kKGJsb2NrKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZvcnR1bmF0ZWx5
LCBQYXJ0aWFsIFN0YWxscyBhcmUgcmFyZWx5IHVzZWQuIFJldHVybiBlYXJseSBpZiBubyBibG9j
aworICAgIC8vIGNhcmVzIGFib3V0IHRoZW0uCisgICAgaWYgKGNhbmRpZGF0ZXMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGb3IgZWFjaCBibG9jaywgdGhpcyBwcm92aWRl
cyB0aGUgZGlzdGFuY2UgdG8gdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gc2V0dGluZyBlYWNoIHJlZ2lz
dGVyCisgICAgLy8gb24gYmxvY2sgKmVudHJ5Ki4KKyAgICBJbmRleE1hcDxCYXNpY0Jsb2NrLCBG
UERlZkRpc3RhbmNlPiBsYXN0RGVmRGlzdGFuY2UoY29kZS5zaXplKCkpOworCisgICAgLy8gQmxv
Y2tzIHdpdGggZGlydHkgZGlzdGFuY2UgYXQgaGVhZC4KKyAgICBJbmRleFNldDxCYXNpY0Jsb2Nr
PiBkaXJ0eTsKKworICAgIC8vIEZpcnN0LCB3ZSBjb21wdXRlIHRoZSBsb2NhbCBkaXN0YW5jZSBm
b3IgZWFjaCBibG9jayBhbmQgcHVzaCBpdCB0byB0aGUgc3VjY2Vzc29ycy4KKyAgICBmb3IgKEJh
c2ljQmxvY2sqIGJsb2NrIDogY29kZSkgeworICAgICAgICBGUERlZkRpc3RhbmNlIGxvY2FsRGlz
dGFuY2U7CisKKyAgICAgICAgdW5zaWduZWQgZGlzdGFuY2VUb0Jsb2NrRW5kID0gYmxvY2stPnNp
emUoKTsKKyAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKmJsb2NrKQorICAgICAgICAgICAgdXBk
YXRlRGlzdGFuY2VzKGluc3QsIGxvY2FsRGlzdGFuY2UsIGRpc3RhbmNlVG9CbG9ja0VuZCk7CisK
KyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29yQmxv
Y2tzKCkpIHsKKyAgICAgICAgICAgIGlmIChsYXN0RGVmRGlzdGFuY2Vbc3VjY2Vzc29yXS51cGRh
dGVGcm9tUHJlY2Vzc29yKGxvY2FsRGlzdGFuY2UpKQorICAgICAgICAgICAgICAgIGRpcnR5LmFk
ZChzdWNjZXNzb3IpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTm93IHdlIHByb3BhZ2F0
ZSB0aGUgbWluaW11bXMgYWNjcm9zcyBibG9ja3MuCisgICAgYm9vbCBjaGFuZ2VkOworICAgIGRv
IHsKKyAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworCisgICAgICAgIGZvciAoQmFzaWNCbG9jayog
YmxvY2sgOiBjb2RlKSB7CisgICAgICAgICAgICBpZiAoIWRpcnR5LnJlbW92ZShibG9jaykpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIC8vIExpdHRsZSBzaG9ydGN1
dDogaWYgdGhlIGJsb2NrIGlzIGJpZyBlbm91Z2gsIHByb3BhZ2F0aW5nIGl0IHdvbid0IGFkZCBh
bnkgaW5mb3JtYXRpb24uCisgICAgICAgICAgICBpZiAoYmxvY2stPnNpemUoKSA+PSBtaW5pbXVt
U2FmZURpc3RhbmNlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICB1
bnNpZ25lZCBibG9ja1NpemUgPSBibG9jay0+c2l6ZSgpOworICAgICAgICAgICAgRlBEZWZEaXN0
YW5jZSYgYmxvY2tEaXN0YW5jZSA9IGxhc3REZWZEaXN0YW5jZVtibG9ja107CisgICAgICAgICAg
ICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JCbG9ja3MoKSkg
eworICAgICAgICAgICAgICAgIGlmIChsYXN0RGVmRGlzdGFuY2Vbc3VjY2Vzc29yXS51cGRhdGVG
cm9tUHJlY2Vzc29yKGJsb2NrRGlzdGFuY2UsIGJsb2NrU2l6ZSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZGlydHkuYWRkKHN1Y2Nlc3Nvcik7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0gd2hpbGUgKGNoYW5nZWQpOworCisgICAgLy8gRmluYWxseSwgdXBkYXRlIGVhY2ggYmxvY2sg
YXMgbmVlZGVkLgorICAgIEluc2VydGlvblNldCBpbnNlcnRpb25TZXQoY29kZSk7CisgICAgZm9y
IChCYXNpY0Jsb2NrKiBibG9jayA6IGNhbmRpZGF0ZXMpIHsKKyAgICAgICAgdW5zaWduZWQgZGlz
dGFuY2VUb0Jsb2NrRW5kID0gYmxvY2stPnNpemUoKTsKKyAgICAgICAgRlBEZWZEaXN0YW5jZSYg
bG9jYWxEaXN0YW5jZSA9IGxhc3REZWZEaXN0YW5jZVtibG9ja107CisKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGJsb2NrLT5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgSW5z
dCYgaW5zdCA9IGJsb2NrLT5hdChpKTsKKworICAgICAgICAgICAgaWYgKGhhc1BhcnRpYWxYbW1S
ZWdVcGRhdGUoaW5zdCkpIHsKKyAgICAgICAgICAgICAgICBSZWdpc3RlclNldCBkZWZzOworICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyU2V0IHVzZXM7CisgICAgICAgICAgICAgICAgaW5zdC5mb3JF
YWNoVG1wKFsmXSAoVG1wJiB0bXAsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHRtcC5pc0ZQUigpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoQXJnOjppc0RlZihyb2xlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZz
LnNldCh0bXAuZnByKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNBbnlV
c2Uocm9sZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcy5zZXQodG1wLmZwcigp
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCB2YWx1ZXMgd2UgZGVmaW5lIGJ1dCBub3QgdXNl
LiBPdGhlcndpc2Ugd2UgaGF2ZSB0byB3YWl0CisgICAgICAgICAgICAgICAgLy8gZm9yIHRoZSB2
YWx1ZSB0byBiZSByZXNvbHZlZCBhbnl3YXkuCisgICAgICAgICAgICAgICAgZGVmcy5leGNsdWRl
KHVzZXMpOworCisgICAgICAgICAgICAgICAgZGVmcy5mb3JFYWNoKFsmXSAoUmVnIHJlZykgewor
ICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxEaXN0YW5jZS5kaXN0YW5jZVtNYWNyb0Fzc2Vt
Ymxlcjo6ZnBSZWdpc3RlckluZGV4KHJlZy5mcHIoKSldIDwgbWluaW11bVNhZmVEaXN0YW5jZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoaSwgTW92ZVplcm9U
b0RvdWJsZSwgaW5zdC5vcmlnaW4sIFRtcChyZWcpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlRGlzdGFuY2VzKGluc3QsIGxvY2FsRGlz
dGFuY2UsIGRpc3RhbmNlVG9CbG9ja0VuZCk7CisgICAgICAgIH0KKyAgICAgICAgaW5zZXJ0aW9u
U2V0LmV4ZWN1dGUoYmxvY2spOworICAgIH0KK30KKworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjMyZWE2ODkwYmRmMjNjNWQ1MDAyZGEwZGU3ZTFiMTRhNGQ2NjFhMWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxS
ZWdpc3RlclN0YWxscy5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxs
c19oCisjZGVmaW5lIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxsc19oCisKKyNpZiBFTkFCTEUo
QjNfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7
CisKK2NsYXNzIENvZGU7CisKKy8vIHg4NiBoYXMgYSBwaXBlbGluaW5nIGhhemFyZCBjYXVzZWQg
YnkgZmFsc2UgZGVwZW5kZW5jaWVzIGJldHdlZW4gaW5zdHJ1Y3Rpb25zLgorLy8KKy8vIFNvbWUg
aW5zdHJ1Y3Rpb25zIHVwZGF0ZSBvbmx5IHBhcnQgb2YgYSByZWdpc3RlciwgdGhleSBjYW4gb25s
eSBiZSBzY2hlZHVsZWQgYWZ0ZXIKKy8vIHRoZSBwcmV2aW91cyBkZWZpbml0aW9uIGlzIGNvbXB1
dGVkLiBUaGlzIHByb2JsZW0gY2FuIGJlIGF2b2lkZWQgYnkgdGhlIGNvbXBpbGVyCisvLyBieSBl
eHBsaWNpdGVseSByZXNldHRpbmcgdGhlIGVudGlyZSByZWdpc3RlciBiZWZvcmUgZXhlY3V0aW5n
IHRoZSBpbnN0cnVjdGlvbiB3aXRoCisvLyBwYXJ0aWFsIHVwZGF0ZS4KKy8vCisvLyBTZWUgIlBh
cnRpYWwgWE1NIFJlZ2lzdGVyIFN0YWxscyIgYW5kICJEZXBlbmRlbmN5IEJyZWFraW5nIElkaW9t
cyIgaW4gdGhlIG1hbnVhbC4KK3ZvaWQgZml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzKENvZGUmKTsK
KworfSB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjM6OkFpcgorCisjZW5kaWYgLy8gRU5BQkxFKEIz
X0pJVCkKKworI2VuZGlmIC8vIEFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxsc19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IDI4NmIwYzcyZmM2
YmQwYmUzM2ZkNjAwMmZlYTIzNTNlYWVmM2VhMGUuLjY4ZTc2YWQwYTlhMDE4NWVlYmQ4MzRjNGUw
ZTQ3NWY3YWUzYWQ0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyR2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2Vu
ZXJhdGUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQWlyQWxsb2NhdGVTdGFjay5o
IgogI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRlICJBaXJFbGltaW5hdGVEZWFkQ29kZS5o
IgorI2luY2x1ZGUgIkFpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5oIgogI2luY2x1ZGUgIkFp
ckdlbmVyYXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiQWlySGFuZGxlQ2FsbGVlU2F2ZXMuaCIK
ICNpbmNsdWRlICJBaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5oIgpAQCAtOTUsNiArOTYs
MTAgQEAgdm9pZCBwcmVwYXJlRm9yR2VuZXJhdGlvbihDb2RlJiBjb2RlKQogICAgIC8vIGZyZXF1
ZW5jeSBzdWNjZXNzb3IgaXMgYWxzbyB0aGUgZmFsbC10aHJvdWdoIHRhcmdldC4KICAgICBvcHRp
bWl6ZUJsb2NrT3JkZXIoY29kZSk7CiAKKyAgICAvLyBBdHRlbXB0IHRvIHJlbW92ZSBmYWxzZSBk
ZXBlbmRlbmNpZXMgYmV0d2VlbiBpbnN0cnVjdGlvbnMgY3JlYXRlZCBieSBwYXJ0aWFsIHJlZ2lz
dGVyIGNoYW5nZXMuCisgICAgLy8gVGhpcyBtdXN0IGJlIGV4ZWN1dGVkIGFzIGxhdGUgYXMgcG9z
c2libGUgYXMgaXQgZGVwZW5kcyBvbiB0aGUgaW5zdHJ1Y3Rpb25zIG9yZGVyIGFuZCByZWdpc3Rl
ciB1c2UuCisgICAgZml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzKGNvZGUpOworCiAgICAgLy8gVGhp
cyBpcyBuZWVkZWQgdG8gc2F0aXNmeSBhIHJlcXVpcmVtZW50IG9mIEIzOjpTdGFja21hcFZhbHVl
LgogICAgIHJlcG9ydFVzZWRSZWdpc3RlcnMoY29kZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rl
c3RiMy5jcHAKaW5kZXggYWI0MWI2MjM0ZDY1ODBjNTc5YzE4ZTkyMjE1ZmIwM2U5Mzc1ZDNkYi4u
ZTFjOTUwMDdiZGRlN2VlMWJmMDliYjliNGNlYzY1MzQ3NTdjODJhMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTI2NjcsNiArMjY2NywxMDUgQEAgdm9pZCB0ZXN0U3BpbGxG
UCgpCiAgICAgY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIDEuMSwgMi41KTsKIH0KIAordm9p
ZCB0ZXN0SW50MzJUb0RvdWJsZVBhcnRpYWxSZWdpc3RlclN0YWxsKCkKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJh
c2ljQmxvY2sqIGxvb3AgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogZG9uZSA9
IHByb2MuYWRkQmxvY2soKTsKKworICAgIC8vIEhlYWQuCisgICAgVmFsdWUqIHRvdGFsID0gcm9v
dC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwLik7CisgICAg
VmFsdWUqIGNvdW50ZXIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgVXBzaWxvblZhbHVlKiBvcmln
aW5hbFRvdGFsID0gcm9vdC0+YXBwZW5kTmV3PFVwc2lsb25WYWx1ZT4ocHJvYywgT3JpZ2luKCks
IHRvdGFsKTsKKyAgICBVcHNpbG9uVmFsdWUqIG9yaWdpbmFsQ291bnRlciA9IHJvb3QtPmFwcGVu
ZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjb3VudGVyKTsKKyAgICByb290LT5h
cHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBKdW1wLCBPcmlnaW4oKSwgRnJlcXVlbnRlZEJs
b2NrKGxvb3ApKTsKKworICAgIC8vIExvb3AuCisgICAgVmFsdWUqIGxvb3BDb3VudGVyID0gbG9v
cC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIEludDY0LCBPcmlnaW4oKSk7CisgICAgVmFs
dWUqIGxvb3BUb3RhbCA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgUGhpLCBEb3VibGUs
IE9yaWdpbigpKTsKKyAgICBvcmlnaW5hbENvdW50ZXItPnNldFBoaShsb29wQ291bnRlcik7Cisg
ICAgb3JpZ2luYWxUb3RhbC0+c2V0UGhpKGxvb3BUb3RhbCk7CisKKyAgICBWYWx1ZSogdHJ1bmNh
dGVkQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgVHJ1bmMsIE9yaWdpbigp
LCBsb29wQ291bnRlcik7CisgICAgVmFsdWUqIGRvdWJsZUNvdW50ZXIgPSBsb29wLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIElUb0QsIE9yaWdpbigpLCB0cnVuY2F0ZWRDb3VudGVyKTsKKyAgICBW
YWx1ZSogdXBkYXRlZFRvdGFsID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9y
aWdpbigpLCBkb3VibGVDb3VudGVyLCBsb29wVG90YWwpOworICAgIFVwc2lsb25WYWx1ZSogdXBk
YXRlZFRvdGFsVXBzaWxvbiA9IGxvb3AtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9y
aWdpbigpLCB1cGRhdGVkVG90YWwpOworICAgIHVwZGF0ZWRUb3RhbFVwc2lsb24tPnNldFBoaShs
b29wVG90YWwpOworCisgICAgVmFsdWUqIGRlY0NvdW50ZXIgPSBsb29wLT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFN1YiwgT3JpZ2luKCksIGxvb3BDb3VudGVyLCBsb29wLT5hcHBlbmROZXc8Q29u
c3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworICAgIFVwc2lsb25WYWx1ZSogZGVjQ291
bnRlclVwc2lsb24gPSBsb29wLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgZGVjQ291bnRlcik7CisgICAgZGVjQ291bnRlclVwc2lsb24tPnNldFBoaShsb29wQ291bnRl
cik7CisgICAgbG9vcC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIEJy
YW5jaCwgT3JpZ2luKCksCisgICAgICAgIGRlY0NvdW50ZXIsCisgICAgICAgIEZyZXF1ZW50ZWRC
bG9jayhsb29wKSwgRnJlcXVlbnRlZEJsb2NrKGRvbmUpKTsKKworICAgIC8vIFRhaWwuCisgICAg
ZG9uZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdXBk
YXRlZFRvdGFsKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4o
cHJvYywgMTAwMDAwKSwgNTAwMDA1MDAwMC4pKTsKK30KKwordm9pZCB0ZXN0SW50MzJUb0RvdWJs
ZVBhcnRpYWxSZWdpc3RlcldpdGhvdXRTdGFsbCgpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Jsb2NrKiBs
b29wID0gcHJvYy5hZGRCbG9jaygpOworICAgIEJhc2ljQmxvY2sqIGRvbmUgPSBwcm9jLmFkZEJs
b2NrKCk7CisKKyAgICAvLyBIZWFkLgorICAgIFZhbHVlKiB0b3RhbCA9IHJvb3QtPmFwcGVuZE5l
dzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMC4pOworICAgIFZhbHVlKiBjb3Vu
dGVyID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIFVwc2lsb25WYWx1ZSogb3JpZ2luYWxUb3RhbCA9
IHJvb3QtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigpLCB0b3RhbCk7Cisg
ICAgVXBzaWxvblZhbHVlKiBvcmlnaW5hbENvdW50ZXIgPSByb290LT5hcHBlbmROZXc8VXBzaWxv
blZhbHVlPihwcm9jLCBPcmlnaW4oKSwgY291bnRlcik7CisgICAgdWludDY0X3QgZm9yUGFkZGlu
Z0lucHV0OworICAgIFZhbHVlKiBmb3JQYWRkaW5nSW5wdXRBZGRyZXNzID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAmZm9yUGFkZGluZ0lucHV0KTsKKyAg
ICB1aW50NjRfdCBmb3JQYWRkaW5nT3V0cHV0OworICAgIFZhbHVlKiBmb3JQYWRkaW5nT3V0cHV0
QWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
JmZvclBhZGRpbmdPdXRwdXQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHBy
b2MsIEp1bXAsIE9yaWdpbigpLCBGcmVxdWVudGVkQmxvY2sobG9vcCkpOworCisgICAgLy8gTG9v
cC4KKyAgICBWYWx1ZSogbG9vcENvdW50ZXIgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IFBoaSwgSW50NjQsIE9yaWdpbigpKTsKKyAgICBWYWx1ZSogbG9vcFRvdGFsID0gbG9vcC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBQaGksIERvdWJsZSwgT3JpZ2luKCkpOworICAgIG9yaWdpbmFs
Q291bnRlci0+c2V0UGhpKGxvb3BDb3VudGVyKTsKKyAgICBvcmlnaW5hbFRvdGFsLT5zZXRQaGko
bG9vcFRvdGFsKTsKKworICAgIFZhbHVlKiB0cnVuY2F0ZWRDb3VudGVyID0gbG9vcC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksIGxvb3BDb3VudGVyKTsKKyAgICBWYWx1
ZSogZG91YmxlQ291bnRlciA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgSVRvRCwgT3Jp
Z2luKCksIHRydW5jYXRlZENvdW50ZXIpOworICAgIFZhbHVlKiB1cGRhdGVkVG90YWwgPSBsb29w
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIGRvdWJsZUNvdW50ZXIsIGxv
b3BUb3RhbCk7CisKKyAgICAvLyBBZGQgZW5vdWdoIHBhZGRpbmcgaW5zdHJ1Y3Rpb25zIHRvIGF2
b2lkIGEgc3RhbGwuCisgICAgVmFsdWUqIGxvYWRQYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PE1l
bW9yeVZhbHVlPihwcm9jLCBMb2FkLCBJbnQ2NCwgT3JpZ2luKCksIGZvclBhZGRpbmdJbnB1dEFk
ZHJlc3MpOworICAgIFZhbHVlKiBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXRYb3IsIE9yaWdpbigpLCBsb2FkUGFkZGluZywgbG9vcENvdW50ZXIpOworICAgIHBhZGRp
bmcgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHBhZGRpbmcs
IGxvb3BDb3VudGVyKTsKKyAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9j
LCBCaXRPciwgT3JpZ2luKCksIHBhZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAgICBwYWRkaW5nID0g
bG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29w
Q291bnRlcik7CisgICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0
WG9yLCBPcmlnaW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOworICAgIHBhZGRpbmcgPSBsb29w
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHBhZGRpbmcsIGxvb3BDb3Vu
dGVyKTsKKyAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRPciwg
T3JpZ2luKCksIHBhZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAgICBwYWRkaW5nID0gbG9vcC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7
CisgICAgcGFkZGluZyA9IGxvb3AtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgQml0WG9yLCBPcmln
aW4oKSwgcGFkZGluZywgbG9vcENvdW50ZXIpOworICAgIHBhZGRpbmcgPSBsb29wLT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHBhZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAg
ICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBCaXRPciwgT3JpZ2luKCks
IHBhZGRpbmcsIGxvb3BDb3VudGVyKTsKKyAgICBwYWRkaW5nID0gbG9vcC0+YXBwZW5kTmV3PFZh
bHVlPihwcm9jLCBTdWIsIE9yaWdpbigpLCBwYWRkaW5nLCBsb29wQ291bnRlcik7CisgICAgbG9v
cC0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHBhZGRpbmcs
IGZvclBhZGRpbmdPdXRwdXRBZGRyZXNzKTsKKworICAgIFVwc2lsb25WYWx1ZSogdXBkYXRlZFRv
dGFsVXBzaWxvbiA9IGxvb3AtPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KHByb2MsIE9yaWdpbigp
LCB1cGRhdGVkVG90YWwpOworICAgIHVwZGF0ZWRUb3RhbFVwc2lsb24tPnNldFBoaShsb29wVG90
YWwpOworCisgICAgVmFsdWUqIGRlY0NvdW50ZXIgPSBsb29wLT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIFN1YiwgT3JpZ2luKCksIGxvb3BDb3VudGVyLCBsb29wLT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworICAgIFVwc2lsb25WYWx1ZSogZGVjQ291bnRlclVw
c2lsb24gPSBsb29wLT5hcHBlbmROZXc8VXBzaWxvblZhbHVlPihwcm9jLCBPcmlnaW4oKSwgZGVj
Q291bnRlcik7CisgICAgZGVjQ291bnRlclVwc2lsb24tPnNldFBoaShsb29wQ291bnRlcik7Cisg
ICAgbG9vcC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIEJyYW5jaCwg
T3JpZ2luKCksCisgICAgICAgIGRlY0NvdW50ZXIsCisgICAgICAgIEZyZXF1ZW50ZWRCbG9jayhs
b29wKSwgRnJlcXVlbnRlZEJsb2NrKGRvbmUpKTsKKworICAgIC8vIFRhaWwuCisgICAgZG9uZS0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgdXBkYXRlZFRv
dGFsKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywg
MTAwMDAwKSwgNTAwMDA1MDAwMC4pKTsKK30KKwogdm9pZCB0ZXN0QnJhbmNoKCkKIHsKICAgICBQ
cm9jZWR1cmUgcHJvYzsKQEAgLTU4ODgsNiArNTk4Nyw5IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIq
IGZpbHRlcikKICAgICBSVU4odGVzdFNwaWxsR1AoKSk7CiAgICAgUlVOKHRlc3RTcGlsbEZQKCkp
OwogCisgICAgUlVOKHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyU3RhbGwoKSk7Cisg
ICAgUlVOKHRlc3RJbnQzMlRvRG91YmxlUGFydGlhbFJlZ2lzdGVyV2l0aG91dFN0YWxsKCkpOwor
CiAgICAgUlVOKHRlc3RDYWxsU2ltcGxlKDEsIDIpKTsKICAgICBSVU4odGVzdENhbGxGdW5jdGlv
bldpdGhIZWxsYUFyZ3VtZW50cygpKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>