<?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>147871</bug_id>
          
          <creation_ts>2015-08-11 00:00:52 -0700</creation_ts>
          <short_desc>[Cocoa] Add redirect support to CustomProtocolManager</short_desc>
          <delta_ts>2015-08-15 20:29:25 -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>147872</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1116506</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-11 00:00:52 -0700</bug_when>
    <thetext>[Cocoa] Add redirect support to CustomProtocolManager</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116509</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-11 00:19:47 -0700</bug_when>
    <thetext>This is needed to write a test for https://bugs.webkit.org/show_bug.cgi?id=147872</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116510</commentid>
    <comment_count>2</comment_count>
      <attachid>258709</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-11 00:23:07 -0700</bug_when>
    <thetext>Created attachment 258709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116692</commentid>
    <comment_count>3</comment_count>
      <attachid>258750</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-11 13:52:06 -0700</bug_when>
    <thetext>Created attachment 258750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116693</commentid>
    <comment_count>4</comment_count>
      <attachid>258751</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-11 13:55:57 -0700</bug_when>
    <thetext>Created attachment 258751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117950</commentid>
    <comment_count>5</comment_count>
      <attachid>258751</attachid>
    <who name="">mitz</who>
    <bug_when>2015-08-15 10:19:14 -0700</bug_when>
    <thetext>Comment on attachment 258751
Patch

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

&gt; Source/WebKit2/Shared/Network/CustomProtocols/Cocoa/CustomProtocolManagerCocoa.mm:54
&gt; +using namespace WebCore;

I think recently in WebKit2 we have taken to avoiding using namespace WebCore. It sure looks like existing functions in this file already use WebCore::-qualified types.

&gt; Source/WebKit2/Shared/Network/CustomProtocols/soup/CustomProtocolManagerSoup.cpp:110
&gt; +{

Do we need a notImplemented() here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117970</commentid>
    <comment_count>6</comment_count>
      <attachid>258751</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-08-15 12:56:49 -0700</bug_when>
    <thetext>Comment on attachment 258751
Patch

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

&gt; Source/WebKit2/UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:116
&gt; +    if (redirectResponse) {
&gt; +        _connection-&gt;send(Messages::CustomProtocolManager::WasRedirectedToRequest(_customProtocolID, request, redirectResponse), 0);
&gt; +        return nil;
&gt; +    }

For normal loading, -connection:willSendRequest:redirectResponse: needs to return &quot;request&quot; if the delegate agrees to take the redirect, nil if the request is canceled, and some other request if the delegate decides to modify it.

Is it a bug to return nil here, or do custom protocols work differently? If it&apos;s a bug, please add a test case that would have caught it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118006</commentid>
    <comment_count>7</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-15 19:32:59 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 258751 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=258751&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/Network/CustomProtocols/Cocoa/CustomProtocolManagerCocoa.mm:54
&gt; &gt; +using namespace WebCore;
&gt; 
&gt; I think recently in WebKit2 we have taken to avoiding using namespace
&gt; WebCore. It sure looks like existing functions in this file already use
&gt; WebCore::-qualified types.

Oh, ok. I was actually going to remove all the WebCore::s in another patch, so that&apos;s good to know!

&gt; 
&gt; &gt; Source/WebKit2/Shared/Network/CustomProtocols/soup/CustomProtocolManagerSoup.cpp:110
&gt; &gt; +{
&gt; 
&gt; Do we need a notImplemented() here?

I can add it.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118007</commentid>
    <comment_count>8</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-15 19:49:09 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 258751 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=258751&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:116
&gt; &gt; +    if (redirectResponse) {
&gt; &gt; +        _connection-&gt;send(Messages::CustomProtocolManager::WasRedirectedToRequest(_customProtocolID, request, redirectResponse), 0);
&gt; &gt; +        return nil;
&gt; &gt; +    }
&gt; 
&gt; For normal loading, -connection:willSendRequest:redirectResponse: needs to
&gt; return &quot;request&quot; if the delegate agrees to take the redirect, nil if the
&gt; request is canceled, and some other request if the delegate decides to
&gt; modify it.
&gt; 
&gt; Is it a bug to return nil here, or do custom protocols work differently? If
&gt; it&apos;s a bug, please add a test case that would have caught it.

Custom protocols do work differently in this case. If I were to return the request here, then the connection would tell the embedder&apos;s NSURLProtocol to start loading the redirect request.

Then, when the Networking process receives WasRedirectedToRequest, it starts a redirect for the underlying connection, which triggers our normal willSendRequest() logic. If this results in a new request, then the Networking process&apos;s NSURLProtocol receives -startLoading, which starts a new connection in the UI process.

So returning nil here prevents duplicate loads from starting in the embedder&apos;s NSURLProtocol, and ensures that the request that is started is the one that WebKit has had a chance to modify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118009</commentid>
    <comment_count>9</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-08-15 20:29:25 -0700</bug_when>
    <thetext>Committed r188517: &lt;http://trac.webkit.org/changeset/188517&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258709</attachid>
            <date>2015-08-11 00:23:07 -0700</date>
            <delta_ts>2015-08-11 13:52:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147871-20150811002252.patch</filename>
            <type>text/plain</type>
            <size>15689</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGQ1YWVjOGZjMmNhOThi
YWI1ZGIwMjJhNTczYjI3ODI5OGRjYTIyMS4uMzZmNDMwZTBiZDlkOGQ1YTg5YmU0MzU1OTk4NGUz
Y2NjZmZmMzZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA4LTExICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCByZWRpcmVj
dCBzdXBwb3J0IHRvIEN1c3RvbVByb3RvY29sTWFuYWdlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3ODcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBOU1VSTFByb3RvY29scyBoYXZlIHRo
ZSBhYmlsaXR5IHRvIGdlbmVyYXRlIHJlZGlyZWN0IHJlc3BvbnNlcy4gVGhpcyBjaGFuZ2UgdGVh
Y2hlcyBDdXN0b21Qcm90b2NvbE1hbmFnZXIgaG93IHRvIGhhbmRsZSB0aGVtLgorCisgICAgICAg
ICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFu
YWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Ondh
c1JlZGlyZWN0ZWRUb1JlcXVlc3QpOiBDYWxsZWQgLVVSTFByb3RvY29sOndhc1JlZGlyZWN0ZWRU
b1JlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTogb24gdGhlIE5TVVJMUHJvdG9jb2xDbGllbnQuCisg
ICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlci5oOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Q
cm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW46IERlZmluZWQgV2FzUmVkaXJlY3RlZFRvUmVxdWVz
dC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29s
TG9hZGVyIGNvbm5lY3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6XSk6IElm
IGEgcmVkaXJlY3QgcmVzcG9uc2UgaXMgcmVjZWl2ZWQsIHNlbmQgV2FzUmVkaXJlY3RlZFRvUmVx
dWVzdCBhbmQgcmV0dXJuIG5pbCB0byBpZ25vcmUgdGhlIHJlZGlyZWN0LgorCiAyMDE1LTA4LTEw
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVHJ5IHRvIGZpeCB0aGUg
MzItYml0IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVBy
b3RvY29sTWFuYWdlckNvY29hLm1tCmluZGV4IGRkNjNhMTEwZmFkM2E5ZGFlOTlmMzhiZDg0ZmE5
NjkwOTc1ODlmMDEuLjNlMzc1ODRlYjVkMjUzODcyZGI4YjZhZDY3MzIyNGUwNTdlMmE1ZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9D
b2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q29jb2EubW0KQEAgLTUxLDYgKzUxLDcgQEAgQGludGVyZmFjZSBOU1VSTENvbm5lY3Rpb24gKCkK
ICsgKENGUnVuTG9vcFJlZilyZXNvdXJjZUxvYWRlclJ1bkxvb3A7CiBAZW5kCiAKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0yNTksNiArMjYwLDIwIEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpk
aWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiAgICAgcmVtb3ZlQ3Vz
dG9tUHJvdG9jb2wocHJvdG9jb2wuZ2V0KCkpOwogfQogCit2b2lkIEN1c3RvbVByb3RvY29sTWFu
YWdlcjo6d2FzUmVkaXJlY3RlZFRvUmVxdWVzdCh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UpCit7CisgICAgUmV0YWluUHRyPFdLQ3VzdG9tUHJvdG9jb2w+IHByb3Rv
Y29sID0gcHJvdG9jb2xGb3JJRChjdXN0b21Qcm90b2NvbElEKTsKKyAgICBpZiAoIXByb3RvY29s
KQorICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1JlcXVl
c3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICBSZXRh
aW5QdHI8TlNVUkxSZXNwb25zZT4gbnNSZWRpcmVjdFJlc3BvbnNlID0gcmVkaXJlY3RSZXNwb25z
ZS5uc1VSTFJlc3BvbnNlKCk7CisKKyAgICBkaXNwYXRjaE9uUmVzb3VyY2VMb2FkZXJSdW5Mb29w
KFtwcm90b2NvbCwgbnNSZXF1ZXN0LCBuc1JlZGlyZWN0UmVzcG9uc2VdKCkgeworICAgICAgICBb
W3Byb3RvY29sIGNsaWVudF0gVVJMUHJvdG9jb2w6cHJvdG9jb2wuZ2V0KCkgd2FzUmVkaXJlY3Rl
ZFRvUmVxdWVzdDpuc1JlcXVlc3QuZ2V0KCkgcmVkaXJlY3RSZXNwb25zZTpuc1JlZGlyZWN0UmVz
cG9uc2UuZ2V0KCldOworICAgIH0pOworfQorCiBSZXRhaW5QdHI8V0tDdXN0b21Qcm90b2NvbD4g
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpwcm90b2NvbEZvcklEKHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fY3VzdG9tUHJvdG9jb2xNYXBNdXRl
eCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKaW5kZXggMTAxODA0
MzM5YTUxNGFiODM2ZjM1YmZiZDgyYWFlMTg5Njk0ZTYzMi4uMjc2MWVjYzc3YTBiZDExMDg0MWYx
YTdlMzUyYzkxNzIxODQ1ZDkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXIuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApAQCAt
OTQsNiArOTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIHVpbnQzMl90IGNhY2hlU3RvcmFnZVBvbGljeSk7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOworICAgIHZvaWQg
d2FzUmVkaXJlY3RlZFRvUmVxdWVzdCh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKTsKIAogICAgIENoaWxkUHJvY2VzcyogbV9jaGlsZFByb2Nlc3M7
CiAgICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV9tZXNzYWdlUXVldWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA0NWQwODFh
MDNmZDA2OTEyZDc1MzRjN2VhZmVjYjI0ZWQyZWU1MWNlLi4wZjU1ZWNlYjE2OWIyOWEwM2UzMGE1
MjNiYzljNDA0MTE4NGExMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Q
cm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI1LDYgKzI1LDcgQEAgbWVzc2FnZXMgLT4g
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyIHsKICAgICBEaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElELCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBEaWRSZWNlaXZlUmVzcG9u
c2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSwgdWludDMyX3QgY2FjaGVTdG9yYWdlUG9saWN5KQogICAgIERpZEZpbmlzaExvYWRp
bmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKKyAgICBXYXNSZWRpcmVjdGVkVG9SZXF1ZXN0
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UpOwogCiAgICAg
UmVnaXN0ZXJTY2hlbWUoU3RyaW5nIG5hbWUpCiAgICAgVW5yZWdpc3RlclNjaGVtZShTdHJpbmcg
bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3Rv
bVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5TWFjLm1tCmluZGV4IDRjMDExZmFhMzc4YzkxYWVhZTBkNjA1MWViOWM5
YzQwNDJhN2EwYmMuLmZiZWYzOWIwOThlMjI5ZWY1MmUwY2IyMDI0Njc1ZTA1MGI0NjJkM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eU1hYy5tbQpAQCAtMTEwLDYgKzExMCwxMCBAQCAtICh2b2lkKWNvbm5lY3Rpb246
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRh
dGEKIAogLSAoTlNVUkxSZXF1ZXN0ICopY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29u
bmVjdGlvbiB3aWxsU2VuZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RS
ZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKIHsKKyAgICBpZiAocmVk
aXJlY3RSZXNwb25zZSkgeworICAgICAgICBfY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpXYXNSZWRpcmVjdGVkVG9SZXF1ZXN0KF9jdXN0b21Qcm90b2Nv
bElELCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSwgMCk7CisgICAgICAgIHJldHVybiBuaWw7
CisgICAgfQogICAgIHJldHVybiByZXF1ZXN0OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDQxYWEzMmJkNTYzNTg1OTg5ZTBiNjE3Yzdk
YWFlOTBhZDc4MTdlMS4uOTI2NDRjMzNjOWE0YzZmYzU2YThlYmM5YTZlOWFkZDI1MmIwZTRiNyAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI3IEBACisyMDE1LTA4LTExICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIEFkZCByZWRpcmVjdCBzdXBwb3J0IHRvIEN1c3RvbVByb3RvY29sTWFu
YWdlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3
ODcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlZCBXZWJLaXQyQ3VzdG9tUHJvdG9jb2xzVGVzdC5NYWluUmVzb3VyY2UgdG8gZ2VuZXJhdGUg
YSByZWRpcmVjdCByZXNwb25zZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvQ3Vz
dG9tUHJvdG9jb2xzU3luY1hIUlRlc3QubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KTogVW5yZWdlc2l0ZXJlZCBUZXN0UHJvdG9jb2wuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL2N1c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sOiBDaGFuZ2VkIHNjaGVt
ZSB0byBodHRwLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvQ3Vz
dG9tUHJvdG9jb2xzVGVzdC5tbToKKyAgICAgICAgKC1bQ3VzdG9tUHJvdG9jb2xzTG9hZERlbGVn
YXRlIGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZDpdKTog
RXhwZWN0ZWQgYSBjZXJ0YWluIHByb3Zpc2lvbmFsIFVSTC4KKyAgICAgICAgKC1bQ3VzdG9tUHJv
dG9jb2xzTG9hZERlbGVnYXRlIGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQ6XSk6IERpdHRvLgorICAgICAgICAoLVtDdXN0
b21Qcm90b2NvbHNMb2FkRGVsZWdhdGUgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRpZENvbW1p
dExvYWQ6XSk6IEV4cGVjdGVkIGEgY2VydGFpbiBjb21taXR0ZWQgVVJMLgorICAgICAgICAoLVtD
dXN0b21Qcm90b2NvbHNMb2FkRGVsZWdhdGUgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRpZEZp
bmlzaExvYWQ6XSk6IEV4cGVjdGVkIGlzTG9hZGluZyB0byBiZSBmYWxzZS4KKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOiBVc2VkIHRoZSBuZXcgbG9hZCBkZWxlZ2F0ZSBhbmQgdW5yZWdp
c3RlcmVkIFRlc3RQcm90b2NvbC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJPYmpDL1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6IFVucmVnaXN0ZXJlZCBUZXN0UHJvdG9jb2wuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9tYWMvVGVzdFByb3RvY29sLm1tOiBDaGFuZ2VkIHNjaGVtZSB0byBodHRw
LgorICAgICAgICAoK1tUZXN0UHJvdG9jb2wgY2FuSW5pdFdpdGhSZXF1ZXN0Ol0pOiBDaGFuZ2Vk
IHRvIHVzZSBwcm9wZXJ0eSBzeW50YXguCisgICAgICAgICgtW1Rlc3RQcm90b2NvbCBzdGFydExv
YWRpbmddKTogVGF1Z2h0IHRvIGhhbmRsZSByZWRpcmVjdCByZXNwb25zZXMuCisKIDIwMTUtMDgt
MTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAg
ICBDb21waWxlIHdhcm5pbmcgKC1Xc2lnbi1jb21wYXJlKSBvbiAzMi1iaXRzIGF0IFdlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvQ3VzdG9tUHJvdG9jb2xzU3luY1hIUlRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL0N1c3RvbVByb3RvY29sc1N5bmNYSFJUZXN0Lm1tCmluZGV4IDNmNDYxZDk0YThiYTI1
MmMwMGJkNmNjNDlkZmUwMTNmOTc3MGE1ZTcuLjhjNmZlZTQ1NjcwMjE4ZTZiYTZmYTVmNjJkNGE4
MjEwYWUzZTZjYWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvQ3VzdG9t
UHJvdG9jb2xzU3luY1hIUlRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9D
dXN0b21Qcm90b2NvbHNTeW5jWEhSVGVzdC5tbQpAQCAtNjksNiArNjksOCBAQCBURVNUKFdlYktp
dDJDdXN0b21Qcm90b2NvbHNUZXN0LCBTeW5jWEhSKQogICAgIFdLUGFnZUxvYWRVUkwod2tWaWV3
LmdldCgpLnBhZ2VSZWYsIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJjdXN0b20tcHJvdG9j
b2wtc3luYy14aHIiLCAiaHRtbCIpKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
dGVzdEZpbmlzaGVkKTsKKyAgICBbTlNVUkxQcm90b2NvbCB1bnJlZ2lzdGVyQ2xhc3M6W1Rlc3RQ
cm90b2NvbCBjbGFzc11dOworICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgdW5yZWdp
c3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOltUZXN0UHJvdG9jb2wgc2NoZW1lXV07CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9jdXN0b20tcHJvdG9jb2wtc3luYy14aHIuaHRtbCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9jdXN0b20tcHJvdG9jb2wtc3luYy14aHIuaHRt
bAppbmRleCA4YTk4ZjMzZTk1NmM1ODQ0NjBjNjRjYzNlYzY1YjcyYThmY2YyNzBjLi42Y2YwMGI2
Y2FjNDdjZWJkN2U2MWNkODFlMGU3MTM3MDk4ZjAyNWEwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2N1c3RvbS1wcm90b2NvbC1zeW5j
LXhoci5odG1sCkBAIC0xLDYgKzEsNiBAQAogPHNjcmlwdD4KICAgICB2YXIgcmVxdWVzdCA9IG5l
dyBYTUxIdHRwUmVxdWVzdCgpOwotICAgIHJlcXVlc3Qub3BlbignR0VUJywgJ3Rlc3Q6Ly90ZXN0
JywgZmFsc2UpOworICAgIHJlcXVlc3Qub3BlbignR0VUJywgJ2h0dHA6Ly90ZXN0JywgZmFsc2Up
OwogICAgIHJlcXVlc3Quc2VuZChudWxsKTsKICAgICB3aW5kb3cuX3Rlc3RSZXN1bHQgPSByZXF1
ZXN0LnJlc3BvbnNlVGV4dDsKIDwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvQ3VzdG9t
UHJvdG9jb2xzVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMv
Q3VzdG9tUHJvdG9jb2xzVGVzdC5tbQppbmRleCAwYTYyOWMwYWU0NmNmMTJmMGIzNGI5MmFjZjVm
YjUwMzc1Y2Y1ZDkzLi40NjMyYjg2YWIyZGU5NTM5NjhkMjY3NGE2OGU0ZDRlZGRjMDZhMjc3IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVBy
b3RvY29sc1Rlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2Jq
Qy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tCkBAIC0zOSw2ICszOSwzNCBAQAogCiBzdGF0aWMgYm9v
bCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKIAorQGludGVyZmFjZSBDdXN0b21Qcm90b2NvbHNMb2Fk
RGVsZWdhdGUgOiBOU09iamVjdCA8V0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGU+CitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBDdXN0b21Qcm90b2NvbHNMb2FkRGVsZWdhdGUKKworLSAodm9p
ZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkU3RhcnRQcm92aXNpb25hbExvYWQ6KFdLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciAqKXNlbmRlcgoreworICAgIEVYUEVDVF9UUlVFKFtzZW5k
ZXIucHJvdmlzaW9uYWxVUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cDov
L3JlZGlyZWN0Lz90ZXN0Il0pOworfQorCistICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXJEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQ6KFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqKXNlbmRlcgoreworICAgIEVYUEVDVF9UUlVFKFtzZW5kZXIucHJv
dmlzaW9uYWxVUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cDovL3Rlc3Qv
Il0pOworfQorCistICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRDb21taXRMb2Fk
OihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilzZW5kZXIKK3sKKyAgICBFWFBFQ1RfVFJV
RShbc2VuZGVyLmNvbW1pdHRlZFVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJo
dHRwOi8vdGVzdC8iXSk7Cit9CisKKy0gKHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRp
ZEZpbmlzaExvYWQ6KFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKXNlbmRlcgoreworICAg
IEVYUEVDVF9GQUxTRShzZW5kZXIuaXNMb2FkaW5nKTsKKyAgICB0ZXN0RmluaXNoZWQgPSB0cnVl
OworfQorCitAZW5kCisKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXQy
Q3VzdG9tUHJvdG9jb2xzVGVzdCwgTWFpblJlc291cmNlKQpAQCAtNDksMTIgKzc3LDEzIEBAIFRF
U1QoV2ViS2l0MkN1c3RvbVByb3RvY29sc1Rlc3QsIE1haW5SZXNvdXJjZSkKICAgICBSZXRhaW5Q
dHI8V0tQcm9jZXNzR3JvdXA+IHByb2Nlc3NHcm91cCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NHcm91
cCBhbGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxXS0Jyb3dzaW5nQ29udGV4dEdyb3VwPiBi
cm93c2luZ0NvbnRleHRHcm91cCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFs
bG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJUZXN0SWRlbnRpZmllciJdKTsKICAgICBSZXRhaW5Q
dHI8V0tWaWV3PiB3a1ZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0
KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKLSAg
ICB3a1ZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBb
W1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1
bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Ci0gICAgICAg
IHRlc3RGaW5pc2hlZCA9IHRydWU7Ci0gICAgfV07Ci0gICAgW3drVmlldy5nZXQoKS5icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDov
L3Rlc3QiLCBbVGVzdFByb3RvY29sIHNjaGVtZV1dXV1dOworICAgIFJldGFpblB0cjxDdXN0b21Q
cm90b2NvbHNMb2FkRGVsZWdhdGU+IGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDdXN0b21Qcm90
b2NvbHNMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2tWaWV3IGJyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKKyAgICBb
W3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUA6Ly9yZWRpcmVjdD90ZXN0IiwgW1Rlc3RQcm90b2NvbCBzY2hlbWVdXV1d
XTsKIAogICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICBbTlNVUkxQcm90b2NvbCB1
bnJlZ2lzdGVyQ2xhc3M6W1Rlc3RQcm90b2NvbCBjbGFzc11dOworICAgIFtXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOltUZXN0UHJv
dG9jb2wgc2NoZW1lXV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvUHJldmVudEltYWdl
TG9hZFdpdGhBdXRvUmVzaXppbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJPYmpDL1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tCmluZGV4IDgwOTc1NTBl
NGU1Mzk5ZmY0OWFjZTUwY2E1Njg3NDJjMDdmOWY5NmUuLjBlZTQ3NDdjZTIzN2E2YmY2Yjk3OTkw
YWZhYjM0OGVlYjNhNzNmMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mk9iakMvUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmcubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1
dG9SZXNpemluZy5tbQpAQCAtNTcsNiArNTcsOCBAQCBURVNUKFdlYktpdDIsIFByZXZlbnRJbWFn
ZUxvYWRXaXRoQXV0b1Jlc2l6aW5nVGVzdCkKICAgICBbd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5i
cm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PGJvZHkgc3R5
bGU9J2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dn
b0FBQUFOU1VoRVVnQUFBQW9BQUFBS0NBWUFBQUNOTXMrOUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFC
QlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBRlpKUkVGVWVGNTl6NEVKQURFSVExRjM2azd1
NUU3WktYZVVRUEFDSjN3SzdVTm9rVnhWazlrSG5RSDdiWTloYkR5RGhOWGdqcFJMcUZsbzRNMkdn
ZnlKSGhqcThWNGFnZnJnUFFYM0p0SlFHYm9mbUNIZ0EvbkFLa3MrSkFqRkFBQUFBRWxGVGtTdVFt
Q0MpOyc+PC9ib2R5PjwvaHRtbD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91
dDpibGFuayJdXTsKIAogICAgIFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKKyAgICBbTlNVUkxQ
cm90b2NvbCB1bnJlZ2lzdGVyQ2xhc3M6W1Rlc3RQcm90b2NvbCBjbGFzc11dOworICAgIFtXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29s
OltUZXN0UHJvdG9jb2wgc2NoZW1lXV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RQcm90b2NvbC5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RQcm90b2NvbC5tbQppbmRleCAzNjdlYTA0ODk4
Zjg2Y2Y4MjE5YjhiZTM1MTQ5YWZjZmFhOWQxODk4Li4yNDNkZTc5ZjNkNTkwZDNlN2JhMGE0ZTNh
OGQyOWIyZTQwNzYxOGZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0
UHJvdG9jb2wubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdFByb3RvY29sLm1t
CkBAIC0yNiwxMyArMjYsMTcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGVzdFBy
b3RvY29sLmgiCiAKLXN0YXRpYyBOU1N0cmluZyAqdGVzdFNjaGVtZSA9IEAidGVzdCI7CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKy8vIEV2ZW4gdGhvdWdoIE5TVVJMUHJvdG9jb2wgaXMg
Y2FwYWJsZSBvZiBnZW5lcmF0aW5nIHJlZGlyZWN0IHJlc3BvbnNlcyBmb3IgYW55IHByb3RvY29s
LCBXZWJDb3JlIGFzc2VydHMgaWYgYSByZWRpcmVjdCBpcyBub3QgaW4gdGhlIGh0dHAgZmFtaWx5
LgorLy8gU2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvMTQ3ODcwIGZvciBkZXRhaWxzLgorc3RhdGlj
IE5TU3RyaW5nICp0ZXN0U2NoZW1lID0gQCJodHRwIjsKIAogQGltcGxlbWVudGF0aW9uIFRlc3RQ
cm90b2NvbAogCiArIChCT09MKWNhbkluaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdAogewotICAgIHJldHVybiBbW1tyZXF1ZXN0IFVSTF0gc2NoZW1lXSBjYXNlSW5zZW5zaXRp
dmVDb21wYXJlOnRlc3RTY2hlbWVdID09IE5TT3JkZXJlZFNhbWU7CisgICAgcmV0dXJuIFtyZXF1
ZXN0LlVSTC5zY2hlbWUgY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTp0ZXN0U2NoZW1lXSA9PSBOU09y
ZGVyZWRTYW1lOwogfQogCiArIChOU1VSTFJlcXVlc3QgKiljYW5vbmljYWxSZXF1ZXN0Rm9yUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdApAQCAtNTIsMTQgKzU2LDIxIEBAICsgKE5TU3Ry
aW5nICopc2NoZW1lCiAKIC0gKHZvaWQpc3RhcnRMb2FkaW5nCiB7Ci0gICAgRVhQRUNUX1RSVUUo
W1tbW3NlbGYgcmVxdWVzdF0gVVJMXSBzY2hlbWVdIGlzRXF1YWxUb1N0cmluZzp0ZXN0U2NoZW1l
XSk7Ci0gICAgCisgICAgTlNVUkwgKnJlcXVlc3RVUkwgPSBzZWxmLnJlcXVlc3QuVVJMOworICAg
IEVYUEVDVF9UUlVFKFtyZXF1ZXN0VVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6dGVzdFNjaGVt
ZV0pOworCiAgICAgTlNEYXRhICpkYXRhID0gW0AiUEFTUyIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNB
U0NJSVN0cmluZ0VuY29kaW5nXTsKLSAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFtbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6W1tzZWxmIHJlcXVlc3RdIFVSTF0gTUlNRVR5
cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpbZGF0YSBsZW5ndGhdIHRleHRF
bmNvZGluZ05hbWU6bmlsXTsKLSAgICBbW3NlbGYgY2xpZW50XSBVUkxQcm90b2NvbDpzZWxmIGRp
ZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZSBjYWNoZVN0b3JhZ2VQb2xpY3k6TlNVUkxDYWNoZVN0
b3JhZ2VOb3RBbGxvd2VkXTsKLSAgICBbW3NlbGYgY2xpZW50XSBVUkxQcm90b2NvbDpzZWxmIGRp
ZExvYWREYXRhOmRhdGFdOwotICAgIFtbc2VsZiBjbGllbnRdIFVSTFByb3RvY29sRGlkRmluaXNo
TG9hZGluZzpzZWxmXTsKLSAgICBbcmVzcG9uc2UgcmVsZWFzZV07CisgICAgUmV0YWluUHRyPE5T
VVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGlu
aXRXaXRoVVJMOnJlcXVlc3RVUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVu
dExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworCisgICAgaWYgKFty
ZXF1ZXN0VVJMLmhvc3QgaXNFcXVhbFRvU3RyaW5nOkAicmVkaXJlY3QiXSkgeworICAgICAgICBO
U1VSTCAqcmVkaXJlY3RVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIiVAOi8vJUAiLCB0ZXN0U2NoZW1lLCByZXF1ZXN0VVJMLnF1ZXJ5XV07Cisg
ICAgICAgIFtzZWxmLmNsaWVudCBVUkxQcm90b2NvbDpzZWxmIHdhc1JlZGlyZWN0ZWRUb1JlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpyZWRpcmVjdFVSTF0gcmVkaXJlY3RSZXNw
b25zZTpyZXNwb25zZS5nZXQoKV07CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbc2Vs
Zi5jbGllbnQgVVJMUHJvdG9jb2w6c2VsZiBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0
KCkgY2FjaGVTdG9yYWdlUG9saWN5Ok5TVVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZF07CisgICAg
W3NlbGYuY2xpZW50IFVSTFByb3RvY29sOnNlbGYgZGlkTG9hZERhdGE6ZGF0YV07CisgICAgW3Nl
bGYuY2xpZW50IFVSTFByb3RvY29sRGlkRmluaXNoTG9hZGluZzpzZWxmXTsKIH0KIAogLSAodm9p
ZClzdG9wTG9hZGluZwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258750</attachid>
            <date>2015-08-11 13:52:06 -0700</date>
            <delta_ts>2015-08-11 13:55:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147871-20150811135151.patch</filename>
            <type>text/plain</type>
            <size>16713</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4Mjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTE1YjYxMTBlOTQ5ZGRi
MDU2NTMxOTU2MGJkZjM4YWE2ZDE4ZGYzYy4uZjAwOGU0MmRhZDM1YzI4ZmI0MDRmOGYzZGI5NmFh
MjQ1YzMwMjViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACisyMDE1LTA4LTExICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCByZWRpcmVj
dCBzdXBwb3J0IHRvIEN1c3RvbVByb3RvY29sTWFuYWdlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3ODcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBOU1VSTFByb3RvY29scyBoYXZlIHRo
ZSBhYmlsaXR5IHRvIGdlbmVyYXRlIHJlZGlyZWN0IHJlc3BvbnNlcy4gVGhpcyBjaGFuZ2UgdGVh
Y2hlcyBDdXN0b21Qcm90b2NvbE1hbmFnZXIgaG93IHRvIGhhbmRsZSB0aGVtLgorCisgICAgICAg
ICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFu
YWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Ondh
c1JlZGlyZWN0ZWRUb1JlcXVlc3QpOiBDYWxsZWQgLVVSTFByb3RvY29sOndhc1JlZGlyZWN0ZWRU
b1JlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTogb24gdGhlIE5TVVJMUHJvdG9jb2xDbGllbnQuCisg
ICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlci5oOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Q
cm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW46IERlZmluZWQgV2FzUmVkaXJlY3RlZFRvUmVxdWVz
dC4KKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Q
cm90b2NvbE1hbmFnZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjp3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KTogRGVmaW5lZCBlbXB0eSBmdW5jdGlvbi4K
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5TWFjLm1tOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sTG9h
ZGVyIGNvbm5lY3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6XSk6IElmIGEg
cmVkaXJlY3QgcmVzcG9uc2UgaXMgcmVjZWl2ZWQsIHNlbmQgV2FzUmVkaXJlY3RlZFRvUmVxdWVz
dCBhbmQgcmV0dXJuIG5pbCB0byBpZ25vcmUgdGhlIHJlZGlyZWN0LgorCiAyMDE1LTA4LTExICBB
bmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgpIGNhbGxzIGFuIHN0ZDo6ZnVu
Y3Rpb24gYWZ0ZXIgaXQncyBiZWVuIG1vdmVkIGZyb20KICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzg3MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0KaW5kZXggZGQ2M2ExMTBm
YWQzYTlkYWU5OWYzOGJkODRmYTk2OTA5NzU4OWYwMS4uM2UzNzU4NGViNWQyNTM4NzJkYjhiNmFk
NjczMjI0ZTA1N2UyYTVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9D
dXN0b21Qcm90b2NvbE1hbmFnZXJDb2NvYS5tbQpAQCAtNTEsNiArNTEsNyBAQCBAaW50ZXJmYWNl
IE5TVVJMQ29ubmVjdGlvbiAoKQogKyAoQ0ZSdW5Mb29wUmVmKXJlc291cmNlTG9hZGVyUnVuTG9v
cDsKIEBlbmQKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTI1OSw2ICsyNjAsMjAgQEAgdm9pZCBDdXN0
b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCkKICAgICByZW1vdmVDdXN0b21Qcm90b2NvbChwcm90b2NvbC5nZXQoKSk7CiB9CiAKK3Zv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjp3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3sKKyAgICBSZXRhaW5QdHI8V0tD
dXN0b21Qcm90b2NvbD4gcHJvdG9jb2wgPSBwcm90b2NvbEZvcklEKGN1c3RvbVByb3RvY29sSUQp
OworICAgIGlmICghcHJvdG9jb2wpCisgICAgICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxO
U1VSTFJlcXVlc3Q+IG5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRl
SFRUUEJvZHkpOworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiBuc1JlZGlyZWN0UmVzcG9u
c2UgPSByZWRpcmVjdFJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKTsKKworICAgIGRpc3BhdGNoT25S
ZXNvdXJjZUxvYWRlclJ1bkxvb3AoW3Byb3RvY29sLCBuc1JlcXVlc3QsIG5zUmVkaXJlY3RSZXNw
b25zZV0oKSB7CisgICAgICAgIFtbcHJvdG9jb2wgY2xpZW50XSBVUkxQcm90b2NvbDpwcm90b2Nv
bC5nZXQoKSB3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0Om5zUmVxdWVzdC5nZXQoKSByZWRpcmVjdFJl
c3BvbnNlOm5zUmVkaXJlY3RSZXNwb25zZS5nZXQoKV07CisgICAgfSk7Cit9CisKIFJldGFpblB0
cjxXS0N1c3RvbVByb3RvY29sPiBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OnByb3RvY29sRm9ySUQo
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9j
dXN0b21Qcm90b2NvbE1hcE11dGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXIuaAppbmRleCAxMDE4MDQzMzlhNTE0YWI4MzZmMzViZmJkODJhYWUxODk2OTRlNjMyLi4y
NzYxZWNjNzdhMGJkMTEwODQxZjFhN2UzNTJjOTE3MjE4NDVkOTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIERhdGFS
ZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7Citj
bGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCkBAIC05NCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRM
b2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgdWludDMyX3QgY2FjaGVTdG9y
YWdlUG9saWN5KTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCk7CisgICAgdm9pZCB3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwogCiAgICAgQ2hpbGRQcm9j
ZXNzKiBtX2NoaWxkUHJvY2VzczsKICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX21lc3NhZ2VRdWV1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3Nh
Z2VzLmluCmluZGV4IDQ1ZDA4MWEwM2ZkMDY5MTJkNzUzNGM3ZWFmZWNiMjRlZDJlZTUxY2UuLjBm
NTVlY2ViMTY5YjI5YTAzZTMwYTUyM2JjOWM0MDQxMTg0YTEzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjUsNiAr
MjUsNyBAQCBtZXNzYWdlcyAtPiBDdXN0b21Qcm90b2NvbE1hbmFnZXIgewogICAgIERpZExvYWRE
YXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQog
ICAgIERpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCB1aW50MzJfdCBjYWNoZVN0b3JhZ2VQb2xpY3kp
CiAgICAgRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQorICAgIFdh
c1JlZGlyZWN0ZWRUb1JlcXVlc3QodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJl
Y3RSZXNwb25zZSk7CiAKICAgICBSZWdpc3RlclNjaGVtZShTdHJpbmcgbmFtZSkKICAgICBVbnJl
Z2lzdGVyU2NoZW1lKFN0cmluZyBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291
cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAppbmRleCA1MjQ2OGU2MjFkM2M3ZWFkMGNi
ZDYwZDg1YWQwM2E1MGMwYjQwN2I3Li40MjAwODc5NDdhMWRiNmFjYTA2OTUzMTJlMWFiZWU2ZWQx
YzQyYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJTb3VwLmNwcApAQCAtMTA2LDQgKzEwNiw4IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiAgICAg
bV9pbXBsLT5kaWRGaW5pc2hMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQpOwogfQogCit2b2lkIEN1
c3RvbVByb3RvY29sTWFuYWdlcjo6d2FzUmVkaXJlY3RlZFRvUmVxdWVzdCh1aW50NjRfdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KaW5k
ZXggNGMwMTFmYWEzNzhjOTFhZWFlMGQ2MDUxZWI5YzljNDA0MmE3YTBiYy4uZmJlZjM5YjA5OGUy
MjllZjUyZTBjYjIwMjQ2NzVlMDUwYjQ2MmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCkBAIC0xMTAs
NiArMTEwLDEwIEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVj
dGlvbiBkaWRSZWNlaXZlRGF0YTooTlNEYXRhICopZGF0YQogCiAtIChOU1VSTFJlcXVlc3QgKilj
b25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIHdpbGxTZW5kUmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICop
cmVkaXJlY3RSZXNwb25zZQogeworICAgIGlmIChyZWRpcmVjdFJlc3BvbnNlKSB7CisgICAgICAg
IF9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Oldhc1Jl
ZGlyZWN0ZWRUb1JlcXVlc3QoX2N1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpLCAwKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CiAgICAgcmV0dXJuIHJlcXVl
c3Q7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBmMThlMTA4NmQ4YTQ1NjFiZjNjNWE2ZWRmNjA4YjBmYjFkZmUyNTgxLi4xM2FlYzBmYjRk
Y2Q5YTMzMDBhMzA5NjZhMTU1MjJlMDdiYmFjNTMyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTUtMDgtMTEgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIHJlZGly
ZWN0IHN1cHBvcnQgdG8gQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4NzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIFdlYktpdDJDdXN0b21Qcm90b2Nv
bHNUZXN0Lk1haW5SZXNvdXJjZSB0byBnZW5lcmF0ZSBhIHJlZGlyZWN0IHJlc3BvbnNlLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9DdXN0b21Qcm90b2NvbHNTeW5jWEhSVGVzdC5t
bToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBVbnJlZ2VzaXRlcmVkIFRlc3RQcm90
b2NvbC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY3VzdG9tLXByb3Rv
Y29sLXN5bmMteGhyLmh0bWw6IENoYW5nZWQgc2NoZW1lIHRvIGh0dHAuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tOgorICAg
ICAgICAoLVtDdXN0b21Qcm90b2NvbHNMb2FkRGVsZWdhdGUgYnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlckRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkOl0pOiBFeHBlY3RlZCBhIGNlcnRhaW4gcHJvdmlz
aW9uYWwgVVJMLgorICAgICAgICAoLVtDdXN0b21Qcm90b2NvbHNMb2FkRGVsZWdhdGUgYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlckRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZDpdKTogRGl0dG8uCisgICAgICAgICgtW0N1c3RvbVByb3RvY29sc0xvYWREZWxlZ2F0ZSBi
cm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkQ29tbWl0TG9hZDpdKTogRXhwZWN0ZWQgYSBjZXJ0
YWluIGNvbW1pdHRlZCBVUkwuCisgICAgICAgICgtW0N1c3RvbVByb3RvY29sc0xvYWREZWxlZ2F0
ZSBicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkRmluaXNoTG9hZDpdKTogRXhwZWN0ZWQgaXNM
b2FkaW5nIHRvIGJlIGZhbHNlLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFVzZWQg
dGhlIG5ldyBsb2FkIGRlbGVnYXRlIGFuZCB1bnJlZ2lzdGVyZWQgVGVzdFByb3RvY29sLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvUHJldmVudEltYWdlTG9hZFdp
dGhBdXRvUmVzaXppbmcubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVW5yZWdp
c3RlcmVkIFRlc3RQcm90b2NvbC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9UZXN0UHJv
dG9jb2wubW06IENoYW5nZWQgc2NoZW1lIHRvIGh0dHAuCisgICAgICAgICgrW1Rlc3RQcm90b2Nv
bCBjYW5Jbml0V2l0aFJlcXVlc3Q6XSk6IENoYW5nZWQgdG8gdXNlIHByb3BlcnR5IHN5bnRheC4K
KyAgICAgICAgKC1bVGVzdFByb3RvY29sIHN0YXJ0TG9hZGluZ10pOiBUYXVnaHQgdG8gaGFuZGxl
IHJlZGlyZWN0IHJlc3BvbnNlcy4KKwogMjAxNS0wOC0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFub3RoZXIgc3BlY3VsYXRpdmUgYnVp
bGQgZml4IGFmdGVyIHIxODgyODAuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL0N1c3RvbVByb3RvY29sc1N5bmNYSFJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9DdXN0b21Qcm90b2NvbHNTeW5jWEhSVGVzdC5tbQppbmRleCAzZjQ2MWQ5NGE4YmEyNTJj
MDBiZDZjYzQ5ZGZlMDEzZjk3NzBhNWU3Li44YzZmZWU0NTY3MDIxOGU2YmE2ZmE1ZjYyZDRhODIx
MGFlM2U2Y2FkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0N1c3RvbVBy
b3RvY29sc1N5bmNYSFJUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvQ3Vz
dG9tUHJvdG9jb2xzU3luY1hIUlRlc3QubW0KQEAgLTY5LDYgKzY5LDggQEAgVEVTVChXZWJLaXQy
Q3VzdG9tUHJvdG9jb2xzVGVzdCwgU3luY1hIUikKICAgICBXS1BhZ2VMb2FkVVJMKHdrVmlldy5n
ZXQoKS5wYWdlUmVmLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgiY3VzdG9tLXByb3RvY29s
LXN5bmMteGhyIiwgImh0bWwiKSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRl
c3RGaW5pc2hlZCk7CisgICAgW05TVVJMUHJvdG9jb2wgdW5yZWdpc3RlckNsYXNzOltUZXN0UHJv
dG9jb2wgY2xhc3NdXTsKKyAgICBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHVucmVnaXN0
ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpbVGVzdFByb3RvY29sIHNjaGVtZV1dOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwK
aW5kZXggOGE5OGYzM2U5NTZjNTg0NDYwYzY0Y2MzZWM2NWI3MmE4ZmNmMjcwYy4uNmNmMDBiNmNh
YzQ3Y2ViZDdlNjFjZDgxZTBlNzEzNzA5OGYwMjVhMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL2N1c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9jdXN0b20tcHJvdG9jb2wtc3luYy14
aHIuaHRtbApAQCAtMSw2ICsxLDYgQEAKIDxzY3JpcHQ+CiAgICAgdmFyIHJlcXVlc3QgPSBuZXcg
WE1MSHR0cFJlcXVlc3QoKTsKLSAgICByZXF1ZXN0Lm9wZW4oJ0dFVCcsICd0ZXN0Oi8vdGVzdCcs
IGZhbHNlKTsKKyAgICByZXF1ZXN0Lm9wZW4oJ0dFVCcsICdodHRwOi8vdGVzdCcsIGZhbHNlKTsK
ICAgICByZXF1ZXN0LnNlbmQobnVsbCk7CiAgICAgd2luZG93Ll90ZXN0UmVzdWx0ID0gcmVxdWVz
dC5yZXNwb25zZVRleHQ7CiA8L3NjcmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVBy
b3RvY29sc1Rlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1
c3RvbVByb3RvY29sc1Rlc3QubW0KaW5kZXggMGE2MjljMGFlNDZjZjEyZjBiMzRiOTJhY2Y1ZmI1
MDM3NWNmNWQ5My4uNDYzMmI4NmFiMmRlOTUzOTY4ZDI2NzRhNjhlNGQ0ZWRkYzA2YTI3NyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90
b2NvbHNUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMv
Q3VzdG9tUHJvdG9jb2xzVGVzdC5tbQpAQCAtMzksNiArMzksMzQgQEAKIAogc3RhdGljIGJvb2wg
dGVzdEZpbmlzaGVkID0gZmFsc2U7CiAKK0BpbnRlcmZhY2UgQ3VzdG9tUHJvdG9jb2xzTG9hZERl
bGVnYXRlIDogTlNPYmplY3QgPFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPgorQGVuZAor
CitAaW1wbGVtZW50YXRpb24gQ3VzdG9tUHJvdG9jb2xzTG9hZERlbGVnYXRlCisKKy0gKHZvaWQp
YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkOihXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgKilzZW5kZXIKK3sKKyAgICBFWFBFQ1RfVFJVRShbc2VuZGVy
LnByb3Zpc2lvbmFsVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAImh0dHA6Ly9y
ZWRpcmVjdC8/dGVzdCJdKTsKK30KKworLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVy
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkOihXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgKilzZW5kZXIKK3sKKyAgICBFWFBFQ1RfVFJVRShbc2VuZGVyLnByb3Zp
c2lvbmFsVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAImh0dHA6Ly90ZXN0LyJd
KTsKK30KKworLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkQ29tbWl0TG9hZDoo
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyCit7CisgICAgRVhQRUNUX1RSVUUo
W3NlbmRlci5jb21taXR0ZWRVUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiaHR0
cDovL3Rlc3QvIl0pOworfQorCistICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRG
aW5pc2hMb2FkOihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilzZW5kZXIKK3sKKyAgICBF
WFBFQ1RfRkFMU0Uoc2VuZGVyLmlzTG9hZGluZyk7CisgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsK
K30KKworQGVuZAorCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0MkN1
c3RvbVByb3RvY29sc1Rlc3QsIE1haW5SZXNvdXJjZSkKQEAgLTQ5LDEyICs3NywxMyBAQCBURVNU
KFdlYktpdDJDdXN0b21Qcm90b2NvbHNUZXN0LCBNYWluUmVzb3VyY2UpCiAgICAgUmV0YWluUHRy
PFdLUHJvY2Vzc0dyb3VwPiBwcm9jZXNzR3JvdXAgPSBhZG9wdE5TKFtbV0tQcm9jZXNzR3JvdXAg
YWxsb2NdIGluaXRdKTsKICAgICBSZXRhaW5QdHI8V0tCcm93c2luZ0NvbnRleHRHcm91cD4gYnJv
d3NpbmdDb250ZXh0R3JvdXAgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRHcm91cCBhbGxv
Y10gaW5pdFdpdGhJZGVudGlmaWVyOkAiVGVzdElkZW50aWZpZXIiXSk7CiAgICAgUmV0YWluUHRy
PFdLVmlldz4gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgp
IGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7Ci0gICAg
d2tWaWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tU
ZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5P
bkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewotICAgICAgICB0
ZXN0RmluaXNoZWQgPSB0cnVlOwotICAgIH1dOwotICAgIFt3a1ZpZXcuZ2V0KCkuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA6Ly90
ZXN0IiwgW1Rlc3RQcm90b2NvbCBzY2hlbWVdXV1dXTsKKyAgICBSZXRhaW5QdHI8Q3VzdG9tUHJv
dG9jb2xzTG9hZERlbGVnYXRlPiBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ3VzdG9tUHJvdG9j
b2xzTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3drVmlldyBicm93c2luZ0NvbnRl
eHRDb250cm9sbGVyXS5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CisgICAgW1t3
a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIiVAOi8vcmVkaXJlY3Q/dGVzdCIsIFtUZXN0UHJvdG9jb2wgc2NoZW1lXV1dXV07
CiAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgW05TVVJMUHJvdG9jb2wgdW5y
ZWdpc3RlckNsYXNzOltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKKyAgICBbV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyIHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpbVGVzdFByb3Rv
Y29sIHNjaGVtZV1dOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1ByZXZlbnRJbWFnZUxv
YWRXaXRoQXV0b1Jlc2l6aW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
T2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbQppbmRleCA4MDk3NTUwZTRl
NTM5OWZmNDlhY2U1MGNhNTY4NzQyYzA3ZjlmOTZlLi4wZWU0NzQ3Y2UyMzdhNmJmNmI5Nzk5MGFm
YWIzNDhlZWIzYTczZjIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJPYmpDL1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvUHJldmVudEltYWdlTG9hZFdpdGhBdXRv
UmVzaXppbmcubW0KQEAgLTU3LDYgKzU3LDggQEAgVEVTVChXZWJLaXQyLCBQcmV2ZW50SW1hZ2VM
b2FkV2l0aEF1dG9SZXNpemluZ1Rlc3QpCiAgICAgW3dlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjxodG1sPjxib2R5IHN0eWxl
PSdiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29B
QUFBTlNVaEVVZ0FBQUFvQUFBQUtDQVlBQUFDTk1zKzlBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJa
RzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUZaSlJFRlVlRjU5ejRFSkFERUlRMUYzNms3dTVF
N1pLWGVVUVBBQ0ozd0s3VU5va1Z4Vms5a0huUUg3Ylk5aGJEeURoTlhnanBSTHFGbG80TTJHZ2Z5
SkhoanE4VjRhZ2ZyZ1BRWDNKdEpRR2JvZm1DSGdBL25BS2tzK0pBakZBQUFBQUVsRlRrU3VRbUND
KTsnPjwvYm9keT48L2h0bWw+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6
YmxhbmsiXV07CiAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgW05TVVJMUHJv
dG9jb2wgdW5yZWdpc3RlckNsYXNzOltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKKyAgICBbV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyIHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpb
VGVzdFByb3RvY29sIHNjaGVtZV1dOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0UHJvdG9jb2wubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0UHJvdG9jb2wubW0KaW5kZXggMzY3ZWEwNDg5OGY4
NmNmODIxOWI4YmUzNTE0OWFmY2ZhYTlkMTg5OC4uMjQzZGU3OWYzZDU5MGQzZTdiYTBhNGUzYThk
MjliMmU0MDc2MThmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdFBy
b3RvY29sLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RQcm90b2NvbC5tbQpA
QCAtMjYsMTMgKzI2LDE3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RQcm90
b2NvbC5oIgogCi1zdGF0aWMgTlNTdHJpbmcgKnRlc3RTY2hlbWUgPSBAInRlc3QiOworI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorCisvLyBFdmVuIHRob3VnaCBOU1VSTFByb3RvY29sIGlzIGNh
cGFibGUgb2YgZ2VuZXJhdGluZyByZWRpcmVjdCByZXNwb25zZXMgZm9yIGFueSBwcm90b2NvbCwg
V2ViQ29yZSBhc3NlcnRzIGlmIGEgcmVkaXJlY3QgaXMgbm90IGluIHRoZSBodHRwIGZhbWlseS4K
Ky8vIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzE0Nzg3MCBmb3IgZGV0YWlscy4KK3N0YXRpYyBO
U1N0cmluZyAqdGVzdFNjaGVtZSA9IEAiaHR0cCI7CiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJv
dG9jb2wKIAogKyAoQk9PTCljYW5Jbml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QKIHsKLSAgICByZXR1cm4gW1tbcmVxdWVzdCBVUkxdIHNjaGVtZV0gY2FzZUluc2Vuc2l0aXZl
Q29tcGFyZTp0ZXN0U2NoZW1lXSA9PSBOU09yZGVyZWRTYW1lOworICAgIHJldHVybiBbcmVxdWVz
dC5VUkwuc2NoZW1lIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6dGVzdFNjaGVtZV0gPT0gTlNPcmRl
cmVkU2FtZTsKIH0KIAogKyAoTlNVUkxSZXF1ZXN0ICopY2Fub25pY2FsUmVxdWVzdEZvclJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKQEAgLTUyLDE0ICs1NiwyMSBAQCArIChOU1N0cmlu
ZyAqKXNjaGVtZQogCiAtICh2b2lkKXN0YXJ0TG9hZGluZwogewotICAgIEVYUEVDVF9UUlVFKFtb
W1tzZWxmIHJlcXVlc3RdIFVSTF0gc2NoZW1lXSBpc0VxdWFsVG9TdHJpbmc6dGVzdFNjaGVtZV0p
OwotICAgIAorICAgIE5TVVJMICpyZXF1ZXN0VVJMID0gc2VsZi5yZXF1ZXN0LlVSTDsKKyAgICBF
WFBFQ1RfVFJVRShbcmVxdWVzdFVSTC5zY2hlbWUgaXNFcXVhbFRvU3RyaW5nOnRlc3RTY2hlbWVd
KTsKKwogICAgIE5TRGF0YSAqZGF0YSA9IFtAIlBBU1MiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVND
SUlTdHJpbmdFbmNvZGluZ107Ci0gICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbW05TVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOltbc2VsZiByZXF1ZXN0XSBVUkxdIE1JTUVUeXBl
OkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6W2RhdGEgbGVuZ3RoXSB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF07Ci0gICAgW1tzZWxmIGNsaWVudF0gVVJMUHJvdG9jb2w6c2VsZiBkaWRS
ZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UgY2FjaGVTdG9yYWdlUG9saWN5Ok5TVVJMQ2FjaGVTdG9y
YWdlTm90QWxsb3dlZF07Ci0gICAgW1tzZWxmIGNsaWVudF0gVVJMUHJvdG9jb2w6c2VsZiBkaWRM
b2FkRGF0YTpkYXRhXTsKLSAgICBbW3NlbGYgY2xpZW50XSBVUkxQcm90b2NvbERpZEZpbmlzaExv
YWRpbmc6c2VsZl07Ci0gICAgW3Jlc3BvbnNlIHJlbGVhc2VdOworICAgIFJldGFpblB0cjxOU1VS
TFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDpyZXF1ZXN0VVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRM
ZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKworICAgIGlmIChbcmVx
dWVzdFVSTC5ob3N0IGlzRXF1YWxUb1N0cmluZzpAInJlZGlyZWN0Il0pIHsKKyAgICAgICAgTlNV
UkwgKnJlZGlyZWN0VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlQDovLyVAIiwgdGVzdFNjaGVtZSwgcmVxdWVzdFVSTC5xdWVyeV1dOworICAg
ICAgICBbc2VsZi5jbGllbnQgVVJMUHJvdG9jb2w6c2VsZiB3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cmVkaXJlY3RVUkxdIHJlZGlyZWN0UmVzcG9u
c2U6cmVzcG9uc2UuZ2V0KCldOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW3NlbGYu
Y2xpZW50IFVSTFByb3RvY29sOnNlbGYgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgp
IGNhY2hlU3RvcmFnZVBvbGljeTpOU1VSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWRdOworICAgIFtz
ZWxmLmNsaWVudCBVUkxQcm90b2NvbDpzZWxmIGRpZExvYWREYXRhOmRhdGFdOworICAgIFtzZWxm
LmNsaWVudCBVUkxQcm90b2NvbERpZEZpbmlzaExvYWRpbmc6c2VsZl07CiB9CiAKIC0gKHZvaWQp
c3RvcExvYWRpbmcK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258751</attachid>
            <date>2015-08-11 13:55:57 -0700</date>
            <delta_ts>2015-08-15 10:19:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147871-20150811135541.patch</filename>
            <type>text/plain</type>
            <size>16578</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDE2NDY4ODc1NmNlOWE0
MDZhMGQ5M2MxMjJjNTliMDVmMGUxODMwYy4uNjUyNTBkZWJlZWIyMDAwNjZlOWZiNWI0MjY3ZGUw
MmI3MDRjMWQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE1LTA4LTExICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCByZWRpcmVj
dCBzdXBwb3J0IHRvIEN1c3RvbVByb3RvY29sTWFuYWdlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3ODcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBOU1VSTFByb3RvY29scyBoYXZlIHRo
ZSBhYmlsaXR5IHRvIGdlbmVyYXRlIHJlZGlyZWN0IHJlc3BvbnNlcy4gVGhpcyBjaGFuZ2UgdGVh
Y2hlcyBDdXN0b21Qcm90b2NvbE1hbmFnZXIgaG93IHRvIGhhbmRsZSB0aGVtLgorCisgICAgICAg
ICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0NvY29hL0N1c3RvbVByb3RvY29sTWFu
YWdlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Ondh
c1JlZGlyZWN0ZWRUb1JlcXVlc3QpOiBDYWxsZWQgLVVSTFByb3RvY29sOndhc1JlZGlyZWN0ZWRU
b1JlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTogb24gdGhlIE5TVVJMUHJvdG9jb2xDbGllbnQuCisg
ICAgICAgICogU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlci5oOgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Q
cm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW46IERlZmluZWQgV2FzUmVkaXJlY3RlZFRvUmVxdWVz
dC4KKyAgICAgICAgKiBTaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Q
cm90b2NvbE1hbmFnZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyOjp3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KTogRGVmaW5lZCBlbXB0eSBmdW5jdGlvbi4K
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5TWFjLm1tOgorICAgICAgICAoLVtXS0N1c3RvbVByb3RvY29sTG9h
ZGVyIGNvbm5lY3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6XSk6IElmIGEg
cmVkaXJlY3QgcmVzcG9uc2UgaXMgcmVjZWl2ZWQsIHNlbmQgV2FzUmVkaXJlY3RlZFRvUmVxdWVz
dCBhbmQgcmV0dXJuIG5pbCB0byBpZ25vcmUgdGhlIHJlZGlyZWN0LgorCiAyMDE1LTA4LTExICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVHJpZWQgdG8gZml4IHRo
ZSBpT1MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ29jb2EvQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ29jb2EubW0KaW5kZXggZGQ2M2ExMTBmYWQzYTlkYWU5OWYzOGJkODRmYTk2
OTA5NzU4OWYwMS4uM2UzNzU4NGViNWQyNTM4NzJkYjhiNmFkNjczMjI0ZTA1N2UyYTVlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0Nv
Y29hL0N1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9Db2NvYS9DdXN0b21Qcm90b2NvbE1hbmFnZXJD
b2NvYS5tbQpAQCAtNTEsNiArNTEsNyBAQCBAaW50ZXJmYWNlIE5TVVJMQ29ubmVjdGlvbiAoKQog
KyAoQ0ZSdW5Mb29wUmVmKXJlc291cmNlTG9hZGVyUnVuTG9vcDsKIEBlbmQKIAordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKQEAgLTI1OSw2ICsyNjAsMjAgQEAgdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRp
ZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKICAgICByZW1vdmVDdXN0
b21Qcm90b2NvbChwcm90b2NvbC5nZXQoKSk7CiB9CiAKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjp3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSkKK3sKKyAgICBSZXRhaW5QdHI8V0tDdXN0b21Qcm90b2NvbD4gcHJvdG9j
b2wgPSBwcm90b2NvbEZvcklEKGN1c3RvbVByb3RvY29sSUQpOworICAgIGlmICghcHJvdG9jb2wp
CisgICAgICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zUmVxdWVz
dCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOworICAgIFJldGFp
blB0cjxOU1VSTFJlc3BvbnNlPiBuc1JlZGlyZWN0UmVzcG9uc2UgPSByZWRpcmVjdFJlc3BvbnNl
Lm5zVVJMUmVzcG9uc2UoKTsKKworICAgIGRpc3BhdGNoT25SZXNvdXJjZUxvYWRlclJ1bkxvb3Ao
W3Byb3RvY29sLCBuc1JlcXVlc3QsIG5zUmVkaXJlY3RSZXNwb25zZV0oKSB7CisgICAgICAgIFtb
cHJvdG9jb2wgY2xpZW50XSBVUkxQcm90b2NvbDpwcm90b2NvbC5nZXQoKSB3YXNSZWRpcmVjdGVk
VG9SZXF1ZXN0Om5zUmVxdWVzdC5nZXQoKSByZWRpcmVjdFJlc3BvbnNlOm5zUmVkaXJlY3RSZXNw
b25zZS5nZXQoKV07CisgICAgfSk7Cit9CisKIFJldGFpblB0cjxXS0N1c3RvbVByb3RvY29sPiBD
dXN0b21Qcm90b2NvbE1hbmFnZXI6OnByb3RvY29sRm9ySUQodWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCkKIHsKICAgICBNdXRleExvY2tlciBsb2NrZXIobV9jdXN0b21Qcm90b2NvbE1hcE11dGV4
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCAxMDE4MDQz
MzlhNTE0YWI4MzZmMzViZmJkODJhYWUxODk2OTRlNjMyLi4yNzYxZWNjNzdhMGJkMTEwODQxZjFh
N2UzNTJjOTE3MjE4NDVkOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlci5oCkBAIC00OSw2ICs0OSw3IEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBAIC05
NCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgdWludDMyX3QgY2FjaGVTdG9yYWdlUG9saWN5KTsKICAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgdm9pZCB3
YXNSZWRpcmVjdGVkVG9SZXF1ZXN0KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpOwogCiAgICAgQ2hpbGRQcm9jZXNzKiBtX2NoaWxkUHJvY2VzczsK
ICAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX21lc3NhZ2VRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDQ1ZDA4MWEw
M2ZkMDY5MTJkNzUzNGM3ZWFmZWNiMjRlZDJlZTUxY2UuLjBmNTVlY2ViMTY5YjI5YTAzZTMwYTUy
M2JjOWM0MDQxMTg0YTEzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXIubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVBy
b3RvY29sTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjUsNiArMjUsNyBAQCBtZXNzYWdlcyAtPiBD
dXN0b21Qcm90b2NvbE1hbmFnZXIgewogICAgIERpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIERpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlLCB1aW50MzJfdCBjYWNoZVN0b3JhZ2VQb2xpY3kpCiAgICAgRGlkRmluaXNoTG9hZGlu
Zyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQorICAgIFdhc1JlZGlyZWN0ZWRUb1JlcXVlc3Qo
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSk7CiAKICAgICBS
ZWdpc3RlclNjaGVtZShTdHJpbmcgbmFtZSkKICAgICBVbnJlZ2lzdGVyU2NoZW1lKFN0cmluZyBu
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJTb3VwLmNwcAppbmRleCA1MjQ2OGU2MjFkM2M3ZWFkMGNiZDYwZDg1YWQwM2E1MGMwYjQwN2I3
Li40MjAwODc5NDdhMWRiNmFjYTA2OTUzMTJlMWFiZWU2ZWQxYzQyYzRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Q
cm90b2NvbE1hbmFnZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJTb3VwLmNwcApAQCAt
MTA2LDQgKzEwNiw4IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpkaWRGaW5pc2hMb2Fk
aW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiAgICAgbV9pbXBsLT5kaWRGaW5pc2hMb2Fk
aW5nKGN1c3RvbVByb3RvY29sSUQpOwogfQogCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6
d2FzUmVkaXJlY3RlZFRvUmVxdWVzdCh1aW50NjRfdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpCit7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KaW5kZXggNGMwMTFmYWEzNzhjOTFhZWFl
MGQ2MDUxZWI5YzljNDA0MmE3YTBiYy4uZmJlZjM5YjA5OGUyMjllZjUyZTBjYjIwMjQ2NzVlMDUw
YjQ2MmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3Vz
dG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCkBAIC0xMTAsNiArMTEwLDEwIEBAIC0gKHZvaWQp
Y29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YToo
TlNEYXRhICopZGF0YQogCiAtIChOU1VSTFJlcXVlc3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5l
Y3Rpb24gKiljb25uZWN0aW9uIHdpbGxTZW5kUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZQogewor
ICAgIGlmIChyZWRpcmVjdFJlc3BvbnNlKSB7CisgICAgICAgIF9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6Oldhc1JlZGlyZWN0ZWRUb1JlcXVlc3QoX2N1
c3RvbVByb3RvY29sSUQsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpLCAwKTsKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICB9CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMThlMTA4NmQ4YTQ1NjFi
ZjNjNWE2ZWRmNjA4YjBmYjFkZmUyNTgxLi4xM2FlYzBmYjRkY2Q5YTMzMDBhMzA5NjZhMTU1MjJl
MDdiYmFjNTMyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTUtMDgtMTEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBw
bGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIHJlZGlyZWN0IHN1cHBvcnQgdG8gQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDc4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGVkIFdlYktpdDJDdXN0b21Qcm90b2NvbHNUZXN0Lk1haW5SZXNvdXJjZSB0
byBnZW5lcmF0ZSBhIHJlZGlyZWN0IHJlc3BvbnNlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9DdXN0b21Qcm90b2NvbHNTeW5jWEhSVGVzdC5tbToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOiBVbnJlZ2VzaXRlcmVkIFRlc3RQcm90b2NvbC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWw6IENo
YW5nZWQgc2NoZW1lIHRvIGh0dHAuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tOgorICAgICAgICAoLVtDdXN0b21Qcm90b2Nv
bHNMb2FkRGVsZWdhdGUgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkOl0pOiBFeHBlY3RlZCBhIGNlcnRhaW4gcHJvdmlzaW9uYWwgVVJMLgorICAgICAgICAo
LVtDdXN0b21Qcm90b2NvbHNMb2FkRGVsZWdhdGUgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZDpdKTogRGl0dG8uCisgICAg
ICAgICgtW0N1c3RvbVByb3RvY29sc0xvYWREZWxlZ2F0ZSBicm93c2luZ0NvbnRleHRDb250cm9s
bGVyRGlkQ29tbWl0TG9hZDpdKTogRXhwZWN0ZWQgYSBjZXJ0YWluIGNvbW1pdHRlZCBVUkwuCisg
ICAgICAgICgtW0N1c3RvbVByb3RvY29sc0xvYWREZWxlZ2F0ZSBicm93c2luZ0NvbnRleHRDb250
cm9sbGVyRGlkRmluaXNoTG9hZDpdKTogRXhwZWN0ZWQgaXNMb2FkaW5nIHRvIGJlIGZhbHNlLgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IFVzZWQgdGhlIG5ldyBsb2FkIGRlbGVnYXRl
IGFuZCB1bnJlZ2lzdGVyZWQgVGVzdFByb3RvY29sLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mk9iakMvUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmcubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogVW5yZWdpc3RlcmVkIFRlc3RQcm90b2NvbC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21hYy9UZXN0UHJvdG9jb2wubW06IENoYW5nZWQgc2No
ZW1lIHRvIGh0dHAuCisgICAgICAgICgrW1Rlc3RQcm90b2NvbCBjYW5Jbml0V2l0aFJlcXVlc3Q6
XSk6IENoYW5nZWQgdG8gdXNlIHByb3BlcnR5IHN5bnRheC4KKyAgICAgICAgKC1bVGVzdFByb3Rv
Y29sIHN0YXJ0TG9hZGluZ10pOiBUYXVnaHQgdG8gaGFuZGxlIHJlZGlyZWN0IHJlc3BvbnNlcy4K
KwogMjAxNS0wOC0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEFub3RoZXIgc3BlY3VsYXRpdmUgYnVpbGQgZml4IGFmdGVyIHIxODgyODAu
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0N1c3RvbVByb3RvY29sc1N5
bmNYSFJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9DdXN0b21Qcm90b2NvbHNT
eW5jWEhSVGVzdC5tbQppbmRleCAzZjQ2MWQ5NGE4YmEyNTJjMDBiZDZjYzQ5ZGZlMDEzZjk3NzBh
NWU3Li44YzZmZWU0NTY3MDIxOGU2YmE2ZmE1ZjYyZDRhODIxMGFlM2U2Y2FkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0N1c3RvbVByb3RvY29sc1N5bmNYSFJUZXN0Lm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvQ3VzdG9tUHJvdG9jb2xzU3luY1hIUlRl
c3QubW0KQEAgLTY5LDYgKzY5LDggQEAgVEVTVChXZWJLaXQyQ3VzdG9tUHJvdG9jb2xzVGVzdCwg
U3luY1hIUikKICAgICBXS1BhZ2VMb2FkVVJMKHdrVmlldy5nZXQoKS5wYWdlUmVmLCBVdGlsOjpj
cmVhdGVVUkxGb3JSZXNvdXJjZSgiY3VzdG9tLXByb3RvY29sLXN5bmMteGhyIiwgImh0bWwiKSk7
CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgW05T
VVJMUHJvdG9jb2wgdW5yZWdpc3RlckNsYXNzOltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKKyAgICBb
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90
b2NvbDpbVGVzdFByb3RvY29sIHNjaGVtZV1dOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY3Vz
dG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwKaW5kZXggOGE5OGYzM2U5NTZjNTg0
NDYwYzY0Y2MzZWM2NWI3MmE4ZmNmMjcwYy4uNmNmMDBiNmNhYzQ3Y2ViZDdlNjFjZDgxZTBlNzEz
NzA5OGYwMjVhMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L2N1c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9jdXN0b20tcHJvdG9jb2wtc3luYy14aHIuaHRtbApAQCAtMSw2ICsxLDYg
QEAKIDxzY3JpcHQ+CiAgICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAg
ICByZXF1ZXN0Lm9wZW4oJ0dFVCcsICd0ZXN0Oi8vdGVzdCcsIGZhbHNlKTsKKyAgICByZXF1ZXN0
Lm9wZW4oJ0dFVCcsICdodHRwOi8vdGVzdCcsIGZhbHNlKTsKICAgICByZXF1ZXN0LnNlbmQobnVs
bCk7CiAgICAgd2luZG93Ll90ZXN0UmVzdWx0ID0gcmVxdWVzdC5yZXNwb25zZVRleHQ7CiA8L3Nj
cmlwdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVByb3RvY29sc1Rlc3QubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVByb3RvY29sc1Rlc3QubW0K
aW5kZXggMGE2MjljMGFlNDZjZjEyZjBiMzRiOTJhY2Y1ZmI1MDM3NWNmNWQ5My4uNDYzMmI4NmFi
MmRlOTUzOTY4ZDI2NzRhNjhlNGQ0ZWRkYzA2YTI3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvQ3VzdG9tUHJvdG9jb2xzVGVzdC5t
bQpAQCAtMzksNiArMzksMzQgQEAKIAogc3RhdGljIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7
CiAKK0BpbnRlcmZhY2UgQ3VzdG9tUHJvdG9jb2xzTG9hZERlbGVnYXRlIDogTlNPYmplY3QgPFdL
QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQ3Vz
dG9tUHJvdG9jb2xzTG9hZERlbGVnYXRlCisKKy0gKHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlckRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkOihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
KilzZW5kZXIKK3sKKyAgICBFWFBFQ1RfVFJVRShbc2VuZGVyLnByb3Zpc2lvbmFsVVJMLmFic29s
dXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAImh0dHA6Ly9yZWRpcmVjdC8/dGVzdCJdKTsKK30K
KworLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkOihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilzZW5k
ZXIKK3sKKyAgICBFWFBFQ1RfVFJVRShbc2VuZGVyLnByb3Zpc2lvbmFsVVJMLmFic29sdXRlU3Ry
aW5nIGlzRXF1YWxUb1N0cmluZzpAImh0dHA6Ly90ZXN0LyJdKTsKK30KKworLSAodm9pZClicm93
c2luZ0NvbnRleHRDb250cm9sbGVyRGlkQ29tbWl0TG9hZDooV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICopc2VuZGVyCit7CisgICAgRVhQRUNUX1RSVUUoW3NlbmRlci5jb21taXR0ZWRVUkwu
YWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cDovL3Rlc3QvIl0pOworfQorCist
ICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRGaW5pc2hMb2FkOihXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgKilzZW5kZXIKK3sKKyAgICBFWFBFQ1RfRkFMU0Uoc2VuZGVyLmlz
TG9hZGluZyk7CisgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKK30KKworQGVuZAorCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoV2ViS2l0MkN1c3RvbVByb3RvY29sc1Rlc3QsIE1h
aW5SZXNvdXJjZSkKQEAgLTQ5LDEyICs3NywxMyBAQCBURVNUKFdlYktpdDJDdXN0b21Qcm90b2Nv
bHNUZXN0LCBNYWluUmVzb3VyY2UpCiAgICAgUmV0YWluUHRyPFdLUHJvY2Vzc0dyb3VwPiBwcm9j
ZXNzR3JvdXAgPSBhZG9wdE5TKFtbV0tQcm9jZXNzR3JvdXAgYWxsb2NdIGluaXRdKTsKICAgICBS
ZXRhaW5QdHI8V0tCcm93c2luZ0NvbnRleHRHcm91cD4gYnJvd3NpbmdDb250ZXh0R3JvdXAgPSBh
ZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRHcm91cCBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVy
OkAiVGVzdElkZW50aWZpZXIiXSk7CiAgICAgUmV0YWluUHRyPFdLVmlldz4gd2tWaWV3ID0gYWRv
cHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3Vw
OmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7Ci0gICAgd2tWaWV3LmdldCgpLmJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewotICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwot
ICAgIH1dOwotICAgIFt3a1ZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA6Ly90ZXN0IiwgW1Rlc3RQcm90b2NvbCBz
Y2hlbWVdXV1dXTsKKyAgICBSZXRhaW5QdHI8Q3VzdG9tUHJvdG9jb2xzTG9hZERlbGVnYXRlPiBs
b2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ3VzdG9tUHJvdG9jb2xzTG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CisgICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXS5sb2FkRGVs
ZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlcl0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOi8vcmVkaXJl
Y3Q/dGVzdCIsIFtUZXN0UHJvdG9jb2wgc2NoZW1lXV1dXV07CiAKICAgICBVdGlsOjpydW4oJnRl
c3RGaW5pc2hlZCk7CisgICAgW05TVVJMUHJvdG9jb2wgdW5yZWdpc3RlckNsYXNzOltUZXN0UHJv
dG9jb2wgY2xhc3NdXTsKKyAgICBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyIHVucmVnaXN0
ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpbVGVzdFByb3RvY29sIHNjaGVtZV1dOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9QcmV2ZW50SW1hZ2VMb2Fk
V2l0aEF1dG9SZXNpemluZy5tbQppbmRleCA4MDk3NTUwZTRlNTM5OWZmNDlhY2U1MGNhNTY4NzQy
YzA3ZjlmOTZlLi4wZWU0NzQ3Y2UyMzdhNmJmNmI5Nzk5MGFmYWIzNDhlZWIzYTczZjIwIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1ByZXZlbnRJbWFn
ZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mk9iakMvUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmcubW0KQEAgLTU3LDYg
KzU3LDggQEAgVEVTVChXZWJLaXQyLCBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZ1Rl
c3QpCiAgICAgW3dlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciBsb2FkSFRNTFN0cmluZzpAIjxodG1sPjxib2R5IHN0eWxlPSdiYWNrZ3JvdW5kLWltYWdlOnVy
bChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFvQUFBQUtD
QVlBQUFDTk1zKzlBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNj
bGxQQUFBQUZaSlJFRlVlRjU5ejRFSkFERUlRMUYzNms3dTVFN1pLWGVVUVBBQ0ozd0s3VU5va1Z4
Vms5a0huUUg3Ylk5aGJEeURoTlhnanBSTHFGbG80TTJHZ2Z5SkhoanE4VjRhZ2ZyZ1BRWDNKdEpR
R2JvZm1DSGdBL25BS2tzK0pBakZBQUFBQUVsRlRrU3VRbUNDKTsnPjwvYm9keT48L2h0bWw+IiBi
YXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXV07CiAKICAgICBVdGls
OjpydW4oJnRlc3RGaW5pc2hlZCk7CisgICAgW05TVVJMUHJvdG9jb2wgdW5yZWdpc3RlckNsYXNz
OltUZXN0UHJvdG9jb2wgY2xhc3NdXTsKKyAgICBbV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
IHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpbVGVzdFByb3RvY29sIHNjaGVtZV1d
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL21hYy9UZXN0UHJvdG9jb2wubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21h
Yy9UZXN0UHJvdG9jb2wubW0KaW5kZXggMzY3ZWEwNDg5OGY4NmNmODIxOWI4YmUzNTE0OWFmY2Zh
YTlkMTg5OC4uMjQzZGU3OWYzZDU5MGQzZTdiYTBhNGUzYThkMjliMmU0MDc2MThmYyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdFByb3RvY29sLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RQcm90b2NvbC5tbQpAQCAtMjYsMTMgKzI2LDE3IEBACiAj
aW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogCi1zdGF0aWMgTlNT
dHJpbmcgKnRlc3RTY2hlbWUgPSBAInRlc3QiOworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
CisvLyBFdmVuIHRob3VnaCBOU1VSTFByb3RvY29sIGlzIGNhcGFibGUgb2YgZ2VuZXJhdGluZyBy
ZWRpcmVjdCByZXNwb25zZXMgZm9yIGFueSBwcm90b2NvbCwgV2ViQ29yZSBhc3NlcnRzIGlmIGEg
cmVkaXJlY3QgaXMgbm90IGluIHRoZSBodHRwIGZhbWlseS4KKy8vIFNlZSBodHRwOi8vd2Via2l0
Lm9yZy9iLzE0Nzg3MCBmb3IgZGV0YWlscy4KK3N0YXRpYyBOU1N0cmluZyAqdGVzdFNjaGVtZSA9
IEAiaHR0cCI7CiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2wKIAogKyAoQk9PTCljYW5J
bml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICByZXR1cm4gW1tb
cmVxdWVzdCBVUkxdIHNjaGVtZV0gY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTp0ZXN0U2NoZW1lXSA9
PSBOU09yZGVyZWRTYW1lOworICAgIHJldHVybiBbcmVxdWVzdC5VUkwuc2NoZW1lIGNhc2VJbnNl
bnNpdGl2ZUNvbXBhcmU6dGVzdFNjaGVtZV0gPT0gTlNPcmRlcmVkU2FtZTsKIH0KIAogKyAoTlNV
UkxSZXF1ZXN0ICopY2Fub25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3QKQEAgLTUyLDE0ICs1NiwyMSBAQCArIChOU1N0cmluZyAqKXNjaGVtZQogCiAtICh2b2lk
KXN0YXJ0TG9hZGluZwogewotICAgIEVYUEVDVF9UUlVFKFtbW1tzZWxmIHJlcXVlc3RdIFVSTF0g
c2NoZW1lXSBpc0VxdWFsVG9TdHJpbmc6dGVzdFNjaGVtZV0pOwotICAgIAorICAgIE5TVVJMICpy
ZXF1ZXN0VVJMID0gc2VsZi5yZXF1ZXN0LlVSTDsKKyAgICBFWFBFQ1RfVFJVRShbcmVxdWVzdFVS
TC5zY2hlbWUgaXNFcXVhbFRvU3RyaW5nOnRlc3RTY2hlbWVdKTsKKwogICAgIE5TRGF0YSAqZGF0
YSA9IFtAIlBBU1MiIGRhdGFVc2luZ0VuY29kaW5nOk5TQVNDSUlTdHJpbmdFbmNvZGluZ107Ci0g
ICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOltbc2VsZiByZXF1ZXN0XSBVUkxdIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6W2RhdGEgbGVuZ3RoXSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF07Ci0gICAg
W1tzZWxmIGNsaWVudF0gVVJMUHJvdG9jb2w6c2VsZiBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9u
c2UgY2FjaGVTdG9yYWdlUG9saWN5Ok5TVVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZF07Ci0gICAg
W1tzZWxmIGNsaWVudF0gVVJMUHJvdG9jb2w6c2VsZiBkaWRMb2FkRGF0YTpkYXRhXTsKLSAgICBb
W3NlbGYgY2xpZW50XSBVUkxQcm90b2NvbERpZEZpbmlzaExvYWRpbmc6c2VsZl07Ci0gICAgW3Jl
c3BvbnNlIHJlbGVhc2VdOworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9
IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpyZXF1ZXN0VVJMIE1J
TUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4
dEVuY29kaW5nTmFtZTpuaWxdKTsKKworICAgIGlmIChbcmVxdWVzdFVSTC5ob3N0IGlzRXF1YWxU
b1N0cmluZzpAInJlZGlyZWN0Il0pIHsKKyAgICAgICAgTlNVUkwgKnJlZGlyZWN0VVJMID0gW05T
VVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDovLyVAIiwg
dGVzdFNjaGVtZSwgcmVxdWVzdFVSTC5xdWVyeV1dOworICAgICAgICBbc2VsZi5jbGllbnQgVVJM
UHJvdG9jb2w6c2VsZiB3YXNSZWRpcmVjdGVkVG9SZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6cmVkaXJlY3RVUkxdIHJlZGlyZWN0UmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW3NlbGYuY2xpZW50IFVSTFByb3RvY29sOnNl
bGYgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpIGNhY2hlU3RvcmFnZVBvbGljeTpO
U1VSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWRdOworICAgIFtzZWxmLmNsaWVudCBVUkxQcm90b2Nv
bDpzZWxmIGRpZExvYWREYXRhOmRhdGFdOworICAgIFtzZWxmLmNsaWVudCBVUkxQcm90b2NvbERp
ZEZpbmlzaExvYWRpbmc6c2VsZl07CiB9CiAKIC0gKHZvaWQpc3RvcExvYWRpbmcK
</data>
<flag name="review"
          id="283931"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>