<?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>45998</bug_id>
          
          <creation_ts>2010-09-17 14:31:38 -0700</creation_ts>
          <short_desc>Make certificate data available to the WKFrameRef after it is committed</short_desc>
          <delta_ts>2010-09-20 07:05:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>280870</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-17 14:31:38 -0700</bug_when>
    <thetext>We should make certificate data available to the WKFrameRef after it is committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280875</commentid>
    <comment_count>1</comment_count>
      <attachid>67952</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-17 14:35:03 -0700</bug_when>
    <thetext>Created attachment 67952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280878</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-17 14:38:25 -0700</bug_when>
    <thetext>Attachment 67952 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/Shared/mac/PlatformCertificateInfo.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/UIProcess/API/C/WKCertificateInfo.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/UIProcess/API/C/WKCertificateInfo.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:70:  More than one command on the same line  [whitespace/newline] [4]
WebKit2/UIProcess/API/C/WKAPICast.h:102:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280983</commentid>
    <comment_count>3</comment_count>
      <attachid>67952</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-09-17 16:45:03 -0700</bug_when>
    <thetext>Comment on attachment 67952
Patch

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

Looks good otherwise!

&gt; WebKit2/ChangeLog:18
&gt; +

comma instead of period here (unless you forgot to type something here)

&gt; WebKit2/WebKit2.pro:377
&gt; +    WebProcess/WebCoreSupport/qt/&apos;sQt.cpp \

This looks wrong :)

&gt; WebKit2/Shared/APIObject.h:37
&gt; +        TypeNull = 0,

No need for this.

&gt; WebKit2/Shared/WebCertificateInfo.h:45
&gt; +    void setPlatformCertificateInfo(const PlatformCertificateInfo&amp; info) { m_platformCertificateInfo = info; }

Maybe we should make WebCertificatInfo immutable and just replace the entire object instead?

&gt; WebKit2/Shared/mac/PlatformCertificateInfo.h:51
&gt; +

Please put this inside #ifndef NDEBUG

&gt; WebKit2/Shared/mac/PlatformCertificateInfo.mm:47
&gt; +{

Same here.

&gt; WebKit2/Shared/mac/PlatformCertificateInfo.mm:61
&gt; +        encoder-&gt;encodeBool(false);

I think you can use a numeric_limits&lt;uint64&gt;::max() to indicate an empty list instead (that&apos;s what we do for strings).

&gt; WebKit2/Shared/mac/PlatformCertificateInfo.mm:77
&gt; +    printf(&quot;PlatformCertificateInfo::encode Total Size %d&quot;, (int)totalSize);

Remove this.

&gt; WebKit2/Shared/qt/PlatformCertificateInfo.h:41
&gt; +    PlatformCertificateInfo(const WebCore::ResourceResponse&amp;)

Make this constructor explicit.

&gt; WebKit2/Shared/win/PlatformCertificateInfo.h:41
&gt; +    PlatformCertificateInfo(const WebCore::ResourceResponse&amp;)

Make this constructor explicit.

&gt; WebKit2/UIProcess/WebFrameProxy.cpp:41
&gt; +    , m_certificateInfo(WebCertificateInfo::create())

Could we initialize this lazily?

&gt; WebKit2/UIProcess/WebFrameProxy.h:77
&gt; +    void setPlatformCertificateInfo(const PlatformCertificateInfo&amp;);

I think it would be better if setPlatformCertificatInfo actually took a PassRefPtr&lt;WebCertificateInfo&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281010</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-17 17:20:52 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/67760.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281521</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-09-20 07:05:56 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Landed in http://trac.webkit.org/changeset/67760.

And an unreviewed buildfix landed in http://trac.webkit.org/changeset/67763.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67952</attachid>
            <date>2010-09-17 14:35:03 -0700</date>
            <delta_ts>2010-09-17 16:45:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>cert.diff</filename>
            <type>text/plain</type>
            <size>48534</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Nzc0NikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzggQEAKKzIwMTAtMDktMTcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGNl
cnRpZmljYXRlIGRhdGEgYXZhaWxhYmxlIHRvIHRoZSBXS0ZyYW1lUmVmIGFmdGVyIGl0IGlzIGNv
bW1pdHRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDU5OTgKKworICAgICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAgICAgQWRkIG5ldyB0
eXBlLgorCisgICAgICAgICogU2hhcmVkL1dlYkNlcnRpZmljYXRlSW5mby5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2VydGlmaWNhdGVJbmZvOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDZXJ0aWZpY2F0ZUluZm86OnBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ2VydGlmaWNhdGVJbmZvOjpzZXRQbGF0Zm9ybUNlcnRpZmljYXRlSW5m
byk6CisgICAgICAgIChXZWJLaXQ6OldlYkNlcnRpZmljYXRlSW5mbzo6V2ViQ2VydGlmaWNhdGVJ
bmZvKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2VydGlmaWNhdGVJbmZvOjp0eXBlKToKKyAgICAg
ICAgQWRkIEFQSSB0eXBlIGZvciB2ZW5kaW5nLAorCisgICAgICAgICogU2hhcmVkL21hYy9QbGF0
Zm9ybUNlcnRpZmljYXRlSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1D
ZXJ0aWZpY2F0ZUluZm86OnBlZXJDZXJ0aWZpY2F0ZXMpOgorICAgICAgICAqIFNoYXJlZC9tYWMv
UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8ubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbzo6UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzo6ZHVtcCk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvcXQvUGxhdGZv
cm1DZXJ0aWZpY2F0ZUluZm8uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ2Vy
dGlmaWNhdGVJbmZvOjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyk6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbzo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvd2luL1BsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNl
cnRpZmljYXRlSW5mbzo6UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAoV2ViS2l0
OjpQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm86OmRlY29kZSk6CisgICAgICAgIEFkZCBwbGF0Zm9ybSBzcGVj
aWZpYyBob2xkZXIgZm9yIGNlcnRpZmljYXRlIGRhdGEgYW5kIGVuY29kZS9kZWNvZGUgZnVuY3Rp
b25zCisgICAgICAgIHRvIHNlbmQgaXQgb3ZlciB0aGUgd2lyZS4gUmlnaHQgbm93LCB0aGlzIG9u
bHkgaW1wbGVtZW50ZWQgZm9yIHRoZSBtYWMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQmFzZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NlcnRpZmljYXRlSW5mby5jcHA6IEFkZGVkLgorICAgICAg
ICAoV0tDZXJ0aWZpY2F0ZUluZm9HZXRUeXBlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NlcnRpZmljYXRlSW5mby5oOiBBZGRlZC4KKyAgICAgICAgQWRkIHdyYXBwZXIgZm9yIFdl
YkNlcnRpZmljYXRlSW5mby4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNw
cDoKKyAgICAgICAgKFdLRnJhbWVHZXRDZXJ0aWZpY2F0ZUluZm8pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0ZyYW1lLmg6CisgICAgICAgIEFkZCBnZXR0ZXIgZm9yIGEgV0tDZXJ0aWZp
Y2F0ZUluZm8uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ2VydGlmaWNhdGVJ
bmZvTWFjLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDZXJ0aWZp
Y2F0ZUluZm9NYWMubW06IEFkZGVkLgorICAgICAgICAoV0tDZXJ0aWZpY2F0ZUluZm9HZXRQZWVy
Q2VydGlmaWNhdGVzKToKKyAgICAgICAgQWRkIG1hYyBzcGVjaWZpYyBnZXR0ZXJzIGZvciB0aGUg
cGxhdGZvcm0gc3BlY2lmaWMgY2VydGlmaWNhdGUKKyAgICAgICAgZGF0YS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQ
cm94eTo6V2ViRnJhbWVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OnNl
dFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpjZXJ0aWZpY2F0ZUluZm8p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICBQaXBlIHRoZSBjZXJ0aWZp
Y2F0ZSBpbmZvIHRocm91Z2ggdG8gdGhlIFdlYkZyYW1lUHJveHkgb24KKyAgICAgICAgY29tbWl0
LgorCisgICAgICAgICogV2ViS2l0Mi5wcm86CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdpbi9XZWJLaXQyLnZjcHJvajoKKyAgICAgICAg
KiB3aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCiAy
MDEwLTA5LTE3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIucHJvCShyZXZpc2lvbiA2Nzc0MikKKysrIFdlYktpdDIv
V2ViS2l0Mi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE2Miw5ICsxNjIsMTEgQEAgSEVBREVSUyAr
PSBcCiAgICAgU2hhcmVkL011dGFibGVBcnJheS5oIFwKICAgICBTaGFyZWQvTXV0YWJsZURpY3Rp
b25hcnkuaCBcCiAgICAgU2hhcmVkL05vdEltcGxlbWVudGVkLmggXAorICAgIFNoYXJlZC9xdC9Q
bGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIFwKICAgICBTaGFyZWQvcXQvV2ViRXZlbnRGYWN0b3J5
UXQuaCBcCiAgICAgU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmggXAogICAgIFNoYXJlZC9WaXNp
dGVkTGlua1RhYmxlLmggXAorICAgIFNoYXJlZC9XZWJDZXJ0aWZpY2F0ZUluZm8uaCBcCiAgICAg
U2hhcmVkL1dlYkV2ZW50Q29udmVyc2lvbi5oIFwKICAgICBTaGFyZWQvV2ViRXZlbnQuaCBcCiAg
ICAgU2hhcmVkL1dlYk51bWJlci5oIFwKQEAgLTE3OCw2ICsxODAsNyBAQCBIRUFERVJTICs9IFwK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tB
UElDYXN0LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Jhc2UuaCBcCisgICAgVUlQcm9jZXNz
L0FQSS9DL1dLQ2VydGlmaWNhdGVJbmZvLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLRnJhbWUuaCBcCkBAIC0yOTIsNiArMjk1LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgU2hhcmVkL3F0L1dlYkNvcmVBcmd1bWVudENvZGVyc1F0LmNwcCBcCiAgICAgU2hhcmVk
L3F0L1dlYlVSTFJlcXVlc3RRdC5jcHAgXAogICAgIFNoYXJlZC9xdC9XZWJVUkxSZXNwb25zZVF0
LmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ2VydGlmaWNhdGVJbmZvLmNwcCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Zy
YW1lLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAg
XApAQCAtMzcwLDcgKzM3NCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAgXAotICAgIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvcXQvV2ViRXJyb3JzUXQuY3BwIFwKKyAgICBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3F0LydzUXQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIFwKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmNwcCBcCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAkocmV2aXNpb24gNjc3NDIpCisrKyBXZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOSBAQCBj
bGFzcyBBUElPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxBUElPCiBwdWJsaWM6CiAgICAgZW51
bSBUeXBlIHsKICAgICAgICAgLy8gQmFzZSB0eXBlcwotICAgICAgICBUeXBlTnVsbCwKKyAgICAg
ICAgVHlwZU51bGwgPSAwLAogICAgICAgICBUeXBlQXJyYXksCisgICAgICAgIFR5cGVDZXJ0aWZp
Y2F0ZUluZm8sCiAgICAgICAgIFR5cGVEYXRhLAogICAgICAgICBUeXBlRGljdGlvbmFyeSwKICAg
ICAgICAgVHlwZUVycm9yLApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViQ2VydGlmaWNhdGVJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViQ2VydGlmaWNhdGVJbmZvLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJDZXJ0aWZpY2F0ZUluZm8uaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ2VydGlmaWNh
dGVJbmZvX2gKKyNkZWZpbmUgV2ViQ2VydGlmaWNhdGVJbmZvX2gKKworI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNlcnRp
ZmljYXRlSW5mbyA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25z
dCBUeXBlIEFQSVR5cGUgPSBUeXBlQ2VydGlmaWNhdGVJbmZvOworCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViQ2VydGlmaWNhdGVJbmZvPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJDZXJ0aWZpY2F0ZUluZm8pOworICAgIH0KKworICAgIGNvbnN0IFBs
YXRmb3JtQ2VydGlmaWNhdGVJbmZvJiBwbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fcGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm87IH0KKyAgICB2b2lkIHNldFBsYXRmb3Jt
Q2VydGlmaWNhdGVJbmZvKGNvbnN0IFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJiBpbmZvKSB7IG1f
cGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8gPSBpbmZvOyB9CisKK3ByaXZhdGU6CisgICAgV2ViQ2Vy
dGlmaWNhdGVJbmZvKCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyBt
X3BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJDZXJ0aWZpY2F0ZUluZm9faApJbmRleDogV2ViS2l0Mi9TaGFyZWQvbWFj
L1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQv
bWFjL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1No
YXJlZC9tYWMvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm9faAor
I2RlZmluZSBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mb19oCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFj
ZSBDb3JlSVBDIHsKKyAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7CisgICAgY2xhc3MgQXJndW1l
bnRFbmNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGxhdGZvcm1DZXJ0
aWZpY2F0ZUluZm8geworcHVibGljOgorICAgIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCk7Cisg
ICAgZXhwbGljaXQgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOworCisgICAgQ0ZBcnJheVJlZiBwZWVyQ2VydGlmaWNhdGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9wZWVyQ2VydGlmaWNhdGVzLmdldCgpOyB9CisKKyAgICB2b2lkIGVuY29kZShD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0OworICAgIHN0YXRpYyBib29s
IGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFBsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvJiB0KTsKKworICAgIC8vIERlYnVnIHJvdXRpbmUuCisgICAgdm9pZCBkdW1wKCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IG1fcGVlckNlcnRp
ZmljYXRlczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUGxhdGZv
cm1DZXJ0aWZpY2F0ZUluZm9faApJbmRleDogV2ViS2l0Mi9TaGFyZWQvbWFjL1BsYXRmb3JtQ2Vy
dGlmaWNhdGVJbmZvLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL21hYy9QbGF0Zm9y
bUNlcnRpZmljYXRlSW5mby5tbQkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvU2hhcmVkL21hYy9Q
bGF0Zm9ybUNlcnRpZmljYXRlSW5mby5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCIKKworI2lu
Y2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgorI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgor
I2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2luY2x1ZGUgPFNlY3VyaXR5L1Nl
Y3VyaXR5Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm86OlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkK
K3sKK30KKworUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm86OlBsYXRmb3JtQ2VydGlmaWNhdGVJbmZv
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fcGVlckNlcnRpZmlj
YXRlcy5hZG9wdENGKFdLQ29weU5TVVJMUmVzcG9uc2VQZWVyQ2VydGlmaWNhdGVzKHJlc3BvbnNl
Lm5zVVJMUmVzcG9uc2UoKSkpOworfQorCit2b2lkIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvOjpk
dW1wKCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBlbnRyaWVzID0gbV9wZWVyQ2VydGlmaWNhdGVz
ID8gQ0ZBcnJheUdldENvdW50KG1fcGVlckNlcnRpZmljYXRlcy5nZXQoKSkgOiAwOworCisgICAg
TlNMb2coQCJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mb1xuIik7CisgICAgTlNMb2coQCIgIEVudHJp
ZXM6ICVkXG4iLCBlbnRyaWVzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZW50cmll
czsgKytpKSB7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3VtbWFyeShBZG9wdENG
LCBTZWNDZXJ0aWZpY2F0ZUNvcHlTdWJqZWN0U3VtbWFyeSgoU2VjQ2VydGlmaWNhdGVSZWYpQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChtX3BlZXJDZXJ0aWZpY2F0ZXMuZ2V0KCksIGkpKSk7CisgICAg
ICAgIE5TTG9nKEAiICAlQCIsIChOU1N0cmluZyAqKXN1bW1hcnkuZ2V0KCkpOworICAgIH0KK30K
Kwordm9pZCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50
RW5jb2RlciogZW5jb2RlcikgY29uc3QKK3sKKyAgICBpZiAoIW1fcGVlckNlcnRpZmljYXRlcykg
eworICAgICAgICBlbmNvZGVyLT5lbmNvZGVCb29sKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0gZWxzZQorICAgICAgICBlbmNvZGVyLT5lbmNvZGVCb29sKHRydWUpOworCisgICAgdWlu
dDY0X3QgbGVuZ3RoID0gQ0ZBcnJheUdldENvdW50KG1fcGVlckNlcnRpZmljYXRlcy5nZXQoKSk7
CisgICAgZW5jb2Rlci0+ZW5jb2RlKGxlbmd0aCk7CisKKyAgICBzaXplX3QgdG90YWxTaXplID0g
MDsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
UmV0YWluUHRyPENGRGF0YVJlZj4gZGF0YShBZG9wdENGLCBTZWNDZXJ0aWZpY2F0ZUNvcHlEYXRh
KChTZWNDZXJ0aWZpY2F0ZVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KG1fcGVlckNlcnRpZmlj
YXRlcy5nZXQoKSwgaSkpKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlQnl0ZXMoQ0ZEYXRhR2V0
Qnl0ZVB0cihkYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEuZ2V0KCkpKTsKKyAgICAg
ICAgdG90YWxTaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhLmdldCgpKTsKKyAgICB9CisgICAg
CisgICAgcHJpbnRmKCJQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzo6ZW5jb2RlIFRvdGFsIFNpemUg
JWQiLCAoaW50KXRvdGFsU2l6ZSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm86
OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFBsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvJiBjKQoreworICAgIGJvb2wgaGFzQ2VydDsKKyAgICBpZiAoIWRlY29kZXItPmRl
Y29kZShoYXNDZXJ0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFoYXNDZXJ0
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHVpbnQ2NF90IGxlbmd0aDsKKyAgICBpZiAo
IWRlY29kZXItPmRlY29kZShsZW5ndGgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGFycmF5KEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVN
dXRhYmxlKDAsIGxlbmd0aCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBWZWN0b3I8dWludDhfdD4g
Ynl0ZXM7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlQnl0ZXMoYnl0ZXMpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEo
QWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KDAsIGJ5dGVzLmRhdGEoKSwgYnl0
ZXMuc2l6ZSgpLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CisgICAgICAgIFJldGFpblB0cjxTZWNDZXJ0
aWZpY2F0ZVJlZj4gY2VydGlmaWNhdGUoQWRvcHRDRiwgU2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRo
RGF0YSgwLCBkYXRhLmdldCgpKSk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShhcnJheS5n
ZXQoKSwgY2VydGlmaWNhdGUuZ2V0KCkpOworICAgIH0KKworICAgIGMubV9wZWVyQ2VydGlmaWNh
dGVzID0gYXJyYXk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogV2ViS2l0Mi9TaGFyZWQvcXQvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9xdC9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvcXQvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8u
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm9faAorI2RlZmluZSBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mb19o
CisKKyNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIKKyNpbmNsdWRlICJBcmd1bWVudEVuY29k
ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvIHsKK3B1YmxpYzoKKyAg
ICBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpCisgICAgeworICAgIH0KKworICAgIFBsYXRmb3Jt
Q2VydGlmaWNhdGVJbmZvKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKQorICAgIHsK
KyAgICB9CisKKyAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqKSBjb25z
dAorICAgIHsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKiwgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mKQorICAgIHsKKyAgICB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvX2gKSW5kZXg6IFdlYktpdDIvU2hhcmVkL3dpbi9QbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL3dpbi9QbGF0Zm9ybUNlcnRpZmljYXRlSW5m
by5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9TaGFyZWQvd2luL1BsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvX2gKKyNkZWZpbmUgUGxhdGZvcm1DZXJ0aWZpY2F0
ZUluZm9faAorCisjaW5jbHVkZSAiQXJndW1lbnREZWNvZGVyLmgiCisjaW5jbHVkZSAiQXJndW1l
bnRFbmNvZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyB7CitwdWJs
aWM6CisgICAgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKQorICAgIHsKKyAgICB9CisKKyAgICBQ
bGF0Zm9ybUNlcnRpZmljYXRlSW5mbyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikK
KyAgICB7CisgICAgfQorCisgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVy
KikgY29uc3QKKyAgICB7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciosIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvJikKKyAgICB7CisgICAg
ICAgIAorICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm9faApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5j
cHAJKHJldmlzaW9uIDY3NzQyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIldlYkZyYW1l
UHJveHkuaCIKIAorI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldl
YkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgpAQCAtMzcsNiArMzgs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkZyYW1lUHJveHk6OldlYkZyYW1lUHJveHkoV2Vi
UGFnZVByb3h5KiBwYWdlLCB1aW50NjRfdCBmcmFtZUlEKQogICAgIDogbV9wYWdlKHBhZ2UpCiAg
ICAgLCBtX2xvYWRTdGF0ZShMb2FkU3RhdGVGaW5pc2hlZCkKKyAgICAsIG1fY2VydGlmaWNhdGVJ
bmZvKFdlYkNlcnRpZmljYXRlSW5mbzo6Y3JlYXRlKCkpCiAgICAgLCBtX2ZyYW1lSUQoZnJhbWVJ
RCkKIHsKIH0KQEAgLTYyLDYgKzY0LDExIEBAIGJvb2wgV2ViRnJhbWVQcm94eTo6aXNNYWluRnJh
bWUoKSBjb25zdAogICAgIHJldHVybiB0aGlzID09IG1fcGFnZS0+bWFpbkZyYW1lKCk7CiB9CiAK
K3ZvaWQgV2ViRnJhbWVQcm94eTo6c2V0UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oY29uc3QgUGxh
dGZvcm1DZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKK3sKKyAgICBtX2NlcnRpZmlj
YXRlSW5mby0+c2V0UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oY2VydGlmaWNhdGVJbmZvKTsKK30K
Kwogdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBTdHJp
bmcmIHVybCkKIHsKICAgICAvLyBGSVhNRTogQWRkIGFzc2VydGlvbnMuCkluZGV4OiBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5oCShyZXZpc2lvbiA2Nzc0MikKKysrIFdlYktpdDIvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsMTEgQEAgbmFtZXNw
YWNlIENvcmVJUEMgewogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUGFnZVByb3h5
OwotY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OworY2xhc3MgUGxhdGZvcm1DZXJ0
aWZpY2F0ZUluZm87CitjbGFzcyBXZWJDZXJ0aWZpY2F0ZUluZm87CiBjbGFzcyBXZWJGb3JtU3Vi
bWlzc2lvbkxpc3RlbmVyUHJveHk7CitjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk7
CitjbGFzcyBXZWJQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkZyYW1lUHJveHkgOiBwdWJsaWMgQVBJ
T2JqZWN0IHsKIHB1YmxpYzoKQEAgLTcyLDYgKzc0LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFdU
Rjo6U3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFdURjo6
U3RyaW5nJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7
IH0KIAorICAgIHZvaWQgc2V0UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oY29uc3QgUGxhdGZvcm1D
ZXJ0aWZpY2F0ZUluZm8mKTsKKyAgICBXZWJDZXJ0aWZpY2F0ZUluZm8qIGNlcnRpZmljYXRlSW5m
bygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvLmdldCgpOyB9CisKICAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBTdHJpbmcmIHVy
bCk7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CkBAIC05MSw2ICs5Niw3IEBAIHByaXZhdGU6
CiAgICAgTG9hZFN0YXRlIG1fbG9hZFN0YXRlOwogICAgIFdURjo6U3RyaW5nIG1fdXJsOwogICAg
IFdURjo6U3RyaW5nIG1fcHJvdmlzaW9uYWxVUkw7CisgICAgUmVmUHRyPFdlYkNlcnRpZmljYXRl
SW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgUmVmUHRyPFdlYkZyYW1lTGlzdGVuZXJQcm94
eT4gbV9hY3RpdmVMaXN0ZW5lcjsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQ7CiB9OwpJbmRleDog
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiA2Nzc0MikKKysrIFdlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiTWVzc2FnZUlELmgi
CiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ2VydGlmaWNhdGVJ
bmZvLmgiCiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKQEAgLTU1NSw5ICs1
NTYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKENvcgogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkQ29tbWl0TG9hZEZvckZy
YW1lOiB7CiAgICAgICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwotICAgICAgICAgICAgaWYgKCFh
cmd1bWVudHMtPmRlY29kZShmcmFtZUlEKSkKKyAgICAgICAgICAgIFBsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKKyAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNv
ZGUoQ29yZUlQQzo6T3V0KGZyYW1lSUQsIGNlcnRpZmljYXRlSW5mbykpKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZShwcm9jZXNzKCkt
PndlYkZyYW1lKGZyYW1lSUQpKTsKKyAgICAgICAgICAgIGRpZENvbW1pdExvYWRGb3JGcmFtZShw
cm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpLCBjZXJ0aWZpY2F0ZUluZm8pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpE
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTogewpAQCAtOTMzLDggKzkzNSw5IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2EKICAgICBtX2xvYWRlckNsaWVudC5k
aWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodGhpcywgZnJhbWUpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkq
IGZyYW1lKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgY29uc3QgUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbykKIHsKKyAgICBmcmFtZS0+c2V0UGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oY2VydGlmaWNh
dGVJbmZvKTsKICAgICBmcmFtZS0+ZGlkQ29tbWl0TG9hZCgpOwogICAgIG1fbG9hZGVyQ2xpZW50
LmRpZENvbW1pdExvYWRGb3JGcmFtZSh0aGlzLCBmcmFtZSk7CiB9CkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkocmV2aXNpb24gNjc3NDIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgRHJhd2luZ0FyZWFQcm94eTsKIGNsYXNzIFBhZ2VDbGllbnQ7CitjbGFz
cyBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdDsKIGNs
YXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJEYXRhOwpAQCAtMjA2LDcgKzIw
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KFdlYkZyYW1lUHJveHkqLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJG
cmFtZVByb3h5Kik7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViRnJhbWVQcm94
eSopOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBjb25z
dCBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mbyYpOwogICAgIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUoV2ViRnJhbWVQcm94eSopOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvckZy
YW1lKFdlYkZyYW1lUHJveHkqKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkRm9yRnJhbWUoV2ViRnJh
bWVQcm94eSopOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9u
IDY3NzQyKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgTXV0YWJsZUFycmF5OwogY2xhc3MgTXV0YWJs
ZURpY3Rpb25hcnk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtOworY2xhc3MgV2ViQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgV2ViQ29udGV4
dDsKIGNsYXNzIFdlYkRhdGE7CiBjbGFzcyBXZWJFcnJvcjsKQEAgLTY2LDYgKzY3LDcgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUluZm88V0tBcnJheVJlZgogdGVtcGxhdGU8PiBzdHJ1Y3Qg
QVBJVHlwZUluZm88V0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmPiAgICAgICAgIHsgdHlwZWRlZiBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEFQ
SVR5cGVJbmZvPFdLQmFja0ZvcndhcmRMaXN0UmVmPiAgICAgICAgICAgICB7IHR5cGVkZWYgV2Vi
QmFja0ZvcndhcmRMaXN0KiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEFQSVR5cGVJ
bmZvPFdLQm9vbGVhblJlZj4gICAgICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgV2ViQm9vbGVh
biogSW1wbFR5cGU7IH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBUElUeXBlSW5mbzxXS0NlcnRpZmlj
YXRlSW5mb1JlZj4gICAgICAgICAgICAgeyB0eXBlZGVmIFdlYkNlcnRpZmljYXRlSW5mbyogSW1w
bFR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBUElUeXBlSW5mbzxXS0NvbnRleHRSZWY+ICAg
ICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdlYkNvbnRleHQqIEltcGxUeXBlOyB9OwogdGVt
cGxhdGU8PiBzdHJ1Y3QgQVBJVHlwZUluZm88V0tEYXRhUmVmPiAgICAgICAgICAgICAgICAgICAg
ICAgIHsgdHlwZWRlZiBXZWJEYXRhKiBJbXBsVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEFQ
SVR5cGVJbmZvPFdLRGljdGlvbmFyeVJlZj4gICAgICAgICAgICAgICAgICB7IHR5cGVkZWYgSW1t
dXRhYmxlRGljdGlvbmFyeSogSW1wbFR5cGU7IH07CkBAIC05Nyw2ICs5OSw3IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEltcGxUeXBlSW5mbzxNdXRhYmxlRGkKIHRlbXBsYXRlPD4gc3RydWN0IEltcGxU
eXBlSW5mbzxXZWJCYWNrRm9yd2FyZExpc3QqPiAgICAgICAgICAgICB7IHR5cGVkZWYgV0tCYWNr
Rm9yd2FyZExpc3RSZWYgQVBJVHlwZTsgfTsKIHRlbXBsYXRlPD4gc3RydWN0IEltcGxUeXBlSW5m
bzxXZWJCYWNrRm9yd2FyZExpc3RJdGVtKj4gICAgICAgICB7IHR5cGVkZWYgV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtUmVmIEFQSVR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbXBsVHlwZUluZm88
V2ViQm9vbGVhbio+ICAgICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdLQm9vbGVhblJlZiBB
UElUeXBlOyB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvPFdlYkNlcnRpZmljYXRl
SW5mbyo+ICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0NlcnRpZmljYXRlSW5mb1JlZiBBUElUeXBl
OyB9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgSW1wbFR5cGVJbmZvPFdlYkNvbnRleHQqPiAgICAgICAg
ICAgICAgICAgICAgIHsgdHlwZWRlZiBXS0NvbnRleHRSZWYgQVBJVHlwZTsgfTsKIHRlbXBsYXRl
PD4gc3RydWN0IEltcGxUeXBlSW5mbzxXZWJEYXRhKj4gICAgICAgICAgICAgICAgICAgICAgICB7
IHR5cGVkZWYgV0tEYXRhUmVmIEFQSVR5cGU7IH07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBJbXBsVHlw
ZUluZm88V2ViRG91YmxlKj4gICAgICAgICAgICAgICAgICAgICAgeyB0eXBlZGVmIFdLRG91Ymxl
UmVmIEFQSVR5cGU7IH07CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Jhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Jhc2UuaAkocmV2aXNpb24g
Njc3NDIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Jhc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNiArNDQsNyBAQCB0eXBlZGVmIHN0cnVjdCBPcGFxdWVXS0RpY3Rpb25hcnkqIFdL
TXV0CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0JhY2tGb3J3YXJkTGlzdCogV0tCYWNr
Rm9yd2FyZExpc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0JhY2tGb3J3YXJk
TGlzdEl0ZW0qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLQm9vbGVhbiogV0tCb29sZWFuUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tDZXJ0aWZpY2F0ZUluZm8qIFdLQ2VydGlmaWNhdGVJbmZvUmVmOwogdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tDb250ZXh0KiBXS0NvbnRleHRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS0RhdGEqIFdLRGF0YVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLRG91YmxlKiBXS0RvdWJsZVJlZjsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q2VydGlmaWNhdGVJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0NlcnRpZmljYXRlSW5mby5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NlcnRpZmljYXRlSW5mby5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV0tDZXJ0aWZpY2F0ZUluZm8uaCIKKworI2luY2x1
ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0NlcnRpZmljYXRlSW5mb0dldFR5cGVJ
RCgpCit7CisgICAgcmV0dXJuIHRvUmVmKFdlYkNlcnRpZmljYXRlSW5mbzo6QVBJVHlwZSk7Cit9
CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NlcnRpZmljYXRlSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ2VydGlmaWNhdGVJbmZvLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NlcnRpZmljYXRlSW5mby5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0Nl
cnRpZmljYXRlSW5mb19oCisjZGVmaW5lIFdLQ2VydGlmaWNhdGVJbmZvX2gKKworI2luY2x1ZGUg
PFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQ2VydGlmaWNhdGVJbmZvR2V0VHlwZUlEKCk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0NlcnRpZmlj
YXRlSW5mb19oICovCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAkocmV2aXNp
b24gNjc3NDIpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsMyArNzAsOCBAQCBXS1BhZ2VSZWYgV0tGcmFtZUdldFBhZ2UoV0tGcmFt
ZVJlZiBmcmFtCiB7CiAgICAgcmV0dXJuIHRvUmVmKHRvV0soZnJhbWVSZWYpLT5wYWdlKCkpOwog
fQorCitXS0NlcnRpZmljYXRlSW5mb1JlZiBXS0ZyYW1lR2V0Q2VydGlmaWNhdGVJbmZvKFdLRnJh
bWVSZWYgZnJhbWVSZWYpCit7CisgICAgcmV0dXJuIHRvUmVmKHRvV0soZnJhbWVSZWYpLT5jZXJ0
aWZpY2F0ZUluZm8oKSk7Cit9CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oCShyZXZp
c2lvbiA2Nzc0MikKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBXS19FWFBPUlQgV0tVUkxSZWYgV0tGcmFtZUNvcHlV
UkwoV0tGcmFtCiAKIFdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tGcmFtZUdldFBhZ2UoV0tGcmFtZVJl
ZiBmcmFtZSk7CiAKK1dLX0VYUE9SVCBXS0NlcnRpZmljYXRlSW5mb1JlZiBXS0ZyYW1lR2V0Q2Vy
dGlmaWNhdGVJbmZvKFdLRnJhbWVSZWYgZnJhbWUpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ICNlbmRpZgpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ2VydGlmaWNhdGVJ
bmZvTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLQ2Vy
dGlmaWNhdGVJbmZvTWFjLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9tYWMvV0tDZXJ0aWZpY2F0ZUluZm9NYWMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV0tDZXJ0aWZpY2F0ZUluZm9NYWNfaAorI2RlZmluZSBX
S0NlcnRpZmljYXRlSW5mb01hY19oCisKKyNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBDRkFycmF5UmVmIFdLQ2VydGlmaWNhdGVJ
bmZvR2V0UGVlckNlcnRpZmljYXRlcyhXS0NlcnRpZmljYXRlSW5mb1JlZiBjZXJ0aWZpY2F0ZUlu
Zm8pOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tDZXJ0
aWZpY2F0ZUluZm9NYWNfaCAqLwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
Q2VydGlmaWNhdGVJbmZvTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL21hYy9XS0NlcnRpZmljYXRlSW5mb01hYy5tbQkocmV2aXNpb24gMCkKKysrIFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL21hYy9XS0NlcnRpZmljYXRlSW5mb01hYy5tbQkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXS0NlcnRpZmljYXRlSW5m
b01hYy5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViQ2VydGlmaWNh
dGVJbmZvLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0NGQXJyYXlSZWYgV0tDZXJ0
aWZpY2F0ZUluZm9HZXRQZWVyQ2VydGlmaWNhdGVzKFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRp
ZmljYXRlSW5mb1JlZikKK3sKKyAgICByZXR1cm4gdG9XSyhjZXJ0aWZpY2F0ZUluZm9SZWYpLT5w
bGF0Zm9ybUNlcnRpZmljYXRlSW5mbygpLnBlZXJDZXJ0aWZpY2F0ZXMoKTsKK30KSW5kZXg6IFdl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2Nzc0MikK
KysrIFdlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzYsNiArMzM2LDE0IEBACiAJCUJDRjUwMTIxMTIzRUQzQjMwMDU5NTVBRSAvKiBU
aHJlYWRMYXVuY2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNGNTAxMUYxMjNFRDNCMzAwNTk1NUFFIC8qIFRocmVhZExhdW5jaGVyLmggKi87IH07
CiAJCUJDRjUwMTIyMTIzRUQzQjMwMDU5NTVBRSAvKiBUaHJlYWRMYXVuY2hlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y1MDEyMDEyM0VEM0Iz
MDA1OTU1QUUgLyogVGhyZWFkTGF1bmNoZXIuY3BwICovOyB9OwogCQlCQ0Y1MDFCNDEyM0VGNjAy
MDA1OTU1QUUgLyogVGhyZWFkTGF1bmNoZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y1MDFCMzEyM0VGNjAyMDA1OTU1QUUgLyogVGhyZWFk
TGF1bmNoZXJNYWMubW0gKi87IH07CisJCUJDRjUwNUU3MTI0MzA0N0IwMDU5NTVBRSAvKiBQbGF0
Zm9ybUNlcnRpZmljYXRlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNGNTA1RTUxMjQzMDQ3QjAwNTk1NUFFIC8qIFBsYXRmb3JtQ2VydGlmaWNh
dGVJbmZvLmggKi87IH07CisJCUJDRjUwNUU4MTI0MzA0N0IwMDU5NTVBRSAvKiBQbGF0Zm9ybUNl
cnRpZmljYXRlSW5mby5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRjUwNUU2MTI0MzA0N0IwMDU5NTVBRSAvKiBQbGF0Zm9ybUNlcnRpZmljYXRlSW5m
by5tbSAqLzsgfTsKKwkJQkNGNTA2ODUxMjQzMTg2MTAwNTk1NUFFIC8qIFNlY3VyaXR5LmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
RjUwNjg0MTI0MzE4NjEwMDU5NTVBRSAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi87IH07CisJCUJD
RjUwNzI0MTI0MzI4QTkwMDU5NTVBRSAvKiBXS0NlcnRpZmljYXRlSW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNTA3MjIxMjQzMjhBOTAwNTk1
NUFFIC8qIFdLQ2VydGlmaWNhdGVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OworCQlCQ0Y1MDcyNTEyNDMyOEE5MDA1OTU1QUUgLyogV0tDZXJ0aWZp
Y2F0ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNGNTA3MjMxMjQzMjhBOTAwNTk1NUFFIC8qIFdLQ2VydGlmaWNhdGVJbmZvLmNwcCAqLzsg
fTsKKwkJQkNGNTA3MjgxMjQzMjlBQTAwNTk1NUFFIC8qIFdlYkNlcnRpZmljYXRlSW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNTA3MjYxMjQz
MjlBQTAwNTk1NUFFIC8qIFdlYkNlcnRpZmljYXRlSW5mby5oICovOyB9OworCQlCQ0Y1MDcyRTEy
NDMyQTk3MDA1OTU1QUUgLyogV0tDZXJ0aWZpY2F0ZUluZm9NYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRjUwNzJDMTI0MzJBOTcwMDU5NTVBRSAv
KiBXS0NlcnRpZmljYXRlSW5mb01hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKKwkJQkNGNTA3MkYxMjQzMkE5NzAwNTk1NUFFIC8qIFdLQ2VydGlmaWNh
dGVJbmZvTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNGNTA3MkQxMjQzMkE5NzAwNTk1NUFFIC8qIFdLQ2VydGlmaWNhdGVJbmZvTWFjLm1tICov
OyB9OwogCQlCQ0Y2OUY4NjExNzZDRDZGMDA0NzFBNTIgLyogV2ViSGlzdG9yeUNsaWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2OUY4NDEx
NzZDRDZGMDA0NzFBNTIgLyogV2ViSGlzdG9yeUNsaWVudC5jcHAgKi87IH07CiAJCUJDRjY5Rjg3
MTE3NkNENkYwMDQ3MUE1MiAvKiBXZWJIaXN0b3J5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2OUY4NTExNzZDRDZGMDA0NzFBNTIgLyog
V2ViSGlzdG9yeUNsaWVudC5oICovOyB9OwogCQlCQ0Y2OUY5QTExNzZDRUQ2MDA0NzFBNTIgLyog
V2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkNGNjlGOTgxMTc2Q0VENjAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25E
YXRhU3RvcmUuaCAqLzsgfTsKQEAgLTcyMCw2ICs3MjgsMTQgQEAKIAkJQkNGNTAxMUYxMjNFRDNC
MzAwNTk1NUFFIC8qIFRocmVhZExhdW5jaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRocmVhZExhdW5jaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
RjUwMTIwMTIzRUQzQjMwMDU5NTVBRSAvKiBUaHJlYWRMYXVuY2hlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRMYXVuY2hlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDRjUwMUIzMTIzRUY2MDIwMDU5NTVBRSAvKiBUaHJlYWRMYXVu
Y2hlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRocmVh
ZExhdW5jaGVyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0Y1MDVFNTEy
NDMwNDdCMDA1OTU1QUUgLyogUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNGNTA1RTYxMjQzMDQ3QjAwNTk1NUFFIC8qIFBsYXRmb3Jt
Q2VydGlmaWNhdGVJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJDRjUwNjg0MTI0MzE4NjEwMDU5NTVBRSAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1l
d29yazsgbmFtZSA9IFNlY3VyaXR5LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+Ijsg
fTsKKwkJQkNGNTA3MjIxMjQzMjhBOTAwNTk1NUFFIC8qIFdLQ2VydGlmaWNhdGVJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ2VydGlmaWNhdGVJbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRjUwNzIzMTI0MzI4QTkwMDU5NTVBRSAvKiBXS0Nl
cnRpZmljYXRlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S0NlcnRpZmljYXRlSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRjUw
NzI2MTI0MzI5QUEwMDU5NTVBRSAvKiBXZWJDZXJ0aWZpY2F0ZUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2VydGlmaWNhdGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDRjUwNzJDMTI0MzJBOTcwMDU5NTVBRSAvKiBXS0NlcnRpZmljYXRl
SW5mb01hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NlcnRpZmljYXRl
SW5mb01hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQ0Y1MDcyRDEyNDMyQTk3
MDA1OTU1QUUgLyogV0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS0NlcnRpZmljYXRlSW5mb01hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkNGNjlGODQxMTc2Q0Q2RjAwNDcxQTUyIC8qIFdlYkhpc3RvcnlD
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSGlzdG9y
eUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRjY5Rjg1MTE3NkNE
NkYwMDQ3MUE1MiAvKiBXZWJIaXN0b3J5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkhpc3RvcnlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNGNjlGOTgxMTc2Q0VENjAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzYzLDYgKzc3OSw3IEBACiAJCQkJQkM4
N0RGQUExMDE4MTAxNDAwNTY0MjE2IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAq
LywKIAkJCQkxQUExQ0M1RDEwMEZBMUExMDA3OERFQkMgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLywKIAkJCQkxQTFDNEVDODEwRDA2MDk5MDA1RTY3RTcgLyogV2ViQ29y
ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlCQ0Y1MDY4NTEyNDMxODYxMDA1OTU1
QUUgLyogU2VjdXJpdHkuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC04MjYsNiArODQz
LDcgQEAKIAkJCQlCQzg3REZBOTEwMTgxMDE0MDA1NjQyMTYgLyogbGliaWN1Y29yZS5keWxpYiAq
LywKIAkJCQkxQUExQ0M1QzEwMEZBMUExMDA3OERFQkMgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsg
Ki8sCiAJCQkJMUFBMUM3OUExMDBFN0ZDNTAwNzhERUJDIC8qIFdlYkNvcmUuZnJhbWV3b3JrICov
LAorCQkJCUJDRjUwNjg0MTI0MzE4NjEwMDU5NTVBRSAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8s
CiAJCQkpOwogCQkJbmFtZSA9ICJMaW5rZWQgRnJhbWV3b3JrcyI7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtOTQyLDYgKzk2MCw3IEBACiAJCQkJMUEwRjI5QzkxMjBCMzcxNjAwNTNE
MUI5IC8qIFZpc2l0ZWRMaW5rVGFibGUuY3BwICovLAogCQkJCTFBMEYyOUNBMTIwQjM3MTYwMDUz
RDFCOSAvKiBWaXNpdGVkTGlua1RhYmxlLmggKi8sCiAJCQkJQkMxREQ3QjExMTREQzM5NjAwNUFE
QUYzIC8qIFdlYkNvcmVBcmd1bWVudENvZGVycy5oICovLAorCQkJCUJDRjUwNzI2MTI0MzI5QUEw
MDU5NTVBRSAvKiBXZWJDZXJ0aWZpY2F0ZUluZm8uaCAqLywKIAkJCQk1MTU3OEI4MjEyMDlFQ0VG
MDBBMzdDNEEgLyogV2ViRGF0YS5oICovLAogCQkJCTUxNkE0QTVCMTIwQTJDQ0QwMEMwNUI3RiAv
KiBXZWJFcnJvci5oICovLAogCQkJCUJDMDMyREFGMTBGNDM4MEYwMDU4QzE1QSAvKiBXZWJFdmVu
dC5oICovLApAQCAtOTUxLDEzICs5NzAsMTMgQEAKIAkJCQlCQzMzREQ2NzEyMzg0NjQ2MDAzNjBG
M0YgLyogV2ViTnVtYmVyLmggKi8sCiAJCQkJQkNENTk4QUIxMTJCN0ZERjAwRUM4QzIzIC8qIFdl
YlByZWZlcmVuY2VzU3RvcmUuY3BwICovLAogCQkJCUJDRDU5OEFBMTEyQjdGREYwMEVDOEMyMyAv
KiBXZWJQcmVmZXJlbmNlc1N0b3JlLmggKi8sCisJCQkJQTcyRDVEN0YxMjM2Q0JBODAwQTg4QjE1
IC8qIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovLAogCQkJCUJDRjA0QzhFMTFGRjlGNkUw
MEY4NkE1OCAvKiBXZWJTdHJpbmcuaCAqLywKIAkJCQlCQ0RCODZDMDEyMDBGQjk3MDA3MjU0QkUg
LyogV2ViVVJMLmggKi8sCiAJCQkJQkNFMjMxNUMxMjJDMzBDQTAwRDVDMzVBIC8qIFdlYlVSTFJl
cXVlc3QuY3BwICovLAogCQkJCUJDRTIzMTVCMTIyQzMwQ0EwMEQ1QzM1QSAvKiBXZWJVUkxSZXF1
ZXN0LmggKi8sCiAJCQkJQkM5MEExRDExMjJERDU1RTAwQ0M4QzUwIC8qIFdlYlVSTFJlc3BvbnNl
LmNwcCAqLywKIAkJCQlCQzkwQTFEMDEyMkRENTVFMDBDQzhDNTAgLyogV2ViVVJMUmVzcG9uc2Uu
aCAqLywKLQkJCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFNoYXJlZDsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC0xMTY2LDYgKzExODUsOCBAQAogCQkJCUJDNjQ2QzE4MTFERDM5OUYwMDY0
NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwICovLAogCQkJCUJDNjQ2QzE5MTFERDM5
OUYwMDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCAqLywKIAkJCQlCQzBDMzc2NzEw
RjgwN0IyMDA3NkQ3Q0IgLyogV0tCYXNlLmggKi8sCisJCQkJQkNGNTA3MjMxMjQzMjhBOTAwNTk1
NUFFIC8qIFdLQ2VydGlmaWNhdGVJbmZvLmNwcCAqLywKKwkJCQlCQ0Y1MDcyMjEyNDMyOEE5MDA1
OTU1QUUgLyogV0tDZXJ0aWZpY2F0ZUluZm8uaCAqLywKIAkJCQlCQ0I5RTI0QTExMjBFMTVDMDBB
MTM3RTAgLyogV0tDb250ZXh0LmNwcCAqLywKIAkJCQlCQ0I5RTI0OTExMjBFMTVDMDBBMTM3RTAg
LyogV0tDb250ZXh0LmggKi8sCiAJCQkJQkNDOTM4RTAxMTgwREU0NDAwODVFNUZFIC8qIFdLQ29u
dGV4dFByaXZhdGUuaCAqLywKQEAgLTEyNjMsNiArMTI4NCw4IEBACiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBNkY5RkI2MTFFMTQwODUwMERCMTM3MSAvKiBDb21t
YW5kTGluZU1hYy5jcHAgKi8sCisJCQkJQkNGNTA1RTYxMjQzMDQ3QjAwNTk1NUFFIC8qIFBsYXRm
b3JtQ2VydGlmaWNhdGVJbmZvLm1tICovLAorCQkJCUJDRjUwNUU1MTI0MzA0N0IwMDU5NTVBRSAv
KiBQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oICovLAogCQkJCUJDOUU5NUQyMTE0NDlCMDMwMDg3
MEU3MSAvKiBVcGRhdGVDaHVuay5jcHAgKi8sCiAJCQkJQkM5RTk1RDExMTQ0OUIwMzAwODcwRTcx
IC8qIFVwZGF0ZUNodW5rLmggKi8sCiAJCQkJQkNFMjMyNjIxMjJDNkNGMzAwRDVDMzVBIC8qIFdl
YkNvcmVBcmd1bWVudENvZGVyc01hYy5tbSAqLywKQEAgLTE0NDgsNiArMTQ3MSw4IEBACiAJCUJD
RTIzMjc2MTIyQzcxOEYwMEQ1QzM1QSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUJDRjUwNzJDMTI0MzJBOTcwMDU5NTVBRSAvKiBXS0NlcnRp
ZmljYXRlSW5mb01hYy5oICovLAorCQkJCUJDRjUwNzJEMTI0MzJBOTcwMDU5NTVBRSAvKiBXS0Nl
cnRpZmljYXRlSW5mb01hYy5tbSAqLywKIAkJCQlCQ0UyMzI3NzEyMkM3MUFDMDBENUMzNUEgLyog
V0tVUkxSZXF1ZXN0TlMuaCAqLywKIAkJCQlCQ0UyMzI3ODEyMkM3MUFDMDBENUMzNUEgLyogV0tV
UkxSZXF1ZXN0TlMubW0gKi8sCiAJCQkJQkM5MEExREUxMjJERDhFRTAwQ0M4QzUwIC8qIFdLVVJM
UmVzcG9uc2VOUy5oICovLApAQCAtMTYzMyw2ICsxNjU4LDEwIEBACiAJCQkJQkMzM0RFOEUxMjM4
NUMzMzAwMzYwRjNGIC8qIFdLTnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMzREYwNjEy
Mzg2NzdGMDAzNjBGM0YgLyogV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDRjUwMTIxMTIzRUQzQjMwMDU5NTVBRSAvKiBUaHJlYWRMYXVuY2hlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQkNGNTA1RTcxMjQzMDQ3QjAwNTk1NUFFIC8qIFBsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0Y1MDcyNDEyNDMyOEE5MDA1OTU1QUUg
LyogV0tDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCUJDRjUwNzI4MTI0MzI5
QUEwMDU5NTVBRSAvKiBXZWJDZXJ0aWZpY2F0ZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCUJD
RjUwNzJFMTI0MzJBOTcwMDU5NTVBRSAvKiBXS0NlcnRpZmljYXRlSW5mb01hYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0xODgwLDYgKzE5MDksOSBAQAogCQkJCUJDMzNERThGMTIzODVDMzMwMDM2MEYz
RiAvKiBXS051bWJlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Y1MDEyMjEyM0VEM0IzMDA1
OTU1QUUgLyogVGhyZWFkTGF1bmNoZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNGNTAxQjQx
MjNFRjYwMjAwNTk1NUFFIC8qIFRocmVhZExhdW5jaGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJQkNGNTA1RTgxMjQzMDQ3QjAwNTk1NUFFIC8qIFBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJQkNGNTA3MjUxMjQzMjhBOTAwNTk1NUFFIC8qIFdLQ2VydGlm
aWNhdGVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDRjUwNzJGMTI0MzJBOTcwMDU5NTVB
RSAvKiBXS0NlcnRpZmljYXRlSW5mb01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCShyZXZpc2lvbiA2Nzc0MikKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMu
aCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ2VydGlm
aWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgpAQCAtMzA5LDExICszMTAs
MTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDbwogICAgIGlmICgh
d2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVy
KCktPnJlc3BvbnNlKCk7CisKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQuCiAgICAg
d2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRDb21taXRMb2FkRm9yRnJh
bWUod2ViUGFnZSwgbV9mcmFtZSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5TWVz
c2FnZTo6RGlkQ29tbWl0TG9hZEZvckZyYW1lLCB3ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6
SW4obV9mcmFtZS0+ZnJhbWVJRCgpKSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVj
dGlvbigpLT5zZW5kKFdlYlBhZ2VQcm94eU1lc3NhZ2U6OkRpZENvbW1pdExvYWRGb3JGcmFtZSwg
d2ViUGFnZS0+cGFnZUlEKCksIENvcmVJUEM6OkluKG1fZnJhbWUtPmZyYW1lSUQoKSwgUGxhdGZv
cm1DZXJ0aWZpY2F0ZUluZm8ocmVzcG9uc2UpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA2Nzc0MikKKysrIFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDUsOSArMjA1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkVXNlUGx1Z2luRG9jdW1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIC8qbWltZVR5cGUqLykg
Y29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7Ci0gICAgCisKICAgICBXZWJG
cmFtZSogbV9mcmFtZTsKLSAgICAKICAgICBSZWZQdHI8UGx1Z2luVmlldz4gbV9wbHVnaW5WaWV3
OwogICAgIGJvb2wgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpblZpZXc7CiB9OwpJbmRleDogV2Vi
S2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi93aW4vV2ViS2l0
Mi52Y3Byb2oJKHJldmlzaW9uIDY3NzQyKQorKysgV2ViS2l0Mi93aW4vV2ViS2l0Mi52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2MSw2ICs0NjEsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0K
IAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXFdlYkNlcnRpZmljYXRlSW5m
by5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cU2hhcmVkXFdlYkV2ZW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtNTc2LDYgKzU4
MCwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cU2hhcmVkXHdpblxQbGF0Zm9ybUNlcnRpZmljYXRlSW5mby5oIg0KKwkJCQkJPg0K
KwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFNoYXJlZFx3
aW5cV2ViVVJMUmVxdWVzdFdpbi5jcHAiDQogCQkJCQk+DQogCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24NCkBAIC0xMzMxLDYgKzEzMzksMTQgQEAKIAkJCQkJCT4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJ
CTxGaWxlDQorCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tDZXJ0aWZp
Y2F0ZUluZm8uY3BwIg0KKwkJCQkJCT4NCisJCQkJCTwvRmlsZT4NCisJCQkJCTxGaWxlDQorCQkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxVSVByb2Nlc3NcQVBJXENcV0tDZXJ0aWZpY2F0ZUluZm8uaCIN
CisJCQkJCQk+DQorCQkJCQk8L0ZpbGU+DQorCQkJCQk8RmlsZQ0KIAkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cVUlQcm9jZXNzXEFQSVxDXFdLQ29udGV4dC5jcHAiDQogCQkJCQkJPg0KIAkJCQkJPC9G
aWxlPg0KSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDJHZW5lcmF0ZWQubWFrZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyR2VuZXJhdGVkLm1ha2UJKHJldmlzaW9uIDY3NzQyKQor
KysgV2ViS2l0Mi93aW4vV2ViS2l0MkdlbmVyYXRlZC5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC02
LDYgKzYsNyBAQCBhbGw6CiAgICAgeGNvcHkgL3kgL2QgIi4uXFVJUHJvY2Vzc1xBUElcQ1xXS0Jh
Y2tGb3J3YXJkTGlzdC5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAg
ICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLQmFja0ZvcndhcmRMaXN0SXRlbS5o
IiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIKICAgICB4Y29weSAveSAvZCAi
Li5cVUlQcm9jZXNzXEFQSVxDXFdLQmFzZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVc
V2ViS2l0MiIKKyAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLQ2VydGlmaWNh
dGVJbmZvLmgiICIkKFdFQktJVE9VVFBVVERJUilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5
IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENcV0tDb250ZXh0LmgiICIkKFdFQktJVE9VVFBVVERJ
UilcaW5jbHVkZVxXZWJLaXQyIgogICAgIHhjb3B5IC95IC9kICIuLlxVSVByb2Nlc3NcQVBJXENc
V0tDb250ZXh0UHJpdmF0ZS5oIiAiJChXRUJLSVRPVVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIK
ICAgICB4Y29weSAveSAvZCAiLi5cVUlQcm9jZXNzXEFQSVxDXFdLRGF0YS5oIiAiJChXRUJLSVRP
VVRQVVRESVIpXGluY2x1ZGVcV2ViS2l0MiIK
</data>
<flag name="review"
          id="57381"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>