<?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>85100</bug_id>
          
          <creation_ts>2012-04-27 14:30:01 -0700</creation_ts>
          <short_desc>WebKit IDL does not use exception syntax</short_desc>
          <delta_ts>2012-05-04 14:30:40 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/WebIDL/#idl-exceptions </bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>85078</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Erik Arvidsson">arv</reporter>
          <assigned_to name="Erik Arvidsson">arv</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>611901</commentid>
    <comment_count>0</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-04-27 14:30:01 -0700</bug_when>
    <thetext>WebIDL defines a special syntax for exception interfaces.

http://www.w3.org/TR/WebIDL/#idl-exceptions

which looks like

exception Name { ... }

We currently do not have a special syntax for this and we just use interface. For example, our interface for DOMException looks like this:

interface DOMException { ... }

http://trac.webkit.org/browser/trunk/Source/WebCore/dom/DOMCoreException.idl

when it should look like this

exception DOMException { ... }

http://www.w3.org/TR/dom/#exception-domexception</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611987</commentid>
    <comment_count>1</comment_count>
      <attachid>139300</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-04-27 16:19:02 -0700</bug_when>
    <thetext>Created attachment 139300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611996</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-27 16:22:54 -0700</bug_when>
    <thetext>Attachment 139300 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/ObjC/DOMTestExceptionInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestException.cpp:28:  wtf includes should be &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]
Source/WebCore/bindings/scripts/test/JS/JSTestException.h:58:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 3 in 26 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>616615</commentid>
    <comment_count>3</comment_count>
      <attachid>139300</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-05-04 14:01:37 -0700</bug_when>
    <thetext>Comment on attachment 139300
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        This add support for exception ExceptionName { ... } which currently sets a flag

add -&gt; adds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616664</commentid>
    <comment_count>4</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-05-04 14:22:26 -0700</bug_when>
    <thetext>Committed r116172: &lt;http://trac.webkit.org/changeset/116172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616671</commentid>
    <comment_count>5</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-05-04 14:29:36 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 139300 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139300&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        This add support for exception ExceptionName { ... } which currently sets a flag
&gt; 
&gt; add -&gt; adds

Sorry, this typo slipped through the rebase dance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616674</commentid>
    <comment_count>6</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-05-04 14:30:28 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 139300 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=139300&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; &gt; +        This add support for exception ExceptionName { ... } which currently sets a flag
&gt; &gt; 
&gt; &gt; add -&gt; adds
&gt; 
&gt; Sorry, this typo slipped through the rebase dance.

insanity wolf!!!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139300</attachid>
            <date>2012-04-27 16:19:02 -0700</date>
            <delta_ts>2012-05-04 14:01:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85100-20120427161901.patch</filename>
            <type>text/plain</type>
            <size>63270</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1NDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E3ODc3MGYzZWJjZTll
NThhOWRkMDRlYWU5OTEwMTRjYmI5ZWY5OS4uMTAyNDhjNjA1YTA0MWFiYWM4NzliNjJhNGU4OWRi
ZmJiYzBmY2MwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMi0wNC0yNyAgRXJp
ayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYktpdCBJREwgZG9l
cyBub3QgdXNlIGV4Y2VwdGlvbiBzeW50YXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg1MTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBhZGQgc3VwcG9ydCBmb3IgZXhjZXB0aW9uIEV4Y2VwdGlv
bk5hbWUgeyAuLi4gfSB3aGljaCBjdXJyZW50bHkgc2V0cyBhIGZsYWcKKyAgICAgICAgb24gdGhl
IGRvbUNsYXNzLgorCisgICAgICAgIEJpbmRpbmcgdGVzdHMgdXBkYXRlZC4KKworICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlRXhjZXB0aW9uLmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTEV4Y2VwdGlvbi5pZGw6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChQYXJzZUludGVyZmFjZSk6CisgICAgICAg
IChEZXRlcm1pbmVQYXJzZU1vZGUpOgorICAgICAgICAoUHJvY2Vzc1NlY3Rpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV4Y2VwdGlvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViRE9NVGVzdEV4Y2VwdGlvbjo6V2ViRE9NVGVzdEV4Y2VwdGlvblByaXZhdGU6OldlYkRP
TVRlc3RFeGNlcHRpb25Qcml2YXRlKToKKyAgICAgICAgKFdlYkRPTVRlc3RFeGNlcHRpb246Oldl
YkRPTVRlc3RFeGNlcHRpb25Qcml2YXRlKToKKyAgICAgICAgKFdlYkRPTVRlc3RFeGNlcHRpb246
OldlYkRPTVRlc3RFeGNlcHRpb24pOgorICAgICAgICAoV2ViRE9NVGVzdEV4Y2VwdGlvbjo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKFdlYkRPTVRlc3RFeGNlcHRpb246OmltcGwpOgorICAgICAgICAo
V2ViRE9NVGVzdEV4Y2VwdGlvbjo6fldlYkRPTVRlc3RFeGNlcHRpb24pOgorICAgICAgICAoV2Vi
RE9NVGVzdEV4Y2VwdGlvbjo6bmFtZSk6CisgICAgICAgICh0b1dlYkNvcmUpOgorICAgICAgICAo
dG9XZWJLaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVz
dEV4Y2VwdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViRE9N
VGVzdEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdEV4Y2VwdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6a2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgIChX
ZWJLaXQ6OndyYXBUZXN0RXhjZXB0aW9uKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9leGNl
cHRpb25fZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9zZXRf
cHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9nZXRfcHJvcGVy
dHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9jb25zdHJ1Y3RlZCk6Cisg
ICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX2NsYXNzX2luaXQpOgorICAgICAgICAo
d2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9leGNlcHRpb25fZ2V0X25hbWUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RFeGNlcHRpb24uaDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0
RE9NVGVzdEV4Y2VwdGlvbik6CisgICAgICAgIChfV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbkNsYXNz
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
RXhjZXB0aW9uUHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb25Db25zdHJ1
Y3Rvcjo6SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6
OnNlbGYpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9uOjpKU1Rlc3RFeGNlcHRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9uOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246OmNyZWF0ZVByb3RvdHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246OmRlc3Ryb3kpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0RXhjZXB0aW9uOjp+SlNUZXN0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEV4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEV4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdEV4Y2VwdGlvbk5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
RXhjZXB0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9u
OjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjppc09ic2VydmFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9uT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbk93bmVyOjpmaW5hbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVGVzdEV4
Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2Vw
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSlNUZXN0RXhjZXB0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbjo6aW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RFeGNlcHRpb246OnJlbGVhc2VJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2Vw
dGlvbjo6cmVsZWFzZUltcGxJZk5vdE51bGwpOgorICAgICAgICAoSlNUZXN0RXhjZXB0aW9uT3du
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6d3JhcHBlck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OndyYXBwZXJDb250ZXh0KToKKyAgICAgICAgKEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OkpTVGVzdEV4Y2Vw
dGlvblByb3RvdHlwZSk6CisgICAgICAgIChKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFeGNlcHRp
b24uaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEV4Y2VwdGlvbi5tbTogQWRkZWQuCisgICAgICAgICgtW0RPTVRlc3RFeGNlcHRpb24gZGVhbGxv
Y10pOgorICAgICAgICAoLVtET01UZXN0RXhjZXB0aW9uIGZpbmFsaXplXSk6CisgICAgICAgICgt
W0RPTVRlc3RFeGNlcHRpb24gbmFtZV0pOgorICAgICAgICAoY29yZSk6CisgICAgICAgIChraXQp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFeGNlcHRpb25J
bnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0RXhjZXB0aW9uLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoRXhjZXB0aW9uLmlkbC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFRlc3RFeGNlcHRpb25WOEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RF
eGNlcHRpb25WOEludGVybmFsOjpWOF9VU0UpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV4Y2Vw
dGlvblY4SW50ZXJuYWw6Om5hbWVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZp
Z3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV4
Y2VwdGlvbjo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhjZXB0
aW9uOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246Okhh
c0luc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6d3JhcFNsb3cp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhjZXB0aW9uOjpkZXJlZk9iamVjdCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVjhUZXN0RXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6dG9OYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0RXhjZXB0aW9uOjp3cmFwKToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAg
ICAqIGRvbS9ET01Db3JlRXhjZXB0aW9uLmlkbDoKKyAgICAgICAgKiBkb20vRXZlbnRFeGNlcHRp
b24uaWRsOgorICAgICAgICAqIGRvbS9SYW5nZUV4Y2VwdGlvbi5pZGw6CisgICAgICAgICogZmls
ZWFwaS9GaWxlRXhjZXB0aW9uLmlkbDoKKyAgICAgICAgKiBmaWxlYXBpL09wZXJhdGlvbk5vdEFs
bG93ZWRFeGNlcHRpb24uaWRsOgorICAgICAgICAqIHN2Zy9TVkdFeGNlcHRpb24uaWRsOgorICAg
ICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5pZGw6CisgICAgICAgICogeG1sL1hQ
YXRoRXhjZXB0aW9uLmlkbDoKKwogMjAxMi0wNC0yNyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXpr
b3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMTU0
ODQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUV4Y2VwdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUV4Y2VwdGlvbi5pZGwKaW5kZXggYzhlMWIzNTM2OGViZWY1MzI1M2E3ZGVjMmVlOTgw
NTgxMDg1NjM5MS4uYjRmMTllMWI5ZjVhOWE1NDZkNWVmM2IxYWRhM2YyZDAyOTZmYjVhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VFeGNl
cHRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlRXhjZXB0aW9uLmlkbApAQCAtMjUsNyArMjUsNyBAQAogCiBtb2R1bGUgc3RvcmFnZSB7CiAK
LSAgICBpbnRlcmZhY2UgWworICAgIGV4Y2VwdGlvbiBbCiAgICAgICAgIENvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UsCiAgICAgICAgIERvTm90Q2hlY2tDb25zdGFudHMKICAgICBdIElEQkRh
dGFiYXNlRXhjZXB0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMRXhjZXB0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMRXhjZXB0aW9uLmlkbAppbmRleCAzOWU1OGQ2OGUxYzQ2ODliMWM3NmZmYzFhNGJi
MzI2MDM2OTE4Y2QwLi44NTZlNWNkNDc1NzBhM2M2OWNjM2FiMzM2YzY4MDk5MzNiNWQ3YTBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEV4Y2VwdGlv
bi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxFeGNlcHRp
b24uaWRsCkBAIC0zMCw3ICszMCw3IEBACiAKIG1vZHVsZSBzdG9yYWdlIHsKIAotICAgIGludGVy
ZmFjZSBbCisgICAgZXhjZXB0aW9uIFsKICAgICAgICAgQ29uZGl0aW9uYWw9U1FMX0RBVEFCQVNF
LAogICAgICAgICBKU05vU3RhdGljVGFibGVzLAogICAgICAgICBEb05vdENoZWNrQ29uc3RhbnRz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNlci5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCmluZGV4IDRk
MTI2ZGI4NDhlYzU3YTBlYTU3NDczNjE2YzgzOTBmYTdiYmI2M2MuLjFhNjcwMzlhMWI5MTQxZjBk
YTVjZDM4NTE1OTJiMDZmYWEzODdkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMUGFyc2VyLnBtCkBAIC0zMiw2ICszMiw3IEBAIHVzZSBjb25zdGFudCBNT0RFX1VO
REVGICAgID0+IDA7ICMgRGVmYXVsdCBtb2RlLgogCiB1c2UgY29uc3RhbnQgTU9ERV9NT0RVTEUg
ID0+IDEwOyAjICdtb2R1bGUnIHNlY3Rpb24KIHVzZSBjb25zdGFudCBNT0RFX0lOVEVSRkFDRSAg
PT4gMTE7ICMgJ2ludGVyZmFjZScgc2VjdGlvbgordXNlIGNvbnN0YW50IE1PREVfRVhDRVBUSU9O
ICA9PiAxMjsgIyAnZXhjZXB0aW9uJyBzZWN0aW9uCiAKICMgSGVscGVyIHZhcmlhYmxlcwogbXkg
QHRlbXBvcmFyeUNvbnRlbnQ7CkBAIC0yNzQsNyArMjc1LDcgQEAgc3ViIFBhcnNlSW50ZXJmYWNl
CiAgICAgJGRhdGEgPX4gcy9bXG5ccl0vIC9nOwogCiAgICAgIyBCZWdpbm5pbmcgb2YgdGhlIHJl
Z2V4cCBwYXJzaW5nIG1hZ2ljCi0gICAgaWYgKCRzZWN0aW9uTmFtZSBlcSAiaW50ZXJmYWNlIikg
eworICAgIGlmICgkc2VjdGlvbk5hbWUgZXEgImludGVyZmFjZSIgfHwgJHNlY3Rpb25OYW1lIGVx
ICJleGNlcHRpb24iKSB7CiAgICAgICAgIHByaW50ICIgfC0gVHJ5aW5nIHRvIHBhcnNlIGludGVy
ZmFjZS4uLlxuIiB1bmxlc3MgJGJlUXVpZXQ7CiAKICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUg
PSAiIjsKQEAgLTI4MywxMiArMjg0LDE0IEBAIHN1YiBQYXJzZUludGVyZmFjZQogICAgICAgICAj
IE1hdGNoIGlkZW50aWZpZXIgb2YgdGhlIGludGVyZmFjZSwgYW5kIGVuY2xvc2VkIGRhdGEuLi4K
ICAgICAgICAgJGRhdGEgPX4gLyRJRExTdHJ1Y3R1cmU6OmludGVyZmFjZVNlbGVjdG9yLzsKIAot
ICAgICAgICBteSAkaW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDEpID8g
JDEgOiAiICIpOyBjaG9wKCRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMpOwotICAgICAgICAk
aW50ZXJmYWNlTmFtZSA9IChkZWZpbmVkKCQyKSA/ICQyIDogZGllKCJQYXJzaW5nIGVycm9yIVxu
U291cmNlOlxuJGRhdGFcbikiKSk7Ci0gICAgICAgIG15ICRpbnRlcmZhY2VCYXNlID0gKGRlZmlu
ZWQoJDMpID8gJDMgOiAiIik7Ci0gICAgICAgICRpbnRlcmZhY2VEYXRhID0gKGRlZmluZWQoJDQp
ID8gJDQgOiBkaWUoIlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKKyAgICAg
ICAgbXkgJGlzRXhjZXB0aW9uID0gKGRlZmluZWQoJDEpID8gKCQxIGVxICdleGNlcHRpb24nKSA6
IGRpZSgiUGFyc2luZyBlcnJvciFcblNvdXJjZTpcbiRkYXRhXG4pIikpOworICAgICAgICBteSAk
aW50ZXJmYWNlRXh0ZW5kZWRBdHRyaWJ1dGVzID0gKGRlZmluZWQoJDIpID8gJDIgOiAiICIpOyBj
aG9wKCRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICAkaW50ZXJmYWNlTmFt
ZSA9IChkZWZpbmVkKCQzKSA/ICQzIDogZGllKCJQYXJzaW5nIGVycm9yIVxuU291cmNlOlxuJGRh
dGFcbikiKSk7CisgICAgICAgIG15ICRpbnRlcmZhY2VCYXNlID0gKGRlZmluZWQoJDQpID8gJDQg
OiAiIik7CisgICAgICAgICRpbnRlcmZhY2VEYXRhID0gKGRlZmluZWQoJDUpID8gJDUgOiBkaWUo
IlBhcnNpbmcgZXJyb3IhXG5Tb3VyY2U6XG4kZGF0YVxuKSIpKTsKIAogICAgICAgICAjIEZpbGwg
aW4ga25vd24gcGFydHMgb2YgdGhlIGRvbUNsYXNzIGRhdGFzdHJ1Y3R1cmUgbm93Li4uCisgICAg
ICAgICRkYXRhTm9kZS0+aXNFeGNlcHRpb24oJGlzRXhjZXB0aW9uKTsKICAgICAgICAgJGRhdGFO
b2RlLT5uYW1lKCRpbnRlcmZhY2VOYW1lKTsKICAgICAgICAgbXkgJGV4dGVuZGVkQXR0cmlidXRl
cyA9IHBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVzKCRpbnRlcmZhY2VFeHRlbmRlZEF0dHJpYnV0ZXMp
OwogICAgICAgICBpZiAoZGVmaW5lZCAkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9y
In0pIHsKQEAgLTQyOCw4ICs0MzEsMTAgQEAgc3ViIERldGVybWluZVBhcnNlTW9kZQogICAgIG15
ICRtb2RlID0gTU9ERV9VTkRFRjsKICAgICBpZiAoJF8gPX4gL21vZHVsZS8pIHsKICAgICAgICAg
JG1vZGUgPSBNT0RFX01PRFVMRTsKLSAgICB9IGVsc2lmICgkXyA9fiAvaW50ZXJmYWNlLykgewor
ICAgIH0gZWxzaWYgKCRfID1+IC9pbnRlcmZhY2UvICkgewogICAgICAgICAkbW9kZSA9IE1PREVf
SU5URVJGQUNFOworICAgIH0gZWxzaWYgKCRfID1+IC9leGNlcHRpb24vICkgeworICAgICAgICAk
bW9kZSA9IE1PREVfRVhDRVBUSU9OOwogICAgIH0KIAogICAgIHJldHVybiAkbW9kZTsKQEAgLTQ0
NCw5ICs0NDksMTAgQEAgc3ViIFByb2Nlc3NTZWN0aW9uCiAgICAgICAgIGRpZSAoIlR3byBtb2R1
bGVzIGluIG9uZSBmaWxlISBGYXRhbCBlcnJvciFcbiIpIGlmICgkZG9jdW1lbnQgbmUgMCk7CiAg
ICAgICAgICRkb2N1bWVudCA9IG5ldyBpZGxEb2N1bWVudCgpOwogICAgICAgICAkb2JqZWN0LT5Q
YXJzZU1vZHVsZSgkZG9jdW1lbnQpOwotICAgIH0gZWxzaWYgKCRwYXJzZU1vZGUgZXEgTU9ERV9J
TlRFUkZBQ0UpIHsKKyAgICB9IGVsc2lmICgkcGFyc2VNb2RlIGVxIE1PREVfSU5URVJGQUNFIHx8
ICRwYXJzZU1vZGUgZXEgTU9ERV9FWENFUFRJT04pIHsKICAgICAgICAgbXkgJG5vZGUgPSBuZXcg
ZG9tQ2xhc3MoKTsKLSAgICAgICAgJG9iamVjdC0+UGFyc2VJbnRlcmZhY2UoJG5vZGUsICJpbnRl
cmZhY2UiKTsKKyAgICAgICAgbXkgJHNlY3Rpb25OYW1lID0gJHBhcnNlTW9kZSBlcSBNT0RFX0lO
VEVSRkFDRSA/ICJpbnRlcmZhY2UiIDogImV4Y2VwdGlvbiI7CisgICAgICAgICRvYmplY3QtPlBh
cnNlSW50ZXJmYWNlKCRub2RlLCAkc2VjdGlvbk5hbWUpOwogICAgIAogICAgICAgICBkaWUgKCJO
byBtb2R1bGUgc3BlY2lmaWVkISBGYXRhbCBFcnJvciFcbiIpIGlmICgkZG9jdW1lbnQgZXEgMCk7
CiAgICAgICAgIG15ICRhcnJheVJlZiA9ICRkb2N1bWVudC0+Y2xhc3NlczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KaW5kZXggN2M5MDM5ZjAw
NDAzYzMxMzRmYTY4ZWFjZmM4OTMyODNjZDM4NGYzMS4uNTQyNDE1M2RjOTY0OWI0Mjg1YmJhMmYy
YTFmZDA4MGY3MmQxNzJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9JRExTdHJ1Y3R1cmUucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExTdHJ1Y3R1cmUucG0KQEAgLTQxLDYgKzQxLDcgQEAgc3RydWN0KCBkb21DbGFzcyA9PiB7
CiAgICAgYXR0cmlidXRlcyA9PiAnQCcsICAgICMgTGlzdCBvZiAnZG9tQXR0cmlidXRlJyAgICAK
ICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVuZGVkIGF0dHJpYnV0ZXMKICAg
ICBjb25zdHJ1Y3RvciA9PiAnJCcsICMgQ29uc3RydWN0b3IKKyAgICBpc0V4Y2VwdGlvbiA9PiAn
JCcsICMgVXNlZCBmb3IgZXhjZXB0aW9uIGludGVyZmFjZXMKIH0pOwogCiAjIFVzZWQgdG8gcmVw
cmVzZW50IGRvbUNsYXNzIGNvbnRlbnRzIChuYW1lIG9mIG1ldGhvZCwgc2lnbmF0dXJlKQpAQCAt
MTAzLDcgKzEwNCw3IEBAIG91ciAkc2V0dGVyUmFpc2VzU2VsZWN0b3IgPSAnXGJzZXR0ZXJccyty
YWlzZXNccypcKCgnIC4gJGlkbElkTnNMaXN0IC4gJyopXHMqXCknCiAKIG91ciAkdHlwZU5hbWVz
cGFjZVNlbGVjdG9yID0gJygoPzonIC4gJGlkbElkIC4gJyo6OikqKVxzKignIC4gJGlkbERhdGFU
eXBlIC4gJyopJzsKIAotb3VyICRpbnRlcmZhY2VTZWxlY3RvciA9ICdpbnRlcmZhY2VccyooKD86
JyAuICRleHRlbmRlZEF0dHJpYnV0ZVN5bnRheCAuICcgKT8pKCcgLiAkaWRsSWROcyAuICcqKVxz
Kig/OjooXHMqW157XSopKT97KFstYS16QS1aMC05XyI9XHMoKSw7OlxbXF08PiZcfF0qKSc7Citv
dXIgJGludGVyZmFjZVNlbGVjdG9yID0gJyhpbnRlcmZhY2V8ZXhjZXB0aW9uKVxzKigoPzonIC4g
JGV4dGVuZGVkQXR0cmlidXRlU3ludGF4IC4gJyApPykoJyAuICRpZGxJZE5zIC4gJyopXHMqKD86
OihccypbXntdKikpP3soWy1hLXpBLVowLTlfIj1ccygpLDs6XFtcXTw+Jlx8XSopJzsKIG91ciAk
aW50ZXJmYWNlTWV0aG9kU2VsZWN0b3IgPSAnXHMqKCg/OicgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVT
eW50YXggLiAnICk/KShzdGF0aWNccyspPycgLiAkc3VwcG9ydGVkVHlwZXMgLiAnXHMqKCcgLiAk
aWRsSWROcyAuICcqKVxzKlwoXHMqKFthLXpBLVowLTk6XHMsPVxbXF08Pl0qKSc7CiBvdXIgJGlu
dGVyZmFjZVBhcmFtZXRlclNlbGVjdG9yID0gJyhpbnxvdXQpXHMqKCg/OicgLiAkZXh0ZW5kZWRB
dHRyaWJ1dGVTeW50YXggLiAnICk/KScgLiAkc3VwcG9ydGVkVHlwZXMgLiAnXHMqKCcgLiAkaWRs
SWROcyAuICcqKSc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRpb24uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY2YmJiYzNhMGFlN2VhNDg5MmU0ZDMxMTQ4NWI4YTc2ODhhYzQyNTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RF
eGNlcHRpb24uY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRE9NVGVzdEV4Y2VwdGlvbi5oIgorCisjaW5jbHVk
ZSAiS1VSTC5oIgorI2luY2x1ZGUgIlRlc3RFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJXZWJET01T
dHJpbmcuaCIKKyNpbmNsdWRlICJXZWJFeGNlcHRpb25IYW5kbGVyLmgiCisjaW5jbHVkZSAid3Rm
L3RleHQvQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKworc3RydWN0IFdlYkRPTVRlc3RFeGNlcHRpb246OldlYkRPTVRlc3RF
eGNlcHRpb25Qcml2YXRlIHsKKyAgICBXZWJET01UZXN0RXhjZXB0aW9uUHJpdmF0ZShXZWJDb3Jl
OjpUZXN0RXhjZXB0aW9uKiBvYmplY3QgPSAwKQorICAgICAgICA6IGltcGwob2JqZWN0KQorICAg
IHsKKyAgICB9CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdEV4Y2VwdGlvbj4gaW1wbDsKK307
CisKK1dlYkRPTVRlc3RFeGNlcHRpb246OldlYkRPTVRlc3RFeGNlcHRpb24oKQorICAgIDogV2Vi
RE9NT2JqZWN0KCkKKyAgICAsIG1faW1wbCgwKQoreworfQorCitXZWJET01UZXN0RXhjZXB0aW9u
OjpXZWJET01UZXN0RXhjZXB0aW9uKFdlYkNvcmU6OlRlc3RFeGNlcHRpb24qIGltcGwpCisgICAg
OiBXZWJET01PYmplY3QoKQorICAgICwgbV9pbXBsKG5ldyBXZWJET01UZXN0RXhjZXB0aW9uUHJp
dmF0ZShpbXBsKSkKK3sKK30KKworV2ViRE9NVGVzdEV4Y2VwdGlvbjo6V2ViRE9NVGVzdEV4Y2Vw
dGlvbihjb25zdCBXZWJET01UZXN0RXhjZXB0aW9uJiBjb3B5KQorICAgIDogV2ViRE9NT2JqZWN0
KCkKK3sKKyAgICBtX2ltcGwgPSBjb3B5LmltcGwoKSA/IG5ldyBXZWJET01UZXN0RXhjZXB0aW9u
UHJpdmF0ZShjb3B5LmltcGwoKSkgOiAwOworfQorCitXZWJET01UZXN0RXhjZXB0aW9uJiBXZWJE
T01UZXN0RXhjZXB0aW9uOjpvcGVyYXRvcj0oY29uc3QgV2ViRE9NVGVzdEV4Y2VwdGlvbiYgY29w
eSkKK3sKKyAgICBkZWxldGUgbV9pbXBsOworICAgIG1faW1wbCA9IGNvcHkuaW1wbCgpID8gbmV3
IFdlYkRPTVRlc3RFeGNlcHRpb25Qcml2YXRlKGNvcHkuaW1wbCgpKSA6IDA7CisgICAgcmV0dXJu
ICp0aGlzOworfQorCitXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBXZWJET01UZXN0RXhjZXB0aW9u
OjppbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBsID8gV1RGOjpnZXRQdHIobV9pbXBs
LT5pbXBsKSA6IDA7Cit9CisKK1dlYkRPTVRlc3RFeGNlcHRpb246On5XZWJET01UZXN0RXhjZXB0
aW9uKCkKK3sKKyAgICBkZWxldGUgbV9pbXBsOworICAgIG1faW1wbCA9IDA7Cit9CisKK1dlYkRP
TVN0cmluZyBXZWJET01UZXN0RXhjZXB0aW9uOjpuYW1lKCkgY29uc3QKK3sKKyAgICBpZiAoIWlt
cGwoKSkKKyAgICAgICAgcmV0dXJuIFdlYkRPTVN0cmluZygpOworCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGNvbnN0IFdURjo6U3RyaW5nJj4oaW1wbCgpLT5uYW1lKCkpOworfQorCitXZWJDb3Jl
OjpUZXN0RXhjZXB0aW9uKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdEV4Y2VwdGlvbiYgd3Jh
cHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBlci5pbXBsKCk7Cit9CisKK1dlYkRPTVRlc3RFeGNl
cHRpb24gdG9XZWJLaXQoV2ViQ29yZTo6VGVzdEV4Y2VwdGlvbiogdmFsdWUpCit7CisgICAgcmV0
dXJuIFdlYkRPTVRlc3RFeGNlcHRpb24odmFsdWUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0RXhjZXB0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RFeGNlcHRp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45ZDk1YzY2Mjc2MjY4NzJlZDkyYzY0Mjk3OWU4MDM0MzNjM2FkYjk3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0RXhjZXB0aW9uLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
U2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5k
ZWYgV2ViRE9NVGVzdEV4Y2VwdGlvbl9oCisjZGVmaW5lIFdlYkRPTVRlc3RFeGNlcHRpb25faAor
CisjaW5jbHVkZSA8V2ViRE9NT2JqZWN0Lmg+CisjaW5jbHVkZSA8V2ViRE9NU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRlc3RFeGNlcHRpb247Cit9OworCisKK2NsYXNz
IFdlYkRPTVRlc3RFeGNlcHRpb24gOiBwdWJsaWMgV2ViRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAg
ICBXZWJET01UZXN0RXhjZXB0aW9uKCk7CisgICAgZXhwbGljaXQgV2ViRE9NVGVzdEV4Y2VwdGlv
bihXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKik7CisgICAgV2ViRE9NVGVzdEV4Y2VwdGlvbihjb25z
dCBXZWJET01UZXN0RXhjZXB0aW9uJik7CisgICAgV2ViRE9NVGVzdEV4Y2VwdGlvbiYgb3BlcmF0
b3I9KGNvbnN0IFdlYkRPTVRlc3RFeGNlcHRpb24mKTsKKyAgICB2aXJ0dWFsIH5XZWJET01UZXN0
RXhjZXB0aW9uKCk7CisKKyAgICBXZWJET01TdHJpbmcgbmFtZSgpIGNvbnN0OworCisgICAgV2Vi
Q29yZTo6VGVzdEV4Y2VwdGlvbiogaW1wbCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgc3Ry
dWN0IFdlYkRPTVRlc3RFeGNlcHRpb25Qcml2YXRlOworICAgIFdlYkRPTVRlc3RFeGNlcHRpb25Q
cml2YXRlKiBtX2ltcGw7Cit9OworCitXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiB0b1dlYkNvcmUo
Y29uc3QgV2ViRE9NVGVzdEV4Y2VwdGlvbiYpOworV2ViRE9NVGVzdEV4Y2VwdGlvbiB0b1dlYktp
dChXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV4Y2Vw
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0RXhjZXB0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NGZlNmE2NzJjMDViN2QxMmQ3
OTBhMTk1NjUxZGFlMDZiMzE3MmNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbi5jcHAK
QEAgLTAsMCArMSwxNjUgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktp
dCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYktpdERPTVRlc3RFeGNlcHRpb24uaCIKKworI2luY2x1ZGUg
IkRPTU9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUg
IkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIlRlc3RFeGNlcHRpb24uaCIKKyNp
bmNsdWRlICJXZWJLaXRET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiZ29iamVjdC9Db252ZXJ0VG9V
VEY4U3RyaW5nLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRlc3RFeGNlcHRpb25Qcml2
YXRlLmgiCisjaW5jbHVkZSAid2Via2l0ZGVmaW5lcy5oIgorI2luY2x1ZGUgIndlYmtpdGdsb2Jh
bHNwcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0bWFyc2hhbC5oIgorI2luY2x1ZGUgPGdsaWIt
b2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYktpdERPTVRlc3RFeGNlcHRpb24qIGtpdChX
ZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBvYmopCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
b2JqLCAwKTsKKworICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9i
aikpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0RXhjZXB0aW9uKj4o
cmV0KTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0RXhjZXB0aW9uKj4o
RE9NT2JqZWN0Q2FjaGU6OnB1dChvYmosIFdlYktpdDo6d3JhcFRlc3RFeGNlcHRpb24ob2JqKSkp
OworfQorCitXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBjb3JlKFdlYktpdERPTVRlc3RFeGNlcHRp
b24qIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7CisK
KyAgICBXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6VGVzdEV4Y2VwdGlvbio+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2Jq
ZWN0KTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKKworICAgIHJl
dHVybiBjb3JlT2JqZWN0OworfQorCitXZWJLaXRET01UZXN0RXhjZXB0aW9uKiB3cmFwVGVzdEV4
Y2VwdGlvbihXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBjb3JlT2JqZWN0KQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOworCisgICAgLy8gV2UgY2FsbCByZWYoKSBy
YXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3Rv
cmUgYSBDKysgb2JqZWN0CisgICAgLy8gaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVy
ZS4gU2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZSBtYXRjaGluZyBkZXJlZigpLgorICAg
IGNvcmVPYmplY3QtPnJlZigpOworCisgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9FWENFUFRJ
T04oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX0VYQ0VQVElPTiwgImNvcmUtb2Jq
ZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
R19ERUZJTkVfVFlQRShXZWJLaXRET01UZXN0RXhjZXB0aW9uLCB3ZWJraXRfZG9tX3Rlc3RfZXhj
ZXB0aW9uLCBXRUJLSVRfVFlQRV9ET01fT0JKRUNUKQorCitlbnVtIHsKKyAgICBQUk9QXzAsCisg
ICAgUFJPUF9OQU1FLAorfTsKKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlv
bl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisKKyAgICBXZWJLaXRET01PYmplY3QqIGRv
bU9iamVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCk7CisgICAgCisgICAgaWYgKGRvbU9i
amVjdC0+Y29yZU9iamVjdCkgeworICAgICAgICBXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBjb3Jl
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEV4Y2VwdGlvbio+KGRvbU9iamVjdC0+
Y29yZU9iamVjdCk7CisKKyAgICAgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KGNv
cmVPYmplY3QpOworICAgICAgICBjb3JlT2JqZWN0LT5kZXJlZigpOworCisgICAgICAgIGRvbU9i
amVjdC0+Y29yZU9iamVjdCA9IDA7CisgICAgfQorCisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfZG9tX3Rlc3RfZXhjZXB0aW9uX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9leGNlcHRpb25fc2V0X3Byb3BlcnR5KEdP
YmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGRlZmF1bHQ6CisgICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVj
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21f
dGVzdF9leGNlcHRpb25fZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVy
dHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYktpdERPTVRlc3RFeGNlcHRpb24q
IHNlbGYgPSBXRUJLSVRfRE9NX1RFU1RfRVhDRVBUSU9OKG9iamVjdCk7CisgICAgV2ViQ29yZTo6
VGVzdEV4Y2VwdGlvbiogY29yZVNlbGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgc3dpdGNo
IChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBQUk9QX05BTUU6IHsKKyAgICAgICAgZ192YWx1ZV90
YWtlX3N0cmluZyh2YWx1ZSwgY29udmVydFRvVVRGOFN0cmluZyhjb3JlU2VsZi0+bmFtZSgpKSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKworCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXhj
ZXB0aW9uX2NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKK3sKKworICAgIGlmIChHX09CSkVD
VF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX3BhcmVudF9jbGFzcyktPmNvbnN0cnVj
dGVkKQorICAgICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX3Bh
cmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9leGNlcHRpb25fY2xhc3NfaW5pdChXZWJLaXRET01UZXN0RXhjZXB0aW9uQ2xh
c3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9
IHdlYmtpdF9kb21fdGVzdF9leGNlcHRpb25fZmluYWxpemU7CisgICAgZ29iamVjdENsYXNzLT5z
ZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX3NldF9wcm9wZXJ0eTsKKyAg
ICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9leGNlcHRpb25f
Z2V0X3Byb3BlcnR5OworICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0ZWQgPSB3ZWJraXRfZG9t
X3Rlc3RfZXhjZXB0aW9uX2NvbnN0cnVjdGVkOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX05BTUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3Bh
cmFtX3NwZWNfc3RyaW5nKCJuYW1lIiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9leGNlcHRpb25fbmFt
ZSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLW9ubHkgIGdjaGFyKiBUZXN0RXhj
ZXB0aW9uLm5hbWUiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0
dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiIsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxF
KSk7CisKKworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX2luaXQo
V2ViS2l0RE9NVGVzdEV4Y2VwdGlvbiogcmVxdWVzdCkKK3sKK30KKworZ2NoYXIqCit3ZWJraXRf
ZG9tX3Rlc3RfZXhjZXB0aW9uX2dldF9uYW1lKFdlYktpdERPTVRlc3RFeGNlcHRpb24qIHNlbGYp
Cit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RFeGNlcHRpb24qIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VU
RjhTdHJpbmcoaXRlbS0+bmFtZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0RXhjZXB0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWUxYWE1Y2EwMTg3
ODIyODE5ODJlYjRjZjQ3MDNiYmI0Njk4NjMwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFeGNlcHRp
b24uaApAQCAtMCwwICsxLDYwIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJh
dGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYg
V2ViS2l0RE9NVGVzdEV4Y2VwdGlvbl9oCisjZGVmaW5lIFdlYktpdERPTVRlc3RFeGNlcHRpb25f
aAorCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvV2ViS2l0RE9N
T2JqZWN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRlZmluZXMuaD4KKyNpbmNsdWRlIDx3
ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisjZGVmaW5lIFdFQktJ
VF9UWVBFX0RPTV9URVNUX0VYQ0VQVElPTiAgICAgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfZXhj
ZXB0aW9uX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9FWENFUFRJT04ob2Jq
KSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZ
UEVfRE9NX1RFU1RfRVhDRVBUSU9OLCBXZWJLaXRET01UZXN0RXhjZXB0aW9uKSkKKyNkZWZpbmUg
V0VCS0lUX0RPTV9URVNUX0VYQ0VQVElPTl9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19D
TEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9ET01fVEVTVF9FWENFUFRJT04sIFdlYktp
dERPTVRlc3RFeGNlcHRpb25DbGFzcykKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX0VYQ0VQ
VElPTihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJL
SVRfVFlQRV9ET01fVEVTVF9FWENFUFRJT04pKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1Rf
RVhDRVBUSU9OX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwg
IFdFQktJVF9UWVBFX0RPTV9URVNUX0VYQ0VQVElPTikpCisjZGVmaW5lIFdFQktJVF9ET01fVEVT
VF9FWENFUFRJT05fR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChv
YmopLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfRVhDRVBUSU9OLCBXZWJLaXRET01UZXN0RXhjZXB0
aW9uQ2xhc3MpKQorCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RFeGNlcHRpb24geworICAgIFdlYktp
dERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7Cit9OworCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RF
eGNlcHRpb25DbGFzcyB7CisgICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwor
fTsKKworV0VCS0lUX0FQSSBHVHlwZQord2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9nZXRfdHlw
ZSAodm9pZCk7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9nZXRfbmFtZToK
KyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0RXhjZXB0aW9uCisgKgorICogUmV0dXJuczoKKyAq
CisqKi8KK1dFQktJVF9BUEkgZ2NoYXIqCit3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX2dldF9u
YW1lKFdlYktpdERPTVRlc3RFeGNlcHRpb24qIHNlbGYpOworCitHX0VORF9ERUNMUworCisjZW5k
aWYgLyogV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXhjZXB0aW9u
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdEV4Y2VwdGlvblByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOGUwZjNmYzNjNDQz
ZTBkZTQ5YWJkYzA3NWRjYTBlZWIwN2NmMWZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV4Y2VwdGlv
blByaXZhdGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
Zm5kZWYgV2ViS2l0RE9NVGVzdEV4Y2VwdGlvblByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRET01U
ZXN0RXhjZXB0aW9uUHJpdmF0ZV9oCisKKyNpbmNsdWRlICJUZXN0RXhjZXB0aW9uLmgiCisjaW5j
bHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvV2ViS2l0RE9NT2JqZWN0Lmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbiogd3JhcFRlc3RF
eGNlcHRpb24oV2ViQ29yZTo6VGVzdEV4Y2VwdGlvbiopOworV2ViQ29yZTo6VGVzdEV4Y2VwdGlv
biogY29yZShXZWJLaXRET01UZXN0RXhjZXB0aW9uKiByZXF1ZXN0KTsKK1dlYktpdERPTVRlc3RF
eGNlcHRpb24qIGtpdChXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBub2RlKTsKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLyogV2ViS2l0RE9NVGVzdEV4Y2VwdGlvblByaXZhdGVfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXhjZXB0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjZlNmI5NmQ2YTc5MjZkZWRlMjNm
NjU0Y2QzNWM5Mjc3NzE4ODdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTAsMCArMSwxOTAg
QEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmlu
ZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTVGVzdEV4Y2VwdGlvbi5oIgorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlRl
c3RFeGNlcHRpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNUZXN0RXhjZXB0aW9uKTsKKy8qIEhh
c2ggdGFibGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEV4Y2VwdGlv
blRhYmxlVmFsdWVzW10gPQoreworICAgIHsgIm5hbWUiLCBEb250RGVsZXRlIHwgUmVhZE9ubHks
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
RXhjZXB0aW9uTmFtZSksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorICAgIHsgImNvbnN0
cnVjdG9yIiwgRG9udEVudW0gfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvciksIChpbnRw
dHJfdCkwLCBOb0ludHJpbnNpYyB9LAorICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRyaW5zaWMgfQor
fTsKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RFeGNlcHRpb25UYWJsZSA9IHsgNSwg
MywgSlNUZXN0RXhjZXB0aW9uVGFibGVWYWx1ZXMsIDAgfTsKKy8qIEhhc2ggdGFibGUgZm9yIGNv
bnN0cnVjdG9yICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFeGNlcHRp
b25Db25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQoreworICAgIHsgMCwgMCwgMCwgMCwgTm9JbnRy
aW5zaWMgfQorfTsKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RFeGNlcHRpb25Db25z
dHJ1Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvclRhYmxlVmFs
dWVzLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RFeGNlcHRpb25Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rl
c3RFeGNlcHRpb25Db25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dEV4Y2VwdGlvbkNvbnN0cnVjdG9yKSB9OworCitKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6
SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCkKK3sKK30KKwordm9pZCBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSk7CisgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBKU1Rlc3RF
eGNlcHRpb25Qcm90b3R5cGU6OnNlbGYoZXhlYywgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKK30KKworYm9vbCBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0
U3RhdGljVmFsdWVTbG90PEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+
KGV4ZWMsICZKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0RXhj
ZXB0aW9uQ29uc3RydWN0b3IqPihjZWxsKSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworYm9v
bCBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGdl
dFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvciwgSlNET01X
cmFwcGVyPihleGVjLCAmSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpT
VGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlw
dG9yKTsKK30KKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGVUYWJsZVZhbHVlc1tdID0K
K3sKKyAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KK307CisKK3N0YXRpYyBjb25zdCBI
YXNoVGFibGUgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlVGFibGUgPSB7IDEsIDAsIEpTVGVzdEV4
Y2VwdGlvblByb3RvdHlwZVRhYmxlVmFsdWVzLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0
RXhjZXB0aW9uUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RXhjZXB0aW9uUHJvdG90eXBlIiwg
JkJhc2U6OnNfaW5mbywgJkpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZVRhYmxlLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSkgfTsKKworSlNPYmplY3QqIEpT
VGVzdEV4Y2VwdGlvblByb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RF
eGNlcHRpb24+KGV4ZWMsIGdsb2JhbE9iamVjdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rl
c3RFeGNlcHRpb246OnNfaW5mbyA9IHsgIlRlc3RFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZvLCAm
SlNUZXN0RXhjZXB0aW9uVGFibGUsIDAgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV4Y2Vw
dGlvbikgfTsKKworSlNUZXN0RXhjZXB0aW9uOjpKU1Rlc3RFeGNlcHRpb24oU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVz
dEV4Y2VwdGlvbj4gaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCkKKyAgICAsIG1faW1wbChpbXBsLmxlYWtSZWYoKSkKK3sKK30KKwordm9pZCBKU1Rlc3RF
eGNlcHRpb246OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICBBU1NFUlQoaW5oZXJpdHMo
JnNfaW5mbykpOworfQorCitKU09iamVjdCogSlNUZXN0RXhjZXB0aW9uOjpjcmVhdGVQcm90b3R5
cGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAg
IHJldHVybiBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRh
KCksIGdsb2JhbE9iamVjdCwgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCit2b2lkIEpTVGVzdEV4Y2VwdGlvbjo6ZGVzdHJv
eShKU0M6OkpTQ2VsbCogY2VsbCkKK3sKKyAgICBKU1Rlc3RFeGNlcHRpb24qIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0
RXhjZXB0aW9uOjp+SlNUZXN0RXhjZXB0aW9uKCk7Cit9CisKK0pTVGVzdEV4Y2VwdGlvbjo6fkpT
VGVzdEV4Y2VwdGlvbigpCit7CisgICAgcmVsZWFzZUltcGxJZk5vdE51bGwoKTsKK30KKworYm9v
bCBKU1Rlc3RFeGNlcHRpb246OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCit7CisgICAgSlNUZXN0RXhjZXB0aW9uKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVz
dEV4Y2VwdGlvbio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09i
amVjdCwgJnNfaW5mbyk7CisgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RFeGNl
cHRpb24sIEJhc2U+KGV4ZWMsICZKU1Rlc3RFeGNlcHRpb25UYWJsZSwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBzbG90KTsKK30KKworYm9vbCBKU1Rlc3RFeGNlcHRpb246OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
eworICAgIEpTVGVzdEV4Y2VwdGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFeGNlcHRp
b24qPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
JnNfaW5mbyk7CisgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RFeGNl
cHRpb24sIEJhc2U+KGV4ZWMsICZKU1Rlc3RFeGNlcHRpb25UYWJsZSwgdGhpc09iamVjdCwgcHJv
cGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1l
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCit7
CisgICAgSlNUZXN0RXhjZXB0aW9uKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEV4Y2VwdGlv
bio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworICAgIFRl
c3RFeGNlcHRpb24qIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0RXhjZXB0aW9uKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIGltcGwtPm5h
bWUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlv
bkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYpCit7CisgICAgSlNUZXN0RXhjZXB0aW9uKiBkb21PYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0RXhjZXB0aW9uKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICByZXR1cm4gSlNUZXN0RXhj
ZXB0aW9uOjpnZXRDb25zdHJ1Y3RvcihleGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKTsK
K30KKworSlNWYWx1ZSBKU1Rlc3RFeGNlcHRpb246OmdldENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I+KGV4ZWMsIGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
aXNPYnNlcnZhYmxlKEpTVGVzdEV4Y2VwdGlvbioganNUZXN0RXhjZXB0aW9uKQoreworICAgIGlm
IChqc1Rlc3RFeGNlcHRpb24tPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEpTVGVzdEV4Y2VwdGlvbk93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVGVzdEV4Y2VwdGlv
bioganNUZXN0RXhjZXB0aW9uID0ganNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KGhhbmRsZS5nZXQo
KS5hc0NlbGwoKSk7CisgICAgaWYgKCFpc09ic2VydmFibGUoanNUZXN0RXhjZXB0aW9uKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0RXhjZXB0aW9uT3duZXI6OmZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQoreworICAgIEpTVGVz
dEV4Y2VwdGlvbioganNUZXN0RXhjZXB0aW9uID0ganNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KGhh
bmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCA9IHN0YXRp
Y19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIHVuY2FjaGVXcmFwcGVyKHdv
cmxkLCBqc1Rlc3RFeGNlcHRpb24tPmltcGwoKSwganNUZXN0RXhjZXB0aW9uKTsKKyAgICBqc1Rl
c3RFeGNlcHRpb24tPnJlbGVhc2VJbXBsKCk7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RXhj
ZXB0aW9uKiBpbXBsKQoreworICAgIHJldHVybiB3cmFwPEpTVGVzdEV4Y2VwdGlvbj4oZXhlYywg
Z2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKworVGVzdEV4Y2VwdGlvbiogdG9UZXN0RXhjZXB0aW9u
KEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMoJkpTVGVz
dEV4Y2VwdGlvbjo6c19pbmZvKSA/IGpzQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPihhc09iamVjdCh2
YWx1ZSkpLT5pbXBsKCkgOiAwOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWYxZmE4YWMxMzlmNTFiMjVkNjExYWZlMTE2NWU1NTRhMzJhYmM2OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRp
b24uaApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVm
IEpTVGVzdEV4Y2VwdGlvbl9oCisjZGVmaW5lIEpTVGVzdEV4Y2VwdGlvbl9oCisKKyNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJUZXN0RXhjZXB0aW9uLmgiCisjaW5jbHVkZSA8
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4K
KyNpbmNsdWRlIDxydW50aW1lL09iamVjdFByb3RvdHlwZS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEpTVGVzdEV4Y2VwdGlvbiA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgeworcHVi
bGljOgorICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CisgICAgc3RhdGljIEpTVGVzdEV4
Y2VwdGlvbiogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEV4Y2VwdGlvbj4gaW1wbCkKKyAgICB7
CisgICAgICAgIEpTVGVzdEV4Y2VwdGlvbiogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RFeGNlcHRpb24+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXAp
KSBKU1Rlc3RFeGNlcHRpb24oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpOworICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpKTsKKyAgICAg
ICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRl
UHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90
Jik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
OjpKU0NlbGwqKTsKKyAgICB+SlNUZXN0RXhjZXB0aW9uKCk7CisgICAgc3RhdGljIGNvbnN0IEpT
Qzo6Q2xhc3NJbmZvIHNfaW5mbzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgJnNfaW5mbyk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBUZXN0RXhj
ZXB0aW9uKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsOyB9CisgICAgdm9pZCByZWxlYXNl
SW1wbCgpIHsgbV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9CisKKyAgICB2b2lkIHJlbGVh
c2VJbXBsSWZOb3ROdWxsKCkgeyBpZiAobV9pbXBsKSB7IG1faW1wbC0+ZGVyZWYoKTsgbV9pbXBs
ID0gMDsgfSB9CisKK3ByaXZhdGU6CisgICAgVGVzdEV4Y2VwdGlvbiogbV9pbXBsOworcHJvdGVj
dGVkOgorICAgIEpTVGVzdEV4Y2VwdGlvbihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgUGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihKU0M6OkpTR2xvYmFsRGF0YSYpOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7Cit9OworCitjbGFzcyBKU1Rlc3RFeGNlcHRpb25Pd25lciA6IHB1YmxpYyBKU0M6
OldlYWtIYW5kbGVPd25lciB7CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xv
dFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3du
ZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQqLCBUZXN0RXhjZXB0aW9uKikKK3sKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEpTVGVzdEV4Y2VwdGlvbk93bmVyLCBqc1Rlc3RFeGNlcHRp
b25Pd25lciwgKCkpOworICAgIHJldHVybiAmanNUZXN0RXhjZXB0aW9uT3duZXI7Cit9CisKK2lu
bGluZSB2b2lkKiB3cmFwcGVyQ29udGV4dChET01XcmFwcGVyV29ybGQqIHdvcmxkLCBUZXN0RXhj
ZXB0aW9uKikKK3sKKyAgICByZXR1cm4gd29ybGQ7Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBUZXN0RXhjZXB0aW9uKik7CitUZXN0
RXhjZXB0aW9uKiB0b1Rlc3RFeGNlcHRpb24oSlNDOjpKU1ZhbHVlKTsKKworY2xhc3MgSlNUZXN0
RXhjZXB0aW9uUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU0M6OkpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICBzdGF0aWMgSlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEpTVGVzdEV4Y2VwdGlv
blByb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RF
eGNlcHRpb25Qcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdEV4Y2VwdGlvblByb3Rv
dHlwZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQor
CisgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICBzdGF0aWMgSlND
OjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBK
U1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKSA6IEpTQzo6SlNO
b25GaW5hbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpIHsgfQorcHJvdGVjdGVkOgorICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzOworfTsKKworY2xhc3MgSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9N
Q29uc3RydWN0b3JPYmplY3QgeworcHJpdmF0ZToKKyAgICBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1
Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7CisgICAgc3RhdGljIEpT
VGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CisgICAgeworICAgICAgICBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvciogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcj4oKmV4
ZWMtPmhlYXAoKSkpIEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3Qp
OworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5U2xvdChKU0M6OkpTQ2VsbCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVu
dGlmaWVyJiwgSlNDOjpQcm9wZXJ0eVNsb3QmKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpJZGVudGlmaWVyJiwgSlNDOjpQcm9wZXJ0eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgY29u
c3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAg
ICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgJnNfaW5mbyk7CisgICAgfQorcHJvdGVjdGVkOgorICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
SlNDOjpJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBET01Db25zdHJ1Y3Rvck9iamVjdDo6U3RydWN0
dXJlRmxhZ3M7Cit9OworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RFeGNl
cHRpb25OYW1lKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50
aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXhjZXB0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDhlMDQ0ZGVlYTQzN2U5ZWIyNDViYjk4OWRiN2QwMzlmZGMwYjg3NwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RFeGNlcHRpb24uaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdt
YWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01PYmplY3QuaD4KKworI2lmIFdF
QktJVF9WRVJTSU9OX01BWF9BTExPV0VEID49IFdFQktJVF9WRVJTSU9OX0xBVEVTVAorCitAY2xh
c3MgTlNTdHJpbmc7CisKK0BpbnRlcmZhY2UgRE9NVGVzdEV4Y2VwdGlvbiA6IERPTU9iamVjdAor
LSAoTlNTdHJpbmcgKiluYW1lOworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFeGNlcHRpb24ubW0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXhjZXB0aW9u
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjViYTM0NjA4MTg2ZDcwMTFlZGJkYTJjNzU3Y2QxYTA1NjcyZGZjNDQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0RXhjZXB0aW9uLm1tCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiBUaGlzIGZp
bGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9E
SUZZIQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkRPTUludGVybmFsLmgi
CisKKyNpbXBvcnQgIkRPTVRlc3RFeGNlcHRpb24uaCIKKworI2ltcG9ydCAiRE9NQmxvYkludGVy
bmFsLmgiCisjaW1wb3J0ICJET01DU1NSdWxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUNTU1Zh
bHVlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUV2ZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRP
TU5vZGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NU3R5bGVTaGVldEludGVybmFsLmgiCisjaW1w
b3J0ICJET01UZXN0RXhjZXB0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRs
ZXJzLmgiCisjaW1wb3J0ICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbXBvcnQgIktVUkwu
aCIKKyNpbXBvcnQgIlRlc3RFeGNlcHRpb24uaCIKKyNpbXBvcnQgIlRocmVhZENoZWNrLmgiCisj
aW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgorI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJp
dmF0ZS5oIgorI2ltcG9ydCA8d3RmL0dldFB0ci5oPgorCisjZGVmaW5lIElNUEwgcmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKj4oX2ludGVybmFsKQorCitAaW1wbGVtZW50
YXRpb24gRE9NVGVzdEV4Y2VwdGlvbgorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBpZiAoV2Vi
Q29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW0RPTVRlc3RFeGNlcHRpb24g
Y2xhc3NdLCBzZWxmKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKF9pbnRlcm5hbCkKKyAg
ICAgICAgSU1QTC0+ZGVyZWYoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQp
ZmluYWxpemUKK3sKKyAgICBpZiAoX2ludGVybmFsKQorICAgICAgICBJTVBMLT5kZXJlZigpOwor
ICAgIFtzdXBlciBmaW5hbGl6ZV07Cit9CisKKy0gKE5TU3RyaW5nICopbmFtZQoreworICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+bmFt
ZSgpOworfQorCitAZW5kCisKK1dlYkNvcmU6OlRlc3RFeGNlcHRpb24qIGNvcmUoRE9NVGVzdEV4
Y2VwdGlvbiAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6VGVzdEV4Y2VwdGlvbio+KHdyYXBwZXItPl9pbnRlcm5hbCkgOiAwOworfQor
CitET01UZXN0RXhjZXB0aW9uICpraXQoV2ViQ29yZTo6VGVzdEV4Y2VwdGlvbiogdmFsdWUpCit7
CisgICAgeyBET01fQVNTRVJUX01BSU5fVEhSRUFEKCk7IFdlYkNvcmVUaHJlYWRWaW9sYXRpb25D
aGVja1JvdW5kT25lKCk7IH07CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICBpZiAoRE9NVGVzdEV4Y2VwdGlvbiAqd3JhcHBlciA9IGdldERPTVdyYXBwZXIodmFsdWUp
KQorICAgICAgICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgIERP
TVRlc3RFeGNlcHRpb24gKndyYXBwZXIgPSBbW0RPTVRlc3RFeGNlcHRpb24gYWxsb2NdIF9pbml0
XTsKKyAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdElu
dGVybmFsKj4odmFsdWUpOworICAgIHZhbHVlLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHdy
YXBwZXIsIHZhbHVlKTsKKyAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEV4Y2VwdGlvbkludGVybmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0RXhjZXB0aW9uSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NGYzOGJjOTk3
MmY4OTYzMDIwOGQ0YWU3MGNmZmJjYmVjYzA0MTNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV4Y2VwdGlvbkludGVy
bmFsLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBX
ZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBv
cnQgPFdlYkNvcmUvRE9NVGVzdEV4Y2VwdGlvbi5oPgorCisjaWYgV0VCS0lUX1ZFUlNJT05fTUFY
X0FMTE9XRUQgPj0gV0VCS0lUX1ZFUlNJT05fTEFURVNUCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KyAgICBjbGFzcyBUZXN0RXhjZXB0aW9uOworfQorCitXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBj
b3JlKERPTVRlc3RFeGNlcHRpb24gKik7CitET01UZXN0RXhjZXB0aW9uICpraXQoV2ViQ29yZTo6
VGVzdEV4Y2VwdGlvbiopOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXhjZXB0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXhjZXB0aW9uLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzRhZjAw
MzUyNWMzM2MyNDZjM2FlZDdiYTlhYzFiMzUyMjg0YjQxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFeGNlcHRpb24uaWRsCkBAIC0w
LDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFc3RyQXJnLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KK21vZHVsZSB0ZXN0IHsKKyAgICBleGNlcHRpb24gVGVzdEV4
Y2VwdGlvbiB7CisgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOworICAg
IH07Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkMTc3N2YwMWZmZTlmOTBm
YjljN2NhOWYxZDM5ODllMjI3YjIxNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcApAQCAtMCwwICsx
LDEyNCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0
b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJWOFRlc3RFeGNlcHRpb24uaCIKKworI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5o
IgorI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0
LmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dyYXBwZXJUeXBlSW5mbyBWOFRlc3RFeGNlcHRpb246
OmluZm8gPSB7IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUsIFY4VGVzdEV4Y2VwdGlvbjo6
ZGVyZWZPYmplY3QsIDAsIDAgfTsKKworbmFtZXNwYWNlIFRlc3RFeGNlcHRpb25WOEludGVybmFs
IHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQorCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygi
RE9NLlRlc3RFeGNlcHRpb24ubmFtZS5fZ2V0Iik7CisgICAgVGVzdEV4Y2VwdGlvbiogaW1wID0g
VjhUZXN0RXhjZXB0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdjhT
dHJpbmcoaW1wLT5uYW1lKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgVGVzdEV4Y2VwdGlvblY4SW50ZXJuYWwKKworc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1
dGUgVGVzdEV4Y2VwdGlvbkF0dHJzW10gPSB7CisgICAgLy8gQXR0cmlidXRlICduYW1lJyAoVHlw
ZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCisgICAgeyJuYW1lIiwgVGVzdEV4
Y2VwdGlvblY4SW50ZXJuYWw6Om5hbWVBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKK307
CisKK3N0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGRlc2MpCit7CisgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKKworICAgIHY4OjpM
b2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOworICAgIGRlZmF1bHRTaWduYXR1
cmUgPSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEV4Y2VwdGlvbiIsIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RFeGNlcHRpb246OmludGVybmFsRmll
bGRDb3VudCwKKyAgICAgICAgVGVzdEV4Y2VwdGlvbkF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFRl
c3RFeGNlcHRpb25BdHRycyksCisgICAgICAgIDAsIDApOworICAgIFVOVVNFRF9QQVJBTShkZWZh
dWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KKyAg
ICAKKworICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQorICAgIGRlc2MtPlNldChnZXRU
b1N0cmluZ05hbWUoKSwgZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpKTsKKyAgICByZXR1cm4gZGVzYzsK
K30KKwordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2VwdGlv
bjo6R2V0UmF3VGVtcGxhdGUoKQoreworICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBkYXRh
ID0gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBWOEJpbmRpbmdQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBs
YXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0
ZU1hcCgpLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CisKKyAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsKKyAgICBkYXRhLT5yYXdUZW1w
bGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIHJldHVybiB0ZW1wbDsKK30KKwordjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVt
cGxhdGUoKQoreworICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhKiBkYXRhID0gVjhCaW5kaW5n
UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKKyAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6
VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgm
aW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAg
ICAgICByZXR1cm4gcmVzdWx0LT5zZWNvbmQ7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxl
U2NvcGU7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0K
KyAgICAgICAgQ29uZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUo
KSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICByZXR1
cm4gdGVtcGw7Cit9CisKK2Jvb2wgVjhUZXN0RXhjZXB0aW9uOjpIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCit7CisgICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKCktPkhh
c0luc3RhbmNlKHZhbHVlKTsKK30KKworCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEV4
Y2VwdGlvbjo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPiBpbXBsLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXI7Cisg
ICAgVjhQcm94eSogcHJveHkgPSAwOworICAgIHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3Rh
bnRpYXRlVjhPYmplY3QocHJveHksICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICBpZiAoVU5MSUtF
TFkod3JhcHBlci5Jc0VtcHR5KCkpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpOworCisgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGlt
ZSkKKyAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICBWOERPTVdy
YXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVySGFuZGxlKTsKKyAg
ICByZXR1cm4gd3JhcHBlcjsKK30KKwordm9pZCBWOFRlc3RFeGNlcHRpb246OmRlcmVmT2JqZWN0
KHZvaWQqIG9iamVjdCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXN0RXhjZXB0aW9uKj4ob2JqZWN0
KS0+ZGVyZWYoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg2ZDRhNGZmMmMwZWFiY2QxZTU3NTcxNmJhZDExZmFmMTYwNzI1NTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXhjZXB0aW9uLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhh
cyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisK
KyNpZm5kZWYgVjhUZXN0RXhjZXB0aW9uX2gKKyNkZWZpbmUgVjhUZXN0RXhjZXB0aW9uX2gKKwor
I2luY2x1ZGUgIlRlc3RFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNp
bmNsdWRlICJXcmFwcGVyVHlwZUluZm8uaCIKKyNpbmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFY4VGVzdEV4Y2VwdGlvbiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKKyAgICBzdGF0aWMg
Ym9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOworICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUoKTsKKyAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKCk7
CisgICAgc3RhdGljIFRlc3RFeGNlcHRpb24qIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gb2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdEV4
Y2VwdGlvbio+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBl
ck9iamVjdEluZGV4KSk7CisgICAgfQorICAgIGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwKFRlc3RFeGNlcHRpb24qLCB2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0
aWMgdm9pZCBkZXJlZk9iamVjdCh2b2lkKik7CisgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBp
bmZvOworICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0
V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7Citwcml2YXRlOgorICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8VGVzdEV4Y2VwdGlvbj4sIHY4
OjpJc29sYXRlKik7Cit9OworCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEV4Y2VwdGlv
bjo6d3JhcChUZXN0RXhjZXB0aW9uKiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3sKKyAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKCku
Z2V0KGltcGwpOworICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuIHdyYXBwZXI7CisgICAgcmV0dXJuIFY4VGVzdEV4Y2VwdGlvbjo6d3JhcFNsb3coaW1w
bCwgaXNvbGF0ZSk7Cit9CisKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0
RXhjZXB0aW9uKiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCit7CisgICAgaWYgKCFp
bXBsKQorICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKKyAgICByZXR1cm4gVjhUZXN0RXhjZXB0
aW9uOjp3cmFwKGltcGwsIGlzb2xhdGUpOworfQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4KFBhc3NSZWZQdHI8IFRlc3RFeGNlcHRpb24gPiBpbXBsLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSA9IDApCit7CisgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSwgaXNvbGF0ZSk7Cit9CisK
K30KKworI2VuZGlmIC8vIFY4VGVzdEV4Y2VwdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRE9NQ29yZUV4Y2VwdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQ29y
ZUV4Y2VwdGlvbi5pZGwKaW5kZXggYWRkNWJkOWExM2Q3ZTdiZjQwZTIwNTFmMTA3MTY3NzhkMjVj
YzU0MC4uMzg3YmI2YmIyMjg1NzRiYmRiMWZiMWY4MTJkZWZjNjdjNWM0NzIzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUNvcmVFeGNlcHRpb24uaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9ET01Db3JlRXhjZXB0aW9uLmlkbApAQCAtMjgsNyArMjgsNyBAQAogCiBtb2R1
bGUgY29yZSB7CiAKLSAgICBpbnRlcmZhY2UgWworICAgIGV4Y2VwdGlvbiBbCiAgICAgICAgIEpT
Tm9TdGF0aWNUYWJsZXMsCiAgICAgICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgICAgIElu
dGVyZmFjZU5hbWU9RE9NRXhjZXB0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRFeGNlcHRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RXhjZXB0aW9uLmlk
bAppbmRleCAyOGJjZjkxMzA2MTVlOTE5ZTlmYjQ2ZGZmZDEzNDFiNzBmMDI3YTg3Li45ZDEwNWNi
ZmNlZDVhM2Y0ZmU2ZWVmM2MzYjQ0MzY2NDZjNjI4YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRFeGNlcHRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dEV4Y2VwdGlvbi5pZGwKQEAgLTI5LDcgKzI5LDcgQEAKIG1vZHVsZSBldmVudHMgewogCiAgICAg
Ly8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKLSAgICBpbnRlcmZhY2UgWworICAgIGV4Y2Vw
dGlvbiBbCiAgICAgICAgIEpTTm9TdGF0aWNUYWJsZXMsCiAgICAgICAgIERvTm90Q2hlY2tDb25z
dGFudHMKICAgICBdIEV2ZW50RXhjZXB0aW9uIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9SYW5nZUV4Y2VwdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VFeGNlcHRp
b24uaWRsCmluZGV4IGIyZGZjNmM1YjY3NjRiYTU0MjQxYzgzMTBkYThlNjE3OGJhZDBkMWEuLjdl
ZjhjNGE1YWIyMTk5Y2U5NTAwMDJiMjM4ZDBjOGU2YmY5OTFiYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZUV4Y2VwdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlRXhjZXB0aW9uLmlkbApAQCAtMTksNyArMTksNyBAQAogCiBtb2R1bGUgcmFuZ2VzIHsK
IAotICAgIGludGVyZmFjZSBbCisgICAgZXhjZXB0aW9uIFsKICAgICAgICAgRG9Ob3RDaGVja0Nv
bnN0YW50cwogICAgIF0gUmFuZ2VFeGNlcHRpb24gewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVFeGNlcHRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlRXhjZXB0aW9uLmlkbAppbmRleCA2NWRlMjI1ZmY1ZGVmYzZlMjEzMDVjZDQwYjgxNWI1Mjhk
OWFkZDFjLi4zMzI0NGY5ZmMyYmQ1NmFjZjcyOWY3NzIzNTU5YmJjM2RlYWE5MGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVFeGNlcHRpb24uaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUV4Y2VwdGlvbi5pZGwKQEAgLTI5LDcgKzI5LDcgQEAKICAq
LwogCiBtb2R1bGUgaHRtbCB7Ci0gICAgaW50ZXJmYWNlIFsKKyAgICBleGNlcHRpb24gWwogICAg
ICAgICBDb25kaXRpb25hbD1CTE9CfEZJTEVfU1lTVEVNLAogICAgICAgICBEb05vdENoZWNrQ29u
c3RhbnRzLAogICAgICAgICBKU05vU3RhdGljVGFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL09wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24uaWRsIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9PcGVyYXRpb25Ob3RBbGxvd2VkRXhjZXB0aW9uLmlkbAppbmRleCAwYTEw
Y2Q4MWM2N2NmYmE0YmQxYzg5Y2ZkNDFlNDY2YTJkMzY0MjlhLi41MDA0MGRmNjA4ZmVhYWVmOWEx
OGNhYzdkZDAyYmFmZjZhN2M3M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L09wZXJhdGlvbk5vdEFsbG93ZWRFeGNlcHRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvT3BlcmF0aW9uTm90QWxsb3dlZEV4Y2VwdGlvbi5pZGwKQEAgLTI5LDcgKzI5LDcgQEAK
ICAqLwogCiBtb2R1bGUgaHRtbCB7Ci0gICAgaW50ZXJmYWNlIFsKKyAgICBleGNlcHRpb24gWwog
ICAgICAgICBDb25kaXRpb25hbD1CTE9CLAogICAgICAgICBEb05vdENoZWNrQ29uc3RhbnRzLAog
ICAgICAgICBKU05vU3RhdGljVGFibGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRXhjZXB0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeGNlcHRpb24uaWRsCmlu
ZGV4IDliM2E2YThjYTJkYzEwOGFlOGUzOWY2Nzc4NmU0ZGJjYWE3NmY4ZDMuLjU3MjU1YzM2MTQw
NTA5MTM3NDJhZmU0Y2RlZDc4MDg5YWM1ZTg3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFeGNlcHRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeGNlcHRp
b24uaWRsCkBAIC0yMCw3ICsyMCw3IEBACiAKIG1vZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNl
IFsKKyAgICBleGNlcHRpb24gWwogICAgICAgICBDb25kaXRpb25hbD1TVkcsCiAgICAgICAgIERv
Tm90Q2hlY2tDb25zdGFudHMKICAgICBdIFNWR0V4Y2VwdGlvbiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaWRsIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmlkbAppbmRleCBjNDQ4MTU1YWI0ZWNlYTY4
ZmE0YjQ4OWQxNGJmZTJhNmNkMmU3M2JjLi5hMGJlNDU4MjVmNGM5NjY0MjRhYjYxMTc4ZGUyY2Vj
N2ViMmJlYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3RF
eGNlcHRpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdEV4Y2Vw
dGlvbi5pZGwKQEAgLTI4LDcgKzI4LDcgQEAKIAogbW9kdWxlIHhtbCB7CiAKLSAgICBpbnRlcmZh
Y2UgWworICAgIGV4Y2VwdGlvbiBbCiAgICAgICAgIEpTTm9TdGF0aWNUYWJsZXMsCiAgICAgICAg
IERvTm90Q2hlY2tDb25zdGFudHMKICAgICBdIFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4Y2VwdGlvbi5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhFeGNlcHRpb24uaWRsCmluZGV4IDgxOTZjYmU1YWQzMjAwZGNkNGMz
YjVlOWNiMGY2NjBlYjkwZTE1YjEuLmNlYzBjNTQxZDkwNTE3NjZkZTE3NzNkYjY1NzhmYzUyMTU0
YTg3NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4Y2VwdGlvbi5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRXhjZXB0aW9uLmlkbApAQCAtMjgsNyArMjgs
NyBAQAogCiBtb2R1bGUgeHBhdGggewogCi0gICAgaW50ZXJmYWNlIFsKKyAgICBleGNlcHRpb24g
WwogICAgICAgICBEb05vdENoZWNrQ29uc3RhbnRzCiAgICAgXSBYUGF0aEV4Y2VwdGlvbiB7CiAK
</data>
<flag name="review"
          id="144891"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>