<?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>155291</bug_id>
          
          <creation_ts>2016-03-10 00:25:10 -0800</creation_ts>
          <short_desc>[Fetch API] Use DeferredWrapper directly in FetchBody promise handling</short_desc>
          <delta_ts>2016-03-11 04:08:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>151937</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1173024</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-10 00:25:10 -0800</bug_when>
    <thetext>The DOMPromise data typing is not helpful here, we should switch back to DeferredWrapper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173036</commentid>
    <comment_count>1</comment_count>
      <attachid>273552</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-10 02:17:42 -0800</bug_when>
    <thetext>Created attachment 273552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173037</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-10 02:19:36 -0800</bug_when>
    <thetext>Attachment 273552 did not pass style-queue:


ERROR: Source/WebCore/Modules/fetch/FetchBody.h:77:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 10 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>1173415</commentid>
    <comment_count>3</comment_count>
      <attachid>273552</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-10 16:05:32 -0800</bug_when>
    <thetext>Comment on attachment 273552
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:178
&gt; +        Vector&lt;char&gt; data = extractFromText();
&gt; +        promise.resolve&lt;RefPtr&lt;ArrayBuffer&gt;&gt;(ArrayBuffer::create(data.data(), data.size()));

This extra copying of the data is really unfortunate.

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:205
&gt; +    m_consumer = Consumer(type, WTFMove(promise));

I think this can be:

    m_consumer = { type, WTFMove(promise) };

And if so, I think it’s nicer.

&gt; Source/WebCore/Modules/fetch/FetchBody.h:80
&gt; +        Consumer(Type t, DeferredWrapper&amp;&amp; p)
&gt; +            : type(t)
&gt; +            , promise(WTFMove(p)) { }

Shouldn’t need this constructor. Should just be able to use initializer lists to initialize a struct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173631</commentid>
    <comment_count>4</comment_count>
      <attachid>273694</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-11 00:13:12 -0800</bug_when>
    <thetext>Created attachment 273694
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173638</commentid>
    <comment_count>5</comment_count>
      <attachid>273694</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 01:05:38 -0800</bug_when>
    <thetext>Comment on attachment 273694
Patch for landing

Rejecting attachment 273694 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
cts-normal/x86_64/FileReaderSync.dia -c /Volumes/Data/EWS/WebKit/Source/WebCore/fileapi/FileReaderSync.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/FileReaderSync.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/FetchBody.o Modules/fetch/FetchBody.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/959271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173675</commentid>
    <comment_count>6</comment_count>
      <attachid>273714</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-11 02:33:15 -0800</bug_when>
    <thetext>Created attachment 273714
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173677</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-11 02:36:08 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/Modules/fetch/FetchBody.cpp:205
&gt; &gt; +    m_consumer = Consumer(type, WTFMove(promise));
&gt; 
&gt; I think this can be:
&gt; 
&gt;     m_consumer = { type, WTFMove(promise) };
&gt; 
&gt; And if so, I think it’s nicer.

Changed to m_consumer = Consumer({...});

&gt; &gt; Source/WebCore/Modules/fetch/FetchBody.h:80
&gt; &gt; +        Consumer(Type t, DeferredWrapper&amp;&amp; p)
&gt; &gt; +            : type(t)
&gt; &gt; +            , promise(WTFMove(p)) { }
&gt; 
&gt; Shouldn’t need this constructor. Should just be able to use initializer
&gt; lists to initialize a struct.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173694</commentid>
    <comment_count>8</comment_count>
      <attachid>273714</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 04:08:11 -0800</bug_when>
    <thetext>Comment on attachment 273714
Patch for landing

Clearing flags on attachment: 273714

Committed r198005: &lt;http://trac.webkit.org/changeset/198005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1173695</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-11 04:08:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273552</attachid>
            <date>2016-03-10 02:17:42 -0800</date>
            <delta_ts>2016-03-11 00:13:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155291-20160310111728.patch</filename>
            <type>text/plain</type>
            <size>23874</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzc4MGY3M2E4NGVjMGVh
YzJhYjViMzJjODZjM2U5NGY5YjdiZTkxYy4uNmU3NWI4MzExMjZhYzliYmFjZmJjYTgzN2YwNWNh
NzA4ZTk5N2Y0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTAzLTEwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW0ZldGNo
IEFQSV0gVXNlIERlZmVycmVkV3JhcHBlciBkaXJlY3RseSBpbiBGZXRjaEJvZHkgcHJvbWlzZSBo
YW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU1MjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZWQgZnJvbSB0eXBlZCBET01Qcm9taXNlIHRvIERlZmVycmVkV3JhcHBlciBhcyB0aGVyZSBj
YW4gb25seSBiZSBvbmUgcHJvbWlzZSByZXNvbHZlZC4KKyAgICAgICAgU3RhcnRlZCBwcmVwYXJp
bmcgdGhlIGhhbmRsaW5nIG9mIGJsb2JzIHRyYW5zbGF0aW9uIHRvIG90aGVyIHJlc29sdmVkIHR5
cGVzLgorCisgICAgICAgIEZpeGVkIHRoZSBjYXNlIG9mIGVtcHR5IGJvZHksIGluIHdoaWNoIGNh
c2UgcHJvbWlzZXMgc2hvdWxkIHJlc29sdmUgd2l0aCBlbXB0eSBvYmplY3RzIChzdHJpbmdzLCBi
dWZmZXJzLi4uKSBhbmQgbm90IG51bGwuCisKKyAgICAgICAgQWRkZWQgQ29uc3VtZXIgc3RydWN0
dXJlIHRvIGhhbmRsZSBhc3luY2hyb25vdXMgcmVzb2x1dGlvbi9yZWplY3Rpb24gb2YgcHJvbWlz
ZXMuCisgICAgICAgIEFkZGVkIHByZWxpbWluYXJ5IEFQSSB0byByZXNvbHZlIHByb21pc2VzIGJh
c2VkIG9uIGRhdGEgc3RvcmVkIGFzIGEgQmxvYi4KKyAgICAgICAgRmV0Y2hCb2R5T3duZXIgd2ls
bCBiZSByZXNwb25zaWJsZSB0byBkby9zdG9wIGJsb2IgbG9hZGluZy4KKworICAgICAgICBUZXN0
czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1
ZXN0LWNvbnN1bWUtZW1wdHkuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS5o
dG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHk6OnByb2Nlc3NJZkVtcHR5T3JEaXN0dXJiZWQpOiBGaXhlZCBlbXB0
eSBib2R5IGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmFycmF5QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6YmxvYik6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHk6Ompzb24pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHk6OmNvbnN1bWVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9h
ZGluZ1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQmxvYik6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnJlc29sdmVBc0pTT04pOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Ojpsb2FkaW5nRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNo
Qm9keTo6bG9hZGVkQXNCbG9iKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpmb3JtRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHk6OkNvbnN1bWVyOjpDb25zdW1lcik6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3du
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjphcnJheUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYik6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlPd25lcjo6Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5
T3duZXI6Ompzb24pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKToKKwogMjAxNi0wMy0w
OSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBFeHRyYWN0IEV2
ZW50UGF0aC5oL2NwcCBvdXQgb2YgRXZlbnREaXNwYXRjaGVyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IGZkYmE1Y2RjZGQxZWE3ZTEzZmJjYWU2
MzBlNzNmZmExZTQ4YTdmYjYuLjRiN2VkNzU1OGZlOGUzNzcwOTc1MmRjOTBmMWI5MDZjNmM3MzM5
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTMx
LDggKzMxLDEwIEBACiAKICNpZiBFTkFCTEUoRkVUQ0hfQVBJKQogCisjaW5jbHVkZSAiRE9NUmVx
dWVzdFN0YXRlLmgiCiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJGZXRjaEJvZHlPd25lci5oIgogI2luY2x1ZGUgIkhUVFBQYXJz
ZXJzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01Gb3JtRGF0YS5oIgpA
QCAtODIsOTYgKzg0LDEzNiBAQCBGZXRjaEJvZHkgRmV0Y2hCb2R5OjpleHRyYWN0RnJvbUJvZHko
RmV0Y2hCb2R5KiBib2R5KQogICAgIHJldHVybiBGZXRjaEJvZHkoV1RGTW92ZSgqYm9keSkpOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBGZXRjaEJvZHk6OnByb2Nlc3NJ
ZkVtcHR5T3JEaXN0dXJiZWQoRE9NUHJvbWlzZTxULCBFeGNlcHRpb25Db2RlPiYgcHJvbWlzZSkK
K2Jvb2wgRmV0Y2hCb2R5Ojpwcm9jZXNzSWZFbXB0eU9yRGlzdHVyYmVkKENvbnN1bWVyOjpUeXBl
IHR5cGUsIERlZmVycmVkV3JhcHBlciYgcHJvbWlzZSkKIHsKICAgICBpZiAobV90eXBlID09IFR5
cGU6Ok5vbmUpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFQoKSk7Ci0gICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBDb25zdW1lcjo6
VHlwZTo6VGV4dDoKKyAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShTdHJpbmcoKSk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6QmxvYjoK
KyAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZTxSZWZQdHI8QmxvYj4+KEJsb2I6OmNyZWF0ZSgp
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIENvbnN1bWVyOjpUeXBl
OjpKU09OOgorICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oU1lOVEFY
X0VSUik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBDb25zdW1lcjo6
VHlwZTo6QXJyYXlCdWZmZXI6CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoQXJyYXlCdWZm
ZXI6OmNyZWF0ZShudWxscHRyLCAwKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oMCk7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfTsKICAgICB9CiAKICAgICBpZiAobV9pc0Rpc3R1cmJlZCkgewotICAg
ICAgICBwcm9taXNlLnJlamVjdChUeXBlRXJyb3IpOworICAgICAgICBwcm9taXNlLnJlamVjdDxF
eGNlcHRpb25Db2RlPihUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgbV9pc0Rpc3R1cmJlZCA9IHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZl
dGNoQm9keTo6YXJyYXlCdWZmZXIoQXJyYXlCdWZmZXJQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQg
RmV0Y2hCb2R5OjphcnJheUJ1ZmZlcihGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3Jh
cHBlciYmIHByb21pc2UpCiB7Ci0gICAgaWYgKHByb2Nlc3NJZkVtcHR5T3JEaXN0dXJiZWQocHJv
bWlzZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6VGV4dCkg
ewotICAgICAgICAvLyBGSVhNRTogSWRlYWxseSB3ZSB3b3VsZCBsaWtlIHRvIGhhdmUgYW4gQXJy
YXlCdWZmZXIgZGlyZWN0bHkgZnJvbSBtX3RleHQuCi0gICAgICAgIFZlY3RvcjxjaGFyPiBkYXRh
ID0gZXh0cmFjdEZyb21UZXh0KCk7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAg
ICBwcm9taXNlLnJlc29sdmUoYnVmZmVyKTsKKyAgICBpZiAocHJvY2Vzc0lmRW1wdHlPckRpc3R1
cmJlZChDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIsIHByb21pc2UpKQogICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IG90aGVyIHR5cGVzLgotICAgIHByb21p
c2UucmVqZWN0KDApOworICAgIGNvbnN1bWUob3duZXIsIENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1
ZmZlciwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojpmb3JtRGF0YShG
b3JtRGF0YVByb21pc2UmJiBwcm9taXNlKQordm9pZCBGZXRjaEJvZHk6OmJsb2IoRmV0Y2hCb2R5
T3duZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewotICAgIGlmIChtX3R5
cGUgPT0gVHlwZTo6Tm9uZSB8fCBtX2lzRGlzdHVyYmVkKSB7Ci0gICAgICAgIHByb21pc2UucmVq
ZWN0KFR5cGVFcnJvcik7CisgICAgaWYgKHByb2Nlc3NJZkVtcHR5T3JEaXN0dXJiZWQoQ29uc3Vt
ZXI6OlR5cGU6OkJsb2IsIHByb21pc2UpKQogICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1f
aXNEaXN0dXJiZWQgPSB0cnVlOwogCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgb3RoZXIgdHlwZXMu
Ci0gICAgcHJvbWlzZS5yZWplY3QoMCk7CisgICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5
cGU6OkJsb2IsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIEZldGNoQm9keTo6YmxvYihC
bG9iUHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEZldGNoQm9keTo6anNvbihGZXRjaEJvZHlPd25l
ciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiB7Ci0gICAgaWYgKHByb2Nlc3NJ
ZkVtcHR5T3JEaXN0dXJiZWQocHJvbWlzZSkpCisgICAgaWYgKHByb2Nlc3NJZkVtcHR5T3JEaXN0
dXJiZWQoQ29uc3VtZXI6OlR5cGU6OkpTT04sIHByb21pc2UpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobV90eXBlID09IFR5cGU6OkJsb2IpIHsKLSAgICAgICAgcHJvbWlzZS5yZXNvbHZl
KG1fYmxvYik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgaWYgKG1fdHlwZSA9PSBUeXBl
OjpUZXh0KSB7Ci0gICAgICAgIFN0cmluZyBjb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRD
b250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fbWltZVR5cGUpKTsKLSAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKEJsb2I6OmNyZWF0ZShleHRyYWN0RnJvbVRleHQoKSwgY29u
dGVudFR5cGUpKTsKKyAgICAgICAgcmVzb2x2ZUFzSlNPTihvd25lci5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIG1fdGV4dCwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KLSAgICBwcm9taXNlLnJl
amVjdCgwKTsKKyAgICBjb25zdW1lKG93bmVyLCBDb25zdW1lcjo6VHlwZTo6SlNPTiwgV1RGTW92
ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojp0ZXh0KFRleHRQcm9taXNlJiYgcHJv
bWlzZSkKK3ZvaWQgRmV0Y2hCb2R5Ojp0ZXh0KEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJy
ZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsKLSAgICBpZiAocHJvY2Vzc0lmRW1wdHlPckRpc3R1cmJl
ZChwcm9taXNlKSkKKyAgICBpZiAocHJvY2Vzc0lmRW1wdHlPckRpc3R1cmJlZChDb25zdW1lcjo6
VHlwZTo6VGV4dCwgcHJvbWlzZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3R5cGUg
PT0gVHlwZTo6VGV4dCkgewogICAgICAgICBwcm9taXNlLnJlc29sdmUobV90ZXh0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KLSAg
ICBwcm9taXNlLnJlamVjdCgwKTsKKyAgICBjb25zdW1lKG93bmVyLCBDb25zdW1lcjo6VHlwZTo6
VGV4dCwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojpqc29uKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNPTlByb21pc2UmJiBwcm9taXNlKQordm9pZCBGZXRjaEJvZHk6
OmNvbnN1bWUoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBDb25zdW1lcjo6VHlwZSB0eXBlLCBEZWZl
cnJlZFdyYXBwZXImJiBwcm9taXNlKQogewotICAgIGlmIChwcm9jZXNzSWZFbXB0eU9yRGlzdHVy
YmVkKHByb21pc2UpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAobV90eXBlID09IFR5cGU6
OlRleHQpIHsKLSAgICAgICAgSlNDOjpKU1ZhbHVlIHZhbHVlID0gSlNDOjpKU09OUGFyc2UoJnN0
YXRlLCBtX3RleHQpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcHJvbWlzZS5y
ZWplY3QoU1lOVEFYX0VSUik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByb21pc2UucmVz
b2x2ZSh2YWx1ZSk7CisgICAgICAgIGNvbnN1bWVUZXh0KHR5cGUsIFdURk1vdmUocHJvbWlzZSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6QmxvYikg
eworICAgICAgICBjb25zdW1lQmxvYihvd25lciwgdHlwZSwgV1RGTW92ZShwcm9taXNlKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBl
cy4KLSAgICBwcm9taXNlLnJlamVjdCgwKTsKKyAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25D
b2RlPigwKTsKK30KKwordm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVUZXh0KENvbnN1bWVyOjpUeXBl
IHR5cGUsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCit7CisgICAgQVNTRVJUKHR5cGUgPT0g
Q29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyIHx8IHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkJs
b2IpOworCisgICAgaWYgKHR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyKSB7Cisg
ICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhID0gZXh0cmFjdEZyb21UZXh0KCk7CisgICAgICAgIHBy
b21pc2UucmVzb2x2ZTxSZWZQdHI8QXJyYXlCdWZmZXI+PihBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFN0
cmluZyBjb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKG1fbWltZVR5cGUpKTsKKyAgICBwcm9taXNlLnJlc29sdmU8UmVm
UHRyPEJsb2I+PihCbG9iOjpjcmVhdGUoZXh0cmFjdEZyb21UZXh0KCksIGNvbnRlbnRUeXBlKSk7
Cit9CisKK0ZldGNoTG9hZGluZ1R5cGUgRmV0Y2hCb2R5Ojpsb2FkaW5nVHlwZShDb25zdW1lcjo6
VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQ29uc3VtZXI6OlR5
cGU6OkpTT046CisgICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6VGV4dDoKKyAgICAgICAgcmV0dXJu
IEZldGNoTG9hZGluZ1R5cGU6OlRleHQ7CisgICAgY2FzZSBDb25zdW1lcjo6VHlwZTo6QmxvYjoK
KyAgICAgICAgcmV0dXJuIEZldGNoTG9hZGluZ1R5cGU6OkJsb2I7CisgICAgY2FzZSBDb25zdW1l
cjo6VHlwZTo6QXJyYXlCdWZmZXI6CisgICAgICAgIHJldHVybiBGZXRjaExvYWRpbmdUeXBlOjpB
cnJheUJ1ZmZlcjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIEZldGNoTG9hZGluZ1R5cGU6OkFycmF5QnVmZmVyOworICAgIH07Cit9
CisKK3ZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lQmxvYihGZXRjaEJvZHlPd25lciYgb3duZXIsIENv
bnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCit7CisgICAgQVNT
RVJUKG1fYmxvYik7CisKKyAgICBtX2NvbnN1bWVyID0gQ29uc3VtZXIodHlwZSwgV1RGTW92ZShw
cm9taXNlKSk7CisgICAgb3duZXIubG9hZEJsb2IoKm1fYmxvYiwgbG9hZGluZ1R5cGUodHlwZSkp
OworfQorCit2b2lkIEZldGNoQm9keTo6cmVzb2x2ZUFzSlNPTihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGEsIERlZmVycmVkV3JhcHBlciYmIHByb21p
c2UpCit7CisgICAgRE9NUmVxdWVzdFN0YXRlIHN0YXRlKGNvbnRleHQpOworICAgIEpTQzo6SlNW
YWx1ZSB2YWx1ZSA9IEpTQzo6SlNPTlBhcnNlKHN0YXRlLmV4ZWMoKSwgZGF0YSk7CisgICAgaWYg
KCF2YWx1ZSkKKyAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oU1lOVEFYX0VS
Uik7CisgICAgZWxzZQorICAgICAgICBwcm9taXNlLnJlc29sdmUodmFsdWUpOwogfQogCiBWZWN0
b3I8Y2hhcj4gRmV0Y2hCb2R5OjpleHRyYWN0RnJvbVRleHQoKSBjb25zdApAQCAtMTg0LDYgKzIy
NiwyMCBAQCBWZWN0b3I8Y2hhcj4gRmV0Y2hCb2R5OjpleHRyYWN0RnJvbVRleHQoKSBjb25zdAog
ICAgIHJldHVybiB2YWx1ZTsKIH0KIAordm9pZCBGZXRjaEJvZHk6OmxvYWRpbmdGYWlsZWQoKQor
eworICAgIEFTU0VSVChtX2NvbnN1bWVyKTsKKyAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlamVj
dDxFeGNlcHRpb25Db2RlPigwKTsKKyAgICBtX2NvbnN1bWVyID0gTnVsbG9wdDsKK30KKwordm9p
ZCBGZXRjaEJvZHk6OmxvYWRlZEFzQmxvYihCbG9iJiBibG9iKQoreworICAgIEFTU0VSVChtX2Nv
bnN1bWVyKTsKKyAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlc29sdmUoJmJsb2IpOworICAgIG1f
Y29uc3VtZXIgPSBOdWxsb3B0OworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKaW5kZXggOTcxYzk2OTg3
NTNkMmJkYmQ4NjgyMDU1MzAwZjA1OGUxZTA3NTE3MC4uODY3ZTZlZDM2MmY2NTMwODFlN2RmNTY1
N2E5OTk0YTEyNWFjYjhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5oCkBAIC0zNiwzMiArMzYsMjIgQEAKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7Ci1jbGFzcyBBcnJheUJ1ZmZlcjsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNz
IEpTVmFsdWU7CiB9OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIERpY3Rpb25hcnk7
Ci10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworY2xhc3MgRmV0Y2hCb2R5T3duZXI7CitlbnVt
IGNsYXNzIEZldGNoTG9hZGluZ1R5cGU7CiAKIGNsYXNzIEZldGNoQm9keSB7CiBwdWJsaWM6Ci0g
ICAgdHlwZWRlZiBET01Qcm9taXNlPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiwgRXhjZXB0aW9u
Q29kZT4gQXJyYXlCdWZmZXJQcm9taXNlOwotICAgIHZvaWQgYXJyYXlCdWZmZXIoQXJyYXlCdWZm
ZXJQcm9taXNlJiYpOwotCi0gICAgdHlwZWRlZiBET01Qcm9taXNlPFJlZlB0cjxET01Gb3JtRGF0
YT4sIEV4Y2VwdGlvbkNvZGU+IEZvcm1EYXRhUHJvbWlzZTsKLSAgICB2b2lkIGZvcm1EYXRhKEZv
cm1EYXRhUHJvbWlzZSYmKTsKLQotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8QmxvYj4s
IEV4Y2VwdGlvbkNvZGU+IEJsb2JQcm9taXNlOwotICAgIHZvaWQgYmxvYihCbG9iUHJvbWlzZSYm
KTsKLQotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxKU0M6OkpTVmFsdWUsIEV4Y2VwdGlvbkNvZGU+
IEpTT05Qcm9taXNlOwotICAgIHZvaWQganNvbihKU0M6OkV4ZWNTdGF0ZSYsIEpTT05Qcm9taXNl
JiYpOwotCi0gICAgdHlwZWRlZiBET01Qcm9taXNlPFN0cmluZywgRXhjZXB0aW9uQ29kZT4gVGV4
dFByb21pc2U7Ci0gICAgdm9pZCB0ZXh0KFRleHRQcm9taXNlJiYpOworICAgIHZvaWQgYXJyYXlC
dWZmZXIoRmV0Y2hCb2R5T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7CisgICAgdm9pZCBibG9i
KEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOworICAgIHZvaWQganNvbihGZXRj
aEJvZHlPd25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKKyAgICB2b2lkIHRleHQoRmV0Y2hCb2R5
T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7CisgICAgdm9pZCBmb3JtRGF0YShGZXRjaEJvZHlP
d25lciYsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpIHsgcHJvbWlzZS5yZWplY3Q8RXhjZXB0
aW9uQ29kZT4oMCk7IH0KIAogICAgIGJvb2wgaXNEaXN0dXJiZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzRGlzdHVyYmVkOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFR5cGU6Ok5vbmU7IH0KQEAgLTczLDE2ICs2MywzMyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEZldGNoQm9keSBleHRyYWN0RnJvbUJvZHkoRmV0Y2hCb2R5Kik7CiAgICAgRmV0Y2hCb2R5KCkg
PSBkZWZhdWx0OwogCi1wcml2YXRlOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgcHJv
Y2Vzc0lmRW1wdHlPckRpc3R1cmJlZChET01Qcm9taXNlPFQsIEV4Y2VwdGlvbkNvZGU+Jik7Cisg
ICAgdm9pZCBsb2FkaW5nRmFpbGVkKCk7CisgICAgdm9pZCBsb2FkZWRBc0Jsb2IoQmxvYiYpOwog
Citwcml2YXRlOgogICAgIGVudW0gY2xhc3MgVHlwZSB7IE5vbmUsIFRleHQsIEJsb2IsIEZvcm1E
YXRhIH07CiAKICAgICBGZXRjaEJvZHkoUmVmPEJsb2I+JiYpOwogICAgIEZldGNoQm9keShSZWY8
RE9NRm9ybURhdGE+JiYpOwogICAgIEZldGNoQm9keShTdHJpbmcmJik7CiAKKyAgICBzdHJ1Y3Qg
Q29uc3VtZXIgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeyBUZXh0LCBCbG9iLCBKU09OLCBB
cnJheUJ1ZmZlciB9OworICAgICAgICBDb25zdW1lcihUeXBlIHQsIERlZmVycmVkV3JhcHBlciYm
IHApCisgICAgICAgICAgICA6IHR5cGUodCkKKyAgICAgICAgICAgICwgcHJvbWlzZShXVEZNb3Zl
KHApKSB7IH0KKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIERlZmVycmVkV3JhcHBlciBw
cm9taXNlOworICAgIH07CisgICAgdm9pZCBjb25zdW1lKEZldGNoQm9keU93bmVyJiwgQ29uc3Vt
ZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYmKTsKKwogICAgIFZlY3RvcjxjaGFyPiBleHRyYWN0
RnJvbVRleHQoKSBjb25zdDsKKyAgICBib29sIHByb2Nlc3NJZkVtcHR5T3JEaXN0dXJiZWQoQ29u
c3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYpOworICAgIHZvaWQgY29uc3VtZVRleHQoQ29u
c3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYmKTsKKyAgICB2b2lkIGNvbnN1bWVCbG9iKEZl
dGNoQm9keU93bmVyJiwgQ29uc3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYmKTsKKyAgICB2
b2lkIHJlc29sdmVBc0pTT04oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYs
IERlZmVycmVkV3JhcHBlciYmKTsKKyAgICBzdGF0aWMgRmV0Y2hMb2FkaW5nVHlwZSBsb2FkaW5n
VHlwZShDb25zdW1lcjo6VHlwZSk7CiAKICAgICBUeXBlIG1fdHlwZSA9IFR5cGU6Ok5vbmU7CiAg
ICAgU3RyaW5nIG1fbWltZVR5cGU7CkBAIC05Miw2ICs5OSw4IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPEJsb2I+IG1fYmxvYjsKICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IG1fZm9ybURhdGE7CiAg
ICAgU3RyaW5nIG1fdGV4dDsKKworICAgIE9wdGlvbmFsPENvbnN1bWVyPiBtX2NvbnN1bWVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaWRsCmluZGV4IGYzNGI5NzFlMjVmODRiMjY2OTQyYWI2ZTBjZDM2NGU4OTVj
YTEyMzAuLmI2NDUwMWQ2MzVhZmM3NDA1NzUyNzNiNDExNGQ2ZjdkNGU3MGQ4NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwKQEAgLTM3LDYgKzM3LDYgQEAg
aW50ZXJmYWNlIEZldGNoQm9keSB7CiAgICAgW05ld09iamVjdF0gUHJvbWlzZSBhcnJheUJ1ZmZl
cigpOwogICAgIFtOZXdPYmplY3RdIFByb21pc2UgYmxvYigpOwogICAgIFtOZXdPYmplY3RdIFBy
b21pc2UgZm9ybURhdGEoKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE5ld09iamVjdF0g
UHJvbWlzZSBqc29uKCk7CisgICAgW05ld09iamVjdF0gUHJvbWlzZSBqc29uKCk7CiAgICAgW05l
d09iamVjdF0gUHJvbWlzZSB0ZXh0KCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDUzNmM5NGE2NGMyOGIzYzc2ZDJhMzUwYWZhNDQz
ZTAyNzkwNTEzZmQuLjcyMDZlNmRmMGEwODhiN2E4ZjFiMGUzMDEyYmQ0MzI2ZDRiMWE4YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTM2
LDE3ICszNiwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gY2xhc3MgRmV0Y2hM
b2FkaW5nVHlwZSB7IFRleHQsIEFycmF5QnVmZmVyLCBCbG9iIH07CisKIGNsYXNzIEZldGNoQm9k
eU93bmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hCb2R5T3duZXI+LCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgRmV0Y2hCb2R5JiYpOwogCiAgICAgLy8gRXhwb3NlZCBCb2R5IEFQSQogICAgIGJv
b2wgaXNEaXN0dXJiZWQoKSBjb25zdCB7IHJldHVybiBtX2JvZHkuaXNEaXN0dXJiZWQoKTsgfQot
ICAgIHZvaWQgYXJyYXlCdWZmZXIoRmV0Y2hCb2R5OjpBcnJheUJ1ZmZlclByb21pc2UmJiBwcm9t
aXNlKSB7IG1fYm9keS5hcnJheUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpKTsgfQotICAgIHZvaWQg
Zm9ybURhdGEoRmV0Y2hCb2R5OjpGb3JtRGF0YVByb21pc2UmJiBwcm9taXNlKSB7IG1fYm9keS5m
b3JtRGF0YShXVEZNb3ZlKHByb21pc2UpKTsgfQotICAgIHZvaWQgYmxvYihGZXRjaEJvZHk6OkJs
b2JQcm9taXNlJiYgcHJvbWlzZSkgeyBtX2JvZHkuYmxvYihXVEZNb3ZlKHByb21pc2UpKTsgfQot
ICAgIHZvaWQganNvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEZldGNoQm9keTo6SlNPTlByb21p
c2UmJiBwcm9taXNlKSB7IG1fYm9keS5qc29uKHN0YXRlLCBXVEZNb3ZlKHByb21pc2UpKTsgfQot
ICAgIHZvaWQgdGV4dChGZXRjaEJvZHk6OlRleHRQcm9taXNlJiYgcHJvbWlzZSkgeyBtX2JvZHku
dGV4dChXVEZNb3ZlKHByb21pc2UpKTsgfQorICAgIHZvaWQgYXJyYXlCdWZmZXIoRGVmZXJyZWRX
cmFwcGVyJiYgcHJvbWlzZSkgeyBtX2JvZHkuYXJyYXlCdWZmZXIoKnRoaXMsIFdURk1vdmUocHJv
bWlzZSkpOyB9CisgICAgdm9pZCBibG9iKERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpIHsgbV9i
b2R5LmJsb2IoKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOyB9CisgICAgdm9pZCBmb3JtRGF0YShE
ZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKSB7IG1fYm9keS5mb3JtRGF0YSgqdGhpcywgV1RGTW92
ZShwcm9taXNlKSk7IH0KKyAgICB2b2lkIGpzb24oRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkg
eyBtX2JvZHkuanNvbigqdGhpcywgV1RGTW92ZShwcm9taXNlKSk7IH0KKyAgICB2b2lkIHRleHQo
RGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkgeyBtX2JvZHkudGV4dCgqdGhpcywgV1RGTW92ZShw
cm9taXNlKSk7IH0KKworICAgIHZvaWQgbG9hZEJsb2IoQmxvYiYsIEZldGNoTG9hZGluZ1R5cGUp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgRmV0Y2hCb2R5IG1fYm9keTsKQEAgLTU5LDYgKzYzLDE3IEBA
IGlubGluZSBGZXRjaEJvZHlPd25lcjo6RmV0Y2hCb2R5T3duZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgRmV0Y2hCb2R5CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKK2lu
bGluZSB2b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihCbG9iJiBibG9iLCBGZXRjaExvYWRp
bmdUeXBlIHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0gRmV0Y2hMb2FkaW5nVHlwZTo6QmxvYikg
eworICAgICAgICAvLyBGSVhNRTogQ2xvbmUgYmxvYi4KKyAgICAgICAgbV9ib2R5LmxvYWRlZEFz
QmxvYihibG9iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGJsb2IgbG9hZGluZy4KKyAgICBtX2JvZHkubG9hZGluZ0ZhaWxlZCgpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZWRlMGUxOWNhMWE2MTczMWI3NGEzNjE1MTMwNzFi
NGQ0MTY0ODhkNy4uNTJhZWNhMDVkMmQ1YWIzZWExN2E0MTRjMTllMjQ2OGMxNTk2OTk0ZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMTAg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBb
RmV0Y2ggQVBJXSBVc2UgRGVmZXJyZWRXcmFwcGVyIGRpcmVjdGx5IGluIEZldGNoQm9keSBwcm9t
aXNlIGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTUyOTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1
bWUtZW1wdHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWVtcHR5Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2Ut
Y29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS5odG1sOiBB
ZGRlZC4KKwogMjAxNi0wMy0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIGZvY3VzKCkgLyBibHVyKCkgc2hvdWxkIGJlIG9uIEhUTUxFbGVtZW50IC8gU1ZHRWxl
bWVudCwgbm90IEVsZW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWVtcHR5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45OWM0MWE1YTBiMzE5ZWM4ZTIwMWVlMjUxNmYzY2U4MTUxNjVkOWI1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtZW1wdHktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNyBAQAorCitQQVNTIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMgdGV4dCAKK1BB
U1MgQ29uc3VtZSByZXF1ZXN0J3MgYm9keSBhcyBibG9iIAorUEFTUyBDb25zdW1lIHJlcXVlc3Qn
cyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBDb25zdW1lIHJlcXVlc3QncyBib2R5IGFzIGpz
b24gCitGQUlMIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0
OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IHVuZGVmaW5lZAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9y
ZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS1lbXB0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUt
ZW1wdHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjI4YzI3MzkzYTU2YWY3MzA3N2EyMzJhMjY3NjczZjVj
YmU2ZjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtZW1wdHkuaHRt
bApAQCAtMCwwICsxLDgxIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAg
ICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlJlcXVlc3QgY29uc3VtZSBlbXB0
eSBib2RpZXM8L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZmV0
Y2guc3BlYy53aGF0d2cub3JnLyNyZXF1ZXN0Ij4KKyAgICA8bWV0YSBuYW1lPSJoZWxwIiBocmVm
PSJodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYm9keS1taXhpbiI+CisgICAgPG1ldGEg
bmFtZT0iYXV0aG9yIiB0aXRsZT0iQ2Fub24gUmVzZWFyY2ggRnJhbmNlIiBocmVmPSJodHRwczov
L3d3dy5jcmYuY2Fub24uZnIiPgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdD4K
KyAgICBmdW5jdGlvbiBjaGVja0JvZHlUZXh0KHJlcXVlc3QpIHsKKyAgICAgIHJldHVybiByZXF1
ZXN0LnRleHQoKS50aGVuKCBmdW5jdGlvbihib2R5QXNUZXh0KSB7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoYm9keUFzVGV4dCwgIiIsICJSZXNvbHZlZCB2YWx1ZSBzaG91bGQgYmUgZW1wdHkiKTsK
KyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlcXVlc3QuYm9keVVzZWQpOworICAgICAgfSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5QmxvYihyZXF1ZXN0KSB7CisgICAgICByZXR1cm4g
cmVxdWVzdC5ibG9iKCkudGhlbihmdW5jdGlvbihib2R5QXNCbG9iKSB7CisgICAgICAgIHZhciBw
cm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeworICAgICAg
ICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgICAgICAgIHJlYWRlci5vbmxv
YWQgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdCkK
KyAgICAgICAgICB9OworICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICByZWplY3QoIkJsb2IncyByZWFkZXIgZmFpbGVkIik7CisgICAgICAgICAgfTsK
KyAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChib2R5QXNCbG9iKTsKKyAgICAgICAgfSk7Cisg
ICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oZnVuY3Rpb24oYm9keSkgeworICAgICAgICAgIGFz
c2VydF9lcXVhbHMoYm9keSwgIiIsICJSZXNvbHZlZCB2YWx1ZSBzaG91bGQgYmUgZW1wdHkiKTsK
KyAgICAgICAgICBhc3NlcnRfZmFsc2UocmVxdWVzdC5ib2R5VXNlZCk7CisgICAgICAgIH0pOwor
ICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5QXJyYXlCdWZmZXIocmVx
dWVzdCkgeworICAgICAgcmV0dXJuIHJlcXVlc3QuYXJyYXlCdWZmZXIoKS50aGVuKCBmdW5jdGlv
bihib2R5QXNBcnJheUJ1ZmZlcikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGJvZHlBc0FycmF5
QnVmZmVyLmJ5dGVMZW5ndGgsIDAsICJSZXNvbHZlZCB2YWx1ZSBzaG91bGQgYmUgZW1wdHkiKTsK
KyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlcXVlc3QuYm9keVVzZWQpOworICAgICAgfSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5SlNPTihyZXF1ZXN0KSB7CisgICAgICByZXR1cm4g
cmVxdWVzdC5qc29uKCkudGhlbigKKyAgICAgICAgKGJvZHlBc0pTT04pID0+IHsKKyAgICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCJKU09OIHBhcnNpbmcgc2hvdWxkIGZhaWwiKTsKKyAgICAgICAg
fSwKKyAgICAgICAgKCkgPT4geworICAgICAgICAgIGFzc2VydF9mYWxzZShyZXF1ZXN0LmJvZHlV
c2VkKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5Rm9ybURh
dGEocmVxdWVzdCkgeworICAgICAgcmV0dXJuIHJlcXVlc3QuZm9ybURhdGEoKS50aGVuKGZ1bmN0
aW9uKGJvZHlBc0Zvcm1EYXRhKSB7CisgICAgICAgIGFzc2VydF90cnVlKGJvZHlBc0Zvcm1EYXRh
IGluc3RhbmNlb2YgRm9ybURhdGEsICJTaG91bGQgcmVjZWl2ZSBhIEZvcm1EYXRhIik7CisgICAg
ICAgIGFzc2VydF9mYWxzZShyZXF1ZXN0LmJvZHlVc2VkKTsKKyAgICAgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gY2hlY2tSZXF1ZXN0Qm9keShib2R5VHlwZSwgY2hlY2tGdW5jdGlvbikgewor
ICAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgdmFyIHJlcXVlc3Qg
PSBuZXcgUmVxdWVzdCgiIiwgeyJtZXRob2QiOiAiUE9TVCJ9KTsKKyAgICAgICAgYXNzZXJ0X2Zh
bHNlKHJlcXVlc3QuYm9keVVzZWQpOworICAgICAgICByZXR1cm4gY2hlY2tGdW5jdGlvbihyZXF1
ZXN0KTsKKyAgICAgIH0sICJDb25zdW1lIHJlcXVlc3QncyBib2R5IGFzICIgKyBib2R5VHlwZSk7
CisgICAgfQorCisgICAgdmFyIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7CisgICAgY2hlY2tS
ZXF1ZXN0Qm9keSgidGV4dCIsIGNoZWNrQm9keVRleHQpOworICAgIGNoZWNrUmVxdWVzdEJvZHko
ImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKKyAgICBjaGVja1JlcXVlc3RCb2R5KCJhcnJheUJ1ZmZl
ciIsIGNoZWNrQm9keUFycmF5QnVmZmVyKTsKKyAgICBjaGVja1JlcXVlc3RCb2R5KCJqc29uIiwg
Y2hlY2tCb2R5SlNPTik7CisgICAgY2hlY2tSZXF1ZXN0Qm9keSgiZm9ybURhdGEiLCBjaGVja0Jv
ZHlGb3JtRGF0YSk7CisKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9y
ZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzRhMTE2Zjk4
NTYxY2EwMTY4YjM2YzgxNmNlMGU0NzljMmU3NDBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2Uv
cmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKK1BB
U1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgdGV4dCAKK1BBU1MgQ29uc3VtZSByZXNwb25z
ZSdzIGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgYXJyYXlC
dWZmZXIgCitQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGpzb24gCitGQUlMIENvbnN1
bWUgcmVzcG9uc2UncyBib2R5IGFzIGZvcm1EYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJl
amVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9u
c2UtY29uc3VtZS1lbXB0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFhZjUyMWE4NDRmOGM4OGM4N2Y2YzhmMjljYzhlMGE1OWEyOWQyYjgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5Lmh0bWwKQEAgLTAs
MCArMSw4MSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEg
Y2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5SZXNwb25zZSBjb25zdW1lIGVtcHR5IGJvZGll
czwvdGl0bGU+CisgICAgPG1ldGEgbmFtZT0iaGVscCIgaHJlZj0iaHR0cHM6Ly9mZXRjaC5zcGVj
LndoYXR3Zy5vcmcvI3Jlc3BvbnNlIj4KKyAgICA8bWV0YSBuYW1lPSJoZWxwIiBocmVmPSJodHRw
czovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYm9keS1taXhpbiI+CisgICAgPG1ldGEgbmFtZT0i
YXV0aG9yIiB0aXRsZT0iQ2Fub24gUmVzZWFyY2ggRnJhbmNlIiBocmVmPSJodHRwczovL3d3dy5j
cmYuY2Fub24uZnIiPgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdD4KKyAgICBm
dW5jdGlvbiBjaGVja0JvZHlUZXh0KHJlc3BvbnNlKSB7CisgICAgICByZXR1cm4gcmVzcG9uc2Uu
dGV4dCgpLnRoZW4oIGZ1bmN0aW9uKGJvZHlBc1RleHQpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhib2R5QXNUZXh0LCAiIiwgIlJlc29sdmVkIHZhbHVlIHNob3VsZCBiZSBlbXB0eSIpOworICAg
ICAgICBhc3NlcnRfZmFsc2UocmVzcG9uc2UuYm9keVVzZWQpOworICAgICAgfSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gY2hlY2tCb2R5QmxvYihyZXNwb25zZSkgeworICAgICAgcmV0dXJuIHJl
c3BvbnNlLmJsb2IoKS50aGVuKGZ1bmN0aW9uKGJvZHlBc0Jsb2IpIHsKKyAgICAgICAgdmFyIHBy
b21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAg
ICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgICAgICAgcmVhZGVyLm9ubG9h
ZCA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KQor
ICAgICAgICAgIH07CisgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHJlamVjdCgiQmxvYidzIHJlYWRlciBmYWlsZWQiKTsKKyAgICAgICAgICB9Owor
ICAgICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGJvZHlBc0Jsb2IpOworICAgICAgICB9KTsKKyAg
ICAgICAgcmV0dXJuIHByb21pc2UudGhlbihmdW5jdGlvbihib2R5KSB7CisgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhib2R5LCAiIiwgIlJlc29sdmVkIHZhbHVlIHNob3VsZCBiZSBlbXB0eSIpOwor
ICAgICAgICAgIGFzc2VydF9mYWxzZShyZXNwb25zZS5ib2R5VXNlZCk7CisgICAgICAgIH0pOwor
ICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5QXJyYXlCdWZmZXIocmVz
cG9uc2UpIHsKKyAgICAgIHJldHVybiByZXNwb25zZS5hcnJheUJ1ZmZlcigpLnRoZW4oIGZ1bmN0
aW9uKGJvZHlBc0FycmF5QnVmZmVyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYm9keUFzQXJy
YXlCdWZmZXIuYnl0ZUxlbmd0aCwgMCwgIlJlc29sdmVkIHZhbHVlIHNob3VsZCBiZSBlbXB0eSIp
OworICAgICAgICBhc3NlcnRfZmFsc2UocmVzcG9uc2UuYm9keVVzZWQpOworICAgICAgfSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5SlNPTihyZXNwb25zZSkgeworICAgICAgcmV0
dXJuIHJlc3BvbnNlLmpzb24oKS50aGVuKAorICAgICAgICAoYm9keUFzSlNPTikgPT4geworICAg
ICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkpTT04gcGFyc2luZyBzaG91bGQgZmFpbCIpOworICAg
ICAgICB9LAorICAgICAgICAoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlc3BvbnNl
LmJvZHlVc2VkKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5
Rm9ybURhdGEocmVzcG9uc2UpIHsKKyAgICAgIHJldHVybiByZXNwb25zZS5mb3JtRGF0YSgpLnRo
ZW4oZnVuY3Rpb24oYm9keUFzRm9ybURhdGEpIHsKKyAgICAgICAgYXNzZXJ0X3RydWUoYm9keUFz
Rm9ybURhdGEgaW5zdGFuY2VvZiBGb3JtRGF0YSwgIlNob3VsZCByZWNlaXZlIGEgRm9ybURhdGEi
KTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlc3BvbnNlLmJvZHlVc2VkKTsKKyAgICAgfSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tSZXNwb25zZUJvZHkoYm9keVR5cGUsIGNoZWNrRnVu
Y3Rpb24pIHsKKyAgICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHZh
ciByZXNwb25zZSA9IG5ldyBSZXNwb25zZSgpOworICAgICAgICBhc3NlcnRfZmFsc2UocmVzcG9u
c2UuYm9keVVzZWQpOworICAgICAgICByZXR1cm4gY2hlY2tGdW5jdGlvbihyZXNwb25zZSk7Cisg
ICAgICB9LCAiQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgIiArIGJvZHlUeXBlKTsKKyAgICB9
CisKKyAgICB2YXIgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsKKyAgICBjaGVja1Jlc3BvbnNl
Qm9keSgidGV4dCIsIGNoZWNrQm9keVRleHQpOworICAgIGNoZWNrUmVzcG9uc2VCb2R5KCJibG9i
IiwgY2hlY2tCb2R5QmxvYik7CisgICAgY2hlY2tSZXNwb25zZUJvZHkoImFycmF5QnVmZmVyIiwg
Y2hlY2tCb2R5QXJyYXlCdWZmZXIpOworICAgIGNoZWNrUmVzcG9uc2VCb2R5KCJqc29uIiwgY2hl
Y2tCb2R5SlNPTik7CisgICAgY2hlY2tSZXNwb25zZUJvZHkoImZvcm1EYXRhIiwgY2hlY2tCb2R5
Rm9ybURhdGEpOworCisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273694</attachid>
            <date>2016-03-11 00:13:12 -0800</date>
            <delta_ts>2016-03-11 02:33:07 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-155291-20160311091258.patch</filename>
            <type>text/plain</type>
            <size>23757</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGNlNDAxNzdhMTAwMjgy
Y2I4NTExYTkyMzgyMWY3Yzk2NDBiMWI5Zi4uZmQzZGNlNDg4ZTQ4NzIxNmNjMmI0MWEyY2MyNzBh
YjhkYmI3M2MyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTAzLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW0ZldGNo
IEFQSV0gVXNlIERlZmVycmVkV3JhcHBlciBkaXJlY3RseSBpbiBGZXRjaEJvZHkgcHJvbWlzZSBo
YW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU1MjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTW92
ZWQgZnJvbSB0eXBlZCBET01Qcm9taXNlIHRvIERlZmVycmVkV3JhcHBlciBhcyB0aGVyZSBjYW4g
b25seSBiZSBvbmUgcHJvbWlzZSByZXNvbHZlZC4KKyAgICAgICAgU3RhcnRlZCBwcmVwYXJpbmcg
dGhlIGhhbmRsaW5nIG9mIGJsb2JzIHRyYW5zbGF0aW9uIHRvIG90aGVyIHJlc29sdmVkIHR5cGVz
LgorCisgICAgICAgIEZpeGVkIHRoZSBjYXNlIG9mIGVtcHR5IGJvZHksIGluIHdoaWNoIGNhc2Ug
cHJvbWlzZXMgc2hvdWxkIHJlc29sdmUgd2l0aCBlbXB0eSBvYmplY3RzIChzdHJpbmdzLCBidWZm
ZXJzLi4uKSBhbmQgbm90IG51bGwuCisKKyAgICAgICAgQWRkZWQgQ29uc3VtZXIgc3RydWN0dXJl
IHRvIGhhbmRsZSBhc3luY2hyb25vdXMgcmVzb2x1dGlvbi9yZWplY3Rpb24gb2YgcHJvbWlzZXMu
CisgICAgICAgIEFkZGVkIHByZWxpbWluYXJ5IEFQSSB0byByZXNvbHZlIHByb21pc2VzIGJhc2Vk
IG9uIGRhdGEgc3RvcmVkIGFzIGEgQmxvYi4KKyAgICAgICAgRmV0Y2hCb2R5T3duZXIgd2lsbCBi
ZSByZXNwb25zaWJsZSB0byBkby9zdG9wIGJsb2IgbG9hZGluZy4KKworICAgICAgICBUZXN0czog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0
LWNvbnN1bWUtZW1wdHkuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHk6OnByb2Nlc3NJZkVtcHR5T3JEaXN0dXJiZWQpOiBGaXhlZCBlbXB0eSBi
b2R5IGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmFycmF5QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6YmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6Ompzb24pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9hZGlu
Z1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQmxvYik6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnJlc29sdmVBc0pTT04pOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Ojpsb2FkaW5nRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eTo6bG9hZGVkQXNCbG9iKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OkNvbnN1bWVyOjpDb25zdW1lcik6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjphcnJheUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYik6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHlPd25lcjo6Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3du
ZXI6Ompzb24pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKToKKwogMjAxNi0wMy0xMCAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S10gRml4IHJlbmRlcmluZyBvZiBzbGlkZXIgaW5wdXQgZWxlbWVudHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCBmZGJhNWNkY2RkMWVhN2UxM2ZiY2Fl
NjMwZTczZmZhMWU0OGE3ZmI2Li5mNmE0MjE2MDg1YzVhNzlmM2NhZmY0M2QyNmE0ZDM0NDczZWI2
ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0z
MSw4ICszMSwxMCBAQAogCiAjaWYgRU5BQkxFKEZFVENIX0FQSSkKIAorI2luY2x1ZGUgIkRPTVJl
cXVlc3RTdGF0ZS5oIgogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCisjaW5jbHVkZSAiRmV0Y2hCb2R5T3duZXIuaCIKICNpbmNsdWRlICJIVFRQUGFy
c2Vycy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTRE9NRm9ybURhdGEuaCIK
QEAgLTgyLDk2ICs4NCwxMzYgQEAgRmV0Y2hCb2R5IEZldGNoQm9keTo6ZXh0cmFjdEZyb21Cb2R5
KEZldGNoQm9keSogYm9keSkKICAgICByZXR1cm4gRmV0Y2hCb2R5KFdURk1vdmUoKmJvZHkpKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgRmV0Y2hCb2R5Ojpwcm9jZXNz
SWZFbXB0eU9yRGlzdHVyYmVkKERPTVByb21pc2U8VCwgRXhjZXB0aW9uQ29kZT4mIHByb21pc2Up
Citib29sIEZldGNoQm9keTo6cHJvY2Vzc0lmRW1wdHlPckRpc3R1cmJlZChDb25zdW1lcjo6VHlw
ZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImIHByb21pc2UpCiB7CiAgICAgaWYgKG1fdHlwZSA9PSBU
eXBlOjpOb25lKSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZShUKCkpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgQ29uc3VtZXI6
OlR5cGU6OlRleHQ6CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoU3RyaW5nKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgQ29uc3VtZXI6OlR5cGU6OkJsb2I6
CisgICAgICAgICAgICBwcm9taXNlLnJlc29sdmU8UmVmUHRyPEJsb2I+PihCbG9iOjpjcmVhdGUo
KSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBDb25zdW1lcjo6VHlw
ZTo6SlNPTjoKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFNZTlRB
WF9FUlIpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgQ29uc3VtZXI6
OlR5cGU6OkFycmF5QnVmZmVyOgorICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKEFycmF5QnVm
ZmVyOjpjcmVhdGUobnVsbHB0ciwgMCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
ICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KDApOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH07CiAgICAgfQogCiAgICAgaWYgKG1faXNEaXN0dXJiZWQpIHsKLSAg
ICAgICAgcHJvbWlzZS5yZWplY3QoVHlwZUVycm9yKTsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Q8
RXhjZXB0aW9uQ29kZT4oVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIG1faXNEaXN0dXJiZWQgPSB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBG
ZXRjaEJvZHk6OmFycmF5QnVmZmVyKEFycmF5QnVmZmVyUHJvbWlzZSYmIHByb21pc2UpCit2b2lk
IEZldGNoQm9keTo6YXJyYXlCdWZmZXIoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBEZWZlcnJlZFdy
YXBwZXImJiBwcm9taXNlKQogewotICAgIGlmIChwcm9jZXNzSWZFbXB0eU9yRGlzdHVyYmVkKHBy
b21pc2UpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV90eXBlID09IFR5cGU6OlRleHQp
IHsKLSAgICAgICAgLy8gRklYTUU6IElkZWFsbHkgd2Ugd291bGQgbGlrZSB0byBoYXZlIGFuIEFy
cmF5QnVmZmVyIGRpcmVjdGx5IGZyb20gbV90ZXh0LgotICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0
YSA9IGV4dHJhY3RGcm9tVGV4dCgpOwotICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlKGJ1ZmZlcik7CisgICAgaWYgKHByb2Nlc3NJZkVtcHR5T3JEaXN0
dXJiZWQoQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVmZmVyLCBwcm9taXNlKSkKICAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0eXBlcy4KLSAgICBwcm9t
aXNlLnJlamVjdCgwKTsKKyAgICBjb25zdW1lKG93bmVyLCBDb25zdW1lcjo6VHlwZTo6QXJyYXlC
dWZmZXIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIEZldGNoQm9keTo6Zm9ybURhdGEo
Rm9ybURhdGFQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgRmV0Y2hCb2R5OjpibG9iKEZldGNoQm9k
eU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsKLSAgICBpZiAobV90
eXBlID09IFR5cGU6Ok5vbmUgfHwgbV9pc0Rpc3R1cmJlZCkgewotICAgICAgICBwcm9taXNlLnJl
amVjdChUeXBlRXJyb3IpOworICAgIGlmIChwcm9jZXNzSWZFbXB0eU9yRGlzdHVyYmVkKENvbnN1
bWVyOjpUeXBlOjpCbG9iLCBwcm9taXNlKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBt
X2lzRGlzdHVyYmVkID0gdHJ1ZTsKIAotICAgIC8vIEZJWE1FOiBTdXBwb3J0IG90aGVyIHR5cGVz
LgotICAgIHByb21pc2UucmVqZWN0KDApOworICAgIGNvbnN1bWUob3duZXIsIENvbnN1bWVyOjpU
eXBlOjpCbG9iLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotdm9pZCBGZXRjaEJvZHk6OmJsb2Io
QmxvYlByb21pc2UmJiBwcm9taXNlKQordm9pZCBGZXRjaEJvZHk6Ompzb24oRmV0Y2hCb2R5T3du
ZXImIG93bmVyLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewotICAgIGlmIChwcm9jZXNz
SWZFbXB0eU9yRGlzdHVyYmVkKHByb21pc2UpKQorICAgIGlmIChwcm9jZXNzSWZFbXB0eU9yRGlz
dHVyYmVkKENvbnN1bWVyOjpUeXBlOjpKU09OLCBwcm9taXNlKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpCbG9iKSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2
ZShtX2Jsb2IpOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGlmIChtX3R5cGUgPT0gVHlw
ZTo6VGV4dCkgewotICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVk
Q29udGVudFR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlKSk7Ci0g
ICAgICAgIHByb21pc2UucmVzb2x2ZShCbG9iOjpjcmVhdGUoZXh0cmFjdEZyb21UZXh0KCksIGNv
bnRlbnRUeXBlKSk7CisgICAgICAgIHJlc29sdmVBc0pTT04ob3duZXIuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBtX3RleHQsIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgb3RoZXIgdHlwZXMuCi0gICAgcHJvbWlzZS5y
ZWplY3QoMCk7CisgICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkpTT04sIFdURk1v
dmUocHJvbWlzZSkpOwogfQogCi12b2lkIEZldGNoQm9keTo6dGV4dChUZXh0UHJvbWlzZSYmIHBy
b21pc2UpCit2b2lkIEZldGNoQm9keTo6dGV4dChGZXRjaEJvZHlPd25lciYgb3duZXIsIERlZmVy
cmVkV3JhcHBlciYmIHByb21pc2UpCiB7Ci0gICAgaWYgKHByb2Nlc3NJZkVtcHR5T3JEaXN0dXJi
ZWQocHJvbWlzZSkpCisgICAgaWYgKHByb2Nlc3NJZkVtcHR5T3JEaXN0dXJiZWQoQ29uc3VtZXI6
OlR5cGU6OlRleHQsIHByb21pc2UpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV90eXBl
ID09IFR5cGU6OlRleHQpIHsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKG1fdGV4dCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgLy8gRklYTUU6IFN1cHBvcnQgb3RoZXIgdHlwZXMuCi0g
ICAgcHJvbWlzZS5yZWplY3QoMCk7CisgICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6
OlRleHQsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIEZldGNoQm9keTo6anNvbihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTT05Qcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgRmV0Y2hCb2R5
Ojpjb25zdW1lKEZldGNoQm9keU93bmVyJiBvd25lciwgQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVm
ZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsKLSAgICBpZiAocHJvY2Vzc0lmRW1wdHlPckRpc3R1
cmJlZChwcm9taXNlKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKG1fdHlwZSA9PSBUeXBl
OjpUZXh0KSB7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZSA9IEpTQzo6SlNPTlBhcnNlKCZz
dGF0ZSwgbV90ZXh0KTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHByb21pc2Uu
cmVqZWN0KFNZTlRBWF9FUlIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcm9taXNlLnJl
c29sdmUodmFsdWUpOworICAgICAgICBjb25zdW1lVGV4dCh0eXBlLCBXVEZNb3ZlKHByb21pc2Up
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAobV90eXBlID09IFR5cGU6OkJsb2Ip
IHsKKyAgICAgICAgY29uc3VtZUJsb2Iob3duZXIsIHR5cGUsIFdURk1vdmUocHJvbWlzZSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgb3RoZXIgdHlw
ZXMuCi0gICAgcHJvbWlzZS5yZWplY3QoMCk7CisgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9u
Q29kZT4oMCk7Cit9CisKK3ZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lVGV4dChDb25zdW1lcjo6VHlw
ZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQoreworICAgIEFTU0VSVCh0eXBlID09
IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlciB8fCB0eXBlID09IENvbnN1bWVyOjpUeXBlOjpC
bG9iKTsKKworICAgIGlmICh0eXBlID09IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcikgewor
ICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YSA9IGV4dHJhY3RGcm9tVGV4dCgpOworICAgICAgICBw
cm9taXNlLnJlc29sdmU8UmVmUHRyPEFycmF5QnVmZmVyPj4oQXJyYXlCdWZmZXI6OmNyZWF0ZShk
YXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBT
dHJpbmcgY29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFjdE1J
TUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlKSk7CisgICAgcHJvbWlzZS5yZXNvbHZlPFJl
ZlB0cjxCbG9iPj4oQmxvYjo6Y3JlYXRlKGV4dHJhY3RGcm9tVGV4dCgpLCBjb250ZW50VHlwZSkp
OworfQorCitGZXRjaExvYWRpbmdUeXBlIEZldGNoQm9keTo6bG9hZGluZ1R5cGUoQ29uc3VtZXI6
OlR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIENvbnN1bWVyOjpU
eXBlOjpKU09OOgorICAgIGNhc2UgQ29uc3VtZXI6OlR5cGU6OlRleHQ6CisgICAgICAgIHJldHVy
biBGZXRjaExvYWRpbmdUeXBlOjpUZXh0OworICAgIGNhc2UgQ29uc3VtZXI6OlR5cGU6OkJsb2I6
CisgICAgICAgIHJldHVybiBGZXRjaExvYWRpbmdUeXBlOjpCbG9iOworICAgIGNhc2UgQ29uc3Vt
ZXI6OlR5cGU6OkFycmF5QnVmZmVyOgorICAgICAgICByZXR1cm4gRmV0Y2hMb2FkaW5nVHlwZTo6
QXJyYXlCdWZmZXI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiBGZXRjaExvYWRpbmdUeXBlOjpBcnJheUJ1ZmZlcjsKKyAgICB9Owor
fQorCit2b2lkIEZldGNoQm9keTo6Y29uc3VtZUJsb2IoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBD
b25zdW1lcjo6VHlwZSB0eXBlLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQoreworICAgIEFT
U0VSVChtX2Jsb2IpOworCisgICAgbV9jb25zdW1lciA9IHsgdHlwZSwgV1RGTW92ZShwcm9taXNl
KSB9OworICAgIG93bmVyLmxvYWRCbG9iKCptX2Jsb2IsIGxvYWRpbmdUeXBlKHR5cGUpKTsKK30K
Kwordm9pZCBGZXRjaEJvZHk6OnJlc29sdmVBc0pTT04oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQor
eworICAgIERPTVJlcXVlc3RTdGF0ZSBzdGF0ZShjb250ZXh0KTsKKyAgICBKU0M6OkpTVmFsdWUg
dmFsdWUgPSBKU0M6OkpTT05QYXJzZShzdGF0ZS5leGVjKCksIGRhdGEpOworICAgIGlmICghdmFs
dWUpCisgICAgICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFNZTlRBWF9FUlIpOwor
ICAgIGVsc2UKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHZhbHVlKTsKIH0KIAogVmVjdG9yPGNo
YXI+IEZldGNoQm9keTo6ZXh0cmFjdEZyb21UZXh0KCkgY29uc3QKQEAgLTE4NCw2ICsyMjYsMjAg
QEAgVmVjdG9yPGNoYXI+IEZldGNoQm9keTo6ZXh0cmFjdEZyb21UZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKK3ZvaWQgRmV0Y2hCb2R5Ojpsb2FkaW5nRmFpbGVkKCkKK3sKKyAg
ICBBU1NFUlQobV9jb25zdW1lcik7CisgICAgbV9jb25zdW1lci0+cHJvbWlzZS5yZWplY3Q8RXhj
ZXB0aW9uQ29kZT4oMCk7CisgICAgbV9jb25zdW1lciA9IE51bGxvcHQ7Cit9CisKK3ZvaWQgRmV0
Y2hCb2R5Ojpsb2FkZWRBc0Jsb2IoQmxvYiYgYmxvYikKK3sKKyAgICBBU1NFUlQobV9jb25zdW1l
cik7CisgICAgbV9jb25zdW1lci0+cHJvbWlzZS5yZXNvbHZlKCZibG9iKTsKKyAgICBtX2NvbnN1
bWVyID0gTnVsbG9wdDsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEZFVENIX0FQSSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDk3MWM5Njk4NzUzZDJi
ZGJkODY4MjA1NTMwMGYwNThlMWUwNzUxNzAuLjAxMmIzMDQ5ZDg0OGUyYTFiNjI4NDliOGU2OTdm
MWY1ZTE5OWE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaApA
QCAtMzYsMzIgKzM2LDIyIEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewotY2xhc3MgQXJyYXlCdWZmZXI7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU1Zh
bHVlOwogfTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEaWN0aW9uYXJ5OwotdHlw
ZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKK2NsYXNzIEZldGNoQm9keU93bmVyOworZW51bSBjbGFz
cyBGZXRjaExvYWRpbmdUeXBlOwogCiBjbGFzcyBGZXRjaEJvZHkgewogcHVibGljOgotICAgIHR5
cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4sIEV4Y2VwdGlvbkNvZGU+
IEFycmF5QnVmZmVyUHJvbWlzZTsKLSAgICB2b2lkIGFycmF5QnVmZmVyKEFycmF5QnVmZmVyUHJv
bWlzZSYmKTsKLQotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8RE9NRm9ybURhdGE+LCBF
eGNlcHRpb25Db2RlPiBGb3JtRGF0YVByb21pc2U7Ci0gICAgdm9pZCBmb3JtRGF0YShGb3JtRGF0
YVByb21pc2UmJik7Ci0KLSAgICB0eXBlZGVmIERPTVByb21pc2U8UmVmUHRyPEJsb2I+LCBFeGNl
cHRpb25Db2RlPiBCbG9iUHJvbWlzZTsKLSAgICB2b2lkIGJsb2IoQmxvYlByb21pc2UmJik7Ci0K
LSAgICB0eXBlZGVmIERPTVByb21pc2U8SlNDOjpKU1ZhbHVlLCBFeGNlcHRpb25Db2RlPiBKU09O
UHJvbWlzZTsKLSAgICB2b2lkIGpzb24oSlNDOjpFeGVjU3RhdGUmLCBKU09OUHJvbWlzZSYmKTsK
LQotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxTdHJpbmcsIEV4Y2VwdGlvbkNvZGU+IFRleHRQcm9t
aXNlOwotICAgIHZvaWQgdGV4dChUZXh0UHJvbWlzZSYmKTsKKyAgICB2b2lkIGFycmF5QnVmZmVy
KEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOworICAgIHZvaWQgYmxvYihGZXRj
aEJvZHlPd25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKKyAgICB2b2lkIGpzb24oRmV0Y2hCb2R5
T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7CisgICAgdm9pZCB0ZXh0KEZldGNoQm9keU93bmVy
JiwgRGVmZXJyZWRXcmFwcGVyJiYpOworICAgIHZvaWQgZm9ybURhdGEoRmV0Y2hCb2R5T3duZXIm
LCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKSB7IHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNv
ZGU+KDApOyB9CiAKICAgICBib29sIGlzRGlzdHVyYmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Rp
c3R1cmJlZDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBU
eXBlOjpOb25lOyB9CkBAIC03MywxNiArNjMsMzAgQEAgcHVibGljOgogICAgIHN0YXRpYyBGZXRj
aEJvZHkgZXh0cmFjdEZyb21Cb2R5KEZldGNoQm9keSopOwogICAgIEZldGNoQm9keSgpID0gZGVm
YXVsdDsKIAotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHByb2Nlc3NJ
ZkVtcHR5T3JEaXN0dXJiZWQoRE9NUHJvbWlzZTxULCBFeGNlcHRpb25Db2RlPiYpOworICAgIHZv
aWQgbG9hZGluZ0ZhaWxlZCgpOworICAgIHZvaWQgbG9hZGVkQXNCbG9iKEJsb2ImKTsKIAorcHJp
dmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25lLCBUZXh0LCBCbG9iLCBGb3JtRGF0YSB9
OwogCiAgICAgRmV0Y2hCb2R5KFJlZjxCbG9iPiYmKTsKICAgICBGZXRjaEJvZHkoUmVmPERPTUZv
cm1EYXRhPiYmKTsKICAgICBGZXRjaEJvZHkoU3RyaW5nJiYpOwogCisgICAgc3RydWN0IENvbnN1
bWVyIHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsgVGV4dCwgQmxvYiwgSlNPTiwgQXJyYXlC
dWZmZXIgfTsKKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIERlZmVycmVkV3JhcHBlciBw
cm9taXNlOworICAgIH07CisgICAgdm9pZCBjb25zdW1lKEZldGNoQm9keU93bmVyJiwgQ29uc3Vt
ZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYmKTsKKwogICAgIFZlY3RvcjxjaGFyPiBleHRyYWN0
RnJvbVRleHQoKSBjb25zdDsKKyAgICBib29sIHByb2Nlc3NJZkVtcHR5T3JEaXN0dXJiZWQoQ29u
c3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYpOworICAgIHZvaWQgY29uc3VtZVRleHQoQ29u
c3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYmKTsKKyAgICB2b2lkIGNvbnN1bWVCbG9iKEZl
dGNoQm9keU93bmVyJiwgQ29uc3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYmKTsKKyAgICB2
b2lkIHJlc29sdmVBc0pTT04oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYs
IERlZmVycmVkV3JhcHBlciYmKTsKKyAgICBzdGF0aWMgRmV0Y2hMb2FkaW5nVHlwZSBsb2FkaW5n
VHlwZShDb25zdW1lcjo6VHlwZSk7CiAKICAgICBUeXBlIG1fdHlwZSA9IFR5cGU6Ok5vbmU7CiAg
ICAgU3RyaW5nIG1fbWltZVR5cGU7CkBAIC05Miw2ICs5Niw4IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPEJsb2I+IG1fYmxvYjsKICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IG1fZm9ybURhdGE7CiAg
ICAgU3RyaW5nIG1fdGV4dDsKKworICAgIE9wdGlvbmFsPENvbnN1bWVyPiBtX2NvbnN1bWVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaWRsCmluZGV4IGYzNGI5NzFlMjVmODRiMjY2OTQyYWI2ZTBjZDM2NGU4OTVj
YTEyMzAuLmI2NDUwMWQ2MzVhZmM3NDA1NzUyNzNiNDExNGQ2ZjdkNGU3MGQ4NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwKQEAgLTM3LDYgKzM3LDYgQEAg
aW50ZXJmYWNlIEZldGNoQm9keSB7CiAgICAgW05ld09iamVjdF0gUHJvbWlzZSBhcnJheUJ1ZmZl
cigpOwogICAgIFtOZXdPYmplY3RdIFByb21pc2UgYmxvYigpOwogICAgIFtOZXdPYmplY3RdIFBy
b21pc2UgZm9ybURhdGEoKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIE5ld09iamVjdF0g
UHJvbWlzZSBqc29uKCk7CisgICAgW05ld09iamVjdF0gUHJvbWlzZSBqc29uKCk7CiAgICAgW05l
d09iamVjdF0gUHJvbWlzZSB0ZXh0KCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDUzNmM5NGE2NGMyOGIzYzc2ZDJhMzUwYWZhNDQz
ZTAyNzkwNTEzZmQuLjcyMDZlNmRmMGEwODhiN2E4ZjFiMGUzMDEyYmQ0MzI2ZDRiMWE4YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTM2
LDE3ICszNiwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0gY2xhc3MgRmV0Y2hM
b2FkaW5nVHlwZSB7IFRleHQsIEFycmF5QnVmZmVyLCBCbG9iIH07CisKIGNsYXNzIEZldGNoQm9k
eU93bmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hCb2R5T3duZXI+LCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBGZXRjaEJvZHlPd25lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgRmV0Y2hCb2R5JiYpOwogCiAgICAgLy8gRXhwb3NlZCBCb2R5IEFQSQogICAgIGJv
b2wgaXNEaXN0dXJiZWQoKSBjb25zdCB7IHJldHVybiBtX2JvZHkuaXNEaXN0dXJiZWQoKTsgfQot
ICAgIHZvaWQgYXJyYXlCdWZmZXIoRmV0Y2hCb2R5OjpBcnJheUJ1ZmZlclByb21pc2UmJiBwcm9t
aXNlKSB7IG1fYm9keS5hcnJheUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpKTsgfQotICAgIHZvaWQg
Zm9ybURhdGEoRmV0Y2hCb2R5OjpGb3JtRGF0YVByb21pc2UmJiBwcm9taXNlKSB7IG1fYm9keS5m
b3JtRGF0YShXVEZNb3ZlKHByb21pc2UpKTsgfQotICAgIHZvaWQgYmxvYihGZXRjaEJvZHk6OkJs
b2JQcm9taXNlJiYgcHJvbWlzZSkgeyBtX2JvZHkuYmxvYihXVEZNb3ZlKHByb21pc2UpKTsgfQot
ICAgIHZvaWQganNvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEZldGNoQm9keTo6SlNPTlByb21p
c2UmJiBwcm9taXNlKSB7IG1fYm9keS5qc29uKHN0YXRlLCBXVEZNb3ZlKHByb21pc2UpKTsgfQot
ICAgIHZvaWQgdGV4dChGZXRjaEJvZHk6OlRleHRQcm9taXNlJiYgcHJvbWlzZSkgeyBtX2JvZHku
dGV4dChXVEZNb3ZlKHByb21pc2UpKTsgfQorICAgIHZvaWQgYXJyYXlCdWZmZXIoRGVmZXJyZWRX
cmFwcGVyJiYgcHJvbWlzZSkgeyBtX2JvZHkuYXJyYXlCdWZmZXIoKnRoaXMsIFdURk1vdmUocHJv
bWlzZSkpOyB9CisgICAgdm9pZCBibG9iKERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpIHsgbV9i
b2R5LmJsb2IoKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOyB9CisgICAgdm9pZCBmb3JtRGF0YShE
ZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKSB7IG1fYm9keS5mb3JtRGF0YSgqdGhpcywgV1RGTW92
ZShwcm9taXNlKSk7IH0KKyAgICB2b2lkIGpzb24oRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkg
eyBtX2JvZHkuanNvbigqdGhpcywgV1RGTW92ZShwcm9taXNlKSk7IH0KKyAgICB2b2lkIHRleHQo
RGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkgeyBtX2JvZHkudGV4dCgqdGhpcywgV1RGTW92ZShw
cm9taXNlKSk7IH0KKworICAgIHZvaWQgbG9hZEJsb2IoQmxvYiYsIEZldGNoTG9hZGluZ1R5cGUp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgRmV0Y2hCb2R5IG1fYm9keTsKQEAgLTU5LDYgKzYzLDE3IEBA
IGlubGluZSBGZXRjaEJvZHlPd25lcjo6RmV0Y2hCb2R5T3duZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgRmV0Y2hCb2R5CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKK2lu
bGluZSB2b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihCbG9iJiBibG9iLCBGZXRjaExvYWRp
bmdUeXBlIHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0gRmV0Y2hMb2FkaW5nVHlwZTo6QmxvYikg
eworICAgICAgICAvLyBGSVhNRTogQ2xvbmUgYmxvYi4KKyAgICAgICAgbV9ib2R5LmxvYWRlZEFz
QmxvYihibG9iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGJsb2IgbG9hZGluZy4KKyAgICBtX2JvZHkubG9hZGluZ0ZhaWxlZCgpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hfQVBJKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZWRlMGUxOWNhMWE2MTczMWI3NGEzNjE1MTMwNzFi
NGQ0MTY0ODhkNy4uNjY3Y2JhNmEzMzI4ZGFjOGZhNDgwYjU2MjA5MTA0NmY1N2U4NTU1YyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDMtMTEg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBb
RmV0Y2ggQVBJXSBVc2UgRGVmZXJyZWRXcmFwcGVyIGRpcmVjdGx5IGluIEZldGNoQm9keSBwcm9t
aXNlIGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTUyOTEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUt
ZW1wdHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWVtcHR5Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29u
c3VtZS1lbXB0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS5odG1sOiBBZGRl
ZC4KKwogMjAxNi0wMy0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIGZvY3VzKCkgLyBibHVyKCkgc2hvdWxkIGJlIG9uIEhUTUxFbGVtZW50IC8gU1ZHRWxlbWVu
dCwgbm90IEVsZW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWVtcHR5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45OWM0MWE1YTBiMzE5ZWM4ZTIwMWVlMjUxNmYzY2U4MTUxNjVkOWI1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtZW1wdHktZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNyBAQAorCitQQVNTIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMgdGV4dCAKK1BBU1Mg
Q29uc3VtZSByZXF1ZXN0J3MgYm9keSBhcyBibG9iIAorUEFTUyBDb25zdW1lIHJlcXVlc3QncyBi
b2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBDb25zdW1lIHJlcXVlc3QncyBib2R5IGFzIGpzb24g
CitGQUlMIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMgZm9ybURhdGEgcHJvbWlzZV90ZXN0OiBV
bmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IHVuZGVmaW5lZAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXF1
ZXN0L3JlcXVlc3QtY29uc3VtZS1lbXB0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtZW1w
dHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iMjI4YzI3MzkzYTU2YWY3MzA3N2EyMzJhMjY3NjczZjVjYmU2
ZjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtZW1wdHkuaHRtbApA
QCAtMCwwICsxLDgxIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlJlcXVlc3QgY29uc3VtZSBlbXB0eSBi
b2RpZXM8L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9ImhlbHAiIGhyZWY9Imh0dHBzOi8vZmV0Y2gu
c3BlYy53aGF0d2cub3JnLyNyZXF1ZXN0Ij4KKyAgICA8bWV0YSBuYW1lPSJoZWxwIiBocmVmPSJo
dHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYm9keS1taXhpbiI+CisgICAgPG1ldGEgbmFt
ZT0iYXV0aG9yIiB0aXRsZT0iQ2Fub24gUmVzZWFyY2ggRnJhbmNlIiBocmVmPSJodHRwczovL3d3
dy5jcmYuY2Fub24uZnIiPgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdD4KKyAg
ICBmdW5jdGlvbiBjaGVja0JvZHlUZXh0KHJlcXVlc3QpIHsKKyAgICAgIHJldHVybiByZXF1ZXN0
LnRleHQoKS50aGVuKCBmdW5jdGlvbihib2R5QXNUZXh0KSB7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoYm9keUFzVGV4dCwgIiIsICJSZXNvbHZlZCB2YWx1ZSBzaG91bGQgYmUgZW1wdHkiKTsKKyAg
ICAgICAgYXNzZXJ0X2ZhbHNlKHJlcXVlc3QuYm9keVVzZWQpOworICAgICAgfSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gY2hlY2tCb2R5QmxvYihyZXF1ZXN0KSB7CisgICAgICByZXR1cm4gcmVx
dWVzdC5ibG9iKCkudGhlbihmdW5jdGlvbihib2R5QXNCbG9iKSB7CisgICAgICAgIHZhciBwcm9t
aXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAg
IHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgICAgICAgIHJlYWRlci5vbmxvYWQg
PSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdCkKKyAg
ICAgICAgICB9OworICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICByZWplY3QoIkJsb2IncyByZWFkZXIgZmFpbGVkIik7CisgICAgICAgICAgfTsKKyAg
ICAgICAgICByZWFkZXIucmVhZEFzVGV4dChib2R5QXNCbG9iKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHJldHVybiBwcm9taXNlLnRoZW4oZnVuY3Rpb24oYm9keSkgeworICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoYm9keSwgIiIsICJSZXNvbHZlZCB2YWx1ZSBzaG91bGQgYmUgZW1wdHkiKTsKKyAg
ICAgICAgICBhc3NlcnRfZmFsc2UocmVxdWVzdC5ib2R5VXNlZCk7CisgICAgICAgIH0pOworICAg
ICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5QXJyYXlCdWZmZXIocmVxdWVz
dCkgeworICAgICAgcmV0dXJuIHJlcXVlc3QuYXJyYXlCdWZmZXIoKS50aGVuKCBmdW5jdGlvbihi
b2R5QXNBcnJheUJ1ZmZlcikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGJvZHlBc0FycmF5QnVm
ZmVyLmJ5dGVMZW5ndGgsIDAsICJSZXNvbHZlZCB2YWx1ZSBzaG91bGQgYmUgZW1wdHkiKTsKKyAg
ICAgICAgYXNzZXJ0X2ZhbHNlKHJlcXVlc3QuYm9keVVzZWQpOworICAgICAgfSk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gY2hlY2tCb2R5SlNPTihyZXF1ZXN0KSB7CisgICAgICByZXR1cm4gcmVx
dWVzdC5qc29uKCkudGhlbigKKyAgICAgICAgKGJvZHlBc0pTT04pID0+IHsKKyAgICAgICAgICBh
c3NlcnRfdW5yZWFjaGVkKCJKU09OIHBhcnNpbmcgc2hvdWxkIGZhaWwiKTsKKyAgICAgICAgfSwK
KyAgICAgICAgKCkgPT4geworICAgICAgICAgIGFzc2VydF9mYWxzZShyZXF1ZXN0LmJvZHlVc2Vk
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5Rm9ybURhdGEo
cmVxdWVzdCkgeworICAgICAgcmV0dXJuIHJlcXVlc3QuZm9ybURhdGEoKS50aGVuKGZ1bmN0aW9u
KGJvZHlBc0Zvcm1EYXRhKSB7CisgICAgICAgIGFzc2VydF90cnVlKGJvZHlBc0Zvcm1EYXRhIGlu
c3RhbmNlb2YgRm9ybURhdGEsICJTaG91bGQgcmVjZWl2ZSBhIEZvcm1EYXRhIik7CisgICAgICAg
IGFzc2VydF9mYWxzZShyZXF1ZXN0LmJvZHlVc2VkKTsKKyAgICAgfSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY2hlY2tSZXF1ZXN0Qm9keShib2R5VHlwZSwgY2hlY2tGdW5jdGlvbikgeworICAg
ICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgdmFyIHJlcXVlc3QgPSBu
ZXcgUmVxdWVzdCgiIiwgeyJtZXRob2QiOiAiUE9TVCJ9KTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNl
KHJlcXVlc3QuYm9keVVzZWQpOworICAgICAgICByZXR1cm4gY2hlY2tGdW5jdGlvbihyZXF1ZXN0
KTsKKyAgICAgIH0sICJDb25zdW1lIHJlcXVlc3QncyBib2R5IGFzICIgKyBib2R5VHlwZSk7Cisg
ICAgfQorCisgICAgdmFyIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7CisgICAgY2hlY2tSZXF1
ZXN0Qm9keSgidGV4dCIsIGNoZWNrQm9keVRleHQpOworICAgIGNoZWNrUmVxdWVzdEJvZHkoImJs
b2IiLCBjaGVja0JvZHlCbG9iKTsKKyAgICBjaGVja1JlcXVlc3RCb2R5KCJhcnJheUJ1ZmZlciIs
IGNoZWNrQm9keUFycmF5QnVmZmVyKTsKKyAgICBjaGVja1JlcXVlc3RCb2R5KCJqc29uIiwgY2hl
Y2tCb2R5SlNPTik7CisgICAgY2hlY2tSZXF1ZXN0Qm9keSgiZm9ybURhdGEiLCBjaGVja0JvZHlG
b3JtRGF0YSk7CisKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
cmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNw
b25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYzRhMTE2Zjk4NTYx
Y2EwMTY4YjM2YzgxNmNlMGU0NzljMmU3NDBlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVz
cG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKK1BBU1Mg
Q29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgdGV4dCAKK1BBU1MgQ29uc3VtZSByZXNwb25zZSdz
IGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgYXJyYXlCdWZm
ZXIgCitQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGpzb24gCitGQUlMIENvbnN1bWUg
cmVzcG9uc2UncyBib2R5IGFzIGZvcm1EYXRhIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2Ut
Y29uc3VtZS1lbXB0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmFhZjUyMWE4NDRmOGM4OGM4N2Y2YzhmMjljYzhlMGE1OWEyOWQyYjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5Lmh0bWwKQEAgLTAsMCAr
MSw4MSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5SZXNwb25zZSBjb25zdW1lIGVtcHR5IGJvZGllczwv
dGl0bGU+CisgICAgPG1ldGEgbmFtZT0iaGVscCIgaHJlZj0iaHR0cHM6Ly9mZXRjaC5zcGVjLndo
YXR3Zy5vcmcvI3Jlc3BvbnNlIj4KKyAgICA8bWV0YSBuYW1lPSJoZWxwIiBocmVmPSJodHRwczov
L2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYm9keS1taXhpbiI+CisgICAgPG1ldGEgbmFtZT0iYXV0
aG9yIiB0aXRsZT0iQ2Fub24gUmVzZWFyY2ggRnJhbmNlIiBocmVmPSJodHRwczovL3d3dy5jcmYu
Y2Fub24uZnIiPgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5q
cyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdD4KKyAgICBmdW5j
dGlvbiBjaGVja0JvZHlUZXh0KHJlc3BvbnNlKSB7CisgICAgICByZXR1cm4gcmVzcG9uc2UudGV4
dCgpLnRoZW4oIGZ1bmN0aW9uKGJvZHlBc1RleHQpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhi
b2R5QXNUZXh0LCAiIiwgIlJlc29sdmVkIHZhbHVlIHNob3VsZCBiZSBlbXB0eSIpOworICAgICAg
ICBhc3NlcnRfZmFsc2UocmVzcG9uc2UuYm9keVVzZWQpOworICAgICAgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gY2hlY2tCb2R5QmxvYihyZXNwb25zZSkgeworICAgICAgcmV0dXJuIHJlc3Bv
bnNlLmJsb2IoKS50aGVuKGZ1bmN0aW9uKGJvZHlBc0Jsb2IpIHsKKyAgICAgICAgdmFyIHByb21p
c2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAg
dmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9
IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KQorICAg
ICAgICAgIH07CisgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHJlamVjdCgiQmxvYidzIHJlYWRlciBmYWlsZWQiKTsKKyAgICAgICAgICB9OworICAg
ICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGJvZHlBc0Jsb2IpOworICAgICAgICB9KTsKKyAgICAg
ICAgcmV0dXJuIHByb21pc2UudGhlbihmdW5jdGlvbihib2R5KSB7CisgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhib2R5LCAiIiwgIlJlc29sdmVkIHZhbHVlIHNob3VsZCBiZSBlbXB0eSIpOworICAg
ICAgICAgIGFzc2VydF9mYWxzZShyZXNwb25zZS5ib2R5VXNlZCk7CisgICAgICAgIH0pOworICAg
ICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5QXJyYXlCdWZmZXIocmVzcG9u
c2UpIHsKKyAgICAgIHJldHVybiByZXNwb25zZS5hcnJheUJ1ZmZlcigpLnRoZW4oIGZ1bmN0aW9u
KGJvZHlBc0FycmF5QnVmZmVyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYm9keUFzQXJyYXlC
dWZmZXIuYnl0ZUxlbmd0aCwgMCwgIlJlc29sdmVkIHZhbHVlIHNob3VsZCBiZSBlbXB0eSIpOwor
ICAgICAgICBhc3NlcnRfZmFsc2UocmVzcG9uc2UuYm9keVVzZWQpOworICAgICAgfSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5SlNPTihyZXNwb25zZSkgeworICAgICAgcmV0dXJu
IHJlc3BvbnNlLmpzb24oKS50aGVuKAorICAgICAgICAoYm9keUFzSlNPTikgPT4geworICAgICAg
ICAgIGFzc2VydF91bnJlYWNoZWQoIkpTT04gcGFyc2luZyBzaG91bGQgZmFpbCIpOworICAgICAg
ICB9LAorICAgICAgICAoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlc3BvbnNlLmJv
ZHlVc2VkKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5Rm9y
bURhdGEocmVzcG9uc2UpIHsKKyAgICAgIHJldHVybiByZXNwb25zZS5mb3JtRGF0YSgpLnRoZW4o
ZnVuY3Rpb24oYm9keUFzRm9ybURhdGEpIHsKKyAgICAgICAgYXNzZXJ0X3RydWUoYm9keUFzRm9y
bURhdGEgaW5zdGFuY2VvZiBGb3JtRGF0YSwgIlNob3VsZCByZWNlaXZlIGEgRm9ybURhdGEiKTsK
KyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlc3BvbnNlLmJvZHlVc2VkKTsKKyAgICAgfSk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gY2hlY2tSZXNwb25zZUJvZHkoYm9keVR5cGUsIGNoZWNrRnVuY3Rp
b24pIHsKKyAgICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7CisgICAgICAgIHZhciBy
ZXNwb25zZSA9IG5ldyBSZXNwb25zZSgpOworICAgICAgICBhc3NlcnRfZmFsc2UocmVzcG9uc2Uu
Ym9keVVzZWQpOworICAgICAgICByZXR1cm4gY2hlY2tGdW5jdGlvbihyZXNwb25zZSk7CisgICAg
ICB9LCAiQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgIiArIGJvZHlUeXBlKTsKKyAgICB9CisK
KyAgICB2YXIgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsKKyAgICBjaGVja1Jlc3BvbnNlQm9k
eSgidGV4dCIsIGNoZWNrQm9keVRleHQpOworICAgIGNoZWNrUmVzcG9uc2VCb2R5KCJibG9iIiwg
Y2hlY2tCb2R5QmxvYik7CisgICAgY2hlY2tSZXNwb25zZUJvZHkoImFycmF5QnVmZmVyIiwgY2hl
Y2tCb2R5QXJyYXlCdWZmZXIpOworICAgIGNoZWNrUmVzcG9uc2VCb2R5KCJqc29uIiwgY2hlY2tC
b2R5SlNPTik7CisgICAgY2hlY2tSZXNwb25zZUJvZHkoImZvcm1EYXRhIiwgY2hlY2tCb2R5Rm9y
bURhdGEpOworCisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273714</attachid>
            <date>2016-03-11 02:33:15 -0800</date>
            <delta_ts>2016-03-11 04:08:11 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-155291-20160311113301.patch</filename>
            <type>text/plain</type>
            <size>23883</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE2OWY4NmM3OGJiNjJm
ZTQxYzhlZTBmODliN2YxMmE3N2FjOWM1Yy4uMmI3ZTYzNGIxOTk0MWRkNzYxN2IwNDA2N2UxNjI3
NjI4MTViZTA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDE2LTAzLTExICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKKyAgICAgICAgW0ZldGNo
IEFQSV0gVXNlIERlZmVycmVkV3JhcHBlciBkaXJlY3RseSBpbiBGZXRjaEJvZHkgcHJvbWlzZSBo
YW5kbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU1MjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTW92
ZWQgZnJvbSB0eXBlZCBET01Qcm9taXNlIHRvIERlZmVycmVkV3JhcHBlciBhcyB0aGVyZSBjYW4g
b25seSBiZSBvbmUgcHJvbWlzZSByZXNvbHZlZC4KKyAgICAgICAgU3RhcnRlZCBwcmVwYXJpbmcg
dGhlIGhhbmRsaW5nIG9mIGJsb2JzIHRyYW5zbGF0aW9uIHRvIG90aGVyIHJlc29sdmVkIHR5cGVz
LgorCisgICAgICAgIEZpeGVkIHRoZSBjYXNlIG9mIGVtcHR5IGJvZHksIGluIHdoaWNoIGNhc2Ug
cHJvbWlzZXMgc2hvdWxkIHJlc29sdmUgd2l0aCBlbXB0eSBvYmplY3RzIChzdHJpbmdzLCBidWZm
ZXJzLi4uKSBhbmQgbm90IG51bGwuCisKKyAgICAgICAgQWRkZWQgQ29uc3VtZXIgc3RydWN0dXJl
IHRvIGhhbmRsZSBhc3luY2hyb25vdXMgcmVzb2x1dGlvbi9yZWplY3Rpb24gb2YgcHJvbWlzZXMu
CisgICAgICAgIEFkZGVkIHByZWxpbWluYXJ5IEFQSSB0byByZXNvbHZlIHByb21pc2VzIGJhc2Vk
IG9uIGRhdGEgc3RvcmVkIGFzIGEgQmxvYi4KKyAgICAgICAgRmV0Y2hCb2R5T3duZXIgd2lsbCBi
ZSByZXNwb25zaWJsZSB0byBkby9zdG9wIGJsb2IgbG9hZGluZy4KKworICAgICAgICBUZXN0czog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0
LWNvbnN1bWUtZW1wdHkuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS5odG1s
CisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGZXRjaEJvZHk6OnByb2Nlc3NJZkVtcHR5T3JEaXN0dXJiZWQpOiBGaXhlZCBlbXB0eSBi
b2R5IGNhc2UuCisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OmFycmF5QnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6YmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6Ompzb24pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHk6OmNvbnN1bWVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9hZGlu
Z1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpjb25zdW1lQmxvYik6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnJlc29sdmVBc0pTT04pOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hCb2R5Ojpsb2FkaW5nRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eTo6bG9hZGVkQXNCbG9iKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oOgor
ICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpmb3JtRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHk6OkNvbnN1bWVyOjpDb25zdW1lcik6CisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjphcnJheUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6YmxvYik6CisgICAgICAgIChXZWJDb3JlOjpG
ZXRjaEJvZHlPd25lcjo6Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3du
ZXI6Ompzb24pOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmxvYWRCbG9iKToKKworMjAxNi0wMy0xMSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCiAgICAgICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBzaG91bGQgcGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0IHRvIHRoZSBpbXBsZW1lbnRhdGlvbiBieSByZWZlcmVuY2UKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTI5NwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggZmRiYTVjZGNkZDFlYTdlMTNm
YmNhZTYzMGU3M2ZmYTFlNDhhN2ZiNi4uY2M5YjU5NWRiYzg3ZjdmYWY4NTU5OTE4MDQ0ZWZlNDUz
N2FkOWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJv
ZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApA
QCAtMzEsOCArMzEsMTAgQEAKIAogI2lmIEVOQUJMRShGRVRDSF9BUEkpCiAKKyNpbmNsdWRlICJE
T01SZXF1ZXN0U3RhdGUuaCIKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZldGNoQm9keU93bmVyLmgiCiAjaW5jbHVkZSAiSFRU
UFBhcnNlcnMuaCIKICNpbmNsdWRlICJKU0Jsb2IuaCIKICNpbmNsdWRlICJKU0RPTUZvcm1EYXRh
LmgiCkBAIC04Miw5NiArODQsMTM2IEBAIEZldGNoQm9keSBGZXRjaEJvZHk6OmV4dHJhY3RGcm9t
Qm9keShGZXRjaEJvZHkqIGJvZHkpCiAgICAgcmV0dXJuIEZldGNoQm9keShXVEZNb3ZlKCpib2R5
KSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBib29sIEZldGNoQm9keTo6cHJv
Y2Vzc0lmRW1wdHlPckRpc3R1cmJlZChET01Qcm9taXNlPFQsIEV4Y2VwdGlvbkNvZGU+JiBwcm9t
aXNlKQorYm9vbCBGZXRjaEJvZHk6OnByb2Nlc3NJZkVtcHR5T3JEaXN0dXJiZWQoQ29uc3VtZXI6
OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNlKQogewogICAgIGlmIChtX3R5cGUg
PT0gVHlwZTo6Tm9uZSkgewotICAgICAgICBwcm9taXNlLnJlc29sdmUoVCgpKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIENvbnN1
bWVyOjpUeXBlOjpUZXh0OgorICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFN0cmluZygpKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIENvbnN1bWVyOjpUeXBlOjpC
bG9iOgorICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlPFJlZlB0cjxCbG9iPj4oQmxvYjo6Y3Jl
YXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgQ29uc3VtZXI6
OlR5cGU6OkpTT046CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihT
WU5UQVhfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIENvbnN1
bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcjoKKyAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKG51bGxwdHIsIDApKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPigwKTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9OwogICAgIH0KIAogICAgIGlmIChtX2lzRGlzdHVyYmVkKSB7
Ci0gICAgICAgIHByb21pc2UucmVqZWN0KFR5cGVFcnJvcik7CisgICAgICAgIHByb21pc2UucmVq
ZWN0PEV4Y2VwdGlvbkNvZGU+KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICBtX2lzRGlzdHVyYmVkID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgRmV0Y2hCb2R5OjphcnJheUJ1ZmZlcihBcnJheUJ1ZmZlclByb21pc2UmJiBwcm9taXNlKQor
dm9pZCBGZXRjaEJvZHk6OmFycmF5QnVmZmVyKEZldGNoQm9keU93bmVyJiBvd25lciwgRGVmZXJy
ZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsKLSAgICBpZiAocHJvY2Vzc0lmRW1wdHlPckRpc3R1cmJl
ZChwcm9taXNlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpU
ZXh0KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIHdvdWxkIGxpa2UgdG8gaGF2ZSBh
biBBcnJheUJ1ZmZlciBkaXJlY3RseSBmcm9tIG1fdGV4dC4KLSAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGEgPSBleHRyYWN0RnJvbVRleHQoKTsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBi
dWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0g
ICAgICAgIHByb21pc2UucmVzb2x2ZShidWZmZXIpOworICAgIGlmIChwcm9jZXNzSWZFbXB0eU9y
RGlzdHVyYmVkKENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlciwgcHJvbWlzZSkpCiAgICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgLy8gRklYTUU6IFN1cHBvcnQgb3RoZXIgdHlwZXMuCi0gICAg
cHJvbWlzZS5yZWplY3QoMCk7CisgICAgY29uc3VtZShvd25lciwgQ29uc3VtZXI6OlR5cGU6OkFy
cmF5QnVmZmVyLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotdm9pZCBGZXRjaEJvZHk6OmZvcm1E
YXRhKEZvcm1EYXRhUHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEZldGNoQm9keTo6YmxvYihGZXRj
aEJvZHlPd25lciYgb3duZXIsIERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiB7Ci0gICAgaWYg
KG1fdHlwZSA9PSBUeXBlOjpOb25lIHx8IG1faXNEaXN0dXJiZWQpIHsKLSAgICAgICAgcHJvbWlz
ZS5yZWplY3QoVHlwZUVycm9yKTsKKyAgICBpZiAocHJvY2Vzc0lmRW1wdHlPckRpc3R1cmJlZChD
b25zdW1lcjo6VHlwZTo6QmxvYiwgcHJvbWlzZSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgbV9pc0Rpc3R1cmJlZCA9IHRydWU7CiAKLSAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlciB0
eXBlcy4KLSAgICBwcm9taXNlLnJlamVjdCgwKTsKKyAgICBjb25zdW1lKG93bmVyLCBDb25zdW1l
cjo6VHlwZTo6QmxvYiwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgRmV0Y2hCb2R5Ojpi
bG9iKEJsb2JQcm9taXNlJiYgcHJvbWlzZSkKK3ZvaWQgRmV0Y2hCb2R5Ojpqc29uKEZldGNoQm9k
eU93bmVyJiBvd25lciwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIHsKLSAgICBpZiAocHJv
Y2Vzc0lmRW1wdHlPckRpc3R1cmJlZChwcm9taXNlKSkKKyAgICBpZiAocHJvY2Vzc0lmRW1wdHlP
ckRpc3R1cmJlZChDb25zdW1lcjo6VHlwZTo6SlNPTiwgcHJvbWlzZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6QmxvYikgewotICAgICAgICBwcm9taXNlLnJl
c29sdmUobV9ibG9iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICBpZiAobV90eXBlID09
IFR5cGU6OlRleHQpIHsKLSAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZSkp
OwotICAgICAgICBwcm9taXNlLnJlc29sdmUoQmxvYjo6Y3JlYXRlKGV4dHJhY3RGcm9tVGV4dCgp
LCBjb250ZW50VHlwZSkpOworICAgICAgICByZXNvbHZlQXNKU09OKG93bmVyLnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgbV90ZXh0LCBXVEZNb3ZlKHByb21pc2UpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IG90aGVyIHR5cGVzLgotICAgIHByb21p
c2UucmVqZWN0KDApOworICAgIGNvbnN1bWUob3duZXIsIENvbnN1bWVyOjpUeXBlOjpKU09OLCBX
VEZNb3ZlKHByb21pc2UpKTsKIH0KIAotdm9pZCBGZXRjaEJvZHk6OnRleHQoVGV4dFByb21pc2Um
JiBwcm9taXNlKQordm9pZCBGZXRjaEJvZHk6OnRleHQoRmV0Y2hCb2R5T3duZXImIG93bmVyLCBE
ZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogewotICAgIGlmIChwcm9jZXNzSWZFbXB0eU9yRGlz
dHVyYmVkKHByb21pc2UpKQorICAgIGlmIChwcm9jZXNzSWZFbXB0eU9yRGlzdHVyYmVkKENvbnN1
bWVyOjpUeXBlOjpUZXh0LCBwcm9taXNlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1f
dHlwZSA9PSBUeXBlOjpUZXh0KSB7CiAgICAgICAgIHByb21pc2UucmVzb2x2ZShtX3RleHQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IG90aGVyIHR5cGVz
LgotICAgIHByb21pc2UucmVqZWN0KDApOworICAgIGNvbnN1bWUob3duZXIsIENvbnN1bWVyOjpU
eXBlOjpUZXh0LCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAotdm9pZCBGZXRjaEJvZHk6Ompzb24o
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU09OUHJvbWlzZSYmIHByb21pc2UpCit2b2lkIEZldGNo
Qm9keTo6Y29uc3VtZShGZXRjaEJvZHlPd25lciYgb3duZXIsIENvbnN1bWVyOjpUeXBlIHR5cGUs
IERlZmVycmVkV3JhcHBlciYmIHByb21pc2UpCiB7Ci0gICAgaWYgKHByb2Nlc3NJZkVtcHR5T3JE
aXN0dXJiZWQocHJvbWlzZSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChtX3R5cGUgPT0g
VHlwZTo6VGV4dCkgewotICAgICAgICBKU0M6OkpTVmFsdWUgdmFsdWUgPSBKU0M6OkpTT05QYXJz
ZSgmc3RhdGUsIG1fdGV4dCk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICBwcm9t
aXNlLnJlamVjdChTWU5UQVhfRVJSKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKHZhbHVlKTsKKyAgICAgICAgY29uc3VtZVRleHQodHlwZSwgV1RGTW92ZShwcm9t
aXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpC
bG9iKSB7CisgICAgICAgIGNvbnN1bWVCbG9iKG93bmVyLCB0eXBlLCBXVEZNb3ZlKHByb21pc2Up
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIEZJWE1FOiBTdXBwb3J0IG90aGVy
IHR5cGVzLgotICAgIHByb21pc2UucmVqZWN0KDApOworICAgIHByb21pc2UucmVqZWN0PEV4Y2Vw
dGlvbkNvZGU+KDApOworfQorCit2b2lkIEZldGNoQm9keTo6Y29uc3VtZVRleHQoQ29uc3VtZXI6
OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKK3sKKyAgICBBU1NFUlQodHlw
ZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIgfHwgdHlwZSA9PSBDb25zdW1lcjo6VHlw
ZTo6QmxvYik7CisKKyAgICBpZiAodHlwZSA9PSBDb25zdW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIp
IHsKKyAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGEgPSBleHRyYWN0RnJvbVRleHQoKTsKKyAgICAg
ICAgcHJvbWlzZS5yZXNvbHZlPFJlZlB0cjxBcnJheUJ1ZmZlcj4+KEFycmF5QnVmZmVyOjpjcmVh
dGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgU3RyaW5nIGNvbnRlbnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKGV4dHJh
Y3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9taW1lVHlwZSkpOworICAgIHByb21pc2UucmVzb2x2
ZTxSZWZQdHI8QmxvYj4+KEJsb2I6OmNyZWF0ZShleHRyYWN0RnJvbVRleHQoKSwgY29udGVudFR5
cGUpKTsKK30KKworRmV0Y2hMb2FkaW5nVHlwZSBGZXRjaEJvZHk6OmxvYWRpbmdUeXBlKENvbnN1
bWVyOjpUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBDb25zdW1l
cjo6VHlwZTo6SlNPTjoKKyAgICBjYXNlIENvbnN1bWVyOjpUeXBlOjpUZXh0OgorICAgICAgICBy
ZXR1cm4gRmV0Y2hMb2FkaW5nVHlwZTo6VGV4dDsKKyAgICBjYXNlIENvbnN1bWVyOjpUeXBlOjpC
bG9iOgorICAgICAgICByZXR1cm4gRmV0Y2hMb2FkaW5nVHlwZTo6QmxvYjsKKyAgICBjYXNlIENv
bnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIEZldGNoTG9hZGluZ1R5
cGU6OkFycmF5QnVmZmVyOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gRmV0Y2hMb2FkaW5nVHlwZTo6QXJyYXlCdWZmZXI7CisgICAg
fTsKK30KKwordm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiBvd25l
ciwgQ29uc3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKK3sKKyAg
ICBBU1NFUlQobV9ibG9iKTsKKworICAgIG1fY29uc3VtZXIgPSBDb25zdW1lcih7dHlwZSwgV1RG
TW92ZShwcm9taXNlKX0pOworICAgIG93bmVyLmxvYWRCbG9iKCptX2Jsb2IsIGxvYWRpbmdUeXBl
KHR5cGUpKTsKK30KKwordm9pZCBGZXRjaEJvZHk6OnJlc29sdmVBc0pTT04oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhLCBEZWZlcnJlZFdyYXBwZXIm
JiBwcm9taXNlKQoreworICAgIERPTVJlcXVlc3RTdGF0ZSBzdGF0ZShjb250ZXh0KTsKKyAgICBK
U0M6OkpTVmFsdWUgdmFsdWUgPSBKU0M6OkpTT05QYXJzZShzdGF0ZS5leGVjKCksIGRhdGEpOwor
ICAgIGlmICghdmFsdWUpCisgICAgICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFNZ
TlRBWF9FUlIpOworICAgIGVsc2UKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHZhbHVlKTsKIH0K
IAogVmVjdG9yPGNoYXI+IEZldGNoQm9keTo6ZXh0cmFjdEZyb21UZXh0KCkgY29uc3QKQEAgLTE4
NCw2ICsyMjYsMjAgQEAgVmVjdG9yPGNoYXI+IEZldGNoQm9keTo6ZXh0cmFjdEZyb21UZXh0KCkg
Y29uc3QKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK3ZvaWQgRmV0Y2hCb2R5Ojpsb2FkaW5nRmFp
bGVkKCkKK3sKKyAgICBBU1NFUlQobV9jb25zdW1lcik7CisgICAgbV9jb25zdW1lci0+cHJvbWlz
ZS5yZWplY3Q8RXhjZXB0aW9uQ29kZT4oMCk7CisgICAgbV9jb25zdW1lciA9IE51bGxvcHQ7Cit9
CisKK3ZvaWQgRmV0Y2hCb2R5Ojpsb2FkZWRBc0Jsb2IoQmxvYiYgYmxvYikKK3sKKyAgICBBU1NF
UlQobV9jb25zdW1lcik7CisgICAgbV9jb25zdW1lci0+cHJvbWlzZS5yZXNvbHZlKCZibG9iKTsK
KyAgICBtX2NvbnN1bWVyID0gTnVsbG9wdDsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKEZF
VENIX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCmluZGV4IDk3
MWM5Njk4NzUzZDJiZGJkODY4MjA1NTMwMGYwNThlMWUwNzUxNzAuLjAxMmIzMDQ5ZDg0OGUyYTFi
NjI4NDliOGU2OTdmMWY1ZTE5OWE2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuaApAQCAtMzYsMzIgKzM2LDIyIEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgQXJyYXlCdWZmZXI7CiBjbGFzcyBFeGVjU3RhdGU7
CiBjbGFzcyBKU1ZhbHVlOwogfTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBEaWN0
aW9uYXJ5OwotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKK2NsYXNzIEZldGNoQm9keU93bmVy
OworZW51bSBjbGFzcyBGZXRjaExvYWRpbmdUeXBlOwogCiBjbGFzcyBGZXRjaEJvZHkgewogcHVi
bGljOgotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4sIEV4
Y2VwdGlvbkNvZGU+IEFycmF5QnVmZmVyUHJvbWlzZTsKLSAgICB2b2lkIGFycmF5QnVmZmVyKEFy
cmF5QnVmZmVyUHJvbWlzZSYmKTsKLQotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxSZWZQdHI8RE9N
Rm9ybURhdGE+LCBFeGNlcHRpb25Db2RlPiBGb3JtRGF0YVByb21pc2U7Ci0gICAgdm9pZCBmb3Jt
RGF0YShGb3JtRGF0YVByb21pc2UmJik7Ci0KLSAgICB0eXBlZGVmIERPTVByb21pc2U8UmVmUHRy
PEJsb2I+LCBFeGNlcHRpb25Db2RlPiBCbG9iUHJvbWlzZTsKLSAgICB2b2lkIGJsb2IoQmxvYlBy
b21pc2UmJik7Ci0KLSAgICB0eXBlZGVmIERPTVByb21pc2U8SlNDOjpKU1ZhbHVlLCBFeGNlcHRp
b25Db2RlPiBKU09OUHJvbWlzZTsKLSAgICB2b2lkIGpzb24oSlNDOjpFeGVjU3RhdGUmLCBKU09O
UHJvbWlzZSYmKTsKLQotICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxTdHJpbmcsIEV4Y2VwdGlvbkNv
ZGU+IFRleHRQcm9taXNlOwotICAgIHZvaWQgdGV4dChUZXh0UHJvbWlzZSYmKTsKKyAgICB2b2lk
IGFycmF5QnVmZmVyKEZldGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOworICAgIHZv
aWQgYmxvYihGZXRjaEJvZHlPd25lciYsIERlZmVycmVkV3JhcHBlciYmKTsKKyAgICB2b2lkIGpz
b24oRmV0Y2hCb2R5T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJik7CisgICAgdm9pZCB0ZXh0KEZl
dGNoQm9keU93bmVyJiwgRGVmZXJyZWRXcmFwcGVyJiYpOworICAgIHZvaWQgZm9ybURhdGEoRmV0
Y2hCb2R5T3duZXImLCBEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKSB7IHByb21pc2UucmVqZWN0
PEV4Y2VwdGlvbkNvZGU+KDApOyB9CiAKICAgICBib29sIGlzRGlzdHVyYmVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0Rpc3R1cmJlZDsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBUeXBlOjpOb25lOyB9CkBAIC03MywxNiArNjMsMzAgQEAgcHVibGljOgogICAg
IHN0YXRpYyBGZXRjaEJvZHkgZXh0cmFjdEZyb21Cb2R5KEZldGNoQm9keSopOwogICAgIEZldGNo
Qm9keSgpID0gZGVmYXVsdDsKIAotcHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBi
b29sIHByb2Nlc3NJZkVtcHR5T3JEaXN0dXJiZWQoRE9NUHJvbWlzZTxULCBFeGNlcHRpb25Db2Rl
PiYpOworICAgIHZvaWQgbG9hZGluZ0ZhaWxlZCgpOworICAgIHZvaWQgbG9hZGVkQXNCbG9iKEJs
b2ImKTsKIAorcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgeyBOb25lLCBUZXh0LCBCbG9i
LCBGb3JtRGF0YSB9OwogCiAgICAgRmV0Y2hCb2R5KFJlZjxCbG9iPiYmKTsKICAgICBGZXRjaEJv
ZHkoUmVmPERPTUZvcm1EYXRhPiYmKTsKICAgICBGZXRjaEJvZHkoU3RyaW5nJiYpOwogCisgICAg
c3RydWN0IENvbnN1bWVyIHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsgVGV4dCwgQmxvYiwg
SlNPTiwgQXJyYXlCdWZmZXIgfTsKKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIERlZmVy
cmVkV3JhcHBlciBwcm9taXNlOworICAgIH07CisgICAgdm9pZCBjb25zdW1lKEZldGNoQm9keU93
bmVyJiwgQ29uc3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYmKTsKKwogICAgIFZlY3Rvcjxj
aGFyPiBleHRyYWN0RnJvbVRleHQoKSBjb25zdDsKKyAgICBib29sIHByb2Nlc3NJZkVtcHR5T3JE
aXN0dXJiZWQoQ29uc3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYpOworICAgIHZvaWQgY29u
c3VtZVRleHQoQ29uc3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBlciYmKTsKKyAgICB2b2lkIGNv
bnN1bWVCbG9iKEZldGNoQm9keU93bmVyJiwgQ29uc3VtZXI6OlR5cGUsIERlZmVycmVkV3JhcHBl
ciYmKTsKKyAgICB2b2lkIHJlc29sdmVBc0pTT04oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYsIERlZmVycmVkV3JhcHBlciYmKTsKKyAgICBzdGF0aWMgRmV0Y2hMb2FkaW5n
VHlwZSBsb2FkaW5nVHlwZShDb25zdW1lcjo6VHlwZSk7CiAKICAgICBUeXBlIG1fdHlwZSA9IFR5
cGU6Ok5vbmU7CiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CkBAIC05Miw2ICs5Niw4IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPEJsb2I+IG1fYmxvYjsKICAgICBSZWZQdHI8RE9NRm9ybURhdGE+IG1f
Zm9ybURhdGE7CiAgICAgU3RyaW5nIG1fdGV4dDsKKworICAgIE9wdGlvbmFsPENvbnN1bWVyPiBt
X2NvbnN1bWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaWRsCmluZGV4IGYzNGI5NzFlMjVmODRiMjY2OTQyYWI2
ZTBjZDM2NGU4OTVjYTEyMzAuLmI2NDUwMWQ2MzVhZmM3NDA1NzUyNzNiNDExNGQ2ZjdkNGU3MGQ4
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5pZGwKQEAgLTM3
LDYgKzM3LDYgQEAgaW50ZXJmYWNlIEZldGNoQm9keSB7CiAgICAgW05ld09iamVjdF0gUHJvbWlz
ZSBhcnJheUJ1ZmZlcigpOwogICAgIFtOZXdPYmplY3RdIFByb21pc2UgYmxvYigpOwogICAgIFtO
ZXdPYmplY3RdIFByb21pc2UgZm9ybURhdGEoKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUs
IE5ld09iamVjdF0gUHJvbWlzZSBqc29uKCk7CisgICAgW05ld09iamVjdF0gUHJvbWlzZSBqc29u
KCk7CiAgICAgW05ld09iamVjdF0gUHJvbWlzZSB0ZXh0KCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDUzNmM5NGE2NGMyOGIzYzc2
ZDJhMzUwYWZhNDQzZTAyNzkwNTEzZmQuLjcyMDZlNmRmMGEwODhiN2E4ZjFiMGUzMDEyYmQ0MzI2
ZDRiMWE4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93
bmVyLmgKQEAgLTM2LDE3ICszNiwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2VudW0g
Y2xhc3MgRmV0Y2hMb2FkaW5nVHlwZSB7IFRleHQsIEFycmF5QnVmZmVyLCBCbG9iIH07CisKIGNs
YXNzIEZldGNoQm9keU93bmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmV0Y2hCb2R5T3duZXI+LCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBGZXRjaEJvZHlPd25lcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgRmV0Y2hCb2R5JiYpOwogCiAgICAgLy8gRXhwb3NlZCBCb2R5
IEFQSQogICAgIGJvb2wgaXNEaXN0dXJiZWQoKSBjb25zdCB7IHJldHVybiBtX2JvZHkuaXNEaXN0
dXJiZWQoKTsgfQotICAgIHZvaWQgYXJyYXlCdWZmZXIoRmV0Y2hCb2R5OjpBcnJheUJ1ZmZlclBy
b21pc2UmJiBwcm9taXNlKSB7IG1fYm9keS5hcnJheUJ1ZmZlcihXVEZNb3ZlKHByb21pc2UpKTsg
fQotICAgIHZvaWQgZm9ybURhdGEoRmV0Y2hCb2R5OjpGb3JtRGF0YVByb21pc2UmJiBwcm9taXNl
KSB7IG1fYm9keS5mb3JtRGF0YShXVEZNb3ZlKHByb21pc2UpKTsgfQotICAgIHZvaWQgYmxvYihG
ZXRjaEJvZHk6OkJsb2JQcm9taXNlJiYgcHJvbWlzZSkgeyBtX2JvZHkuYmxvYihXVEZNb3ZlKHBy
b21pc2UpKTsgfQotICAgIHZvaWQganNvbihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEZldGNoQm9k
eTo6SlNPTlByb21pc2UmJiBwcm9taXNlKSB7IG1fYm9keS5qc29uKHN0YXRlLCBXVEZNb3ZlKHBy
b21pc2UpKTsgfQotICAgIHZvaWQgdGV4dChGZXRjaEJvZHk6OlRleHRQcm9taXNlJiYgcHJvbWlz
ZSkgeyBtX2JvZHkudGV4dChXVEZNb3ZlKHByb21pc2UpKTsgfQorICAgIHZvaWQgYXJyYXlCdWZm
ZXIoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkgeyBtX2JvZHkuYXJyYXlCdWZmZXIoKnRoaXMs
IFdURk1vdmUocHJvbWlzZSkpOyB9CisgICAgdm9pZCBibG9iKERlZmVycmVkV3JhcHBlciYmIHBy
b21pc2UpIHsgbV9ib2R5LmJsb2IoKnRoaXMsIFdURk1vdmUocHJvbWlzZSkpOyB9CisgICAgdm9p
ZCBmb3JtRGF0YShEZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKSB7IG1fYm9keS5mb3JtRGF0YSgq
dGhpcywgV1RGTW92ZShwcm9taXNlKSk7IH0KKyAgICB2b2lkIGpzb24oRGVmZXJyZWRXcmFwcGVy
JiYgcHJvbWlzZSkgeyBtX2JvZHkuanNvbigqdGhpcywgV1RGTW92ZShwcm9taXNlKSk7IH0KKyAg
ICB2b2lkIHRleHQoRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkgeyBtX2JvZHkudGV4dCgqdGhp
cywgV1RGTW92ZShwcm9taXNlKSk7IH0KKworICAgIHZvaWQgbG9hZEJsb2IoQmxvYiYsIEZldGNo
TG9hZGluZ1R5cGUpOwogCiBwcm90ZWN0ZWQ6CiAgICAgRmV0Y2hCb2R5IG1fYm9keTsKQEAgLTU5
LDYgKzYzLDE3IEBAIGlubGluZSBGZXRjaEJvZHlPd25lcjo6RmV0Y2hCb2R5T3duZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hCb2R5CiAgICAgc3VzcGVuZElmTmVlZGVk
KCk7CiB9CiAKK2lubGluZSB2b2lkIEZldGNoQm9keU93bmVyOjpsb2FkQmxvYihCbG9iJiBibG9i
LCBGZXRjaExvYWRpbmdUeXBlIHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0gRmV0Y2hMb2FkaW5n
VHlwZTo6QmxvYikgeworICAgICAgICAvLyBGSVhNRTogQ2xvbmUgYmxvYi4KKyAgICAgICAgbV9i
b2R5LmxvYWRlZEFzQmxvYihibG9iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGJsb2IgbG9hZGluZy4KKyAgICBtX2JvZHkubG9hZGluZ0ZhaWxlZCgp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRkVUQ0hf
QVBJKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZWRlMGUxOWNhMWE2MTczMWI3
NGEzNjE1MTMwNzFiNGQ0MTY0ODhkNy4uNjY3Y2JhNmEzMzI4ZGFjOGZhNDgwYjU2MjA5MTA0NmY1
N2U4NTU1YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTYtMDMtMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4K
KworICAgICAgICBbRmV0Y2ggQVBJXSBVc2UgRGVmZXJyZWRXcmFwcGVyIGRpcmVjdGx5IGluIEZl
dGNoQm9keSBwcm9taXNlIGhhbmRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTUyOTEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1
ZXN0LWNvbnN1bWUtZW1wdHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWVtcHR5Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2Uv
cmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0
eS5odG1sOiBBZGRlZC4KKwogMjAxNi0wMy0wOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIGZvY3VzKCkgLyBibHVyKCkgc2hvdWxkIGJlIG9uIEhUTUxFbGVtZW50
IC8gU1ZHRWxlbWVudCwgbm90IEVsZW1lbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25z
dW1lLWVtcHR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZmV0Y2gvYXBpL3JlcXVlc3QvcmVxdWVzdC1jb25zdW1lLWVtcHR5LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45OWM0MWE1YTBiMzE5ZWM4ZTIwMWVlMjUxNmYzY2U4MTUxNjVk
OWI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUtZW1wdHktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorCitQQVNTIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMg
dGV4dCAKK1BBU1MgQ29uc3VtZSByZXF1ZXN0J3MgYm9keSBhcyBibG9iIAorUEFTUyBDb25zdW1l
IHJlcXVlc3QncyBib2R5IGFzIGFycmF5QnVmZmVyIAorUEFTUyBDb25zdW1lIHJlcXVlc3QncyBi
b2R5IGFzIGpzb24gCitGQUlMIENvbnN1bWUgcmVxdWVzdCdzIGJvZHkgYXMgZm9ybURhdGEgcHJv
bWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IHVuZGVmaW5lZAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Zl
dGNoL2FwaS9yZXF1ZXN0L3JlcXVlc3QtY29uc3VtZS1lbXB0eS5odG1sIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0
LWNvbnN1bWUtZW1wdHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjI4YzI3MzkzYTU2YWY3MzA3N2EyMzJh
MjY3NjczZjVjYmU2ZjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVxdWVzdC9yZXF1ZXN0LWNvbnN1bWUt
ZW1wdHkuaHRtbApAQCAtMCwwICsxLDgxIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorICA8
aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHRpdGxlPlJlcXVlc3QgY29u
c3VtZSBlbXB0eSBib2RpZXM8L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9ImhlbHAiIGhyZWY9Imh0
dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cub3JnLyNyZXF1ZXN0Ij4KKyAgICA8bWV0YSBuYW1lPSJo
ZWxwIiBocmVmPSJodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYm9keS1taXhpbiI+Cisg
ICAgPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iQ2Fub24gUmVzZWFyY2ggRnJhbmNlIiBocmVm
PSJodHRwczovL3d3dy5jcmYuY2Fub24uZnIiPgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAg
PHNjcmlwdD4KKyAgICBmdW5jdGlvbiBjaGVja0JvZHlUZXh0KHJlcXVlc3QpIHsKKyAgICAgIHJl
dHVybiByZXF1ZXN0LnRleHQoKS50aGVuKCBmdW5jdGlvbihib2R5QXNUZXh0KSB7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoYm9keUFzVGV4dCwgIiIsICJSZXNvbHZlZCB2YWx1ZSBzaG91bGQgYmUg
ZW1wdHkiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlcXVlc3QuYm9keVVzZWQpOworICAgICAg
fSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5QmxvYihyZXF1ZXN0KSB7CisgICAg
ICByZXR1cm4gcmVxdWVzdC5ibG9iKCkudGhlbihmdW5jdGlvbihib2R5QXNCbG9iKSB7CisgICAg
ICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkg
eworICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOworICAgICAgICAgIHJl
YWRlci5vbmxvYWQgPSBmdW5jdGlvbihldnQpIHsKKyAgICAgICAgICAgIHJlc29sdmUocmVhZGVy
LnJlc3VsdCkKKyAgICAgICAgICB9OworICAgICAgICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICByZWplY3QoIkJsb2IncyByZWFkZXIgZmFpbGVkIik7CisgICAg
ICAgICAgfTsKKyAgICAgICAgICByZWFkZXIucmVhZEFzVGV4dChib2R5QXNCbG9iKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oZnVuY3Rpb24oYm9keSkgeworICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoYm9keSwgIiIsICJSZXNvbHZlZCB2YWx1ZSBzaG91bGQgYmUg
ZW1wdHkiKTsKKyAgICAgICAgICBhc3NlcnRfZmFsc2UocmVxdWVzdC5ib2R5VXNlZCk7CisgICAg
ICAgIH0pOworICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5QXJyYXlC
dWZmZXIocmVxdWVzdCkgeworICAgICAgcmV0dXJuIHJlcXVlc3QuYXJyYXlCdWZmZXIoKS50aGVu
KCBmdW5jdGlvbihib2R5QXNBcnJheUJ1ZmZlcikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKGJv
ZHlBc0FycmF5QnVmZmVyLmJ5dGVMZW5ndGgsIDAsICJSZXNvbHZlZCB2YWx1ZSBzaG91bGQgYmUg
ZW1wdHkiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlcXVlc3QuYm9keVVzZWQpOworICAgICAg
fSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5SlNPTihyZXF1ZXN0KSB7CisgICAg
ICByZXR1cm4gcmVxdWVzdC5qc29uKCkudGhlbigKKyAgICAgICAgKGJvZHlBc0pTT04pID0+IHsK
KyAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJKU09OIHBhcnNpbmcgc2hvdWxkIGZhaWwiKTsK
KyAgICAgICAgfSwKKyAgICAgICAgKCkgPT4geworICAgICAgICAgIGFzc2VydF9mYWxzZShyZXF1
ZXN0LmJvZHlVc2VkKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tC
b2R5Rm9ybURhdGEocmVxdWVzdCkgeworICAgICAgcmV0dXJuIHJlcXVlc3QuZm9ybURhdGEoKS50
aGVuKGZ1bmN0aW9uKGJvZHlBc0Zvcm1EYXRhKSB7CisgICAgICAgIGFzc2VydF90cnVlKGJvZHlB
c0Zvcm1EYXRhIGluc3RhbmNlb2YgRm9ybURhdGEsICJTaG91bGQgcmVjZWl2ZSBhIEZvcm1EYXRh
Iik7CisgICAgICAgIGFzc2VydF9mYWxzZShyZXF1ZXN0LmJvZHlVc2VkKTsKKyAgICAgfSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tSZXF1ZXN0Qm9keShib2R5VHlwZSwgY2hlY2tGdW5j
dGlvbikgeworICAgICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgdmFy
IHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgiIiwgeyJtZXRob2QiOiAiUE9TVCJ9KTsKKyAgICAgICAg
YXNzZXJ0X2ZhbHNlKHJlcXVlc3QuYm9keVVzZWQpOworICAgICAgICByZXR1cm4gY2hlY2tGdW5j
dGlvbihyZXF1ZXN0KTsKKyAgICAgIH0sICJDb25zdW1lIHJlcXVlc3QncyBib2R5IGFzICIgKyBi
b2R5VHlwZSk7CisgICAgfQorCisgICAgdmFyIGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7Cisg
ICAgY2hlY2tSZXF1ZXN0Qm9keSgidGV4dCIsIGNoZWNrQm9keVRleHQpOworICAgIGNoZWNrUmVx
dWVzdEJvZHkoImJsb2IiLCBjaGVja0JvZHlCbG9iKTsKKyAgICBjaGVja1JlcXVlc3RCb2R5KCJh
cnJheUJ1ZmZlciIsIGNoZWNrQm9keUFycmF5QnVmZmVyKTsKKyAgICBjaGVja1JlcXVlc3RCb2R5
KCJqc29uIiwgY2hlY2tCb2R5SlNPTik7CisgICAgY2hlY2tSZXF1ZXN0Qm9keSgiZm9ybURhdGEi
LCBjaGVja0JvZHlGb3JtRGF0YSk7CisKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9y
ZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
YzRhMTE2Zjk4NTYxY2EwMTY4YjM2YzgxNmNlMGU0NzljMmU3NDBlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkv
cmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3
IEBACisKK1BBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgdGV4dCAKK1BBU1MgQ29uc3Vt
ZSByZXNwb25zZSdzIGJvZHkgYXMgYmxvYiAKK1BBU1MgQ29uc3VtZSByZXNwb25zZSdzIGJvZHkg
YXMgYXJyYXlCdWZmZXIgCitQQVNTIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGpzb24gCitG
QUlMIENvbnN1bWUgcmVzcG9uc2UncyBib2R5IGFzIGZvcm1EYXRhIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiB1bmRlZmluZWQKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9u
c2UvcmVzcG9uc2UtY29uc3VtZS1lbXB0eS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvcmVzcG9uc2UvcmVzcG9uc2UtY29uc3VtZS1l
bXB0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhZjUyMWE4NDRmOGM4OGM4N2Y2YzhmMjljYzhlMGE1OWEy
OWQyYjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9yZXNwb25zZS9yZXNwb25zZS1jb25zdW1lLWVtcHR5Lmh0
bWwKQEAgLTAsMCArMSw4MSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+Cisg
ICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDx0aXRsZT5SZXNwb25zZSBjb25zdW1lIGVt
cHR5IGJvZGllczwvdGl0bGU+CisgICAgPG1ldGEgbmFtZT0iaGVscCIgaHJlZj0iaHR0cHM6Ly9m
ZXRjaC5zcGVjLndoYXR3Zy5vcmcvI3Jlc3BvbnNlIj4KKyAgICA8bWV0YSBuYW1lPSJoZWxwIiBo
cmVmPSJodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jYm9keS1taXhpbiI+CisgICAgPG1l
dGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iQ2Fub24gUmVzZWFyY2ggRnJhbmNlIiBocmVmPSJodHRw
czovL3d3dy5jcmYuY2Fub24uZnIiPgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlw
dD4KKyAgICBmdW5jdGlvbiBjaGVja0JvZHlUZXh0KHJlc3BvbnNlKSB7CisgICAgICByZXR1cm4g
cmVzcG9uc2UudGV4dCgpLnRoZW4oIGZ1bmN0aW9uKGJvZHlBc1RleHQpIHsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhib2R5QXNUZXh0LCAiIiwgIlJlc29sdmVkIHZhbHVlIHNob3VsZCBiZSBlbXB0
eSIpOworICAgICAgICBhc3NlcnRfZmFsc2UocmVzcG9uc2UuYm9keVVzZWQpOworICAgICAgfSk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5QmxvYihyZXNwb25zZSkgeworICAgICAg
cmV0dXJuIHJlc3BvbnNlLmJsb2IoKS50aGVuKGZ1bmN0aW9uKGJvZHlBc0Jsb2IpIHsKKyAgICAg
ICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7
CisgICAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CisgICAgICAgICAgcmVh
ZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKGV2dCkgeworICAgICAgICAgICAgcmVzb2x2ZShyZWFkZXIu
cmVzdWx0KQorICAgICAgICAgIH07CisgICAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHJlamVjdCgiQmxvYidzIHJlYWRlciBmYWlsZWQiKTsKKyAgICAg
ICAgICB9OworICAgICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGJvZHlBc0Jsb2IpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2UudGhlbihmdW5jdGlvbihib2R5KSB7CisgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhib2R5LCAiIiwgIlJlc29sdmVkIHZhbHVlIHNob3VsZCBiZSBl
bXB0eSIpOworICAgICAgICAgIGFzc2VydF9mYWxzZShyZXNwb25zZS5ib2R5VXNlZCk7CisgICAg
ICAgIH0pOworICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5QXJyYXlC
dWZmZXIocmVzcG9uc2UpIHsKKyAgICAgIHJldHVybiByZXNwb25zZS5hcnJheUJ1ZmZlcigpLnRo
ZW4oIGZ1bmN0aW9uKGJvZHlBc0FycmF5QnVmZmVyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
Ym9keUFzQXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCwgMCwgIlJlc29sdmVkIHZhbHVlIHNob3VsZCBi
ZSBlbXB0eSIpOworICAgICAgICBhc3NlcnRfZmFsc2UocmVzcG9uc2UuYm9keVVzZWQpOworICAg
ICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tCb2R5SlNPTihyZXNwb25zZSkgewor
ICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKS50aGVuKAorICAgICAgICAoYm9keUFzSlNPTikg
PT4geworICAgICAgICAgIGFzc2VydF91bnJlYWNoZWQoIkpTT04gcGFyc2luZyBzaG91bGQgZmFp
bCIpOworICAgICAgICB9LAorICAgICAgICAoKSA9PiB7CisgICAgICAgICAgYXNzZXJ0X2ZhbHNl
KHJlc3BvbnNlLmJvZHlVc2VkKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
Y2hlY2tCb2R5Rm9ybURhdGEocmVzcG9uc2UpIHsKKyAgICAgIHJldHVybiByZXNwb25zZS5mb3Jt
RGF0YSgpLnRoZW4oZnVuY3Rpb24oYm9keUFzRm9ybURhdGEpIHsKKyAgICAgICAgYXNzZXJ0X3Ry
dWUoYm9keUFzRm9ybURhdGEgaW5zdGFuY2VvZiBGb3JtRGF0YSwgIlNob3VsZCByZWNlaXZlIGEg
Rm9ybURhdGEiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKHJlc3BvbnNlLmJvZHlVc2VkKTsKKyAg
ICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tSZXNwb25zZUJvZHkoYm9keVR5cGUs
IGNoZWNrRnVuY3Rpb24pIHsKKyAgICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0ZXN0KSB7Cisg
ICAgICAgIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZSgpOworICAgICAgICBhc3NlcnRfZmFs
c2UocmVzcG9uc2UuYm9keVVzZWQpOworICAgICAgICByZXR1cm4gY2hlY2tGdW5jdGlvbihyZXNw
b25zZSk7CisgICAgICB9LCAiQ29uc3VtZSByZXNwb25zZSdzIGJvZHkgYXMgIiArIGJvZHlUeXBl
KTsKKyAgICB9CisKKyAgICB2YXIgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTsKKyAgICBjaGVj
a1Jlc3BvbnNlQm9keSgidGV4dCIsIGNoZWNrQm9keVRleHQpOworICAgIGNoZWNrUmVzcG9uc2VC
b2R5KCJibG9iIiwgY2hlY2tCb2R5QmxvYik7CisgICAgY2hlY2tSZXNwb25zZUJvZHkoImFycmF5
QnVmZmVyIiwgY2hlY2tCb2R5QXJyYXlCdWZmZXIpOworICAgIGNoZWNrUmVzcG9uc2VCb2R5KCJq
c29uIiwgY2hlY2tCb2R5SlNPTik7CisgICAgY2hlY2tSZXNwb25zZUJvZHkoImZvcm1EYXRhIiwg
Y2hlY2tCb2R5Rm9ybURhdGEpOworCisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>