<?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>191767</bug_id>
          
          <creation_ts>2018-11-16 13:07:19 -0800</creation_ts>
          <short_desc>[iOS] Adopt ScreenProperties class.</short_desc>
          <delta_ts>2020-03-26 10:04:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1479577</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-11-16 13:07:19 -0800</bug_when>
    <thetext>On macOS, the ScreenProperties class is used to collect screen properties in the UI process and forward these to the Web process. We should do this on iOS as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479586</commentid>
    <comment_count>1</comment_count>
      <attachid>355109</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-11-16 13:30:22 -0800</bug_when>
    <thetext>Created attachment 355109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479596</commentid>
    <comment_count>2</comment_count>
      <attachid>355109</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-11-16 13:43:45 -0800</bug_when>
    <thetext>Comment on attachment 355109
Patch

I think this looks right, but its hard to tell with the patch not applying to trunk. Could you re-upload your patch after rebasing your sources?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1479651</commentid>
    <comment_count>3</comment_count>
      <attachid>355130</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-11-16 14:51:52 -0800</bug_when>
    <thetext>Created attachment 355130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482100</commentid>
    <comment_count>4</comment_count>
      <attachid>355775</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-11-27 13:56:39 -0800</bug_when>
    <thetext>Created attachment 355775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482132</commentid>
    <comment_count>5</comment_count>
      <attachid>355785</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-11-27 14:34:53 -0800</bug_when>
    <thetext>Created attachment 355785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482273</commentid>
    <comment_count>6</comment_count>
      <attachid>355785</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-11-27 17:28:57 -0800</bug_when>
    <thetext>Comment on attachment 355785
Patch

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

&gt; Source/WebCore/platform/ScreenProperties.h:40
&gt; +#if PLATFORM(COCOA)

Do we have any build that was PLATFORM(MAC) previously, but not PLATFORM(COCOA)? I don’t think this macro is needed for anything building with this file, unless someone is includIn ScreeenProperties unconditionally. Or, just make the file PLATFORM(COCOA).

Maybe that’s why WinCairo is failing to build?

&gt; Source/WebKit/Shared/WebProcessCreationParameters.cpp:161
&gt;      encoder &lt;&lt; screenProperties;

If this is now unconditional, it seems like WinCairo and GTK need to implement ScreenProperties. Maybe this should be PLATFORM(COCOA)

&gt; Source/WebKit/Shared/WebProcessCreationParameters.h:33
&gt; +#include &lt;WebCore/ScreenProperties.h&gt;

If you do this, GTK and WinCairo need stub implementations of everything. They probably *should* adopt this stuff, so I do think this is the right change, but you likely need to add stubs for those platforms,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634077</commentid>
    <comment_count>7</comment_count>
      <attachid>394554</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-03-25 15:50:22 -0700</bug_when>
    <thetext>Created attachment 394554
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634099</commentid>
    <comment_count>8</comment_count>
      <attachid>394559</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-03-25 16:12:03 -0700</bug_when>
    <thetext>Created attachment 394559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634305</commentid>
    <comment_count>9</comment_count>
      <attachid>394603</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-03-26 07:08:14 -0700</bug_when>
    <thetext>Created attachment 394603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634334</commentid>
    <comment_count>10</comment_count>
      <attachid>394610</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-03-26 08:16:27 -0700</bug_when>
    <thetext>Created attachment 394610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634348</commentid>
    <comment_count>11</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-03-26 08:32:45 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #6)
&gt; Comment on attachment 355785 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355785&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/ScreenProperties.h:40
&gt; &gt; +#if PLATFORM(COCOA)
&gt; 
&gt; Do we have any build that was PLATFORM(MAC) previously, but not
&gt; PLATFORM(COCOA)? I don’t think this macro is needed for anything building
&gt; with this file, unless someone is includIn ScreeenProperties
&gt; unconditionally. Or, just make the file PLATFORM(COCOA).
&gt; 
&gt; Maybe that’s why WinCairo is failing to build?
&gt;

I believe you are right, I have made this patch COCOA specific.

&gt; &gt; Source/WebKit/Shared/WebProcessCreationParameters.cpp:161
&gt; &gt;      encoder &lt;&lt; screenProperties;
&gt; 
&gt; If this is now unconditional, it seems like WinCairo and GTK need to
&gt; implement ScreenProperties. Maybe this should be PLATFORM(COCOA)
&gt; 

Fixed.

&gt; &gt; Source/WebKit/Shared/WebProcessCreationParameters.h:33
&gt; &gt; +#include &lt;WebCore/ScreenProperties.h&gt;
&gt; 
&gt; If you do this, GTK and WinCairo need stub implementations of everything.
&gt; They probably *should* adopt this stuff, so I do think this is the right
&gt; change, but you likely need to add stubs for those platforms,


Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634379</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-26 09:34:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/60922442&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634381</commentid>
    <comment_count>13</comment_count>
      <attachid>394610</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-03-26 09:37:28 -0700</bug_when>
    <thetext>Comment on attachment 394610
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634384</commentid>
    <comment_count>14</comment_count>
      <attachid>394610</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2020-03-26 09:52:01 -0700</bug_when>
    <thetext>Comment on attachment 394610
Patch

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634388</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-26 10:04:20 -0700</bug_when>
    <thetext>Committed r259049: &lt;https://trac.webkit.org/changeset/259049&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394610.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355109</attachid>
            <date>2018-11-16 13:30:22 -0800</date>
            <delta_ts>2018-11-16 14:51:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191767-20181116133022.patch</filename>
            <type>text/plain</type>
            <size>27096</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzODI4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTExLTE2ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBZG9wdCBTY3Jl
ZW5Qcm9wZXJ0aWVzIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT24gbWFjT1MsIHRoZSBTY3JlZW5Qcm9wZXJ0aWVzIGNsYXNzIGlzIHVzZWQg
dG8gY29sbGVjdCBzY3JlZW4gcHJvcGVydGllcyBpbiB0aGUgVUkgcHJvY2VzcworICAgICAgICBh
bmQgZm9yd2FyZCB0aGVzZSB0byB0aGUgV2ViIHByb2Nlc3MuIFdlIHNob3VsZCBkbyB0aGlzIG9u
IGlPUyBhcyB3ZWxsIGluIG9yZHJlIHRvIGJlIGFibGUKKyAgICAgICAgdG8gYmxvY2sgYmFja2Jv
YXJkZC4KKyAKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1T
Y3JlZW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JlZW5EYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyZWVuRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3Jl
ZW5JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Jc01vbm9jaHJvbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMpOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RT
Y3JlZW5Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5N
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2spOgorICAg
ICAgICAoV2ViQ29yZTo6ZGlzcGxheU1hc2tGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6
OnByaW1hcnlHUFVJRCk6CisgICAgICAgIChXZWJDb3JlOjpncHVJREZvckRpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuSXNNb25vY2hyb21lKToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkhhc0ludmVydGVkQ29sb3JzKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnNjcmVlblJlY3RGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQXZhaWxhYmxlUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblN1cHBv
cnRzRXh0ZW5kZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Qcm9wZXJ0aWVzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnByaW1hcnlTY3JlZW5EaXNwbGF5SUQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6c2V0U2NyZWVuUHJvcGVydGllcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpzY3JlZW5EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmdldFNjcmVlblByb3BlcnRpZXMpOiBEZWxldGVkLgorCiAyMDE4LTExLTE2ICBTaWh1aSBMaXUg
IDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JpbmcgYmxvYnMgaW4gSURCIG9u
IGlPUzogIkVycm9yIHByZXBhcmluZyBibG9iL2ZpbGUiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2
aXNpb24gMjM4Mjg0KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTE1NTIsNiArMTU1Miw3IEBAIHBsYXRmb3JtL05vdEltcGxlbWVudGVkLmNwcAogcGxh
dGZvcm0vUGFzdGVib2FyZC5jcHAKIHBsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmNwcAog
cGxhdGZvcm0vUGxhdGZvcm1LZXlib2FyZEV2ZW50LmNwcAorcGxhdGZvcm0vUGxhdGZvcm1TY3Jl
ZW4uY3BwCiBwbGF0Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5jcHAKIHBs
YXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9pY2UuY3BwCiBwbGF0Zm9ybS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpemVyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1TY3JlZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU2NyZWVuLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNjcmVlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5o
IgorCisjaW5jbHVkZSAiU2NyZWVuUHJvcGVydGllcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBTY3JlZW5Qcm9wZXJ0aWVzJiBzY3JlZW5Qcm9wZXJ0aWVzKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2NyZWVuUHJvcGVydGllcz4gc2NyZWVuUHJvcGVydGllczsK
KyAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllczsKK30KKworUGxhdGZvcm1EaXNwbGF5SUQgcHJp
bWFyeVNjcmVlbkRpc3BsYXlJRCgpCit7CisgICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXMoKS5w
cmltYXJ5RGlzcGxheUlEOworfQorCit2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgU2Ny
ZWVuUHJvcGVydGllcyYgcHJvcGVydGllcykKK3sKKyAgICBzY3JlZW5Qcm9wZXJ0aWVzKCkgPSBw
cm9wZXJ0aWVzOworfQorCitzdGQ6Om9wdGlvbmFsPGNvbnN0IFNjcmVlbkRhdGEmPiBzY3JlZW5E
YXRhKFBsYXRmb3JtRGlzcGxheUlEIHNjcmVlbmRpc3BsYXlJRCkKK3sKKyAgICBpZiAoc2NyZWVu
UHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIAorICAgIC8vIFJldHVybiBwcm9wZXJ0eSBvZiB0aGUgZmlyc3Qgc2Ny
ZWVuIGlmIHRoZSBzY3JlZW4gaXMgbm90IGZvdW5kIGluIHRoZSBtYXAuCisgICAgYXV0byBkaXNw
bGF5SUQgPSBzY3JlZW5kaXNwbGF5SUQgPyBzY3JlZW5kaXNwbGF5SUQgOiBwcmltYXJ5U2NyZWVu
RGlzcGxheUlEKCk7CisgICAgaWYgKGRpc3BsYXlJRCkgeworICAgICAgICBhdXRvIHNjcmVlblBy
b3BlcnRpZXNGb3JEaXNwbGF5ID0gc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuZmlu
ZChkaXNwbGF5SUQpOworICAgICAgICBpZiAoc2NyZWVuUHJvcGVydGllc0ZvckRpc3BsYXkgIT0g
c2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuZW5kKCkpCisgICAgICAgICAgICByZXR1
cm4gc2NyZWVuUHJvcGVydGllc0ZvckRpc3BsYXktPnZhbHVlOworICAgIH0KKyAgICAKKyAgICAv
LyBMYXN0IHJlc29ydDogdXNlIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBzY3JlZW4gbGlzdC4KKyAg
ICByZXR1cm4gc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuYmVnaW4oKS0+dmFsdWU7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtU2NyZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TY3JlZW4uaAkocmV2aXNpb24gMjM4Mjg0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtNzksOSArNzksMTUg
QEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZAogV0VCQ09SRV9FWFBP
UlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiA9IG51bGxwdHIpOwog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllczsKLQor
c3RydWN0IFNjcmVlbkRhdGE7CisgICAgCitXRUJDT1JFX0VYUE9SVCBTY3JlZW5Qcm9wZXJ0aWVz
IGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcmVl
blByb3BlcnRpZXMoY29uc3QgU2NyZWVuUHJvcGVydGllcyYpOworc3RkOjpvcHRpb25hbDxjb25z
dCBTY3JlZW5EYXRhJj4gc2NyZWVuRGF0YShQbGF0Zm9ybURpc3BsYXlJRCBzY3JlZW5kaXNwbGF5
SUQpOworV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1EaXNwbGF5SUQgcHJpbWFyeVNjcmVlbkRpc3Bs
YXlJRCgpOworICAgIAorI2lmIFBMQVRGT1JNKE1BQykKIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRChOU1NjcmVlbiAqKTsKIAogV0VCQ09SRV9FWFBPUlQgTlNTY3Jl
ZW4gKnNjcmVlbihOU1dpbmRvdyAqKTsKQEAgLTk2LDExICsxMDIsNiBAQCBXRUJDT1JFX0VYUE9S
VCBOU1JlY3QgdG9EZXZpY2VTcGFjZShjb25zCiAKIE5TUG9pbnQgZmxpcFNjcmVlblBvaW50KGNv
bnN0IE5TUG9pbnQmLCBOU1NjcmVlbiAqKTsKIAotV0VCQ09SRV9FWFBPUlQgU2NyZWVuUHJvcGVy
dGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcygpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
Y3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFNjcmVlblByb3BlcnRpZXMmKTsKLQotV0VCQ09SRV9FWFBP
UlQgUGxhdGZvcm1EaXNwbGF5SUQgcHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpOwotCiB1aW50MzJf
dCBwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKTsKIHVpbnQzMl90IGRpc3BsYXlNYXNrRm9yRGlz
cGxheShQbGF0Zm9ybURpc3BsYXlJRCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NjcmVlblByb3BlcnRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHJldmlzaW9uIDIzODI4NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUs
NiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKE1BQykKLQogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgpAQCAtNDUsOSArNDMsMTAgQEAgc3RydWN0IFNjcmVlbkRhdGEgewogICAgIGJv
b2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIHsgZmFsc2UgfTsKICAgICBib29sIHNjcmVl
bkhhc0ludmVydGVkQ29sb3JzIHsgZmFsc2UgfTsKICAgICBib29sIHNjcmVlbklzTW9ub2Nocm9t
ZSB7IGZhbHNlIH07CisjaWYgUExBVEZPUk0oTUFDKQogICAgIHVpbnQzMl90IGRpc3BsYXlNYXNr
IHsgMCB9OwogICAgIElPUmVnaXN0cnlHUFVJRCBncHVJRCB7IDAgfTsKLQorI2VuZGlmCiAgICAg
ZW51bSBFbmNvZGVkQ29sb3JTcGFjZURhdGFUeXBlIHsKICAgICAgICAgTnVsbCwKICAgICAgICAg
Q29sb3JTcGFjZU5hbWUsCkBAIC05NCw4ICs5MywxMyBAQCBzdGQ6Om9wdGlvbmFsPFNjcmVlblBy
b3BlcnRpZXM+IFNjcmVlblByCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTY3JlZW5E
YXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHNj
cmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBzY3JlZW5EZXB0aCA8PCBzY3JlZW5E
ZXB0aFBlckNvbXBvbmVudCA8PCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPDwgc2NyZWVu
SGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2NyZWVuSXNNb25vY2hyb21lIDw8IGRpc3BsYXlNYXNrIDw8
IGdwdUlEOworICAgIGVuY29kZXIgPDwgc2NyZWVuQXZhaWxhYmxlUmVjdCA8PCBzY3JlZW5SZWN0
IDw8IHNjcmVlbkRlcHRoIDw8IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IDw8IHNjcmVlblN1cHBv
cnRzRXh0ZW5kZWRDb2xvciA8PCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyA8PCBzY3JlZW5Jc01v
bm9jaHJvbWU7CisgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGVuY29kZXIgPDwgZGlzcGxh
eU1hc2sgPDwgZ3B1SUQ7CisjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChj
b2xvclNwYWNlKSB7CiAgICAgICAgIC8vIFRyeSB0byBlbmNvZGUgdGhlIG5hbWUuCiAgICAgICAg
IGlmIChhdXRvIG5hbWUgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNvcHlOYW1lKGNvbG9yU3BhY2Uu
Z2V0KCkpKSkgewpAQCAtMTE1LDYgKzExOSw3IEBAIHZvaWQgU2NyZWVuRGF0YTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KKyNl
bmRpZgogCiAgICAgLy8gVGhlIGNvbG9yIHNwYWNlIHdhcyBudWxsIG9yIGZhaWxlZCB0byBiZSBl
bmNvZGVkLgogICAgIGVuY29kZXIgPDwgTnVsbDsKQEAgLTE1OCw2ICsxNjMsNyBAQCBzdGQ6Om9w
dGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlCiAgICAgaWYgKCFzY3JlZW5Jc01vbm9j
aHJvbWUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyNpZiBQTEFURk9STShNQUMp
CiAgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gZGlzcGxheU1hc2s7CiAgICAgZGVjb2RlciA+
PiBkaXNwbGF5TWFzazsKICAgICBpZiAoIWRpc3BsYXlNYXNrKQpAQCAtMTY3LDcgKzE3Myw5IEBA
IHN0ZDo6b3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGUKICAgICBkZWNvZGVyID4+
IGdwdUlEOwogICAgIGlmICghZ3B1SUQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0g
ICAgCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIEVuY29kZWRDb2xvclNwYWNl
RGF0YVR5cGUgZGF0YVR5cGU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZGF0YVR5cGUp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjAxLDEwICsyMDksMjIgQEAgc3Rk
OjpvcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgfQorI2VuZGlmCiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKnNjcmVlbkF2YWls
YWJsZVJlY3QpLCBXVEZNb3ZlKCpzY3JlZW5SZWN0KSwgV1RGTW92ZShjZ0NvbG9yU3BhY2UpLCBX
VEZNb3ZlKCpzY3JlZW5EZXB0aCksIFdURk1vdmUoKnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KSwg
V1RGTW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKSwgV1RGTW92ZSgqc2NyZWVuSGFz
SW52ZXJ0ZWRDb2xvcnMpLCBXVEZNb3ZlKCpzY3JlZW5Jc01vbm9jaHJvbWUpLCBXVEZNb3ZlKCpk
aXNwbGF5TWFzayksIFdURk1vdmUoKmdwdUlEKSB9IH07CisgICAgcmV0dXJuIHsgeworICAgICAg
ICBXVEZNb3ZlKCpzY3JlZW5BdmFpbGFibGVSZWN0KSwKKyAgICAgICAgV1RGTW92ZSgqc2NyZWVu
UmVjdCksCisgICAgICAgIFdURk1vdmUoY2dDb2xvclNwYWNlKSwKKyAgICAgICAgV1RGTW92ZSgq
c2NyZWVuRGVwdGgpLAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCks
CisgICAgICAgIFdURk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksCisgICAgICAg
IFdURk1vdmUoKnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKSwKKyAgICAgICAgV1RGTW92ZSgqc2Ny
ZWVuSXNNb25vY2hyb21lKSwKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIFdURk1vdmUoKmRp
c3BsYXlNYXNrKSwKKyAgICAgICAgV1RGTW92ZSgqZ3B1SUQpCisjZW5kaWYKKyAgICB9IH07CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1Mu
bW0JKHJldmlzaW9uIDIzODI4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVNjcmVlbklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQg
IkludFJlY3QuaCIKKyNpbXBvcnQgIlNjcmVlblByb3BlcnRpZXMuaCIKICNpbXBvcnQgIldBS1dp
bmRvdy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExp
bmsuaD4KQEAgLTU4LDE2ICs1OSwyOCBAQCBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lk
Z2V0KikKIAogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KikKIHsKKyAgICBhdXRvIHYg
PSBzY3JlZW5EYXRhKHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSk7CisgICAgaWYgKHYuaGFzX3Zh
bHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5Jc01vbm9jaHJvbWU7CisgICAgCiAgICAg
cmV0dXJuIFBBTDo6c29mdExpbmtVSUtpdFVJQWNjZXNzaWJpbGl0eUlzR3JheXNjYWxlRW5hYmxl
ZCgpOwogfQogCiBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCkKIHsKKyAgICBhdXRvIHYg
PSBzY3JlZW5EYXRhKHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSk7CisgICAgaWYgKHYuaGFzX3Zh
bHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5IYXNJbnZlcnRlZENvbG9yczsKKyAgICAK
ICAgICByZXR1cm4gUEFMOjpzb2Z0TGlua1VJS2l0VUlBY2Nlc3NpYmlsaXR5SXNJbnZlcnRDb2xv
cnNFbmFibGVkKCk7CiB9CiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdl
dCopCiB7CisgICAgYXV0byB2ID0gc2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkp
OworICAgIGlmICh2Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuU3VwcG9y
dHNFeHRlbmRlZENvbG9yOworCiAgICAgcmV0dXJuIE1HR2V0Qm9vbEFuc3dlcihrTUdRSGFzRXh0
ZW5kZWRDb2xvckRpc3BsYXkpOwogfQogCkBAIC0xNTgsNiArMTcxLDM0IEBAIGZsb2F0IHNjcmVl
blNjYWxlRmFjdG9yKFVJU2NyZWVuICpzY3JlZW4KICAgICByZXR1cm4gc2NyZWVuLnNjYWxlOwog
fQogCitTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCkKK3sKKyAgICBT
Y3JlZW5Qcm9wZXJ0aWVzIHNjcmVlblByb3BlcnRpZXM7CisKKyAgICBQbGF0Zm9ybURpc3BsYXlJ
RCBkaXNwbGF5SUQgPSAwOworCisgICAgZm9yIChVSVNjcmVlbiAqc2NyZWVuIGluIFtQQUw6Omdl
dF9VSUtpdF9VSVNjcmVlbkNsYXNzKCkgc2NyZWVuc10pIHsKKyAgICAgICAgRmxvYXRSZWN0IHNj
cmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4uYm91bmRzOworICAgICAgICBzY3JlZW5BdmFpbGFi
bGVSZWN0LnNldFkoTlNNYXhZKHNjcmVlbi5ib3VuZHMpIC0gKHNjcmVlbkF2YWlsYWJsZVJlY3Qu
eSgpICsgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkpOyAvLyBmbGlwCisgICAgICAgIEZs
b2F0UmVjdCBzY3JlZW5SZWN0ID0gc2NyZWVuLl9yZWZlcmVuY2VCb3VuZHM7CisgICAgICAgIAor
ICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gc2NyZWVuQ29s
b3JTcGFjZShudWxscHRyKTsKKyAgICAgICAgCisgICAgICAgIGludCBzY3JlZW5EZXB0aCA9IFdl
YkNvcmU6OnNjcmVlbkRlcHRoKG51bGxwdHIpOworICAgICAgICBpbnQgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQgPSBXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudChudWxscHRyKTsKKyAg
ICAgICAgYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSBXZWJDb3JlOjpzY3JlZW5T
dXBwb3J0c0V4dGVuZGVkQ29sb3IobnVsbHB0cik7CisgICAgICAgIGJvb2wgc2NyZWVuSGFzSW52
ZXJ0ZWRDb2xvcnMgPSBXZWJDb3JlOjpzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpOworICAgICAg
ICBib29sIHNjcmVlbklzTW9ub2Nocm9tZSA9IFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZShu
dWxscHRyKTsKKworICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KCsr
ZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwg
Y29sb3JTcGFjZSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5T
dXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBzY3JlZW5Jc01v
bm9jaHJvbWUgfSk7CisgICAgICAgIAorICAgICAgICBpZiAoc2NyZWVuID09IFtQQUw6OmdldF9V
SUtpdF9VSVNjcmVlbkNsYXNzKCkgbWFpblNjcmVlbl0pCisgICAgICAgICAgICBzY3JlZW5Qcm9w
ZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQgPSBkaXNwbGF5SUQ7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBzY3JlZW5Qcm9wZXJ0aWVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQkocmV2aXNpb24gMjM4Mjg0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC05NiwxNyArOTYsNiBAQCBzdGF0aWMgTlNTY3JlZW4gKnNjcmVlbihXaWRnZXQq
IHdpZGdldCkKICAgICByZXR1cm4gc2NyZWVuKGRpc3BsYXlJRCh3aWRnZXQpKTsKIH0KIAotc3Rh
dGljIFNjcmVlblByb3BlcnRpZXMmIHNjcmVlblByb3BlcnRpZXMoKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTY3JlZW5Qcm9wZXJ0aWVzPiBzY3JlZW5Qcm9wZXJ0aWVzOwotICAgIHJl
dHVybiBzY3JlZW5Qcm9wZXJ0aWVzOwotfQotCi1QbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5U2Ny
ZWVuRGlzcGxheUlEKCkKLXsKLSAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllcygpLnByaW1hcnlE
aXNwbGF5SUQ7Ci19Ci0KIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMo
KQogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNh
bkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwpAQCAtMTQzLDM5ICsxMzIsMjEgQEAgU2Ny
ZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcwogICAgIHJldHVybiBzY3JlZW5Q
cm9wZXJ0aWVzOwogfQogCi12b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgU2NyZWVuUHJv
cGVydGllcyYgcHJvcGVydGllcykKLXsKLSAgICBzY3JlZW5Qcm9wZXJ0aWVzKCkgPSBwcm9wZXJ0
aWVzOwotfQotCi1zdGF0aWMgU2NyZWVuRGF0YSBzY3JlZW5EYXRhKFBsYXRmb3JtRGlzcGxheUlE
IHNjcmVlbmRpc3BsYXlJRCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVCghc2NyZWVuUHJvcGVydGll
cygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKTsKLQotICAgIC8vIFJldHVybiBwcm9wZXJ0eSBv
ZiB0aGUgZmlyc3Qgc2NyZWVuIGlmIHRoZSBzY3JlZW4gaXMgbm90IGZvdW5kIGluIHRoZSBtYXAu
Ci0gICAgYXV0byBkaXNwbGF5SUQgPSBzY3JlZW5kaXNwbGF5SUQgPyBzY3JlZW5kaXNwbGF5SUQg
OiBwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCk7Ci0gICAgaWYgKGRpc3BsYXlJRCkgewotICAgICAg
ICBhdXRvIHNjcmVlblByb3BlcnRpZXNGb3JEaXNwbGF5ID0gc2NyZWVuUHJvcGVydGllcygpLnNj
cmVlbkRhdGFNYXAuZmluZChkaXNwbGF5SUQpOwotICAgICAgICBpZiAoc2NyZWVuUHJvcGVydGll
c0ZvckRpc3BsYXkgIT0gc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuZW5kKCkpCi0g
ICAgICAgICAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllc0ZvckRpc3BsYXktPnZhbHVlOwotICAg
IH0KLQotICAgIC8vIExhc3QgcmVzb3J0OiB1c2UgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIHNjcmVl
biBsaXN0LgotICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5iZWdp
bigpLT52YWx1ZTsKLX0KLQogdWludDMyX3QgcHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkKIHsK
LSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKS5kaXNwbGF5
TWFzazsKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRhKHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSk7
CisgICAgCisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5kaXNwbGF5
TWFzazsKICAgICAKICAgICByZXR1cm4gMDsKIH0KIAogdWludDMyX3QgZGlzcGxheU1hc2tGb3JE
aXNwbGF5KFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKLSAgICBpZiAoIXNjcmVlblBy
b3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHNjcmVl
bkRhdGEoZGlzcGxheUlEKS5kaXNwbGF5TWFzazsKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRhKGRp
c3BsYXlJRCk7CisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5kaXNw
bGF5TWFzazsKICAgICAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsK
QEAgLTE4NCwxNCArMTU1LDE2IEBAIHVpbnQzMl90IGRpc3BsYXlNYXNrRm9yRGlzcGxheShQbGF0
Zm9ybUQKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogSU9S
ZWdpc3RyeUdQVUlEIHByaW1hcnlHUFVJRCgpCiB7Ci0gICAgcmV0dXJuIGdwdUlERm9yRGlzcGxh
eShzY3JlZW5Qcm9wZXJ0aWVzKCkucHJpbWFyeURpc3BsYXlJRCk7CisgICAgcmV0dXJuIGdwdUlE
Rm9yRGlzcGxheShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOwogfQogCiBJT1JlZ2lzdHJ5R1BV
SUQgZ3B1SURGb3JEaXNwbGF5KFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKICNpZiBF
TkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCi0gICAgaWYgKCFzY3JlZW5Q
cm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzY3Jl
ZW5EYXRhKGRpc3BsYXlJRCkuZ3B1SUQ7CisgICAgYXV0byB2ID0gc2NyZWVuRGF0YShkaXNwbGF5
SUQpOworCisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5ncHVJRDsK
ICNlbHNlCiAgICAgcmV0dXJuIGdwdUlERm9yRGlzcGxheU1hc2soQ0dEaXNwbGF5SURUb09wZW5H
TERpc3BsYXlNYXNrKGRpc3BsYXlJRCkpOwogI2VuZGlmCkBAIC0yMzQsMTUgKzIwNywxNiBAQCBJ
T1JlZ2lzdHJ5R1BVSUQgZ3B1SURGb3JEaXNwbGF5TWFzayhHTHVpCiB9CiAjZW5kaWYgLy8gIV9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCiAKLXN0YXRpYyBTY3JlZW5E
YXRhIGdldFNjcmVlblByb3BlcnRpZXMoV2lkZ2V0KiB3aWRnZXQpCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxjb25zdCBTY3JlZW5EYXRhJj4gZ2V0U2NyZWVuUHJvcGVydGllcyhXaWRnZXQqIHdpZGdl
dCkKIHsKICAgICByZXR1cm4gc2NyZWVuRGF0YShkaXNwbGF5SUQod2lkZ2V0KSk7CiB9CiAKIGJv
b2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogewotICAgIGlmICghc2NyZWVu
UHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZ2V0
U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlbklzTW9ub2Nocm9tZTsKKyAgICBhdXRvIHYg
PSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCk7CisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpCisg
ICAgICAgIHJldHVybiB2LT5zY3JlZW5Jc01vbm9jaHJvbWU7CiAKICAgICAvLyBUaGlzIGlzIGEg
c3lzdGVtLXdpZGUgYWNjZXNzaWJpbGl0eSBzZXR0aW5nLCBzYW1lIG9uIGFsbCBzY3JlZW5zLgog
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11
bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwpAQCAtMjUxLDggKzIyNSw5IEBAIGJvb2wgc2NyZWVu
SXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogCiBib29sIHNjcmVlbkhhc0ludmVydGVkQ29s
b3JzKCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgp
KS5zY3JlZW5IYXNJbnZlcnRlZENvbG9yczsKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRhKHByaW1h
cnlTY3JlZW5EaXNwbGF5SUQoKSk7CisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJl
dHVybiB2LT5zY3JlZW5IYXNJbnZlcnRlZENvbG9yczsKIAogICAgIC8vIFRoaXMgaXMgYSBzeXN0
ZW0td2lkZSBhY2Nlc3NpYmlsaXR5IHNldHRpbmcsIHNhbWUgb24gYWxsIHNjcmVlbnMuCiAgICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNh
dGVXaXRoV2luZG93U2VydmVyKSk7CkBAIC0yNjEsOCArMjM2LDkgQEAgYm9vbCBzY3JlZW5IYXNJ
bnZlcnRlZENvbG9ycygpCiAKIGludCBzY3JlZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKIHsKLSAg
ICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkgewotICAg
ICAgICBhdXRvIHNjcmVlbkRlcHRoID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVl
bkRlcHRoOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBp
ZiAodi5oYXNfdmFsdWUoKSkgeworICAgICAgICBhdXRvIHNjcmVlbkRlcHRoID0gdi0+c2NyZWVu
RGVwdGg7CiAgICAgICAgIEFTU0VSVChzY3JlZW5EZXB0aCk7CiAgICAgICAgIHJldHVybiBzY3Jl
ZW5EZXB0aDsKICAgICB9CkBAIC0yNzMsOCArMjQ5LDEwIEBAIGludCBzY3JlZW5EZXB0aChXaWRn
ZXQqIHdpZGdldCkKIAogaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCogd2lkZ2V0
KQogewotICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGF1dG8gZGVwdGhQZXJDb21wb25lbnQgPSBnZXRTY3JlZW5Qcm9wZXJ0aWVz
KHdpZGdldCkuc2NyZWVuRGVwdGhQZXJDb21wb25lbnQ7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVu
UHJvcGVydGllcyh3aWRnZXQpOworCisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAg
YXV0byBkZXB0aFBlckNvbXBvbmVudCA9IHYtPnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50OwogICAg
ICAgICBBU1NFUlQoZGVwdGhQZXJDb21wb25lbnQpOwogICAgICAgICByZXR1cm4gZGVwdGhQZXJD
b21wb25lbnQ7CiAgICAgfQpAQCAtMjg1LDggKzI2MywxMCBAQCBpbnQgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQoV2lkZ2V0KiB3aWRnCiAKIEZsb2F0UmVjdCBzY3JlZW5SZWN0Rm9yRGlzcGxheShQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVz
KCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBzY3JlZW5SZWN0ID0g
c2NyZWVuRGF0YShkaXNwbGF5SUQpLnNjcmVlblJlY3Q7CisgICAgYXV0byB2ID0gc2NyZWVuRGF0
YShkaXNwbGF5SUQpOworCisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgYXV0byBz
Y3JlZW5SZWN0ID0gdi0+c2NyZWVuUmVjdDsKICAgICAgICAgQVNTRVJUKCFzY3JlZW5SZWN0Lmlz
RW1wdHkoKSk7CiAgICAgICAgIHJldHVybiBzY3JlZW5SZWN0OwogICAgIH0KQEAgLTMwMiw4ICsy
ODIsMTAgQEAgRmxvYXRSZWN0IHNjcmVlblJlY3RGb3JQcmltYXJ5U2NyZWVuKCkKIAogRmxvYXRS
ZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0
aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Q
cm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuUmVjdDsKKyAgICBhdXRvIHYgPSBnZXRTY3JlZW5Qcm9w
ZXJ0aWVzKHdpZGdldCk7CisKKyAgICBpZiAodi5oYXNfdmFsdWUoKSkKKyAgICAgICAgcmV0dXJu
IHYtPnNjcmVlblJlY3Q7CiAKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNz
UHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKICAgICByZXR1cm4g
dG9Vc2VyU3BhY2UoW3NjcmVlbih3aWRnZXQpIGZyYW1lXSwgd2luZG93KHdpZGdldCkpOwpAQCAt
MzExLDggKzI5MywxMCBAQCBGbG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkKIAog
RmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgaWYg
KCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuQXZhaWxhYmxlUmVjdDsKKyAg
ICBhdXRvIHYgPSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCk7CisKKyAgICBpZiAodi5oYXNf
dmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPnNjcmVlbkF2YWlsYWJsZVJlY3Q7CiAKICAgICBB
U1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0
ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKICAgICByZXR1cm4gdG9Vc2VyU3BhY2UoW3NjcmVlbih3aWRn
ZXQpIHZpc2libGVGcmFtZV0sIHdpbmRvdyh3aWRnZXQpKTsKQEAgLTMzNiw4ICszMjAsOSBAQCBO
U1NjcmVlbiAqc2NyZWVuKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsCiAKIENHQ29sb3JTcGFjZVJl
ZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lkZ2V0KQogewotICAgIGlmICghc2NyZWVuUHJv
cGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZ2V0U2Ny
ZWVuUHJvcGVydGllcyh3aWRnZXQpLmNvbG9yU3BhY2UuZ2V0KCk7CisgICAgYXV0byB2ID0gZ2V0
U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOworICAgIGlmICh2Lmhhc192YWx1ZSgpKQorICAgICAg
ICByZXR1cm4gdi0+Y29sb3JTcGFjZS5nZXQoKTsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikp
OwogICAgIHJldHVybiBzY3JlZW4od2lkZ2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZTsKQEAg
LTM0NSw4ICszMzAsOSBAQCBDR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQq
CiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0KQogewot
ICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlblN1cHBvcnRzRXh0
ZW5kZWRDb2xvcjsKKyAgICBhdXRvIHYgPSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCk7Cisg
ICAgaWYgKHYuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3I7CiAKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJp
dmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKICAgICByZXR1cm4gW3Nj
cmVlbih3aWRnZXQpIGNhblJlcHJlc2VudERpc3BsYXlHYW11dDpOU0Rpc3BsYXlHYW11dFAzXTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzgyOTcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE4LTExLTE2ICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBZG9wdCBTY3JlZW5Q
cm9wZXJ0aWVzIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkxNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSByZWxldmVudCBtYWNPUyBwbGF0Zm9ybSBjb2RlIGNyb3NzIHBsYXRmb3Jt
LgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpzZXRTY3JlZW5Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MpOgorCiAyMDE4LTEx
LTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQXV0b21hdGlj
IHByb2Nlc3MgcHJld2FybWluZyBzaG91bGQgYmUgdHVybmVkIG9uIGlmIFBTT04gaXMgZW5hYmxl
ZCB2aWEgZXhwZXJpbWVudGFsIGZlYXR1cmVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjM4
Mjg0KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw4ICsxNTgsOSBAQCB2b2lkIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAgZW5jb2RlciA8PCBtZWRpYU1JTUVUeXBlczsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgc2NyZWVuUHJvcGVy
dGllczsKKworI2lmIFBMQVRGT1JNKE1BQykKICAgICBlbmNvZGVyIDw8IHVzZU92ZXJsYXlTY3Jv
bGxiYXJzOwogI2VuZGlmCiB9CkBAIC00MTgsMTIgKzQxOSwxMyBAQCBib29sIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oTUFDKQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyZWVuUHJv
cGVydGllcz4gc2NyZWVuUHJvcGVydGllczsKICAgICBkZWNvZGVyID4+IHNjcmVlblByb3BlcnRp
ZXM7CiAgICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcGFyYW1ldGVycy5zY3JlZW5Qcm9wZXJ0aWVzID0gV1RGTW92ZSgqc2NyZWVuUHJvcGVydGll
cyk7CisKKyNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnVzZU92ZXJsYXlTY3JvbGxiYXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMzgyODQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5
LDYgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0
Lmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+CiAjZW5k
aWYKQEAgLTE5Nyw4ICsxOTQsOSBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgYm9vbCBzaG91bGRMb2dVc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9OwogI2VuZGlm
CiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyBzY3Jl
ZW5Qcm9wZXJ0aWVzOworCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgdXNlT3ZlcmxheVNj
cm9sbGJhcnMgeyB0cnVlIH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDIz
ODI4NCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1NSwxMCArMjU1LDEwIEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBwYXJhbWV0ZXJzLnNob3VsZExv
Z1VzZXJJbnRlcmFjdGlvbiA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdExvZ0Nvb2tpZUlu
Zm9ybWF0aW9uRGVmYXVsdHNLZXldOwogI2VuZGlmCi0gICAgCi0jaWYgUExBVEZPUk0oTUFDKQor
CiAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzID0gV2ViQ29yZTo6Y29sbGVjdFNjcmVlblByb3Bl
cnRpZXMoKTsKICAgICBwYXJhbWV0ZXJzLnNjcmVlblByb3BlcnRpZXMgPSBXVEZNb3ZlKHNjcmVl
blByb3BlcnRpZXMpOworI2lmIFBMQVRGT1JNKE1BQykKICAgICBwYXJhbWV0ZXJzLnVzZU92ZXJs
YXlTY3JvbGxiYXJzID0gKFtOU1Njcm9sbGVyIHByZWZlcnJlZFNjcm9sbGVyU3R5bGVdID09IE5T
U2Nyb2xsZXJTdHlsZU92ZXJsYXkpOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMzgyODQpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OTgsMTIgKzE2
OTgsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbAogCiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUHJvY2Vzczo6c2V0U2NyZWVuUHJvcGVy
dGllcyhjb25zdCBXZWJDb3JlOjpTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAg
IFdlYkNvcmU6OnNldFNjcmVlblByb3BlcnRpZXMocHJvcGVydGllcyk7CiB9Ci0jZW5kaWYKIAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiB2b2lkIFdlYlByb2Nlc3M6OmFkZE1vY2tNZWRpYURl
dmljZShjb25zdCBXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2UmIGRldmljZSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjM4Mjg0KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSAr
MzQsNyBAQAogI2luY2x1ZGUgIlZpZXdVcGRhdGVEaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiV2Vi
SW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZp
dHlTdGF0ZS5oPgotI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmVlblBy
b3BlcnRpZXMuaD4KLSNlbmRpZgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRl
IDxwYWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpA
QCAtMzgwLDE0ICszNzgsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9j
ZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAotI2lmIFBMQVRGT1JNKE1B
QykKICAgICB2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6U2NyZWVuUHJv
cGVydGllcyYpOwotI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykK
KyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9D
S0lORykKICAgICB2b2lkIHNjcm9sbGVyU3R5bGVQcmVmZXJlbmNlQ2hhbmdlZChib29sIHVzZU92
ZXJsYXlTY3JvbGxiYXJzKTsKICAgICB2b2lkIGRpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZChD
R0RpcmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzKTsKICAgICB2b2lk
IGRpc3BsYXlXYXNSZWZyZXNoZWQoQ0dEaXJlY3REaXNwbGF5SUQpOwogI2VuZGlmCi0jZW5kaWYK
IAogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsK
IApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDIzODI4NCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTQgKzEzMSwxMiBAQCBt
ZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVcGRhdGVBY3RpdmVQ
YWdlcygpCiAgICAgR2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZygpIC0+IChWZWN0b3I8
U3RyaW5nPiBhY3RpdmVPcmlnaW5zKSBMZWdhY3lTeW5jCiAKLSNpZiBQTEFURk9STShNQUMpCiAg
ICAgU2V0U2NyZWVuUHJvcGVydGllcyhzdHJ1Y3QgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyBz
Y3JlZW5Qcm9wZXJ0aWVzKQotI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9D
S0lORykKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZF
Ul9CTE9DS0lORykKICAgICBTY3JvbGxlclN0eWxlUHJlZmVyZW5jZUNoYW5nZWQoYm9vbCB1c2VP
dmVsYXlTY3JvbGxiYXJzKQogICAgIERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZChDR0RpcmVj
dERpc3BsYXlJRCBkaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyBmbGFncykK
ICAgICBEaXNwbGF5V2FzUmVmcmVzaGVkKHVpbnQzMl90IGRpc3BsYXlJRCkKICNlbmRpZgotI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTZXRNZWRpYU1JTUVUeXBlcyhWZWN0b3I8
U3RyaW5nPiB0eXBlcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjM4Mjg0KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzM2LDEzICszMzYsMTIgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQcm9j
ZQogICAgIENHU1NodXRkb3duU2VydmVyQ29ubmVjdGlvbnMoKTsKIAogICAgIFN3aXRjaGluZ0dQ
VUNsaWVudDo6c2V0U2luZ2xldG9uKFdlYlN3aXRjaGluZ0dQVUNsaWVudDo6c2luZ2xldG9uKCkp
OwotI2Vsc2UKKyNlbmRpZiAvLyBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJ
TkcpCiAgICAgaWYgKCFbTlNBcHAgaXNSdW5uaW5nXSkgewogICAgICAgICAvLyBUaGlzIGNhbGwg
aXMgbmVlZGVkIHdoZW4gdGhlIFdlYlByb2Nlc3MgaXMgbm90IHJ1bm5pbmcgdGhlIE5TQXBwbGlj
YXRpb24gZXZlbnQgbG9vcC4KICAgICAgICAgLy8gT3RoZXJ3aXNlLCBjYWxsaW5nIGVuYWJsZVNh
bmRib3hTdHlsZUZpbGVRdWFyYW50aW5lKCkgd2lsbCBmYWlsLgogICAgICAgICBsYXVuY2hTZXJ2
aWNlc0NoZWNrSW4oKTsKICAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKFdFQlBST0NFU1NfV0lORE9X
U0VSVkVSX0JMT0NLSU5HKQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogICAgIHJlZ2lzdGVy
V2l0aEFjY2Vzc2liaWxpdHkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355130</attachid>
            <date>2018-11-16 14:51:52 -0800</date>
            <delta_ts>2018-11-27 13:56:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191767-20181116145151.patch</filename>
            <type>text/plain</type>
            <size>26073</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzODMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTExLTE2ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBZG9wdCBTY3Jl
ZW5Qcm9wZXJ0aWVzIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT24gbWFjT1MsIHRoZSBTY3JlZW5Qcm9wZXJ0aWVzIGNsYXNzIGlzIHVzZWQg
dG8gY29sbGVjdCBzY3JlZW4gcHJvcGVydGllcyBpbiB0aGUgVUkgcHJvY2VzcworICAgICAgICBh
bmQgZm9yd2FyZCB0aGVzZSB0byB0aGUgV2ViIHByb2Nlc3MuIFdlIHNob3VsZCBkbyB0aGlzIG9u
IGlPUyBhcyB3ZWxsIGluIG9yZHJlIHRvIGJlIGFibGUKKyAgICAgICAgdG8gYmxvY2sgYmFja2Jv
YXJkZC4KKyAKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1T
Y3JlZW4uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JlZW5EYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyZWVuRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3Jl
ZW5JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Jc01vbm9jaHJvbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMpOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RT
Y3JlZW5Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5N
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2spOgorICAg
ICAgICAoV2ViQ29yZTo6ZGlzcGxheU1hc2tGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6
OnByaW1hcnlHUFVJRCk6CisgICAgICAgIChXZWJDb3JlOjpncHVJREZvckRpc3BsYXkpOgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuSXNNb25vY2hyb21lKToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkhhc0ludmVydGVkQ29sb3JzKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnNjcmVlblJlY3RGb3JEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQXZhaWxhYmxlUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlblN1cHBv
cnRzRXh0ZW5kZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Qcm9wZXJ0aWVzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnByaW1hcnlTY3JlZW5EaXNwbGF5SUQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6c2V0U2NyZWVuUHJvcGVydGllcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpzY3JlZW5EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmdldFNjcmVlblByb3BlcnRpZXMpOiBEZWxldGVkLgorCiAyMDE4LTExLTE2ICBEb24gT2xtc3Rl
YWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgUHJvdmlkZSBkZWZhdWx0IGlt
cGxlbWVudGF0aW9ucyBvZiBJbWFnZSBhbmQgSWNvbgpJbmRleDogU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlz
aW9uIDIzODMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xNTUyLDYgKzE1NTIsNyBAQCBwbGF0Zm9ybS9Ob3RJbXBsZW1lbnRlZC5jcHAKIHBsYXRm
b3JtL1Bhc3RlYm9hcmQuY3BwCiBwbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5jcHAKIHBs
YXRmb3JtL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5jcHAKK3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVu
LmNwcAogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwCiBwbGF0
Zm9ybS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcAogcGxhdGZvcm0vUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU2NyZWVuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVNjcmVlbi5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TY3JlZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIK
KworI2luY2x1ZGUgIlNjcmVlblByb3BlcnRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgU2NyZWVuUHJvcGVydGllcyYgc2NyZWVuUHJvcGVydGllcygpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFNjcmVlblByb3BlcnRpZXM+IHNjcmVlblByb3BlcnRpZXM7Cisg
ICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXM7Cit9CisKK1BsYXRmb3JtRGlzcGxheUlEIHByaW1h
cnlTY3JlZW5EaXNwbGF5SUQoKQoreworICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzKCkucHJp
bWFyeURpc3BsYXlJRDsKK30KKwordm9pZCBzZXRTY3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFNjcmVl
blByb3BlcnRpZXMmIHByb3BlcnRpZXMpCit7CisgICAgc2NyZWVuUHJvcGVydGllcygpID0gcHJv
cGVydGllczsKK30KKworc3RkOjpvcHRpb25hbDxjb25zdCBTY3JlZW5EYXRhJj4gc2NyZWVuRGF0
YShQbGF0Zm9ybURpc3BsYXlJRCBzY3JlZW5kaXNwbGF5SUQpCit7CisgICAgaWYgKHNjcmVlblBy
b3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAKKyAgICAvLyBSZXR1cm4gcHJvcGVydHkgb2YgdGhlIGZpcnN0IHNjcmVl
biBpZiB0aGUgc2NyZWVuIGlzIG5vdCBmb3VuZCBpbiB0aGUgbWFwLgorICAgIGF1dG8gZGlzcGxh
eUlEID0gc2NyZWVuZGlzcGxheUlEID8gc2NyZWVuZGlzcGxheUlEIDogcHJpbWFyeVNjcmVlbkRp
c3BsYXlJRCgpOworICAgIGlmIChkaXNwbGF5SUQpIHsKKyAgICAgICAgYXV0byBzY3JlZW5Qcm9w
ZXJ0aWVzRm9yRGlzcGxheSA9IHNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmZpbmQo
ZGlzcGxheUlEKTsKKyAgICAgICAgaWYgKHNjcmVlblByb3BlcnRpZXNGb3JEaXNwbGF5ICE9IHNj
cmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IHNjcmVlblByb3BlcnRpZXNGb3JEaXNwbGF5LT52YWx1ZTsKKyAgICB9CisgICAgCisgICAgLy8g
TGFzdCByZXNvcnQ6IHVzZSB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgc2NyZWVuIGxpc3QuCisgICAg
cmV0dXJuIHNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmJlZ2luKCktPnZhbHVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9QbGF0Zm9ybVNjcmVlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtU2NyZWVuLmgJKHJldmlzaW9uIDIzODMwNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDkgKzc5LDE1IEBA
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmQKIFdFQkNPUkVfRVhQT1JU
IENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogPSBudWxscHRyKTsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogc3RydWN0IFNjcmVlblByb3BlcnRpZXM7Ci0KK3N0
cnVjdCBTY3JlZW5EYXRhOworICAgIAorV0VCQ09SRV9FWFBPUlQgU2NyZWVuUHJvcGVydGllcyBj
b2xsZWN0U2NyZWVuUHJvcGVydGllcygpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JlZW5Q
cm9wZXJ0aWVzKGNvbnN0IFNjcmVlblByb3BlcnRpZXMmKTsKK3N0ZDo6b3B0aW9uYWw8Y29uc3Qg
U2NyZWVuRGF0YSY+IHNjcmVlbkRhdGEoUGxhdGZvcm1EaXNwbGF5SUQgc2NyZWVuZGlzcGxheUlE
KTsKK1dFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlTY3JlZW5EaXNwbGF5
SUQoKTsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCiBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQoTlNTY3JlZW4gKik7CiAKIFdFQkNPUkVfRVhQT1JUIE5TU2NyZWVu
ICpzY3JlZW4oTlNXaW5kb3cgKik7CkBAIC05NiwxMSArMTAyLDYgQEAgV0VCQ09SRV9FWFBPUlQg
TlNSZWN0IHRvRGV2aWNlU3BhY2UoY29ucwogCiBOU1BvaW50IGZsaXBTY3JlZW5Qb2ludChjb25z
dCBOU1BvaW50JiwgTlNTY3JlZW4gKik7CiAKLVdFQkNPUkVfRVhQT1JUIFNjcmVlblByb3BlcnRp
ZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMoKTsKLVdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Ny
ZWVuUHJvcGVydGllcyhjb25zdCBTY3JlZW5Qcm9wZXJ0aWVzJik7Ci0KLVdFQkNPUkVfRVhQT1JU
IFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKTsKLQogdWludDMyX3Qg
cHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCk7CiB1aW50MzJfdCBkaXNwbGF5TWFza0ZvckRpc3Bs
YXkoUGxhdGZvcm1EaXNwbGF5SUQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JlZW5Qcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2NyZWVuUHJvcGVydGllcy5oCShyZXZpc2lvbiAyMzgzMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShNQUMpCi0KICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KQEAgLTQ1LDkgKzQzLDEwIEBAIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBib29s
IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciB7IGZhbHNlIH07CiAgICAgYm9vbCBzY3JlZW5I
YXNJbnZlcnRlZENvbG9ycyB7IGZhbHNlIH07CiAgICAgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUg
eyBmYWxzZSB9OworI2lmIFBMQVRGT1JNKE1BQykKICAgICB1aW50MzJfdCBkaXNwbGF5TWFzayB7
IDAgfTsKICAgICBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SUQgeyAwIH07Ci0KKyNlbmRpZgogICAgIGVu
dW0gRW5jb2RlZENvbG9yU3BhY2VEYXRhVHlwZSB7CiAgICAgICAgIE51bGwsCiAgICAgICAgIENv
bG9yU3BhY2VOYW1lLApAQCAtOTQsOCArOTMsMTMgQEAgc3RkOjpvcHRpb25hbDxTY3JlZW5Qcm9w
ZXJ0aWVzPiBTY3JlZW5QcgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2NyZWVuRGF0
YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBzY3Jl
ZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVuRGVw
dGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVlbkhh
c0ludmVydGVkQ29sb3JzIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBkaXNwbGF5TWFzayA8PCBn
cHVJRDsKKyAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8
PCBzY3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBzY3JlZW5TdXBwb3J0
c0V4dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2NyZWVuSXNNb25v
Y2hyb21lOworICAgIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBlbmNvZGVyIDw8IGRpc3BsYXlN
YXNrIDw8IGdwdUlEOworI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoY29s
b3JTcGFjZSkgewogICAgICAgICAvLyBUcnkgdG8gZW5jb2RlIHRoZSBuYW1lLgogICAgICAgICBp
ZiAoYXV0byBuYW1lID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5TmFtZShjb2xvclNwYWNlLmdl
dCgpKSkpIHsKQEAgLTExNSw2ICsxMTksNyBAQCB2b2lkIFNjcmVlbkRhdGE6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CisjZW5k
aWYKIAogICAgIC8vIFRoZSBjb2xvciBzcGFjZSB3YXMgbnVsbCBvciBmYWlsZWQgdG8gYmUgZW5j
b2RlZC4KICAgICBlbmNvZGVyIDw8IE51bGw7CkBAIC0xNTgsNiArMTYzLDcgQEAgc3RkOjpvcHRp
b25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZQogICAgIGlmICghc2NyZWVuSXNNb25vY2hy
b21lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGRpc3BsYXlNYXNrOwogICAgIGRlY29kZXIgPj4g
ZGlzcGxheU1hc2s7CiAgICAgaWYgKCFkaXNwbGF5TWFzaykKQEAgLTE2Nyw3ICsxNzMsOSBAQCBz
dGQ6Om9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlCiAgICAgZGVjb2RlciA+PiBn
cHVJRDsKICAgICBpZiAoIWdwdUlEKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAg
IAorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBFbmNvZGVkQ29sb3JTcGFjZURh
dGFUeXBlIGRhdGFUeXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGRhdGFUeXBlKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIwMSwxMCArMjA5LDIyIEBAIHN0ZDo6
b3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGUKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIH0KKyNlbmRpZgogCi0gICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpzY3JlZW5BdmFpbGFi
bGVSZWN0KSwgV1RGTW92ZSgqc2NyZWVuUmVjdCksIFdURk1vdmUoY2dDb2xvclNwYWNlKSwgV1RG
TW92ZSgqc2NyZWVuRGVwdGgpLCBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCksIFdU
Rk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksIFdURk1vdmUoKnNjcmVlbkhhc0lu
dmVydGVkQ29sb3JzKSwgV1RGTW92ZSgqc2NyZWVuSXNNb25vY2hyb21lKSwgV1RGTW92ZSgqZGlz
cGxheU1hc2spLCBXVEZNb3ZlKCpncHVJRCkgfSB9OworICAgIHJldHVybiB7IHsKKyAgICAgICAg
V1RGTW92ZSgqc2NyZWVuQXZhaWxhYmxlUmVjdCksCisgICAgICAgIFdURk1vdmUoKnNjcmVlblJl
Y3QpLAorICAgICAgICBXVEZNb3ZlKGNnQ29sb3JTcGFjZSksCisgICAgICAgIFdURk1vdmUoKnNj
cmVlbkRlcHRoKSwKKyAgICAgICAgV1RGTW92ZSgqc2NyZWVuRGVwdGhQZXJDb21wb25lbnQpLAor
ICAgICAgICBXVEZNb3ZlKCpzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IpLAorICAgICAgICBX
VEZNb3ZlKCpzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyksCisgICAgICAgIFdURk1vdmUoKnNjcmVl
bklzTW9ub2Nocm9tZSksCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBXVEZNb3ZlKCpkaXNw
bGF5TWFzayksCisgICAgICAgIFdURk1vdmUoKmdwdUlEKQorI2VuZGlmCisgICAgfSB9OwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1t
CShyZXZpc2lvbiAyMzgzMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1TY3JlZW5JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQg
IkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJIb3N0V2luZG93LmgiCiAjaW1wb3J0ICJJ
bnRSZWN0LmgiCisjaW1wb3J0ICJTY3JlZW5Qcm9wZXJ0aWVzLmgiCiAjaW1wb3J0ICJXQUtXaW5k
b3cuaCIKICNpbXBvcnQgIldpZGdldC5oIgogI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5r
Lmg+CkBAIC01OCwxNiArNTksMjggQEAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdl
dCopCiAKIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCopCiB7CisgICAgYXV0byB2ID0g
c2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhhc192YWx1
ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuSXNNb25vY2hyb21lOworICAgIAogICAgIHJl
dHVybiBQQUw6OnNvZnRMaW5rVUlLaXRVSUFjY2Vzc2liaWxpdHlJc0dyYXlzY2FsZUVuYWJsZWQo
KTsKIH0KIAogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiB7CisgICAgYXV0byB2ID0g
c2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhhc192YWx1
ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnM7CisgICAgCiAg
ICAgcmV0dXJuIFBBTDo6c29mdExpbmtVSUtpdFVJQWNjZXNzaWJpbGl0eUlzSW52ZXJ0Q29sb3Jz
RW5hYmxlZCgpOwogfQogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQq
KQogeworICAgIGF1dG8gdiA9IHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKTsK
KyAgICBpZiAodi5oYXNfdmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPnNjcmVlblN1cHBvcnRz
RXh0ZW5kZWRDb2xvcjsKKwogICAgIHJldHVybiBNR0dldEJvb2xBbnN3ZXIoa01HUUhhc0V4dGVu
ZGVkQ29sb3JEaXNwbGF5KTsKIH0KIApAQCAtMTU4LDYgKzE3MSwzNCBAQCBmbG9hdCBzY3JlZW5T
Y2FsZUZhY3RvcihVSVNjcmVlbiAqc2NyZWVuCiAgICAgcmV0dXJuIHNjcmVlbi5zY2FsZTsKIH0K
IAorU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcygpCit7CisgICAgU2Ny
ZWVuUHJvcGVydGllcyBzY3JlZW5Qcm9wZXJ0aWVzOworCisgICAgUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlEID0gMDsKKworICAgIGZvciAoVUlTY3JlZW4gKnNjcmVlbiBpbiBbUEFMOjpnZXRf
VUlLaXRfVUlTY3JlZW5DbGFzcygpIHNjcmVlbnNdKSB7CisgICAgICAgIEZsb2F0UmVjdCBzY3Jl
ZW5BdmFpbGFibGVSZWN0ID0gc2NyZWVuLmJvdW5kczsKKyAgICAgICAgc2NyZWVuQXZhaWxhYmxl
UmVjdC5zZXRZKE5TTWF4WShzY3JlZW4uYm91bmRzKSAtIChzY3JlZW5BdmFpbGFibGVSZWN0Lnko
KSArIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAorICAgICAgICBGbG9h
dFJlY3Qgc2NyZWVuUmVjdCA9IHNjcmVlbi5fcmVmZXJlbmNlQm91bmRzOworICAgICAgICAKKyAg
ICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9y
U3BhY2UobnVsbHB0cik7CisgICAgICAgIAorICAgICAgICBpbnQgc2NyZWVuRGVwdGggPSBXZWJD
b3JlOjpzY3JlZW5EZXB0aChudWxscHRyKTsKKyAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29t
cG9uZW50ID0gV2ViQ29yZTo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQobnVsbHB0cik7CisgICAg
ICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yID0gV2ViQ29yZTo6c2NyZWVuU3Vw
cG9ydHNFeHRlbmRlZENvbG9yKG51bGxwdHIpOworICAgICAgICBib29sIHNjcmVlbkhhc0ludmVy
dGVkQ29sb3JzID0gV2ViQ29yZTo6c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKKyAgICAgICAg
Ym9vbCBzY3JlZW5Jc01vbm9jaHJvbWUgPSBXZWJDb3JlOjpzY3JlZW5Jc01vbm9jaHJvbWUobnVs
bHB0cik7CisKKyAgICAgICAgc2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldCgrK2Rp
c3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIGNv
bG9yU3BhY2UsIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3Vw
cG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2NyZWVuSXNNb25v
Y2hyb21lIH0pOworICAgICAgICAKKyAgICAgICAgaWYgKHNjcmVlbiA9PSBbUEFMOjpnZXRfVUlL
aXRfVUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dKQorICAgICAgICAgICAgc2NyZWVuUHJvcGVy
dGllcy5wcmltYXJ5RGlzcGxheUlEID0gZGlzcGxheUlEOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gc2NyZWVuUHJvcGVydGllczsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0JKHJldmlzaW9uIDIzODMwNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtOTYsMTcgKzk2LDYgQEAgc3RhdGljIE5TU2NyZWVuICpzY3JlZW4oV2lkZ2V0KiB3
aWRnZXQpCiAgICAgcmV0dXJuIHNjcmVlbihkaXNwbGF5SUQod2lkZ2V0KSk7CiB9CiAKLXN0YXRp
YyBTY3JlZW5Qcm9wZXJ0aWVzJiBzY3JlZW5Qcm9wZXJ0aWVzKCkKLXsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U2NyZWVuUHJvcGVydGllcz4gc2NyZWVuUHJvcGVydGllczsKLSAgICByZXR1
cm4gc2NyZWVuUHJvcGVydGllczsKLX0KLQotUGxhdGZvcm1EaXNwbGF5SUQgcHJpbWFyeVNjcmVl
bkRpc3BsYXlJRCgpCi17Ci0gICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXMoKS5wcmltYXJ5RGlz
cGxheUlEOwotfQotCiBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCkK
IHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5D
b21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKQEAgLTE0MywzOSArMTMyLDIxIEBAIFNjcmVl
blByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICByZXR1cm4gc2NyZWVuUHJv
cGVydGllczsKIH0KIAotdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFNjcmVlblByb3Bl
cnRpZXMmIHByb3BlcnRpZXMpCi17Ci0gICAgc2NyZWVuUHJvcGVydGllcygpID0gcHJvcGVydGll
czsKLX0KLQotc3RhdGljIFNjcmVlbkRhdGEgc2NyZWVuRGF0YShQbGF0Zm9ybURpc3BsYXlJRCBz
Y3JlZW5kaXNwbGF5SUQpCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQoIXNjcmVlblByb3BlcnRpZXMo
KS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSk7Ci0KLSAgICAvLyBSZXR1cm4gcHJvcGVydHkgb2Yg
dGhlIGZpcnN0IHNjcmVlbiBpZiB0aGUgc2NyZWVuIGlzIG5vdCBmb3VuZCBpbiB0aGUgbWFwLgot
ICAgIGF1dG8gZGlzcGxheUlEID0gc2NyZWVuZGlzcGxheUlEID8gc2NyZWVuZGlzcGxheUlEIDog
cHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpOwotICAgIGlmIChkaXNwbGF5SUQpIHsKLSAgICAgICAg
YXV0byBzY3JlZW5Qcm9wZXJ0aWVzRm9yRGlzcGxheSA9IHNjcmVlblByb3BlcnRpZXMoKS5zY3Jl
ZW5EYXRhTWFwLmZpbmQoZGlzcGxheUlEKTsKLSAgICAgICAgaWYgKHNjcmVlblByb3BlcnRpZXNG
b3JEaXNwbGF5ICE9IHNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmVuZCgpKQotICAg
ICAgICAgICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXNGb3JEaXNwbGF5LT52YWx1ZTsKLSAgICB9
Ci0KLSAgICAvLyBMYXN0IHJlc29ydDogdXNlIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBzY3JlZW4g
bGlzdC4KLSAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuYmVnaW4o
KS0+dmFsdWU7Ci19Ci0KIHVpbnQzMl90IHByaW1hcnlPcGVuR0xEaXNwbGF5TWFzaygpCiB7Ci0g
ICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBzY3JlZW5EYXRhKHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSkuZGlzcGxheU1h
c2s7CisgICAgYXV0byB2ID0gc2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOwor
ICAgIAorICAgIGlmICh2Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+ZGlzcGxheU1h
c2s7CiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CiAKIHVpbnQzMl90IGRpc3BsYXlNYXNrRm9yRGlz
cGxheShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9w
ZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5E
YXRhKGRpc3BsYXlJRCkuZGlzcGxheU1hc2s7CisgICAgYXV0byB2ID0gc2NyZWVuRGF0YShkaXNw
bGF5SUQpOworICAgIGlmICh2Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+ZGlzcGxh
eU1hc2s7CiAgICAgCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CkBA
IC0xODQsMTQgKzE1NSwxNiBAQCB1aW50MzJfdCBkaXNwbGF5TWFza0ZvckRpc3BsYXkoUGxhdGZv
cm1ECiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKIElPUmVn
aXN0cnlHUFVJRCBwcmltYXJ5R1BVSUQoKQogewotICAgIHJldHVybiBncHVJREZvckRpc3BsYXko
c2NyZWVuUHJvcGVydGllcygpLnByaW1hcnlEaXNwbGF5SUQpOworICAgIHJldHVybiBncHVJREZv
ckRpc3BsYXkocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKTsKIH0KIAogSU9SZWdpc3RyeUdQVUlE
IGdwdUlERm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7CiAjaWYgRU5B
QkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQotICAgIGlmICghc2NyZWVuUHJv
cGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc2NyZWVu
RGF0YShkaXNwbGF5SUQpLmdwdUlEOworICAgIGF1dG8gdiA9IHNjcmVlbkRhdGEoZGlzcGxheUlE
KTsKKworICAgIGlmICh2Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+Z3B1SUQ7CiAj
ZWxzZQogICAgIHJldHVybiBncHVJREZvckRpc3BsYXlNYXNrKENHRGlzcGxheUlEVG9PcGVuR0xE
aXNwbGF5TWFzayhkaXNwbGF5SUQpKTsKICNlbmRpZgpAQCAtMjM0LDE1ICsyMDcsMTYgQEAgSU9S
ZWdpc3RyeUdQVUlEIGdwdUlERm9yRGlzcGxheU1hc2soR0x1aQogfQogI2VuZGlmIC8vICFfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogCi1zdGF0aWMgU2NyZWVuRGF0
YSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKFdpZGdldCogd2lkZ2V0KQorc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Y29uc3QgU2NyZWVuRGF0YSY+IGdldFNjcmVlblByb3BlcnRpZXMoV2lkZ2V0KiB3aWRnZXQp
CiB7CiAgICAgcmV0dXJuIHNjcmVlbkRhdGEoZGlzcGxheUlEKHdpZGdldCkpOwogfQogCiBib29s
IHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblBy
b3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGdldFNj
cmVlblByb3BlcnRpZXMod2lkZ2V0KS5zY3JlZW5Jc01vbm9jaHJvbWU7CisgICAgYXV0byB2ID0g
Z2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOworICAgIGlmICh2Lmhhc192YWx1ZSgpKQorICAg
ICAgICByZXR1cm4gdi0+c2NyZWVuSXNNb25vY2hyb21lOwogCiAgICAgLy8gVGhpcyBpcyBhIHN5
c3RlbS13aWRlIGFjY2Vzc2liaWxpdHkgc2V0dGluZywgc2FtZSBvbiBhbGwgc2NyZWVucy4KICAg
ICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5p
Y2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKQEAgLTI1MSw4ICsyMjUsOSBAQCBib29sIHNjcmVlbklz
TW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKIAogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9y
cygpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSku
c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnM7CisgICAgYXV0byB2ID0gc2NyZWVuRGF0YShwcmltYXJ5
U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1
cm4gdi0+c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnM7CiAKICAgICAvLyBUaGlzIGlzIGEgc3lzdGVt
LXdpZGUgYWNjZXNzaWJpbGl0eSBzZXR0aW5nLCBzYW1lIG9uIGFsbCBzY3JlZW5zLgogICAgIEFT
U0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRl
V2l0aFdpbmRvd1NlcnZlcikpOwpAQCAtMjYxLDggKzIzNiw5IEBAIGJvb2wgc2NyZWVuSGFzSW52
ZXJ0ZWRDb2xvcnMoKQogCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAg
aWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgYXV0byBzY3JlZW5EZXB0aCA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KS5zY3JlZW5E
ZXB0aDsKKyAgICBhdXRvIHYgPSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCk7CisgICAgaWYg
KHYuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgYXV0byBzY3JlZW5EZXB0aCA9IHYtPnNjcmVlbkRl
cHRoOwogICAgICAgICBBU1NFUlQoc2NyZWVuRGVwdGgpOwogICAgICAgICByZXR1cm4gc2NyZWVu
RGVwdGg7CiAgICAgfQpAQCAtMjczLDggKzI0OSwxMCBAQCBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0
KiB3aWRnZXQpCiAKIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqIHdpZGdldCkK
IHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkg
ewotICAgICAgICBhdXRvIGRlcHRoUGVyQ29tcG9uZW50ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3
aWRnZXQpLnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50OworICAgIGF1dG8gdiA9IGdldFNjcmVlblBy
b3BlcnRpZXMod2lkZ2V0KTsKKworICAgIGlmICh2Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGF1
dG8gZGVwdGhQZXJDb21wb25lbnQgPSB2LT5zY3JlZW5EZXB0aFBlckNvbXBvbmVudDsKICAgICAg
ICAgQVNTRVJUKGRlcHRoUGVyQ29tcG9uZW50KTsKICAgICAgICAgcmV0dXJuIGRlcHRoUGVyQ29t
cG9uZW50OwogICAgIH0KQEAgLTI4NSw4ICsyNjMsMTAgQEAgaW50IHNjcmVlbkRlcHRoUGVyQ29t
cG9uZW50KFdpZGdldCogd2lkZwogCiBGbG9hdFJlY3Qgc2NyZWVuUmVjdEZvckRpc3BsYXkoUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewotICAgIGlmICghc2NyZWVuUHJvcGVydGllcygp
LnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gc2NyZWVuUmVjdCA9IHNj
cmVlbkRhdGEoZGlzcGxheUlEKS5zY3JlZW5SZWN0OworICAgIGF1dG8gdiA9IHNjcmVlbkRhdGEo
ZGlzcGxheUlEKTsKKworICAgIGlmICh2Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGF1dG8gc2Ny
ZWVuUmVjdCA9IHYtPnNjcmVlblJlY3Q7CiAgICAgICAgIEFTU0VSVCghc2NyZWVuUmVjdC5pc0Vt
cHR5KCkpOwogICAgICAgICByZXR1cm4gc2NyZWVuUmVjdDsKICAgICB9CkBAIC0zMDIsOCArMjgy
LDEwIEBAIEZsb2F0UmVjdCBzY3JlZW5SZWN0Rm9yUHJpbWFyeVNjcmVlbigpCiAKIEZsb2F0UmVj
dCBzY3JlZW5SZWN0KFdpZGdldCogd2lkZ2V0KQogewotICAgIGlmICghc2NyZWVuUHJvcGVydGll
cygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZ2V0U2NyZWVuUHJv
cGVydGllcyh3aWRnZXQpLnNjcmVlblJlY3Q7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVy
dGllcyh3aWRnZXQpOworCisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2
LT5zY3JlZW5SZWN0OwogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7CiAgICAgcmV0dXJuIHRv
VXNlclNwYWNlKFtzY3JlZW4od2lkZ2V0KSBmcmFtZV0sIHdpbmRvdyh3aWRnZXQpKTsKQEAgLTMx
MSw4ICsyOTMsMTAgQEAgRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCiAKIEZs
b2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lkZ2V0KQogewotICAgIGlmICgh
c2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlbkF2YWlsYWJsZVJlY3Q7CisgICAg
YXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOworCisgICAgaWYgKHYuaGFzX3Zh
bHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5BdmFpbGFibGVSZWN0OwogCiAgICAgQVNT
RVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVX
aXRoV2luZG93U2VydmVyKSk7CiAgICAgcmV0dXJuIHRvVXNlclNwYWNlKFtzY3JlZW4od2lkZ2V0
KSB2aXNpYmxlRnJhbWVdLCB3aW5kb3cod2lkZ2V0KSk7CkBAIC0zMzYsOCArMzIwLDkgQEAgTlNT
Y3JlZW4gKnNjcmVlbihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbAogCiBDR0NvbG9yU3BhY2VSZWYg
c2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3Bl
cnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGdldFNjcmVl
blByb3BlcnRpZXMod2lkZ2V0KS5jb2xvclNwYWNlLmdldCgpOworICAgIGF1dG8gdiA9IGdldFNj
cmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNfdmFsdWUoKSkKKyAgICAgICAg
cmV0dXJuIHYtPmNvbG9yU3BhY2UuZ2V0KCk7CiAKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZp
bGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsK
ICAgICByZXR1cm4gc2NyZWVuKHdpZGdldCkuY29sb3JTcGFjZS5DR0NvbG9yU3BhY2U7CkBAIC0z
NDUsOCArMzMwLDkgQEAgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0Kgog
CiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqIHdpZGdldCkKIHsKLSAg
ICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KS5zY3JlZW5TdXBwb3J0c0V4dGVu
ZGVkQ29sb3I7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOworICAg
IGlmICh2Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuU3VwcG9ydHNFeHRl
bmRlZENvbG9yOwogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZp
bGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7CiAgICAgcmV0dXJuIFtzY3Jl
ZW4od2lkZ2V0KSBjYW5SZXByZXNlbnREaXNwbGF5R2FtdXQ6TlNEaXNwbGF5R2FtdXRQM107Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkocmV2aXNpb24gMjM4MzA1KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxOC0xMS0xNiAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gQWRvcHQgU2NyZWVuUHJv
cGVydGllcyBjbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MTc2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2UgcmVsZXZlbnQgbWFjT1MgcGxhdGZvcm0gY29kZSBjcm9zcyBwbGF0Zm9ybS4K
KworICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6c2V0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgor
CiAyMDE4LTExLTE2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
QXV0b21hdGljIHByb2Nlc3MgcHJld2FybWluZyBzaG91bGQgYmUgdHVybmVkIG9uIGlmIFBTT04g
aXMgZW5hYmxlZCB2aWEgZXhwZXJpbWVudGFsIGZlYXR1cmVzCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2
aXNpb24gMjM4MzA1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw4ICsxNTgsOSBAQCB2b2lkIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kCiAgICAgZW5jb2RlciA8PCBtZWRpYU1J
TUVUeXBlczsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgc2Ny
ZWVuUHJvcGVydGllczsKKworI2lmIFBMQVRGT1JNKE1BQykKICAgICBlbmNvZGVyIDw8IHVzZU92
ZXJsYXlTY3JvbGxiYXJzOwogI2VuZGlmCiB9CkBAIC00MTgsMTIgKzQxOSwxMyBAQCBib29sIFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyZWVuUHJvcGVydGllcz4gc2NyZWVuUHJvcGVydGllczsKICAgICBkZWNvZGVyID4+IHNjcmVl
blByb3BlcnRpZXM7CiAgICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcGFyYW1ldGVycy5zY3JlZW5Qcm9wZXJ0aWVzID0gV1RGTW92ZSgqc2NyZWVu
UHJvcGVydGllcyk7CisKKyNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnVzZU92ZXJsYXlTY3JvbGxiYXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyMzgzMDUpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDkgKzM5LDYgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9NYWNo
U2VuZFJpZ2h0Lmg+Ci0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0aWVz
Lmg+CiAjZW5kaWYKQEAgLTE5Nyw4ICsxOTQsOSBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyB7CiAgICAgYm9vbCBzaG91bGRMb2dVc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9
OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgV2ViQ29yZTo6U2NyZWVuUHJvcGVy
dGllcyBzY3JlZW5Qcm9wZXJ0aWVzOworCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgdXNl
T3ZlcmxheVNjcm9sbGJhcnMgeyB0cnVlIH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJl
dmlzaW9uIDIzODMwNSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1NSwxMCArMjU1LDEwIEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBwYXJhbWV0ZXJz
LnNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdExv
Z0Nvb2tpZUluZm9ybWF0aW9uRGVmYXVsdHNLZXldOwogI2VuZGlmCi0gICAgCi0jaWYgUExBVEZP
Uk0oTUFDKQorCiAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzID0gV2ViQ29yZTo6Y29sbGVjdFNj
cmVlblByb3BlcnRpZXMoKTsKICAgICBwYXJhbWV0ZXJzLnNjcmVlblByb3BlcnRpZXMgPSBXVEZN
b3ZlKHNjcmVlblByb3BlcnRpZXMpOworI2lmIFBMQVRGT1JNKE1BQykKICAgICBwYXJhbWV0ZXJz
LnVzZU92ZXJsYXlTY3JvbGxiYXJzID0gKFtOU1Njcm9sbGVyIHByZWZlcnJlZFNjcm9sbGVyU3R5
bGVdID09IE5TU2Nyb2xsZXJTdHlsZU92ZXJsYXkpOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMzgzMDUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
OTgsMTIgKzE2OTgsMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJD
bAogCiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUHJvY2Vzczo6c2V0U2Ny
ZWVuUHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVz
KQogewogICAgIFdlYkNvcmU6OnNldFNjcmVlblByb3BlcnRpZXMocHJvcGVydGllcyk7CiB9Ci0j
ZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiB2b2lkIFdlYlByb2Nlc3M6OmFkZE1v
Y2tNZWRpYURldmljZShjb25zdCBXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2UmIGRldmljZSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjM4MzA1KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsOSArMzQsNyBAQAogI2luY2x1ZGUgIlZpZXdVcGRhdGVEaXNwYXRjaGVyLmgiCiAjaW5j
bHVkZSAiV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQWN0aXZpdHlTdGF0ZS5oPgotI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmVlblByb3BlcnRpZXMuaD4KLSNlbmRpZgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4K
ICNpbmNsdWRlIDxwYWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Np
b25JRC5oPgpAQCAtMzgwLDE0ICszNzgsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2Vp
dmVXZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAotI2lmIFBM
QVRGT1JNKE1BQykKICAgICB2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6
U2NyZWVuUHJvcGVydGllcyYpOwotI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9C
TE9DS0lORykKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NF
UlZFUl9CTE9DS0lORykKICAgICB2b2lkIHNjcm9sbGVyU3R5bGVQcmVmZXJlbmNlQ2hhbmdlZChi
b29sIHVzZU92ZXJsYXlTY3JvbGxiYXJzKTsKICAgICB2b2lkIGRpc3BsYXlDb25maWd1cmF0aW9u
Q2hhbmdlZChDR0RpcmVjdERpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzKTsK
ICAgICB2b2lkIGRpc3BsYXlXYXNSZWZyZXNoZWQoQ0dEaXJlY3REaXNwbGF5SUQpOwogI2VuZGlm
Ci0jZW5kaWYKIAogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29u
bmVjdGlvbjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzODMwNSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTQgKzEz
MSwxMiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVcGRh
dGVBY3RpdmVQYWdlcygpCiAgICAgR2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZygpIC0+
IChWZWN0b3I8U3RyaW5nPiBhY3RpdmVPcmlnaW5zKSBMZWdhY3lTeW5jCiAKLSNpZiBQTEFURk9S
TShNQUMpCiAgICAgU2V0U2NyZWVuUHJvcGVydGllcyhzdHJ1Y3QgV2ViQ29yZTo6U2NyZWVuUHJv
cGVydGllcyBzY3JlZW5Qcm9wZXJ0aWVzKQotI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NF
UlZFUl9CTE9DS0lORykKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJ
TkRPV1NFUlZFUl9CTE9DS0lORykKICAgICBTY3JvbGxlclN0eWxlUHJlZmVyZW5jZUNoYW5nZWQo
Ym9vbCB1c2VPdmVsYXlTY3JvbGxiYXJzKQogICAgIERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdl
ZChDR0RpcmVjdERpc3BsYXlJRCBkaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFn
cyBmbGFncykKICAgICBEaXNwbGF5V2FzUmVmcmVzaGVkKHVpbnQzMl90IGRpc3BsYXlJRCkKICNl
bmRpZgotI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTZXRNZWRpYU1JTUVUeXBl
cyhWZWN0b3I8U3RyaW5nPiB0eXBlcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355775</attachid>
            <date>2018-11-27 13:56:39 -0800</date>
            <delta_ts>2018-11-27 14:34:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191767-20181127135638.patch</filename>
            <type>text/plain</type>
            <size>26651</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzODU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTExLTI3ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBZG9wdCBTY3Jl
ZW5Qcm9wZXJ0aWVzIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT24gbWFjT1MsIHRoZSBTY3JlZW5Qcm9wZXJ0aWVzIGNsYXNzIGlzIHVzZWQg
dG8gY29sbGVjdCBzY3JlZW4gcHJvcGVydGllcyBpbiB0aGUgVUkgcHJvY2VzcworICAgICAgICBh
bmQgZm9yd2FyZCB0aGVzZSB0byB0aGUgV2ViIHByb2Nlc3MuIFdlIHNob3VsZCBhbHNvIGRvIHRo
aXMgb24gaU9TLCBpbiBvcmRlciB0byBiZSBhYmxlCisgICAgICAgIHRvIGJsb2NrIGJhY2tib2Fy
ZGQuCisgCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmg6CisgICAgICAgICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAo
V2ViQ29yZTo6U2NyZWVuRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmVlbkRhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVu
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuSXNNb25vY2hyb21lKToKKyAgICAgICAg
KFdlYkNvcmU6OnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U2Ny
ZWVuUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6cHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRpc3BsYXlNYXNrRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpw
cmltYXJ5R1BVSUQpOgorICAgICAgICAoV2ViQ29yZTo6Z3B1SURGb3JEaXNwbGF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5IYXNJbnZlcnRlZENvbG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpzY3JlZW5SZWN0Rm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5TdXBwb3J0
c0V4dGVuZGVkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuUHJvcGVydGllcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwcmltYXJ5U2NyZWVuRGlzcGxheUlEKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldFNjcmVlblByb3BlcnRpZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpn
ZXRTY3JlZW5Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKwogMjAxOC0xMS0yNyAgVGhpYmF1bHQgU2F1
bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bV2ViUlRD
XSBVc2UgTGliV2ViUlRDIHByb3ZpZGVkIHZwOCBkZWNvZGVycyBhbmQgZW5jb2RlcnMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzg1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTU1Niw2ICsxNTU2LDcgQEAgcGxhdGZvcm0vTm90SW1w
bGVtZW50ZWQuY3BwCiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAogcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuY3BwCiBwbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuY3BwCitwbGF0
Zm9ybS9QbGF0Zm9ybVNjcmVlbi5jcHAKIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmNwcAogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAK
IHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtU2NyZWVuLmgiCisKKyNpbmNsdWRlICJTY3JlZW5Qcm9wZXJ0aWVzLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFNjcmVlblByb3BlcnRpZXMmIHNjcmVlblByb3Bl
cnRpZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTY3JlZW5Qcm9wZXJ0aWVzPiBz
Y3JlZW5Qcm9wZXJ0aWVzOworICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzOworfQorCitQbGF0
Zm9ybURpc3BsYXlJRCBwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkKK3sKKyAgICByZXR1cm4gc2Ny
ZWVuUHJvcGVydGllcygpLnByaW1hcnlEaXNwbGF5SUQ7Cit9CisKK3ZvaWQgc2V0U2NyZWVuUHJv
cGVydGllcyhjb25zdCBTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQoreworICAgIHNjcmVl
blByb3BlcnRpZXMoKSA9IHByb3BlcnRpZXM7Cit9CisKK3N0ZDo6b3B0aW9uYWw8Y29uc3QgU2Ny
ZWVuRGF0YSY+IHNjcmVlbkRhdGEoUGxhdGZvcm1EaXNwbGF5SUQgc2NyZWVuZGlzcGxheUlEKQor
eworICAgIGlmIChzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgLy8gUmV0dXJuIHByb3BlcnR5
IG9mIHRoZSBmaXJzdCBzY3JlZW4gaWYgdGhlIHNjcmVlbiBpcyBub3QgZm91bmQgaW4gdGhlIG1h
cC4KKyAgICBhdXRvIGRpc3BsYXlJRCA9IHNjcmVlbmRpc3BsYXlJRCA/IHNjcmVlbmRpc3BsYXlJ
RCA6IHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKTsKKyAgICBpZiAoZGlzcGxheUlEKSB7CisgICAg
ICAgIGF1dG8gc2NyZWVuUHJvcGVydGllc0ZvckRpc3BsYXkgPSBzY3JlZW5Qcm9wZXJ0aWVzKCku
c2NyZWVuRGF0YU1hcC5maW5kKGRpc3BsYXlJRCk7CisgICAgICAgIGlmIChzY3JlZW5Qcm9wZXJ0
aWVzRm9yRGlzcGxheSAhPSBzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5lbmQoKSkK
KyAgICAgICAgICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzRm9yRGlzcGxheS0+dmFsdWU7Cisg
ICAgfQorICAgIAorICAgIC8vIExhc3QgcmVzb3J0OiB1c2UgdGhlIGZpcnN0IGl0ZW0gaW4gdGhl
IHNjcmVlbiBsaXN0LgorICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1h
cC5iZWdpbigpLT52YWx1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCShyZXZpc2lvbiAyMzg1NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisKICNpZiBVU0UoR0xJQikKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNlbmRp
ZgpAQCAtNzksOSArODEsMTUgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JlZW5TdXBwb3J0c0V4
dGVuZAogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lk
Z2V0KiA9IG51bGxwdHIpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiBzdHJ1Y3QgU2Ny
ZWVuUHJvcGVydGllczsKLQorc3RydWN0IFNjcmVlbkRhdGE7CisgICAgCitXRUJDT1JFX0VYUE9S
VCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCk7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgU2NyZWVuUHJvcGVydGllcyYpOwor
c3RkOjpvcHRpb25hbDxjb25zdCBTY3JlZW5EYXRhJj4gc2NyZWVuRGF0YShQbGF0Zm9ybURpc3Bs
YXlJRCBzY3JlZW5kaXNwbGF5SUQpOworV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1EaXNwbGF5SUQg
cHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpOworICAgIAorI2lmIFBMQVRGT1JNKE1BQykKIFdFQkNP
UkVfRVhQT1JUIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRChOU1NjcmVlbiAqKTsKIAogV0VC
Q09SRV9FWFBPUlQgTlNTY3JlZW4gKnNjcmVlbihOU1dpbmRvdyAqKTsKQEAgLTk2LDExICsxMDQs
NiBAQCBXRUJDT1JFX0VYUE9SVCBOU1JlY3QgdG9EZXZpY2VTcGFjZShjb25zCiAKIE5TUG9pbnQg
ZmxpcFNjcmVlblBvaW50KGNvbnN0IE5TUG9pbnQmLCBOU1NjcmVlbiAqKTsKIAotV0VCQ09SRV9F
WFBPUlQgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcygpOwotV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFNjcmVlblByb3BlcnRpZXMm
KTsKLQotV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1EaXNwbGF5SUQgcHJpbWFyeVNjcmVlbkRpc3Bs
YXlJRCgpOwotCiB1aW50MzJfdCBwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKTsKIHVpbnQzMl90
IGRpc3BsYXlNYXNrRm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHJldmlzaW9uIDIzODU1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKE1B
QykKLQogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgi
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzksMTUgKzM3LDE4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZh
aWxhYmxlUmVjdDsKICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdDsKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlOworI2VuZGlmCiAg
ICAgaW50IHNjcmVlbkRlcHRoIHsgMCB9OwogICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVu
dCB7IDAgfTsKICAgICBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciB7IGZhbHNlIH07
CiAgICAgYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyB7IGZhbHNlIH07CiAgICAgYm9vbCBz
Y3JlZW5Jc01vbm9jaHJvbWUgeyBmYWxzZSB9OworI2lmIFBMQVRGT1JNKE1BQykKICAgICB1aW50
MzJfdCBkaXNwbGF5TWFzayB7IDAgfTsKICAgICBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SUQgeyAwIH07
Ci0KKyNlbmRpZgogICAgIGVudW0gRW5jb2RlZENvbG9yU3BhY2VEYXRhVHlwZSB7CiAgICAgICAg
IE51bGwsCiAgICAgICAgIENvbG9yU3BhY2VOYW1lLApAQCAtOTQsOCArOTUsMTMgQEAgc3RkOjpv
cHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5QcgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KIHZvaWQgU2NyZWVuRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0g
ICAgZW5jb2RlciA8PCBzY3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVu
RGVwdGggPDwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yIDw8IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8
PCBkaXNwbGF5TWFzayA8PCBncHVJRDsKKyAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJl
Y3QgPDwgc2NyZWVuUmVjdCA8PCBzY3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVu
dCA8PCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xv
cnMgPDwgc2NyZWVuSXNNb25vY2hyb21lOworICAgIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBl
bmNvZGVyIDw8IGRpc3BsYXlNYXNrIDw8IGdwdUlEOworI2VuZGlmCiAKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBpZiAoY29sb3JTcGFjZSkgewogICAgICAgICAvLyBUcnkgdG8gZW5jb2RlIHRo
ZSBuYW1lLgogICAgICAgICBpZiAoYXV0byBuYW1lID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5
TmFtZShjb2xvclNwYWNlLmdldCgpKSkpIHsKQEAgLTExNSw2ICsxMjEsNyBAQCB2b2lkIFNjcmVl
bkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CisjZW5kaWYKIAogICAgIC8vIFRoZSBjb2xvciBzcGFjZSB3YXMgbnVsbCBv
ciBmYWlsZWQgdG8gYmUgZW5jb2RlZC4KICAgICBlbmNvZGVyIDw8IE51bGw7CkBAIC0xNTgsNiAr
MTY1LDcgQEAgc3RkOjpvcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZQogICAgIGlm
ICghc2NyZWVuSXNNb25vY2hyb21lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisj
aWYgUExBVEZPUk0oTUFDKQogICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGRpc3BsYXlNYXNr
OwogICAgIGRlY29kZXIgPj4gZGlzcGxheU1hc2s7CiAgICAgaWYgKCFkaXNwbGF5TWFzaykKQEAg
LTE2Nyw3ICsxNzUsOSBAQCBzdGQ6Om9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRl
CiAgICAgZGVjb2RlciA+PiBncHVJRDsKICAgICBpZiAoIWdwdUlEKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIAorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBF
bmNvZGVkQ29sb3JTcGFjZURhdGFUeXBlIGRhdGFUeXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKGRhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIwMSwx
MCArMjExLDI0IEBAIHN0ZDo6b3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGUKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KKyNlbmRpZgogCi0gICAgcmV0dXJuIHsgeyBXVEZN
b3ZlKCpzY3JlZW5BdmFpbGFibGVSZWN0KSwgV1RGTW92ZSgqc2NyZWVuUmVjdCksIFdURk1vdmUo
Y2dDb2xvclNwYWNlKSwgV1RGTW92ZSgqc2NyZWVuRGVwdGgpLCBXVEZNb3ZlKCpzY3JlZW5EZXB0
aFBlckNvbXBvbmVudCksIFdURk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksIFdU
Rk1vdmUoKnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKSwgV1RGTW92ZSgqc2NyZWVuSXNNb25vY2hy
b21lKSwgV1RGTW92ZSgqZGlzcGxheU1hc2spLCBXVEZNb3ZlKCpncHVJRCkgfSB9OworICAgIHJl
dHVybiB7IHsKKyAgICAgICAgV1RGTW92ZSgqc2NyZWVuQXZhaWxhYmxlUmVjdCksCisgICAgICAg
IFdURk1vdmUoKnNjcmVlblJlY3QpLAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBXVEZN
b3ZlKGNnQ29sb3JTcGFjZSksCisjZW5kaWYKKyAgICAgICAgV1RGTW92ZSgqc2NyZWVuRGVwdGgp
LAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCksCisgICAgICAgIFdU
Rk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksCisgICAgICAgIFdURk1vdmUoKnNj
cmVlbkhhc0ludmVydGVkQ29sb3JzKSwKKyAgICAgICAgV1RGTW92ZSgqc2NyZWVuSXNNb25vY2hy
b21lKSwKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIFdURk1vdmUoKmRpc3BsYXlNYXNrKSwK
KyAgICAgICAgV1RGTW92ZSgqZ3B1SUQpCisjZW5kaWYKKyAgICB9IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0JKHJldmlzaW9u
IDIzODU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIkludFJlY3QuaCIK
KyNpbXBvcnQgIlNjcmVlblByb3BlcnRpZXMuaCIKICNpbXBvcnQgIldBS1dpbmRvdy5oIgogI2lt
cG9ydCAiV2lkZ2V0LmgiCiAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KQEAgLTU4
LDE2ICs1OSwyOCBAQCBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KikKIAogYm9v
bCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KikKIHsKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRh
KHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSk7CisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpCisgICAg
ICAgIHJldHVybiB2LT5zY3JlZW5Jc01vbm9jaHJvbWU7CisgICAgCiAgICAgcmV0dXJuIFBBTDo6
c29mdExpbmtVSUtpdFVJQWNjZXNzaWJpbGl0eUlzR3JheXNjYWxlRW5hYmxlZCgpOwogfQogCiBi
b29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCkKIHsKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRh
KHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSk7CisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpCisgICAg
ICAgIHJldHVybiB2LT5zY3JlZW5IYXNJbnZlcnRlZENvbG9yczsKKyAgICAKICAgICByZXR1cm4g
UEFMOjpzb2Z0TGlua1VJS2l0VUlBY2Nlc3NpYmlsaXR5SXNJbnZlcnRDb2xvcnNFbmFibGVkKCk7
CiB9CiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCopCiB7CisgICAg
YXV0byB2ID0gc2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2
Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yOworCiAgICAgcmV0dXJuIE1HR2V0Qm9vbEFuc3dlcihrTUdRSGFzRXh0ZW5kZWRDb2xvckRp
c3BsYXkpOwogfQogCkBAIC0xNTgsNiArMTcxLDM0IEBAIGZsb2F0IHNjcmVlblNjYWxlRmFjdG9y
KFVJU2NyZWVuICpzY3JlZW4KICAgICByZXR1cm4gc2NyZWVuLnNjYWxlOwogfQogCitTY3JlZW5Q
cm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCkKK3sKKyAgICBTY3JlZW5Qcm9wZXJ0
aWVzIHNjcmVlblByb3BlcnRpZXM7CisKKyAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQg
PSAwOworCisgICAgZm9yIChVSVNjcmVlbiAqc2NyZWVuIGluIFtQQUw6OmdldF9VSUtpdF9VSVNj
cmVlbkNsYXNzKCkgc2NyZWVuc10pIHsKKyAgICAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJs
ZVJlY3QgPSBzY3JlZW4uYm91bmRzOworICAgICAgICBzY3JlZW5BdmFpbGFibGVSZWN0LnNldFko
TlNNYXhZKHNjcmVlbi5ib3VuZHMpIC0gKHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpICsgc2NyZWVu
QXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkpOyAvLyBmbGlwCisgICAgICAgIEZsb2F0UmVjdCBzY3Jl
ZW5SZWN0ID0gc2NyZWVuLl9yZWZlcmVuY2VCb3VuZHM7CisgICAgICAgIAorICAgICAgICBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShudWxs
cHRyKTsKKyAgICAgICAgCisgICAgICAgIGludCBzY3JlZW5EZXB0aCA9IFdlYkNvcmU6OnNjcmVl
bkRlcHRoKG51bGxwdHIpOworICAgICAgICBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPSBX
ZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudChudWxscHRyKTsKKyAgICAgICAgYm9vbCBz
Y3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSBXZWJDb3JlOjpzY3JlZW5TdXBwb3J0c0V4dGVu
ZGVkQ29sb3IobnVsbHB0cik7CisgICAgICAgIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMg
PSBXZWJDb3JlOjpzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpOworICAgICAgICBib29sIHNjcmVl
bklzTW9ub2Nocm9tZSA9IFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZShudWxscHRyKTsKKwor
ICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KCsrZGlzcGxheUlELCBT
Y3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgY29sb3JTcGFjZSwg
c2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVu
ZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBzY3JlZW5Jc01vbm9jaHJvbWUgfSk7
CisgICAgICAgIAorICAgICAgICBpZiAoc2NyZWVuID09IFtQQUw6OmdldF9VSUtpdF9VSVNjcmVl
bkNsYXNzKCkgbWFpblNjcmVlbl0pCisgICAgICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnByaW1h
cnlEaXNwbGF5SUQgPSBkaXNwbGF5SUQ7CisgICAgfQorICAgIAorICAgIHJldHVybiBzY3JlZW5Q
cm9wZXJ0aWVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtU2NyZWVuTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQkocmV2aXNpb24gMjM4NTU5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC05
NiwxNyArOTYsNiBAQCBzdGF0aWMgTlNTY3JlZW4gKnNjcmVlbihXaWRnZXQqIHdpZGdldCkKICAg
ICByZXR1cm4gc2NyZWVuKGRpc3BsYXlJRCh3aWRnZXQpKTsKIH0KIAotc3RhdGljIFNjcmVlblBy
b3BlcnRpZXMmIHNjcmVlblByb3BlcnRpZXMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTY3JlZW5Qcm9wZXJ0aWVzPiBzY3JlZW5Qcm9wZXJ0aWVzOwotICAgIHJldHVybiBzY3JlZW5Q
cm9wZXJ0aWVzOwotfQotCi1QbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5U2NyZWVuRGlzcGxheUlE
KCkKLXsKLSAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllcygpLnByaW1hcnlEaXNwbGF5SUQ7Ci19
Ci0KIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMoKQogewogICAgIEFT
U0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRl
V2l0aFdpbmRvd1NlcnZlcikpOwpAQCAtMTQzLDM5ICsxMzIsMjAgQEAgU2NyZWVuUHJvcGVydGll
cyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcwogICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzOwog
fQogCi12b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgU2NyZWVuUHJvcGVydGllcyYgcHJv
cGVydGllcykKLXsKLSAgICBzY3JlZW5Qcm9wZXJ0aWVzKCkgPSBwcm9wZXJ0aWVzOwotfQotCi1z
dGF0aWMgU2NyZWVuRGF0YSBzY3JlZW5EYXRhKFBsYXRmb3JtRGlzcGxheUlEIHNjcmVlbmRpc3Bs
YXlJRCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVCghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRh
dGFNYXAuaXNFbXB0eSgpKTsKLQotICAgIC8vIFJldHVybiBwcm9wZXJ0eSBvZiB0aGUgZmlyc3Qg
c2NyZWVuIGlmIHRoZSBzY3JlZW4gaXMgbm90IGZvdW5kIGluIHRoZSBtYXAuCi0gICAgYXV0byBk
aXNwbGF5SUQgPSBzY3JlZW5kaXNwbGF5SUQgPyBzY3JlZW5kaXNwbGF5SUQgOiBwcmltYXJ5U2Ny
ZWVuRGlzcGxheUlEKCk7Ci0gICAgaWYgKGRpc3BsYXlJRCkgewotICAgICAgICBhdXRvIHNjcmVl
blByb3BlcnRpZXNGb3JEaXNwbGF5ID0gc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAu
ZmluZChkaXNwbGF5SUQpOwotICAgICAgICBpZiAoc2NyZWVuUHJvcGVydGllc0ZvckRpc3BsYXkg
IT0gc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuZW5kKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gc2NyZWVuUHJvcGVydGllc0ZvckRpc3BsYXktPnZhbHVlOwotICAgIH0KLQotICAgIC8v
IExhc3QgcmVzb3J0OiB1c2UgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIHNjcmVlbiBsaXN0LgotICAg
IHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5iZWdpbigpLT52YWx1ZTsK
LX0KLQogdWludDMyX3QgcHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkKIHsKLSAgICBpZiAoIXNj
cmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKS5kaXNwbGF5TWFzazsKKyAgICBh
dXRvIHYgPSBzY3JlZW5EYXRhKHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSk7CisgICAgaWYgKHYu
aGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5kaXNwbGF5TWFzazsKICAgICAKICAgICBy
ZXR1cm4gMDsKIH0KIAogdWludDMyX3QgZGlzcGxheU1hc2tGb3JEaXNwbGF5KFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5E
YXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHNjcmVlbkRhdGEoZGlzcGxheUlEKS5k
aXNwbGF5TWFzazsKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRhKGRpc3BsYXlJRCk7CisgICAgaWYg
KHYuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5kaXNwbGF5TWFzazsKICAgICAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKQEAgLTE4NCwxNCArMTU0LDE1
IEBAIHVpbnQzMl90IGRpc3BsYXlNYXNrRm9yRGlzcGxheShQbGF0Zm9ybUQKICNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAogSU9SZWdpc3RyeUdQVUlEIHByaW1h
cnlHUFVJRCgpCiB7Ci0gICAgcmV0dXJuIGdwdUlERm9yRGlzcGxheShzY3JlZW5Qcm9wZXJ0aWVz
KCkucHJpbWFyeURpc3BsYXlJRCk7CisgICAgcmV0dXJuIGdwdUlERm9yRGlzcGxheShwcmltYXJ5
U2NyZWVuRGlzcGxheUlEKCkpOwogfQogCiBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SURGb3JEaXNwbGF5
KFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKIHsKICNpZiBFTkFCTEUoV0VCUFJPQ0VTU19X
SU5ET1dTRVJWRVJfQkxPQ0tJTkcpCi0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVu
RGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKGRpc3BsYXlJRCku
Z3B1SUQ7CisgICAgYXV0byB2ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpOworICAgIGlmICh2Lmhh
c192YWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+Z3B1SUQ7CiAjZWxzZQogICAgIHJldHVybiBn
cHVJREZvckRpc3BsYXlNYXNrKENHRGlzcGxheUlEVG9PcGVuR0xEaXNwbGF5TWFzayhkaXNwbGF5
SUQpKTsKICNlbmRpZgpAQCAtMjM0LDE1ICsyMDUsMTYgQEAgSU9SZWdpc3RyeUdQVUlEIGdwdUlE
Rm9yRGlzcGxheU1hc2soR0x1aQogfQogI2VuZGlmIC8vICFfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEwMTMwMAogCi1zdGF0aWMgU2NyZWVuRGF0YSBnZXRTY3JlZW5Qcm9wZXJ0
aWVzKFdpZGdldCogd2lkZ2V0KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8Y29uc3QgU2NyZWVuRGF0
YSY+IGdldFNjcmVlblByb3BlcnRpZXMoV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgcmV0dXJuIHNj
cmVlbkRhdGEoZGlzcGxheUlEKHdpZGdldCkpOwogfQogCiBib29sIHNjcmVlbklzTW9ub2Nocm9t
ZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5E
YXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGdldFNjcmVlblByb3BlcnRpZXMod2lk
Z2V0KS5zY3JlZW5Jc01vbm9jaHJvbWU7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVydGll
cyh3aWRnZXQpOworICAgIGlmICh2Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2Ny
ZWVuSXNNb25vY2hyb21lOwogCiAgICAgLy8gVGhpcyBpcyBhIHN5c3RlbS13aWRlIGFjY2Vzc2li
aWxpdHkgc2V0dGluZywgc2FtZSBvbiBhbGwgc2NyZWVucy4KICAgICBBU1NFUlQoaGFzUHJvY2Vz
c1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2
ZXIpKTsKQEAgLTI1MSw4ICsyMjMsOSBAQCBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQq
IHdpZGdldCkKIAogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiB7Ci0gICAgaWYgKCFz
Y3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBzY3JlZW5EYXRhKHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSkuc2NyZWVuSGFzSW52ZXJ0ZWRD
b2xvcnM7CisgICAgYXV0byB2ID0gc2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkp
OworICAgIGlmICh2Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuSGFzSW52
ZXJ0ZWRDb2xvcnM7CiAKICAgICAvLyBUaGlzIGlzIGEgc3lzdGVtLXdpZGUgYWNjZXNzaWJpbGl0
eSBzZXR0aW5nLCBzYW1lIG9uIGFsbCBzY3JlZW5zLgogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikp
OwpAQCAtMjYxLDggKzIzNCw5IEBAIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKQogCiBp
bnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0
aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byBzY3JlZW5EZXB0
aCA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KS5zY3JlZW5EZXB0aDsKKyAgICBhdXRvIHYg
PSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCk7CisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpIHsK
KyAgICAgICAgYXV0byBzY3JlZW5EZXB0aCA9IHYtPnNjcmVlbkRlcHRoOwogICAgICAgICBBU1NF
UlQoc2NyZWVuRGVwdGgpOwogICAgICAgICByZXR1cm4gc2NyZWVuRGVwdGg7CiAgICAgfQpAQCAt
MjczLDggKzI0Nyw5IEBAIGludCBzY3JlZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKIAogaW50IHNj
cmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCogd2lkZ2V0KQogewotICAgIGlmICghc2NyZWVu
UHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gZGVw
dGhQZXJDb21wb25lbnQgPSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuRGVwdGhQ
ZXJDb21wb25lbnQ7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOwor
ICAgIGlmICh2Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGF1dG8gZGVwdGhQZXJDb21wb25lbnQg
PSB2LT5zY3JlZW5EZXB0aFBlckNvbXBvbmVudDsKICAgICAgICAgQVNTRVJUKGRlcHRoUGVyQ29t
cG9uZW50KTsKICAgICAgICAgcmV0dXJuIGRlcHRoUGVyQ29tcG9uZW50OwogICAgIH0KQEAgLTI4
NSw4ICsyNjAsOSBAQCBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnCiAK
IEZsb2F0UmVjdCBzY3JlZW5SZWN0Rm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgYXV0byBzY3JlZW5SZWN0ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpLnNj
cmVlblJlY3Q7CisgICAgYXV0byB2ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpOworICAgIGlmICh2
Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGF1dG8gc2NyZWVuUmVjdCA9IHYtPnNjcmVlblJlY3Q7
CiAgICAgICAgIEFTU0VSVCghc2NyZWVuUmVjdC5pc0VtcHR5KCkpOwogICAgICAgICByZXR1cm4g
c2NyZWVuUmVjdDsKICAgICB9CkBAIC0zMDIsOCArMjc4LDkgQEAgRmxvYXRSZWN0IHNjcmVlblJl
Y3RGb3JQcmltYXJ5U2NyZWVuKCkKIAogRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRn
ZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuUmVj
dDsKKyAgICBhdXRvIHYgPSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCk7CisgICAgaWYgKHYu
aGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5SZWN0OwogCiAgICAgQVNTRVJU
KGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRo
V2luZG93U2VydmVyKSk7CiAgICAgcmV0dXJuIHRvVXNlclNwYWNlKFtzY3JlZW4od2lkZ2V0KSBm
cmFtZV0sIHdpbmRvdyh3aWRnZXQpKTsKQEAgLTMxMSw4ICsyODgsOSBAQCBGbG9hdFJlY3Qgc2Ny
ZWVuUmVjdChXaWRnZXQqIHdpZGdldCkKIAogRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3Qo
V2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0
YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdl
dCkuc2NyZWVuQXZhaWxhYmxlUmVjdDsKKyAgICBhdXRvIHYgPSBnZXRTY3JlZW5Qcm9wZXJ0aWVz
KHdpZGdldCk7CisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3Jl
ZW5BdmFpbGFibGVSZWN0OwogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7CiAgICAgcmV0dXJu
IHRvVXNlclNwYWNlKFtzY3JlZW4od2lkZ2V0KSB2aXNpYmxlRnJhbWVdLCB3aW5kb3cod2lkZ2V0
KSk7CkBAIC0zMzYsOCArMzE0LDkgQEAgTlNTY3JlZW4gKnNjcmVlbihQbGF0Zm9ybURpc3BsYXlJ
RCBkaXNwbAogCiBDR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdl
dCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KS5jb2xvclNwYWNl
LmdldCgpOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBp
ZiAodi5oYXNfdmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPmNvbG9yU3BhY2UuZ2V0KCk7CiAK
ICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21t
dW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKICAgICByZXR1cm4gc2NyZWVuKHdpZGdldCkuY29s
b3JTcGFjZS5DR0NvbG9yU3BhY2U7CkBAIC0zNDUsOCArMzI0LDkgQEAgQ0dDb2xvclNwYWNlUmVm
IHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KgogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRD
b2xvcihXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3Jl
ZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGdldFNjcmVlblByb3BlcnRpZXMo
d2lkZ2V0KS5zY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3I7CisgICAgYXV0byB2ID0gZ2V0U2Ny
ZWVuUHJvcGVydGllcyh3aWRnZXQpOworICAgIGlmICh2Lmhhc192YWx1ZSgpKQorICAgICAgICBy
ZXR1cm4gdi0+c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOwogCiAgICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93
U2VydmVyKSk7CiAgICAgcmV0dXJuIFtzY3JlZW4od2lkZ2V0KSBjYW5SZXByZXNlbnREaXNwbGF5
R2FtdXQ6TlNEaXNwbGF5R2FtdXRQM107CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM4NTU5KQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBA
QAorMjAxOC0xMS0yNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgW2lPU10gQWRvcHQgU2NyZWVuUHJvcGVydGllcyBjbGFzcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTc2NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgcmVsZXZlbnQgbWFjT1MgcGxh
dGZvcm0gY29kZSBjcm9zcyBwbGF0Zm9ybS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0U2NyZWVuUHJvcGVydGllcyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDE4LTExLTI3ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdC5BZGRBbmRSZW1vdmVEYXRh
RGV0ZWN0b3JzIGhpdHMgYSBkZWJ1ZyBhc3NlcnRpb24gYWZ0ZXIgcjIzODUxNQpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHJldmlzaW9uIDIzODU1OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsOCArMTU4LDkg
QEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIg
PDwgbWVkaWFNSU1FVHlwZXM7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKICAgICBlbmNv
ZGVyIDw8IHNjcmVlblByb3BlcnRpZXM7CisKKyNpZiBQTEFURk9STShNQUMpCiAgICAgZW5jb2Rl
ciA8PCB1c2VPdmVybGF5U2Nyb2xsYmFyczsKICNlbmRpZgogfQpAQCAtNDE4LDEyICs0MTksMTMg
QEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKICAgICBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNjcmVlblByb3BlcnRpZXM+IHNjcmVlblByb3BlcnRpZXM7CiAgICAgZGVjb2Rl
ciA+PiBzY3JlZW5Qcm9wZXJ0aWVzOwogICAgIGlmICghc2NyZWVuUHJvcGVydGllcykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFtZXRlcnMuc2NyZWVuUHJvcGVydGllcyA9IFdURk1v
dmUoKnNjcmVlblByb3BlcnRpZXMpOworCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VPdmVybGF5U2Nyb2xsYmFycykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjM4NTU5KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgog
I2luY2x1ZGUgIlRleHRDaGVja2VyU3RhdGUuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmVl
blByb3BlcnRpZXMuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CkBAIC00MSwxMSArNDMsNiBA
QAogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KE1BQykKLSNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+Ci0jZW5kaWYKLQogI2lmIFVTRShTT1VQKQogI2luY2x1
ZGUgIkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NvdXBOZXR3
b3JrUHJveHlTZXR0aW5ncy5oPgpAQCAtMTk3LDggKzE5NCw5IEBAIHN0cnVjdCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiB7
IGZhbHNlIH07CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKICAgICBXZWJDb3JlOjpTY3Jl
ZW5Qcm9wZXJ0aWVzIHNjcmVlblByb3BlcnRpZXM7CisKKyNpZiBQTEFURk9STShNQUMpCiAgICAg
Ym9vbCB1c2VPdmVybGF5U2Nyb2xsYmFycyB7IHRydWUgfTsKICNlbmRpZgogfTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQkocmV2aXNpb24gMjM4NTU5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjU1LDEwICsyNTUsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHBh
cmFtZXRlcnMuc2hvdWxkTG9nVXNlckludGVyYWN0aW9uID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6
V2ViS2l0TG9nQ29va2llSW5mb3JtYXRpb25EZWZhdWx0c0tleV07CiAjZW5kaWYKLSAgICAKLSNp
ZiBQTEFURk9STShNQUMpCisKICAgICBhdXRvIHNjcmVlblByb3BlcnRpZXMgPSBXZWJDb3JlOjpj
b2xsZWN0U2NyZWVuUHJvcGVydGllcygpOwogICAgIHBhcmFtZXRlcnMuc2NyZWVuUHJvcGVydGll
cyA9IFdURk1vdmUoc2NyZWVuUHJvcGVydGllcyk7CisjaWYgUExBVEZPUk0oTUFDKQogICAgIHBh
cmFtZXRlcnMudXNlT3ZlcmxheVNjcm9sbGJhcnMgPSAoW05TU2Nyb2xsZXIgcHJlZmVycmVkU2Ny
b2xsZXJTdHlsZV0gPT0gTlNTY3JvbGxlclN0eWxlT3ZlcmxheSk7CiAjZW5kaWYKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIzODU1OSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTcxOSwxMiArMTcxOSwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsCiAKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQogdm9pZCBXZWJQcm9jZXNz
OjpzZXRTY3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlNjcmVlblByb3BlcnRpZXMmIHBy
b3BlcnRpZXMpCiB7CiAgICAgV2ViQ29yZTo6c2V0U2NyZWVuUHJvcGVydGllcyhwcm9wZXJ0aWVz
KTsKIH0KLSNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIHZvaWQgV2ViUHJvY2Vz
czo6YWRkTW9ja01lZGlhRGV2aWNlKGNvbnN0IFdlYkNvcmU6Ok1vY2tNZWRpYURldmljZSYgZGV2
aWNlKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAy
Mzg1NTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw5ICszNCw3IEBACiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXIu
aCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+Ci0jaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUg
PFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgotI2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9U
aW1lci5oPgogI2luY2x1ZGUgPHBhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KICNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CkBAIC0zODcsOSArMzg1LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFJlY2VpdmVXZWJQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKIAor
ICAgIHZvaWQgc2V0U2NyZWVuUHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpTY3JlZW5Qcm9wZXJ0
aWVzJik7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc05hbWUoKTsK
LSAgICB2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6U2NyZWVuUHJvcGVy
dGllcyYpOwogI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAg
ICB2b2lkIHNjcm9sbGVyU3R5bGVQcmVmZXJlbmNlQ2hhbmdlZChib29sIHVzZU92ZXJsYXlTY3Jv
bGxiYXJzKTsKICAgICB2b2lkIGRpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZChDR0RpcmVjdERp
c3BsYXlJRCwgQ0dEaXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzg1
NTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMTMyLDE0ICsxMzIsMTIgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgVXBkYXRlQWN0aXZlUGFnZXMoKQogICAgIEdldEFjdGl2
ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcoKSAtPiAoVmVjdG9yPFN0cmluZz4gYWN0aXZlT3JpZ2lu
cykgTGVnYWN5U3luYwogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIFNldFNjcmVlblByb3BlcnRp
ZXMoc3RydWN0IFdlYkNvcmU6OlNjcmVlblByb3BlcnRpZXMgc2NyZWVuUHJvcGVydGllcykKLSNp
ZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisjaWYgUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiAgICAgU2Ny
b2xsZXJTdHlsZVByZWZlcmVuY2VDaGFuZ2VkKGJvb2wgdXNlT3ZlbGF5U2Nyb2xsYmFycykKICAg
ICBEaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWQoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheUlE
LCBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3MgZmxhZ3MpCiAgICAgRGlzcGxheVdhc1JlZnJl
c2hlZCh1aW50MzJfdCBkaXNwbGF5SUQpCiAjZW5kaWYKLSNlbmRpZgogCiAgICAgSXNKSVRFbmFi
bGVkKCkgLT4gKGJvb2wgZW5hYmxlZCkgQXN5bmMKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355785</attachid>
            <date>2018-11-27 14:34:53 -0800</date>
            <delta_ts>2020-03-25 15:50:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191767-20181127143453.patch</filename>
            <type>text/plain</type>
            <size>26637</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzODU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTExLTI3ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBZG9wdCBTY3Jl
ZW5Qcm9wZXJ0aWVzIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT24gbWFjT1MsIHRoZSBTY3JlZW5Qcm9wZXJ0aWVzIGNsYXNzIGlzIHVzZWQg
dG8gY29sbGVjdCBzY3JlZW4gcHJvcGVydGllcyBpbiB0aGUgVUkgcHJvY2VzcworICAgICAgICBh
bmQgZm9yd2FyZCB0aGVzZSB0byB0aGUgV2ViIHByb2Nlc3MuIFdlIHNob3VsZCBhbHNvIGRvIHRo
aXMgb24gaU9TLCBpbiBvcmRlciB0byBiZSBhYmxlCisgICAgICAgIHRvIGJsb2NrIGJhY2tib2Fy
ZGQuCisgCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4K
KworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmg6CisgICAgICAgICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAo
V2ViQ29yZTo6U2NyZWVuRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmVlbkRhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVu
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuSXNNb25vY2hyb21lKToKKyAgICAgICAg
KFdlYkNvcmU6OnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U2Ny
ZWVuUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6cHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRpc3BsYXlNYXNrRm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpw
cmltYXJ5R1BVSUQpOgorICAgICAgICAoV2ViQ29yZTo6Z3B1SURGb3JEaXNwbGF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5IYXNJbnZlcnRlZENvbG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpzY3JlZW5SZWN0Rm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5TdXBwb3J0
c0V4dGVuZGVkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuUHJvcGVydGllcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwcmltYXJ5U2NyZWVuRGlzcGxheUlEKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldFNjcmVlblByb3BlcnRpZXMpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpn
ZXRTY3JlZW5Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKwogMjAxOC0xMS0yNyAgVGhpYmF1bHQgU2F1
bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bV2ViUlRD
XSBVc2UgTGliV2ViUlRDIHByb3ZpZGVkIHZwOCBkZWNvZGVycyBhbmQgZW5jb2RlcnMKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzg1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTU1Niw2ICsxNTU2LDcgQEAgcGxhdGZvcm0vTm90SW1w
bGVtZW50ZWQuY3BwCiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmNwcAogcGxhdGZvcm0vUGFzdGVib2Fy
ZFdyaXRlckRhdGEuY3BwCiBwbGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuY3BwCitwbGF0
Zm9ybS9QbGF0Zm9ybVNjcmVlbi5jcHAKIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmNwcAogcGxhdGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAK
IHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtU2NyZWVuLmgiCisKKyNpbmNsdWRlICJTY3JlZW5Qcm9wZXJ0aWVzLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFNjcmVlblByb3BlcnRpZXMmIHNjcmVlblByb3Bl
cnRpZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTY3JlZW5Qcm9wZXJ0aWVzPiBz
Y3JlZW5Qcm9wZXJ0aWVzOworICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzOworfQorCitQbGF0
Zm9ybURpc3BsYXlJRCBwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkKK3sKKyAgICByZXR1cm4gc2Ny
ZWVuUHJvcGVydGllcygpLnByaW1hcnlEaXNwbGF5SUQ7Cit9CisKK3ZvaWQgc2V0U2NyZWVuUHJv
cGVydGllcyhjb25zdCBTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQoreworICAgIHNjcmVl
blByb3BlcnRpZXMoKSA9IHByb3BlcnRpZXM7Cit9CisKK3N0ZDo6b3B0aW9uYWw8Y29uc3QgU2Ny
ZWVuRGF0YSY+IHNjcmVlbkRhdGEoUGxhdGZvcm1EaXNwbGF5SUQgc2NyZWVuZGlzcGxheUlEKQor
eworICAgIGlmIChzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgLy8gUmV0dXJuIHByb3BlcnR5
IG9mIHRoZSBmaXJzdCBzY3JlZW4gaWYgdGhlIHNjcmVlbiBpcyBub3QgZm91bmQgaW4gdGhlIG1h
cC4KKyAgICBhdXRvIGRpc3BsYXlJRCA9IHNjcmVlbmRpc3BsYXlJRCA/IHNjcmVlbmRpc3BsYXlJ
RCA6IHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKTsKKyAgICBpZiAoZGlzcGxheUlEKSB7CisgICAg
ICAgIGF1dG8gc2NyZWVuUHJvcGVydGllc0ZvckRpc3BsYXkgPSBzY3JlZW5Qcm9wZXJ0aWVzKCku
c2NyZWVuRGF0YU1hcC5maW5kKGRpc3BsYXlJRCk7CisgICAgICAgIGlmIChzY3JlZW5Qcm9wZXJ0
aWVzRm9yRGlzcGxheSAhPSBzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5lbmQoKSkK
KyAgICAgICAgICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzRm9yRGlzcGxheS0+dmFsdWU7Cisg
ICAgfQorICAgIAorICAgIC8vIExhc3QgcmVzb3J0OiB1c2UgdGhlIGZpcnN0IGl0ZW0gaW4gdGhl
IHNjcmVlbiBsaXN0LgorICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1h
cC5iZWdpbigpLT52YWx1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCShyZXZpc2lvbiAyMzg1NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisKICNpZiBVU0UoR0xJQikKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNlbmRp
ZgpAQCAtNzksOSArODEsMTUgQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JlZW5TdXBwb3J0c0V4
dGVuZAogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lk
Z2V0KiA9IG51bGxwdHIpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiBzdHJ1Y3QgU2Ny
ZWVuUHJvcGVydGllczsKLQorc3RydWN0IFNjcmVlbkRhdGE7CisgICAgCitXRUJDT1JFX0VYUE9S
VCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCk7CitXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgU2NyZWVuUHJvcGVydGllcyYpOwor
c3RkOjpvcHRpb25hbDxjb25zdCBTY3JlZW5EYXRhJj4gc2NyZWVuRGF0YShQbGF0Zm9ybURpc3Bs
YXlJRCBzY3JlZW5kaXNwbGF5SUQpOworV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1EaXNwbGF5SUQg
cHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpOworICAgIAorI2lmIFBMQVRGT1JNKE1BQykKIFdFQkNP
UkVfRVhQT1JUIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRChOU1NjcmVlbiAqKTsKIAogV0VC
Q09SRV9FWFBPUlQgTlNTY3JlZW4gKnNjcmVlbihOU1dpbmRvdyAqKTsKQEAgLTk2LDExICsxMDQs
NiBAQCBXRUJDT1JFX0VYUE9SVCBOU1JlY3QgdG9EZXZpY2VTcGFjZShjb25zCiAKIE5TUG9pbnQg
ZmxpcFNjcmVlblBvaW50KGNvbnN0IE5TUG9pbnQmLCBOU1NjcmVlbiAqKTsKIAotV0VCQ09SRV9F
WFBPUlQgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcygpOwotV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFNjcmVlblByb3BlcnRpZXMm
KTsKLQotV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1EaXNwbGF5SUQgcHJpbWFyeVNjcmVlbkRpc3Bs
YXlJRCgpOwotCiB1aW50MzJfdCBwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKTsKIHVpbnQzMl90
IGRpc3BsYXlNYXNrRm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHJldmlzaW9uIDIzODU1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFBMQVRGT1JNKE1B
QykKLQogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgi
CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzksMTUgKzM3LDE4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZh
aWxhYmxlUmVjdDsKICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdDsKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlOworI2VuZGlmCiAg
ICAgaW50IHNjcmVlbkRlcHRoIHsgMCB9OwogICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVu
dCB7IDAgfTsKICAgICBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciB7IGZhbHNlIH07
CiAgICAgYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyB7IGZhbHNlIH07CiAgICAgYm9vbCBz
Y3JlZW5Jc01vbm9jaHJvbWUgeyBmYWxzZSB9OworI2lmIFBMQVRGT1JNKE1BQykKICAgICB1aW50
MzJfdCBkaXNwbGF5TWFzayB7IDAgfTsKICAgICBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SUQgeyAwIH07
Ci0KKyNlbmRpZgogICAgIGVudW0gRW5jb2RlZENvbG9yU3BhY2VEYXRhVHlwZSB7CiAgICAgICAg
IE51bGwsCiAgICAgICAgIENvbG9yU3BhY2VOYW1lLApAQCAtOTQsOCArOTUsMTMgQEAgc3RkOjpv
cHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5QcgogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KIHZvaWQgU2NyZWVuRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0g
ICAgZW5jb2RlciA8PCBzY3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVu
RGVwdGggPDwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yIDw8IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8
PCBkaXNwbGF5TWFzayA8PCBncHVJRDsKKyAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJl
Y3QgPDwgc2NyZWVuUmVjdCA8PCBzY3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVu
dCA8PCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xv
cnMgPDwgc2NyZWVuSXNNb25vY2hyb21lOworICAgIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBl
bmNvZGVyIDw8IGRpc3BsYXlNYXNrIDw8IGdwdUlEOworI2VuZGlmCiAKKyNpZiBQTEFURk9STShD
T0NPQSkKICAgICBpZiAoY29sb3JTcGFjZSkgewogICAgICAgICAvLyBUcnkgdG8gZW5jb2RlIHRo
ZSBuYW1lLgogICAgICAgICBpZiAoYXV0byBuYW1lID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5
TmFtZShjb2xvclNwYWNlLmdldCgpKSkpIHsKQEAgLTExNSw2ICsxMjEsNyBAQCB2b2lkIFNjcmVl
bkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CisjZW5kaWYKIAogICAgIC8vIFRoZSBjb2xvciBzcGFjZSB3YXMgbnVsbCBv
ciBmYWlsZWQgdG8gYmUgZW5jb2RlZC4KICAgICBlbmNvZGVyIDw8IE51bGw7CkBAIC0xNTgsNiAr
MTY1LDcgQEAgc3RkOjpvcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZQogICAgIGlm
ICghc2NyZWVuSXNNb25vY2hyb21lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisj
aWYgUExBVEZPUk0oTUFDKQogICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGRpc3BsYXlNYXNr
OwogICAgIGRlY29kZXIgPj4gZGlzcGxheU1hc2s7CiAgICAgaWYgKCFkaXNwbGF5TWFzaykKQEAg
LTE2Nyw3ICsxNzUsOSBAQCBzdGQ6Om9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRl
CiAgICAgZGVjb2RlciA+PiBncHVJRDsKICAgICBpZiAoIWdwdUlEKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotICAgIAorI2VuZGlmCisKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBF
bmNvZGVkQ29sb3JTcGFjZURhdGFUeXBlIGRhdGFUeXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVFbnVtKGRhdGFUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTIwMSwx
MCArMjExLDI0IEBAIHN0ZDo6b3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGUKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KKyNlbmRpZgogCi0gICAgcmV0dXJuIHsgeyBXVEZN
b3ZlKCpzY3JlZW5BdmFpbGFibGVSZWN0KSwgV1RGTW92ZSgqc2NyZWVuUmVjdCksIFdURk1vdmUo
Y2dDb2xvclNwYWNlKSwgV1RGTW92ZSgqc2NyZWVuRGVwdGgpLCBXVEZNb3ZlKCpzY3JlZW5EZXB0
aFBlckNvbXBvbmVudCksIFdURk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksIFdU
Rk1vdmUoKnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKSwgV1RGTW92ZSgqc2NyZWVuSXNNb25vY2hy
b21lKSwgV1RGTW92ZSgqZGlzcGxheU1hc2spLCBXVEZNb3ZlKCpncHVJRCkgfSB9OworICAgIHJl
dHVybiB7IHsKKyAgICAgICAgV1RGTW92ZSgqc2NyZWVuQXZhaWxhYmxlUmVjdCksCisgICAgICAg
IFdURk1vdmUoKnNjcmVlblJlY3QpLAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBXVEZN
b3ZlKGNnQ29sb3JTcGFjZSksCisjZW5kaWYKKyAgICAgICAgV1RGTW92ZSgqc2NyZWVuRGVwdGgp
LAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCksCisgICAgICAgIFdU
Rk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksCisgICAgICAgIFdURk1vdmUoKnNj
cmVlbkhhc0ludmVydGVkQ29sb3JzKSwKKyAgICAgICAgV1RGTW92ZSgqc2NyZWVuSXNNb25vY2hy
b21lKSwKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIFdURk1vdmUoKmRpc3BsYXlNYXNrKSwK
KyAgICAgICAgV1RGTW92ZSgqZ3B1SUQpCisjZW5kaWYKKyAgICB9IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0JKHJldmlzaW9u
IDIzODU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBvcnQgIkludFJlY3QuaCIK
KyNpbXBvcnQgIlNjcmVlblByb3BlcnRpZXMuaCIKICNpbXBvcnQgIldBS1dpbmRvdy5oIgogI2lt
cG9ydCAiV2lkZ2V0LmgiCiAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KQEAgLTU4
LDE2ICs1OSwyOCBAQCBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KikKIAogYm9v
bCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KikKIHsKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRh
KHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSk7CisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpCisgICAg
ICAgIHJldHVybiB2LT5zY3JlZW5Jc01vbm9jaHJvbWU7CisgICAgCiAgICAgcmV0dXJuIFBBTDo6
c29mdExpbmtVSUtpdFVJQWNjZXNzaWJpbGl0eUlzR3JheXNjYWxlRW5hYmxlZCgpOwogfQogCiBi
b29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCkKIHsKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRh
KHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSk7CisgICAgaWYgKHYuaGFzX3ZhbHVlKCkpCisgICAg
ICAgIHJldHVybiB2LT5zY3JlZW5IYXNJbnZlcnRlZENvbG9yczsKKyAgICAKICAgICByZXR1cm4g
UEFMOjpzb2Z0TGlua1VJS2l0VUlBY2Nlc3NpYmlsaXR5SXNJbnZlcnRDb2xvcnNFbmFibGVkKCk7
CiB9CiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCopCiB7CisgICAg
YXV0byB2ID0gc2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2
Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yOworCiAgICAgcmV0dXJuIE1HR2V0Qm9vbEFuc3dlcihrTUdRSGFzRXh0ZW5kZWRDb2xvckRp
c3BsYXkpOwogfQogCkBAIC0xNTgsNiArMTcxLDM0IEBAIGZsb2F0IHNjcmVlblNjYWxlRmFjdG9y
KFVJU2NyZWVuICpzY3JlZW4KICAgICByZXR1cm4gc2NyZWVuLnNjYWxlOwogfQogCitTY3JlZW5Q
cm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCkKK3sKKyAgICBTY3JlZW5Qcm9wZXJ0
aWVzIHNjcmVlblByb3BlcnRpZXM7CisKKyAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQg
PSAwOworCisgICAgZm9yIChVSVNjcmVlbiAqc2NyZWVuIGluIFtQQUw6OmdldFVJU2NyZWVuQ2xh
c3MoKSBzY3JlZW5zXSkgeworICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdCA9
IHNjcmVlbi5ib3VuZHM7CisgICAgICAgIHNjcmVlbkF2YWlsYWJsZVJlY3Quc2V0WShOU01heFko
c2NyZWVuLmJvdW5kcykgLSAoc2NyZWVuQXZhaWxhYmxlUmVjdC55KCkgKyBzY3JlZW5BdmFpbGFi
bGVSZWN0LmhlaWdodCgpKSk7IC8vIGZsaXAKKyAgICAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3Qg
PSBzY3JlZW4uX3JlZmVyZW5jZUJvdW5kczsKKyAgICAgICAgCisgICAgICAgIFJldGFpblB0cjxD
R0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKG51bGxwdHIpOwor
ICAgICAgICAKKyAgICAgICAgaW50IHNjcmVlbkRlcHRoID0gV2ViQ29yZTo6c2NyZWVuRGVwdGgo
bnVsbHB0cik7CisgICAgICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA9IFdlYkNvcmU6
OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KG51bGxwdHIpOworICAgICAgICBib29sIHNjcmVlblN1
cHBvcnRzRXh0ZW5kZWRDb2xvciA9IFdlYkNvcmU6OnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xv
cihudWxscHRyKTsKKyAgICAgICAgYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyA9IFdlYkNv
cmU6OnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCk7CisgICAgICAgIGJvb2wgc2NyZWVuSXNNb25v
Y2hyb21lID0gV2ViQ29yZTo6c2NyZWVuSXNNb25vY2hyb21lKG51bGxwdHIpOworCisgICAgICAg
IHNjcmVlblByb3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoKytkaXNwbGF5SUQsIFNjcmVlbkRh
dGEgeyBzY3JlZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBjb2xvclNwYWNlLCBzY3JlZW5E
ZXB0aCwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xv
ciwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIHNjcmVlbklzTW9ub2Nocm9tZSB9KTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChzY3JlZW4gPT0gW1BBTDo6Z2V0VUlTY3JlZW5DbGFzcygpIG1haW5T
Y3JlZW5dKQorICAgICAgICAgICAgc2NyZWVuUHJvcGVydGllcy5wcmltYXJ5RGlzcGxheUlEID0g
ZGlzcGxheUlEOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllczsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3Jl
ZW5NYWMubW0JKHJldmlzaW9uIDIzODU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTYsMTcgKzk2LDYgQEAg
c3RhdGljIE5TU2NyZWVuICpzY3JlZW4oV2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIHNjcmVl
bihkaXNwbGF5SUQod2lkZ2V0KSk7CiB9CiAKLXN0YXRpYyBTY3JlZW5Qcm9wZXJ0aWVzJiBzY3Jl
ZW5Qcm9wZXJ0aWVzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2NyZWVuUHJvcGVy
dGllcz4gc2NyZWVuUHJvcGVydGllczsKLSAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllczsKLX0K
LQotUGxhdGZvcm1EaXNwbGF5SUQgcHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpCi17Ci0gICAgcmV0
dXJuIHNjcmVlblByb3BlcnRpZXMoKS5wcmltYXJ5RGlzcGxheUlEOwotfQotCiBTY3JlZW5Qcm9w
ZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCkKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vz
c1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2
ZXIpKTsKQEAgLTE0MywzOSArMTMyLDIwIEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVl
blByb3BlcnRpZXMKICAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllczsKIH0KIAotdm9pZCBzZXRT
Y3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFNjcmVlblByb3BlcnRpZXMmIHByb3BlcnRpZXMpCi17Ci0g
ICAgc2NyZWVuUHJvcGVydGllcygpID0gcHJvcGVydGllczsKLX0KLQotc3RhdGljIFNjcmVlbkRh
dGEgc2NyZWVuRGF0YShQbGF0Zm9ybURpc3BsYXlJRCBzY3JlZW5kaXNwbGF5SUQpCi17Ci0gICAg
UkVMRUFTRV9BU1NFUlQoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHko
KSk7Ci0KLSAgICAvLyBSZXR1cm4gcHJvcGVydHkgb2YgdGhlIGZpcnN0IHNjcmVlbiBpZiB0aGUg
c2NyZWVuIGlzIG5vdCBmb3VuZCBpbiB0aGUgbWFwLgotICAgIGF1dG8gZGlzcGxheUlEID0gc2Ny
ZWVuZGlzcGxheUlEID8gc2NyZWVuZGlzcGxheUlEIDogcHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgp
OwotICAgIGlmIChkaXNwbGF5SUQpIHsKLSAgICAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzRm9y
RGlzcGxheSA9IHNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmZpbmQoZGlzcGxheUlE
KTsKLSAgICAgICAgaWYgKHNjcmVlblByb3BlcnRpZXNGb3JEaXNwbGF5ICE9IHNjcmVlblByb3Bl
cnRpZXMoKS5zY3JlZW5EYXRhTWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIHNjcmVlblBy
b3BlcnRpZXNGb3JEaXNwbGF5LT52YWx1ZTsKLSAgICB9Ci0KLSAgICAvLyBMYXN0IHJlc29ydDog
dXNlIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBzY3JlZW4gbGlzdC4KLSAgICByZXR1cm4gc2NyZWVu
UHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuYmVnaW4oKS0+dmFsdWU7Ci19Ci0KIHVpbnQzMl90
IHByaW1hcnlPcGVuR0xEaXNwbGF5TWFzaygpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVz
KCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKHBy
aW1hcnlTY3JlZW5EaXNwbGF5SUQoKSkuZGlzcGxheU1hc2s7CisgICAgYXV0byB2ID0gc2NyZWVu
RGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhhc192YWx1ZSgpKQor
ICAgICAgICByZXR1cm4gdi0+ZGlzcGxheU1hc2s7CiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CiAK
IHVpbnQzMl90IGRpc3BsYXlNYXNrRm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5
SUQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKGRpc3BsYXlJRCkuZGlzcGxheU1hc2s7Cisg
ICAgYXV0byB2ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpOworICAgIGlmICh2Lmhhc192YWx1ZSgp
KQorICAgICAgICByZXR1cm4gdi0+ZGlzcGxheU1hc2s7CiAgICAgCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CkBAIC0xODQsMTQgKzE1NCwxNSBAQCB1aW50MzJfdCBk
aXNwbGF5TWFza0ZvckRpc3BsYXkoUGxhdGZvcm1ECiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDAKIElPUmVnaXN0cnlHUFVJRCBwcmltYXJ5R1BVSUQoKQogewot
ICAgIHJldHVybiBncHVJREZvckRpc3BsYXkoc2NyZWVuUHJvcGVydGllcygpLnByaW1hcnlEaXNw
bGF5SUQpOworICAgIHJldHVybiBncHVJREZvckRpc3BsYXkocHJpbWFyeVNjcmVlbkRpc3BsYXlJ
RCgpKTsKIH0KIAogSU9SZWdpc3RyeUdQVUlEIGdwdUlERm9yRGlzcGxheShQbGF0Zm9ybURpc3Bs
YXlJRCBkaXNwbGF5SUQpCiB7CiAjaWYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JM
T0NLSU5HKQotICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gc2NyZWVuRGF0YShkaXNwbGF5SUQpLmdwdUlEOworICAgIGF1
dG8gdiA9IHNjcmVlbkRhdGEoZGlzcGxheUlEKTsKKyAgICBpZiAodi5oYXNfdmFsdWUoKSkKKyAg
ICAgICAgcmV0dXJuIHYtPmdwdUlEOwogI2Vsc2UKICAgICByZXR1cm4gZ3B1SURGb3JEaXNwbGF5
TWFzayhDR0Rpc3BsYXlJRFRvT3BlbkdMRGlzcGxheU1hc2soZGlzcGxheUlEKSk7CiAjZW5kaWYK
QEAgLTIzNCwxNSArMjA1LDE2IEBAIElPUmVnaXN0cnlHUFVJRCBncHVJREZvckRpc3BsYXlNYXNr
KEdMdWkKIH0KICNlbmRpZiAvLyAhX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDEzMDAKIAotc3RhdGljIFNjcmVlbkRhdGEgZ2V0U2NyZWVuUHJvcGVydGllcyhXaWRnZXQqIHdp
ZGdldCkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGNvbnN0IFNjcmVlbkRhdGEmPiBnZXRTY3JlZW5Q
cm9wZXJ0aWVzKFdpZGdldCogd2lkZ2V0KQogewogICAgIHJldHVybiBzY3JlZW5EYXRhKGRpc3Bs
YXlJRCh3aWRnZXQpKTsKIH0KIAogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRn
ZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuSXNN
b25vY2hyb21lOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAg
ICBpZiAodi5oYXNfdmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPnNjcmVlbklzTW9ub2Nocm9t
ZTsKIAogICAgIC8vIFRoaXMgaXMgYSBzeXN0ZW0td2lkZSBhY2Nlc3NpYmlsaXR5IHNldHRpbmcs
IHNhbWUgb24gYWxsIHNjcmVlbnMuCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJv
Y2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7CkBAIC0yNTEs
OCArMjIzLDkgQEAgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRnZXQpCiAKIGJv
b2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKQogewotICAgIGlmICghc2NyZWVuUHJvcGVydGll
cygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc2NyZWVuRGF0YShw
cmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpLnNjcmVlbkhhc0ludmVydGVkQ29sb3JzOworICAgIGF1
dG8gdiA9IHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKTsKKyAgICBpZiAodi5o
YXNfdmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPnNjcmVlbkhhc0ludmVydGVkQ29sb3JzOwog
CiAgICAgLy8gVGhpcyBpcyBhIHN5c3RlbS13aWRlIGFjY2Vzc2liaWxpdHkgc2V0dGluZywgc2Ft
ZSBvbiBhbGwgc2NyZWVucy4KICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNz
UHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKQEAgLTI2MSw4ICsy
MzQsOSBAQCBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCkKIAogaW50IHNjcmVlbkRlcHRo
KFdpZGdldCogd2lkZ2V0KQogewotICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRh
dGFNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8gc2NyZWVuRGVwdGggPSBnZXRTY3JlZW5Q
cm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuRGVwdGg7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJv
cGVydGllcyh3aWRnZXQpOworICAgIGlmICh2Lmhhc192YWx1ZSgpKSB7CisgICAgICAgIGF1dG8g
c2NyZWVuRGVwdGggPSB2LT5zY3JlZW5EZXB0aDsKICAgICAgICAgQVNTRVJUKHNjcmVlbkRlcHRo
KTsKICAgICAgICAgcmV0dXJuIHNjcmVlbkRlcHRoOwogICAgIH0KQEAgLTI3Myw4ICsyNDcsOSBA
QCBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCiAKIGludCBzY3JlZW5EZXB0aFBlckNv
bXBvbmVudChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5z
Y3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGRlcHRoUGVyQ29tcG9uZW50
ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50Owor
ICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNf
dmFsdWUoKSkgeworICAgICAgICBhdXRvIGRlcHRoUGVyQ29tcG9uZW50ID0gdi0+c2NyZWVuRGVw
dGhQZXJDb21wb25lbnQ7CiAgICAgICAgIEFTU0VSVChkZXB0aFBlckNvbXBvbmVudCk7CiAgICAg
ICAgIHJldHVybiBkZXB0aFBlckNvbXBvbmVudDsKICAgICB9CkBAIC0yODUsOCArMjYwLDkgQEAg
aW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCogd2lkZwogCiBGbG9hdFJlY3Qgc2Ny
ZWVuUmVjdEZvckRpc3BsYXkoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewotICAgIGlm
ICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGF1dG8gc2NyZWVuUmVjdCA9IHNjcmVlbkRhdGEoZGlzcGxheUlEKS5zY3JlZW5SZWN0OworICAg
IGF1dG8gdiA9IHNjcmVlbkRhdGEoZGlzcGxheUlEKTsKKyAgICBpZiAodi5oYXNfdmFsdWUoKSkg
eworICAgICAgICBhdXRvIHNjcmVlblJlY3QgPSB2LT5zY3JlZW5SZWN0OwogICAgICAgICBBU1NF
UlQoIXNjcmVlblJlY3QuaXNFbXB0eSgpKTsKICAgICAgICAgcmV0dXJuIHNjcmVlblJlY3Q7CiAg
ICAgfQpAQCAtMzAyLDggKzI3OCw5IEBAIEZsb2F0UmVjdCBzY3JlZW5SZWN0Rm9yUHJpbWFyeVNj
cmVlbigpCiAKIEZsb2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCogd2lkZ2V0KQogewotICAgIGlm
ICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlblJlY3Q7CisgICAgYXV0byB2
ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOworICAgIGlmICh2Lmhhc192YWx1ZSgpKQor
ICAgICAgICByZXR1cm4gdi0+c2NyZWVuUmVjdDsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikp
OwogICAgIHJldHVybiB0b1VzZXJTcGFjZShbc2NyZWVuKHdpZGdldCkgZnJhbWVdLCB3aW5kb3co
d2lkZ2V0KSk7CkBAIC0zMTEsOCArMjg4LDkgQEAgRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0
KiB3aWRnZXQpCiAKIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lkZ2V0
KQogewotICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlbkF2YWls
YWJsZVJlY3Q7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOworICAg
IGlmICh2Lmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuQXZhaWxhYmxlUmVj
dDsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNh
bkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwogICAgIHJldHVybiB0b1VzZXJTcGFjZShb
c2NyZWVuKHdpZGdldCkgdmlzaWJsZUZyYW1lXSwgd2luZG93KHdpZGdldCkpOwpAQCAtMzM2LDgg
KzMxNCw5IEBAIE5TU2NyZWVuICpzY3JlZW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGwKIAogQ0dD
b2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgaWYg
KCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuY29sb3JTcGFjZS5nZXQoKTsKKyAgICBh
dXRvIHYgPSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCk7CisgICAgaWYgKHYuaGFzX3ZhbHVl
KCkpCisgICAgICAgIHJldHVybiB2LT5jb2xvclNwYWNlLmdldCgpOwogCiAgICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2lu
ZG93U2VydmVyKSk7CiAgICAgcmV0dXJuIHNjcmVlbih3aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xv
clNwYWNlOwpAQCAtMzQ1LDggKzMyNCw5IEBAIENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNw
YWNlKFdpZGdldCoKIAogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KiB3
aWRnZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVu
U3VwcG9ydHNFeHRlbmRlZENvbG9yOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMo
d2lkZ2V0KTsKKyAgICBpZiAodi5oYXNfdmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPnNjcmVl
blN1cHBvcnRzRXh0ZW5kZWRDb2xvcjsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwogICAg
IHJldHVybiBbc2NyZWVuKHdpZGdldCkgY2FuUmVwcmVzZW50RGlzcGxheUdhbXV0Ok5TRGlzcGxh
eUdhbXV0UDNdOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzODU1OSkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMTEtMjcg
IFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFk
b3B0IFNjcmVlblByb3BlcnRpZXMgY2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNYWtlIHJlbGV2ZW50IG1hY09TIHBsYXRmb3JtIGNvZGUgY3Jv
c3MgcGxhdGZvcm0uCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldFNjcmVlblByb3BlcnRpZXMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKwogMjAxOC0xMS0yNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWJLaXQuQWRkQW5kUmVtb3ZlRGF0YURldGVjdG9ycyBoaXRz
IGEgZGVidWcgYXNzZXJ0aW9uIGFmdGVyIHIyMzg1MTUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lv
biAyMzg1NTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDggKzE1OCw5IEBAIHZvaWQgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8IG1lZGlhTUlNRVR5
cGVzOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgZW5jb2RlciA8PCBzY3JlZW5Q
cm9wZXJ0aWVzOworCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgdXNlT3Zlcmxh
eVNjcm9sbGJhcnM7CiAjZW5kaWYKIH0KQEAgLTQxOCwxMiArNDE5LDEzIEBAIGJvb2wgV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3Jl
ZW5Qcm9wZXJ0aWVzPiBzY3JlZW5Qcm9wZXJ0aWVzOwogICAgIGRlY29kZXIgPj4gc2NyZWVuUHJv
cGVydGllczsKICAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBwYXJhbWV0ZXJzLnNjcmVlblByb3BlcnRpZXMgPSBXVEZNb3ZlKCpzY3JlZW5Qcm9w
ZXJ0aWVzKTsKKworI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMudXNlT3ZlcmxheVNjcm9sbGJhcnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDIzODU1OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksOCBAQAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJUZXh0
Q2hlY2tlclN0YXRlLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtU2NyZWVuLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgpAQCAtNDEsMTEgKzQzLDYgQEAKICNpbmNsdWRlIDx3
dGYvTWFjaFNlbmRSaWdodC5oPgogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJv
cGVydGllcy5oPgotI2VuZGlmCi0KICNpZiBVU0UoU09VUCkKICNpbmNsdWRlICJIVFRQQ29va2ll
QWNjZXB0UG9saWN5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VwTmV0d29ya1Byb3h5U2V0dGlu
Z3MuaD4KQEAgLTE5Nyw4ICsxOTQsOSBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyB7CiAgICAgYm9vbCBzaG91bGRMb2dVc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9OwogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyBz
Y3JlZW5Qcm9wZXJ0aWVzOworCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgdXNlT3Zlcmxh
eVNjcm9sbGJhcnMgeyB0cnVlIH07CiAjZW5kaWYKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9u
IDIzODU1OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1NSwxMCArMjU1LDEwIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZExvZ1VzZXJJbnRlcmFjdGlvbiA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdExvZ0Nvb2tp
ZUluZm9ybWF0aW9uRGVmYXVsdHNLZXldOwogI2VuZGlmCi0gICAgCi0jaWYgUExBVEZPUk0oTUFD
KQorCiAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzID0gV2ViQ29yZTo6Y29sbGVjdFNjcmVlblBy
b3BlcnRpZXMoKTsKICAgICBwYXJhbWV0ZXJzLnNjcmVlblByb3BlcnRpZXMgPSBXVEZNb3ZlKHNj
cmVlblByb3BlcnRpZXMpOworI2lmIFBMQVRGT1JNKE1BQykKICAgICBwYXJhbWV0ZXJzLnVzZU92
ZXJsYXlTY3JvbGxiYXJzID0gKFtOU1Njcm9sbGVyIHByZWZlcnJlZFNjcm9sbGVyU3R5bGVdID09
IE5TU2Nyb2xsZXJTdHlsZU92ZXJsYXkpOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyMzg1NTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MTksMTIg
KzE3MTksMTAgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbAogCiAj
ZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUHJvY2Vzczo6c2V0U2NyZWVuUHJv
cGVydGllcyhjb25zdCBXZWJDb3JlOjpTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewog
ICAgIFdlYkNvcmU6OnNldFNjcmVlblByb3BlcnRpZXMocHJvcGVydGllcyk7CiB9Ci0jZW5kaWYK
IAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiB2b2lkIFdlYlByb2Nlc3M6OmFkZE1vY2tNZWRp
YURldmljZShjb25zdCBXZWJDb3JlOjpNb2NrTWVkaWFEZXZpY2UmIGRldmljZSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjM4NTU5KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
OSArMzQsNyBAQAogI2luY2x1ZGUgIlZpZXdVcGRhdGVEaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0
aXZpdHlTdGF0ZS5oPgotI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmVl
blByb3BlcnRpZXMuaD4KLSNlbmRpZgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNs
dWRlIDxwYWwvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgpAQCAtMzg3LDkgKzM4NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJv
Y2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlU3luY1dlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CiAKKyAgICB2b2lkIHNldFNj
cmVlblByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyYpOwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICB2b2lkIHVwZGF0ZVByb2Nlc3NOYW1lKCk7Ci0gICAgdm9pZCBzZXRT
Y3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlNjcmVlblByb3BlcnRpZXMmKTsKICNpZiBF
TkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiAgICAgdm9pZCBzY3JvbGxl
clN0eWxlUHJlZmVyZW5jZUNoYW5nZWQoYm9vbCB1c2VPdmVybGF5U2Nyb2xsYmFycyk7CiAgICAg
dm9pZCBkaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWQoQ0dEaXJlY3REaXNwbGF5SUQsIENHRGlz
cGxheUNoYW5nZVN1bW1hcnlGbGFncyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM4NTU5KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTEzMiwxNCArMTMyLDEyIEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFVwZGF0ZUFjdGl2ZVBhZ2VzKCkKICAgICBHZXRBY3RpdmVQYWdlc09yaWdpbnNG
b3JUZXN0aW5nKCkgLT4gKFZlY3RvcjxTdHJpbmc+IGFjdGl2ZU9yaWdpbnMpIExlZ2FjeVN5bmMK
IAotI2lmIFBMQVRGT1JNKE1BQykKICAgICBTZXRTY3JlZW5Qcm9wZXJ0aWVzKHN0cnVjdCBXZWJD
b3JlOjpTY3JlZW5Qcm9wZXJ0aWVzIHNjcmVlblByb3BlcnRpZXMpCi0jaWYgRU5BQkxFKFdFQlBS
T0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxF
KFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQogICAgIFNjcm9sbGVyU3R5bGVQcmVm
ZXJlbmNlQ2hhbmdlZChib29sIHVzZU92ZWxheVNjcm9sbGJhcnMpCiAgICAgRGlzcGxheUNvbmZp
Z3VyYXRpb25DaGFuZ2VkKENHRGlyZWN0RGlzcGxheUlEIGRpc3BsYXlJRCwgQ0dEaXNwbGF5Q2hh
bmdlU3VtbWFyeUZsYWdzIGZsYWdzKQogICAgIERpc3BsYXlXYXNSZWZyZXNoZWQodWludDMyX3Qg
ZGlzcGxheUlEKQogI2VuZGlmCi0jZW5kaWYKIAogICAgIElzSklURW5hYmxlZCgpIC0+IChib29s
IGVuYWJsZWQpIEFzeW5jCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394554</attachid>
            <date>2020-03-25 15:50:22 -0700</date>
            <delta_ts>2020-03-25 16:12:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191767-20200325155021.patch</filename>
            <type>text/plain</type>
            <size>32085</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODk5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTAzLTI1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBZG9wdCBTY3Jl
ZW5Qcm9wZXJ0aWVzIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT24gbWFjT1MsIHRoZSBTY3JlZW5Qcm9wZXJ0aWVzIGNsYXNzIGlzIHVzZWQg
dG8gY29sbGVjdCBzY3JlZW4gcHJvcGVydGllcyBpbiB0aGUgVUkgcHJvY2VzcworICAgICAgICBh
bmQgZm9yd2FyZCB0aGVzZSB0byB0aGUgV2ViIHByb2Nlc3MuIFdlIHNob3VsZCBhbHNvIGRvIHRo
aXMgb24gaU9TLCBpbiBvcmRlciB0byBiZSBhYmxlCisgICAgICAgIHRvIGJsb2NrIGZyb250Ym9h
cmQgc2VydmljZXMuCisgCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtU2NyZWVuLmg6CisgICAgICAgICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmVlbkRhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRm
b3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuSXNNb25vY2hyb21lKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKToKKyAgICAgICAgKFdl
YkNvcmU6OnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpj
b2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6cHJpbWFyeU9wZW5HTERpc3BsYXlNYXNr
KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BsYXlNYXNrRm9yRGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpwcmltYXJ5R1BVSUQpOgorICAgICAgICAoV2ViQ29yZTo6Z3B1SURGb3JEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZSk6CisgICAgICAgIChXZWJD
b3JlOjpzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5E
ZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0Rm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuUHJvcGVy
dGllcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwcmltYXJ5U2NyZWVuRGlzcGxheUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldFNjcmVlblByb3BlcnRpZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpnZXRTY3JlZW5Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKwogMjAyMC0wMy0yNSAgeW91
ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIGFmdGVy
IGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNTg5Nzcvd2Via2l0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyNTg5OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEzNTgxLDYgKzEzNTgxLDcgQEAKIAkJQzEw
NURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxMUE5RUNEMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hp
bmdHUFVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3dpdGNoaW5nR1BVQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxMUE5RUQyMjE0MDU3OEIwMENGQjIwQSAvKiBTd2l0
Y2hpbmdHUFVDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3dpdGNoaW5nR1BVQ2xpZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzEzNzg0NkIyNDJCRUVCQTAwRTg2
RkE4IC8qIFBsYXRmb3JtU2NyZWVuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBsYXRmb3JtU2NyZWVuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzE0OTM4MDUyMjM0MjcxOTAwMENENzA3IC8qIFNwZWVjaFN5bnRoZXNpc0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTcGVlY2hTeW50aGVzaXNDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzE2OTJERDEyM0QyM0FCRDAwNkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTeXN0ZW1CYXR0ZXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMTY5MkRENDIzRDIzQUUwMDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTeXN0ZW1CYXR0ZXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNjE4Nyw2ICsyNjE4OCw3IEBACiAJCQkJOTM1QzQ3NjYwOUFDNEQ0MzAwQTZBQUI0IC8q
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oICovLAogCQkJCTkzNUM0NzY3MDlBQzRENDMwMEE2QUFC
NCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCAqLywKIAkJCQlDNUJBQzE2RjE0RTMwRTQ3MDAwMDg4
MzcgLyogUGxhdGZvcm1QYXN0ZWJvYXJkLmggKi8sCisJCQkJQzEzNzg0NkIyNDJCRUVCQTAwRTg2
RkE4IC8qIFBsYXRmb3JtU2NyZWVuLmNwcCAqLywKIAkJCQlCQ0VDMDFENjBDMjc0RUI0MDA5RjRF
QzkgLyogUGxhdGZvcm1TY3JlZW4uaCAqLywKIAkJCQkyNTI3Q0M5NTE2QkY5NUREMDA5RERBQzAg
LyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuY3BwICovLAogCQkJCTI1MjdDQzkx
MTZCRjhCQTEwMDlEREFDMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oICov
LApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgorCisjaW5jbHVkZSAiU2NyZWVu
UHJvcGVydGllcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTY3JlZW5Qcm9w
ZXJ0aWVzJiBzY3JlZW5Qcm9wZXJ0aWVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U2NyZWVuUHJvcGVydGllcz4gc2NyZWVuUHJvcGVydGllczsKKyAgICByZXR1cm4gc2NyZWVuUHJv
cGVydGllczsKK30KKworUGxhdGZvcm1EaXNwbGF5SUQgcHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgp
Cit7CisgICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXMoKS5wcmltYXJ5RGlzcGxheUlEOworfQor
Cit2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgU2NyZWVuUHJvcGVydGllcyYgcHJvcGVy
dGllcykKK3sKKyAgICBzY3JlZW5Qcm9wZXJ0aWVzKCkgPSBwcm9wZXJ0aWVzOworfQorCitPcHRp
b25hbDxjb25zdCBTY3JlZW5EYXRhJj4gc2NyZWVuRGF0YShQbGF0Zm9ybURpc3BsYXlJRCBzY3Jl
ZW5kaXNwbGF5SUQpCit7CisgICAgaWYgKHNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFw
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIC8vIFJldHVy
biBwcm9wZXJ0eSBvZiB0aGUgZmlyc3Qgc2NyZWVuIGlmIHRoZSBzY3JlZW4gaXMgbm90IGZvdW5k
IGluIHRoZSBtYXAuCisgICAgYXV0byBkaXNwbGF5SUQgPSBzY3JlZW5kaXNwbGF5SUQgPyBzY3Jl
ZW5kaXNwbGF5SUQgOiBwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCk7CisgICAgaWYgKGRpc3BsYXlJ
RCkgeworICAgICAgICBhdXRvIHNjcmVlblByb3BlcnRpZXNGb3JEaXNwbGF5ID0gc2NyZWVuUHJv
cGVydGllcygpLnNjcmVlbkRhdGFNYXAuZmluZChkaXNwbGF5SUQpOworICAgICAgICBpZiAoc2Ny
ZWVuUHJvcGVydGllc0ZvckRpc3BsYXkgIT0gc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFN
YXAuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllc0ZvckRpc3BsYXkt
PnZhbHVlOworICAgIH0KKworICAgIC8vIExhc3QgcmVzb3J0OiB1c2UgdGhlIGZpcnN0IGl0ZW0g
aW4gdGhlIHNjcmVlbiBsaXN0LgorICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVu
RGF0YU1hcC5iZWdpbigpLT52YWx1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCShyZXZpc2lvbiAyNTg5
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisKICNpZiBVU0UoR0xJQikKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4K
ICNlbmRpZgpAQCAtODUsOSArODcsMTUgQEAgY29uc3RleHByIGJvb2wgc2NyZWVuU3VwcG9ydHNI
aWdoRHluYW1pYwogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3Bh
Y2UoV2lkZ2V0KiA9IG51bGxwdHIpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiBzdHJ1
Y3QgU2NyZWVuUHJvcGVydGllczsKLQorc3RydWN0IFNjcmVlbkRhdGE7CisgICAgCitXRUJDT1JF
X0VYUE9SVCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCk7CitXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgU2NyZWVuUHJvcGVydGll
cyYpOworT3B0aW9uYWw8Y29uc3QgU2NyZWVuRGF0YSY+IHNjcmVlbkRhdGEoUGxhdGZvcm1EaXNw
bGF5SUQgc2NyZWVuZGlzcGxheUlEKTsKK1dFQkNPUkVfRVhQT1JUIFBsYXRmb3JtRGlzcGxheUlE
IHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKTsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCiBXRUJD
T1JFX0VYUE9SVCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoTlNTY3JlZW4gKik7CiAKIFdF
QkNPUkVfRVhQT1JUIE5TU2NyZWVuICpzY3JlZW4oTlNXaW5kb3cgKik7CkBAIC0xMDIsMTMgKzEx
MCw4IEBAIFdFQkNPUkVfRVhQT1JUIE5TUmVjdCB0b0RldmljZVNwYWNlKGNvbnMKIAogTlNQb2lu
dCBmbGlwU2NyZWVuUG9pbnQoY29uc3QgTlNQb2ludCYsIE5TU2NyZWVuICopOwogCi1XRUJDT1JF
X0VYUE9SVCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCk7Ci1XRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgU2NyZWVuUHJvcGVydGll
cyYpOwotCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3VsZE92ZXJyaWRlU2NyZWVuU3VwcG9y
dHNIaWdoRHluYW1pY1JhbmdlKGJvb2wgc2hvdWxkT3ZlcnJpZGUsIGJvb2wgc3VwcG9ydHNIaWdo
RHluYW1pY1JhbmdlKTsKIAotV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1EaXNwbGF5SUQgcHJpbWFy
eVNjcmVlbkRpc3BsYXlJRCgpOwotCiB1aW50MzJfdCBwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2so
KTsKIHVpbnQzMl90IGRpc3BsYXlNYXNrRm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHJldmlz
aW9uIDI1ODk5MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lm
IFBMQVRGT1JNKE1BQykKLQogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU2NyZWVuLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNDYsOSArNDQsMTAg
QEAgc3RydWN0IFNjcmVlbkRhdGEgewogICAgIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMg
eyBmYWxzZSB9OwogICAgIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lIHsgZmFsc2UgfTsKICAgICBi
b29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSB7IGZhbHNlIH07CisjaWYgUExBVEZP
Uk0oTUFDKQogICAgIHVpbnQzMl90IGRpc3BsYXlNYXNrIHsgMCB9OwogICAgIElPUmVnaXN0cnlH
UFVJRCBncHVJRCB7IDAgfTsKLQorI2VuZGlmCiAgICAgZW51bSBFbmNvZGVkQ29sb3JTcGFjZURh
dGFUeXBlIHsKICAgICAgICAgTnVsbCwKICAgICAgICAgQ29sb3JTcGFjZU5hbWUsCkBAIC05NSw3
ICs5NCwxMSBAQCBPcHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0CiB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTY3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2Ny
ZWVuUmVjdCA8PCBzY3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBzY3Jl
ZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2Ny
ZWVuSXNNb25vY2hyb21lIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSA8PCBkaXNw
bGF5TWFzayA8PCBncHVJRDsKKyAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwg
c2NyZWVuUmVjdCA8PCBzY3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBz
Y3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwg
c2NyZWVuSXNNb25vY2hyb21lIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBlbmNvZGVyIDw8IGRpc3BsYXlNYXNrIDw8IGdwdUlEOwor
I2VuZGlmCiAKICAgICBpZiAoY29sb3JTcGFjZSkgewogICAgICAgICAvLyBUcnkgdG8gZW5jb2Rl
IHRoZSBuYW1lLgpAQCAtMTY0LDYgKzE2Nyw3IEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVl
bkRhdGE6OmRlY29kZSgKICAgICBpZiAoIXNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAorI2lmIFBMQVRGT1JNKE1BQykKICAgICBP
cHRpb25hbDx1aW50MzJfdD4gZGlzcGxheU1hc2s7CiAgICAgZGVjb2RlciA+PiBkaXNwbGF5TWFz
azsKICAgICBpZiAoIWRpc3BsYXlNYXNrKQpAQCAtMTczLDcgKzE3Nyw4IEBAIE9wdGlvbmFsPFNj
cmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZSgKICAgICBkZWNvZGVyID4+IGdwdUlEOwogICAg
IGlmICghZ3B1SUQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCisjZW5kaWYK
KwogICAgIEVuY29kZWRDb2xvclNwYWNlRGF0YVR5cGUgZGF0YVR5cGU7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUVudW0oZGF0YVR5cGUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpA
QCAtMjA1LDkgKzIxMCwyMSBAQCBPcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNv
ZGUoCiAgICAgfQogICAgIH0KIAotICAgIHJldHVybiB7IHsgV1RGTW92ZSgqc2NyZWVuQXZhaWxh
YmxlUmVjdCksIFdURk1vdmUoKnNjcmVlblJlY3QpLCBXVEZNb3ZlKGNnQ29sb3JTcGFjZSksIFdU
Rk1vdmUoKnNjcmVlbkRlcHRoKSwgV1RGTW92ZSgqc2NyZWVuRGVwdGhQZXJDb21wb25lbnQpLCBX
VEZNb3ZlKCpzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IpLCBXVEZNb3ZlKCpzY3JlZW5IYXNJ
bnZlcnRlZENvbG9ycyksIFdURk1vdmUoKnNjcmVlbklzTW9ub2Nocm9tZSksIFdURk1vdmUoKnNj
cmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSksIFdURk1vdmUoKmRpc3BsYXlNYXNrKSwgV1RG
TW92ZSgqZ3B1SUQpIH0gfTsKKyAgICByZXR1cm4geyB7CisgICAgICAgIFdURk1vdmUoKnNjcmVl
bkF2YWlsYWJsZVJlY3QpLAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5SZWN0KSwKKyAgICAgICAg
V1RGTW92ZShjZ0NvbG9yU3BhY2UpLAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aCksCisg
ICAgICAgIFdURk1vdmUoKnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KSwKKyAgICAgICAgV1RGTW92
ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKSwKKyAgICAgICAgV1RGTW92ZSgqc2NyZWVu
SGFzSW52ZXJ0ZWRDb2xvcnMpLAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5Jc01vbm9jaHJvbWUp
LAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpLAorI2lm
IFBMQVRGT1JNKE1BQykKKyAgICAgICAgV1RGTW92ZSgqZGlzcGxheU1hc2spLAorICAgICAgICBX
VEZNb3ZlKCpncHVJRCkKKyNlbmRpZgorICAgIH0gfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQkocmV2aXNpb24gMjU4OTkzKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5o
IgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgogI2ltcG9ydCAiSW50UmVjdC5oIgorI2ltcG9ydCAi
U2NyZWVuUHJvcGVydGllcy5oIgogI2ltcG9ydCAiV0FLV2luZG93LmgiCiAjaW1wb3J0ICJXaWRn
ZXQuaCIKICNpbXBvcnQgPHBhbC9jb2NvYS9NZWRpYVRvb2xib3hTb2Z0TGluay5oPgpAQCAtNTks
MTYgKzYwLDI4IEBAIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqKQogCiBib29s
IHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqKQogeworICAgIGF1dG8gdiA9IHNjcmVlbkRhdGEo
cHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAg
ICByZXR1cm4gdi0+c2NyZWVuSXNNb25vY2hyb21lOworICAgIAogICAgIHJldHVybiBQQUw6OnNv
ZnRMaW5rVUlLaXRVSUFjY2Vzc2liaWxpdHlJc0dyYXlzY2FsZUVuYWJsZWQoKTsKIH0KIAogYm9v
bCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiB7CisgICAgYXV0byB2ID0gc2NyZWVuRGF0YShw
cmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpCisgICAgICAg
IHJldHVybiB2LT5zY3JlZW5IYXNJbnZlcnRlZENvbG9yczsKKyAgICAKICAgICByZXR1cm4gUEFM
Ojpzb2Z0TGlua1VJS2l0VUlBY2Nlc3NpYmlsaXR5SXNJbnZlcnRDb2xvcnNFbmFibGVkKCk7CiB9
CiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCopCiB7CisgICAgYXV0
byB2ID0gc2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhh
c1ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3I7
CisKICAgICByZXR1cm4gTUdHZXRCb29sQW5zd2VyKGtNR1FIYXNFeHRlbmRlZENvbG9yRGlzcGxh
eSk7CiB9CiAKQEAgLTE0MSw2ICsxNTQsMTEgQEAgRmxvYXRTaXplIHNjcmVlblNpemUoKQogewog
ICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmIFtbUEFMOjpnZXRVSUFwcGxpY2F0
aW9uQ2xhc3MoKSBzaGFyZWRBcHBsaWNhdGlvbl0gX2lzQ2xhc3NpY10pCiAgICAgICAgIHJldHVy
biB7IDMyMCwgNDgwIH07CisKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRhKHByaW1hcnlTY3JlZW5E
aXNwbGF5SUQoKSk7CisgICAgaWYgKHYuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPnNj
cmVlblJlY3Quc2l6ZSgpOworCiAgICAgcmV0dXJuIEZsb2F0U2l6ZShbW1BBTDo6Z2V0VUlTY3Jl
ZW5DbGFzcygpIG1haW5TY3JlZW5dIF9yZWZlcmVuY2VCb3VuZHNdLnNpemUpOwogfQogCkBAIC0x
NDgsNiArMTY2LDExIEBAIEZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkKIHsKICAgICBp
ZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiBbW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNs
YXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIF9pc0NsYXNzaWNdKQogICAgICAgICByZXR1cm4geyAz
MjAsIDQ4MCB9OworCisgICAgYXV0byB2ID0gc2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxh
eUlEKCkpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5B
dmFpbGFibGVSZWN0LnNpemUoKTsKKwogICAgIHJldHVybiBGbG9hdFNpemUoW1BBTDo6Z2V0VUlT
Y3JlZW5DbGFzcygpIG1haW5TY3JlZW5dLmJvdW5kcy5zaXplKTsKIH0KIApAQCAtMTY4LDYgKzE5
MSwzNCBAQCBmbG9hdCBzY3JlZW5TY2FsZUZhY3RvcihVSVNjcmVlbiAqc2NyZWVuCiAgICAgcmV0
dXJuIHNjcmVlbi5zY2FsZTsKIH0KIAorU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJv
cGVydGllcygpCit7CisgICAgU2NyZWVuUHJvcGVydGllcyBzY3JlZW5Qcm9wZXJ0aWVzOworCisg
ICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEID0gMDsKKworICAgIGZvciAoVUlTY3JlZW4g
KnNjcmVlbiBpbiBbUEFMOjpnZXRVSVNjcmVlbkNsYXNzKCkgc2NyZWVuc10pIHsKKyAgICAgICAg
RmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4uYm91bmRzOworICAgICAgICBz
Y3JlZW5BdmFpbGFibGVSZWN0LnNldFkoTlNNYXhZKHNjcmVlbi5ib3VuZHMpIC0gKHNjcmVlbkF2
YWlsYWJsZVJlY3QueSgpICsgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkpOyAvLyBmbGlw
CisgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0ID0gc2NyZWVuLl9yZWZlcmVuY2VCb3VuZHM7
CisgICAgICAgIAorICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNl
ID0gc2NyZWVuQ29sb3JTcGFjZShudWxscHRyKTsKKyAgICAgICAgCisgICAgICAgIGludCBzY3Jl
ZW5EZXB0aCA9IFdlYkNvcmU6OnNjcmVlbkRlcHRoKG51bGxwdHIpOworICAgICAgICBpbnQgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQgPSBXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudChu
dWxscHRyKTsKKyAgICAgICAgYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSBXZWJD
b3JlOjpzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IobnVsbHB0cik7CisgICAgICAgIGJvb2wg
c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPSBXZWJDb3JlOjpzY3JlZW5IYXNJbnZlcnRlZENvbG9y
cygpOworICAgICAgICBib29sIHNjcmVlbklzTW9ub2Nocm9tZSA9IFdlYkNvcmU6OnNjcmVlbklz
TW9ub2Nocm9tZShudWxscHRyKTsKKworICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRh
dGFNYXAuc2V0KCsrZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwg
c2NyZWVuUmVjdCwgY29sb3JTcGFjZSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9u
ZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3Jz
LCBzY3JlZW5Jc01vbm9jaHJvbWUgfSk7CisgICAgICAgIAorICAgICAgICBpZiAoc2NyZWVuID09
IFtQQUw6OmdldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXSkKKyAgICAgICAgICAgIHNjcmVl
blByb3BlcnRpZXMucHJpbWFyeURpc3BsYXlJRCA9IGRpc3BsYXlJRDsKKyAgICB9CisgICAgCisg
ICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCShyZXZpc2lvbiAyNTg5OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEwMCwxNyArMTAwLDYgQEAgc3RhdGljIE5TU2NyZWVuICpzY3JlZW4o
V2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIHNjcmVlbihkaXNwbGF5SUQod2lkZ2V0KSk7CiB9
CiAKLXN0YXRpYyBTY3JlZW5Qcm9wZXJ0aWVzJiBzY3JlZW5Qcm9wZXJ0aWVzKCkKLXsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2NyZWVuUHJvcGVydGllcz4gc2NyZWVuUHJvcGVydGllczsK
LSAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllczsKLX0KLQotUGxhdGZvcm1EaXNwbGF5SUQgcHJp
bWFyeVNjcmVlbkRpc3BsYXlJRCgpCi17Ci0gICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXMoKS5w
cmltYXJ5RGlzcGxheUlEOwotfQotCiBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9w
ZXJ0aWVzKCkKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKQEAgLTE1MSw2MCArMTQwLDQy
IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICByZXR1cm4g
c2NyZWVuUHJvcGVydGllczsKIH0KIAotdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFNj
cmVlblByb3BlcnRpZXMmIHByb3BlcnRpZXMpCi17Ci0gICAgc2NyZWVuUHJvcGVydGllcygpID0g
cHJvcGVydGllczsKLX0KLQogdm9pZCBzZXRTaG91bGRPdmVycmlkZVNjcmVlblN1cHBvcnRzSGln
aER5bmFtaWNSYW5nZShib29sIHNob3VsZE92ZXJyaWRlLCBib29sIHN1cHBvcnRzSGlnaER5bmFt
aWNSYW5nZSkKIHsKICAgICBpZiAoUEFMOjppc01lZGlhVG9vbGJveEZyYW1ld29ya0F2YWlsYWJs
ZSgpICYmIFBBTDo6Y2FuTG9hZF9NZWRpYVRvb2xib3hfTVRPdmVycmlkZVNob3VsZFBsYXlIRFJW
aWRlbygpKQogICAgICAgICBQQUw6OnNvZnRMaW5rX01lZGlhVG9vbGJveF9NVE92ZXJyaWRlU2hv
dWxkUGxheUhEUlZpZGVvKHNob3VsZE92ZXJyaWRlLCBzdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2Up
OwogfQogCi1zdGF0aWMgU2NyZWVuRGF0YSBzY3JlZW5EYXRhKFBsYXRmb3JtRGlzcGxheUlEIHNj
cmVlbmRpc3BsYXlJRCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVCghc2NyZWVuUHJvcGVydGllcygp
LnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKTsKLQotICAgIC8vIFJldHVybiBwcm9wZXJ0eSBvZiB0
aGUgZmlyc3Qgc2NyZWVuIGlmIHRoZSBzY3JlZW4gaXMgbm90IGZvdW5kIGluIHRoZSBtYXAuCi0g
ICAgYXV0byBkaXNwbGF5SUQgPSBzY3JlZW5kaXNwbGF5SUQgPyBzY3JlZW5kaXNwbGF5SUQgOiBw
cmltYXJ5U2NyZWVuRGlzcGxheUlEKCk7Ci0gICAgaWYgKGRpc3BsYXlJRCkgewotICAgICAgICBh
dXRvIHNjcmVlblByb3BlcnRpZXNGb3JEaXNwbGF5ID0gc2NyZWVuUHJvcGVydGllcygpLnNjcmVl
bkRhdGFNYXAuZmluZChkaXNwbGF5SUQpOwotICAgICAgICBpZiAoc2NyZWVuUHJvcGVydGllc0Zv
ckRpc3BsYXkgIT0gc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuZW5kKCkpCi0gICAg
ICAgICAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllc0ZvckRpc3BsYXktPnZhbHVlOwotICAgIH0K
LQotICAgIC8vIExhc3QgcmVzb3J0OiB1c2UgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIHNjcmVlbiBs
aXN0LgotICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5iZWdpbigp
LT52YWx1ZTsKLX0KLQogdWludDMyX3QgcHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkKIHsKLSAg
ICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKS5kaXNwbGF5TWFz
azsKLSAgICAKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRhKHByaW1hcnlTY3JlZW5EaXNwbGF5SUQo
KSk7CisgICAgaWYgKHYuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPmRpc3BsYXlNYXNr
OworCiAgICAgcmV0dXJuIDA7CiB9CiAKIHVpbnQzMl90IGRpc3BsYXlNYXNrRm9yRGlzcGxheShQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVz
KCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKGRp
c3BsYXlJRCkuZGlzcGxheU1hc2s7Ci0gICAgCisgICAgYXV0byB2ID0gc2NyZWVuRGF0YShkaXNw
bGF5SUQpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5kaXNwbGF5
TWFzazsKKwogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCiBJ
T1JlZ2lzdHJ5R1BVSUQgcHJpbWFyeUdQVUlEKCkKIHsKLSAgICByZXR1cm4gZ3B1SURGb3JEaXNw
bGF5KHNjcmVlblByb3BlcnRpZXMoKS5wcmltYXJ5RGlzcGxheUlEKTsKKyAgICByZXR1cm4gZ3B1
SURGb3JEaXNwbGF5KHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSk7CiB9CiAKIElPUmVnaXN0cnlH
UFVJRCBncHVJREZvckRpc3BsYXkoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewogI2lm
IEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKLSAgICBpZiAoIXNjcmVl
blByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHNj
cmVlbkRhdGEoZGlzcGxheUlEKS5ncHVJRDsKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRhKGRpc3Bs
YXlJRCk7CisgICAgaWYgKHYuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPmdwdUlEOwog
I2Vsc2UKICAgICByZXR1cm4gZ3B1SURGb3JEaXNwbGF5TWFzayhDR0Rpc3BsYXlJRFRvT3BlbkdM
RGlzcGxheU1hc2soZGlzcGxheUlEKSk7CiAjZW5kaWYKQEAgLTI0NiwxNSArMjE3LDE2IEBAIElP
UmVnaXN0cnlHUFVJRCBncHVJREZvckRpc3BsYXlNYXNrKEdMdWkKICAgICByZXR1cm4gKElPUmVn
aXN0cnlHUFVJRCkgZ3B1SURIaWdoIDw8IDMyIHwgZ3B1SURMb3c7CiB9CiAKLXN0YXRpYyBTY3Jl
ZW5EYXRhIGdldFNjcmVlblByb3BlcnRpZXMoV2lkZ2V0KiB3aWRnZXQpCitzdGF0aWMgT3B0aW9u
YWw8Y29uc3QgU2NyZWVuRGF0YSY+IGdldFNjcmVlblByb3BlcnRpZXMoV2lkZ2V0KiB3aWRnZXQp
CiB7CiAgICAgcmV0dXJuIHNjcmVlbkRhdGEoZGlzcGxheUlEKHdpZGdldCkpOwogfQogCiBib29s
IHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblBy
b3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGdldFNj
cmVlblByb3BlcnRpZXMod2lkZ2V0KS5zY3JlZW5Jc01vbm9jaHJvbWU7CisgICAgYXV0byB2ID0g
Z2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpCisgICAg
ICAgIHJldHVybiB2LT5zY3JlZW5Jc01vbm9jaHJvbWU7CiAKICAgICAvLyBUaGlzIGlzIGEgc3lz
dGVtLXdpZGUgYWNjZXNzaWJpbGl0eSBzZXR0aW5nLCBzYW1lIG9uIGFsbCBzY3JlZW5zLgogICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmlj
YXRlV2l0aFdpbmRvd1NlcnZlcikpOwpAQCAtMjYzLDggKzIzNSw5IEBAIGJvb2wgc2NyZWVuSXNN
b25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogCiBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3Jz
KCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKS5z
Y3JlZW5IYXNJbnZlcnRlZENvbG9yczsKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRhKHByaW1hcnlT
Y3JlZW5EaXNwbGF5SUQoKSk7CisgICAgaWYgKHYuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJu
IHYtPnNjcmVlbkhhc0ludmVydGVkQ29sb3JzOwogCiAgICAgLy8gVGhpcyBpcyBhIHN5c3RlbS13
aWRlIGFjY2Vzc2liaWxpdHkgc2V0dGluZywgc2FtZSBvbiBhbGwgc2NyZWVucy4KICAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdp
dGhXaW5kb3dTZXJ2ZXIpKTsKQEAgLTI3Myw4ICsyNDYsOSBAQCBib29sIHNjcmVlbkhhc0ludmVy
dGVkQ29sb3JzKCkKIAogaW50IHNjcmVlbkRlcHRoKFdpZGdldCogd2lkZ2V0KQogewotICAgIGlm
ICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGF1dG8gc2NyZWVuRGVwdGggPSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuRGVw
dGg7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOworICAgIGlmICh2
Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgYXV0byBzY3JlZW5EZXB0aCA9IHYtPnNjcmVlbkRlcHRo
OwogICAgICAgICBBU1NFUlQoc2NyZWVuRGVwdGgpOwogICAgICAgICByZXR1cm4gc2NyZWVuRGVw
dGg7CiAgICAgfQpAQCAtMjg1LDggKzI1OSw5IEBAIGludCBzY3JlZW5EZXB0aChXaWRnZXQqIHdp
ZGdldCkKIAogaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCogd2lkZ2V0KQogewot
ICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGF1dG8gZGVwdGhQZXJDb21wb25lbnQgPSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdl
dCkuc2NyZWVuRGVwdGhQZXJDb21wb25lbnQ7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVy
dGllcyh3aWRnZXQpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpIHsKKyAgICAgICAgYXV0byBkZXB0
aFBlckNvbXBvbmVudCA9IHYtPnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50OwogICAgICAgICBBU1NF
UlQoZGVwdGhQZXJDb21wb25lbnQpOwogICAgICAgICByZXR1cm4gZGVwdGhQZXJDb21wb25lbnQ7
CiAgICAgfQpAQCAtMjk3LDggKzI3Miw5IEBAIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChX
aWRnZXQqIHdpZGcKIAogRmxvYXRSZWN0IHNjcmVlblJlY3RGb3JEaXNwbGF5KFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5E
YXRhTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIHNjcmVlblJlY3QgPSBzY3JlZW5EYXRh
KGRpc3BsYXlJRCkuc2NyZWVuUmVjdDsKKyAgICBhdXRvIHYgPSBzY3JlZW5EYXRhKGRpc3BsYXlJ
RCk7CisgICAgaWYgKHYuaGFzVmFsdWUoKSkgeworICAgICAgICBhdXRvIHNjcmVlblJlY3QgPSB2
LT5zY3JlZW5SZWN0OwogICAgICAgICBBU1NFUlQoIXNjcmVlblJlY3QuaXNFbXB0eSgpKTsKICAg
ICAgICAgcmV0dXJuIHNjcmVlblJlY3Q7CiAgICAgfQpAQCAtMzE0LDggKzI5MCw5IEBAIEZsb2F0
UmVjdCBzY3JlZW5SZWN0Rm9yUHJpbWFyeVNjcmVlbigpCiAKIEZsb2F0UmVjdCBzY3JlZW5SZWN0
KFdpZGdldCogd2lkZ2V0KQogewotICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRh
dGFNYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRn
ZXQpLnNjcmVlblJlY3Q7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQp
OworICAgIGlmICh2Lmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5SZWN0Owog
CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29t
bXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7CiAgICAgcmV0dXJuIHRvVXNlclNwYWNlKFtzY3Jl
ZW4od2lkZ2V0KSBmcmFtZV0sIHdpbmRvdyh3aWRnZXQpKTsKQEAgLTMyMyw4ICszMDAsOSBAQCBG
bG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkKIAogRmxvYXRSZWN0IHNjcmVlbkF2
YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVz
KCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Qcm9w
ZXJ0aWVzKHdpZGdldCkuc2NyZWVuQXZhaWxhYmxlUmVjdDsKKyAgICBhdXRvIHYgPSBnZXRTY3Jl
ZW5Qcm9wZXJ0aWVzKHdpZGdldCk7CisgICAgaWYgKHYuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0
dXJuIHYtPnNjcmVlbkF2YWlsYWJsZVJlY3Q7CiAKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZp
bGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsK
ICAgICByZXR1cm4gdG9Vc2VyU3BhY2UoW3NjcmVlbih3aWRnZXQpIHZpc2libGVGcmFtZV0sIHdp
bmRvdyh3aWRnZXQpKTsKQEAgLTM0OCw4ICszMjYsOSBAQCBOU1NjcmVlbiAqc2NyZWVuKFBsYXRm
b3JtRGlzcGxheUlEIGRpc3BsCiAKIENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdp
ZGdldCogd2lkZ2V0KQogewotICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFN
YXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQp
LmNvbG9yU3BhY2UuZ2V0KCk7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRn
ZXQpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5jb2xvclNwYWNl
LmdldCgpOwogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7CiAgICAgcmV0dXJuIHNjcmVlbih3
aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlOwpAQCAtMzU3LDggKzMzNiw5IEBAIENHQ29s
b3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCoKIAogYm9vbCBzY3JlZW5TdXBwb3J0
c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0
aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Q
cm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOworICAgIGF1dG8g
diA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQor
ICAgICAgICByZXR1cm4gdi0+c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOwogCiAgICAgQVNT
RVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVX
aXRoV2luZG93U2VydmVyKSk7CiAgICAgcmV0dXJuIFtzY3JlZW4od2lkZ2V0KSBjYW5SZXByZXNl
bnREaXNwbGF5R2FtdXQ6TlNEaXNwbGF5R2FtdXRQM107CkBAIC0zNjYsOCArMzQ2LDkgQEAgYm9v
bCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KgogCiBib29sIHNjcmVlblN1cHBv
cnRzSGlnaER5bmFtaWNSYW5nZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblBy
b3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGdldFNj
cmVlblByb3BlcnRpZXMod2lkZ2V0KS5zY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7Cisg
ICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOworICAgIGlmICh2Lmhhc1Zh
bHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7
CiAKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5D
b21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKICNpZiBVU0UoTUVESUFUT09MQk9YKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjU4OTkzKQorKysg
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
MjY0LDcgKzUyNjQsNyBAQCB2b2lkIEludGVybmFsczo6bm90aWZ5UmVzb3VyY2VMb2FkT2JzZXJ2
CiAKIHVuc2lnbmVkIEludGVybmFsczo6cHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpCiB7Ci0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHJldHVybiBXZWJDb3JlOjpw
cmltYXJ5U2NyZWVuRGlzcGxheUlEKCk7CiAjZWxzZQogICAgIHJldHVybiAwOwpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI1ODk5MykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDMtMjUgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEFkb3B0IFNjcmVlblByb3BlcnRpZXMg
Y2xhc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTE3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtlIHJlbGV2ZW50IG1hY09TIHBsYXRmb3JtIGNvZGUgY3Jvc3MgcGxhdGZvcm0uCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OnNldFNjcmVlblByb3BlcnRpZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAyMC0w
My0yNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
QVNTRVJUSU9OIEZBSUxVUkU6ICFpc01pc3NpbmdQb3N0TGF5b3V0RGF0YSBpbiBXZWJLaXQ6OkVk
aXRvclN0YXRlOjpwb3N0TGF5b3V0RGF0YSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU4
OTkzKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSwxMCArMTQxLDEwIEBAIHZvaWQgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVu
Y29kZXIgPDwgbWVkaWFNSU1FVHlwZXM7CisgICAgZW5jb2RlciA8PCBzY3JlZW5Qcm9wZXJ0aWVz
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZW5jb2RlciA8PCBzY3JlZW5Qcm9w
ZXJ0aWVzOwogICAgIGVuY29kZXIgPDwgdXNlT3ZlcmxheVNjcm9sbGJhcnM7CiAjZW5kaWYKIApA
QCAtMzg5LDE0ICszODksMTUgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5tZWRpYU1JTUVUeXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogCi0j
aWYgUExBVEZPUk0oTUFDKQogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmVlblByb3BlcnRpZXM+
IHNjcmVlblByb3BlcnRpZXM7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5Qcm9wZXJ0aWVzOwogICAg
IGlmICghc2NyZWVuUHJvcGVydGllcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFt
ZXRlcnMuc2NyZWVuUHJvcGVydGllcyA9IFdURk1vdmUoKnNjcmVlblByb3BlcnRpZXMpOworI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnVzZU92ZXJsYXlTY3JvbGxiYXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTg5OTMpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICsz
OCw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgotI2VuZGlmCi0KLSNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0
Lmg+CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQpAQCAtMTgxLDYgKzE3OCw3IEBAIHN0cnVjdCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFZlY3RvcjxTdHJpbmc+IG1lZGlhTUlNRVR5cGVzOworICAgIFdlYkNvcmU6OlNjcmVlblByb3Bl
cnRpZXMgc2NyZWVuUHJvcGVydGllczsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xODgsNyArMTg2LDYg
QEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyBzY3JlZW5Qcm9wZXJ0
aWVzOwogICAgIGJvb2wgdXNlT3ZlcmxheVNjcm9sbGJhcnMgeyB0cnVlIH07CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNp
b24gMjU4OTkzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0QXBwbGljYXRpb25Jc0FjdAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzY3JlZW5Qcm9wZXJ0
aWVzU3RhdGVDaGFuZ2VkKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzID0gV2ViQ29yZTo6Y29sbGVjdFNjcmVlblBy
b3BlcnRpZXMoKTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlNldFNjcmVlblByb3BlcnRpZXMoc2NyZWVuUHJvcGVydGllcykpOwogI2VuZGlmCkBAIC04OTYs
NyArODk2LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogICAg
IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fcHJld2FybWVkUHJvY2VzcywgbnVsbHB0cik7CiB9CiAK
LSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBzdGF0aWMgdm9pZCBkaXNw
bGF5UmVjb25maWd1cmF0aW9uQ2FsbEJhY2soQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSwgQ0dE
aXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzIGZsYWdzLCB2b2lkICp1c2VySW5mbykKIHsKICAgICBh
dXRvIHNjcmVlblByb3BlcnRpZXMgPSBXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcygp
OwpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5l
d1dlYlBybwogICAgIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKTsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHJlZ2lz
dGVyRGlzcGxheUNvbmZpZ3VyYXRpb25DYWxsYmFjaygpOwogI2VuZGlmCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0JKHJldmlzaW9uIDI1ODk5MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1MywxMCArMzUzLDEwIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBwYXJh
bWV0ZXJzLnNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiA9IFtkZWZhdWx0cyBib29sRm9yS2V5Oldl
YktpdExvZ0Nvb2tpZUluZm9ybWF0aW9uRGVmYXVsdHNLZXldOwogI2VuZGlmCi0gICAgCi0jaWYg
UExBVEZPUk0oTUFDKQorCiAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzID0gV2ViQ29yZTo6Y29s
bGVjdFNjcmVlblByb3BlcnRpZXMoKTsKICAgICBwYXJhbWV0ZXJzLnNjcmVlblByb3BlcnRpZXMg
PSBXVEZNb3ZlKHNjcmVlblByb3BlcnRpZXMpOworI2lmIFBMQVRGT1JNKE1BQykKICAgICBwYXJh
bWV0ZXJzLnVzZU92ZXJsYXlTY3JvbGxiYXJzID0gKFtOU1Njcm9sbGVyIHByZWZlcnJlZFNjcm9s
bGVyU3R5bGVdID09IE5TU2Nyb2xsZXJTdHlsZU92ZXJsYXkpOwogI2VuZGlmCiAgICAgCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI1ODk5MykKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDkgKzQ2LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlZ2lzdHJhYmxlRG9tYWluLmg+Ci0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgPFdlYkNv
cmUvU2NyZWVuUHJvcGVydGllcy5oPgotI2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8cGFs
L0h5c3RlcmVzaXNBY3Rpdml0eS5oPgpAQCAtNjEsNiArNTgsNyBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxX
ZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5o
PgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKQEAgLTQ3MywxNiArNDcx
LDE0IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlByb2Nl
c3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlNjcmVlblByb3Bl
cnRpZXMmKTsKLSNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisj
aWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJ
TkcpCiAgICAgdm9pZCBzY3JvbGxlclN0eWxlUHJlZmVyZW5jZUNoYW5nZWQoYm9vbCB1c2VPdmVy
bGF5U2Nyb2xsYmFycyk7CiAgICAgdm9pZCBkaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWQoQ0dE
aXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyk7CiAgICAgdm9pZCBk
aXNwbGF5V2FzUmVmcmVzaGVkKENHRGlyZWN0RGlzcGxheUlEKTsKICNlbmRpZgotI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3Qg
V2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyYpOwogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc05hbWUo
KTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjU4OTkzKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMywxNCAr
MTEzLDE0IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm8KICAgICBN
YXJrSXNOb0xvbmdlclByZXdhcm1lZCgpCiAgICAgR2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVz
dGluZygpIC0+IChWZWN0b3I8U3RyaW5nPiBhY3RpdmVPcmlnaW5zKSBBc3luYwogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNldFNjcmVlblByb3BlcnRpZXMo
c3RydWN0IFdlYkNvcmU6OlNjcmVlblByb3BlcnRpZXMgc2NyZWVuUHJvcGVydGllcykKLSNpZiBF
TkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisjZW5kaWYKKyNpZiBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAg
ICBTY3JvbGxlclN0eWxlUHJlZmVyZW5jZUNoYW5nZWQoYm9vbCB1c2VPdmVsYXlTY3JvbGxiYXJz
KQogICAgIERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZChDR0RpcmVjdERpc3BsYXlJRCBkaXNw
bGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyBmbGFncykKICAgICBEaXNwbGF5V2Fz
UmVmcmVzaGVkKHVpbnQzMl90IGRpc3BsYXlJRCkKICNlbmRpZgotI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgQmFja2xpZ2h0
TGV2ZWxEaWRDaGFuZ2UoZmxvYXQgYmFja2xpZ2h0TGV2ZWwpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI1
ODk5MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI0NSwxMyArMjQ1LDEyIEBAIHZvaWQgV2ViUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplV2ViUHIKICAgICAgICAgfSk7CiAgICAgfQogCi0jaWYgUExBVEZP
Uk0oTUFDKQogICAgIFdlYkNvcmU6OnNldFNjcmVlblByb3BlcnRpZXMocGFyYW1ldGVycy5zY3Jl
ZW5Qcm9wZXJ0aWVzKTsKLSNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJ
TkcpCisKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZF
Ul9CTE9DS0lORykKICAgICBzY3JvbGxlclN0eWxlUHJlZmVyZW5jZUNoYW5nZWQocGFyYW1ldGVy
cy51c2VPdmVybGF5U2Nyb2xsYmFycyk7CiAjZW5kaWYKLSNlbmRpZgotICAgIAorCiAjaWYgUExB
VEZPUk0oSU9TKQogICAgIGlmIChwYXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhh
bmRsZSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KCpwYXJh
bWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZSk7CkBAIC05NjAsMTUgKzk1OSwx
NyBAQCB2b2lkIFdlYlByb2Nlc3M6OnJldm9rZUFjY2Vzc1RvQXNzZXRTZXJ2CiB9CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUHJvY2Vzczo6c2V0U2NyZWVuUHJvcGVydGll
cyhjb25zdCBTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIFdlYkNvcmU6OnNl
dFNjcmVlblByb3BlcnRpZXMocHJvcGVydGllcyk7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9w
YWdlTWFwLnZhbHVlcygpKQogICAgICAgICBwYWdlLT5zY3JlZW5Qcm9wZXJ0aWVzRGlkQ2hhbmdl
KCk7CisjaWYgUExBVEZPUk0oTUFDKQogICAgIHVwZGF0ZVBhZ2VTY3JlZW5Qcm9wZXJ0aWVzKCk7
CisjZW5kaWYKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRl
UGFnZVNjcmVlblByb3BlcnRpZXMoKQogewogICAgIGlmIChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394559</attachid>
            <date>2020-03-25 16:12:03 -0700</date>
            <delta_ts>2020-03-26 07:08:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191767-20200325161202.patch</filename>
            <type>text/plain</type>
            <size>32598</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTAxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTAzLTI1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBZG9wdCBTY3Jl
ZW5Qcm9wZXJ0aWVzIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT24gbWFjT1MsIHRoZSBTY3JlZW5Qcm9wZXJ0aWVzIGNsYXNzIGlzIHVzZWQg
dG8gY29sbGVjdCBzY3JlZW4gcHJvcGVydGllcyBpbiB0aGUgVUkgcHJvY2VzcworICAgICAgICBh
bmQgZm9yd2FyZCB0aGVzZSB0byB0aGUgV2ViIHByb2Nlc3MuIFdlIHNob3VsZCBhbHNvIGRvIHRo
aXMgb24gaU9TLCBpbiBvcmRlciB0byBiZSBhYmxlCisgICAgICAgIHRvIGJsb2NrIGZyb250Ym9h
cmQgc2VydmljZXMuCisgCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtU2NyZWVuLmg6CisgICAgICAgICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmVlbkRhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRm
b3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuSXNNb25vY2hyb21lKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKToKKyAgICAgICAgKFdl
YkNvcmU6OnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpj
b2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6cHJpbWFyeU9wZW5HTERpc3BsYXlNYXNr
KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BsYXlNYXNrRm9yRGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpwcmltYXJ5R1BVSUQpOgorICAgICAgICAoV2ViQ29yZTo6Z3B1SURGb3JEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZSk6CisgICAgICAgIChXZWJD
b3JlOjpzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5E
ZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0Rm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuUHJvcGVy
dGllcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwcmltYXJ5U2NyZWVuRGlzcGxheUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldFNjcmVlblByb3BlcnRpZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpnZXRTY3JlZW5Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKwogMjAyMC0wMy0yNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGbGFzaGluZyBh
bmQgcGFydGx5IHZpc2libGUgZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAy
NTkwMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTc3NSw2ICsxNzc1LDcgQEAgcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmNwcAogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCiBw
bGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuY3BwCitwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVl
bi5jcHAKIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAogcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEzNTgxLDYgKzEzNTgxLDcgQEAKIAkJQzEwNURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRl
eHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRl
eHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxMUE5
RUNEMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3dpdGNoaW5nR1BVQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMx
MUE5RUQyMjE0MDU3OEIwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3dpdGNoaW5nR1BVQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzEzNzg0NkIyNDJCRUVCQTAwRTg2RkE4IC8qIFBsYXRmb3JtU2NyZWVuLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtU2NyZWVuLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDUyMjM0MjcxOTAwMENENzA3IC8q
IFNwZWVjaFN5bnRoZXNpc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hTeW50aGVzaXND
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE2OTJERDEyM0QyM0FCRDAw
NkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTeXN0ZW1C
YXR0ZXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTY5MkRENDIzRDIzQUUw
MDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1CYXR0ZXJ5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjE4Nyw2ICsyNjE4OCw3IEBACiAJ
CQkJOTM1QzQ3NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oICov
LAogCQkJCTkzNUM0NzY3MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCAq
LywKIAkJCQlDNUJBQzE2RjE0RTMwRTQ3MDAwMDg4MzcgLyogUGxhdGZvcm1QYXN0ZWJvYXJkLmgg
Ki8sCisJCQkJQzEzNzg0NkIyNDJCRUVCQTAwRTg2RkE4IC8qIFBsYXRmb3JtU2NyZWVuLmNwcCAq
LywKIAkJCQlCQ0VDMDFENjBDMjc0RUI0MDA5RjRFQzkgLyogUGxhdGZvcm1TY3JlZW4uaCAqLywK
IAkJCQkyNTI3Q0M5NTE2QkY5NUREMDA5RERBQzAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuY3BwICovLAogCQkJCTI1MjdDQzkxMTZCRjhCQTEwMDlEREFDMCAvKiBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TY3JlZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU2NyZWVuLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVNjcmVlbi5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJTY3JlZW5Qcm9w
ZXJ0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFNjcmVlblByb3BlcnRp
ZXMmIHNjcmVlblByb3BlcnRpZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTY3Jl
ZW5Qcm9wZXJ0aWVzPiBzY3JlZW5Qcm9wZXJ0aWVzOworICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0
aWVzOworfQorCitQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkKK3sK
KyAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllcygpLnByaW1hcnlEaXNwbGF5SUQ7Cit9CisKK3Zv
aWQgc2V0U2NyZWVuUHJvcGVydGllcyhjb25zdCBTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVz
KQoreworICAgIHNjcmVlblByb3BlcnRpZXMoKSA9IHByb3BlcnRpZXM7Cit9CisKK09wdGlvbmFs
PGNvbnN0IFNjcmVlbkRhdGEmPiBzY3JlZW5EYXRhKFBsYXRmb3JtRGlzcGxheUlEIHNjcmVlbmRp
c3BsYXlJRCkKK3sKKyAgICBpZiAoc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgLy8gUmV0dXJuIHBy
b3BlcnR5IG9mIHRoZSBmaXJzdCBzY3JlZW4gaWYgdGhlIHNjcmVlbiBpcyBub3QgZm91bmQgaW4g
dGhlIG1hcC4KKyAgICBhdXRvIGRpc3BsYXlJRCA9IHNjcmVlbmRpc3BsYXlJRCA/IHNjcmVlbmRp
c3BsYXlJRCA6IHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKTsKKyAgICBpZiAoZGlzcGxheUlEKSB7
CisgICAgICAgIGF1dG8gc2NyZWVuUHJvcGVydGllc0ZvckRpc3BsYXkgPSBzY3JlZW5Qcm9wZXJ0
aWVzKCkuc2NyZWVuRGF0YU1hcC5maW5kKGRpc3BsYXlJRCk7CisgICAgICAgIGlmIChzY3JlZW5Q
cm9wZXJ0aWVzRm9yRGlzcGxheSAhPSBzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5l
bmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzRm9yRGlzcGxheS0+dmFs
dWU7CisgICAgfQorCisgICAgLy8gTGFzdCByZXNvcnQ6IHVzZSB0aGUgZmlyc3QgaXRlbSBpbiB0
aGUgc2NyZWVuIGxpc3QuCisgICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRh
TWFwLmJlZ2luKCktPnZhbHVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU2NyZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaAkocmV2aXNpb24gMjU5MDE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCiAjaWYgVVNFKEdMSUIpCiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjZW5kaWYKQEAgLTg1LDkgKzg3LDE1IEBAIGNvbnN0
ZXhwciBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWMKIFdFQkNPUkVfRVhQT1JUIENHQ29s
b3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogPSBudWxscHRyKTsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oTUFDKQogc3RydWN0IFNjcmVlblByb3BlcnRpZXM7Ci0KK3N0cnVjdCBT
Y3JlZW5EYXRhOworICAgIAorV0VCQ09SRV9FWFBPUlQgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0
U2NyZWVuUHJvcGVydGllcygpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0
aWVzKGNvbnN0IFNjcmVlblByb3BlcnRpZXMmKTsKK09wdGlvbmFsPGNvbnN0IFNjcmVlbkRhdGEm
PiBzY3JlZW5EYXRhKFBsYXRmb3JtRGlzcGxheUlEIHNjcmVlbmRpc3BsYXlJRCk7CitXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCk7CisgICAg
CisjaWYgUExBVEZPUk0oTUFDKQogV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKE5TU2NyZWVuICopOwogCiBXRUJDT1JFX0VYUE9SVCBOU1NjcmVlbiAqc2NyZWVuKE5T
V2luZG93ICopOwpAQCAtMTAyLDEzICsxMTAsOCBAQCBXRUJDT1JFX0VYUE9SVCBOU1JlY3QgdG9E
ZXZpY2VTcGFjZShjb25zCiAKIE5TUG9pbnQgZmxpcFNjcmVlblBvaW50KGNvbnN0IE5TUG9pbnQm
LCBOU1NjcmVlbiAqKTsKIAotV0VCQ09SRV9FWFBPUlQgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0
U2NyZWVuUHJvcGVydGllcygpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0
aWVzKGNvbnN0IFNjcmVlblByb3BlcnRpZXMmKTsKLQogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
aG91bGRPdmVycmlkZVNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShib29sIHNob3VsZE92
ZXJyaWRlLCBib29sIHN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSk7CiAKLVdFQkNPUkVfRVhQT1JU
IFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKTsKLQogdWludDMyX3Qg
cHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCk7CiB1aW50MzJfdCBkaXNwbGF5TWFza0ZvckRpc3Bs
YXkoUGxhdGZvcm1EaXNwbGF5SUQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JlZW5Qcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2NyZWVuUHJvcGVydGllcy5oCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShNQUMpCi0KICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KQEAgLTQ2LDkgKzQ0LDEwIEBAIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBib29s
IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzIHsgZmFsc2UgfTsKICAgICBib29sIHNjcmVlbklzTW9u
b2Nocm9tZSB7IGZhbHNlIH07CiAgICAgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFu
Z2UgeyBmYWxzZSB9OworI2lmIFBMQVRGT1JNKE1BQykKICAgICB1aW50MzJfdCBkaXNwbGF5TWFz
ayB7IDAgfTsKICAgICBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SUQgeyAwIH07Ci0KKyNlbmRpZgogICAg
IGVudW0gRW5jb2RlZENvbG9yU3BhY2VEYXRhVHlwZSB7CiAgICAgICAgIE51bGwsCiAgICAgICAg
IENvbG9yU3BhY2VOYW1lLApAQCAtOTUsNyArOTQsMTEgQEAgT3B0aW9uYWw8U2NyZWVuUHJvcGVy
dGllcz4gU2NyZWVuUHJvcGVydAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2NyZWVu
RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBz
Y3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVu
RGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVl
bkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBzY3JlZW5TdXBwb3J0
c0hpZ2hEeW5hbWljUmFuZ2UgPDwgZGlzcGxheU1hc2sgPDwgZ3B1SUQ7CisgICAgZW5jb2RlciA8
PCBzY3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVuRGVwdGggPDwgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNj
cmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBzY3JlZW5TdXBw
b3J0c0hpZ2hEeW5hbWljUmFuZ2U7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgZW5jb2RlciA8
PCBkaXNwbGF5TWFzayA8PCBncHVJRDsKKyNlbmRpZgogCiAgICAgaWYgKGNvbG9yU3BhY2UpIHsK
ICAgICAgICAgLy8gVHJ5IHRvIGVuY29kZSB0aGUgbmFtZS4KQEAgLTE2NCw2ICsxNjcsNyBAQCBP
cHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoCiAgICAgaWYgKCFzY3JlZW5T
dXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
KyNpZiBQTEFURk9STShNQUMpCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGRpc3BsYXlNYXNrOwog
ICAgIGRlY29kZXIgPj4gZGlzcGxheU1hc2s7CiAgICAgaWYgKCFkaXNwbGF5TWFzaykKQEAgLTE3
Myw3ICsxNzcsOCBAQCBPcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoCiAg
ICAgZGVjb2RlciA+PiBncHVJRDsKICAgICBpZiAoIWdwdUlEKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgIAorI2VuZGlmCisKICAgICBFbmNvZGVkQ29sb3JTcGFjZURhdGFUeXBl
IGRhdGFUeXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGRhdGFUeXBlKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTIwNSw5ICsyMTAsMjEgQEAgT3B0aW9uYWw8U2Ny
ZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAogICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
eyB7IFdURk1vdmUoKnNjcmVlbkF2YWlsYWJsZVJlY3QpLCBXVEZNb3ZlKCpzY3JlZW5SZWN0KSwg
V1RGTW92ZShjZ0NvbG9yU3BhY2UpLCBXVEZNb3ZlKCpzY3JlZW5EZXB0aCksIFdURk1vdmUoKnNj
cmVlbkRlcHRoUGVyQ29tcG9uZW50KSwgV1RGTW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKSwgV1RGTW92ZSgqc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMpLCBXVEZNb3ZlKCpzY3JlZW5J
c01vbm9jaHJvbWUpLCBXVEZNb3ZlKCpzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpLCBX
VEZNb3ZlKCpkaXNwbGF5TWFzayksIFdURk1vdmUoKmdwdUlEKSB9IH07CisgICAgcmV0dXJuIHsg
eworICAgICAgICBXVEZNb3ZlKCpzY3JlZW5BdmFpbGFibGVSZWN0KSwKKyAgICAgICAgV1RGTW92
ZSgqc2NyZWVuUmVjdCksCisgICAgICAgIFdURk1vdmUoY2dDb2xvclNwYWNlKSwKKyAgICAgICAg
V1RGTW92ZSgqc2NyZWVuRGVwdGgpLAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNv
bXBvbmVudCksCisgICAgICAgIFdURk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciks
CisgICAgICAgIFdURk1vdmUoKnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKSwKKyAgICAgICAgV1RG
TW92ZSgqc2NyZWVuSXNNb25vY2hyb21lKSwKKyAgICAgICAgV1RGTW92ZSgqc2NyZWVuU3VwcG9y
dHNIaWdoRHluYW1pY1JhbmdlKSwKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIFdURk1vdmUo
KmRpc3BsYXlNYXNrKSwKKyAgICAgICAgV1RGTW92ZSgqZ3B1SUQpCisjZW5kaWYKKyAgICB9IH07
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5J
T1MubW0JKHJldmlzaW9uIDI1OTAxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVNjcmVlbklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBv
cnQgIkludFJlY3QuaCIKKyNpbXBvcnQgIlNjcmVlblByb3BlcnRpZXMuaCIKICNpbXBvcnQgIldB
S1dpbmRvdy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAjaW1wb3J0IDxwYWwvY29jb2EvTWVkaWFU
b29sYm94U29mdExpbmsuaD4KQEAgLTU5LDE2ICs2MCwyOCBAQCBpbnQgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQoV2lkZ2V0KikKIAogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KikKIHsK
KyAgICBhdXRvIHYgPSBzY3JlZW5EYXRhKHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSk7CisgICAg
aWYgKHYuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPnNjcmVlbklzTW9ub2Nocm9tZTsK
KyAgICAKICAgICByZXR1cm4gUEFMOjpzb2Z0TGlua1VJS2l0VUlBY2Nlc3NpYmlsaXR5SXNHcmF5
c2NhbGVFbmFibGVkKCk7CiB9CiAKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKQogewor
ICAgIGF1dG8gdiA9IHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKTsKKyAgICBp
ZiAodi5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuSGFzSW52ZXJ0ZWRDb2xv
cnM7CisgICAgCiAgICAgcmV0dXJuIFBBTDo6c29mdExpbmtVSUtpdFVJQWNjZXNzaWJpbGl0eUlz
SW52ZXJ0Q29sb3JzRW5hYmxlZCgpOwogfQogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRD
b2xvcihXaWRnZXQqKQogeworICAgIGF1dG8gdiA9IHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRp
c3BsYXlJRCgpKTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2Ny
ZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOworCiAgICAgcmV0dXJuIE1HR2V0Qm9vbEFuc3dlcihr
TUdRSGFzRXh0ZW5kZWRDb2xvckRpc3BsYXkpOwogfQogCkBAIC0xNDEsNiArMTU0LDExIEBAIEZs
b2F0U2l6ZSBzY3JlZW5TaXplKCkKIHsKICAgICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHko
KSAmJiBbW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIF9p
c0NsYXNzaWNdKQogICAgICAgICByZXR1cm4geyAzMjAsIDQ4MCB9OworCisgICAgYXV0byB2ID0g
c2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhhc1ZhbHVl
KCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5SZWN0LnNpemUoKTsKKwogICAgIHJldHVybiBG
bG9hdFNpemUoW1tQQUw6OmdldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXSBfcmVmZXJlbmNl
Qm91bmRzXS5zaXplKTsKIH0KIApAQCAtMTQ4LDYgKzE2NiwxMSBAQCBGbG9hdFNpemUgYXZhaWxh
YmxlU2NyZWVuU2l6ZSgpCiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmlsaXR5KCkgJiYg
W1tQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFz
c2ljXSkKICAgICAgICAgcmV0dXJuIHsgMzIwLCA0ODAgfTsKKworICAgIGF1dG8gdiA9IHNjcmVl
bkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQor
ICAgICAgICByZXR1cm4gdi0+c2NyZWVuQXZhaWxhYmxlUmVjdC5zaXplKCk7CisKICAgICByZXR1
cm4gRmxvYXRTaXplKFtQQUw6OmdldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXS5ib3VuZHMu
c2l6ZSk7CiB9CiAKQEAgLTE2OCw2ICsxOTEsMzQgQEAgZmxvYXQgc2NyZWVuU2NhbGVGYWN0b3Io
VUlTY3JlZW4gKnNjcmVlbgogICAgIHJldHVybiBzY3JlZW4uc2NhbGU7CiB9CiAKK1NjcmVlblBy
b3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMoKQoreworICAgIFNjcmVlblByb3BlcnRp
ZXMgc2NyZWVuUHJvcGVydGllczsKKworICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCA9
IDA7CisKKyAgICBmb3IgKFVJU2NyZWVuICpzY3JlZW4gaW4gW1BBTDo6Z2V0VUlTY3JlZW5DbGFz
cygpIHNjcmVlbnNdKSB7CisgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0ID0g
c2NyZWVuLmJvdW5kczsKKyAgICAgICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5zZXRZKE5TTWF4WShz
Y3JlZW4uYm91bmRzKSAtIChzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIHNjcmVlbkF2YWlsYWJs
ZVJlY3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAorICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9
IHNjcmVlbi5fcmVmZXJlbmNlQm91bmRzOworICAgICAgICAKKyAgICAgICAgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobnVsbHB0cik7Cisg
ICAgICAgIAorICAgICAgICBpbnQgc2NyZWVuRGVwdGggPSBXZWJDb3JlOjpzY3JlZW5EZXB0aChu
dWxscHRyKTsKKyAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50ID0gV2ViQ29yZTo6
c2NyZWVuRGVwdGhQZXJDb21wb25lbnQobnVsbHB0cik7CisgICAgICAgIGJvb2wgc2NyZWVuU3Vw
cG9ydHNFeHRlbmRlZENvbG9yID0gV2ViQ29yZTo6c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
KG51bGxwdHIpOworICAgICAgICBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzID0gV2ViQ29y
ZTo6c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKKyAgICAgICAgYm9vbCBzY3JlZW5Jc01vbm9j
aHJvbWUgPSBXZWJDb3JlOjpzY3JlZW5Jc01vbm9jaHJvbWUobnVsbHB0cik7CisKKyAgICAgICAg
c2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldCgrK2Rpc3BsYXlJRCwgU2NyZWVuRGF0
YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRl
cHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
LCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2NyZWVuSXNNb25vY2hyb21lIH0pOworICAgICAg
ICAKKyAgICAgICAgaWYgKHNjcmVlbiA9PSBbUEFMOjpnZXRVSVNjcmVlbkNsYXNzKCkgbWFpblNj
cmVlbl0pCisgICAgICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQgPSBk
aXNwbGF5SUQ7CisgICAgfQorICAgIAorICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVl
bk1hYy5tbQkocmV2aXNpb24gMjU5MDE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTcgKzEwMCw2IEBA
IHN0YXRpYyBOU1NjcmVlbiAqc2NyZWVuKFdpZGdldCogd2lkZ2V0KQogICAgIHJldHVybiBzY3Jl
ZW4oZGlzcGxheUlEKHdpZGdldCkpOwogfQogCi1zdGF0aWMgU2NyZWVuUHJvcGVydGllcyYgc2Ny
ZWVuUHJvcGVydGllcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNjcmVlblByb3Bl
cnRpZXM+IHNjcmVlblByb3BlcnRpZXM7Ci0gICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXM7Ci19
Ci0KLVBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKQotewotICAgIHJl
dHVybiBzY3JlZW5Qcm9wZXJ0aWVzKCkucHJpbWFyeURpc3BsYXlJRDsKLX0KLQogU2NyZWVuUHJv
cGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcygpCiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nl
c3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2Vy
dmVyKSk7CkBAIC0xNTEsNjAgKzE0MCw0MiBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3Jl
ZW5Qcm9wZXJ0aWVzCiAgICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXM7CiB9CiAKLXZvaWQgc2V0
U2NyZWVuUHJvcGVydGllcyhjb25zdCBTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQotewot
ICAgIHNjcmVlblByb3BlcnRpZXMoKSA9IHByb3BlcnRpZXM7Ci19Ci0KIHZvaWQgc2V0U2hvdWxk
T3ZlcnJpZGVTY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoYm9vbCBzaG91bGRPdmVycmlk
ZSwgYm9vbCBzdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpCiB7CiAgICAgaWYgKFBBTDo6aXNNZWRp
YVRvb2xib3hGcmFtZXdvcmtBdmFpbGFibGUoKSAmJiBQQUw6OmNhbkxvYWRfTWVkaWFUb29sYm94
X01UT3ZlcnJpZGVTaG91bGRQbGF5SERSVmlkZW8oKSkKICAgICAgICAgUEFMOjpzb2Z0TGlua19N
ZWRpYVRvb2xib3hfTVRPdmVycmlkZVNob3VsZFBsYXlIRFJWaWRlbyhzaG91bGRPdmVycmlkZSwg
c3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlKTsKIH0KIAotc3RhdGljIFNjcmVlbkRhdGEgc2NyZWVu
RGF0YShQbGF0Zm9ybURpc3BsYXlJRCBzY3JlZW5kaXNwbGF5SUQpCi17Ci0gICAgUkVMRUFTRV9B
U1NFUlQoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSk7Ci0KLSAg
ICAvLyBSZXR1cm4gcHJvcGVydHkgb2YgdGhlIGZpcnN0IHNjcmVlbiBpZiB0aGUgc2NyZWVuIGlz
IG5vdCBmb3VuZCBpbiB0aGUgbWFwLgotICAgIGF1dG8gZGlzcGxheUlEID0gc2NyZWVuZGlzcGxh
eUlEID8gc2NyZWVuZGlzcGxheUlEIDogcHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpOwotICAgIGlm
IChkaXNwbGF5SUQpIHsKLSAgICAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzRm9yRGlzcGxheSA9
IHNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmZpbmQoZGlzcGxheUlEKTsKLSAgICAg
ICAgaWYgKHNjcmVlblByb3BlcnRpZXNGb3JEaXNwbGF5ICE9IHNjcmVlblByb3BlcnRpZXMoKS5z
Y3JlZW5EYXRhTWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXNG
b3JEaXNwbGF5LT52YWx1ZTsKLSAgICB9Ci0KLSAgICAvLyBMYXN0IHJlc29ydDogdXNlIHRoZSBm
aXJzdCBpdGVtIGluIHRoZSBzY3JlZW4gbGlzdC4KLSAgICByZXR1cm4gc2NyZWVuUHJvcGVydGll
cygpLnNjcmVlbkRhdGFNYXAuYmVnaW4oKS0+dmFsdWU7Ci19Ci0KIHVpbnQzMl90IHByaW1hcnlP
cGVuR0xEaXNwbGF5TWFzaygpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVu
RGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKHByaW1hcnlTY3Jl
ZW5EaXNwbGF5SUQoKSkuZGlzcGxheU1hc2s7Ci0gICAgCisgICAgYXV0byB2ID0gc2NyZWVuRGF0
YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpCisgICAg
ICAgIHJldHVybiB2LT5kaXNwbGF5TWFzazsKKwogICAgIHJldHVybiAwOwogfQogCiB1aW50MzJf
dCBkaXNwbGF5TWFza0ZvckRpc3BsYXkoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewot
ICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gc2NyZWVuRGF0YShkaXNwbGF5SUQpLmRpc3BsYXlNYXNrOwotICAgIAorICAg
IGF1dG8gdiA9IHNjcmVlbkRhdGEoZGlzcGxheUlEKTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQor
ICAgICAgICByZXR1cm4gdi0+ZGlzcGxheU1hc2s7CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gMDsKIH0KIAogSU9SZWdpc3RyeUdQVUlEIHByaW1hcnlHUFVJRCgpCiB7
Ci0gICAgcmV0dXJuIGdwdUlERm9yRGlzcGxheShzY3JlZW5Qcm9wZXJ0aWVzKCkucHJpbWFyeURp
c3BsYXlJRCk7CisgICAgcmV0dXJuIGdwdUlERm9yRGlzcGxheShwcmltYXJ5U2NyZWVuRGlzcGxh
eUlEKCkpOwogfQogCiBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SURGb3JEaXNwbGF5KFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCkKIHsKICNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJf
QkxPQ0tJTkcpCi0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKGRpc3BsYXlJRCkuZ3B1SUQ7CisgICAg
YXV0byB2ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpCisg
ICAgICAgIHJldHVybiB2LT5ncHVJRDsKICNlbHNlCiAgICAgcmV0dXJuIGdwdUlERm9yRGlzcGxh
eU1hc2soQ0dEaXNwbGF5SURUb09wZW5HTERpc3BsYXlNYXNrKGRpc3BsYXlJRCkpOwogI2VuZGlm
CkBAIC0yNDYsMTUgKzIxNywxNiBAQCBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SURGb3JEaXNwbGF5TWFz
ayhHTHVpCiAgICAgcmV0dXJuIChJT1JlZ2lzdHJ5R1BVSUQpIGdwdUlESGlnaCA8PCAzMiB8IGdw
dUlETG93OwogfQogCi1zdGF0aWMgU2NyZWVuRGF0YSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKFdpZGdl
dCogd2lkZ2V0KQorc3RhdGljIE9wdGlvbmFsPGNvbnN0IFNjcmVlbkRhdGEmPiBnZXRTY3JlZW5Q
cm9wZXJ0aWVzKFdpZGdldCogd2lkZ2V0KQogewogICAgIHJldHVybiBzY3JlZW5EYXRhKGRpc3Bs
YXlJRCh3aWRnZXQpKTsKIH0KIAogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRn
ZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuSXNN
b25vY2hyb21lOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAg
ICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuSXNNb25vY2hyb21l
OwogCiAgICAgLy8gVGhpcyBpcyBhIHN5c3RlbS13aWRlIGFjY2Vzc2liaWxpdHkgc2V0dGluZywg
c2FtZSBvbiBhbGwgc2NyZWVucy4KICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9j
ZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKQEAgLTI2Myw4
ICsyMzUsOSBAQCBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKIAogYm9v
bCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVz
KCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKHBy
aW1hcnlTY3JlZW5EaXNwbGF5SUQoKSkuc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnM7CisgICAgYXV0
byB2ID0gc2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhh
c1ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5IYXNJbnZlcnRlZENvbG9yczsKIAog
ICAgIC8vIFRoaXMgaXMgYSBzeXN0ZW0td2lkZSBhY2Nlc3NpYmlsaXR5IHNldHRpbmcsIHNhbWUg
b24gYWxsIHNjcmVlbnMuCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7CkBAIC0yNzMsOCArMjQ2
LDkgQEAgYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiAKIGludCBzY3JlZW5EZXB0aChX
aWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRh
TWFwLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIHNjcmVlbkRlcHRoID0gZ2V0U2NyZWVuUHJv
cGVydGllcyh3aWRnZXQpLnNjcmVlbkRlcHRoOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3Bl
cnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKSB7CisgICAgICAgIGF1dG8gc2Ny
ZWVuRGVwdGggPSB2LT5zY3JlZW5EZXB0aDsKICAgICAgICAgQVNTRVJUKHNjcmVlbkRlcHRoKTsK
ICAgICAgICAgcmV0dXJuIHNjcmVlbkRlcHRoOwogICAgIH0KQEAgLTI4NSw4ICsyNTksOSBAQCBp
bnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCiAKIGludCBzY3JlZW5EZXB0aFBlckNvbXBv
bmVudChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3Jl
ZW5EYXRhTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGRlcHRoUGVyQ29tcG9uZW50ID0g
Z2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50OworICAg
IGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1
ZSgpKSB7CisgICAgICAgIGF1dG8gZGVwdGhQZXJDb21wb25lbnQgPSB2LT5zY3JlZW5EZXB0aFBl
ckNvbXBvbmVudDsKICAgICAgICAgQVNTRVJUKGRlcHRoUGVyQ29tcG9uZW50KTsKICAgICAgICAg
cmV0dXJuIGRlcHRoUGVyQ29tcG9uZW50OwogICAgIH0KQEAgLTI5Nyw4ICsyNzIsOSBAQCBpbnQg
c2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnCiAKIEZsb2F0UmVjdCBzY3JlZW5S
ZWN0Rm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7Ci0gICAgaWYgKCFz
Y3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0
byBzY3JlZW5SZWN0ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpLnNjcmVlblJlY3Q7CisgICAgYXV0
byB2ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpIHsKKyAg
ICAgICAgYXV0byBzY3JlZW5SZWN0ID0gdi0+c2NyZWVuUmVjdDsKICAgICAgICAgQVNTRVJUKCFz
Y3JlZW5SZWN0LmlzRW1wdHkoKSk7CiAgICAgICAgIHJldHVybiBzY3JlZW5SZWN0OwogICAgIH0K
QEAgLTMxNCw4ICsyOTAsOSBAQCBGbG9hdFJlY3Qgc2NyZWVuUmVjdEZvclByaW1hcnlTY3JlZW4o
KQogCiBGbG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNj
cmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KS5zY3JlZW5SZWN0OworICAgIGF1dG8gdiA9IGdl
dFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAg
ICByZXR1cm4gdi0+c2NyZWVuUmVjdDsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwogICAg
IHJldHVybiB0b1VzZXJTcGFjZShbc2NyZWVuKHdpZGdldCkgZnJhbWVdLCB3aW5kb3cod2lkZ2V0
KSk7CkBAIC0zMjMsOCArMzAwLDkgQEAgRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRn
ZXQpCiAKIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lkZ2V0KQogewot
ICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlbkF2YWlsYWJsZVJl
Y3Q7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOworICAgIGlmICh2
Lmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5BdmFpbGFibGVSZWN0OwogCiAg
ICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVu
aWNhdGVXaXRoV2luZG93U2VydmVyKSk7CiAgICAgcmV0dXJuIHRvVXNlclNwYWNlKFtzY3JlZW4o
d2lkZ2V0KSB2aXNpYmxlRnJhbWVdLCB3aW5kb3cod2lkZ2V0KSk7CkBAIC0zNDgsOCArMzI2LDkg
QEAgTlNTY3JlZW4gKnNjcmVlbihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbAogCiBDR0NvbG9yU3Bh
Y2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVl
blByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGdl
dFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KS5jb2xvclNwYWNlLmdldCgpOworICAgIGF1dG8gdiA9
IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAg
ICAgICByZXR1cm4gdi0+Y29sb3JTcGFjZS5nZXQoKTsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZl
cikpOwogICAgIHJldHVybiBzY3JlZW4od2lkZ2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZTsK
QEAgLTM1Nyw4ICszMzYsOSBAQCBDR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRn
ZXQqCiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0KQog
ewotICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlblN1cHBvcnRz
RXh0ZW5kZWRDb2xvcjsKKyAgICBhdXRvIHYgPSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCk7
CisgICAgaWYgKHYuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPnNjcmVlblN1cHBvcnRz
RXh0ZW5kZWRDb2xvcjsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwogICAgIHJldHVybiBb
c2NyZWVuKHdpZGdldCkgY2FuUmVwcmVzZW50RGlzcGxheUdhbXV0Ok5TRGlzcGxheUdhbXV0UDNd
OwpAQCAtMzY2LDggKzM0Niw5IEBAIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdp
ZGdldCoKIAogYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZ2V0KiB3aWRn
ZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuU3Vw
cG9ydHNIaWdoRHluYW1pY1JhbmdlOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMo
d2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVu
U3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlOwogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7CiAj
aWYgVVNFKE1FRElBVE9PTEJPWCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAJKHJldmlzaW9uIDI1OTAxNykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI2NCw3ICs1MjY0LDcgQEAgdm9pZCBJbnRlcm5hbHM6
Om5vdGlmeVJlc291cmNlTG9hZE9ic2VydgogCiB1bnNpZ25lZCBJbnRlcm5hbHM6OnByaW1hcnlT
Y3JlZW5EaXNwbGF5SUQoKQogewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICByZXR1cm4gV2ViQ29yZTo6cHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpOwogI2Vsc2UK
ICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAz
LTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBBZG9wdCBTY3JlZW5Qcm9wZXJ0aWVzIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSByZWxldmVudCBtYWNPUyBwbGF0Zm9ybSBjb2Rl
IGNyb3NzIHBsYXRmb3JtLgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRTY3JlZW5Qcm9wZXJ0aWVzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisKIDIwMjAtMDMtMjUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIEVsZW1lbnQgY29udGV4dCBjaGFyYWN0ZXIgcmVjdHMgbWF5IGJl
IGluIHdyb25nIGNvb3JkaW5hdGUgc3lzdGVtCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU5
MDE3KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSwxMCArMTQxLDEwIEBAIHZvaWQgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVu
Y29kZXIgPDwgbWVkaWFNSU1FVHlwZXM7CisgICAgZW5jb2RlciA8PCBzY3JlZW5Qcm9wZXJ0aWVz
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZW5jb2RlciA8PCBzY3JlZW5Qcm9w
ZXJ0aWVzOwogICAgIGVuY29kZXIgPDwgdXNlT3ZlcmxheVNjcm9sbGJhcnM7CiAjZW5kaWYKIApA
QCAtMzg5LDE0ICszODksMTUgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5tZWRpYU1JTUVUeXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogCi0j
aWYgUExBVEZPUk0oTUFDKQogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmVlblByb3BlcnRpZXM+
IHNjcmVlblByb3BlcnRpZXM7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5Qcm9wZXJ0aWVzOwogICAg
IGlmICghc2NyZWVuUHJvcGVydGllcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFt
ZXRlcnMuc2NyZWVuUHJvcGVydGllcyA9IFdURk1vdmUoKnNjcmVlblByb3BlcnRpZXMpOworI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnVzZU92ZXJsYXlTY3JvbGxiYXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICsz
OCw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgotI2VuZGlmCi0KLSNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0
Lmg+CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQpAQCAtMTgxLDYgKzE3OCw3IEBAIHN0cnVjdCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFZlY3RvcjxTdHJpbmc+IG1lZGlhTUlNRVR5cGVzOworICAgIFdlYkNvcmU6OlNjcmVlblByb3Bl
cnRpZXMgc2NyZWVuUHJvcGVydGllczsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xODgsNyArMTg2LDYg
QEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyBzY3JlZW5Qcm9wZXJ0
aWVzOwogICAgIGJvb2wgdXNlT3ZlcmxheVNjcm9sbGJhcnMgeyB0cnVlIH07CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNp
b24gMjU5MDE3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0QXBwbGljYXRpb25Jc0FjdAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzY3JlZW5Qcm9wZXJ0
aWVzU3RhdGVDaGFuZ2VkKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzID0gV2ViQ29yZTo6Y29sbGVjdFNjcmVlblBy
b3BlcnRpZXMoKTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlNldFNjcmVlblByb3BlcnRpZXMoc2NyZWVuUHJvcGVydGllcykpOwogI2VuZGlmCkBAIC04OTYs
NyArODk2LDcgQEAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OgogICAg
IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fcHJld2FybWVkUHJvY2VzcywgbnVsbHB0cik7CiB9CiAK
LSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09DT0EpCiBzdGF0aWMgdm9pZCBkaXNw
bGF5UmVjb25maWd1cmF0aW9uQ2FsbEJhY2soQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheSwgQ0dE
aXNwbGF5Q2hhbmdlU3VtbWFyeUZsYWdzIGZsYWdzLCB2b2lkICp1c2VySW5mbykKIHsKICAgICBh
dXRvIHNjcmVlblByb3BlcnRpZXMgPSBXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcygp
OwpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6aW5pdGlhbGl6ZU5l
d1dlYlBybwogICAgIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKTsKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHJlZ2lz
dGVyRGlzcGxheUNvbmZpZ3VyYXRpb25DYWxsYmFjaygpOwogI2VuZGlmCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0JKHJldmlzaW9uIDI1OTAxNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1MywxMCArMzUzLDEwIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBwYXJh
bWV0ZXJzLnNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiA9IFtkZWZhdWx0cyBib29sRm9yS2V5Oldl
YktpdExvZ0Nvb2tpZUluZm9ybWF0aW9uRGVmYXVsdHNLZXldOwogI2VuZGlmCi0gICAgCi0jaWYg
UExBVEZPUk0oTUFDKQorCiAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzID0gV2ViQ29yZTo6Y29s
bGVjdFNjcmVlblByb3BlcnRpZXMoKTsKICAgICBwYXJhbWV0ZXJzLnNjcmVlblByb3BlcnRpZXMg
PSBXVEZNb3ZlKHNjcmVlblByb3BlcnRpZXMpOworI2lmIFBMQVRGT1JNKE1BQykKICAgICBwYXJh
bWV0ZXJzLnVzZU92ZXJsYXlTY3JvbGxiYXJzID0gKFtOU1Njcm9sbGVyIHByZWZlcnJlZFNjcm9s
bGVyU3R5bGVdID09IE5TU2Nyb2xsZXJTdHlsZU92ZXJsYXkpOwogI2VuZGlmCiAgICAgCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI1OTAxNykKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDkgKzQ2LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlZ2lzdHJhYmxlRG9tYWluLmg+Ci0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgPFdlYkNv
cmUvU2NyZWVuUHJvcGVydGllcy5oPgotI2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8cGFs
L0h5c3RlcmVzaXNBY3Rpdml0eS5oPgpAQCAtNjEsNiArNTgsNyBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlIDxX
ZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5o
PgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKQEAgLTQ3MywxNiArNDcx
LDE0IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlByb2Nl
c3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKLSNpZiBQTEFURk9STShNQUMp
Ci0gICAgdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlNjcmVlblByb3Bl
cnRpZXMmKTsKLSNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisj
aWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJ
TkcpCiAgICAgdm9pZCBzY3JvbGxlclN0eWxlUHJlZmVyZW5jZUNoYW5nZWQoYm9vbCB1c2VPdmVy
bGF5U2Nyb2xsYmFycyk7CiAgICAgdm9pZCBkaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWQoQ0dE
aXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyk7CiAgICAgdm9pZCBk
aXNwbGF5V2FzUmVmcmVzaGVkKENHRGlyZWN0RGlzcGxheUlEKTsKICNlbmRpZgotI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3Qg
V2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyYpOwogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc05hbWUo
KTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjU5MDE3KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMywxNCAr
MTEzLDE0IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm8KICAgICBN
YXJrSXNOb0xvbmdlclByZXdhcm1lZCgpCiAgICAgR2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVz
dGluZygpIC0+IChWZWN0b3I8U3RyaW5nPiBhY3RpdmVPcmlnaW5zKSBBc3luYwogCi0jaWYgUExB
VEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNldFNjcmVlblByb3BlcnRpZXMo
c3RydWN0IFdlYkNvcmU6OlNjcmVlblByb3BlcnRpZXMgc2NyZWVuUHJvcGVydGllcykKLSNpZiBF
TkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisjZW5kaWYKKyNpZiBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAg
ICBTY3JvbGxlclN0eWxlUHJlZmVyZW5jZUNoYW5nZWQoYm9vbCB1c2VPdmVsYXlTY3JvbGxiYXJz
KQogICAgIERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZChDR0RpcmVjdERpc3BsYXlJRCBkaXNw
bGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyBmbGFncykKICAgICBEaXNwbGF5V2Fz
UmVmcmVzaGVkKHVpbnQzMl90IGRpc3BsYXlJRCkKICNlbmRpZgotI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgQmFja2xpZ2h0
TGV2ZWxEaWRDaGFuZ2UoZmxvYXQgYmFja2xpZ2h0TGV2ZWwpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9uIDI1
OTAxNykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI0NSwxMyArMjQ1LDEyIEBAIHZvaWQgV2ViUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplV2ViUHIKICAgICAgICAgfSk7CiAgICAgfQogCi0jaWYgUExBVEZP
Uk0oTUFDKQogICAgIFdlYkNvcmU6OnNldFNjcmVlblByb3BlcnRpZXMocGFyYW1ldGVycy5zY3Jl
ZW5Qcm9wZXJ0aWVzKTsKLSNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJ
TkcpCisKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZF
Ul9CTE9DS0lORykKICAgICBzY3JvbGxlclN0eWxlUHJlZmVyZW5jZUNoYW5nZWQocGFyYW1ldGVy
cy51c2VPdmVybGF5U2Nyb2xsYmFycyk7CiAjZW5kaWYKLSNlbmRpZgotICAgIAorCiAjaWYgUExB
VEZPUk0oSU9TKQogICAgIGlmIChwYXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhh
bmRsZSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KCpwYXJh
bWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZSk7CkBAIC05NjAsMTUgKzk1OSwx
NyBAQCB2b2lkIFdlYlByb2Nlc3M6OnJldm9rZUFjY2Vzc1RvQXNzZXRTZXJ2CiB9CiAjZW5kaWYK
IAotI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUHJvY2Vzczo6c2V0U2NyZWVuUHJvcGVydGll
cyhjb25zdCBTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIFdlYkNvcmU6OnNl
dFNjcmVlblByb3BlcnRpZXMocHJvcGVydGllcyk7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9w
YWdlTWFwLnZhbHVlcygpKQogICAgICAgICBwYWdlLT5zY3JlZW5Qcm9wZXJ0aWVzRGlkQ2hhbmdl
KCk7CisjaWYgUExBVEZPUk0oTUFDKQogICAgIHVwZGF0ZVBhZ2VTY3JlZW5Qcm9wZXJ0aWVzKCk7
CisjZW5kaWYKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRl
UGFnZVNjcmVlblByb3BlcnRpZXMoKQogewogICAgIGlmIChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394603</attachid>
            <date>2020-03-26 07:08:14 -0700</date>
            <delta_ts>2020-03-26 08:16:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191767-20200326070813.patch</filename>
            <type>text/plain</type>
            <size>32791</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTAxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTAzLTI1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBZG9wdCBTY3Jl
ZW5Qcm9wZXJ0aWVzIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT24gbWFjT1MsIHRoZSBTY3JlZW5Qcm9wZXJ0aWVzIGNsYXNzIGlzIHVzZWQg
dG8gY29sbGVjdCBzY3JlZW4gcHJvcGVydGllcyBpbiB0aGUgVUkgcHJvY2VzcworICAgICAgICBh
bmQgZm9yd2FyZCB0aGVzZSB0byB0aGUgV2ViIHByb2Nlc3MuIFdlIHNob3VsZCBhbHNvIGRvIHRo
aXMgb24gaU9TLCBpbiBvcmRlciB0byBiZSBhYmxlCisgICAgICAgIHRvIGJsb2NrIGZyb250Ym9h
cmQgc2VydmljZXMuCisgCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtU2NyZWVuLmg6CisgICAgICAgICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmVlbkRhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRm
b3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuSXNNb25vY2hyb21lKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKToKKyAgICAgICAgKFdl
YkNvcmU6OnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpj
b2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6cHJpbWFyeU9wZW5HTERpc3BsYXlNYXNr
KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BsYXlNYXNrRm9yRGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpwcmltYXJ5R1BVSUQpOgorICAgICAgICAoV2ViQ29yZTo6Z3B1SURGb3JEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZSk6CisgICAgICAgIChXZWJD
b3JlOjpzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5E
ZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0Rm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuUHJvcGVy
dGllcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwcmltYXJ5U2NyZWVuRGlzcGxheUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldFNjcmVlblByb3BlcnRpZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpnZXRTY3JlZW5Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKwogMjAyMC0wMy0yNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGbGFzaGluZyBh
bmQgcGFydGx5IHZpc2libGUgZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAy
NTkwMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTc3NSw2ICsxNzc1LDcgQEAgcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmNwcAogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCiBw
bGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuY3BwCitwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVl
bi5jcHAKIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAogcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEzNTgxLDYgKzEzNTgxLDcgQEAKIAkJQzEwNURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRl
eHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRl
eHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxMUE5
RUNEMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3dpdGNoaW5nR1BVQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMx
MUE5RUQyMjE0MDU3OEIwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3dpdGNoaW5nR1BVQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzEzNzg0NkIyNDJCRUVCQTAwRTg2RkE4IC8qIFBsYXRmb3JtU2NyZWVuLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtU2NyZWVuLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDUyMjM0MjcxOTAwMENENzA3IC8q
IFNwZWVjaFN5bnRoZXNpc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hTeW50aGVzaXND
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE2OTJERDEyM0QyM0FCRDAw
NkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTeXN0ZW1C
YXR0ZXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTY5MkRENDIzRDIzQUUw
MDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1CYXR0ZXJ5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjE4Nyw2ICsyNjE4OCw3IEBACiAJ
CQkJOTM1QzQ3NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oICov
LAogCQkJCTkzNUM0NzY3MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCAq
LywKIAkJCQlDNUJBQzE2RjE0RTMwRTQ3MDAwMDg4MzcgLyogUGxhdGZvcm1QYXN0ZWJvYXJkLmgg
Ki8sCisJCQkJQzEzNzg0NkIyNDJCRUVCQTAwRTg2RkE4IC8qIFBsYXRmb3JtU2NyZWVuLmNwcCAq
LywKIAkJCQlCQ0VDMDFENjBDMjc0RUI0MDA5RjRFQzkgLyogUGxhdGZvcm1TY3JlZW4uaCAqLywK
IAkJCQkyNTI3Q0M5NTE2QkY5NUREMDA5RERBQzAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuY3BwICovLAogCQkJCTI1MjdDQzkxMTZCRjhCQTEwMDlEREFDMCAvKiBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TY3JlZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU2NyZWVuLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVNjcmVlbi5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJTY3JlZW5Qcm9w
ZXJ0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFNjcmVlblByb3BlcnRp
ZXMmIHNjcmVlblByb3BlcnRpZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTY3Jl
ZW5Qcm9wZXJ0aWVzPiBzY3JlZW5Qcm9wZXJ0aWVzOworICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0
aWVzOworfQorCitQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkKK3sK
KyAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllcygpLnByaW1hcnlEaXNwbGF5SUQ7Cit9CisKK3Zv
aWQgc2V0U2NyZWVuUHJvcGVydGllcyhjb25zdCBTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVz
KQoreworICAgIHNjcmVlblByb3BlcnRpZXMoKSA9IHByb3BlcnRpZXM7Cit9CisKK09wdGlvbmFs
PGNvbnN0IFNjcmVlbkRhdGEmPiBzY3JlZW5EYXRhKFBsYXRmb3JtRGlzcGxheUlEIHNjcmVlbmRp
c3BsYXlJRCkKK3sKKyAgICBpZiAoc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgLy8gUmV0dXJuIHBy
b3BlcnR5IG9mIHRoZSBmaXJzdCBzY3JlZW4gaWYgdGhlIHNjcmVlbiBpcyBub3QgZm91bmQgaW4g
dGhlIG1hcC4KKyAgICBhdXRvIGRpc3BsYXlJRCA9IHNjcmVlbmRpc3BsYXlJRCA/IHNjcmVlbmRp
c3BsYXlJRCA6IHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKTsKKyAgICBpZiAoZGlzcGxheUlEKSB7
CisgICAgICAgIGF1dG8gc2NyZWVuUHJvcGVydGllc0ZvckRpc3BsYXkgPSBzY3JlZW5Qcm9wZXJ0
aWVzKCkuc2NyZWVuRGF0YU1hcC5maW5kKGRpc3BsYXlJRCk7CisgICAgICAgIGlmIChzY3JlZW5Q
cm9wZXJ0aWVzRm9yRGlzcGxheSAhPSBzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5l
bmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzRm9yRGlzcGxheS0+dmFs
dWU7CisgICAgfQorCisgICAgLy8gTGFzdCByZXNvcnQ6IHVzZSB0aGUgZmlyc3QgaXRlbSBpbiB0
aGUgc2NyZWVuIGxpc3QuCisgICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRh
TWFwLmJlZ2luKCktPnZhbHVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU2NyZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaAkocmV2aXNpb24gMjU5MDE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCiAjaWYgVVNFKEdMSUIpCiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjZW5kaWYKQEAgLTg1LDkgKzg3LDE1IEBAIGNvbnN0
ZXhwciBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWMKIFdFQkNPUkVfRVhQT1JUIENHQ29s
b3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogPSBudWxscHRyKTsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oTUFDKQogc3RydWN0IFNjcmVlblByb3BlcnRpZXM7Ci0KK3N0cnVjdCBT
Y3JlZW5EYXRhOworICAgIAorV0VCQ09SRV9FWFBPUlQgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0
U2NyZWVuUHJvcGVydGllcygpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0
aWVzKGNvbnN0IFNjcmVlblByb3BlcnRpZXMmKTsKK09wdGlvbmFsPGNvbnN0IFNjcmVlbkRhdGEm
PiBzY3JlZW5EYXRhKFBsYXRmb3JtRGlzcGxheUlEIHNjcmVlbmRpc3BsYXlJRCk7CitXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCk7CisgICAg
CisjaWYgUExBVEZPUk0oTUFDKQogV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKE5TU2NyZWVuICopOwogCiBXRUJDT1JFX0VYUE9SVCBOU1NjcmVlbiAqc2NyZWVuKE5T
V2luZG93ICopOwpAQCAtMTAyLDEzICsxMTAsOCBAQCBXRUJDT1JFX0VYUE9SVCBOU1JlY3QgdG9E
ZXZpY2VTcGFjZShjb25zCiAKIE5TUG9pbnQgZmxpcFNjcmVlblBvaW50KGNvbnN0IE5TUG9pbnQm
LCBOU1NjcmVlbiAqKTsKIAotV0VCQ09SRV9FWFBPUlQgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0
U2NyZWVuUHJvcGVydGllcygpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0
aWVzKGNvbnN0IFNjcmVlblByb3BlcnRpZXMmKTsKLQogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
aG91bGRPdmVycmlkZVNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShib29sIHNob3VsZE92
ZXJyaWRlLCBib29sIHN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSk7CiAKLVdFQkNPUkVfRVhQT1JU
IFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKTsKLQogdWludDMyX3Qg
cHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCk7CiB1aW50MzJfdCBkaXNwbGF5TWFza0ZvckRpc3Bs
YXkoUGxhdGZvcm1EaXNwbGF5SUQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JlZW5Qcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2NyZWVuUHJvcGVydGllcy5oCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShNQUMpCi0KICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KQEAgLTQ2LDkgKzQ0LDEwIEBAIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBib29s
IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzIHsgZmFsc2UgfTsKICAgICBib29sIHNjcmVlbklzTW9u
b2Nocm9tZSB7IGZhbHNlIH07CiAgICAgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFu
Z2UgeyBmYWxzZSB9OworI2lmIFBMQVRGT1JNKE1BQykKICAgICB1aW50MzJfdCBkaXNwbGF5TWFz
ayB7IDAgfTsKICAgICBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SUQgeyAwIH07Ci0KKyNlbmRpZgogICAg
IGVudW0gRW5jb2RlZENvbG9yU3BhY2VEYXRhVHlwZSB7CiAgICAgICAgIE51bGwsCiAgICAgICAg
IENvbG9yU3BhY2VOYW1lLApAQCAtOTUsNyArOTQsMTEgQEAgT3B0aW9uYWw8U2NyZWVuUHJvcGVy
dGllcz4gU2NyZWVuUHJvcGVydAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2NyZWVu
RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBz
Y3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVu
RGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVl
bkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBzY3JlZW5TdXBwb3J0
c0hpZ2hEeW5hbWljUmFuZ2UgPDwgZGlzcGxheU1hc2sgPDwgZ3B1SUQ7CisgICAgZW5jb2RlciA8
PCBzY3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVuRGVwdGggPDwgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNj
cmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBzY3JlZW5TdXBw
b3J0c0hpZ2hEeW5hbWljUmFuZ2U7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgZW5jb2RlciA8
PCBkaXNwbGF5TWFzayA8PCBncHVJRDsKKyNlbmRpZgogCiAgICAgaWYgKGNvbG9yU3BhY2UpIHsK
ICAgICAgICAgLy8gVHJ5IHRvIGVuY29kZSB0aGUgbmFtZS4KQEAgLTE2NCw2ICsxNjcsNyBAQCBP
cHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoCiAgICAgaWYgKCFzY3JlZW5T
dXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
KyNpZiBQTEFURk9STShNQUMpCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGRpc3BsYXlNYXNrOwog
ICAgIGRlY29kZXIgPj4gZGlzcGxheU1hc2s7CiAgICAgaWYgKCFkaXNwbGF5TWFzaykKQEAgLTE3
Myw3ICsxNzcsOCBAQCBPcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoCiAg
ICAgZGVjb2RlciA+PiBncHVJRDsKICAgICBpZiAoIWdwdUlEKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgIAorI2VuZGlmCisKICAgICBFbmNvZGVkQ29sb3JTcGFjZURhdGFUeXBl
IGRhdGFUeXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGRhdGFUeXBlKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTIwNSw5ICsyMTAsMjEgQEAgT3B0aW9uYWw8U2Ny
ZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAogICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
eyB7IFdURk1vdmUoKnNjcmVlbkF2YWlsYWJsZVJlY3QpLCBXVEZNb3ZlKCpzY3JlZW5SZWN0KSwg
V1RGTW92ZShjZ0NvbG9yU3BhY2UpLCBXVEZNb3ZlKCpzY3JlZW5EZXB0aCksIFdURk1vdmUoKnNj
cmVlbkRlcHRoUGVyQ29tcG9uZW50KSwgV1RGTW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKSwgV1RGTW92ZSgqc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMpLCBXVEZNb3ZlKCpzY3JlZW5J
c01vbm9jaHJvbWUpLCBXVEZNb3ZlKCpzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpLCBX
VEZNb3ZlKCpkaXNwbGF5TWFzayksIFdURk1vdmUoKmdwdUlEKSB9IH07CisgICAgcmV0dXJuIHsg
eworICAgICAgICBXVEZNb3ZlKCpzY3JlZW5BdmFpbGFibGVSZWN0KSwKKyAgICAgICAgV1RGTW92
ZSgqc2NyZWVuUmVjdCksCisgICAgICAgIFdURk1vdmUoY2dDb2xvclNwYWNlKSwKKyAgICAgICAg
V1RGTW92ZSgqc2NyZWVuRGVwdGgpLAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNv
bXBvbmVudCksCisgICAgICAgIFdURk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciks
CisgICAgICAgIFdURk1vdmUoKnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKSwKKyAgICAgICAgV1RG
TW92ZSgqc2NyZWVuSXNNb25vY2hyb21lKSwKKyAgICAgICAgV1RGTW92ZSgqc2NyZWVuU3VwcG9y
dHNIaWdoRHluYW1pY1JhbmdlKSwKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIFdURk1vdmUo
KmRpc3BsYXlNYXNrKSwKKyAgICAgICAgV1RGTW92ZSgqZ3B1SUQpCisjZW5kaWYKKyAgICB9IH07
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5J
T1MubW0JKHJldmlzaW9uIDI1OTAxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVNjcmVlbklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBv
cnQgIkludFJlY3QuaCIKKyNpbXBvcnQgIlNjcmVlblByb3BlcnRpZXMuaCIKICNpbXBvcnQgIldB
S1dpbmRvdy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAjaW1wb3J0IDxwYWwvY29jb2EvTWVkaWFU
b29sYm94U29mdExpbmsuaD4KQEAgLTU5LDE2ICs2MCwyOCBAQCBpbnQgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQoV2lkZ2V0KikKIAogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KikKIHsK
KyAgICBhdXRvIHYgPSBzY3JlZW5EYXRhKHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSk7CisgICAg
aWYgKHYuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPnNjcmVlbklzTW9ub2Nocm9tZTsK
KyAgICAKICAgICByZXR1cm4gUEFMOjpzb2Z0TGlua1VJS2l0VUlBY2Nlc3NpYmlsaXR5SXNHcmF5
c2NhbGVFbmFibGVkKCk7CiB9CiAKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKQogewor
ICAgIGF1dG8gdiA9IHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKTsKKyAgICBp
ZiAodi5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuSGFzSW52ZXJ0ZWRDb2xv
cnM7CisgICAgCiAgICAgcmV0dXJuIFBBTDo6c29mdExpbmtVSUtpdFVJQWNjZXNzaWJpbGl0eUlz
SW52ZXJ0Q29sb3JzRW5hYmxlZCgpOwogfQogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRD
b2xvcihXaWRnZXQqKQogeworICAgIGF1dG8gdiA9IHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRp
c3BsYXlJRCgpKTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2Ny
ZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOworCiAgICAgcmV0dXJuIE1HR2V0Qm9vbEFuc3dlcihr
TUdRSGFzRXh0ZW5kZWRDb2xvckRpc3BsYXkpOwogfQogCkBAIC0xNDEsNiArMTU0LDExIEBAIEZs
b2F0U2l6ZSBzY3JlZW5TaXplKCkKIHsKICAgICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHko
KSAmJiBbW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIF9p
c0NsYXNzaWNdKQogICAgICAgICByZXR1cm4geyAzMjAsIDQ4MCB9OworCisgICAgYXV0byB2ID0g
c2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhhc1ZhbHVl
KCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5SZWN0LnNpemUoKTsKKwogICAgIHJldHVybiBG
bG9hdFNpemUoW1tQQUw6OmdldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXSBfcmVmZXJlbmNl
Qm91bmRzXS5zaXplKTsKIH0KIApAQCAtMTQ4LDYgKzE2NiwxMSBAQCBGbG9hdFNpemUgYXZhaWxh
YmxlU2NyZWVuU2l6ZSgpCiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmlsaXR5KCkgJiYg
W1tQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFz
c2ljXSkKICAgICAgICAgcmV0dXJuIHsgMzIwLCA0ODAgfTsKKworICAgIGF1dG8gdiA9IHNjcmVl
bkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQor
ICAgICAgICByZXR1cm4gdi0+c2NyZWVuQXZhaWxhYmxlUmVjdC5zaXplKCk7CisKICAgICByZXR1
cm4gRmxvYXRTaXplKFtQQUw6OmdldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXS5ib3VuZHMu
c2l6ZSk7CiB9CiAKQEAgLTE2OCw2ICsxOTEsMzQgQEAgZmxvYXQgc2NyZWVuU2NhbGVGYWN0b3Io
VUlTY3JlZW4gKnNjcmVlbgogICAgIHJldHVybiBzY3JlZW4uc2NhbGU7CiB9CiAKK1NjcmVlblBy
b3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMoKQoreworICAgIFNjcmVlblByb3BlcnRp
ZXMgc2NyZWVuUHJvcGVydGllczsKKworICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCA9
IDA7CisKKyAgICBmb3IgKFVJU2NyZWVuICpzY3JlZW4gaW4gW1BBTDo6Z2V0VUlTY3JlZW5DbGFz
cygpIHNjcmVlbnNdKSB7CisgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0ID0g
c2NyZWVuLmJvdW5kczsKKyAgICAgICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5zZXRZKE5TTWF4WShz
Y3JlZW4uYm91bmRzKSAtIChzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIHNjcmVlbkF2YWlsYWJs
ZVJlY3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAorICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9
IHNjcmVlbi5fcmVmZXJlbmNlQm91bmRzOworICAgICAgICAKKyAgICAgICAgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobnVsbHB0cik7Cisg
ICAgICAgIAorICAgICAgICBpbnQgc2NyZWVuRGVwdGggPSBXZWJDb3JlOjpzY3JlZW5EZXB0aChu
dWxscHRyKTsKKyAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50ID0gV2ViQ29yZTo6
c2NyZWVuRGVwdGhQZXJDb21wb25lbnQobnVsbHB0cik7CisgICAgICAgIGJvb2wgc2NyZWVuU3Vw
cG9ydHNFeHRlbmRlZENvbG9yID0gV2ViQ29yZTo6c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
KG51bGxwdHIpOworICAgICAgICBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzID0gV2ViQ29y
ZTo6c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKKyAgICAgICAgYm9vbCBzY3JlZW5Jc01vbm9j
aHJvbWUgPSBXZWJDb3JlOjpzY3JlZW5Jc01vbm9jaHJvbWUobnVsbHB0cik7CisKKyAgICAgICAg
c2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldCgrK2Rpc3BsYXlJRCwgU2NyZWVuRGF0
YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRl
cHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
LCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2NyZWVuSXNNb25vY2hyb21lIH0pOworICAgICAg
ICAKKyAgICAgICAgaWYgKHNjcmVlbiA9PSBbUEFMOjpnZXRVSVNjcmVlbkNsYXNzKCkgbWFpblNj
cmVlbl0pCisgICAgICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQgPSBk
aXNwbGF5SUQ7CisgICAgfQorICAgIAorICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVl
bk1hYy5tbQkocmV2aXNpb24gMjU5MDE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTcgKzEwMCw2IEBA
IHN0YXRpYyBOU1NjcmVlbiAqc2NyZWVuKFdpZGdldCogd2lkZ2V0KQogICAgIHJldHVybiBzY3Jl
ZW4oZGlzcGxheUlEKHdpZGdldCkpOwogfQogCi1zdGF0aWMgU2NyZWVuUHJvcGVydGllcyYgc2Ny
ZWVuUHJvcGVydGllcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNjcmVlblByb3Bl
cnRpZXM+IHNjcmVlblByb3BlcnRpZXM7Ci0gICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXM7Ci19
Ci0KLVBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKQotewotICAgIHJl
dHVybiBzY3JlZW5Qcm9wZXJ0aWVzKCkucHJpbWFyeURpc3BsYXlJRDsKLX0KLQogU2NyZWVuUHJv
cGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcygpCiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nl
c3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2Vy
dmVyKSk7CkBAIC0xNTEsNjAgKzE0MCw0MiBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3Jl
ZW5Qcm9wZXJ0aWVzCiAgICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXM7CiB9CiAKLXZvaWQgc2V0
U2NyZWVuUHJvcGVydGllcyhjb25zdCBTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQotewot
ICAgIHNjcmVlblByb3BlcnRpZXMoKSA9IHByb3BlcnRpZXM7Ci19Ci0KIHZvaWQgc2V0U2hvdWxk
T3ZlcnJpZGVTY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoYm9vbCBzaG91bGRPdmVycmlk
ZSwgYm9vbCBzdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpCiB7CiAgICAgaWYgKFBBTDo6aXNNZWRp
YVRvb2xib3hGcmFtZXdvcmtBdmFpbGFibGUoKSAmJiBQQUw6OmNhbkxvYWRfTWVkaWFUb29sYm94
X01UT3ZlcnJpZGVTaG91bGRQbGF5SERSVmlkZW8oKSkKICAgICAgICAgUEFMOjpzb2Z0TGlua19N
ZWRpYVRvb2xib3hfTVRPdmVycmlkZVNob3VsZFBsYXlIRFJWaWRlbyhzaG91bGRPdmVycmlkZSwg
c3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlKTsKIH0KIAotc3RhdGljIFNjcmVlbkRhdGEgc2NyZWVu
RGF0YShQbGF0Zm9ybURpc3BsYXlJRCBzY3JlZW5kaXNwbGF5SUQpCi17Ci0gICAgUkVMRUFTRV9B
U1NFUlQoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSk7Ci0KLSAg
ICAvLyBSZXR1cm4gcHJvcGVydHkgb2YgdGhlIGZpcnN0IHNjcmVlbiBpZiB0aGUgc2NyZWVuIGlz
IG5vdCBmb3VuZCBpbiB0aGUgbWFwLgotICAgIGF1dG8gZGlzcGxheUlEID0gc2NyZWVuZGlzcGxh
eUlEID8gc2NyZWVuZGlzcGxheUlEIDogcHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpOwotICAgIGlm
IChkaXNwbGF5SUQpIHsKLSAgICAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzRm9yRGlzcGxheSA9
IHNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmZpbmQoZGlzcGxheUlEKTsKLSAgICAg
ICAgaWYgKHNjcmVlblByb3BlcnRpZXNGb3JEaXNwbGF5ICE9IHNjcmVlblByb3BlcnRpZXMoKS5z
Y3JlZW5EYXRhTWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXNG
b3JEaXNwbGF5LT52YWx1ZTsKLSAgICB9Ci0KLSAgICAvLyBMYXN0IHJlc29ydDogdXNlIHRoZSBm
aXJzdCBpdGVtIGluIHRoZSBzY3JlZW4gbGlzdC4KLSAgICByZXR1cm4gc2NyZWVuUHJvcGVydGll
cygpLnNjcmVlbkRhdGFNYXAuYmVnaW4oKS0+dmFsdWU7Ci19Ci0KIHVpbnQzMl90IHByaW1hcnlP
cGVuR0xEaXNwbGF5TWFzaygpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVu
RGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKHByaW1hcnlTY3Jl
ZW5EaXNwbGF5SUQoKSkuZGlzcGxheU1hc2s7Ci0gICAgCisgICAgYXV0byB2ID0gc2NyZWVuRGF0
YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpCisgICAg
ICAgIHJldHVybiB2LT5kaXNwbGF5TWFzazsKKwogICAgIHJldHVybiAwOwogfQogCiB1aW50MzJf
dCBkaXNwbGF5TWFza0ZvckRpc3BsYXkoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewot
ICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gc2NyZWVuRGF0YShkaXNwbGF5SUQpLmRpc3BsYXlNYXNrOwotICAgIAorICAg
IGF1dG8gdiA9IHNjcmVlbkRhdGEoZGlzcGxheUlEKTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQor
ICAgICAgICByZXR1cm4gdi0+ZGlzcGxheU1hc2s7CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gMDsKIH0KIAogSU9SZWdpc3RyeUdQVUlEIHByaW1hcnlHUFVJRCgpCiB7
Ci0gICAgcmV0dXJuIGdwdUlERm9yRGlzcGxheShzY3JlZW5Qcm9wZXJ0aWVzKCkucHJpbWFyeURp
c3BsYXlJRCk7CisgICAgcmV0dXJuIGdwdUlERm9yRGlzcGxheShwcmltYXJ5U2NyZWVuRGlzcGxh
eUlEKCkpOwogfQogCiBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SURGb3JEaXNwbGF5KFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCkKIHsKICNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJf
QkxPQ0tJTkcpCi0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKGRpc3BsYXlJRCkuZ3B1SUQ7CisgICAg
YXV0byB2ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpCisg
ICAgICAgIHJldHVybiB2LT5ncHVJRDsKICNlbHNlCiAgICAgcmV0dXJuIGdwdUlERm9yRGlzcGxh
eU1hc2soQ0dEaXNwbGF5SURUb09wZW5HTERpc3BsYXlNYXNrKGRpc3BsYXlJRCkpOwogI2VuZGlm
CkBAIC0yNDYsMTUgKzIxNywxNiBAQCBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SURGb3JEaXNwbGF5TWFz
ayhHTHVpCiAgICAgcmV0dXJuIChJT1JlZ2lzdHJ5R1BVSUQpIGdwdUlESGlnaCA8PCAzMiB8IGdw
dUlETG93OwogfQogCi1zdGF0aWMgU2NyZWVuRGF0YSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKFdpZGdl
dCogd2lkZ2V0KQorc3RhdGljIE9wdGlvbmFsPGNvbnN0IFNjcmVlbkRhdGEmPiBnZXRTY3JlZW5Q
cm9wZXJ0aWVzKFdpZGdldCogd2lkZ2V0KQogewogICAgIHJldHVybiBzY3JlZW5EYXRhKGRpc3Bs
YXlJRCh3aWRnZXQpKTsKIH0KIAogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRn
ZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuSXNN
b25vY2hyb21lOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAg
ICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuSXNNb25vY2hyb21l
OwogCiAgICAgLy8gVGhpcyBpcyBhIHN5c3RlbS13aWRlIGFjY2Vzc2liaWxpdHkgc2V0dGluZywg
c2FtZSBvbiBhbGwgc2NyZWVucy4KICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9j
ZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKQEAgLTI2Myw4
ICsyMzUsOSBAQCBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKIAogYm9v
bCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVz
KCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKHBy
aW1hcnlTY3JlZW5EaXNwbGF5SUQoKSkuc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnM7CisgICAgYXV0
byB2ID0gc2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhh
c1ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5IYXNJbnZlcnRlZENvbG9yczsKIAog
ICAgIC8vIFRoaXMgaXMgYSBzeXN0ZW0td2lkZSBhY2Nlc3NpYmlsaXR5IHNldHRpbmcsIHNhbWUg
b24gYWxsIHNjcmVlbnMuCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7CkBAIC0yNzMsOCArMjQ2
LDkgQEAgYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiAKIGludCBzY3JlZW5EZXB0aChX
aWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRh
TWFwLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIHNjcmVlbkRlcHRoID0gZ2V0U2NyZWVuUHJv
cGVydGllcyh3aWRnZXQpLnNjcmVlbkRlcHRoOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3Bl
cnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKSB7CisgICAgICAgIGF1dG8gc2Ny
ZWVuRGVwdGggPSB2LT5zY3JlZW5EZXB0aDsKICAgICAgICAgQVNTRVJUKHNjcmVlbkRlcHRoKTsK
ICAgICAgICAgcmV0dXJuIHNjcmVlbkRlcHRoOwogICAgIH0KQEAgLTI4NSw4ICsyNTksOSBAQCBp
bnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCiAKIGludCBzY3JlZW5EZXB0aFBlckNvbXBv
bmVudChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3Jl
ZW5EYXRhTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGRlcHRoUGVyQ29tcG9uZW50ID0g
Z2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50OworICAg
IGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1
ZSgpKSB7CisgICAgICAgIGF1dG8gZGVwdGhQZXJDb21wb25lbnQgPSB2LT5zY3JlZW5EZXB0aFBl
ckNvbXBvbmVudDsKICAgICAgICAgQVNTRVJUKGRlcHRoUGVyQ29tcG9uZW50KTsKICAgICAgICAg
cmV0dXJuIGRlcHRoUGVyQ29tcG9uZW50OwogICAgIH0KQEAgLTI5Nyw4ICsyNzIsOSBAQCBpbnQg
c2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnCiAKIEZsb2F0UmVjdCBzY3JlZW5S
ZWN0Rm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7Ci0gICAgaWYgKCFz
Y3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0
byBzY3JlZW5SZWN0ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpLnNjcmVlblJlY3Q7CisgICAgYXV0
byB2ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpIHsKKyAg
ICAgICAgYXV0byBzY3JlZW5SZWN0ID0gdi0+c2NyZWVuUmVjdDsKICAgICAgICAgQVNTRVJUKCFz
Y3JlZW5SZWN0LmlzRW1wdHkoKSk7CiAgICAgICAgIHJldHVybiBzY3JlZW5SZWN0OwogICAgIH0K
QEAgLTMxNCw4ICsyOTAsOSBAQCBGbG9hdFJlY3Qgc2NyZWVuUmVjdEZvclByaW1hcnlTY3JlZW4o
KQogCiBGbG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNj
cmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KS5zY3JlZW5SZWN0OworICAgIGF1dG8gdiA9IGdl
dFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAg
ICByZXR1cm4gdi0+c2NyZWVuUmVjdDsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwogICAg
IHJldHVybiB0b1VzZXJTcGFjZShbc2NyZWVuKHdpZGdldCkgZnJhbWVdLCB3aW5kb3cod2lkZ2V0
KSk7CkBAIC0zMjMsOCArMzAwLDkgQEAgRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRn
ZXQpCiAKIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lkZ2V0KQogewot
ICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlbkF2YWlsYWJsZVJl
Y3Q7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOworICAgIGlmICh2
Lmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5BdmFpbGFibGVSZWN0OwogCiAg
ICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVu
aWNhdGVXaXRoV2luZG93U2VydmVyKSk7CiAgICAgcmV0dXJuIHRvVXNlclNwYWNlKFtzY3JlZW4o
d2lkZ2V0KSB2aXNpYmxlRnJhbWVdLCB3aW5kb3cod2lkZ2V0KSk7CkBAIC0zNDgsOCArMzI2LDkg
QEAgTlNTY3JlZW4gKnNjcmVlbihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbAogCiBDR0NvbG9yU3Bh
Y2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVl
blByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGdl
dFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KS5jb2xvclNwYWNlLmdldCgpOworICAgIGF1dG8gdiA9
IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAg
ICAgICByZXR1cm4gdi0+Y29sb3JTcGFjZS5nZXQoKTsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZl
cikpOwogICAgIHJldHVybiBzY3JlZW4od2lkZ2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZTsK
QEAgLTM1Nyw4ICszMzYsOSBAQCBDR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRn
ZXQqCiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0KQog
ewotICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlblN1cHBvcnRz
RXh0ZW5kZWRDb2xvcjsKKyAgICBhdXRvIHYgPSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCk7
CisgICAgaWYgKHYuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPnNjcmVlblN1cHBvcnRz
RXh0ZW5kZWRDb2xvcjsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwogICAgIHJldHVybiBb
c2NyZWVuKHdpZGdldCkgY2FuUmVwcmVzZW50RGlzcGxheUdhbXV0Ok5TRGlzcGxheUdhbXV0UDNd
OwpAQCAtMzY2LDggKzM0Niw5IEBAIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdp
ZGdldCoKIAogYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZ2V0KiB3aWRn
ZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuU3Vw
cG9ydHNIaWdoRHluYW1pY1JhbmdlOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMo
d2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVu
U3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlOwogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7CiAj
aWYgVVNFKE1FRElBVE9PTEJPWCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAJKHJldmlzaW9uIDI1OTAxNykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI2NCw3ICs1MjY0LDcgQEAgdm9pZCBJbnRlcm5hbHM6
Om5vdGlmeVJlc291cmNlTG9hZE9ic2VydgogCiB1bnNpZ25lZCBJbnRlcm5hbHM6OnByaW1hcnlT
Y3JlZW5EaXNwbGF5SUQoKQogewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICByZXR1cm4gV2ViQ29yZTo6cHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpOwogI2Vsc2UK
ICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAz
LTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBBZG9wdCBTY3JlZW5Qcm9wZXJ0aWVzIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSByZWxldmVudCBtYWNPUyBwbGF0Zm9ybSBjb2Rl
IGNyb3NzIHBsYXRmb3JtLgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRTY3JlZW5Qcm9wZXJ0aWVzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisKIDIwMjAtMDMtMjUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIEVsZW1lbnQgY29udGV4dCBjaGFyYWN0ZXIgcmVjdHMgbWF5IGJl
IGluIHdyb25nIGNvb3JkaW5hdGUgc3lzdGVtCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU5
MDE3KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSwxMCArMTQxLDEwIEBAIHZvaWQgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVu
Y29kZXIgPDwgbWVkaWFNSU1FVHlwZXM7CisgICAgZW5jb2RlciA8PCBzY3JlZW5Qcm9wZXJ0aWVz
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZW5jb2RlciA8PCBzY3JlZW5Qcm9w
ZXJ0aWVzOwogICAgIGVuY29kZXIgPDwgdXNlT3ZlcmxheVNjcm9sbGJhcnM7CiAjZW5kaWYKIApA
QCAtMzg5LDE0ICszODksMTUgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5tZWRpYU1JTUVUeXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogCi0j
aWYgUExBVEZPUk0oTUFDKQogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmVlblByb3BlcnRpZXM+
IHNjcmVlblByb3BlcnRpZXM7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5Qcm9wZXJ0aWVzOwogICAg
IGlmICghc2NyZWVuUHJvcGVydGllcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFt
ZXRlcnMuc2NyZWVuUHJvcGVydGllcyA9IFdURk1vdmUoKnNjcmVlblByb3BlcnRpZXMpOworI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnVzZU92ZXJsYXlTY3JvbGxiYXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICsz
OCw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgotI2VuZGlmCi0KLSNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0
Lmg+CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQpAQCAtMTgxLDYgKzE3OCw3IEBAIHN0cnVjdCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFZlY3RvcjxTdHJpbmc+IG1lZGlhTUlNRVR5cGVzOworICAgIFdlYkNvcmU6OlNjcmVlblByb3Bl
cnRpZXMgc2NyZWVuUHJvcGVydGllczsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xODgsNyArMTg2LDYg
QEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyBzY3JlZW5Qcm9wZXJ0
aWVzOwogICAgIGJvb2wgdXNlT3ZlcmxheVNjcm9sbGJhcnMgeyB0cnVlIH07CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNp
b24gMjU5MDE3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDggQEAKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogI2luY2x1ZGUgIlZlcnNpb25DaGVja3MuaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dE
aXJlY3REaXNwbGF5Lmg+CisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHRGlzcGxheUNvbmZpZ3Vy
YXRpb24uaD4KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNDc0LDcgKzQ3Niw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEFwcGxpY2F0aW9uSXNBY3QKIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2NyZWVuUHJvcGVydGllc1N0YXRlQ2hhbmdlZCgpCiB7Ci0jaWYgUExBVEZPUk0o
TUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGF1dG8gc2NyZWVuUHJvcGVydGllcyA9IFdl
YkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCk7CiAgICAgc2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRTY3JlZW5Qcm9wZXJ0aWVzKHNjcmVlblByb3BlcnRp
ZXMpKTsKICNlbmRpZgpAQCAtODk2LDcgKzg5OCw3IEBAIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+
IFdlYlByb2Nlc3NQb29sOjoKICAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3ByZXdhcm1lZFBy
b2Nlc3MsIG51bGxwdHIpOwogfQogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENP
Q09BKQogc3RhdGljIHZvaWQgZGlzcGxheVJlY29uZmlndXJhdGlvbkNhbGxCYWNrKENHRGlyZWN0
RGlzcGxheUlEIGRpc3BsYXksIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyBmbGFncywgdm9p
ZCAqdXNlckluZm8pCiB7CiAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzID0gV2ViQ29yZTo6Y29s
bGVjdFNjcmVlblByb3BlcnRpZXMoKTsKQEAgLTEwOTYsNyArMTA5OCw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmluaXRpYWxpemVOZXdXZWJQcm8KICAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3Rvcjo6c2luZ2xldG9uKCk7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICByZWdpc3RlckRpc3BsYXlDb25maWd1cmF0aW9uQ2FsbGJhY2soKTsK
ICNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zNTMsMTAgKzM1MywxMCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRp
YWxpemVXCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgcGFyYW1ldGVycy5zaG91bGRMb2dVc2VySW50ZXJhY3Rpb24gPSBb
ZGVmYXVsdHMgYm9vbEZvcktleTpXZWJLaXRMb2dDb29raWVJbmZvcm1hdGlvbkRlZmF1bHRzS2V5
XTsKICNlbmRpZgotICAgIAotI2lmIFBMQVRGT1JNKE1BQykKKwogICAgIGF1dG8gc2NyZWVuUHJv
cGVydGllcyA9IFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzKCk7CiAgICAgcGFyYW1l
dGVycy5zY3JlZW5Qcm9wZXJ0aWVzID0gV1RGTW92ZShzY3JlZW5Qcm9wZXJ0aWVzKTsKKyNpZiBQ
TEFURk9STShNQUMpCiAgICAgcGFyYW1ldGVycy51c2VPdmVybGF5U2Nyb2xsYmFycyA9IChbTlNT
Y3JvbGxlciBwcmVmZXJyZWRTY3JvbGxlclN0eWxlXSA9PSBOU1Njcm9sbGVyU3R5bGVPdmVybGF5
KTsKICNlbmRpZgogICAgIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgotI2lmIFBMQVRGT1JN
KE1BQykKLSNpbmNsdWRlIDxXZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KLSNlbmRpZgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9U
aW1lci5oPgogI2luY2x1ZGUgPHBhbC9IeXN0ZXJlc2lzQWN0aXZpdHkuaD4KQEAgLTYxLDYgKzU4
LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nSGFzaC5oPgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCisjaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+CiAjaW5jbHVk
ZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgog
I2VuZGlmCkBAIC00NzMsMTYgKzQ3MSwxNCBAQCBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudGVk
IGluIGdlbmVyYXRlZCBXZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlk
UmVjZWl2ZVdlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwogCi0jaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgc2V0U2NyZWVuUHJvcGVydGllcyhjb25z
dCBXZWJDb3JlOjpTY3JlZW5Qcm9wZXJ0aWVzJik7Ci0jaWYgRU5BQkxFKFdFQlBST0NFU1NfV0lO
RE9XU0VSVkVSX0JMT0NLSU5HKQorI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NF
U1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQogICAgIHZvaWQgc2Nyb2xsZXJTdHlsZVByZWZlcmVu
Y2VDaGFuZ2VkKGJvb2wgdXNlT3ZlcmxheVNjcm9sbGJhcnMpOwogICAgIHZvaWQgZGlzcGxheUNv
bmZpZ3VyYXRpb25DaGFuZ2VkKENHRGlyZWN0RGlzcGxheUlELCBDR0Rpc3BsYXlDaGFuZ2VTdW1t
YXJ5RmxhZ3MpOwogICAgIHZvaWQgZGlzcGxheVdhc1JlZnJlc2hlZChDR0RpcmVjdERpc3BsYXlJ
RCk7CiAjZW5kaWYKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBzZXRT
Y3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlNjcmVlblByb3BlcnRpZXMmKTsKICAgICB2
b2lkIHVwZGF0ZVByb2Nlc3NOYW1lKCk7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI1OTAxNykK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTMsMTQgKzExMywxNCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIE5vCiAgICAgTWFya0lzTm9Mb25nZXJQcmV3YXJtZWQoKQogICAgIEdldEFj
dGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcoKSAtPiAoVmVjdG9yPFN0cmluZz4gYWN0aXZlT3Jp
Z2lucykgQXN5bmMKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBTZXRTY3JlZW5Qcm9wZXJ0aWVzKHN0cnVjdCBXZWJDb3JlOjpTY3JlZW5Qcm9wZXJ0aWVzIHNj
cmVlblByb3BlcnRpZXMpCi0jaWYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NL
SU5HKQorI2VuZGlmCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5E
T1dTRVJWRVJfQkxPQ0tJTkcpCiAgICAgU2Nyb2xsZXJTdHlsZVByZWZlcmVuY2VDaGFuZ2VkKGJv
b2wgdXNlT3ZlbGF5U2Nyb2xsYmFycykKICAgICBEaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWQo
Q0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheUlELCBDR0Rpc3BsYXlDaGFuZ2VTdW1tYXJ5RmxhZ3Mg
ZmxhZ3MpCiAgICAgRGlzcGxheVdhc1JlZnJlc2hlZCh1aW50MzJfdCBkaXNwbGF5SUQpCiAjZW5k
aWYKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQogICAgIEJhY2tsaWdodExldmVsRGlkQ2hhbmdlKGZsb2F0IGJhY2tsaWdodExldmVs
KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsMTMgKzI0NSwx
MiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAgICAgICAgIH0p
OwogICAgIH0KIAotI2lmIFBMQVRGT1JNKE1BQykKICAgICBXZWJDb3JlOjpzZXRTY3JlZW5Qcm9w
ZXJ0aWVzKHBhcmFtZXRlcnMuc2NyZWVuUHJvcGVydGllcyk7Ci0jaWYgRU5BQkxFKFdFQlBST0NF
U1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
V0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCiAgICAgc2Nyb2xsZXJTdHlsZVByZWZl
cmVuY2VDaGFuZ2VkKHBhcmFtZXRlcnMudXNlT3ZlcmxheVNjcm9sbGJhcnMpOwogI2VuZGlmCi0j
ZW5kaWYKLSAgICAKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAocGFyYW1ldGVycy5jb21w
aWxlclNlcnZpY2VFeHRlbnNpb25IYW5kbGUpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWVQZXJtYW5lbnRseSgqcGFyYW1ldGVycy5jb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5k
bGUpOwpAQCAtOTYwLDE1ICs5NTksMTcgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZXZva2VBY2Nlc3NU
b0Fzc2V0U2VydgogfQogI2VuZGlmCiAKLSNpZiBQTEFURk9STShNQUMpCiB2b2lkIFdlYlByb2Nl
c3M6OnNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgU2NyZWVuUHJvcGVydGllcyYgcHJvcGVydGll
cykKIHsKICAgICBXZWJDb3JlOjpzZXRTY3JlZW5Qcm9wZXJ0aWVzKHByb3BlcnRpZXMpOwogICAg
IGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkKICAgICAgICAgcGFnZS0+c2Ny
ZWVuUHJvcGVydGllc0RpZENoYW5nZSgpOworI2lmIFBMQVRGT1JNKE1BQykKICAgICB1cGRhdGVQ
YWdlU2NyZWVuUHJvcGVydGllcygpOworI2VuZGlmCiB9CiAKKyNpZiBQTEFURk9STShNQUMpCiB2
b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZVBhZ2VTY3JlZW5Qcm9wZXJ0aWVzKCkKIHsKICAgICBpZiAo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhX
aW5kb3dTZXJ2ZXIpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394610</attachid>
            <date>2020-03-26 08:16:27 -0700</date>
            <delta_ts>2020-03-26 10:04:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191767-20200326081626.patch</filename>
            <type>text/plain</type>
            <size>32031</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1OTAxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTAzLTI1ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBZG9wdCBTY3Jl
ZW5Qcm9wZXJ0aWVzIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkxNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgT24gbWFjT1MsIHRoZSBTY3JlZW5Qcm9wZXJ0aWVzIGNsYXNzIGlzIHVzZWQg
dG8gY29sbGVjdCBzY3JlZW4gcHJvcGVydGllcyBpbiB0aGUgVUkgcHJvY2VzcworICAgICAgICBh
bmQgZm9yd2FyZCB0aGVzZSB0byB0aGUgV2ViIHByb2Nlc3MuIFdlIHNob3VsZCBhbHNvIGRvIHRo
aXMgb24gaU9TLCBpbiBvcmRlciB0byBiZSBhYmxlCisgICAgICAgIHRvIGJsb2NrIGZyb250Ym9h
cmQgc2VydmljZXMuCisgCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtU2NyZWVuLmg6CisgICAgICAgICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmVlbkRhdGE6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1BsYXRm
b3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuSXNNb25vY2hyb21lKToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKToKKyAgICAgICAgKFdl
YkNvcmU6OnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpj
b2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6cHJpbWFyeU9wZW5HTERpc3BsYXlNYXNr
KToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BsYXlNYXNrRm9yRGlzcGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpwcmltYXJ5R1BVSUQpOgorICAgICAgICAoV2ViQ29yZTo6Z3B1SURGb3JEaXNwbGF5
KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZSk6CisgICAgICAgIChXZWJD
b3JlOjpzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5E
ZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JlZW5SZWN0Rm9yRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkF2YWlsYWJsZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuUHJvcGVy
dGllcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwcmltYXJ5U2NyZWVuRGlzcGxheUlE
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNldFNjcmVlblByb3BlcnRpZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpnZXRTY3JlZW5Qcm9wZXJ0aWVzKTogRGVsZXRlZC4KKwogMjAyMC0wMy0yNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGbGFzaGluZyBh
bmQgcGFydGx5IHZpc2libGUgZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAy
NTkwMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTc3NSw2ICsxNzc1LDcgQEAgcGxhdGZvcm0vUGFzdGVib2FyZC5jcHAKIHBsYXRmb3JtL1Bhc3Rl
Ym9hcmRDdXN0b21EYXRhLmNwcAogcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuY3BwCiBw
bGF0Zm9ybS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuY3BwCitwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVl
bi5jcHAKIHBsYXRmb3JtL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAogcGxh
dGZvcm0vUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5jcHAKIHBsYXRmb3JtL1BsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTEzNTgxLDYgKzEzNTgxLDcgQEAKIAkJQzEwNURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRl
eHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRl
eHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxMUE5
RUNEMjE0MDNBNUMwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3dpdGNoaW5nR1BVQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMx
MUE5RUQyMjE0MDU3OEIwMENGQjIwQSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU3dpdGNoaW5nR1BVQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzEzNzg0NkIyNDJCRUVCQTAwRTg2RkE4IC8qIFBsYXRmb3JtU2NyZWVuLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtU2NyZWVuLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE0OTM4MDUyMjM0MjcxOTAwMENENzA3IC8q
IFNwZWVjaFN5bnRoZXNpc0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVlY2hTeW50aGVzaXND
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzE2OTJERDEyM0QyM0FCRDAw
NkU4OEY3IC8qIFN5c3RlbUJhdHRlcnkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTeXN0ZW1C
YXR0ZXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTY5MkRENDIzRDIzQUUw
MDA2RTg4RjcgLyogU3lzdGVtQmF0dGVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1CYXR0ZXJ5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjE4Nyw2ICsyNjE4OCw3IEBACiAJ
CQkJOTM1QzQ3NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oICov
LAogCQkJCTkzNUM0NzY3MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCAq
LywKIAkJCQlDNUJBQzE2RjE0RTMwRTQ3MDAwMDg4MzcgLyogUGxhdGZvcm1QYXN0ZWJvYXJkLmgg
Ki8sCisJCQkJQzEzNzg0NkIyNDJCRUVCQTAwRTg2RkE4IC8qIFBsYXRmb3JtU2NyZWVuLmNwcCAq
LywKIAkJCQlCQ0VDMDFENjBDMjc0RUI0MDA5RjRFQzkgLyogUGxhdGZvcm1TY3JlZW4uaCAqLywK
IAkJCQkyNTI3Q0M5NTE2QkY5NUREMDA5RERBQzAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNV
dHRlcmFuY2UuY3BwICovLAogCQkJCTI1MjdDQzkxMTZCRjhCQTEwMDlEREFDMCAvKiBQbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1TY3JlZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtU2NyZWVuLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVNjcmVlbi5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKKyNpbmNsdWRlICJTY3JlZW5Qcm9w
ZXJ0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFNjcmVlblByb3BlcnRp
ZXMmIHNjcmVlblByb3BlcnRpZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTY3Jl
ZW5Qcm9wZXJ0aWVzPiBzY3JlZW5Qcm9wZXJ0aWVzOworICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0
aWVzOworfQorCitQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkKK3sK
KyAgICByZXR1cm4gc2NyZWVuUHJvcGVydGllcygpLnByaW1hcnlEaXNwbGF5SUQ7Cit9CisKK3Zv
aWQgc2V0U2NyZWVuUHJvcGVydGllcyhjb25zdCBTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVz
KQoreworICAgIHNjcmVlblByb3BlcnRpZXMoKSA9IHByb3BlcnRpZXM7Cit9CisKK09wdGlvbmFs
PGNvbnN0IFNjcmVlbkRhdGEmPiBzY3JlZW5EYXRhKFBsYXRmb3JtRGlzcGxheUlEIHNjcmVlbmRp
c3BsYXlJRCkKK3sKKyAgICBpZiAoc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgLy8gUmV0dXJuIHBy
b3BlcnR5IG9mIHRoZSBmaXJzdCBzY3JlZW4gaWYgdGhlIHNjcmVlbiBpcyBub3QgZm91bmQgaW4g
dGhlIG1hcC4KKyAgICBhdXRvIGRpc3BsYXlJRCA9IHNjcmVlbmRpc3BsYXlJRCA/IHNjcmVlbmRp
c3BsYXlJRCA6IHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKTsKKyAgICBpZiAoZGlzcGxheUlEKSB7
CisgICAgICAgIGF1dG8gc2NyZWVuUHJvcGVydGllc0ZvckRpc3BsYXkgPSBzY3JlZW5Qcm9wZXJ0
aWVzKCkuc2NyZWVuRGF0YU1hcC5maW5kKGRpc3BsYXlJRCk7CisgICAgICAgIGlmIChzY3JlZW5Q
cm9wZXJ0aWVzRm9yRGlzcGxheSAhPSBzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5l
bmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzRm9yRGlzcGxheS0+dmFs
dWU7CisgICAgfQorCisgICAgLy8gTGFzdCByZXNvcnQ6IHVzZSB0aGUgZmlyc3QgaXRlbSBpbiB0
aGUgc2NyZWVuIGxpc3QuCisgICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRh
TWFwLmJlZ2luKCktPnZhbHVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU2NyZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaAkocmV2aXNpb24gMjU5MDE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCiAjaWYgVVNFKEdMSUIpCiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjZW5kaWYKQEAgLTg1LDkgKzg3LDE1IEBAIGNvbnN0
ZXhwciBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWMKIFdFQkNPUkVfRVhQT1JUIENHQ29s
b3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogPSBudWxscHRyKTsKICNlbmRpZgog
Ci0jaWYgUExBVEZPUk0oTUFDKQogc3RydWN0IFNjcmVlblByb3BlcnRpZXM7Ci0KK3N0cnVjdCBT
Y3JlZW5EYXRhOworICAgIAorV0VCQ09SRV9FWFBPUlQgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0
U2NyZWVuUHJvcGVydGllcygpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0
aWVzKGNvbnN0IFNjcmVlblByb3BlcnRpZXMmKTsKK09wdGlvbmFsPGNvbnN0IFNjcmVlbkRhdGEm
PiBzY3JlZW5EYXRhKFBsYXRmb3JtRGlzcGxheUlEIHNjcmVlbmRpc3BsYXlJRCk7CitXRUJDT1JF
X0VYUE9SVCBQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCk7CisgICAg
CisjaWYgUExBVEZPUk0oTUFDKQogV0VCQ09SRV9FWFBPUlQgUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKE5TU2NyZWVuICopOwogCiBXRUJDT1JFX0VYUE9SVCBOU1NjcmVlbiAqc2NyZWVuKE5T
V2luZG93ICopOwpAQCAtMTAyLDEzICsxMTAsOCBAQCBXRUJDT1JFX0VYUE9SVCBOU1JlY3QgdG9E
ZXZpY2VTcGFjZShjb25zCiAKIE5TUG9pbnQgZmxpcFNjcmVlblBvaW50KGNvbnN0IE5TUG9pbnQm
LCBOU1NjcmVlbiAqKTsKIAotV0VCQ09SRV9FWFBPUlQgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0
U2NyZWVuUHJvcGVydGllcygpOwotV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0
aWVzKGNvbnN0IFNjcmVlblByb3BlcnRpZXMmKTsKLQogV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
aG91bGRPdmVycmlkZVNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShib29sIHNob3VsZE92
ZXJyaWRlLCBib29sIHN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSk7CiAKLVdFQkNPUkVfRVhQT1JU
IFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKTsKLQogdWludDMyX3Qg
cHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCk7CiB1aW50MzJfdCBkaXNwbGF5TWFza0ZvckRpc3Bs
YXkoUGxhdGZvcm1EaXNwbGF5SUQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JlZW5Qcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2NyZWVuUHJvcGVydGllcy5oCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBQTEFURk9STShNQUMpCi0KICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KQEAgLTQ2LDkgKzQ0LDEwIEBAIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBib29s
IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzIHsgZmFsc2UgfTsKICAgICBib29sIHNjcmVlbklzTW9u
b2Nocm9tZSB7IGZhbHNlIH07CiAgICAgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFu
Z2UgeyBmYWxzZSB9OworI2lmIFBMQVRGT1JNKE1BQykKICAgICB1aW50MzJfdCBkaXNwbGF5TWFz
ayB7IDAgfTsKICAgICBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SUQgeyAwIH07Ci0KKyNlbmRpZgogICAg
IGVudW0gRW5jb2RlZENvbG9yU3BhY2VEYXRhVHlwZSB7CiAgICAgICAgIE51bGwsCiAgICAgICAg
IENvbG9yU3BhY2VOYW1lLApAQCAtOTUsNyArOTQsMTEgQEAgT3B0aW9uYWw8U2NyZWVuUHJvcGVy
dGllcz4gU2NyZWVuUHJvcGVydAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2NyZWVu
RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBz
Y3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVu
RGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVl
bkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBzY3JlZW5TdXBwb3J0
c0hpZ2hEeW5hbWljUmFuZ2UgPDwgZGlzcGxheU1hc2sgPDwgZ3B1SUQ7CisgICAgZW5jb2RlciA8
PCBzY3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVuRGVwdGggPDwgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNj
cmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBzY3JlZW5TdXBw
b3J0c0hpZ2hEeW5hbWljUmFuZ2U7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgZW5jb2RlciA8
PCBkaXNwbGF5TWFzayA8PCBncHVJRDsKKyNlbmRpZgogCiAgICAgaWYgKGNvbG9yU3BhY2UpIHsK
ICAgICAgICAgLy8gVHJ5IHRvIGVuY29kZSB0aGUgbmFtZS4KQEAgLTE2NCw2ICsxNjcsNyBAQCBP
cHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoCiAgICAgaWYgKCFzY3JlZW5T
dXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
KyNpZiBQTEFURk9STShNQUMpCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGRpc3BsYXlNYXNrOwog
ICAgIGRlY29kZXIgPj4gZGlzcGxheU1hc2s7CiAgICAgaWYgKCFkaXNwbGF5TWFzaykKQEAgLTE3
Myw3ICsxNzcsOCBAQCBPcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoCiAg
ICAgZGVjb2RlciA+PiBncHVJRDsKICAgICBpZiAoIWdwdUlEKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgIAorI2VuZGlmCisKICAgICBFbmNvZGVkQ29sb3JTcGFjZURhdGFUeXBl
IGRhdGFUeXBlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGRhdGFUeXBlKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTIwNSw5ICsyMTAsMjEgQEAgT3B0aW9uYWw8U2Ny
ZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAogICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
eyB7IFdURk1vdmUoKnNjcmVlbkF2YWlsYWJsZVJlY3QpLCBXVEZNb3ZlKCpzY3JlZW5SZWN0KSwg
V1RGTW92ZShjZ0NvbG9yU3BhY2UpLCBXVEZNb3ZlKCpzY3JlZW5EZXB0aCksIFdURk1vdmUoKnNj
cmVlbkRlcHRoUGVyQ29tcG9uZW50KSwgV1RGTW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKSwgV1RGTW92ZSgqc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMpLCBXVEZNb3ZlKCpzY3JlZW5J
c01vbm9jaHJvbWUpLCBXVEZNb3ZlKCpzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpLCBX
VEZNb3ZlKCpkaXNwbGF5TWFzayksIFdURk1vdmUoKmdwdUlEKSB9IH07CisgICAgcmV0dXJuIHsg
eworICAgICAgICBXVEZNb3ZlKCpzY3JlZW5BdmFpbGFibGVSZWN0KSwKKyAgICAgICAgV1RGTW92
ZSgqc2NyZWVuUmVjdCksCisgICAgICAgIFdURk1vdmUoY2dDb2xvclNwYWNlKSwKKyAgICAgICAg
V1RGTW92ZSgqc2NyZWVuRGVwdGgpLAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNv
bXBvbmVudCksCisgICAgICAgIFdURk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciks
CisgICAgICAgIFdURk1vdmUoKnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKSwKKyAgICAgICAgV1RG
TW92ZSgqc2NyZWVuSXNNb25vY2hyb21lKSwKKyAgICAgICAgV1RGTW92ZSgqc2NyZWVuU3VwcG9y
dHNIaWdoRHluYW1pY1JhbmdlKSwKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIFdURk1vdmUo
KmRpc3BsYXlNYXNrKSwKKyAgICAgICAgV1RGTW92ZSgqZ3B1SUQpCisjZW5kaWYKKyAgICB9IH07
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5J
T1MubW0JKHJldmlzaW9uIDI1OTAxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVNjcmVlbklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKICNpbXBv
cnQgIkludFJlY3QuaCIKKyNpbXBvcnQgIlNjcmVlblByb3BlcnRpZXMuaCIKICNpbXBvcnQgIldB
S1dpbmRvdy5oIgogI2ltcG9ydCAiV2lkZ2V0LmgiCiAjaW1wb3J0IDxwYWwvY29jb2EvTWVkaWFU
b29sYm94U29mdExpbmsuaD4KQEAgLTU5LDE2ICs2MCwyOCBAQCBpbnQgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQoV2lkZ2V0KikKIAogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KikKIHsK
KyAgICBhdXRvIHYgPSBzY3JlZW5EYXRhKHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKSk7CisgICAg
aWYgKHYuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPnNjcmVlbklzTW9ub2Nocm9tZTsK
KyAgICAKICAgICByZXR1cm4gUEFMOjpzb2Z0TGlua1VJS2l0VUlBY2Nlc3NpYmlsaXR5SXNHcmF5
c2NhbGVFbmFibGVkKCk7CiB9CiAKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKQogewor
ICAgIGF1dG8gdiA9IHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKTsKKyAgICBp
ZiAodi5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuSGFzSW52ZXJ0ZWRDb2xv
cnM7CisgICAgCiAgICAgcmV0dXJuIFBBTDo6c29mdExpbmtVSUtpdFVJQWNjZXNzaWJpbGl0eUlz
SW52ZXJ0Q29sb3JzRW5hYmxlZCgpOwogfQogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRD
b2xvcihXaWRnZXQqKQogeworICAgIGF1dG8gdiA9IHNjcmVlbkRhdGEocHJpbWFyeVNjcmVlbkRp
c3BsYXlJRCgpKTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2Ny
ZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yOworCiAgICAgcmV0dXJuIE1HR2V0Qm9vbEFuc3dlcihr
TUdRSGFzRXh0ZW5kZWRDb2xvckRpc3BsYXkpOwogfQogCkBAIC0xNDEsNiArMTU0LDExIEBAIEZs
b2F0U2l6ZSBzY3JlZW5TaXplKCkKIHsKICAgICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHko
KSAmJiBbW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgc2hhcmVkQXBwbGljYXRpb25dIF9p
c0NsYXNzaWNdKQogICAgICAgICByZXR1cm4geyAzMjAsIDQ4MCB9OworCisgICAgYXV0byB2ID0g
c2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhhc1ZhbHVl
KCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5SZWN0LnNpemUoKTsKKwogICAgIHJldHVybiBG
bG9hdFNpemUoW1tQQUw6OmdldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXSBfcmVmZXJlbmNl
Qm91bmRzXS5zaXplKTsKIH0KIApAQCAtMTQ4LDYgKzE2NiwxMSBAQCBGbG9hdFNpemUgYXZhaWxh
YmxlU2NyZWVuU2l6ZSgpCiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmlsaXR5KCkgJiYg
W1tQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIHNoYXJlZEFwcGxpY2F0aW9uXSBfaXNDbGFz
c2ljXSkKICAgICAgICAgcmV0dXJuIHsgMzIwLCA0ODAgfTsKKworICAgIGF1dG8gdiA9IHNjcmVl
bkRhdGEocHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpKTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQor
ICAgICAgICByZXR1cm4gdi0+c2NyZWVuQXZhaWxhYmxlUmVjdC5zaXplKCk7CisKICAgICByZXR1
cm4gRmxvYXRTaXplKFtQQUw6OmdldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXS5ib3VuZHMu
c2l6ZSk7CiB9CiAKQEAgLTE2OCw2ICsxOTEsMzQgQEAgZmxvYXQgc2NyZWVuU2NhbGVGYWN0b3Io
VUlTY3JlZW4gKnNjcmVlbgogICAgIHJldHVybiBzY3JlZW4uc2NhbGU7CiB9CiAKK1NjcmVlblBy
b3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMoKQoreworICAgIFNjcmVlblByb3BlcnRp
ZXMgc2NyZWVuUHJvcGVydGllczsKKworICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCA9
IDA7CisKKyAgICBmb3IgKFVJU2NyZWVuICpzY3JlZW4gaW4gW1BBTDo6Z2V0VUlTY3JlZW5DbGFz
cygpIHNjcmVlbnNdKSB7CisgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0ID0g
c2NyZWVuLmJvdW5kczsKKyAgICAgICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5zZXRZKE5TTWF4WShz
Y3JlZW4uYm91bmRzKSAtIChzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIHNjcmVlbkF2YWlsYWJs
ZVJlY3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAorICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9
IHNjcmVlbi5fcmVmZXJlbmNlQm91bmRzOworICAgICAgICAKKyAgICAgICAgUmV0YWluUHRyPENH
Q29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobnVsbHB0cik7Cisg
ICAgICAgIAorICAgICAgICBpbnQgc2NyZWVuRGVwdGggPSBXZWJDb3JlOjpzY3JlZW5EZXB0aChu
dWxscHRyKTsKKyAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50ID0gV2ViQ29yZTo6
c2NyZWVuRGVwdGhQZXJDb21wb25lbnQobnVsbHB0cik7CisgICAgICAgIGJvb2wgc2NyZWVuU3Vw
cG9ydHNFeHRlbmRlZENvbG9yID0gV2ViQ29yZTo6c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
KG51bGxwdHIpOworICAgICAgICBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzID0gV2ViQ29y
ZTo6c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKKyAgICAgICAgYm9vbCBzY3JlZW5Jc01vbm9j
aHJvbWUgPSBXZWJDb3JlOjpzY3JlZW5Jc01vbm9jaHJvbWUobnVsbHB0cik7CisKKyAgICAgICAg
c2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldCgrK2Rpc3BsYXlJRCwgU2NyZWVuRGF0
YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRl
cHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
LCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2NyZWVuSXNNb25vY2hyb21lIH0pOworICAgICAg
ICAKKyAgICAgICAgaWYgKHNjcmVlbiA9PSBbUEFMOjpnZXRVSVNjcmVlbkNsYXNzKCkgbWFpblNj
cmVlbl0pCisgICAgICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQgPSBk
aXNwbGF5SUQ7CisgICAgfQorICAgIAorICAgIHJldHVybiBzY3JlZW5Qcm9wZXJ0aWVzOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZ
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVl
bk1hYy5tbQkocmV2aXNpb24gMjU5MDE3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTcgKzEwMCw2IEBA
IHN0YXRpYyBOU1NjcmVlbiAqc2NyZWVuKFdpZGdldCogd2lkZ2V0KQogICAgIHJldHVybiBzY3Jl
ZW4oZGlzcGxheUlEKHdpZGdldCkpOwogfQogCi1zdGF0aWMgU2NyZWVuUHJvcGVydGllcyYgc2Ny
ZWVuUHJvcGVydGllcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNjcmVlblByb3Bl
cnRpZXM+IHNjcmVlblByb3BlcnRpZXM7Ci0gICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXM7Ci19
Ci0KLVBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlTY3JlZW5EaXNwbGF5SUQoKQotewotICAgIHJl
dHVybiBzY3JlZW5Qcm9wZXJ0aWVzKCkucHJpbWFyeURpc3BsYXlJRDsKLX0KLQogU2NyZWVuUHJv
cGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcygpCiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nl
c3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2Vy
dmVyKSk7CkBAIC0xNTEsNjAgKzE0MCw0MiBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3Jl
ZW5Qcm9wZXJ0aWVzCiAgICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXM7CiB9CiAKLXZvaWQgc2V0
U2NyZWVuUHJvcGVydGllcyhjb25zdCBTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQotewot
ICAgIHNjcmVlblByb3BlcnRpZXMoKSA9IHByb3BlcnRpZXM7Ci19Ci0KIHZvaWQgc2V0U2hvdWxk
T3ZlcnJpZGVTY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoYm9vbCBzaG91bGRPdmVycmlk
ZSwgYm9vbCBzdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UpCiB7CiAgICAgaWYgKFBBTDo6aXNNZWRp
YVRvb2xib3hGcmFtZXdvcmtBdmFpbGFibGUoKSAmJiBQQUw6OmNhbkxvYWRfTWVkaWFUb29sYm94
X01UT3ZlcnJpZGVTaG91bGRQbGF5SERSVmlkZW8oKSkKICAgICAgICAgUEFMOjpzb2Z0TGlua19N
ZWRpYVRvb2xib3hfTVRPdmVycmlkZVNob3VsZFBsYXlIRFJWaWRlbyhzaG91bGRPdmVycmlkZSwg
c3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlKTsKIH0KIAotc3RhdGljIFNjcmVlbkRhdGEgc2NyZWVu
RGF0YShQbGF0Zm9ybURpc3BsYXlJRCBzY3JlZW5kaXNwbGF5SUQpCi17Ci0gICAgUkVMRUFTRV9B
U1NFUlQoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSk7Ci0KLSAg
ICAvLyBSZXR1cm4gcHJvcGVydHkgb2YgdGhlIGZpcnN0IHNjcmVlbiBpZiB0aGUgc2NyZWVuIGlz
IG5vdCBmb3VuZCBpbiB0aGUgbWFwLgotICAgIGF1dG8gZGlzcGxheUlEID0gc2NyZWVuZGlzcGxh
eUlEID8gc2NyZWVuZGlzcGxheUlEIDogcHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpOwotICAgIGlm
IChkaXNwbGF5SUQpIHsKLSAgICAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzRm9yRGlzcGxheSA9
IHNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmZpbmQoZGlzcGxheUlEKTsKLSAgICAg
ICAgaWYgKHNjcmVlblByb3BlcnRpZXNGb3JEaXNwbGF5ICE9IHNjcmVlblByb3BlcnRpZXMoKS5z
Y3JlZW5EYXRhTWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIHNjcmVlblByb3BlcnRpZXNG
b3JEaXNwbGF5LT52YWx1ZTsKLSAgICB9Ci0KLSAgICAvLyBMYXN0IHJlc29ydDogdXNlIHRoZSBm
aXJzdCBpdGVtIGluIHRoZSBzY3JlZW4gbGlzdC4KLSAgICByZXR1cm4gc2NyZWVuUHJvcGVydGll
cygpLnNjcmVlbkRhdGFNYXAuYmVnaW4oKS0+dmFsdWU7Ci19Ci0KIHVpbnQzMl90IHByaW1hcnlP
cGVuR0xEaXNwbGF5TWFzaygpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVu
RGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKHByaW1hcnlTY3Jl
ZW5EaXNwbGF5SUQoKSkuZGlzcGxheU1hc2s7Ci0gICAgCisgICAgYXV0byB2ID0gc2NyZWVuRGF0
YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpCisgICAg
ICAgIHJldHVybiB2LT5kaXNwbGF5TWFzazsKKwogICAgIHJldHVybiAwOwogfQogCiB1aW50MzJf
dCBkaXNwbGF5TWFza0ZvckRpc3BsYXkoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogewot
ICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gc2NyZWVuRGF0YShkaXNwbGF5SUQpLmRpc3BsYXlNYXNrOwotICAgIAorICAg
IGF1dG8gdiA9IHNjcmVlbkRhdGEoZGlzcGxheUlEKTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQor
ICAgICAgICByZXR1cm4gdi0+ZGlzcGxheU1hc2s7CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gMDsKIH0KIAogSU9SZWdpc3RyeUdQVUlEIHByaW1hcnlHUFVJRCgpCiB7
Ci0gICAgcmV0dXJuIGdwdUlERm9yRGlzcGxheShzY3JlZW5Qcm9wZXJ0aWVzKCkucHJpbWFyeURp
c3BsYXlJRCk7CisgICAgcmV0dXJuIGdwdUlERm9yRGlzcGxheShwcmltYXJ5U2NyZWVuRGlzcGxh
eUlEKCkpOwogfQogCiBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SURGb3JEaXNwbGF5KFBsYXRmb3JtRGlz
cGxheUlEIGRpc3BsYXlJRCkKIHsKICNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJf
QkxPQ0tJTkcpCi0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKGRpc3BsYXlJRCkuZ3B1SUQ7CisgICAg
YXV0byB2ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpCisg
ICAgICAgIHJldHVybiB2LT5ncHVJRDsKICNlbHNlCiAgICAgcmV0dXJuIGdwdUlERm9yRGlzcGxh
eU1hc2soQ0dEaXNwbGF5SURUb09wZW5HTERpc3BsYXlNYXNrKGRpc3BsYXlJRCkpOwogI2VuZGlm
CkBAIC0yNDYsMTUgKzIxNywxNiBAQCBJT1JlZ2lzdHJ5R1BVSUQgZ3B1SURGb3JEaXNwbGF5TWFz
ayhHTHVpCiAgICAgcmV0dXJuIChJT1JlZ2lzdHJ5R1BVSUQpIGdwdUlESGlnaCA8PCAzMiB8IGdw
dUlETG93OwogfQogCi1zdGF0aWMgU2NyZWVuRGF0YSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKFdpZGdl
dCogd2lkZ2V0KQorc3RhdGljIE9wdGlvbmFsPGNvbnN0IFNjcmVlbkRhdGEmPiBnZXRTY3JlZW5Q
cm9wZXJ0aWVzKFdpZGdldCogd2lkZ2V0KQogewogICAgIHJldHVybiBzY3JlZW5EYXRhKGRpc3Bs
YXlJRCh3aWRnZXQpKTsKIH0KIAogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRn
ZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuSXNN
b25vY2hyb21lOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAg
ICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVuSXNNb25vY2hyb21l
OwogCiAgICAgLy8gVGhpcyBpcyBhIHN5c3RlbS13aWRlIGFjY2Vzc2liaWxpdHkgc2V0dGluZywg
c2FtZSBvbiBhbGwgc2NyZWVucy4KICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9j
ZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKQEAgLTI2Myw4
ICsyMzUsOSBAQCBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKIAogYm9v
bCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVz
KCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzY3JlZW5EYXRhKHBy
aW1hcnlTY3JlZW5EaXNwbGF5SUQoKSkuc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnM7CisgICAgYXV0
byB2ID0gc2NyZWVuRGF0YShwcmltYXJ5U2NyZWVuRGlzcGxheUlEKCkpOworICAgIGlmICh2Lmhh
c1ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5IYXNJbnZlcnRlZENvbG9yczsKIAog
ICAgIC8vIFRoaXMgaXMgYSBzeXN0ZW0td2lkZSBhY2Nlc3NpYmlsaXR5IHNldHRpbmcsIHNhbWUg
b24gYWxsIHNjcmVlbnMuCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7CkBAIC0yNzMsOCArMjQ2
LDkgQEAgYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiAKIGludCBzY3JlZW5EZXB0aChX
aWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRh
TWFwLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIHNjcmVlbkRlcHRoID0gZ2V0U2NyZWVuUHJv
cGVydGllcyh3aWRnZXQpLnNjcmVlbkRlcHRoOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3Bl
cnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKSB7CisgICAgICAgIGF1dG8gc2Ny
ZWVuRGVwdGggPSB2LT5zY3JlZW5EZXB0aDsKICAgICAgICAgQVNTRVJUKHNjcmVlbkRlcHRoKTsK
ICAgICAgICAgcmV0dXJuIHNjcmVlbkRlcHRoOwogICAgIH0KQEAgLTI4NSw4ICsyNTksOSBAQCBp
bnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCiAKIGludCBzY3JlZW5EZXB0aFBlckNvbXBv
bmVudChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMoKS5zY3Jl
ZW5EYXRhTWFwLmlzRW1wdHkoKSkgewotICAgICAgICBhdXRvIGRlcHRoUGVyQ29tcG9uZW50ID0g
Z2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50OworICAg
IGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1
ZSgpKSB7CisgICAgICAgIGF1dG8gZGVwdGhQZXJDb21wb25lbnQgPSB2LT5zY3JlZW5EZXB0aFBl
ckNvbXBvbmVudDsKICAgICAgICAgQVNTRVJUKGRlcHRoUGVyQ29tcG9uZW50KTsKICAgICAgICAg
cmV0dXJuIGRlcHRoUGVyQ29tcG9uZW50OwogICAgIH0KQEAgLTI5Nyw4ICsyNzIsOSBAQCBpbnQg
c2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnCiAKIEZsb2F0UmVjdCBzY3JlZW5S
ZWN0Rm9yRGlzcGxheShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiB7Ci0gICAgaWYgKCFz
Y3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0
byBzY3JlZW5SZWN0ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpLnNjcmVlblJlY3Q7CisgICAgYXV0
byB2ID0gc2NyZWVuRGF0YShkaXNwbGF5SUQpOworICAgIGlmICh2Lmhhc1ZhbHVlKCkpIHsKKyAg
ICAgICAgYXV0byBzY3JlZW5SZWN0ID0gdi0+c2NyZWVuUmVjdDsKICAgICAgICAgQVNTRVJUKCFz
Y3JlZW5SZWN0LmlzRW1wdHkoKSk7CiAgICAgICAgIHJldHVybiBzY3JlZW5SZWN0OwogICAgIH0K
QEAgLTMxNCw4ICsyOTAsOSBAQCBGbG9hdFJlY3Qgc2NyZWVuUmVjdEZvclByaW1hcnlTY3JlZW4o
KQogCiBGbG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNj
cmVlblByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KS5zY3JlZW5SZWN0OworICAgIGF1dG8gdiA9IGdl
dFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAg
ICByZXR1cm4gdi0+c2NyZWVuUmVjdDsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwogICAg
IHJldHVybiB0b1VzZXJTcGFjZShbc2NyZWVuKHdpZGdldCkgZnJhbWVdLCB3aW5kb3cod2lkZ2V0
KSk7CkBAIC0zMjMsOCArMzAwLDkgQEAgRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRn
ZXQpCiAKIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lkZ2V0KQogewot
ICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlbkF2YWlsYWJsZVJl
Y3Q7CisgICAgYXV0byB2ID0gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpOworICAgIGlmICh2
Lmhhc1ZhbHVlKCkpCisgICAgICAgIHJldHVybiB2LT5zY3JlZW5BdmFpbGFibGVSZWN0OwogCiAg
ICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVu
aWNhdGVXaXRoV2luZG93U2VydmVyKSk7CiAgICAgcmV0dXJuIHRvVXNlclNwYWNlKFtzY3JlZW4o
d2lkZ2V0KSB2aXNpYmxlRnJhbWVdLCB3aW5kb3cod2lkZ2V0KSk7CkBAIC0zNDgsOCArMzI2LDkg
QEAgTlNTY3JlZW4gKnNjcmVlbihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbAogCiBDR0NvbG9yU3Bh
Y2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICBpZiAoIXNjcmVl
blByb3BlcnRpZXMoKS5zY3JlZW5EYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGdl
dFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KS5jb2xvclNwYWNlLmdldCgpOworICAgIGF1dG8gdiA9
IGdldFNjcmVlblByb3BlcnRpZXMod2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAg
ICAgICByZXR1cm4gdi0+Y29sb3JTcGFjZS5nZXQoKTsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZl
cikpOwogICAgIHJldHVybiBzY3JlZW4od2lkZ2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZTsK
QEAgLTM1Nyw4ICszMzYsOSBAQCBDR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRn
ZXQqCiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0KQog
ewotICAgIGlmICghc2NyZWVuUHJvcGVydGllcygpLnNjcmVlbkRhdGFNYXAuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gZ2V0U2NyZWVuUHJvcGVydGllcyh3aWRnZXQpLnNjcmVlblN1cHBvcnRz
RXh0ZW5kZWRDb2xvcjsKKyAgICBhdXRvIHYgPSBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCk7
CisgICAgaWYgKHYuaGFzVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHYtPnNjcmVlblN1cHBvcnRz
RXh0ZW5kZWRDb2xvcjsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwogICAgIHJldHVybiBb
c2NyZWVuKHdpZGdldCkgY2FuUmVwcmVzZW50RGlzcGxheUdhbXV0Ok5TRGlzcGxheUdhbXV0UDNd
OwpAQCAtMzY2LDggKzM0Niw5IEBAIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdp
ZGdldCoKIAogYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZ2V0KiB3aWRn
ZXQpCiB7Ci0gICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzKCkuc2NyZWVuRGF0YU1hcC5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBnZXRTY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkuc2NyZWVuU3Vw
cG9ydHNIaWdoRHluYW1pY1JhbmdlOworICAgIGF1dG8gdiA9IGdldFNjcmVlblByb3BlcnRpZXMo
d2lkZ2V0KTsKKyAgICBpZiAodi5oYXNWYWx1ZSgpKQorICAgICAgICByZXR1cm4gdi0+c2NyZWVu
U3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlOwogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7CiAj
aWYgVVNFKE1FRElBVE9PTEJPWCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAJKHJldmlzaW9uIDI1OTAxNykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI2NCw3ICs1MjY0LDcgQEAgdm9pZCBJbnRlcm5hbHM6
Om5vdGlmeVJlc291cmNlTG9hZE9ic2VydgogCiB1bnNpZ25lZCBJbnRlcm5hbHM6OnByaW1hcnlT
Y3JlZW5EaXNwbGF5SUQoKQogewotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NP
QSkKICAgICByZXR1cm4gV2ViQ29yZTo6cHJpbWFyeVNjcmVlbkRpc3BsYXlJRCgpOwogI2Vsc2UK
ICAgICByZXR1cm4gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAz
LTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBBZG9wdCBTY3JlZW5Qcm9wZXJ0aWVzIGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSByZWxldmVudCBtYWNPUyBwbGF0Zm9ybSBjb2Rl
IGNyb3NzIHBsYXRmb3JtLgorCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRTY3JlZW5Qcm9wZXJ0aWVzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisKIDIwMjAtMDMtMjUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIEVsZW1lbnQgY29udGV4dCBjaGFyYWN0ZXIgcmVjdHMgbWF5IGJl
IGluIHdyb25nIGNvb3JkaW5hdGUgc3lzdGVtCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU5
MDE3KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSwxMCArMTQxLDEwIEBAIHZvaWQgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGVu
Y29kZXIgPDwgbWVkaWFNSU1FVHlwZXM7CisgICAgZW5jb2RlciA8PCBzY3JlZW5Qcm9wZXJ0aWVz
OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgZW5jb2RlciA8PCBzY3JlZW5Qcm9w
ZXJ0aWVzOwogICAgIGVuY29kZXIgPDwgdXNlT3ZlcmxheVNjcm9sbGJhcnM7CiAjZW5kaWYKIApA
QCAtMzg5LDE0ICszODksMTUgQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5tZWRpYU1JTUVUeXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogCi0j
aWYgUExBVEZPUk0oTUFDKQogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmVlblByb3BlcnRpZXM+
IHNjcmVlblByb3BlcnRpZXM7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5Qcm9wZXJ0aWVzOwogICAg
IGlmICghc2NyZWVuUHJvcGVydGllcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHBhcmFt
ZXRlcnMuc2NyZWVuUHJvcGVydGllcyA9IFdURk1vdmUoKnNjcmVlblByb3BlcnRpZXMpOworI2Vu
ZGlmCisKKyNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnVzZU92ZXJsYXlTY3JvbGxiYXJzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNTkwMTcpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICsz
OCw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShD
T0NPQSkKLSNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgotI2VuZGlmCi0KLSNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0
Lmg+CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQpAQCAtMTgxLDYgKzE3OCw3IEBAIHN0cnVjdCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFZlY3RvcjxTdHJpbmc+IG1lZGlhTUlNRVR5cGVzOworICAgIFdlYkNvcmU6OlNjcmVlblByb3Bl
cnRpZXMgc2NyZWVuUHJvcGVydGllczsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xODgsNyArMTg2LDYg
QEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyBzY3JlZW5Qcm9wZXJ0
aWVzOwogICAgIGJvb2wgdXNlT3ZlcmxheVNjcm9sbGJhcnMgeyB0cnVlIH07CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNp
b24gMjU5MDE3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0QXBwbGljYXRpb25Jc0FjdAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzY3JlZW5Qcm9wZXJ0
aWVzU3RhdGVDaGFuZ2VkKCkKIHsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzID0gV2ViQ29yZTo6Y29sbGVjdFNjcmVlblBy
b3BlcnRpZXMoKTsKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlNldFNjcmVlblByb3BlcnRpZXMoc2NyZWVuUHJvcGVydGllcykpOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0JKHJldmlzaW9uIDI1OTAxNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1MywxMCArMzUzLDEw
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBw
YXJhbWV0ZXJzLnNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbiA9IFtkZWZhdWx0cyBib29sRm9yS2V5
OldlYktpdExvZ0Nvb2tpZUluZm9ybWF0aW9uRGVmYXVsdHNLZXldOwogI2VuZGlmCi0gICAgCi0j
aWYgUExBVEZPUk0oTUFDKQorCiAgICAgYXV0byBzY3JlZW5Qcm9wZXJ0aWVzID0gV2ViQ29yZTo6
Y29sbGVjdFNjcmVlblByb3BlcnRpZXMoKTsKICAgICBwYXJhbWV0ZXJzLnNjcmVlblByb3BlcnRp
ZXMgPSBXVEZNb3ZlKHNjcmVlblByb3BlcnRpZXMpOworI2lmIFBMQVRGT1JNKE1BQykKICAgICBw
YXJhbWV0ZXJzLnVzZU92ZXJsYXlTY3JvbGxiYXJzID0gKFtOU1Njcm9sbGVyIHByZWZlcnJlZFNj
cm9sbGVyU3R5bGVdID09IE5TU2Nyb2xsZXJTdHlsZU92ZXJsYXkpOwogI2VuZGlmCiAgICAgCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDI1OTAxNykK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDkgKzQ2LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+Ci0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgPFdl
YkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgotI2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8
cGFsL0h5c3RlcmVzaXNBY3Rpdml0eS5oPgpAQCAtNjEsNiArNTgsNyBAQAogI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRl
IDxXZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRj
aC5oPgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKQEAgLTQ3MywxNiAr
NDcxLDE0IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlBy
b2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKLSNpZiBQTEFURk9STShN
QUMpCi0gICAgdm9pZCBzZXRTY3JlZW5Qcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlNjcmVlblBy
b3BlcnRpZXMmKTsKLSNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcp
CisjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxP
Q0tJTkcpCiAgICAgdm9pZCBzY3JvbGxlclN0eWxlUHJlZmVyZW5jZUNoYW5nZWQoYm9vbCB1c2VP
dmVybGF5U2Nyb2xsYmFycyk7CiAgICAgdm9pZCBkaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWQo
Q0dEaXJlY3REaXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyk7CiAgICAgdm9p
ZCBkaXNwbGF5V2FzUmVmcmVzaGVkKENHRGlyZWN0RGlzcGxheUlEKTsKICNlbmRpZgotI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29u
c3QgV2ViQ29yZTo6U2NyZWVuUHJvcGVydGllcyYpOwogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc05h
bWUoKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjU5MDE3KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMywx
NCArMTEzLDE0IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm8KICAg
ICBNYXJrSXNOb0xvbmdlclByZXdhcm1lZCgpCiAgICAgR2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9y
VGVzdGluZygpIC0+IChWZWN0b3I8U3RyaW5nPiBhY3RpdmVPcmlnaW5zKSBBc3luYwogCi0jaWYg
UExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFNldFNjcmVlblByb3BlcnRp
ZXMoc3RydWN0IFdlYkNvcmU6OlNjcmVlblByb3BlcnRpZXMgc2NyZWVuUHJvcGVydGllcykKLSNp
ZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisjZW5kaWYKKyNpZiBQ
TEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykK
ICAgICBTY3JvbGxlclN0eWxlUHJlZmVyZW5jZUNoYW5nZWQoYm9vbCB1c2VPdmVsYXlTY3JvbGxi
YXJzKQogICAgIERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZChDR0RpcmVjdERpc3BsYXlJRCBk
aXNwbGF5SUQsIENHRGlzcGxheUNoYW5nZVN1bW1hcnlGbGFncyBmbGFncykKICAgICBEaXNwbGF5
V2FzUmVmcmVzaGVkKHVpbnQzMl90IGRpc3BsYXlJRCkKICNlbmRpZgotI2VuZGlmCiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAgICAgQmFja2xp
Z2h0TGV2ZWxEaWRDaGFuZ2UoZmxvYXQgYmFja2xpZ2h0TGV2ZWwpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0JKHJldmlzaW9u
IDI1OTAxNykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0NSwxMyArMjQ1LDEyIEBAIHZvaWQgV2ViUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHIKICAgICAgICAgfSk7CiAgICAgfQogCi0jaWYgUExB
VEZPUk0oTUFDKQogICAgIFdlYkNvcmU6OnNldFNjcmVlblByb3BlcnRpZXMocGFyYW1ldGVycy5z
Y3JlZW5Qcm9wZXJ0aWVzKTsKLSNpZiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxP
Q0tJTkcpCisKKyNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NF
UlZFUl9CTE9DS0lORykKICAgICBzY3JvbGxlclN0eWxlUHJlZmVyZW5jZUNoYW5nZWQocGFyYW1l
dGVycy51c2VPdmVybGF5U2Nyb2xsYmFycyk7CiAjZW5kaWYKLSNlbmRpZgotICAgIAorCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIGlmIChwYXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lv
bkhhbmRsZSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KCpw
YXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZSk7CkBAIC05NjAsMTUgKzk1
OSwxNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnJldm9rZUFjY2Vzc1RvQXNzZXRTZXJ2CiB9CiAjZW5k
aWYKIAotI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUHJvY2Vzczo6c2V0U2NyZWVuUHJvcGVy
dGllcyhjb25zdCBTY3JlZW5Qcm9wZXJ0aWVzJiBwcm9wZXJ0aWVzKQogewogICAgIFdlYkNvcmU6
OnNldFNjcmVlblByb3BlcnRpZXMocHJvcGVydGllcyk7CiAgICAgZm9yIChhdXRvJiBwYWdlIDog
bV9wYWdlTWFwLnZhbHVlcygpKQogICAgICAgICBwYWdlLT5zY3JlZW5Qcm9wZXJ0aWVzRGlkQ2hh
bmdlKCk7CisjaWYgUExBVEZPUk0oTUFDKQogICAgIHVwZGF0ZVBhZ2VTY3JlZW5Qcm9wZXJ0aWVz
KCk7CisjZW5kaWYKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUHJvY2Vzczo6dXBk
YXRlUGFnZVNjcmVlblByb3BlcnRpZXMoKQogewogICAgIGlmIChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>