<?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>142900</bug_id>
          
          <creation_ts>2015-03-19 23:08:23 -0700</creation_ts>
          <short_desc>[Content Filtering] Add tests for unblock requests</short_desc>
          <delta_ts>2015-03-20 01:43:37 -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>New Bugs</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></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>128858</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078763</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-03-19 23:08:23 -0700</bug_when>
    <thetext>[Content Filtering] Add tests for unblock requests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078776</commentid>
    <comment_count>1</comment_count>
      <attachid>249093</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-03-20 00:54:00 -0700</bug_when>
    <thetext>Created attachment 249093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078779</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-20 00:56:41 -0700</bug_when>
    <thetext>Attachment 249093 did not pass style-queue:


ERROR: Source/WebCore/loader/ContentFilter.cpp:71:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/loader/ContentFilter.cpp:148:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/testing/MockContentFilter.cpp:100:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:51:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:125:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 5 in 32 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>1078792</commentid>
    <comment_count>3</comment_count>
      <attachid>249093</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-03-20 01:33:25 -0700</bug_when>
    <thetext>Comment on attachment 249093
Patch

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

r=me

&gt; Source/WebCore/testing/MockContentFilter.cpp:111
&gt; +    return &quot;unblockRequestDenied()&quot;;

This would be slightly more efficient using ASCIILiteral:
    return ASCIILiteral(&quot;unblockRequestDenied()&quot;);

&gt; Source/WebKit2/UIProcess/WebFrameProxy.cpp:245
&gt; +        if (unblocked &amp;&amp; page)
&gt; +            page-&gt;reload(false);

&apos;page&apos; cannot be null here, since the only caller of this function is a member function in WebPageProxy.
This could just be an assertion outside the block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078795</commentid>
    <comment_count>4</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-03-20 01:43:37 -0700</bug_when>
    <thetext>Committed r181791: &lt;http://trac.webkit.org/changeset/181791&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249093</attachid>
            <date>2015-03-20 00:54:00 -0700</date>
            <delta_ts>2015-03-20 01:33:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142900-20150320005327.patch</filename>
            <type>text/plain</type>
            <size>58041</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU3MGUxZGJhNDczYzQw
ZjMxNTJmN2U1YTllYzIwYmE1ZTI3NzQ3Yy4uYzhmZWRhYzNkNzMzMDIyYWI3NzVjOThlMGYwYzlh
MDU0ZDhjOWY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDE1LTAzLTE5ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29udGVudCBGaWx0ZXJpbmdd
IEFkZCB0ZXN0cyBmb3IgdW5ibG9jayByZXF1ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHRoZSBpT1MgUGFyZW50YWwgQ29udHJv
bHMgY29udGVudCBmaWx0ZXIgaGFzIGEgbWVjaGFuaXNtIGZvciByZXF1ZXN0aW5nIHRoYXQgYSBw
YWdlIGJlIHVuYmxvY2tlZC4KKyAgICAgICAgV2ViS2l0IGltcGxlbWVudHMgdGhpcyBieSBsaXN0
ZW5pbmcgZm9yIG5hdmlnYXRpb25zIG9yaWdpbmF0aW5nIGZyb20gdGhlIGZpbHRlcidzIGVycm9y
IHBhZ2UgdG8gYSBzcGVjaWFsIFVSTCwKKyAgICAgICAgYW5kIHJlcXVlc3RpbmcgdGhlIHBhZ2Ug
YmUgdW5ibG9ja2VkIHZpYSBwbGF0Zm9ybSBBUEksIHdoaWNoIG1pZ2h0IGNhdXNlIFVJIHRvIGJl
IGRpc3BsYXllZC4gSWYgdGhlIHVuYmxvY2sgaXMKKyAgICAgICAgc3VjY2Vzc2Z1bCB0aGVuIHdl
IHNjaGVkdWxlIGEgcmVsb2FkIG9mIHRoZSBmcmFtZSBpbiBvcmRlciB0byBkaXNwbGF5IHRoZSB1
bmJsb2NrZWQgZG9jdW1lbnQuCisKKyAgICAgICAgTmV0d29ya0V4dGVuc2lvbiBhbHNvIHN1cHBv
cnRzIHVuYmxvY2sgcmVxdWVzdHMsIHNvIGluIHByZXBhcmF0aW9uIGZvciBhZG9wdGluZyBpdHMg
QVBJLCB0aGlzIHBhdGNoIGFsbG93cworICAgICAgICBjb250ZW50IGZpbHRlcnMgdG8gc3BlY2lm
eSB0aGVpciBvd24gdW5ibG9jayByZXF1ZXN0IG1ldGhvZCwgdGVhY2hlcyBNb2NrQ29udGVudEZp
bHRlciB0byBwcm92aWRlIHN1Y2ggYSBtZXRob2QsCisgICAgICAgIGFuZCB3cml0ZXMgdGVzdHMg
dG8gY292ZXIgYm90aCBhbGxvd2VkIGFuZCBkZW5pZWQgdW5ibG9jayByZXF1ZXN0cy4KKworICAg
ICAgICBUaGUgY29udGVudCBmaWx0ZXIgdGhhdCBibG9ja3MgYSBsb2FkIGNyZWF0ZXMgYSBDb250
ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIsIHBhc3NpbmcgaXQgYSBsYW1iZGEgdGhhdCBpcyBleGVj
dXRlZAorICAgICAgICB3aGVuIGEgbmF2aWdhdGlvbiBtYXRjaGVzIHRoZSBmaWx0ZXIncyBzcGVj
aWFsIHVuYmxvY2sgVVJMLiBGaWx0ZXJzIGNhbiBhbHNvIHNwZWNpZnkgdGhhdCBhIHNjcmlwdCBi
ZSBleGVjdXRlZCBpbgorICAgICAgICB0aGUgY29udGV4dCBvZiBpdHMgZXJyb3IgcGFnZSBpZiB0
aGUgdW5ibG9jayBpcyBkZW5pZWQuCisKKyAgICAgICAgQWxsIHBsYXRmb3JtIGNvbnRlbnQgZmls
dGVycyBjYW4gaGFuZGxlIHVuYmxvY2sgcmVxdWVzdHMgbGlrZSB0aGlzIHdpdGggdGhlIGV4Y2Vw
dGlvbiBvZiBpT1MgUGFyZW50YWwgQ29udHJvbHMgaW4gV2ViS2l0Mi4KKyAgICAgICAgU2luY2Ug
VUkgY2FuIGJlIGRpc3BsYXllZCBieSB0aGUgc3lzdGVtIGluIHRoaXMgY2FzZSwgdGhlIHJlcXVl
c3QgbXVzdCBiZSBtYWRlIGZyb20gd2l0aGluIHRoZSBVSSBwcm9jZXNzLiBUaGVyZWZvcmUgdGhl
CisgICAgICAgIGV4aXN0aW5nIG1ldGhvZCBpcyByZXRhaW5lZCBvZiBzZXJpYWxpemluZyBhIFdl
YkZpbHRlckV2YWx1YXRvciBhbmQgaW50ZXJjZXB0aW5nIG5hdmlnYXRpb24gcG9saWN5IGNhbGxz
IGluIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIFRlc3RzOiBjb250ZW50ZmlsdGVyaW5nL2Fs
bG93LWFmdGVyLXVuYmxvY2stcmVxdWVzdC5odG1sCisgICAgICAgICAgICAgICBjb250ZW50Zmls
dGVyaW5nL2Jsb2NrLWFmdGVyLXVuYmxvY2stcmVxdWVzdC5odG1sCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3NDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpkZWNpc2lvblBvaW50KTogQWRk
ZWQgc29tZSB1c2luZyBzdGF0ZW1lbnRzIGZvciBjbGFyaXR5LgorICAgICAgICAoV2ViQ29yZTo6
SlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjp0b0pTVmFsdWUpOiBSZXR1cm5zIGEgSlNWYWx1ZSBmcm9tIGEgRGVj
aXNpb24uCisgICAgICAgIChXZWJDb3JlOjp0b0RlY2lzaW9uKTogUmV0dXJucyBhIERlY2lzaW9u
IGZyb20gYSBKU1ZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6SlNNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpkZWNpc2lvbik6IFVzZWQgdG9KU1ZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6SlNN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvbik6IFVzZWQgdG9EZWNpc2lvbi4K
KyAgICAgICAgKFdlYkNvcmU6OkpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9ja1Jl
cXVlc3REZWNpc2lvbik6IFVzZWQgdG9KU1ZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6SlNNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKTogVXNlZCB0
b0RlY2lzaW9uLgorICAgICAgICAqIGxvYWRlci9Db250ZW50RmlsdGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OmNyZWF0ZUlmTmVlZGVkKTogUGFzc2VkIGEgcmVmZXJl
bmNlIHRvIHRoZSBvd25pbmcgRG9jdW1lbnRMb2FkZXIuCisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjpDb250ZW50RmlsdGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RmlsdGVyOjp1bmJsb2NrSGFuZGxlcik6IElmIHRoZSB1bmJsb2NrSGFuZGxlciByZXF1ZXN0
cyB0aGF0IGEgc2NyaXB0IGJlIGV4ZWN1dGVkIHdoZW4gYW4KKyAgICAgICAgdW5ibG9jayByZXF1
ZXN0IGlzIGRlbmllZCwgY3JlYXRlIGEgd3JhcHBlciB1bmJsb2NrSGFuZGxlciB0aGF0IGV4ZWN1
dGVzIHRoYXQgc2NyaXB0IGluIG1fZG9jdW1lbnRMb2FkZXIncyBmcmFtZS4KKyAgICAgICAgKiBs
b2FkZXIvQ29udGVudEZpbHRlci5oOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6
IFBhc3NlZCB0aGlzIHRvIENvbnRlbnRGaWx0ZXI6OmNyZWF0ZUlmTmVlZGVkLgorICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
cHJlcGFyZUZvckxvYWRTdGFydCk6IENhbGxlZCBQb2xpY3lDaGVja2VyOjpwcmVwYXJlRm9yTG9h
ZFN0YXJ0LgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBvbGljeUNoZWNrZXI6OnByZXBhcmVGb3JMb2FkU3RhcnQpOiBSZXNldCBtX2NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlci4KKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6
OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6IE1vdmVkIGxvZ2ljIHRvIGhlcmUgZnJvbSBXZWJLaXQx
J3MgV2ViRnJhbWVMb2FkZXJDbGllbnQuCisgICAgICAgIFBsYWNpbmcgaXQgaGVyZSBhbGxvd3Mg
aXQgdG8gYmUgc2hhcmVkIGJldHdlZW4gV2ViS2l0MSBhbmQgV2ViS2l0MiAod2hlbiB0aGUgdW5i
bG9jayBoYW5kbGVyIGRvZXMgbm90IG5lZWQgdG8KKyAgICAgICAgYmUgY2FsbGVkIGluIHRoZSBV
SSBwcm9jZXNzKS4KKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2hlY2tlci5oOgorICAgICAgICAo
V2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6c2V0Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKTog
QWRkZWQuCisgICAgICAgICogcGFnZS9GcmFtZS5oOiBNYWRlIEZyYW1lIFRocmVhZFNhZmVSZWZD
b3VudGVkLCBzaW5jZSBSZWZQdHI8RnJhbWVzPiBhcmUgY2FwdHVyZWQgaW4gbGFtYmRhcyB0aGF0
IGNhbiBiZQorICAgICAgICBjb3BpZWQgYnkgYmFja2dyb3VuZCB0aHJlYWRzIG1hbmFnZWQgYnkg
dGhlIHVuZGVybHlpbmcgcGxhdGZvcm0uCisgICAgICAgICogcGxhdGZvcm0vQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXI6OnVuYmxvY2tVUkxTY2hlbWUpOiBSZXR1cm5lZCB0aGUgQXBwbGUgY29udGVudCBm
aWx0ZXIgc2NoZW1lLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyOjp1bmJsb2NrVVJMSG9zdCk6IFJldHVybmVkIHRoZSB1bmJsb2NrIFVSTCBob3N0LgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpjbGVhcik6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI6OnVuYmxvY2tSZXF1ZXN0RGVuaWVkU2Ny
aXB0KTogUmV0dXJuZWQgdGhlIHVuYmxvY2sgcmVxdWVzdCBkZW5pZWQgc2NyaXB0LgorICAgICAg
ICAqIHBsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIpOiBBZGRlZCBhIGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMgYW4KKyAg
ICAgICAgdW5ibG9ja1VSTEhvc3QgYW5kIGEgVW5ibG9ja1JlcXVlc3RlckZ1bmN0aW9uLiBBZGRl
ZCBhbiBhbHRlcm5hdGUgY29uc3RydWN0b3IgZm9yIGlPUyBQYXJlbnRhbCBDb250cm9scyBvbgor
ICAgICAgICBXZWJLaXQyIHRoYXQgdGFrZXMgYW4gdW5ibG9ja1VSTEhvc3QgYW5kIGEgV2ViRmls
dGVyRXZhbHVhdG9yLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyOjpuZWVkc1VJUHJvY2Vzcyk6IFJldHVybmVkIHRydWUgaWYgbV93ZWJGaWx0ZXJFdmFsdWF0
b3IgaXMgbm9uLW51bGwuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI6OmVuY29kZSk6IEVuY29kZWQgbV91bmJsb2NrVVJMSG9zdCBpbiBhZGRpdGlvbiB0byBt
X3dlYkZpbHRlckV2YWx1YXRvci4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcjo6ZGVjb2RlKTogRGVjb2RlZCBtX3VuYmxvY2tVUkxIb3N0IGluIGFkZGl0aW9u
IHRvIG1fd2ViRmlsdGVyRXZhbHVhdG9yLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyOjpjYW5IYW5kbGVSZXF1ZXN0KTogUmV0dXJuZWQgdHJ1ZSBpZiB0aGVy
ZSBpcyBhIGVpdGhlciBhIG1fdW5ibG9ja1JlcXVlc3RlcgorICAgICAgICBvciBhIG1fd2ViRmls
dGVyRXZhbHVhdG9yIGFuZCB0aGUgcmVxdWVzdCdzIGhvc3QgYW5kIHNjaGVtZSBtYXRjaCB0aG9z
ZSBvZiB0aGUgdW5ibG9jayByZXF1ZXN0IFVSTC4KKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNo
VG9NYWluVGhyZWFkKTogQWRkZWQgYSBoZWxwZXIgdG8gZGlzcGF0Y2ggYSBibG9jayB0byB0aGUg
bWFpbiB0aHJlYWQuIFRoZW4gaWYgdGhlIHdlYiB0aHJlYWQKKyAgICAgICAgaXMgZW5hYmxlZCBv
biBpT1MsIGRpc3BhdGNoIGl0IHRoZXJlLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyOjpyZXF1ZXN0VW5ibG9ja0FzeW5jKTogUmVuYW1lZCBmcm9tIGhhbmRs
ZVVuYmxvY2tSZXF1ZXN0QW5kRGlzcGF0Y2hJZlN1Y2Nlc3NmdWwuCisgICAgICAgIFJlcXVlc3Rl
ZCBhbiB1bmJsb2NrIHVzaW5nIGVpdGhlciBtX3VuYmxvY2tSZXF1ZXN0ZXIgb3IgbV93ZWJGaWx0
ZXJFdmFsdWF0b3IsIHRoZW4gY2FsbGVkIGRlY2lzaW9uSGFuZGxlciB3aXRoIHRoZSByZXNwb25z
ZS4KKyAgICAgICAgKFdlYkNvcmU6OnNjaGVtZSk6IE1vdmVkIHRvIENvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlcjo6dW5ibG9ja1VSTFNjaGVtZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcjo6aGFuZGxlVW5ibG9ja1JlcXVlc3RBbmREaXNwYXRjaElmU3Vj
Y2Vzc2Z1bCk6IFJlbmFtZWQgdG8gcmVxdWVzdFVuYmxvY2tBc3luYy4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlBhcmVudGFsQ29udHJvbHNDb250ZW50RmlsdGVyOjp1bmJsb2NrSGFuZGxlcik6IFJl
dHVybmVkIGFuIHVuYmxvY2sgaGFuZGxlciB1c2luZyB0aGUgV2ViRmlsdGVyRXZhbHVhdG9yIGNv
bnN0cnVjdG9yLgorICAgICAgICAqIHRlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwOiBBZGRl
ZCB1c2luZyBzdGF0bWVudHMgZm9yIGNsYXJpdHkuCisgICAgICAgIChXZWJDb3JlOjpzZXR0aW5n
cyk6IEFkZGVkIGEgaGVscGVyIHRvIGdldCBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpzaW5n
bGV0b24oKS4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpjYW5IYW5kbGVS
ZXNwb25zZSk6IFVzZWQgdGhlIGhlbHBlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyOjpNb2NrQ29udGVudEZpbHRlcik6IFRvb2sgYWR2YW50YWdlIG9mIHRoZSB1c2luZyBz
dGF0ZW1lbnRzLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjpmaW5pc2hlZEFk
ZGluZ0RhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50RmlsdGVyOjp1
bmJsb2NrSGFuZGxlcik6IFJldHVybmVkIGEgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHRo
YXQgY2hlY2tzIHNldHRpbmdzKCkgZm9yIGl0cyBkZWNpc2lvbi4KKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tDb250ZW50RmlsdGVyOjp1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCk6IFJldHVybmVk
IHRoZSBzY3JpcHQgdG8gZXhlY3V0ZSBpbiBNb2NrQ29udGVudEZpbHRlcidzCisgICAgICAgIGVy
cm9yIHBhZ2Ugd2hlbiBhbiB1bmJsb2NrIHJlcXVlc3QgaXMgZGVuaWVkLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja0NvbnRlbnRGaWx0ZXI6Om1heWJlRGV0ZXJtaW5lU3RhdHVzKTogVG9vayBhZHZh
bnRhZ2Ugb2Ygc2V0dGluZ3MoKSBhbmQgdXNpbmcgc3RhdGVtZW50cy4KKyAgICAgICAgKiB0ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3RVUkwpOiBDb25zdHJ1Y3RlZCBh
IHN0YXRpYyB1bmJsb2NrIFVSTCBhbmQgcmV0dXJuZWQgaXQuCisgICAgICAgICogdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ29udGVu
dEZpbHRlclNldHRpbmdzOjp1bmJsb2NrVVJMSG9zdCk6IFJldHVybmVkIHRoZSBmaWx0ZXIncyB1
bmJsb2NrIFVSTCBob3N0LgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6dW5ibG9ja1JlcXVlc3REZWNpc2lvbik6IFJldHVybnMgdGhlIGRlY2lzaW9uIHRvIG1h
a2UgZm9yIGFuIHVuYmxvY2sgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OnNldFVuYmxvY2tSZXF1ZXN0RGVjaXNpb24pOiBTZXRzIHRoZSBkZWNp
c2lvbiB0byBtYWtlIGZvciBhbiB1bmJsb2NrIHJlcXVlc3QuCisgICAgICAgICogdGVzdGluZy9N
b2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbDogQWRkZWQgdGhlIHVuYmxvY2tSZXF1ZXN0RGVj
aXNpb24gYW5kIHVuYmxvY2tSZXF1ZXN0VVJMIGF0dHJpYnV0ZXMuCisKIDIwMTUtMDMtMTkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXSBXZSBzaG91bGQg
YWxsb3cgc3RhbGUgY29udGVudCB3aGVuIHJlc3RvcmluZyBhIGtpbGxlZCAvIGNyYXNoZWQgV2Vi
UHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDczMGRlM2IwZmVlNDZkZDBjYmM5YzI3ZWU2NjFl
ZGViMjViODJiZGQuLmVjMGE2ODNkODcxZGU3NzUyYjk4OThlMzQzODYxYzUyZTMwNDIyYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wMy0xOSAgQW5keSBFc3RlcyAg
PGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbnRlbnQgRmlsdGVyaW5nXSBBZGQgdGVz
dHMgZm9yIHVuYmxvY2sgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MjkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCk6IFRoaXMgbm93IGhhcHBlbnMgaW4gUG9saWN5Q2hlY2tlci4KKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOiBEaXR0by4KKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtX
ZWJGcmFtZSBfY29udGVudEZpbHRlckRpZEhhbmRsZU5hdmlnYXRpb25BY3Rpb246XSk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZUludGVybmFsLmg6IFJlbW92ZWQgY29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyIGZyb20gV2ViRnJhbWVQcml2YXRlLgorCiAyMDE1LTAzLTE5
ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgPGF0dGFjaG1l
bnQ+IHNob3VsZCBwdXQgVVJMcyBvbiB0aGUgcGFzdGVib2FyZCBzbyB0aGF0IEZpbmRlciBjYW4g
YWNjZXB0IGRyb3BzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDgxMjFiZWRmNzRiMjMxZWRiYmJjMzBjZjdmNjBh
NWNhMDJjMTBiMTguLjI2MTRkNWY2NDFlMzY5YTBkNTNjYTNjMmI5YmZlMDg1NTJkNmVkMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNS0wMy0xOSAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvbnRlbnQgRmlsdGVyaW5nXSBBZGQgdGVzdHMgZm9y
IHVuYmxvY2sgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MjkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFt
ZSk6IENhbGxlZCBXZWJGcmFtZVByb3h5Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOiBBc3NpZ25lZCBhIGRlZmF1bHQt
Y29uc3RydWN0ZWQgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIGluc3RlYWQgb2YgY2FsbGlu
ZyBjbGVhcigpLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRIYW5kbGVDb250
ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24pOiBSZW5hbWVkIGZyb20gY29udGVudEZpbHRlckRp
ZEhhbmRsZU5hdmlnYXRpb25BY3Rpb24uCisgICAgICAgIFVwZGF0ZWQgdG8gdXNlIENvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcidzIG5ldyBBUEkuCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
UHJveHk6OmNvbnRlbnRGaWx0ZXJEaWRIYW5kbGVOYXZpZ2F0aW9uQWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZVByb3h5Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKTogUmVuYW1lZCBmcm9tIHNl
dENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQ
cm94eTo6c2V0Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKTogQ2FsbGVkIFdlYkZyYW1lUHJv
eHk6OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbi4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xv
YWQpOiBJZiB0aGUgdW5ibG9jayBoYW5kbGVyIG5lZWRzIHRoZSBVSSBwcm9jZXNzLAorICAgICAg
ICBzZW5kIFdlYlBhZ2VQcm94eTo6Q29udGVudEZpbHRlckRpZEJsb2NrTG9hZEZvckZyYW1lLiBP
dGVyd2lzZSwgY2FsbCBQb2xpY3lDaGVja2VyOjpzZXRDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIuCisKIDIwMTUtMDMtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbV0syXSBXZSBzaG91bGQgYWxsb3cgc3RhbGUgY29udGVudCB3aGVuIHJlc3RvcmluZyBh
IGtpbGxlZCAvIGNyYXNoZWQgV2ViUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5j
cHAKaW5kZXggMjIwYjIxOGNmZjBiZmUxNjVmZDcyNWVjNjlmYjEwZTk3YjdhOTgxOS4uNzAzZTRi
N2FjM2UyZTZkNzgwNTFhOTlmMDYzZWM1NDFhMWJmM2Q5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vY2tDb250ZW50RmlsdGVyU2V0dGlu
Z3NDdXN0b20uY3BwCkBAIC0zNSw2ICszNSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgRGVjaXNpb24gPSBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzOjpEZWNpc2lvbjsKK3VzaW5nIERlY2lzaW9uUG9pbnQgPSBNb2NrQ29udGVudEZpbHRl
clNldHRpbmdzOjpEZWNpc2lvblBvaW50OworCiAvLyBNdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRo
IHZhbHVlcyBpbiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbC4KIGNvbnN0IHVpbnQ4X3Qg
ZGVjaXNpb25Qb2ludEFmdGVyUmVzcG9uc2UgPSAwOwogY29uc3QgdWludDhfdCBkZWNpc2lvblBv
aW50QWZ0ZXJBZGREYXRhID0gMTsKQEAgLTQyLDIyICs0NSwyMiBAQCBjb25zdCB1aW50OF90IGRl
Y2lzaW9uUG9pbnRBZnRlckZpbmlzaGVkQWRkaW5nRGF0YSA9IDI7CiBjb25zdCB1aW50OF90IGRl
Y2lzaW9uQWxsb3cgPSAwOwogY29uc3QgdWludDhfdCBkZWNpc2lvbkJsb2NrID0gMTsKIAotSlND
OjpKU1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjaXNpb25Qb2ludChKU0M6
OkV4ZWNTdGF0ZSopIGNvbnN0CitKU1ZhbHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
ZGVjaXNpb25Qb2ludChFeGVjU3RhdGUqKSBjb25zdAogewogICAgIHN3aXRjaCAoaW1wbCgpLmRl
Y2lzaW9uUG9pbnQoKSkgewotICAgIGNhc2UgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVj
aXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZToKKyAgICBjYXNlIERlY2lzaW9uUG9pbnQ6OkFmdGVy
UmVzcG9uc2U6CiAgICAgICAgIHJldHVybiBqc051bWJlcihkZWNpc2lvblBvaW50QWZ0ZXJSZXNw
b25zZSk7Ci0gICAgY2FzZSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50
OjpBZnRlckFkZERhdGE6CisgICAgY2FzZSBEZWNpc2lvblBvaW50OjpBZnRlckFkZERhdGE6CiAg
ICAgICAgIHJldHVybiBqc051bWJlcihkZWNpc2lvblBvaW50QWZ0ZXJBZGREYXRhKTsKLSAgICBj
YXNlIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNo
ZWRBZGRpbmdEYXRhOgorICAgIGNhc2UgRGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGlu
Z0RhdGE6CiAgICAgICAgIHJldHVybiBqc051bWJlcihkZWNpc2lvblBvaW50QWZ0ZXJGaW5pc2hl
ZEFkZGluZ0RhdGEpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiB7IH07CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLXZvaWQgSlNNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpzZXREZWNpc2lvblBvaW50KEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6OkpTVmFsdWUgdmFsdWUpCit2b2lkIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6
c2V0RGVjaXNpb25Qb2ludChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAg
dWludDhfdCBuYXRpdmVWYWx1ZSB7IHRvVUludDgoZXhlYywgdmFsdWUsIEVuZm9yY2VSYW5nZSkg
fTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC02NSw0OCArNjgsNzUgQEAgdm9p
ZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uUG9pbnQoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6SlMKIAogICAgIHN3aXRjaCAobmF0aXZlVmFsdWUpIHsKICAgICBj
YXNlIGRlY2lzaW9uUG9pbnRBZnRlclJlc3BvbnNlOgotICAgICAgICBpbXBsKCkuc2V0RGVjaXNp
b25Qb2ludChNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OjpBZnRlclJl
c3BvbnNlKTsKKyAgICAgICAgaW1wbCgpLnNldERlY2lzaW9uUG9pbnQoRGVjaXNpb25Qb2ludDo6
QWZ0ZXJSZXNwb25zZSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIGRlY2lzaW9uUG9pbnRB
ZnRlckFkZERhdGE6Ci0gICAgICAgIGltcGwoKS5zZXREZWNpc2lvblBvaW50KE1vY2tDb250ZW50
RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSk7CisgICAgICAgIGlt
cGwoKS5zZXREZWNpc2lvblBvaW50KERlY2lzaW9uUG9pbnQ6OkFmdGVyQWRkRGF0YSk7CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIGRlY2lzaW9uUG9pbnRBZnRlckZpbmlzaGVkQWRkaW5nRGF0
YToKLSAgICAgICAgaW1wbCgpLnNldERlY2lzaW9uUG9pbnQoTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOworICAgICAgICBp
bXBsKCkuc2V0RGVjaXNpb25Qb2ludChEZWNpc2lvblBvaW50OjpBZnRlckZpbmlzaGVkQWRkaW5n
RGF0YSk7CiAgICAgICAgIHJldHVybjsKLSAgICBkZWZhdWx0OgotICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb25Qb2lu
dCB2YWx1ZS4iLCBuYXRpdmVWYWx1ZSkpOwogICAgIH0KKworICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIFN0cmluZzo6Zm9ybWF0KCIldSBpcyBub3QgYSB2YWxpZCBkZWNpc2lvblBvaW50IHZhbHVl
LiIsIG5hdGl2ZVZhbHVlKSk7CiB9CiAKLUpTQzo6SlNWYWx1ZSBKU01vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OmRlY2lzaW9uKEpTQzo6RXhlY1N0YXRlKikgY29uc3QKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSB0b0pTVmFsdWUoRGVjaXNpb24gZGVjaXNpb24pCiB7Ci0gICAgc3dpdGNoIChpbXBs
KCkuZGVjaXNpb24oKSkgewotICAgIGNhc2UgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVj
aXNpb246OkFsbG93OgorICAgIHN3aXRjaCAoZGVjaXNpb24pIHsKKyAgICBjYXNlIERlY2lzaW9u
OjpBbGxvdzoKICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGRlY2lzaW9uQWxsb3cpOwotICAgIGNh
c2UgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkJsb2NrOgorICAgIGNhc2Ug
RGVjaXNpb246OkJsb2NrOgogICAgICAgICByZXR1cm4ganNOdW1iZXIoZGVjaXNpb25CbG9jayk7
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsKKyAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotdm9pZCBKU01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3M6OnNldERlY2lzaW9uKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFs
dWUpCitzdGF0aWMgaW5saW5lIERlY2lzaW9uIHRvRGVjaXNpb24oRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlKQogewogICAgIHVpbnQ4X3QgbmF0aXZlVmFsdWUgeyB0b1VJbnQ4KGV4ZWMs
IHZhbHVlLCBFbmZvcmNlUmFuZ2UpIH07CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBEZWNpc2lvbjo6QWxsb3c7CiAKICAgICBz
d2l0Y2ggKG5hdGl2ZVZhbHVlKSB7CiAgICAgY2FzZSBkZWNpc2lvbkFsbG93OgotICAgICAgICBp
bXBsKCkuc2V0RGVjaXNpb24oTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6RGVjaXNpb246OkFs
bG93KTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gRGVjaXNpb246OkFsbG93Owog
ICAgIGNhc2UgZGVjaXNpb25CbG9jazoKLSAgICAgICAgaW1wbCgpLnNldERlY2lzaW9uKE1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpCbG9jayk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBkZWZhdWx0OgotICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpbmc6OmZvcm1h
dCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb24gdmFsdWUuIiwgbmF0aXZlVmFsdWUpKTsKKyAg
ICAgICAgcmV0dXJuIERlY2lzaW9uOjpCbG9jazsKICAgICB9CisKKyAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBTdHJpbmc6OmZvcm1hdCgiJXUgaXMgbm90IGEgdmFsaWQgZGVjaXNpb24gdmFsdWUu
IiwgbmF0aXZlVmFsdWUpKTsKKyAgICByZXR1cm4gRGVjaXNpb246OkFsbG93OworfQorCitKU1Zh
bHVlIEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6ZGVjaXNpb24oRXhlY1N0YXRlKikgY29u
c3QKK3sKKyAgICByZXR1cm4gdG9KU1ZhbHVlKGltcGwoKS5kZWNpc2lvbigpKTsKK30KKwordm9p
ZCBKU01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNldERlY2lzaW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBEZWNpc2lvbiBkZWNpc2lvbiB7IHRvRGVjaXNpb24o
ZXhlYywgdmFsdWUpIH07CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpbXBsKCkuc2V0RGVjaXNpb24oZGVjaXNpb24pOworfQorCitKU1ZhbHVl
IEpTTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6dW5ibG9ja1JlcXVlc3REZWNpc2lvbihFeGVj
U3RhdGUqKSBjb25zdAoreworICAgIHJldHVybiB0b0pTVmFsdWUoaW1wbCgpLnVuYmxvY2tSZXF1
ZXN0RGVjaXNpb24oKSk7Cit9CisKK3ZvaWQgSlNNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpz
ZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkK
K3sKKyAgICBEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uIHsgdG9EZWNpc2lvbihleGVj
LCB2YWx1ZSkgfTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGltcGwoKS5zZXRVbmJsb2NrUmVxdWVzdERlY2lzaW9uKHVuYmxvY2tSZXF1ZXN0
RGVjaXNpb24pOwogfQogCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IDcyOGJlZjk1YjM3NDk3MWYyY2UyYjg3ODU2ZjBj
NzUyNGFlMDQ1MjQuLjI3ZWMwZGE3YjQ0OGRlMjc2YzhjNmM0NWU5NjFkN2MxMjkxMmRmMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKQEAgLTI4LDkgKzI4LDE0IEBA
CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAKKyNpbmNsdWRlICJEb2N1bWVudExv
YWRlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiTmV0d29ya0V4dGVuc2lvbkNv
bnRlbnRGaWx0ZXIuaCIKICNpbmNsdWRlICJQYXJlbnRhbENvbnRyb2xzQ29udGVudEZpbHRlci5o
IgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxiaW5kaW5ncy9TY3Jp
cHRWYWx1ZS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nyw3ICs1Miw3IEBAIFZl
Y3RvcjxDb250ZW50RmlsdGVyOjpUeXBlPiYgQ29udGVudEZpbHRlcjo6dHlwZXMoKQogICAgIHJl
dHVybiB0eXBlczsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IENvbnRlbnRG
aWx0ZXI6OmNyZWF0ZUlmTmVlZGVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQor
c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZUlmTmVl
ZGVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBEb2N1bWVudExvYWRlciYgZG9j
dW1lbnRMb2FkZXIpCiB7CiAgICAgQ29udGFpbmVyIGZpbHRlcnM7CiAgICAgZm9yIChhdXRvJiB0
eXBlIDogdHlwZXMoKSkgewpAQCAtNTgsMTEgKzYzLDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250
ZW50RmlsdGVyPiBDb250ZW50RmlsdGVyOjpjcmVhdGVJZk5lZWRlZChjb25zdCBSZXNvdXJjZVJl
c3BvCiAgICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRGaWx0ZXI+KFdURjo6bW92ZShm
aWx0ZXJzKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4oV1RG
Ojptb3ZlKGZpbHRlcnMpLCBkb2N1bWVudExvYWRlcik7CiB9CiAKLUNvbnRlbnRGaWx0ZXI6OkNv
bnRlbnRGaWx0ZXIoQ29udGFpbmVyIGNvbnRlbnRGaWx0ZXJzKQorQ29udGVudEZpbHRlcjo6Q29u
dGVudEZpbHRlcihDb250YWluZXIgY29udGVudEZpbHRlcnMsIERvY3VtZW50TG9hZGVyJiBkb2N1
bWVudExvYWRlcikKICAgICA6IG1fY29udGVudEZpbHRlcnMgeyBXVEY6Om1vdmUoY29udGVudEZp
bHRlcnMpIH0KKyAgICAsIG1fZG9jdW1lbnRMb2FkZXIgeyBkb2N1bWVudExvYWRlciB9CiB7CiAg
ICAgQVNTRVJUKCFtX2NvbnRlbnRGaWx0ZXJzLmlzRW1wdHkoKSk7CiB9CkBAIC0xMjEsMTMgKzEy
NywzMiBAQCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgQ29udGVudEZpbHRlcjo6dW5ibG9j
a0hhbmRsZXIoKSBjb25zdAogewogICAgIEFTU0VSVChkaWRCbG9ja0RhdGEoKSk7CiAKKyAgICBQ
bGF0Zm9ybUNvbnRlbnRGaWx0ZXIqIGJsb2NraW5nRmlsdGVyID0gbnVsbHB0cjsKICAgICBmb3Ig
KGF1dG8mIGNvbnRlbnRGaWx0ZXIgOiBtX2NvbnRlbnRGaWx0ZXJzKSB7Ci0gICAgICAgIGlmIChj
b250ZW50RmlsdGVyLT5kaWRCbG9ja0RhdGEoKSkKLSAgICAgICAgICAgIHJldHVybiBjb250ZW50
RmlsdGVyLT51bmJsb2NrSGFuZGxlcigpOworICAgICAgICBpZiAoY29udGVudEZpbHRlci0+ZGlk
QmxvY2tEYXRhKCkpIHsKKyAgICAgICAgICAgIGJsb2NraW5nRmlsdGVyID0gY29udGVudEZpbHRl
ci5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQotCi0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICBBU1NFUlQoYmxvY2tpbmdG
aWx0ZXIpOworCisgICAgU3RyaW5nQ2FwdHVyZSB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCB7
IGJsb2NraW5nRmlsdGVyLT51bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpIH07CisgICAgaWYg
KHVuYmxvY2tSZXF1ZXN0RGVuaWVkU2NyaXB0LnN0cmluZygpLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIGJsb2NraW5nRmlsdGVyLT51bmJsb2NrSGFuZGxlcigpOworCisgICAgLy8gSXQgd291
bGQgYmUgYSBsYXllcmluZyB2aW9sYXRpb24gZm9yIHRoZSB1bmJsb2NrIGhhbmRsZXIgdG8gYWNj
ZXNzIGl0cyBmcmFtZSwKKyAgICAvLyBzbyB3ZSB3aWxsIGV4ZWN1dGUgdGhlIHVuYmxvY2sgZGVu
aWVkIHNjcmlwdCBvbiBpdHMgYmVoYWxmLgorICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciB1bmJsb2NrSGFuZGxlciB7IGJsb2NraW5nRmlsdGVyLT51bmJsb2NrSGFuZGxlcigpIH07Cisg
ICAgUmVmUHRyPEZyYW1lPiBmcmFtZSB7IG1fZG9jdW1lbnRMb2FkZXIuZnJhbWUoKSB9OworICAg
IHJldHVybiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgeworICAgICAgICB1bmJsb2NrSGFu
ZGxlci51bmJsb2NrVVJMSG9zdCgpLCBbdW5ibG9ja0hhbmRsZXIsIGZyYW1lLCB1bmJsb2NrUmVx
dWVzdERlbmllZFNjcmlwdF0oQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpEZWNpc2lvbkhh
bmRsZXJGdW5jdGlvbiBkZWNpc2lvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgIHVuYmxvY2tIYW5k
bGVyLnJlcXVlc3RVbmJsb2NrQXN5bmMoW2RlY2lzaW9uSGFuZGxlciwgZnJhbWUsIHVuYmxvY2tS
ZXF1ZXN0RGVuaWVkU2NyaXB0XShib29sIHVuYmxvY2tlZCkgeworICAgICAgICAgICAgICAgIGRl
Y2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOworICAgICAgICAgICAgICAgIGlmICghdW5ibG9ja2Vk
ICYmIGZyYW1lKQorICAgICAgICAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNj
cmlwdCh1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdC5zdHJpbmcoKSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfQorICAgIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5oCmluZGV4IDYyMmE0OTEyYzRiNTU0ZWNkNTU3NjI1
NDcyZDc2MDcyZTY4NmNiODUuLjJlOGNjYWQ1NmRkNGI1MGQ4Mzk0MmRlOTkzOTA5YzI1ODc5ZjJh
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuaApAQCAtMzMsMTIgKzMzLDEz
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogCiBjbGFzcyBDb250ZW50RmlsdGVyIGZpbmFsIDogcHVibGlj
IFBsYXRmb3JtQ29udGVudEZpbHRlciB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHN0YXRpYyB2b2lkIGFkZFR5cGUoKSB7IHR5cGVzKCkuYXBwZW5kKHR5cGU8VD4oKSk7IH0K
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IGNyZWF0ZUlmTmVlZGVk
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnRGaWx0ZXI+IGNyZWF0ZUlmTmVlZGVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBEb2N1
bWVudExvYWRlciYpOwogCiAgICAgdm9pZCBhZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpIG92ZXJyaWRlOwogICAgIHZvaWQgZmluaXNoZWRBZGRpbmdEYXRhKCkgb3ZlcnJpZGU7
CkBAIC01NiwxMCArNTcsMTEgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
VmVjdG9yPFR5cGU+JiB0eXBlcygpOwogCiAgICAgdXNpbmcgQ29udGFpbmVyID0gVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUNvbnRlbnRGaWx0ZXI+PjsKLSAgICBmcmllbmQgc3RkOjp1
bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEZpbHRlcj4o
Q29udGFpbmVyJiYpOwotICAgIGV4cGxpY2l0IENvbnRlbnRGaWx0ZXIoQ29udGFpbmVyKTsKKyAg
ICBmcmllbmQgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRGaWx0ZXI+IHN0ZDo6bWFrZV91bmlxdWU8
Q29udGVudEZpbHRlcj4oQ29udGFpbmVyJiYsIERvY3VtZW50TG9hZGVyJik7CisgICAgZXhwbGlj
aXQgQ29udGVudEZpbHRlcihDb250YWluZXIsIERvY3VtZW50TG9hZGVyJik7CiAKICAgICBDb250
YWluZXIgbV9jb250ZW50RmlsdGVyczsKKyAgICBEb2N1bWVudExvYWRlciYgbV9kb2N1bWVudExv
YWRlcjsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKaW5kZXggZDY0NGU1YzBhZmI1MWFhMDdkZTUzMDIzMTE1NjNhNmVh
MTFhNjcxMC4uZWVjOTQzODcyZTg4YjNhYjFlZjNkYjk5YTM0MTJjMmRjNmMxYTQxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC02NjMsNyArNjYzLDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlUmUKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQotICAgIG1fY29udGVudEZpbHRlciA9IENvbnRlbnRGaWx0ZXI6OmNyZWF0ZUlmTmVl
ZGVkKHJlc3BvbnNlKTsKKyAgICBtX2NvbnRlbnRGaWx0ZXIgPSBDb250ZW50RmlsdGVyOjpjcmVh
dGVJZk5lZWRlZChyZXNwb25zZSwgKnRoaXMpOwogI2VuZGlmCiAKICAgICBmcmFtZUxvYWRlcigp
LT5wb2xpY3lDaGVja2VyKCkuY2hlY2tDb250ZW50UG9saWN5KG1fcmVzcG9uc2UsIFt0aGlzXShQ
b2xpY3lBY3Rpb24gcG9saWN5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCA4YzM0NDU5NmY1YjM1NDYzMjgwZDc3MzE1YTQ4YWIxZDM5N2IzMGIwLi5iNDNiNzM4YTM5
OGRlMDA1MTM2ODY0NGNkNmI0MjllNTg4OTNkYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKQEAgLTExMjQsNiArMTEyNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0YXJ0
ZWQoKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpwcmVwYXJlRm9yTG9hZFN0YXJ0KCkKIHsKKyAgICBw
b2xpY3lDaGVja2VyKCkucHJlcGFyZUZvckxvYWRTdGFydCgpOwogICAgIG1fcHJvZ3Jlc3NUcmFj
a2VyLT5wcm9ncmVzc1N0YXJ0ZWQoKTsKICAgICBtX2NsaWVudC5kaXNwYXRjaERpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xp
Y3lDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApp
bmRleCAxZDFhYTNlM2I5MDhlNjU0NDhmMDAwZDE3ZDc0ZmRjYjRkMzNmZGFjLi4xMjE1MTIxMjA5
ODE1YzVmMWFjZmJmYjAxZDM5ZjUyMTlkZTZkYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwCkBAIC01Niw2ICs1NiwxMyBAQCBQb2xpY3lDaGVja2VyOjpQb2xpY3lD
aGVja2VyKEZyYW1lJiBmcmFtZSkKIHsKIH0KIAordm9pZCBQb2xpY3lDaGVja2VyOjpwcmVwYXJl
Rm9yTG9hZFN0YXJ0KCkKK3sKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisgICAgbV9j
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgPSB7IH07CisjZW5kaWYKK30KKwogdm9pZCBQb2xp
Y3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBu
ZXdSZXF1ZXN0LCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiBmdW5jdGlvbikKIHsK
ICAgICBjaGVja05hdmlnYXRpb25Qb2xpY3kobmV3UmVxdWVzdCwgbV9mcmFtZS5sb2FkZXIoKS5h
Y3RpdmVEb2N1bWVudExvYWRlcigpLCBudWxscHRyLCBXVEY6Om1vdmUoZnVuY3Rpb24pKTsKQEAg
LTEwNSw2ICsxMTIsMTcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xp
Y3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1bWUKICAgICB9CiAjZW5kaWYK
IAorI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKKyAgICBpZiAobV9jb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KSkgeworICAgICAgICBSZWZQ
dHI8RnJhbWU+IGZyYW1lIHsgJm1fZnJhbWUgfTsKKyAgICAgICAgbV9jb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIucmVxdWVzdFVuYmxvY2tBc3luYyhbZnJhbWVdKGJvb2wgdW5ibG9ja2VkKSB7
CisgICAgICAgICAgICBpZiAodW5ibG9ja2VkKQorICAgICAgICAgICAgICAgIGZyYW1lLT5sb2Fk
ZXIoKS5yZWxvYWQoKTsKKyAgICAgICAgfSk7CisgICAgICAgIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0
aW9uUG9saWN5KFBvbGljeUlnbm9yZSk7CisgICAgfQorI2VuZGlmCisKICAgICBtX2RlbGVnYXRl
SXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSB0cnVlOwogICAgIG1fZnJhbWUubG9hZGVyKCku
Y2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGFjdGlvbiwg
cmVxdWVzdCwgZm9ybVN0YXRlLCBbdGhpc10oUG9saWN5QWN0aW9uIGFjdGlvbikgewogICAgICAg
ICBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShhY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmgKaW5kZXggZjI0Y2NkZjM3OTE4MjUyOGMwZDRmNmI0ODY5ZTVhYzBk
MGUyYWQ5ZC4uM2NhNGVhODgxZmMwNmNhOWNmOTE3ODZkNjlmZmYxNTE1NGIyNjJhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCkBAIC0zNiw2ICszNiwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisjaW5jbHVkZSAiQ29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKQEAgLTUwLDYgKzU0LDcgQEAgY2xhc3MgUG9saWN5Q2hlY2tlciB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgUG9saWN5Q2hlY2tlcihGcmFtZSYpOwogCisgICAgdm9pZCBw
cmVwYXJlRm9yTG9hZFN0YXJ0KCk7CiAgICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3koY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgRG9jdW1lbnRMb2FkZXIqLCBQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4sIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uKTsKICAgICB2b2lkIGNoZWNrTmF2
aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBOYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb25GdW5jdGlvbik7CiAgICAgdm9pZCBjaGVja05ld1dpbmRvd1BvbGljeShjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5j
dGlvbik7CkBAIC03NCw2ICs3OSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIGhlYXJ0IHRvIGhh
Y2sgb24gYWxsIHRoZSBwbGF0Zm9ybXMgdG8gbWFrZSB0aGF0IGhhcHBlbiByaWdodCBub3cuCiAg
ICAgdm9pZCBjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKFBvbGljeUFjdGlvbik7CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisgICAgdm9pZCBzZXRDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIoQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVy
KSB7IG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0gV1RGOjptb3ZlKHVuYmxvY2tIYW5k
bGVyKTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBjb250aW51ZUFmdGVyTmF2aWdh
dGlvblBvbGljeShQb2xpY3lBY3Rpb24pOwogICAgIHZvaWQgY29udGludWVBZnRlck5ld1dpbmRv
d1BvbGljeShQb2xpY3lBY3Rpb24pOwpAQCAtOTEsNiArMTAwLDEwIEBAIHByaXZhdGU6CiAgICAg
Ly8gb24gbmF2aWdhdGlvbiBhY3Rpb24gZGVsZWdhdGUgY2FsbGJhY2tzLgogICAgIEZyYW1lTG9h
ZFR5cGUgbV9sb2FkVHlwZTsKICAgICBQb2xpY3lDYWxsYmFjayBtX2NhbGxiYWNrOworCisjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQorICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDU1MzRkMzRkNDMxNmZhNmNiZTVhODM5
MmU5NjkwMDAzYTllMDZkYjYuLmIzYzhiYjUyNDFlZmFiY2JjNmEyMmIzMTJhZTI5YmE0NGFlNzdk
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJTY3JvbGxU
eXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTY3JpcHRUeXBlcy5oIgogI2luY2x1ZGUgPG1lbW9yeT4K
LSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1l
bnRzLmgiCkBAIC0xMTMsNyArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH07CiAg
ICAgdHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFnczsKIAotICAgIGNsYXNzIEZyYW1lIDog
cHVibGljIFJlZkNvdW50ZWQ8RnJhbWU+IHsKKyAgICBjbGFzcyBGcmFtZSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxGcmFtZT4gewogICAgIHB1YmxpYzoKICAgICAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxGcmFtZT4gY3JlYXRlKFBhZ2UqLCBIVE1MRnJhbWVPd25lckVsZW1l
bnQqLCBGcmFtZUxvYWRlckNsaWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCmluZGV4IDg3NTE0YjYxYjczOThm
NTdkNDBlZGIyYzhmYTQ0NjY3ZDg3ZmZkZmQuLjM1YzI2NTVhMzRiZTQ4OWJiZjM3ODI1NmE2NzUy
ZmQwYzU1NmQ5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oCkBAIC0zMCwxMCArMzAsMTMgQEAKIAogI2luY2x1ZGUg
PGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCi1PQkpDX0NMQVNTIE5TS2V5ZWRBcmNoaXZlcjsKLU9CSkNfQ0xB
U1MgTlNLZXllZFVuYXJjaGl2ZXI7CitPQkpDX0NMQVNTIE5TQ29kZXI7CisKKyNpZiBQTEFURk9S
TShJT1MpCiBPQkpDX0NMQVNTIFdlYkZpbHRlckV2YWx1YXRvcjsKKyNlbmRpZgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTQxLDE5ICs0NCwzMSBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiAKIGNsYXNzIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB7CiBwdWJsaWM6Ci0gICAgQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKCkgPSBkZWZhdWx0OwotICAgIGV4cGxpY2l0IENvbnRl
bnRGaWx0ZXJVbmJsb2NrSGFuZGxlcihXZWJGaWx0ZXJFdmFsdWF0b3IgKmV2YWx1YXRvcikgOiBt
X3dlYkZpbHRlckV2YWx1YXRvciB7IGV2YWx1YXRvciB9IHsgfQorICAgIHVzaW5nIERlY2lzaW9u
SGFuZGxlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wgdW5ibG9ja2VkKT47Cisg
ICAgdXNpbmcgVW5ibG9ja1JlcXVlc3RlckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjx2b2lkKERl
Y2lzaW9uSGFuZGxlckZ1bmN0aW9uKT47CiAKLSAgICB2b2lkIGNsZWFyKCkgeyBtX3dlYkZpbHRl
ckV2YWx1YXRvciA9IG51bGxwdHI7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuY29kZShO
U0tleWVkQXJjaGl2ZXIgKikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wg
ZGVjb2RlKE5TS2V5ZWRVbmFyY2hpdmVyICosIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYp
OworICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1bmJsb2NrVVJMU2NoZW1lKCkgeyByZXR1cm4gIngt
YXBwbGUtY29udGVudC1maWx0ZXIiOyB9CiAKKyAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyKFN0cmluZyB1bmJsb2NrVVJMSG9zdCwgVW5ibG9ja1JlcXVlc3RlckZ1bmN0aW9uKTsK
ICNpZiBQTEFURk9STShJT1MpCi0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVVbmJsb2Nr
UmVxdWVzdEFuZERpc3BhdGNoSWZTdWNjZXNzZnVsKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPik7CisgICAgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKFN0
cmluZyB1bmJsb2NrVVJMSG9zdCwgUmV0YWluUHRyPFdlYkZpbHRlckV2YWx1YXRvcj4pOwogI2Vu
ZGlmCiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRzVUlQcm9jZXNzKCkgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmNvZGUoTlNDb2RlciAqKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBkZWNvZGUoTlNDb2RlciAqLCBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhbkhhbmRsZVJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBy
ZXF1ZXN0VW5ibG9ja0FzeW5jKERlY2lzaW9uSGFuZGxlckZ1bmN0aW9uKSBjb25zdDsKKworICAg
IGNvbnN0IFN0cmluZyYgdW5ibG9ja1VSTEhvc3QoKSBjb25zdCB7IHJldHVybiBtX3VuYmxvY2tV
UkxIb3N0OyB9CisKIHByaXZhdGU6CisgICAgU3RyaW5nIG1fdW5ibG9ja1VSTEhvc3Q7CisgICAg
VW5ibG9ja1JlcXVlc3RlckZ1bmN0aW9uIG1fdW5ibG9ja1JlcXVlc3RlcjsKKyNpZiBQTEFURk9S
TShJT1MpCiAgICAgUmV0YWluUHRyPFdlYkZpbHRlckV2YWx1YXRvcj4gbV93ZWJGaWx0ZXJFdmFs
dWF0b3I7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtQ29udGVudEZpbHRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKaW5kZXggYjBiZTAxOTQ5
ZDNlMjVhODQ4NDU0MWJmZWRkYzU4Y2FmODg0ODhmMy4uMmVlNDA4YTU0MmVkMzUyZDYwZTQ5ZmNh
MmFiNWI2ZTIyMTIzOTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxh
dGZvcm1Db250ZW50RmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1Db250ZW50RmlsdGVyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBkaWRCbG9ja0RhdGEoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBn
ZXRSZXBsYWNlbWVudERhdGEoaW50JiBsZW5ndGgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcigpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyB1bmJsb2NrUmVxdWVzdERlbmllZFNjcmlwdCgpIGNvbnN0IHsgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0NvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KaW5kZXggMzA2MzkzNDZlYzAxN2E0NTYxYzI4OTI5
MzA1ZTQ4OTA2YTUzZjgxMi4uMjk4YjIyYzc4MDFkYzQyMGJlYzk0NWIxMWRkMjU5ZjIzYmJhMDdi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0KQEAgLTI4LDYyICsyOCwxMTgg
QEAKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKIAorI2ltcG9ydCAiQmxvY2tFeGNl
cHRpb25zLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlcXVlc3QuaCIKKworI2lmIFBMQVRGT1JNKElP
UykKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCisjaW1wb3J0ICJXZWJDb3JlVGhyZWFkUnVuLmgi
CiAjaW1wb3J0ICJXZWJGaWx0ZXJFdmFsdWF0b3JTUEkuaCIKLSNpbXBvcnQgPG9iamMvcnVudGlt
ZS5oPgogCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoV2ViQ29udGVudEFuYWx5c2lzKTsK
IFNPRlRfTElOS19DTEFTUyhXZWJDb250ZW50QW5hbHlzaXMsIFdlYkZpbHRlckV2YWx1YXRvcik7
CiAKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHdlYkZpbHRlckV2YWx1YXRvcktleSB7IEAid2Vi
RmlsdGVyRXZhbHVhdG9yIiB9OworI2VuZGlmCisKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IHVu
YmxvY2tVUkxIb3N0S2V5IHsgQCJ1bmJsb2NrVVJMSG9zdCIgfTsKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBwbGF0Zm9ybUNvbnRlbnRGaWx0ZXJLZXkg
PSBAInBsYXRmb3JtQ29udGVudEZpbHRlciI7CitDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6
OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcihTdHJpbmcgdW5ibG9ja1VSTEhvc3QsIFVuYmxv
Y2tSZXF1ZXN0ZXJGdW5jdGlvbiB1bmJsb2NrUmVxdWVzdGVyKQorICAgIDogbV91bmJsb2NrVVJM
SG9zdCB7IFdURjo6bW92ZSh1bmJsb2NrVVJMSG9zdCkgfQorICAgICwgbV91bmJsb2NrUmVxdWVz
dGVyIHsgV1RGOjptb3ZlKHVuYmxvY2tSZXF1ZXN0ZXIpIH0KK3sKK30KIAotdm9pZCBDb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29kZShOU0tleWVkQXJjaGl2ZXIgKmFyY2hpdmVyKSBj
b25zdAorI2lmIFBMQVRGT1JNKElPUykKK0NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Q29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKFN0cmluZyB1bmJsb2NrVVJMSG9zdCwgUmV0YWluUHRy
PFdlYkZpbHRlckV2YWx1YXRvcj4gZXZhbHVhdG9yKQorICAgIDogbV91bmJsb2NrVVJMSG9zdCB7
IFdURjo6bW92ZSh1bmJsb2NrVVJMSG9zdCkgfQorICAgICwgbV93ZWJGaWx0ZXJFdmFsdWF0b3Ig
eyBXVEY6Om1vdmUoZXZhbHVhdG9yKSB9CiB7Ci0gICAgaWYgKFtnZXRXZWJGaWx0ZXJFdmFsdWF0
b3JDbGFzcygpIGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkK
LSAgICAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDptX3dlYkZpbHRlckV2YWx1YXRvci5nZXQo
KSBmb3JLZXk6cGxhdGZvcm1Db250ZW50RmlsdGVyS2V5XTsKIH0KKyNlbmRpZgogCi1ib29sIENv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZGVjb2RlKE5TS2V5ZWRVbmFyY2hpdmVyICp1bmFy
Y2hpdmVyLCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVyKQorYm9v
bCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6Om5lZWRzVUlQcm9jZXNzKCkgY29uc3QKIHsK
LSAgICBAdHJ5IHsKLSAgICAgICAgaWYgKFtnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFzcygpIGNv
bmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woTlNTZWN1cmVDb2RpbmcpXSkKLSAgICAgICAgICAg
IHVuYmxvY2tIYW5kbGVyLm1fd2ViRmlsdGVyRXZhbHVhdG9yID0gKFdlYkZpbHRlckV2YWx1YXRv
ciAqKVt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6Z2V0V2ViRmlsdGVyRXZhbHVhdG9y
Q2xhc3MoKSBmb3JLZXk6cGxhdGZvcm1Db250ZW50RmlsdGVyS2V5XTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJUaGUgcGxhdGZvcm0gY29udGVudCBmaWx0ZXIgYmVpbmcgZGVjb2RlZCBpcyBu
b3QgYSBXZWJGaWx0ZXJFdmFsdWF0b3IuIik7Ci0gICAgfQotICAgIAorI2lmIFBMQVRGT1JNKElP
UykKKyAgICByZXR1cm4gbV93ZWJGaWx0ZXJFdmFsdWF0b3I7CisjZWxzZQogICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oSU9TKQotc3RhdGljIGlubGluZSBjb25z
dCBjaGFyKiBzY2hlbWUoKQordm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI6OmVuY29k
ZShOU0NvZGVyICpjb2RlcikgY29uc3QKIHsKLSAgICByZXR1cm4gIngtYXBwbGUtY29udGVudC1m
aWx0ZXIiOworICAgIEFTU0VSVF9BUkcoY29kZXIsIGNvZGVyLmFsbG93c0tleWVkQ29kaW5nICYm
IGNvZGVyLnJlcXVpcmVzU2VjdXJlQ29kaW5nKTsKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CisgICAgW2NvZGVyIGVuY29kZU9iamVjdDptX3VuYmxvY2tVUkxIb3N0IGZvcktleTp1
bmJsb2NrVVJMSG9zdEtleV07CisjaWYgUExBVEZPUk0oSU9TKQorICAgIFtjb2RlciBlbmNvZGVP
YmplY3Q6bV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgZm9yS2V5OndlYkZpbHRlckV2YWx1YXRv
cktleV07CisjZW5kaWYKKyAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi1ib29s
IENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6aGFuZGxlVW5ibG9ja1JlcXVlc3RBbmREaXNw
YXRjaElmU3VjY2Vzc2Z1bChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBmdW5jdGlvbikKK2Jvb2wgQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
OjpkZWNvZGUoTlNDb2RlciAqY29kZXIsIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciYgdW5i
bG9ja0hhbmRsZXIpCiB7Ci0gICAgaWYgKCFtX3dlYkZpbHRlckV2YWx1YXRvcikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIEFTU0VSVF9BUkcoY29kZXIsIGNvZGVyLmFsbG93c0tleWVkQ29k
aW5nICYmIGNvZGVyLnJlcXVpcmVzU2VjdXJlQ29kaW5nKTsKKyAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CisgICAgdW5ibG9ja0hhbmRsZXIubV91bmJsb2NrVVJMSG9zdCA9IFtjb2Rl
ciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU1N0cmluZyBjbGFzc10gZm9yS2V5OnVuYmxvY2tVUkxI
b3N0S2V5XTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdW5ibG9ja0hhbmRsZXIubV93ZWJGaWx0
ZXJFdmFsdWF0b3IgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpnZXRXZWJGaWx0ZXJFdmFs
dWF0b3JDbGFzcygpIGZvcktleTp3ZWJGaWx0ZXJFdmFsdWF0b3JLZXldOworI2VuZGlmCisgICAg
cmV0dXJuIHRydWU7CisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CiAKLSAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJcyhzY2hlbWUoKSkp
Citib29sIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Y2FuSGFuZGxlUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0Cit7CisgICAgaWYgKCFtX3VuYmxvY2tS
ZXF1ZXN0ZXIpIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgIGlmICghbV93ZWJGaWx0ZXJF
dmFsdWF0b3IpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZWxzZQogICAgICAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKKyAgICB9CiAKLSAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHJl
cXVlc3QudXJsKCkuaG9zdCgpLCAidW5ibG9jayIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcyh1bmJsb2NrVVJMU2NoZW1lKCkpICYm
IGVxdWFsSWdub3JpbmdDYXNlKHJlcXVlc3QudXJsKCkuaG9zdCgpLCBtX3VuYmxvY2tVUkxIb3N0
KTsKK30KIAotICAgIFttX3dlYkZpbHRlckV2YWx1YXRvciB1bmJsb2NrV2l0aENvbXBsZXRpb246
XihCT09MIHVuYmxvY2tlZCwgTlNFcnJvciAqKSB7Ci0gICAgICAgIGlmICh1bmJsb2NrZWQpCi0g
ICAgICAgICAgICBmdW5jdGlvbigpOwotICAgIH1dOwotICAgIHJldHVybiB0cnVlOworc3RhdGlj
IGlubGluZSB2b2lkIGRpc3BhdGNoVG9NYWluVGhyZWFkKHZvaWQgKF5ibG9jaykoKSkKK3sKKyAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworI2lmIFBMQVRG
T1JNKElPUykKKyAgICAgICAgV2ViVGhyZWFkUnVuKGJsb2NrKTsKKyNlbHNlCisgICAgICAgIGJs
b2NrKCk7CisjZW5kaWYKKyAgICB9KTsKIH0KKwordm9pZCBDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXI6OnJlcXVlc3RVbmJsb2NrQXN5bmMoRGVjaXNpb25IYW5kbGVyRnVuY3Rpb24gZGVjaXNp
b25IYW5kbGVyKSBjb25zdAoreworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAobV93ZWJGaWx0
ZXJFdmFsdWF0b3IpIHsKKyAgICAgICAgW21fd2ViRmlsdGVyRXZhbHVhdG9yIHVuYmxvY2tXaXRo
Q29tcGxldGlvbjpbZGVjaXNpb25IYW5kbGVyXShCT09MIHVuYmxvY2tlZCwgTlNFcnJvciAqKSB7
CisgICAgICAgICAgICBkaXNwYXRjaFRvTWFpblRocmVhZChbZGVjaXNpb25IYW5kbGVyLCB1bmJs
b2NrZWRdIHsKKyAgICAgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIodW5ibG9ja2VkKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRp
ZgogCisgICAgaWYgKG1fdW5ibG9ja1JlcXVlc3RlcikgeworICAgICAgICBtX3VuYmxvY2tSZXF1
ZXN0ZXIoW2RlY2lzaW9uSGFuZGxlcl0oYm9vbCB1bmJsb2NrZWQpIHsKKyAgICAgICAgICAgIGRp
c3BhdGNoVG9NYWluVGhyZWFkKFtkZWNpc2lvbkhhbmRsZXIsIHVuYmxvY2tlZF0geworICAgICAg
ICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcih1bmJsb2NrZWQpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QYXJlbnRhbENvbnRyb2xzQ29udGVudEZp
bHRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHND
b250ZW50RmlsdGVyLm1tCmluZGV4IDg1Y2Q5NWNlNjk2MjI5NDk1NzYwMzI5ODk1ZGU0YjliYTRi
NTMwODIuLmNjOWIzZjVkMWI1OGNjNWFlM2M2MjY0MDkwODQ1ZTVlNWU5ZDVlOGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29udHJvbHNDb250ZW50
RmlsdGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BhcmVudGFsQ29u
dHJvbHNDb250ZW50RmlsdGVyLm1tCkBAIC05Myw3ICs5MywxMSBAQCBjb25zdCBjaGFyKiBQYXJl
bnRhbENvbnRyb2xzQ29udGVudEZpbHRlcjo6Z2V0UmVwbGFjZW1lbnREYXRhKGludCYgbGVuZ3Ro
KSBjb25zdAogCiBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgUGFyZW50YWxDb250cm9sc0Nv
bnRlbnRGaWx0ZXI6OnVuYmxvY2tIYW5kbGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyIHsgbV93ZWJGaWx0ZXJFdmFsdWF0b3IuZ2V0KCkgfTsKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgcmV0dXJuIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB7
ICJ1bmJsb2NrIiwgbV93ZWJGaWx0ZXJFdmFsdWF0b3IgfTsKKyNlbHNlCisgICAgcmV0dXJuIHsg
fTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3BwCmluZGV4IGI0YjliMzU4MzIzZDkzZDlhMjA1
MjEyNTdhYTI5NzRhZGE2ODZiNzIuLjIxYTY0NmMyOGNjMzU0OWMzZjZjMWYwODNlYTk5YmEwMTZl
YTc1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuY3Bw
CkBAIC0zNCw2ICszNCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgRGVjaXNp
b24gPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvbjsKK3VzaW5nIERlY2lzaW9u
UG9pbnQgPSBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50OworCiB2b2lk
IE1vY2tDb250ZW50RmlsdGVyOjplbnN1cmVJbnN0YWxsZWQoKQogewogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKQEAgLTQyLDkgKzQ1LDE0IEBAIHZvaWQgTW9ja0NvbnRlbnRG
aWx0ZXI6OmVuc3VyZUluc3RhbGxlZCgpCiAgICAgfSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgTW9j
a0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYgc2V0dGluZ3MoKQoreworICAgIHJldHVybiBNb2NrQ29u
dGVudEZpbHRlclNldHRpbmdzOjpzaW5nbGV0b24oKTsKK30KKwogYm9vbCBNb2NrQ29udGVudEZp
bHRlcjo6Y2FuSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpCiB7Ci0gICAg
cmV0dXJuIE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OnNpbmdsZXRvbigpLmVuYWJsZWQoKTsK
KyAgICByZXR1cm4gc2V0dGluZ3MoKS5lbmFibGVkKCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxN
b2NrQ29udGVudEZpbHRlcj4gTW9ja0NvbnRlbnRGaWx0ZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTU0LDE4ICs2MiwxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
TW9ja0NvbnRlbnRGaWx0ZXI+IE1vY2tDb250ZW50RmlsdGVyOjpjcmVhdGUoY29uc3QgUmVzb3Vy
Y2VSZXNwbwogCiBNb2NrQ29udGVudEZpbHRlcjo6TW9ja0NvbnRlbnRGaWx0ZXIoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpCiB7Ci0gICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSk7CisgICAgbWF5YmVE
ZXRlcm1pbmVTdGF0dXMoRGVjaXNpb25Qb2ludDo6QWZ0ZXJSZXNwb25zZSk7CiB9CiAKIHZvaWQg
TW9ja0NvbnRlbnRGaWx0ZXI6OmFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
IHsKICAgICBtX3JlcGxhY2VtZW50RGF0YS5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKLSAgICBtYXli
ZURldGVybWluZVN0YXR1cyhNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjpEZWNpc2lvblBvaW50
OjpBZnRlckFkZERhdGEpOworICAgIG1heWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6
OkFmdGVyQWRkRGF0YSk7CiB9CiAKIHZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6OmZpbmlzaGVkQWRk
aW5nRGF0YSgpCiB7Ci0gICAgbWF5YmVEZXRlcm1pbmVTdGF0dXMoTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6RGVjaXNpb25Qb2ludDo6QWZ0ZXJGaW5pc2hlZEFkZGluZ0RhdGEpOworICAgIG1h
eWJlRGV0ZXJtaW5lU3RhdHVzKERlY2lzaW9uUG9pbnQ6OkFmdGVyRmluaXNoZWRBZGRpbmdEYXRh
KTsKIH0KIAogYm9vbCBNb2NrQ29udGVudEZpbHRlcjo6bmVlZHNNb3JlRGF0YSgpIGNvbnN0CkBA
IC04NiwyMCArOTQsMzQgQEAgY29uc3QgY2hhciogTW9ja0NvbnRlbnRGaWx0ZXI6OmdldFJlcGxh
Y2VtZW50RGF0YShpbnQmIGxlbmd0aCkgY29uc3QKIAogQ29udGVudEZpbHRlclVuYmxvY2tIYW5k
bGVyIE1vY2tDb250ZW50RmlsdGVyOjp1bmJsb2NrSGFuZGxlcigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHsgfTsKKyAgICB1c2luZyBEZWNpc2lvbkhhbmRsZXJGdW5jdGlvbiA9IENvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlcjo6RGVjaXNpb25IYW5kbGVyRnVuY3Rpb247CisKKyAgICByZXR1cm4g
Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHsKKyAgICAgICAgTW9ja0NvbnRlbnRGaWx0ZXJT
ZXR0aW5nczo6dW5ibG9ja1VSTEhvc3QoKSwgW10oRGVjaXNpb25IYW5kbGVyRnVuY3Rpb24gZGVj
aXNpb25IYW5kbGVyKSB7CisgICAgICAgICAgICBib29sIHNob3VsZEFsbG93IHsgc2V0dGluZ3Mo
KS51bmJsb2NrUmVxdWVzdERlY2lzaW9uKCkgPT0gRGVjaXNpb246OkFsbG93IH07CisgICAgICAg
ICAgICBpZiAoc2hvdWxkQWxsb3cpCisgICAgICAgICAgICAgICAgc2V0dGluZ3MoKS5zZXREZWNp
c2lvbihEZWNpc2lvbjo6QWxsb3cpOworICAgICAgICAgICAgZGVjaXNpb25IYW5kbGVyKHNob3Vs
ZEFsbG93KTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK1N0cmluZyBNb2NrQ29udGVudEZpbHRl
cjo6dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQoKSBjb25zdAoreworICAgIHJldHVybiAidW5i
bG9ja1JlcXVlc3REZW5pZWQoKSI7CiB9CiAKLXZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6Om1heWJl
RGV0ZXJtaW5lU3RhdHVzKE1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uUG9pbnQg
ZGVjaXNpb25Qb2ludCkKK3ZvaWQgTW9ja0NvbnRlbnRGaWx0ZXI6Om1heWJlRGV0ZXJtaW5lU3Rh
dHVzKERlY2lzaW9uUG9pbnQgZGVjaXNpb25Qb2ludCkKIHsKLSAgICBpZiAobV9zdGF0dXMgIT0g
U3RhdHVzOjpOZWVkc01vcmVEYXRhIHx8IGRlY2lzaW9uUG9pbnQgIT0gTW9ja0NvbnRlbnRGaWx0
ZXJTZXR0aW5nczo6c2luZ2xldG9uKCkuZGVjaXNpb25Qb2ludCgpKQorICAgIGlmIChtX3N0YXR1
cyAhPSBTdGF0dXM6Ok5lZWRzTW9yZURhdGEgfHwgZGVjaXNpb25Qb2ludCAhPSBzZXR0aW5ncygp
LmRlY2lzaW9uUG9pbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zdGF0dXMgPSBNb2Nr
Q29udGVudEZpbHRlclNldHRpbmdzOjpzaW5nbGV0b24oKS5kZWNpc2lvbigpID09IE1vY2tDb250
ZW50RmlsdGVyU2V0dGluZ3M6OkRlY2lzaW9uOjpBbGxvdyA/IFN0YXR1czo6QWxsb3dlZCA6IFN0
YXR1czo6QmxvY2tlZDsKKyAgICBtX3N0YXR1cyA9IHNldHRpbmdzKCkuZGVjaXNpb24oKSA9PSBE
ZWNpc2lvbjo6QWxsb3cgPyBTdGF0dXM6OkFsbG93ZWQgOiBTdGF0dXM6OkJsb2NrZWQ7CiAgICAg
aWYgKG1fc3RhdHVzICE9IFN0YXR1czo6QmxvY2tlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9yZXBsYWNlbWVudERhdGEuY2xlYXIoKTsKLSAgICBjb25zdCBDU3RyaW5nIHV0ZjhCbG9ja2Vk
U3RyaW5nID0gTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczo6c2luZ2xldG9uKCkuYmxvY2tlZFN0
cmluZygpLnV0ZjgoKTsKKyAgICBjb25zdCBDU3RyaW5nIHV0ZjhCbG9ja2VkU3RyaW5nID0gc2V0
dGluZ3MoKS5ibG9ja2VkU3RyaW5nKCkudXRmOCgpOwogICAgIG1fcmVwbGFjZW1lbnREYXRhLmFw
cGVuZCh1dGY4QmxvY2tlZFN0cmluZy5kYXRhKCksIHV0ZjhCbG9ja2VkU3RyaW5nLmxlbmd0aCgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZp
bHRlci5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRlci5oCmluZGV4
IDExMmViZDk4MWU4ZWFlNzFjYzg0OGIyOWYzY2EzYWYzNjE2NzhkZTUuLjBmYTEzNTg4MzM3ODky
MDE1NzIyNTNkZGZlYzczMDgxODgxOWQ0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDb250ZW50RmlsdGVyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgZGlk
QmxvY2tEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgY2hhciogZ2V0UmVwbGFjZW1l
bnREYXRhKGludCYgbGVuZ3RoKSBjb25zdCBvdmVycmlkZTsKICAgICBDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcg
dW5ibG9ja1JlcXVlc3REZW5pZWRTY3JpcHQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICBlbnVtIGNsYXNzIFN0YXR1cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmNwcAppbmRleCBhYWFiYjkzZTQyZjBhZjcwYzk3
MWJiZDE4NzVkZTNmOGExOWRlNzg1Li5hNDdkNGVjY2I5ZWNmYjY1NDg0YjMzYTJlN2I2NDMwZWQ2
MzE3ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRG
aWx0ZXJTZXR0aW5ncy5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKIAorI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgor
I2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00Myw2ICs0NSwxOCBAQCB2b2lkIE1vY2tDb250ZW50RmlsdGVy
U2V0dGluZ3M6OnJlc2V0KCkKICAgICBzaW5nbGV0b24oKSA9IE1vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MoKTsKIH0KIAorY29uc3QgU3RyaW5nJiBNb2NrQ29udGVudEZpbHRlclNldHRpbmdzOjp1
bmJsb2NrUmVxdWVzdFVSTCgpIGNvbnN0Cit7CisgICAgc3RhdGljIExhenlOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IHVuYmxvY2tSZXF1ZXN0VVJMOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBv
bmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAgICB1bmJs
b2NrUmVxdWVzdFVSTC5jb25zdHJ1Y3QoQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjp1bmJs
b2NrVVJMU2NoZW1lKCkpOworICAgICAgICB1bmJsb2NrUmVxdWVzdFVSTC5nZXQoKS5hcHBlbmQo
IjovLyIpOworICAgICAgICB1bmJsb2NrUmVxdWVzdFVSTC5nZXQoKS5hcHBlbmQodW5ibG9ja1VS
TEhvc3QoKSk7CisgICAgfSk7CisgICAgcmV0dXJuIHVuYmxvY2tSZXF1ZXN0VVJMOworfQorCiB9
OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ29udGVudEZpbHRl
clNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0
dGluZ3MuaAppbmRleCAyMTAyNzY3MGNjNzYyNTBlZjdkZTgyODBjZWYwNmQyNjk2MjM5YmM0Li44
NjYzZDEyMjI0NGE1YjI1ODliZTU0NWI1MTBmMjJkNzk4OGJiYjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaApAQCAtMzIsOCAr
MzIsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2NrQ29udGVudEZpbHRlclNl
dHRpbmdzIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3Mg
TmV2ZXJEZXN0cm95ZWQ8TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncz47CisKIHB1YmxpYzoKICAg
ICBlbnVtIGNsYXNzIERlY2lzaW9uUG9pbnQgewogICAgICAgICBBZnRlclJlc3BvbnNlLApAQCAt
NDgsNiArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0
aW5ncyYgc2luZ2xldG9uKCk7CiAgICAgc3RhdGljIHZvaWQgcmVzZXQoKTsKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogdW5ibG9ja1VSTEhvc3QoKSB7IHJldHVybiAibW9jay11bmJsb2NrIjsgfQog
CiAgICAgLy8gVHJpY2sgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncyBpbnRvIHRoaW5raW5nIHdlJ3Jl
IFJlZkNvdW50ZWQuCiAgICAgdm9pZCByZWYoKSB7IH0KQEAgLTY1LDYgKzY2LDExIEBAIHB1Ymxp
YzoKICAgICBEZWNpc2lvbiBkZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjaXNpb247IH0K
ICAgICB2b2lkIHNldERlY2lzaW9uKERlY2lzaW9uIGRlY2lzaW9uKSB7IG1fZGVjaXNpb24gPSBk
ZWNpc2lvbjsgfQogCisgICAgRGVjaXNpb24gdW5ibG9ja1JlcXVlc3REZWNpc2lvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdW5ibG9ja1JlcXVlc3REZWNpc2lvbjsgfQorICAgIHZvaWQgc2V0VW5ibG9j
a1JlcXVlc3REZWNpc2lvbihEZWNpc2lvbiB1bmJsb2NrUmVxdWVzdERlY2lzaW9uKSB7IG1fdW5i
bG9ja1JlcXVlc3REZWNpc2lvbiA9IHVuYmxvY2tSZXF1ZXN0RGVjaXNpb247IH0KKworICAgIGNv
bnN0IFN0cmluZyYgdW5ibG9ja1JlcXVlc3RVUkwoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBN
b2NrQ29udGVudEZpbHRlclNldHRpbmdzKCkgPSBkZWZhdWx0OwogICAgIE1vY2tDb250ZW50Rmls
dGVyU2V0dGluZ3MoY29uc3QgTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncyYpID0gZGVsZXRlOwpA
QCAtNzMsNiArNzksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9lbmFibGVkIHsgZmFsc2UgfTsK
ICAgICBEZWNpc2lvblBvaW50IG1fZGVjaXNpb25Qb2ludCB7IERlY2lzaW9uUG9pbnQ6OkFmdGVy
UmVzcG9uc2UgfTsKICAgICBEZWNpc2lvbiBtX2RlY2lzaW9uIHsgRGVjaXNpb246OkFsbG93IH07
CisgICAgRGVjaXNpb24gbV91bmJsb2NrUmVxdWVzdERlY2lzaW9uIHsgRGVjaXNpb246OkJsb2Nr
IH07CiAgICAgU3RyaW5nIG1fYmxvY2tlZFN0cmluZzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuaWRsCmluZGV4IGFjMDZk
ZWQyZjUwYTcwM2JjOTlmNmQ0OGVmMzk0OGM1MmQzZGMwNGYuLmU4NmIzMTI3YzU5MzAxYTMwODVj
MTE0ZmQyYzUyM2UwZjlkYzMwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5ncy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ29udGVudEZpbHRlclNldHRpbmdzLmlkbApAQCAtMzksNCArMzksNyBAQAogICAgIGNv
bnN0IG9jdGV0IERFQ0lTSU9OX0FMTE9XID0gMDsKICAgICBjb25zdCBvY3RldCBERUNJU0lPTl9C
TE9DSyA9IDE7CiAgICAgW0N1c3RvbV0gYXR0cmlidXRlIG9jdGV0IGRlY2lzaW9uOworICAgIFtD
dXN0b21dIGF0dHJpYnV0ZSBvY3RldCB1bmJsb2NrUmVxdWVzdERlY2lzaW9uOworCisgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB1bmJsb2NrUmVxdWVzdFVSTDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCmluZGV4IDNlMWI5NTZhODk1ZDMxMTk0NWM4YmRhNjNlMzMxNzYwNWFiZDNhYTYuLmEz
ODFlNTA4ZjY5ODEwYjRjOGVkYTg5ODVlNDA3NTBkOTNlZTFkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CkBAIC0xNTEsNiArMTUxLDEwIEBACiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrc0lPUy5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisj
aW1wb3J0IDxXZWJDb3JlL1BvbGljeUNoZWNrZXIuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKQEAgLTY2NSw3ICs2Njks
NiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKCkKIHsKICAgICBBU1NFUlQoIW1fd2ViRnJhbWUtPl9wcml2YXRlLT5wcm92aXNpb25h
bFVSTCk7CiAgICAgbV93ZWJGcmFtZS0+X3ByaXZhdGUtPnByb3Zpc2lvbmFsVVJMID0gY29yZSht
X3dlYkZyYW1lLmdldCgpKS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpLT51
cmwoKS5zdHJpbmcoKTsKLSAgICBtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+Y29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyLmNsZWFyKCk7CiAKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmll
dyhtX3dlYkZyYW1lLmdldCgpKTsKICNpZiAhUExBVEZPUk0oSU9TKQpAQCAtODgwLDExICs4ODMs
NiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCiB7
Ci0gICAgaWYgKFttX3dlYkZyYW1lIF9jb250ZW50RmlsdGVyRGlkSGFuZGxlTmF2aWdhdGlvbkFj
dGlvbjpyZXF1ZXN0XSkgewotICAgICAgICBmdW5jdGlvbihQb2xpY3lJZ25vcmUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93
ZWJGcmFtZS5nZXQoKSk7CiAgICAgW1t3ZWJWaWV3IF9wb2xpY3lEZWxlZ2F0ZUZvcndhcmRlcl0g
d2ViVmlldzp3ZWJWaWV3CiAgICAgICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQpAQCAtMjI0MiwxMCAr
MjI0MCwxMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDcmVhdGVRdWlja0xvb2tI
YW5kbGUoV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlJiBoYQogfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50
RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1
bmJsb2NrSGFuZGxlcikKIHsKLSAgICBtX3dlYkZyYW1lLT5fcHJpdmF0ZS0+Y29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyID0gV1RGOjptb3ZlKHVuYmxvY2tIYW5kbGVyKTsKKyAgICBjb3JlKG1f
d2ViRnJhbWUuZ2V0KCkpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCkuc2V0Q29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyKFdURjo6bW92ZSh1bmJsb2NrSGFuZGxlcikpOwogfQorI2VuZGlmCiAK
IEBpbXBsZW1lbnRhdGlvbiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDk3YTIxZTIyOWFlMWNhZWQ0ZTZmNTVjNGJlNGU1NWJj
NzY1YmJiN2UuLjI4NTI4MDE2MTFiZGZjMGQ5ZDNmYmFiMmY1MjJhYTAyODE5YTNhYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMTAwMiwyMCArMTAwMiw2IEBAIC0g
KHZvaWQpX2NvbW1pdERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1l
LT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5jb21taXREYXRhKChjb25zdCBjaGFyICopW2Rh
dGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKTsKIH0KIAotLSAoQk9PTClfY29udGVudEZpbHRlckRp
ZEhhbmRsZU5hdmlnYXRpb25BY3Rpb246KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCAm
KXJlcXVlc3QKLXsKLSNpZiBQTEFURk9STShJT1MpCi0gICAgUmV0YWluUHRyPFdlYkZyYW1lPiBy
ZXRhaW5lZE1haW5GcmFtZSA9IFtbc2VsZiB3ZWJWaWV3XSBtYWluRnJhbWVdOwotICAgIHJldHVy
biBfcHJpdmF0ZS0+Y29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmhhbmRsZVVuYmxvY2tSZXF1
ZXN0QW5kRGlzcGF0Y2hJZlN1Y2Nlc3NmdWwocmVxdWVzdCwgW3JldGFpbmVkTWFpbkZyYW1lXSB7
Ci0gICAgICAgIFdlYlRocmVhZFJ1biheIHsKLSAgICAgICAgICAgIFtyZXRhaW5lZE1haW5GcmFt
ZSByZWxvYWRdOwotICAgICAgICB9KTsKLSAgICB9KTsKLSNlbHNlCi0gICAgcmV0dXJuIE5POwot
I2VuZGlmCi19Ci0KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYkZyYW1lIChXZWJQcml2YXRl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAppbmRleCBk
Y2M1NDA2NTY0YzQ5M2UzZTdjNTZlM2I4YjViZjFlNzUwODQ0ZWQ4Li4wYWFmYjFkNmMwOTNlZjA0
MzI5OWY3OWY0ZWE4ZTBhZTZjZmYzYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lSW50ZXJuYWwuaApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW1wb3J0ICJXZWJGcmFt
ZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIgotI2ltcG9ydCA8
V2ViQ29yZS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RWRpdEFjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lU2VsZWN0aW9uLmg+CkBAIC05Miw3ICs5MSw2IEBAIFdlYlZpZXcg
KmdldFdlYlZpZXcoV2ViRnJhbWUgKndlYkZyYW1lKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAg
Qk9PTCBpc0NvbW1pdHRpbmc7CiAjZW5kaWYKLSAgICBXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIgY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOwogfQogQGVuZAogCkBAIC0x
ODQsOCArMTgyLDYgQEAgV2ViVmlldyAqZ2V0V2ViVmlldyhXZWJGcmFtZSAqd2ViRnJhbWUpOwog
CiAtICh2b2lkKV9jb21taXREYXRhOihOU0RhdGEgKilkYXRhOwogCi0tIChCT09MKV9jb250ZW50
RmlsdGVyRGlkSGFuZGxlTmF2aWdhdGlvbkFjdGlvbjooY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JilyZXF1ZXN0OwotCiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYkludGVy
bmFsRnJhbWVMb2FkRGVsZWdhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggYzM1NjdkZWNhYjQzNWM1MWRlYzMxM2Uw
NjkwNmZkMTk2OTdkZWI3MS4uYjZjZjdiZTk2ZjA3MGM4ZTAwYmQ0NmRmMTg4ZjYxMzgxODE2ZDFh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94
eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlY2Vu
dFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJjaAogdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFtZShjb25zdCBX
ZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXImIHVuYmxvY2tIYW5kbGVyLCB1aW50
NjRfdCBmcmFtZUlEKQogewogICAgIGlmIChXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vz
cy0+d2ViRnJhbWUoZnJhbWVJRCkpCi0gICAgICAgIGZyYW1lLT5zZXRDb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIodW5ibG9ja0hhbmRsZXIpOworICAgICAgICBmcmFtZS0+Y29udGVudEZpbHRl
ckRpZEJsb2NrTG9hZCh1bmJsb2NrSGFuZGxlcik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCBmODMyNzQ3ZGU5YmM4ZmFlOTRhYTU5OGFh
MWExMTg0N2JlMTZiNTI3Li44YjNhYTEyNTNhNTU0NjQxOWZjYTg4MjgzZDZiY2FiZjMyM2QwMzQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC0xMjgs
NyArMTI4LDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChj
b25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBtX2ZyYW1lTG9hZFN0YXRlLmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKHVybCk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotICAgIG1fY29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmNsZWFyKCk7CisgICAgbV9jb250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXIgPSB7IH07CiAjZW5kaWYKIH0KIApAQCAtMjM0LDE2ICsyMzQsMTcgQEAgdm9p
ZCBXZWJGcmFtZVByb3h5OjpzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBTdHJpbmcmIHVucmVhY2hh
YmxlVVJMKQogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotYm9vbCBXZWJGcmFt
ZVByb3h5Ojpjb250ZW50RmlsdGVyRGlkSGFuZGxlTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIFdlYkZyYW1lUHJveHk6OmRpZEhh
bmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIFJlZlB0cjxXZWJQ
YWdlUHJveHk+IHJldGFpbmVkUGFnZSA9IG1fcGFnZTsKLSAgICByZXR1cm4gbV9jb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIuaGFuZGxlVW5ibG9ja1JlcXVlc3RBbmREaXNwYXRjaElmU3VjY2Vz
c2Z1bChyZXF1ZXN0LCBbcmV0YWluZWRQYWdlXSB7Ci0gICAgICAgIHJldGFpbmVkUGFnZS0+cmVs
b2FkKGZhbHNlKTsKKyAgICBpZiAoIW1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyLmNhbkhh
bmRsZVJlcXVlc3QocmVxdWVzdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlZlB0
cjxXZWJQYWdlUHJveHk+IHBhZ2UgeyBtX3BhZ2UgfTsKKyAgICBtX2NvbnRlbnRGaWx0ZXJVbmJs
b2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFtwYWdlXShib29sIHVuYmxvY2tlZCkgewor
ICAgICAgICBpZiAodW5ibG9ja2VkICYmIHBhZ2UpCisgICAgICAgICAgICBwYWdlLT5yZWxvYWQo
ZmFsc2UpOwogICAgIH0pOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuaAppbmRleCA4OGEwMmQ4OTI5MDMwZDcyODE5M2IwMjI3ZGNjMTk5NGQwMWNmZTI5Li40
MTk4MTJkMGEzM2NiZTBiNzBjMmQ3YzM1MTM2YTAzMGUwZjFiOTA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKQEAgLTEyMyw4ICsxMjMsOCBAQCBwdWJsaWM6CiAg
ICAgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5JiBzZXRVcEZvcm1TdWJtaXNzaW9uTGlz
dGVuZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKLSAgICB2b2lkIHNldENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcihXZWJDb3Jl
OjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVy
KSB7IG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0gV1RGOjptb3ZlKGNvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlcik7IH0KLSAgICBib29sIGNvbnRlbnRGaWx0ZXJEaWRIYW5kbGVOYXZp
Z2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQg
Y29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIgY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKSB7IG1fY29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyID0gV1RGOjptb3ZlKGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcik7IH0KKyAg
ICBib29sIGRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAyOTQ2YjAyODNlMjY1MzkwODk1ZTAw
MzZkM2VhMTQwNzAxMjdlZDAyLi40YmYyOWE3NTI2OGI4YmMzM2MzMTIyMGJhYjc0NWU5NTdjYjdl
MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzA5
Miw3ICszMDkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmEKICAgICB9CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgaWYgKGZyYW1lLT5jb250ZW50RmlsdGVyRGlkSGFu
ZGxlTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0KSkgeworICAgIGlmIChmcmFtZS0+ZGlkSGFuZGxl
Q29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKSB7CiAgICAgICAgIHJlY2Vp
dmVkUG9saWN5QWN0aW9uID0gdHJ1ZTsKICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5SWdu
b3JlOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDllODU3MmUzM2FjMGU3ZWM0YjdhNDU4ZDNiMjA5MDkzODk5NjRhYWQuLmY0NmM3MDdlNGFi
YmI0MWEzOTUyMDQ0YTMxMTEzMzJiMDNiMWZmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCkBAIC0xNjQ4LDcgKzE2NDgsMTIgQEAgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtp
bmdDb250ZXh0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2Nr
SGFuZGxlciB1bmJsb2NrSGFuZGxlcikKIHsKLSAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKSkKKyAgICBpZiAoIXVuYmxvY2tIYW5kbGVyLm5lZWRzVUlQcm9jZXNzKCkp
IHsKKyAgICAgICAgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIo
KS5zZXRDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIoV1RGOjptb3ZlKHVuYmxvY2tIYW5kbGVy
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSB7
IG1fZnJhbWUtPnBhZ2UoKSB9KQogICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWRGb3JGcmFtZSh1bmJsb2NrSGFuZGxl
ciwgbV9mcmFtZS0+ZnJhbWVJRCgpKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZGQwOWYyNWY3NTc5
ZGE5YTlkZjY1NWQ0ZGFjNGZlZTdiMGRhZjlkLi4yNWM0YmVlYTMxNmIzZGY3N2NjMWExNmYyNTFj
ZjJjY2JjYTY1YjM0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQgQEAKIDIwMTUtMDMtMTkgIEFuZHkgRXN0
ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCisgICAgICAgIFtDb250ZW50IEZpbHRlcmluZ10gQWRk
IHRlc3RzIGZvciB1bmJsb2NrIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUYXVnaHQgY29udGVudGZpbHRlcmluZy5qcyBob3cgdG8gcGVy
Zm9ybSBhbiB1bmJsb2NrIHJlcXVlc3QgdGVzdCwgYW5kIGFkZGVkIHRlc3RzIGZvciBib3RoIGFs
bG93ZWQgYW5kIGJsb2NrZWQgcmVxdWVzdHMuCisKKyAgICAgICAgKiBjb250ZW50ZmlsdGVyaW5n
L2FsbG93LWFmdGVyLXVuYmxvY2stcmVxdWVzdC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBjb250ZW50ZmlsdGVyaW5nL2FsbG93LWFmdGVyLXVuYmxvY2stcmVxdWVzdC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBjb250ZW50ZmlsdGVyaW5nL2Jsb2NrLWFmdGVyLXVuYmxvY2stcmVx
dWVzdC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb250ZW50ZmlsdGVyaW5nL2Js
b2NrLWFmdGVyLXVuYmxvY2stcmVxdWVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb250ZW50
ZmlsdGVyaW5nL3Jlc291cmNlcy9jb250ZW50ZmlsdGVyaW5nLmpzOgorICAgICAgICAodGVzdENv
bnRlbnRGaWx0ZXJpbmcpOiBBZGRlZCBhbiBhcmd1bWVudCBzcGVjaWZ5aW5nIGlmIHRoZSBkZWNp
c2lvbiBhcHBsaWVzIHRvIHRoZSBpbml0aWFsIGxvYWQgb3IgdGhlIHVuYmxvY2sgcmVxdWVzdC4K
KyAgICAgICAgKF9kb1Rlc3QpOiBXaGVuIHRlc3RpbmcgdW5ibG9jayBoYW5kbGluZywgbmF2aWdh
dGUgdGhlIHRlc3QgaWZyYW1lIHRvIHNldHRpbmdzLnVuYmxvY2tSZXF1ZXN0VVJMIHdoZW4gdGhl
IGVycm9yIHBhZ2UgaXMgZGlzcGxheWVkLgorICAgICAgICBJZiB0aGUgdW5ibG9jayBpcyBkZW5p
ZWQsIHRoZSB0ZXN0IGhhcm5lc3Mgd2lsbCBjYWxsIHdpbmRvdy51bmJsb2NrUmVxdWVzdERlbmll
ZCgpLiBJZiB0aGUgdW5ibG9jayBpcyBzdWNjZXNzZnVsLAorICAgICAgICB0aGUgaWZyYW1lIHdp
bGwgcmVsb2FkLCB3aGljaCB3ZSBkZXRlY3QgYnkgbGlzdGVuaW5nIGZvciBpdHMgbG9hZCBldmVu
dC4KKworMjAxNS0wMy0xOSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKICAgICAg
ICAgW0NvbnRlbnQgRmlsdGVyaW5nXSBHaXZlIGNvbnRlbnRmaWx0ZXJpbmcgdGVzdHMgYSBKYXZh
U2NyaXB0IGhhcm5lc3MKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0Mjg5OQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5n
L2FsbG93LWFmdGVyLXVuYmxvY2stcmVxdWVzdC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
Y29udGVudGZpbHRlcmluZy9hbGxvdy1hZnRlci11bmJsb2NrLXJlcXVlc3QtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNjdiZmExOTIwMmIyMzcwNDZmMGUwNjI2MWYwMzllMWEyZTc0YjkyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9hbGxvdy1hZnRl
ci11bmJsb2NrLXJlcXVlc3QtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGlmcmFtZSBzcmM9ImRhdGE6dGV4dC9odG1sLFBBU1MiPjwvaWZyYW1lPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9hbGxvdy1hZnRlci11bmJsb2Nr
LXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYWxsb3ctYWZ0ZXIt
dW5ibG9jay1yZXF1ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzRlZjU0MjE3OWZmMmZjMTU4MjAwNjVl
OTM2ZWY3YjVhZGNjOWQwZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbnRlbnRm
aWx0ZXJpbmcvYWxsb3ctYWZ0ZXItdW5ibG9jay1yZXF1ZXN0Lmh0bWwKQEAgLTAsMCArMSw5IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29udGVudGZpbHRlcmlu
Zy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIGludGVybmFscyA9IHdpbmRvdy5pbnRlcm5h
bHM7CitpZiAoaW50ZXJuYWxzKSB7CisgICAgdmFyIHNldHRpbmdzID0gaW50ZXJuYWxzLm1vY2tD
b250ZW50RmlsdGVyU2V0dGluZ3M7CisgICAgdGVzdENvbnRlbnRGaWx0ZXJpbmcoLyogZGVjaXNp
b25Qb2ludCAqL3NldHRpbmdzLkRFQ0lTSU9OX1BPSU5UX0FGVEVSX0ZJTklTSEVEX0FERElOR19E
QVRBLCAvKiBkZWNpc2lvbiAqL3NldHRpbmdzLkRFQ0lTSU9OX0FMTE9XLCAvKiBkZWNpZGVBZnRl
clVuYmxvY2tSZXF1ZXN0ICovdHJ1ZSk7Cit9Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvYmxvY2stYWZ0ZXItdW5ibG9jay1yZXF1ZXN0LWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL2Jsb2NrLWFmdGVyLXVuYmxv
Y2stcmVxdWVzdC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2N2JmYTE5MjAyYjIzNzA0NmYw
ZTA2MjYxZjAzOWUxYTJlNzRiOTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb250
ZW50ZmlsdGVyaW5nL2Jsb2NrLWFmdGVyLXVuYmxvY2stcmVxdWVzdC1leHBlY3RlZC5odG1sCkBA
IC0wLDAgKzEsMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aWZyYW1lIHNyYz0iZGF0YTp0ZXh0L2h0
bWwsUEFTUyI+PC9pZnJhbWU+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVy
aW5nL2Jsb2NrLWFmdGVyLXVuYmxvY2stcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVzdHMvY29udGVu
dGZpbHRlcmluZy9ibG9jay1hZnRlci11bmJsb2NrLXJlcXVlc3QuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ZjU1ODgxOTMwYWE2NTViYWY2Y2Y2YjQ4NzBmOGQxMjIyZjkzOTZlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9ibG9jay1hZnRlci11bmJsb2NrLXJlcXVl
c3QuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9jb250ZW50ZmlsdGVyaW5nLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgaW50
ZXJuYWxzID0gd2luZG93LmludGVybmFsczsKK2lmIChpbnRlcm5hbHMpIHsKKyAgICB2YXIgc2V0
dGluZ3MgPSBpbnRlcm5hbHMubW9ja0NvbnRlbnRGaWx0ZXJTZXR0aW5nczsKKyAgICB0ZXN0Q29u
dGVudEZpbHRlcmluZygvKiBkZWNpc2lvblBvaW50ICovc2V0dGluZ3MuREVDSVNJT05fUE9JTlRf
QUZURVJfRklOSVNIRURfQURESU5HX0RBVEEsIC8qIGRlY2lzaW9uICovc2V0dGluZ3MuREVDSVNJ
T05fQkxPQ0ssIC8qIGRlY2lkZUFmdGVyVW5ibG9ja1JlcXVlc3QgKi90cnVlKTsKK30KKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9yZXNvdXJjZXMv
Y29udGVudGZpbHRlcmluZy5qcyBiL0xheW91dFRlc3RzL2NvbnRlbnRmaWx0ZXJpbmcvcmVzb3Vy
Y2VzL2NvbnRlbnRmaWx0ZXJpbmcuanMKaW5kZXggNzM1Mzk1YjQ4NzU5MGQzNDE5ZTljZTRmYzhl
ZTg2NDE0ZjBhMWRjNC4uNDdlMWM0ZjBhNjg5MDQ0ODVmZDhhN2E5OTQ5NTBkZjZiZmE0OGQ5NyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY29udGVudGZpbHRlcmluZy9yZXNvdXJjZXMvY29udGVu
dGZpbHRlcmluZy5qcworKysgYi9MYXlvdXRUZXN0cy9jb250ZW50ZmlsdGVyaW5nL3Jlc291cmNl
cy9jb250ZW50ZmlsdGVyaW5nLmpzCkBAIC0xLDIyICsxLDM3IEBACi1mdW5jdGlvbiBfZG9UZXN0
KGRlY2lzaW9uUG9pbnQsIGRlY2lzaW9uKQorZnVuY3Rpb24gX2RvVGVzdChkZWNpc2lvblBvaW50
LCBkZWNpc2lvbiwgZGVjaWRlQWZ0ZXJVbmJsb2NrUmVxdWVzdCkKIHsKICAgICB2YXIgc2V0dGlu
Z3MgPSB3aW5kb3cuaW50ZXJuYWxzLm1vY2tDb250ZW50RmlsdGVyU2V0dGluZ3M7CiAgICAgc2V0
dGluZ3MuZW5hYmxlZCA9IHRydWU7CiAgICAgc2V0dGluZ3MuZGVjaXNpb25Qb2ludCA9IGRlY2lz
aW9uUG9pbnQ7Ci0gICAgc2V0dGluZ3MuZGVjaXNpb24gPSBkZWNpc2lvbjsKKyAgICBzZXR0aW5n
cy5kZWNpc2lvbiA9IChkZWNpZGVBZnRlclVuYmxvY2tSZXF1ZXN0ID8gc2V0dGluZ3MuREVDSVNJ
T05fQkxPQ0sgOiBkZWNpc2lvbik7CiAgICAgCiAgICAgdmFyIGJsb2NrZWRTdHJpbmdUZXh0ID0g
KGRlY2lzaW9uID09PSBzZXR0aW5ncy5ERUNJU0lPTl9BTExPVyA/ICJGQUlMIiA6ICJQQVNTIik7
Ci0gICAgc2V0dGluZ3MuYmxvY2tlZFN0cmluZyA9ICI8IURPQ1RZUEUgaHRtbD48Ym9keT4iICsg
YmxvY2tlZFN0cmluZ1RleHQ7CisgICAgaWYgKGRlY2lkZUFmdGVyVW5ibG9ja1JlcXVlc3QpIHsK
KyAgICAgICAgc2V0dGluZ3MudW5ibG9ja1JlcXVlc3REZWNpc2lvbiA9IGRlY2lzaW9uOworICAg
ICAgICBzZXR0aW5ncy5ibG9ja2VkU3RyaW5nID0gIjwhRE9DVFlQRSBodG1sPjxzY3JpcHQ+ZnVu
Y3Rpb24gdW5ibG9ja1JlcXVlc3REZW5pZWQoKSB7IHdpbmRvdy50b3AucG9zdE1lc3NhZ2UoJ3Vu
YmxvY2tyZXF1ZXN0ZGVuaWVkJywgJyonKTsgfTwvc2NyaXB0Pjxib2R5PiIgKyBibG9ja2VkU3Ry
aW5nVGV4dDsKKyAgICB9IGVsc2UKKyAgICAgICAgc2V0dGluZ3MuYmxvY2tlZFN0cmluZyA9ICI8
IURPQ1RZUEUgaHRtbD48Ym9keT4iICsgYmxvY2tlZFN0cmluZ1RleHQ7CiAKKyAgICB2YXIgaXNV
bmJsb2NraW5nID0gZmFsc2U7CiAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImlmcmFtZSIpOwogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTsKICAg
ICBpZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAg
ICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgaWYgKGlzVW5ibG9j
a2luZyB8fCAhZGVjaWRlQWZ0ZXJVbmJsb2NrUmVxdWVzdCkgeworICAgICAgICAgICAgd2luZG93
LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaXNVbmJsb2NraW5nID0gdHJ1ZTsKKyAgICAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgaWYgKGV2
ZW50LmRhdGEgPT09ICJ1bmJsb2NrcmVxdWVzdGRlbmllZCIpCisgICAgICAgICAgICAgICAgd2lu
ZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9LCBmYWxzZSk7CisgICAgICAg
IGlmcmFtZS5jb250ZW50RG9jdW1lbnQubG9jYXRpb24gPSBzZXR0aW5ncy51bmJsb2NrUmVxdWVz
dFVSTDsKICAgICB9LCBmYWxzZSk7CiAgICAgaWZyYW1lLnNyYyA9ICJkYXRhOnRleHQvaHRtbCw8
IURPQ1RZUEUgaHRtbD48Ym9keT4iICsgKGJsb2NrZWRTdHJpbmdUZXh0ID09PSAiRkFJTCIgPyAi
UEFTUyIgOiAiRkFJTCIpOwogfQogCi1mdW5jdGlvbiB0ZXN0Q29udGVudEZpbHRlcmluZyhkZWNp
c2lvblBvaW50LCBkZWNpc2lvbikKK2Z1bmN0aW9uIHRlc3RDb250ZW50RmlsdGVyaW5nKGRlY2lz
aW9uUG9pbnQsIGRlY2lzaW9uLCBkZWNpZGVBZnRlclVuYmxvY2tSZXF1ZXN0KQogewogICAgIGlm
ICghd2luZG93LmludGVybmFscykgewogICAgICAgICBjb25zb2xlLmxvZygiVGhpcyB0ZXN0IHJl
cXVpcmVzIHdpbmRvdy5pbnRlcm5hbHMiKTsKQEAgLTMwLDYgKzQ1LDYgQEAgZnVuY3Rpb24gdGVz
dENvbnRlbnRGaWx0ZXJpbmcoZGVjaXNpb25Qb2ludCwgZGVjaXNpb24pCiAKICAgICB3aW5kb3cu
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
ImxvYWQiLCBmdW5jdGlvbihldmVudCkgewotICAgICAgICBfZG9UZXN0KGRlY2lzaW9uUG9pbnQs
IGRlY2lzaW9uKTsKKyAgICAgICAgX2RvVGVzdChkZWNpc2lvblBvaW50LCBkZWNpc2lvbiwgZGVj
aWRlQWZ0ZXJVbmJsb2NrUmVxdWVzdCk7CiAgICAgfSwgZmFsc2UpOwogfQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="273932"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>