<?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>150895</bug_id>
          
          <creation_ts>2015-11-04 10:17:09 -0800</creation_ts>
          <short_desc>[Streams API] Shield implementation from user mangling Promise.reject and resolve methods</short_desc>
          <delta_ts>2015-11-05 06:02:13 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xabier Rodríguez Calvar">calvaris</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1139374</commentid>
    <comment_count>0</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-11-04 10:17:09 -0800</bug_when>
    <thetext>[Streams API] Shield implementation from user mangling Promise.reject and resolve methods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139378</commentid>
    <comment_count>1</comment_count>
      <attachid>264797</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-11-04 10:28:34 -0800</bug_when>
    <thetext>Created attachment 264797
Patch

The idea of this patch is shielding the Streams implementation from any changes that the user can do to the Promise constructor or prototype. This case tackles the touching the constructor resolve and reject functions to create already vended promises. Given that there&apos;s other (known) way of getting the original implementation of those functions (prior to the user changing them), we keep them in an internal slot for later usage and in the code we avoid using @Promise.resolve and reject to use @Promise.@resolve and @reject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139420</commentid>
    <comment_count>2</comment_count>
      <attachid>264797</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-04 13:40:12 -0800</bug_when>
    <thetext>Comment on attachment 264797
Patch

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

&gt; Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp:87
&gt; +    putDirectWithoutTransition(vm, vm.propertyNames-&gt;builtinNames().rejectPrivateName(), JSFunction::createBuiltinFunction(vm, promiseConstructorRejectCodeGenerator(vm), globalObject, vm.propertyNames-&gt;builtinNames().rejectPrivateName().string()), DontEnum | DontDelete | ReadOnly);

No need for function name. Also, I think you can use JSC_BUILTIN_FUNCTION macro instead.

These private slots are probably not needed for InternalPromise.
We could move this init code to another function, but I think this is ok as is.

&gt; LayoutTests/streams/streams-promises.html:10
&gt;      Promise = function() { throw new Error(&quot;nasty things&quot;); };

I would prefer having PromiseBackup inside the test block.
Promise can be set again at the end of the test using try/finally.

Also, instead of &quot;throw new Error(...)&quot;, assert_unreached(&quot;...&quot;) can be used.

&gt; LayoutTests/streams/streams-promises.html:13
&gt;      const ws = new WritableStream(); // Does not throw.

Maybe remove const rs/const ws and the comments as well.

&gt; LayoutTests/streams/streams-promises.html:19
&gt; +    Promise.resolve = function() { throw new Error(&quot;nasty resolve things&quot;); };

Ditto for assert_unreached.

&gt; LayoutTests/streams/streams-promises.html:20
&gt; +    Promise.reject = function() { throw new Error(&quot;nasty reject things&quot;); };

Promise.reject is probably not tested here.
It would be good to add a specific test for it.

&gt; LayoutTests/streams/streams-promises.html:23
&gt; +    const ws = new WritableStream(); // Does not throw.

Ditto for rs/ws and comments.

We can also set again Promise.resolve and Promise.reject properly at the end of this test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139571</commentid>
    <comment_count>3</comment_count>
      <attachid>264847</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-11-05 02:49:59 -0800</bug_when>
    <thetext>Created attachment 264847
Patch

Honored Youenn&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139579</commentid>
    <comment_count>4</comment_count>
      <attachid>264850</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-11-05 04:16:42 -0800</bug_when>
    <thetext>Created attachment 264850
Patch

As spoken with Youenn on IRC, I fixed the third test, fixed the comments, improved the error messages and save/restore only the things that we mangle during the given test. I also made that the internal slots are not added to @InternalPromise as suggested for the previous and and improved the test names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139582</commentid>
    <comment_count>5</comment_count>
      <attachid>264850</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-05 04:38:28 -0800</bug_when>
    <thetext>Comment on attachment 264850
Patch

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

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:411
&gt; +    promiseConstructor-&gt;addOwnInternalSlots(vm, this);

Can you move the call to addOwnInternalSlots within JSPromiseConstructor::create?

&gt; Source/JavaScriptCore/runtime/JSPromiseConstructor.h:44
&gt; +    void addOwnInternalSlots(VM&amp;, JSGlobalObject*);

Can it be private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139583</commentid>
    <comment_count>6</comment_count>
      <attachid>264851</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-11-05 04:53:04 -0800</bug_when>
    <thetext>Created attachment 264851
Patch

Made addOwnInternalSlots private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139598</commentid>
    <comment_count>7</comment_count>
      <attachid>264851</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-05 06:02:08 -0800</bug_when>
    <thetext>Comment on attachment 264851
Patch

Clearing flags on attachment: 264851

Committed r192057: &lt;http://trac.webkit.org/changeset/192057&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139599</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-05 06:02:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264797</attachid>
            <date>2015-11-04 10:28:34 -0800</date>
            <delta_ts>2015-11-05 02:49:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150895-20151104192736.patch</filename>
            <type>text/plain</type>
            <size>21678</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YjY4NTliMTU2MGM0OTQ5NWEwNTdjMmFmZTU1NTNmYzcwNDEzN2M5Li45NzkwZjliODE2NjJkNGUy
ZDI4ODYxMzFmZmRjNGMxNGU3ZGE2YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNS0xMS0wNCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJp
c0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gU2hpZWxkIGltcGxlbWVudGF0
aW9uIGZyb20gdXNlciBtYW5nbGluZyBQcm9taXNlLnJlamVjdCBhbmQgcmVzb2x2ZSBtZXRob2Rz
ICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtl
ZXAgUHJvbWlzZS5yZXNvbHZlIGFuZCByZWplY3QgYWxzbyBhcyBpbnRlcm5hbCBzbG90cyBnaXZl
biB0aGF0IHRoZXJlIGlzIG5vIHdheSB0byByZXRyaWV2ZSB0aGUgZm9ybWVyCisgICAgICAgIGlt
cGxlbWVudGF0aW9uIGlmIHRoZSB1c2VyIGRlY2lkZXMgdG8gcmVwbGFjZSBpdC4gVGhpcyBhbGxv
d3MgdG8gc2FmZWx5IGNyZWF0ZSB2ZW5kZWQgcHJvbWlzZXMgZXZlbiBpZiB0aGUgdXNlcgorICAg
ICAgICBjaGFuZ2VzIHRoZSBjb25zdHJ1Y3RvciBtZXRob2RzLgorCisgICAgICAgICogcnVudGlt
ZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJv
bWlzZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3I6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oOgorCiAyMDE1
LTExLTAzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtKU0NdIEFkZCBCMy10by1BaXIgbG93ZXJpbmcgZm9yIEJpdFhvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDBj
NDdlMGJhYWM0OTFhZjVkMGU4YmIxYzZmYTk5ZjkzY2E3NzU0YzQuLjAyOGY3ZTAzZmMyNjEzZTVh
MGJiZjNmODNkOTc3NzQyYzYwMDBhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzOSBAQAogMjAx
NS0xMS0wNCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgog
CisgICAgICAgIFtTdHJlYW1zIEFQSV0gU2hpZWxkIGltcGxlbWVudGF0aW9uIGZyb20gdXNlciBt
YW5nbGluZyBQcm9taXNlLnJlamVjdCBhbmQgcmVzb2x2ZSBtZXRob2RzICAgICAKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDg5NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgYWxsIGNhbGxz
IHRvIFByb21pc2UucmVzb2x2ZSBhbmQgUHJvbWlzZS5yZWplY3Qgd2l0aCB0aGVpciBpbnRlcm5h
bCBzbG90IGNvdW50ZXJwYXJ0cy4gVGhpcyB3YXkgd2UKKyAgICAgICAgZW5zdXJlIHRoYXQgaWYg
dGhlIHVzZXIgcmVwbGFjZXMgdGhvc2UgY29uc3RydWN0b3IgbWV0aG9kcywgb3VyIGltcGxlbWVu
dGF0aW9uIHN0aWxsIHdvcmtzLgorCisgICAgICAgIFRlc3Q6IHN0cmVhbXMvc3RyZWFtcy1wcm9t
aXNlcy5odG1sLgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpz
OgorICAgICAgICAoaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKGNhbmNlbCk6
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzOgor
ICAgICAgICAocHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAg
IChjYW5jZWxSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChyZWFkRnJvbVJlYWRhYmxlU3RyZWFt
UmVhZGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIu
anM6CisgICAgICAgIChjYW5jZWwpOgorICAgICAgICAocmVhZCk6CisgICAgICAgIChjbG9zZWQp
OgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAg
IChwcm9taXNlSW52b2tlT3JOb29wKToKKyAgICAgICAgKHByb21pc2VJbnZva2VPckZhbGxiYWNr
T3JOb29wKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanM6Cisg
ICAgICAgIChpbml0aWFsaXplV3JpdGFibGVTdHJlYW0pOgorICAgICAgICAoYWJvcnQpOgorICAg
ICAgICAoY2xvc2UpOgorICAgICAgICAod3JpdGUpOgorICAgICAgICAoY2xvc2VkKToKKyAgICAg
ICAgKHJlYWR5KToKKworMjAxNS0xMS0wNCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2
YXJpc0BpZ2FsaWEuY29tPgorCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gU2hpZWxkIHN0cmVhbXMg
YWdhaW5zdCB1c2VyIHJlcGxhY2luZyB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvcgogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODg3CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5jcHAKaW5kZXggODY3Y2YyZGQwMTNhZDI5Y2FhNDVkNDZiNWRmMGI4ODIx
OGZmNjQ2Ni4uYWY0YWVmNGE1Mjk4NjYxOTI4MWE0NjEwNjQ0OGJlYTFlM2M2OWQ4MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgY29uc3QgQ2xhc3NJbmZv
IEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJh
c2U6OnNfaW4KIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IqIEpTSW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0ludGVy
bmFsUHJvbWlzZVByb3RvdHlwZSogcHJvbWlzZVByb3RvdHlwZSkKIHsKICAgICBKU0ludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwotICAgIGNvbnN0cnVjdG9yLT5maW5pc2hD
cmVhdGlvbih2bSwgcHJvbWlzZVByb3RvdHlwZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpLCBwcm9taXNlUHJvdG90eXBlKTsK
ICAgICByZXR1cm4gY29uc3RydWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAppbmRleCBhOWJhMWM1OTI2
NzBjZTFmNjU1MTI0NTJjYmMzODMwZjc5MTAwYWRmLi41N2NlNDhjMzQzYzI5ZTI3NDBhNzgyZGVh
NDI0ZmQ1N2I0YzI1Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
TG9va3VwLmgiCkBAIC02Myw3ICs2NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmcHJvCiBKU1By
b21pc2VDb25zdHJ1Y3RvciogSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm90b3R5cGUp
CiB7CiAgICAgSlNQcm9taXNlQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNQcm9taXNlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1Byb21pc2VD
b25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKLSAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRp
b24odm0sIHByb21pc2VQcm90b3R5cGUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlv
bih2bSwgc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSwgcHJvbWlzZVByb3RvdHlwZSk7CiAgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOwogfQogCkBAIC03NywxMSArNzgsMTMgQEAgSlNQcm9taXNlQ29u
c3RydWN0b3I6OkpTUHJvbWlzZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiB7CiB9CiAKLXZvaWQgSlNQcm9taXNlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNQcm9taXNlUHJvdG90eXBlKiBwcm9taXNlUHJvdG90eXBlKQordm9pZCBKU1Byb21p
c2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm90b3R5cGUpCiB7CiAgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiUHJvbWlzZSIpKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBwcm9taXNlUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkucmVzb2x2ZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5j
dGlvbih2bSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0b3Iodm0pLCBnbG9i
YWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlc29sdmVQcml2YXRl
TmFtZSgpLnN0cmluZygpKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24odm0sIHByb21pc2VDb25zdHJ1Y3RvclJlamVjdENvZGVHZW5lcmF0b3Iodm0pLCBnbG9i
YWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlamVjdFByaXZhdGVO
YW1lKCkuc3RyaW5nKCkpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiB9CiAK
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdFByb21pc2UoRXhl
Y1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvbWlzZUNvbnN0cnVjdG9yLmgKaW5kZXggZGFlNTJkM2E4Y2Y1MGJkMmQ2Mjk3MmYxNmI3MjU2
N2JmZDBjMzVkNy4uYmY2YWQ1NDQ5ZDA1ZDQwYzMyYjFiYWUyYmYzZTJmZWVmMmM3MjM0MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1
Y3Rvci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEpTUHJv
bWlzZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlv
bihWTSYsIEpTUHJvbWlzZVByb3RvdHlwZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTUHJvbWlzZVByb3RvdHlwZSopOwogCiBwcml2YXRlOgogICAg
IHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0
RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmpzCmluZGV4IDc4NWE1NWQxZWRjN2Y5MjcxZWJjNTM1N2I4ODRkMTdjMzU0YjE3YTQuLjY4
NmIzNTY1Yzk3NjIxYzVkMGU5N2M4ZWVmNTgwODhlY2M4Yzg5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKQEAgLTU2LDcgKzU2LDcg
QEAgZnVuY3Rpb24gaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtKHVuZGVybHlpbmdTb3VyY2UsIHN0
cmF0ZWd5KQogCiAgICAgdmFyIHJlc3VsdCA9IEBpbnZva2VPck5vb3AodW5kZXJseWluZ1NvdXJj
ZSwgInN0YXJ0IiwgW3RoaXMuQGNvbnRyb2xsZXJdKTsKICAgICB2YXIgX3RoaXMgPSB0aGlzOwot
ICAgIEBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50aGVuKGZ1bmN0aW9uKCkgeworICAgIEBQcm9t
aXNlLkByZXNvbHZlKHJlc3VsdCkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgX3RoaXMuQHN0
YXJ0ZWQgPSB0cnVlOwogICAgICAgICBAcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChfdGhpcyk7
CiAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsKQEAgLTcyLDEwICs3MiwxMCBAQCBmdW5jdGlvbiBj
YW5jZWwocmVhc29uKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzUmVhZGFibGVT
dHJlYW0odGhpcykpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJy
b3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbSIpKTsKKyAg
ICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNo
b3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbSIpKTsKIAogICAgIGlmIChAaXNSZWFk
YWJsZVN0cmVhbUxvY2tlZCh0aGlzKSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdChu
ZXcgQFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkIikpOworICAgICAgICByZXR1
cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbG9j
a2VkIikpOwogCiAgICAgcmV0dXJuIEBjYW5jZWxSZWFkYWJsZVN0cmVhbSh0aGlzLCByZWFzb24p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IGYwZjczOGI5ZWU0NTVhZWRkNDcyNzU0NDY1M2U0
OThmNTRmM2E0ZjMuLjAwMGMwYTZkMmVhNTMxNTk0ZmU2MjQ5YWRlYzU5ZWJiOWZlZmI4ZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUlu
dGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1JbnRlcm5hbHMuanMKQEAgLTQ4LDEzICs0OCwxMyBAQCBmdW5jdGlvbiBwcml2YXRlSW5p
dGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHN0cmVhbSkKICAgICBpZiAoc3RyZWFtLkBzdGF0
ZSA9PT0gQHN0cmVhbUNsb3NlZCkgewogICAgICAgICB0aGlzLkBvd25lclJlYWRhYmxlU3RyZWFt
ID0gbnVsbDsKICAgICAgICAgdGhpcy5Ac3RvcmVkRXJyb3IgPSB1bmRlZmluZWQ7Ci0gICAgICAg
IHRoaXMuQGNsb3NlZFByb21pc2VDYXBhYmlsaXR5ID0geyBAcHJvbWlzZTogQFByb21pc2UucmVz
b2x2ZSh1bmRlZmluZWQpIH07CisgICAgICAgIHRoaXMuQGNsb3NlZFByb21pc2VDYXBhYmlsaXR5
ID0geyBAcHJvbWlzZTogQFByb21pc2UuQHJlc29sdmUoKSB9OwogICAgICAgICByZXR1cm4gdGhp
czsKICAgICB9CiAgICAgLy8gRklYTUU6IEFTU0VSVChzdHJlYW0uQHN0YXRlID09PSBAc3RyZWFt
RXJyb3JlZCk7CiAgICAgdGhpcy5Ab3duZXJSZWFkYWJsZVN0cmVhbSA9IG51bGw7CiAgICAgdGhp
cy5Ac3RvcmVkRXJyb3IgPSBzdHJlYW0uQHN0b3JlZEVycm9yOwotICAgIHRoaXMuQGNsb3NlZFBy
b21pc2VDYXBhYmlsaXR5ID0geyBAcHJvbWlzZTogQFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3Rv
cmVkRXJyb3IpIH07CisgICAgdGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkgPSB7IEBwcm9t
aXNlOiBAUHJvbWlzZS5AcmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpIH07CiAKICAgICByZXR1
cm4gdGhpczsKIH0KQEAgLTI3NSw5ICsyNzUsOSBAQCBmdW5jdGlvbiBjYW5jZWxSZWFkYWJsZVN0
cmVhbShzdHJlYW0sIHJlYXNvbikKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoc3RyZWFt
LkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NlZCkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlc29s
dmUoKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKCk7CiAgICAgaWYgKHN0cmVh
bS5Ac3RhdGUgPT09IEBzdHJlYW1FcnJvcmVkKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVq
ZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVj
dChzdHJlYW0uQHN0b3JlZEVycm9yKTsKICAgICBzdHJlYW0uQHF1ZXVlID0gQG5ld1F1ZXVlKCk7
CiAgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOwogICAgIHJldHVybiBA
cHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBb
cmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7CkBAIC0zNTQsOSArMzU0LDkgQEAgZnVuY3Rp
b24gcmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpCiAgICAgInVzZSBzdHJpY3Qi
OwogCiAgICAgaWYgKHJlYWRlci5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zZWQpCi0gICAgICAgIHJl
dHVybiBAUHJvbWlzZS5yZXNvbHZlKHt2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlfSk7Cisg
ICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZSh7dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTog
dHJ1ZX0pOwogICAgIGlmIChyZWFkZXIuQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCkKLSAgICAg
ICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdChyZWFkZXIuQHN0b3JlZEVycm9yKTsKKyAgICAgICAg
cmV0dXJuIEBQcm9taXNlLkByZWplY3QocmVhZGVyLkBzdG9yZWRFcnJvcik7CiAgICAgLy8gRklY
TUU6IEFTU0VSVCghIXJlYWRlci5Ab3duZXJSZWFkYWJsZVN0cmVhbSk7CiAgICAgLy8gRklYTUU6
IEFTU0VSVChyZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0uQHN0YXRlID09PSBAc3RyZWFtUmVh
ZGFibGUpOwogICAgIHZhciBzdHJlYW0gPSByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW07CkBA
IC0zNjYsNyArMzY2LDcgQEAgZnVuY3Rpb24gcmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcihy
ZWFkZXIpCiAgICAgICAgICAgICBAcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pOwog
ICAgICAgICBlbHNlIGlmICghc3RyZWFtLkBxdWV1ZS5jb250ZW50Lmxlbmd0aCkKICAgICAgICAg
ICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKLSAgICAgICAgcmV0dXJu
IEBQcm9taXNlLnJlc29sdmUoe3ZhbHVlOiBjaHVuaywgZG9uZTogZmFsc2V9KTsKKyAgICAgICAg
cmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKHt2YWx1ZTogY2h1bmssIGRvbmU6IGZhbHNlfSk7CiAg
ICAgfQogICAgIHZhciByZWFkUHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxp
dHkoQFByb21pc2UpOwogICAgIHJlYWRlci5AcmVhZFJlcXVlc3RzLnB1c2gocmVhZFByb21pc2VD
YXBhYmlsaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVJlYWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVJlYWRlci5qcwppbmRleCBjNzVhZGIyYWEzODEwZWVkNWRhMDkyNDRmZTEy
YjBhYzc4NWJiNDZkLi45NWQzMmEzYzVhN2U2M2VlZGVhOTUyODE3MzdlOTcxMjE4NTAwMzZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1S
ZWFkZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtUmVhZGVyLmpzCkBAIC0zMCwxMyArMzAsMTMgQEAgZnVuY3Rpb24gY2FuY2VsKHJlYXNvbikK
ICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHRo
aXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJGdW5j
dGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7CisgICAg
ICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91
bGQgYmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7CiAKICAgICBpZiAodGhp
cy5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zZWQpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZXNv
bHZlKCk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZSgpOwogCiAgICAgaWYgKHRo
aXMuQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJl
amVjdCh0aGlzLkBzdG9yZWRFcnJvcik7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0
KHRoaXMuQHN0b3JlZEVycm9yKTsKIAogICAgIC8vIEZJWE1FOiBBU1NFUlQoQGlzUmVhZGFibGVT
dHJlYW0odGhpcy5Ab3duZXJSZWFkYWJsZVN0cmVhbSkpOwogICAgIC8vIEZJWE1FOiBBU1NFUlQo
dGhpcy5Ab3duZXJSZWFkYWJsZVN0cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1SZWFkYWJsZSk7CkBA
IC00OCw3ICs0OCw3IEBAIGZ1bmN0aW9uIHJlYWQoKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAg
IGlmICghQGlzUmVhZGFibGVTdHJlYW1SZWFkZXIodGhpcykpCi0gICAgICAgIHJldHVybiBAUHJv
bWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24g
YSBSZWFkYWJsZVN0cmVhbVJlYWRlciIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWpl
Y3QobmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJs
ZVN0cmVhbVJlYWRlciIpKTsKIAogICAgIHJldHVybiBAcmVhZEZyb21SZWFkYWJsZVN0cmVhbVJl
YWRlcih0aGlzKTsKIH0KQEAgLTc0LDcgKzc0LDcgQEAgZnVuY3Rpb24gY2xvc2VkKCkKICAgICAi
dXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMpKQot
ICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJDYWxsZWUgb2Yg
Y2xvc2VkIGlzIG5vdCBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIikpOworICAgICAgICByZXR1cm4g
QFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiQ2FsbGVlIG9mIGNsb3NlZCBpcyBub3Qg
YSBSZWFkYWJsZVN0cmVhbVJlYWRlciIpKTsKIAogICAgIHJldHVybiB0aGlzLkBjbG9zZWRQcm9t
aXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IDA0NzVjNTEwZTdmMGRkMmU5NTA4OGZi
NDVjNjU3YWI4YjVhMDZlYzIuLjA5Nzk3YmIwOTJiMGYyYmQwYjFkMDczMGVmN2QzOTAxYWI2NjEy
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRl
cm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVy
bmFscy5qcwpAQCAtNDQsMTIgKzQ0LDEyIEBAIGZ1bmN0aW9uIHByb21pc2VJbnZva2VPck5vb3Ao
b2JqZWN0LCBrZXksIGFyZ3MpCiAgICAgdHJ5IHsKICAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVj
dFtrZXldOwogICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCi0gICAg
ICAgICAgICByZXR1cm4gQFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLkByZXNvbHZlKCk7CiAgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9i
amVjdCwgYXJncyk7Ci0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7Cisg
ICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZShyZXN1bHQpOwogICAgIH0KICAgICBjYXRj
aChlcnJvcikgewotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoZXJyb3IpOwogICAgIH0KIAogfQpAQCAtNjMsMTAg
KzYzLDEwIEBAIGZ1bmN0aW9uIHByb21pc2VJbnZva2VPckZhbGxiYWNrT3JOb29wKG9iamVjdCwg
a2V5MSwgYXJnczEsIGtleTIsIGFyZ3MyKQogICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0g
InVuZGVmaW5lZCIpCiAgICAgICAgICAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aob2Jq
ZWN0LCBrZXkyLCBhcmdzMik7CiAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG1ldGhvZC5AYXBwbHko
b2JqZWN0LCBhcmdzMSk7Ci0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7
CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZShyZXN1bHQpOwogICAgIH0KICAgICBj
YXRjaChlcnJvcikgewotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoZXJyb3IpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCmluZGV4IDQ3
NjdhOWQzODEzMTlhNmFhZWM0OGZjZGY1NDNlN2FmNGQzMDI0ZGMuLmFkOWQxMTAyMTJlNWFkZDFj
Y2MyMWVlNjBjZmM1YzJlMWViNDhkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMKQEAgLTQzLDcgKzQzLDcgQEAgZnVuY3Rpb24gaW5p
dGlhbGl6ZVdyaXRhYmxlU3RyZWFtKHVuZGVybHlpbmdTaW5rLCBzdHJhdGVneSkKIAogICAgIHRo
aXMuQHVuZGVybHlpbmdTaW5rID0gdW5kZXJseWluZ1Npbms7CiAgICAgdGhpcy5AY2xvc2VkUHJv
bWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQFByb21pc2UpOwotICAgIHRo
aXMuQHJlYWR5UHJvbWlzZUNhcGFiaWxpdHkgPSB7IEBwcm9taXNlOiBAUHJvbWlzZS5yZXNvbHZl
KHVuZGVmaW5lZCkgfTsKKyAgICB0aGlzLkByZWFkeVByb21pc2VDYXBhYmlsaXR5ID0geyBAcHJv
bWlzZTogQFByb21pc2UuQHJlc29sdmUoKSB9OwogICAgIHRoaXMuQHF1ZXVlID0gQG5ld1F1ZXVl
KCk7CiAgICAgdGhpcy5Ac3RhdGUgPSBAc3RyZWFtV3JpdGFibGU7CiAgICAgdGhpcy5Ac3RhcnRl
ZCA9IGZhbHNlOwpAQCAtNTUsNyArNTUsNyBAQCBmdW5jdGlvbiBpbml0aWFsaXplV3JpdGFibGVT
dHJlYW0odW5kZXJseWluZ1NpbmssIHN0cmF0ZWd5KQogCiAgICAgdmFyIGVycm9yID0gQGVycm9y
V3JpdGFibGVTdHJlYW0uYmluZCh0aGlzKTsKICAgICB2YXIgc3RhcnRSZXN1bHQgPSBAaW52b2tl
T3JOb29wKHVuZGVybHlpbmdTaW5rLCAic3RhcnQiLCBbZXJyb3JdKTsKLSAgICB0aGlzLkBzdGFy
dGVkUHJvbWlzZSA9IEBQcm9taXNlLnJlc29sdmUoc3RhcnRSZXN1bHQpOworICAgIHRoaXMuQHN0
YXJ0ZWRQcm9taXNlID0gQFByb21pc2UuQHJlc29sdmUoc3RhcnRSZXN1bHQpOwogICAgIHZhciBf
dGhpcyA9IHRoaXM7CiAgICAgdGhpcy5Ac3RhcnRlZFByb21pc2UudGhlbihmdW5jdGlvbigpIHsK
ICAgICAgICAgX3RoaXMuQHN0YXJ0ZWQgPSB0cnVlOwpAQCAtNzAsMTMgKzcwLDEzIEBAIGZ1bmN0
aW9uIGFib3J0KHJlYXNvbikKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dyaXRh
YmxlU3RyZWFtKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlw
ZUVycm9yKCJUaGUgV3JpdGFibGVTdHJlYW0uYWJvcnQgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mIFdyaXRhYmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gQFByb21p
c2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmFib3J0IG1ldGhv
ZCBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKIAog
ICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NlZCkKLSAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNv
bHZlKCk7CiAKICAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1FcnJvcmVkKQotICAgICAg
ICByZXR1cm4gQFByb21pc2UucmVqZWN0KHRoaXMuQHN0b3JlZEVycm9yKTsKKyAgICAgICAgcmV0
dXJuIEBQcm9taXNlLkByZWplY3QodGhpcy5Ac3RvcmVkRXJyb3IpOwogCiAgICAgQGVycm9yV3Jp
dGFibGVTdHJlYW0uQGFwcGx5KHRoaXMsIFtyZWFzb25dKTsKIApAQCAtOTAsMTMgKzkwLDEzIEBA
IGZ1bmN0aW9uIGNsb3NlKCkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dyaXRh
YmxlU3RyZWFtKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlw
ZUVycm9yKCJUaGUgV3JpdGFibGVTdHJlYW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mIFdyaXRhYmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gQFByb21p
c2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmNsb3NlIG1ldGhv
ZCBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKIAog
ICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NlZCB8fCB0aGlzLkBzdGF0ZSA9PT0g
QHN0cmVhbUNsb3NpbmcpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3QobmV3IEBUeXBl
RXJyb3IoIkNhbm5vdCBjbG9zZSBhIFdyaXRhYmxlU3RyaW5nIHRoYXQgaXMgY2xvc2VkIG9yIGNs
b3NpbmciKSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9y
KCJDYW5ub3QgY2xvc2UgYSBXcml0YWJsZVN0cmluZyB0aGF0IGlzIGNsb3NlZCBvciBjbG9zaW5n
IikpOwogCiAgICAgaWYgKHRoaXMuQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCkKLSAgICAgICAg
cmV0dXJuIEBQcm9taXNlLnJlamVjdCh0aGlzLkBzdG9yZWRFcnJvcik7CisgICAgICAgIHJldHVy
biBAUHJvbWlzZS5AcmVqZWN0KHRoaXMuQHN0b3JlZEVycm9yKTsKIAogICAgIGlmICh0aGlzLkBz
dGF0ZSA9PT0gQHN0cmVhbVdhaXRpbmcpCiAgICAgICAgIHRoaXMuQHJlYWR5UHJvbWlzZUNhcGFi
aWxpdHkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB1bmRlZmluZWQpOwpAQCAtMTEzLDEzICsx
MTMsMTMgQEAgZnVuY3Rpb24gd3JpdGUoY2h1bmspCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAg
aWYgKCFAaXNXcml0YWJsZVN0cmVhbSh0aGlzKSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJl
amVjdChuZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmNsb3NlIG1ldGhvZCBjYW4g
b25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKKyAgICAgICAg
cmV0dXJuIEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVh
bS5jbG9zZSBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVT
dHJlYW0iKSk7CiAKICAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zZWQgfHwgdGhp
cy5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zaW5nKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVq
ZWN0KG5ldyBAVHlwZUVycm9yKCJDYW5ub3Qgd3JpdGUgb24gYSBXcml0YWJsZVN0cmluZyB0aGF0
IGlzIGNsb3NlZCBvciBjbG9zaW5nIikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVj
dChuZXcgQFR5cGVFcnJvcigiQ2Fubm90IHdyaXRlIG9uIGEgV3JpdGFibGVTdHJpbmcgdGhhdCBp
cyBjbG9zZWQgb3IgY2xvc2luZyIpKTsKIAogICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVh
bUVycm9yZWQpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3QodGhpcy5Ac3RvcmVkRXJy
b3IpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdCh0aGlzLkBzdG9yZWRFcnJvcik7
CiAKICAgICAvLyBGSVhNRQogICAgIC8vIGFzc2VydCh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbVdy
aXRhYmxlIHx8IHRoaXMuQHN0YXRlID09PSBAc3RyZWFtV2FpdGluZyk7CkBAIC0xMzAsNyArMTMw
LDcgQEAgZnVuY3Rpb24gd3JpdGUoY2h1bmspCiAgICAgICAgICAgICBjaHVua1NpemUgPSB0aGlz
LkBzdHJhdGVneS5zaXplLkBjYWxsKHVuZGVmaW5lZCwgY2h1bmspOwogICAgICAgICB9IGNhdGNo
KGUpIHsKICAgICAgICAgICAgIEBlcnJvcldyaXRhYmxlU3RyZWFtLkBjYWxsKHRoaXMsIGUpOwot
ICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdChlKTsKKyAgICAgICAgICAgIHJldHVy
biBAUHJvbWlzZS5AcmVqZWN0KGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzksNyArMTM5
LDcgQEAgZnVuY3Rpb24gd3JpdGUoY2h1bmspCiAgICAgICAgIEBlbnF1ZXVlVmFsdWVXaXRoU2l6
ZSh0aGlzLkBxdWV1ZSwgeyBwcm9taXNlQ2FwYWJpbGl0eTogcHJvbWlzZUNhcGFiaWxpdHksIGNo
dW5rOiBjaHVuayB9LCBjaHVua1NpemUpOwogICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgQGVy
cm9yV3JpdGFibGVTdHJlYW0uQGNhbGwodGhpcywgZSk7Ci0gICAgICAgIHJldHVybiBAUHJvbWlz
ZS5yZWplY3QoZSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KGUpOwogICAgIH0K
IAogICAgIEBzeW5jV3JpdGFibGVTdHJlYW1TdGF0ZVdpdGhRdWV1ZSh0aGlzKTsKQEAgLTE1Myw3
ICsxNTMsNyBAQCBmdW5jdGlvbiBjbG9zZWQoKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlm
ICghQGlzV3JpdGFibGVTdHJlYW0odGhpcykpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWpl
Y3QobmV3IEBUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS5jbG9zZWQgZ2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdyaXRhYmxlU3RyZWFtIikpOworICAgICAgICBy
ZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFt
LmNsb3NlZCBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVT
dHJlYW0iKSk7CiAKICAgICByZXR1cm4gdGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkuQHBy
b21pc2U7CiB9CkBAIC0xNjMsNyArMTYzLDcgQEAgZnVuY3Rpb24gcmVhZHkoKQogICAgICJ1c2Ug
c3RyaWN0IjsKIAogICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0odGhpcykpCi0gICAgICAgIHJl
dHVybiBAUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS5y
ZWFkeSBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJl
YW0iKSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJU
aGUgV3JpdGFibGVTdHJlYW0ucmVhZHkgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFu
Y2VzIG9mIFdyaXRhYmxlU3RyZWFtIikpOwogCiAgICAgcmV0dXJuIHRoaXMuQHJlYWR5UHJvbWlz
ZUNhcGFiaWxpdHkuQHByb21pc2U7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWRjZDUwMTA2MTExMTk2MzAyNWZkMmNk
OWFkNWQxYjc5M2I1YmFkYy4uNWQ4MmM1NDFkODAxZTZmNDQzYWVhOTllZTAyOTRmNTkwYzg4MzQ3
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSw1ICsxLDE1IEBACiAyMDE1LTExLTA0ICBYYWJpZXIgUm9kcmlndWV6IENh
bHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBTaGll
bGQgaW1wbGVtZW50YXRpb24gZnJvbSB1c2VyIG1hbmdsaW5nIFByb21pc2UucmVqZWN0IGFuZCBy
ZXNvbHZlIG1ldGhvZHMgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUwODk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMuaHRtbDogQWRkZWQgdGVzdCBh
Ym91dCBjaGFuZ2luZyBQcm9taXNlLnJlc29sdmUgYW5kIHJlamVjdC4KKyAgICAgICAgKiBzdHJl
YW1zL3N0cmVhbXMtcHJvbWlzZXMtZXhwZWN0ZWQudHh0OiBBZGRlZCBleHBlY3RhdGlvbnMuCisK
KzIwMTUtMTEtMDQgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNv
bT4KKwogICAgICAgICBbU3RyZWFtcyBBUEldIFNoaWVsZCBzdHJlYW1zIGFnYWluc3QgdXNlciBy
ZXBsYWNpbmcgdGhlIFByb21pc2UgY29uc3RydWN0b3IKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDg4NwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9zdHJlYW1zLXByb21pc2VzLWV4cGVjdGVkLnR4dAppbmRleCBkNWRjNGI5ZGJlMTcwZWQ3
ODMwNzBiY2JiMjQwM2ZiNmIyYmU5NmQwLi5mNGUyZGFjZDFlNTY1ZjNlNTRjN2YyMjhlNjVlN2E3
N2I3Y2Q5ZTU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlz
ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9taXNl
cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw0IEBACiAKIFBBU1MgU3RyZWFtcyBjYW4gYmUgYnVp
bHQgZXZlbiBpZiBQcm9taXNlIGNvbnN0cnVjdG9yIGlzIHJlcGxhY2VkIAorUEFTUyBTdHJlYW1z
IGNhbiBiZSBidWlsdCBldmVuIGlmIFByb21pc2UucmVzb2x2ZSBhbmQgUHJvbWlzZS5yZWplY3Qg
YXJlIHJlcGxhY2VkIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMt
cHJvbWlzZXMuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy5odG1s
CmluZGV4IDczOTRjOWJlNTE3ZDM5NGU3ODJlNGUzNTI3OGZhN2Q1NjEyMmJlMGYuLmQ0MTBhOTIw
ZjkwZWUzNjI2NDVhNTRjNGNhOTVhN2I2OTU2ZGE4YzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMv
c3RyZWFtcy1wcm9taXNlcy5odG1sCkBAIC0yLDEwICsyLDI0IEBACiA8c2NyaXB0IHNyYz0nLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzJz48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPScuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPjwvc2NyaXB0PgogPHNjcmlwdD4KKy8vIEF0IHRo
ZXNlIHRlc3RzIHdlIGFyZSBnb2luZyB0byBtZXNzIHdpdGggdGhlIGNvbnN0cnVjdG9yIGFuZCB0
aGF0IGFmZmVjdHMgYWxsIHRlc3RzLCBsZXQncyBrZWVwIGl0IHRvIGJlIGFibGUgdG8KKy8vIHJl
c3RvcmUgaXQuCitjb25zdCBQcm9taXNlQmFja3VwID0gUHJvbWlzZTsKKwogdGVzdChmdW5jdGlv
bigpIHsKICAgICBQcm9taXNlID0gZnVuY3Rpb24oKSB7IHRocm93IG5ldyBFcnJvcigibmFzdHkg
dGhpbmdzIik7IH07CiAKICAgICBjb25zdCBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOyAvLyBE
b2VzIG5vdCB0aHJvdy4KICAgICBjb25zdCB3cyA9IG5ldyBXcml0YWJsZVN0cmVhbSgpOyAvLyBE
b2VzIG5vdCB0aHJvdy4KIH0sICdTdHJlYW1zIGNhbiBiZSBidWlsdCBldmVuIGlmIFByb21pc2Ug
Y29uc3RydWN0b3IgaXMgcmVwbGFjZWQnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBQcm9t
aXNlID0gUHJvbWlzZUJhY2t1cDsgLy8gUmVzdG9yZSBQcm9taXNlIGNvbnN0cnVjdG9yIHRoYXQg
Y291bGQgaGF2ZSBiZWVuIGRpc3J1cHRlZCBpbiBwcmV2aW91cyB0ZXN0cy4KKworICAgIFByb21p
c2UucmVzb2x2ZSA9IGZ1bmN0aW9uKCkgeyB0aHJvdyBuZXcgRXJyb3IoIm5hc3R5IHJlc29sdmUg
dGhpbmdzIik7IH07CisgICAgUHJvbWlzZS5yZWplY3QgPSBmdW5jdGlvbigpIHsgdGhyb3cgbmV3
IEVycm9yKCJuYXN0eSByZWplY3QgdGhpbmdzIik7IH07CisKKyAgICBjb25zdCBycyA9IG5ldyBS
ZWFkYWJsZVN0cmVhbSgpOyAvLyBEb2VzIG5vdCB0aHJvdy4KKyAgICBjb25zdCB3cyA9IG5ldyBX
cml0YWJsZVN0cmVhbSgpOyAvLyBEb2VzIG5vdCB0aHJvdy4KK30sICdTdHJlYW1zIGNhbiBiZSBi
dWlsdCBldmVuIGlmIFByb21pc2UucmVzb2x2ZSBhbmQgUHJvbWlzZS5yZWplY3QgYXJlIHJlcGxh
Y2VkJyk7CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264847</attachid>
            <date>2015-11-05 02:49:59 -0800</date>
            <delta_ts>2015-11-05 04:16:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150895-20151105114900.patch</filename>
            <type>text/plain</type>
            <size>21800</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YjY4NTliMTU2MGM0OTQ5NWEwNTdjMmFmZTU1NTNmYzcwNDEzN2M5Li4xNDZhYTAwZTk1MmY4NGU4
MDA5Mzc5NGZiMWIzNzQzODUwMzhiMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNS0xMS0wNSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJp
c0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gU2hpZWxkIGltcGxlbWVudGF0
aW9uIGZyb20gdXNlciBtYW5nbGluZyBQcm9taXNlLnJlamVjdCBhbmQgcmVzb2x2ZSBtZXRob2Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA4OTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBLZWVwIFBy
b21pc2UucmVzb2x2ZSBhbmQgcmVqZWN0IGFsc28gYXMgaW50ZXJuYWwgc2xvdHMgZ2l2ZW4gdGhh
dCB0aGVyZSBpcyBubyB3YXkgdG8gcmV0cmlldmUgdGhlIGZvcm1lcgorICAgICAgICBpbXBsZW1l
bnRhdGlvbiBpZiB0aGUgdXNlciBkZWNpZGVzIHRvIHJlcGxhY2UgaXQuIFRoaXMgYWxsb3dzIHRv
IHNhZmVseSBjcmVhdGUgdmVuZGVkIHByb21pc2VzIGV2ZW4gaWYgdGhlIHVzZXIKKyAgICAgICAg
Y2hhbmdlcyB0aGUgY29uc3RydWN0b3IgbWV0aG9kcy4KKworICAgICAgICAqIHJ1bnRpbWUvSlNJ
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTSW50ZXJuYWxQ
cm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuaDoKKwogMjAxNS0xMS0w
MyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlND
XSBBZGQgQjMtdG8tQWlyIGxvd2VyaW5nIGZvciBCaXRYb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYzQ3ZTBi
YWFjNDkxYWY1ZDBlOGJiMWM2ZmE5OWY5M2NhNzc1NGM0Li40ZDFlZjYyMTEwYjg5OTY1NWNiY2Jh
ZjNjZjE2OWVlMjIyYjAxMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTUtMTEt
MDUgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbU3RyZWFtcyBBUEldIFNoaWVsZCBpbXBsZW1lbnRhdGlvbiBmcm9tIHVzZXIgbWFuZ2xp
bmcgUHJvbWlzZS5yZWplY3QgYW5kIHJlc29sdmUgbWV0aG9kcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBhbGwgY2FsbHMgdG8gQFByb21p
c2UucmVzb2x2ZSBhbmQgQFByb21pc2UucmVqZWN0IHdpdGggdGhlaXIgaW50ZXJuYWwgc2xvdCBj
b3VudGVycGFydHMuIFRoaXMgd2F5IHdlCisgICAgICAgIGVuc3VyZSB0aGF0IGlmIHRoZSB1c2Vy
IHJlcGxhY2VzIHRob3NlIGNvbnN0cnVjdG9yIG1ldGhvZHMsIG91ciBpbXBsZW1lbnRhdGlvbiBz
dGlsbCB3b3Jrcy4KKworICAgICAgICBUZXN0OiBzdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMuaHRt
bC4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qczoKKyAgICAg
ICAgKGluaXRpYWxpemVSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChjYW5jZWwpOgorICAgICAg
ICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qczoKKyAgICAgICAg
KHByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAoY2FuY2Vs
UmVhZGFibGVTdHJlYW0pOgorICAgICAgICAocmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcik6
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzOgorICAg
ICAgICAoY2FuY2VsKToKKyAgICAgICAgKHJlYWQpOgorICAgICAgICAoY2xvc2VkKToKKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzOgorICAgICAgICAocHJvbWlz
ZUludm9rZU9yTm9vcCk6CisgICAgICAgIChwcm9taXNlSW52b2tlT3JGYWxsYmFja09yTm9vcCk6
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzOgorICAgICAgICAo
aW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtKToKKyAgICAgICAgKGFib3J0KToKKyAgICAgICAgKGNs
b3NlKToKKyAgICAgICAgKHdyaXRlKToKKyAgICAgICAgKGNsb3NlZCk6CisgICAgICAgIChyZWFk
eSk6CisKIDIwMTUtMTEtMDQgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIFNoaWVsZCBzdHJlYW1zIGFnYWluc3Qg
dXNlciByZXBsYWNpbmcgdGhlIFByb21pc2UgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggODY3Y2YyZGQwMTNhZDI5Y2FhNDVkNDZiNWRmMGI4ODIxOGZmNjQ2Ni4u
YWY0YWVmNGE1Mjk4NjYxOTI4MWE0NjEwNjQ0OGJlYTFlM2M2OWQ4MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5hbFByb21pc2VD
b25zdHJ1Y3Rvci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTSW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW4K
IEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IqIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0ludGVybmFsUHJvbWlz
ZVByb3RvdHlwZSogcHJvbWlzZVByb3RvdHlwZSkKIHsKICAgICBKU0ludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTSW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU0ludGVybmFsUHJvbWlzZUNvbnN0
cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwotICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2
bSwgcHJvbWlzZVByb3RvdHlwZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZt
LCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpLCBwcm9taXNlUHJvdG90eXBlKTsKICAgICByZXR1
cm4gY29uc3RydWN0b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAppbmRleCBhOWJhMWM1OTI2NzBjZTFmNjU1
MTI0NTJjYmMzODMwZjc5MTAwYWRmLi41ZmQ2ZTIyY2JiZTY5NGZiNDg3YWE1YjI5MjE5ZGEwNDU4
YjM2ZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlQ29uc3RydWN0b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNDQnVp
bHRpbnMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2Vs
bElubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNl
LmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgi
CkBAIC02Myw3ICs2NCw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6
c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmcHJvCiBKU1Byb21pc2VDb25z
dHJ1Y3RvciogSlNQcm9taXNlQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm90b3R5cGUpCiB7CiAgICAg
SlNQcm9taXNlQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8SlNQcm9taXNlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1Byb21pc2VDb25zdHJ1Y3Rv
cih2bSwgc3RydWN0dXJlKTsKLSAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHBy
b21pc2VQcm90b3R5cGUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgc3Ry
dWN0dXJlLT5nbG9iYWxPYmplY3QoKSwgcHJvbWlzZVByb3RvdHlwZSk7CiAgICAgcmV0dXJuIGNv
bnN0cnVjdG9yOwogfQogCkBAIC03NywxMSArNzgsMTMgQEAgSlNQcm9taXNlQ29uc3RydWN0b3I6
OkpTUHJvbWlzZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiB9
CiAKLXZvaWQgSlNQcm9taXNlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNQ
cm9taXNlUHJvdG90eXBlKiBwcm9taXNlUHJvdG90eXBlKQordm9pZCBKU1Byb21pc2VDb25zdHJ1
Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1Byb21pc2VQcm90b3R5cGUqIHByb21pc2VQcm90b3R5cGUpCiB7CiAgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIEFTQ0lJTGl0ZXJhbCgiUHJvbWlzZSIpKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm9taXNl
UHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSk7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBKU0NfQlVJTFRJ
Tl9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZXNvbHZlUHJpdmF0
ZU5hbWUoKSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5lcmF0b3IsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWplY3RQcml2YXRlTmFtZSgpLCBwcm9taXNl
Q29uc3RydWN0b3JSZWplY3RDb2RlR2VuZXJhdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0
cnVjdFByb21pc2UoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmgKaW5kZXggZGFlNTJkM2E4Y2Y1MGJk
MmQ2Mjk3MmYxNmI3MjU2N2JmZDBjMzVkNy4uYmY2YWQ1NDQ5ZDA1ZDQwYzMyYjFiYWUyYmYzZTJm
ZWVmMmM3MjM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9taXNlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb21pc2VDb25zdHJ1Y3Rvci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIAogcHJvdGVj
dGVkOgogICAgIEpTUHJvbWlzZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7Ci0gICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTUHJvbWlzZVByb3RvdHlwZSopOworICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTUHJvbWlzZVByb3RvdHlwZSopOwog
CiBwcml2YXRlOgogICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlND
ZWxsKiwgQ29uc3RydWN0RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtLmpzCmluZGV4IDc4NWE1NWQxZWRjN2Y5MjcxZWJjNTM1N2I4ODRk
MTdjMzU0YjE3YTQuLjY4NmIzNTY1Yzk3NjIxYzVkMGU5N2M4ZWVmNTgwODhlY2M4Yzg5NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMK
QEAgLTU2LDcgKzU2LDcgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtKHVuZGVy
bHlpbmdTb3VyY2UsIHN0cmF0ZWd5KQogCiAgICAgdmFyIHJlc3VsdCA9IEBpbnZva2VPck5vb3Ao
dW5kZXJseWluZ1NvdXJjZSwgInN0YXJ0IiwgW3RoaXMuQGNvbnRyb2xsZXJdKTsKICAgICB2YXIg
X3RoaXMgPSB0aGlzOwotICAgIEBQcm9taXNlLnJlc29sdmUocmVzdWx0KS50aGVuKGZ1bmN0aW9u
KCkgeworICAgIEBQcm9taXNlLkByZXNvbHZlKHJlc3VsdCkudGhlbihmdW5jdGlvbigpIHsKICAg
ICAgICAgX3RoaXMuQHN0YXJ0ZWQgPSB0cnVlOwogICAgICAgICBAcmVxdWVzdFJlYWRhYmxlU3Ry
ZWFtUHVsbChfdGhpcyk7CiAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHsKQEAgLTcyLDEwICs3Miwx
MCBAQCBmdW5jdGlvbiBjYW5jZWwocmVhc29uKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlm
ICghQGlzUmVhZGFibGVTdHJlYW0odGhpcykpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWpl
Y3QobmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJs
ZVN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJy
b3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbSIpKTsKIAog
ICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCh0aGlzKSkKLSAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkIikp
OworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiUmVhZGFi
bGVTdHJlYW0gaXMgbG9ja2VkIikpOwogCiAgICAgcmV0dXJuIEBjYW5jZWxSZWFkYWJsZVN0cmVh
bSh0aGlzLCByZWFzb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IGYwZjczOGI5ZWU0NTVh
ZWRkNDcyNzU0NDY1M2U0OThmNTRmM2E0ZjMuLjAwMGMwYTZkMmVhNTMxNTk0ZmU2MjQ5YWRlYzU5
ZWJiOWZlZmI4ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbUludGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKQEAgLTQ4LDEzICs0OCwxMyBAQCBmdW5j
dGlvbiBwcml2YXRlSW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtUmVhZGVyKHN0cmVhbSkKICAgICBp
ZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NlZCkgewogICAgICAgICB0aGlzLkBvd25l
clJlYWRhYmxlU3RyZWFtID0gbnVsbDsKICAgICAgICAgdGhpcy5Ac3RvcmVkRXJyb3IgPSB1bmRl
ZmluZWQ7Ci0gICAgICAgIHRoaXMuQGNsb3NlZFByb21pc2VDYXBhYmlsaXR5ID0geyBAcHJvbWlz
ZTogQFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpIH07CisgICAgICAgIHRoaXMuQGNsb3NlZFBy
b21pc2VDYXBhYmlsaXR5ID0geyBAcHJvbWlzZTogQFByb21pc2UuQHJlc29sdmUoKSB9OwogICAg
ICAgICByZXR1cm4gdGhpczsKICAgICB9CiAgICAgLy8gRklYTUU6IEFTU0VSVChzdHJlYW0uQHN0
YXRlID09PSBAc3RyZWFtRXJyb3JlZCk7CiAgICAgdGhpcy5Ab3duZXJSZWFkYWJsZVN0cmVhbSA9
IG51bGw7CiAgICAgdGhpcy5Ac3RvcmVkRXJyb3IgPSBzdHJlYW0uQHN0b3JlZEVycm9yOwotICAg
IHRoaXMuQGNsb3NlZFByb21pc2VDYXBhYmlsaXR5ID0geyBAcHJvbWlzZTogQFByb21pc2UucmVq
ZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpIH07CisgICAgdGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFi
aWxpdHkgPSB7IEBwcm9taXNlOiBAUHJvbWlzZS5AcmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3Ip
IH07CiAKICAgICByZXR1cm4gdGhpczsKIH0KQEAgLTI3NSw5ICsyNzUsOSBAQCBmdW5jdGlvbiBj
YW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0sIHJlYXNvbikKICAgICAidXNlIHN0cmljdCI7CiAK
ICAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NlZCkKLSAgICAgICAgcmV0dXJu
IEBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKCk7
CiAgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1FcnJvcmVkKQotICAgICAgICByZXR1
cm4gQFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOworICAgICAgICByZXR1cm4g
QFByb21pc2UuQHJlamVjdChzdHJlYW0uQHN0b3JlZEVycm9yKTsKICAgICBzdHJlYW0uQHF1ZXVl
ID0gQG5ld1F1ZXVlKCk7CiAgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0p
OwogICAgIHJldHVybiBAcHJvbWlzZUludm9rZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3Vy
Y2UsICJjYW5jZWwiLCBbcmVhc29uXSkudGhlbihmdW5jdGlvbigpIHsgfSk7CkBAIC0zNTQsOSAr
MzU0LDkgQEAgZnVuY3Rpb24gcmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpCiAg
ICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKHJlYWRlci5Ac3RhdGUgPT09IEBzdHJlYW1DbG9z
ZWQpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZXNvbHZlKHt2YWx1ZTogdW5kZWZpbmVkLCBk
b25lOiB0cnVlfSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZSh7dmFsdWU6IHVu
ZGVmaW5lZCwgZG9uZTogdHJ1ZX0pOwogICAgIGlmIChyZWFkZXIuQHN0YXRlID09PSBAc3RyZWFt
RXJyb3JlZCkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdChyZWFkZXIuQHN0b3JlZEVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QocmVhZGVyLkBzdG9yZWRFcnJv
cik7CiAgICAgLy8gRklYTUU6IEFTU0VSVCghIXJlYWRlci5Ab3duZXJSZWFkYWJsZVN0cmVhbSk7
CiAgICAgLy8gRklYTUU6IEFTU0VSVChyZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW0uQHN0YXRl
ID09PSBAc3RyZWFtUmVhZGFibGUpOwogICAgIHZhciBzdHJlYW0gPSByZWFkZXIuQG93bmVyUmVh
ZGFibGVTdHJlYW07CkBAIC0zNjYsNyArMzY2LDcgQEAgZnVuY3Rpb24gcmVhZEZyb21SZWFkYWJs
ZVN0cmVhbVJlYWRlcihyZWFkZXIpCiAgICAgICAgICAgICBAcmVxdWVzdFJlYWRhYmxlU3RyZWFt
UHVsbChzdHJlYW0pOwogICAgICAgICBlbHNlIGlmICghc3RyZWFtLkBxdWV1ZS5jb250ZW50Lmxl
bmd0aCkKICAgICAgICAgICAgIEBmaW5pc2hDbG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsK
LSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlc29sdmUoe3ZhbHVlOiBjaHVuaywgZG9uZTogZmFs
c2V9KTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKHt2YWx1ZTogY2h1bmssIGRv
bmU6IGZhbHNlfSk7CiAgICAgfQogICAgIHZhciByZWFkUHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3
UHJvbWlzZUNhcGFiaWxpdHkoQFByb21pc2UpOwogICAgIHJlYWRlci5AcmVhZFJlcXVlc3RzLnB1
c2gocmVhZFByb21pc2VDYXBhYmlsaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcwppbmRleCBjNzVhZGIyYWEzODEw
ZWVkNWRhMDkyNDRmZTEyYjBhYzc4NWJiNDZkLi45NWQzMmEzYzVhN2U2M2VlZGVhOTUyODE3Mzdl
OTcxMjE4NTAwMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1SZWFkZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzCkBAIC0zMCwxMyArMzAsMTMgQEAgZnVuY3Rpb24g
Y2FuY2VsKHJlYXNvbikKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1JlYWRhYmxl
U3RyZWFtUmVhZGVyKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KG5ldyBA
VHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1S
ZWFkZXIiKSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9y
KCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7
CiAKICAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zZWQpCi0gICAgICAgIHJldHVy
biBAUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZSgp
OwogCiAgICAgaWYgKHRoaXMuQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCkKLSAgICAgICAgcmV0
dXJuIEBQcm9taXNlLnJlamVjdCh0aGlzLkBzdG9yZWRFcnJvcik7CisgICAgICAgIHJldHVybiBA
UHJvbWlzZS5AcmVqZWN0KHRoaXMuQHN0b3JlZEVycm9yKTsKIAogICAgIC8vIEZJWE1FOiBBU1NF
UlQoQGlzUmVhZGFibGVTdHJlYW0odGhpcy5Ab3duZXJSZWFkYWJsZVN0cmVhbSkpOwogICAgIC8v
IEZJWE1FOiBBU1NFUlQodGhpcy5Ab3duZXJSZWFkYWJsZVN0cmVhbS5Ac3RhdGUgPT09IEBzdHJl
YW1SZWFkYWJsZSk7CkBAIC00OCw3ICs0OCw3IEBAIGZ1bmN0aW9uIHJlYWQoKQogICAgICJ1c2Ug
c3RyaWN0IjsKIAogICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW1SZWFkZXIodGhpcykpCi0gICAg
ICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3Vs
ZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbVJlYWRlciIpKTsKKyAgICAgICAgcmV0dXJu
IEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxs
ZWQgb24gYSBSZWFkYWJsZVN0cmVhbVJlYWRlciIpKTsKIAogICAgIHJldHVybiBAcmVhZEZyb21S
ZWFkYWJsZVN0cmVhbVJlYWRlcih0aGlzKTsKIH0KQEAgLTc0LDcgKzc0LDcgQEAgZnVuY3Rpb24g
Y2xvc2VkKCkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFt
UmVhZGVyKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVy
cm9yKCJDYWxsZWUgb2YgY2xvc2VkIGlzIG5vdCBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIikpOwor
ICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiQ2FsbGVlIG9m
IGNsb3NlZCBpcyBub3QgYSBSZWFkYWJsZVN0cmVhbVJlYWRlciIpKTsKIAogICAgIHJldHVybiB0
aGlzLkBjbG9zZWRQcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IDA0NzVjNTEw
ZTdmMGRkMmU5NTA4OGZiNDVjNjU3YWI4YjVhMDZlYzIuLjA5Nzk3YmIwOTJiMGYyYmQwYjFkMDcz
MGVmN2QzOTAxYWI2NjEyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1N0cmVhbUludGVybmFscy5qcwpAQCAtNDQsMTIgKzQ0LDEyIEBAIGZ1bmN0aW9uIHByb21p
c2VJbnZva2VPck5vb3Aob2JqZWN0LCBrZXksIGFyZ3MpCiAgICAgdHJ5IHsKICAgICAgICAgdmFy
IG1ldGhvZCA9IG9iamVjdFtrZXldOwogICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gInVu
ZGVmaW5lZCIpCi0gICAgICAgICAgICByZXR1cm4gQFByb21pc2UucmVzb2x2ZSgpOworICAgICAg
ICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKCk7CiAgICAgICAgIHZhciByZXN1bHQgPSBt
ZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7Ci0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZXNv
bHZlKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZShyZXN1bHQpOwog
ICAgIH0KICAgICBjYXRjaChlcnJvcikgewotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0
KGVycm9yKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoZXJyb3IpOwogICAgIH0K
IAogfQpAQCAtNjMsMTAgKzYzLDEwIEBAIGZ1bmN0aW9uIHByb21pc2VJbnZva2VPckZhbGxiYWNr
T3JOb29wKG9iamVjdCwga2V5MSwgYXJnczEsIGtleTIsIGFyZ3MyKQogICAgICAgICBpZiAodHlw
ZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCiAgICAgICAgICAgICByZXR1cm4gQHByb21pc2VJ
bnZva2VPck5vb3Aob2JqZWN0LCBrZXkyLCBhcmdzMik7CiAgICAgICAgIGNvbnN0IHJlc3VsdCA9
IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzMSk7Ci0gICAgICAgIHJldHVybiBAUHJvbWlzZS5y
ZXNvbHZlKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZShyZXN1bHQp
OwogICAgIH0KICAgICBjYXRjaChlcnJvcikgewotICAgICAgICByZXR1cm4gQFByb21pc2UucmVq
ZWN0KGVycm9yKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoZXJyb3IpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3Ry
ZWFtLmpzCmluZGV4IDQ3NjdhOWQzODEzMTlhNmFhZWM0OGZjZGY1NDNlN2FmNGQzMDI0ZGMuLmFk
OWQxMTAyMTJlNWFkZDFjY2MyMWVlNjBjZmM1YzJlMWViNDhkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uanMKQEAgLTQzLDcgKzQzLDcg
QEAgZnVuY3Rpb24gaW5pdGlhbGl6ZVdyaXRhYmxlU3RyZWFtKHVuZGVybHlpbmdTaW5rLCBzdHJh
dGVneSkKIAogICAgIHRoaXMuQHVuZGVybHlpbmdTaW5rID0gdW5kZXJseWluZ1Npbms7CiAgICAg
dGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQFBy
b21pc2UpOwotICAgIHRoaXMuQHJlYWR5UHJvbWlzZUNhcGFiaWxpdHkgPSB7IEBwcm9taXNlOiBA
UHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCkgfTsKKyAgICB0aGlzLkByZWFkeVByb21pc2VDYXBh
YmlsaXR5ID0geyBAcHJvbWlzZTogQFByb21pc2UuQHJlc29sdmUoKSB9OwogICAgIHRoaXMuQHF1
ZXVlID0gQG5ld1F1ZXVlKCk7CiAgICAgdGhpcy5Ac3RhdGUgPSBAc3RyZWFtV3JpdGFibGU7CiAg
ICAgdGhpcy5Ac3RhcnRlZCA9IGZhbHNlOwpAQCAtNTUsNyArNTUsNyBAQCBmdW5jdGlvbiBpbml0
aWFsaXplV3JpdGFibGVTdHJlYW0odW5kZXJseWluZ1NpbmssIHN0cmF0ZWd5KQogCiAgICAgdmFy
IGVycm9yID0gQGVycm9yV3JpdGFibGVTdHJlYW0uYmluZCh0aGlzKTsKICAgICB2YXIgc3RhcnRS
ZXN1bHQgPSBAaW52b2tlT3JOb29wKHVuZGVybHlpbmdTaW5rLCAic3RhcnQiLCBbZXJyb3JdKTsK
LSAgICB0aGlzLkBzdGFydGVkUHJvbWlzZSA9IEBQcm9taXNlLnJlc29sdmUoc3RhcnRSZXN1bHQp
OworICAgIHRoaXMuQHN0YXJ0ZWRQcm9taXNlID0gQFByb21pc2UuQHJlc29sdmUoc3RhcnRSZXN1
bHQpOwogICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgdGhpcy5Ac3RhcnRlZFByb21pc2UudGhl
bihmdW5jdGlvbigpIHsKICAgICAgICAgX3RoaXMuQHN0YXJ0ZWQgPSB0cnVlOwpAQCAtNzAsMTMg
KzcwLDEzIEBAIGZ1bmN0aW9uIGFib3J0KHJlYXNvbikKICAgICAidXNlIHN0cmljdCI7CiAKICAg
ICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2Uu
cmVqZWN0KG5ldyBAVHlwZUVycm9yKCJUaGUgV3JpdGFibGVTdHJlYW0uYWJvcnQgbWV0aG9kIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdyaXRhYmxlU3RyZWFtIikpOworICAgICAg
ICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3Ry
ZWFtLmFib3J0IG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJs
ZVN0cmVhbSIpKTsKIAogICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NlZCkKLSAg
ICAgICAgcmV0dXJuIEBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTsKKyAgICAgICAgcmV0dXJu
IEBQcm9taXNlLkByZXNvbHZlKCk7CiAKICAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1F
cnJvcmVkKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KHRoaXMuQHN0b3JlZEVycm9y
KTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QodGhpcy5Ac3RvcmVkRXJyb3IpOwog
CiAgICAgQGVycm9yV3JpdGFibGVTdHJlYW0uQGFwcGx5KHRoaXMsIFtyZWFzb25dKTsKIApAQCAt
OTAsMTMgKzkwLDEzIEBAIGZ1bmN0aW9uIGNsb3NlKCkKICAgICAidXNlIHN0cmljdCI7CiAKICAg
ICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRoaXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2Uu
cmVqZWN0KG5ldyBAVHlwZUVycm9yKCJUaGUgV3JpdGFibGVTdHJlYW0uY2xvc2UgbWV0aG9kIGNh
biBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdyaXRhYmxlU3RyZWFtIikpOworICAgICAg
ICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3Ry
ZWFtLmNsb3NlIG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJs
ZVN0cmVhbSIpKTsKIAogICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NlZCB8fCB0
aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NpbmcpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5y
ZWplY3QobmV3IEBUeXBlRXJyb3IoIkNhbm5vdCBjbG9zZSBhIFdyaXRhYmxlU3RyaW5nIHRoYXQg
aXMgY2xvc2VkIG9yIGNsb3NpbmciKSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0
KG5ldyBAVHlwZUVycm9yKCJDYW5ub3QgY2xvc2UgYSBXcml0YWJsZVN0cmluZyB0aGF0IGlzIGNs
b3NlZCBvciBjbG9zaW5nIikpOwogCiAgICAgaWYgKHRoaXMuQHN0YXRlID09PSBAc3RyZWFtRXJy
b3JlZCkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdCh0aGlzLkBzdG9yZWRFcnJvcik7
CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KHRoaXMuQHN0b3JlZEVycm9yKTsKIAog
ICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbVdhaXRpbmcpCiAgICAgICAgIHRoaXMuQHJl
YWR5UHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB1bmRlZmluZWQp
OwpAQCAtMTEzLDEzICsxMTMsMTMgQEAgZnVuY3Rpb24gd3JpdGUoY2h1bmspCiAgICAgInVzZSBz
dHJpY3QiOwogCiAgICAgaWYgKCFAaXNXcml0YWJsZVN0cmVhbSh0aGlzKSkKLSAgICAgICAgcmV0
dXJuIEBQcm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmNs
b3NlIG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVh
bSIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIlRo
ZSBXcml0YWJsZVN0cmVhbS5jbG9zZSBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CiAKICAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEBzdHJl
YW1DbG9zZWQgfHwgdGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zaW5nKQotICAgICAgICByZXR1
cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJDYW5ub3Qgd3JpdGUgb24gYSBXcml0
YWJsZVN0cmluZyB0aGF0IGlzIGNsb3NlZCBvciBjbG9zaW5nIikpOworICAgICAgICByZXR1cm4g
QFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiQ2Fubm90IHdyaXRlIG9uIGEgV3JpdGFi
bGVTdHJpbmcgdGhhdCBpcyBjbG9zZWQgb3IgY2xvc2luZyIpKTsKIAogICAgIGlmICh0aGlzLkBz
dGF0ZSA9PT0gQHN0cmVhbUVycm9yZWQpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3Qo
dGhpcy5Ac3RvcmVkRXJyb3IpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdCh0aGlz
LkBzdG9yZWRFcnJvcik7CiAKICAgICAvLyBGSVhNRQogICAgIC8vIGFzc2VydCh0aGlzLkBzdGF0
ZSA9PT0gQHN0cmVhbVdyaXRhYmxlIHx8IHRoaXMuQHN0YXRlID09PSBAc3RyZWFtV2FpdGluZyk7
CkBAIC0xMzAsNyArMTMwLDcgQEAgZnVuY3Rpb24gd3JpdGUoY2h1bmspCiAgICAgICAgICAgICBj
aHVua1NpemUgPSB0aGlzLkBzdHJhdGVneS5zaXplLkBjYWxsKHVuZGVmaW5lZCwgY2h1bmspOwog
ICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgIEBlcnJvcldyaXRhYmxlU3RyZWFtLkBj
YWxsKHRoaXMsIGUpOwotICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdChlKTsKKyAg
ICAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KGUpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC0xMzksNyArMTM5LDcgQEAgZnVuY3Rpb24gd3JpdGUoY2h1bmspCiAgICAgICAgIEBlbnF1
ZXVlVmFsdWVXaXRoU2l6ZSh0aGlzLkBxdWV1ZSwgeyBwcm9taXNlQ2FwYWJpbGl0eTogcHJvbWlz
ZUNhcGFiaWxpdHksIGNodW5rOiBjaHVuayB9LCBjaHVua1NpemUpOwogICAgIH0gY2F0Y2ggKGUp
IHsKICAgICAgICAgQGVycm9yV3JpdGFibGVTdHJlYW0uQGNhbGwodGhpcywgZSk7Ci0gICAgICAg
IHJldHVybiBAUHJvbWlzZS5yZWplY3QoZSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVq
ZWN0KGUpOwogICAgIH0KIAogICAgIEBzeW5jV3JpdGFibGVTdHJlYW1TdGF0ZVdpdGhRdWV1ZSh0
aGlzKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBmdW5jdGlvbiBjbG9zZWQoKQogICAgICJ1c2Ugc3Ry
aWN0IjsKIAogICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0odGhpcykpCi0gICAgICAgIHJldHVy
biBAUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS5jbG9z
ZWQgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdyaXRhYmxlU3RyZWFt
IikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhl
IFdyaXRhYmxlU3RyZWFtLmNsb3NlZCBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5j
ZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CiAKICAgICByZXR1cm4gdGhpcy5AY2xvc2VkUHJvbWlz
ZUNhcGFiaWxpdHkuQHByb21pc2U7CiB9CkBAIC0xNjMsNyArMTYzLDcgQEAgZnVuY3Rpb24gcmVh
ZHkoKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0odGhp
cykpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIlRoZSBX
cml0YWJsZVN0cmVhbS5yZWFkeSBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMg
b2YgV3JpdGFibGVTdHJlYW0iKSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5l
dyBAVHlwZUVycm9yKCJUaGUgV3JpdGFibGVTdHJlYW0ucmVhZHkgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mIFdyaXRhYmxlU3RyZWFtIikpOwogCiAgICAgcmV0dXJuIHRo
aXMuQHJlYWR5UHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7CiB9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWRjZDUwMTA2
MTExMTk2MzAyNWZkMmNkOWFkNWQxYjc5M2I1YmFkYy4uZWVjMjgyMjViMmIwMDQyMTliMDU1Mjc1
OTllNDY1ZDg2NTc5Yjc5NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTExLTA1ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1N0
cmVhbXMgQVBJXSBTaGllbGQgaW1wbGVtZW50YXRpb24gZnJvbSB1c2VyIG1hbmdsaW5nIFByb21p
c2UucmVqZWN0IGFuZCByZXNvbHZlIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWw6IEFk
ZGVkIHRlc3RzIGFib3V0IGNoYW5naW5nIFByb21pc2UucmVzb2x2ZSBhbmQgcmVqZWN0LgorICAg
ICAgICAqIHN0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy1leHBlY3RlZC50eHQ6IEFkZGVkIGV4cGVj
dGF0aW9ucy4KKwogMjAxNS0xMS0wNCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJp
c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gU2hpZWxkIHN0cmVhbXMgYWdh
aW5zdCB1c2VyIHJlcGxhY2luZyB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy1leHBlY3RlZC50eHQKaW5kZXggZDVkYzRi
OWRiZTE3MGVkNzgzMDcwYmNiYjI0MDNmYjZiMmJlOTZkMC4uNGI5MGNmMWFjMjlhNmFiOTAzZWQ5
NTYwOTk0NTlkYTBhNDQ2MDExZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJl
YW1zLXByb21pc2VzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3N0cmVh
bXMtcHJvbWlzZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNSBAQAogCiBQQVNTIFN0cmVhbXMg
Y2FuIGJlIGJ1aWx0IGV2ZW4gaWYgUHJvbWlzZSBjb25zdHJ1Y3RvciBpcyByZXBsYWNlZCAKK1BB
U1MgU3RyZWFtcyBjYW4gYmUgYnVpbHQgZXZlbiBpZiBQcm9taXNlLnJlc29sdmUgaXMgcmVwbGFj
ZWQgCitQQVNTIFN0cmVhbXMgY2FuIGJlIGJ1aWx0IGV2ZW4gaWYgUHJvbWlzZS5yZWplY3QgaXMg
cmVwbGFjZWQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9t
aXNlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWwKaW5k
ZXggNzM5NGM5YmU1MTdkMzk0ZTc4MmU0ZTM1Mjc4ZmE3ZDU2MTIyYmUwZi4uZGI0ZDNjNDc4MGMw
NThiOTVjNjlhM2FhMGQ3NGU5OWUyNGQ1MGZmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJl
YW1zLXByb21pc2VzLmh0bWwKQEAgLTIsMTAgKzIsNDMgQEAKIDxzY3JpcHQgc3JjPScuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+CiA8c2NyaXB0PgorCiB0ZXN0KGZ1bmN0
aW9uKCkgewotICAgIFByb21pc2UgPSBmdW5jdGlvbigpIHsgdGhyb3cgbmV3IEVycm9yKCJuYXN0
eSB0aGluZ3MiKTsgfTsKKyAgICBjb25zdCBQcm9taXNlQmFja3VwID0gUHJvbWlzZTsgLy8gU2F2
ZSBQcm9taXNlIGN1cnJlbnQgY29uc3RydWN0b3IuCisKKyAgICB0cnkgeworICAgICAgICBQcm9t
aXNlID0gZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoIm5hc3R5IHRoaW5ncyIpOyB9Owog
Ci0gICAgY29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsgLy8gRG9lcyBub3QgdGhyb3cu
Ci0gICAgY29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsgLy8gRG9lcyBub3QgdGhyb3cu
CisgICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICAgICAgICBuZXcgV3JpdGFibGVTdHJl
YW0oKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAgICBQcm9taXNlID0gUHJvbWlzZUJhY2t1cDsg
Ly8gUmVzdG9yZSBQcm9taXNlIGNvbnN0cnVjdG9yLgorICAgIH0KIH0sICdTdHJlYW1zIGNhbiBi
ZSBidWlsdCBldmVuIGlmIFByb21pc2UgY29uc3RydWN0b3IgaXMgcmVwbGFjZWQnKTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgICBjb25zdCBQcm9taXNlQmFja3VwID0gUHJvbWlzZTsgLy8gU2F2
ZSBQcm9taXNlIGN1cnJlbnQgY29uc3RydWN0b3IuCisKKyAgICB0cnkgeworICAgICAgICBQcm9t
aXNlLnJlc29sdmUgPSBmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgibmFzdHkgcmVzb2x2
ZSB0aGluZ3MiKTsgfTsKKworICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgICAgICAg
bmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgUHJvbWlzZSA9
IFByb21pc2VCYWNrdXA7IC8vIFJlc3RvcmUgUHJvbWlzZSBjb25zdHJ1Y3Rvci4KKyAgICB9Cit9
LCAnU3RyZWFtcyBjYW4gYmUgYnVpbHQgZXZlbiBpZiBQcm9taXNlLnJlc29sdmUgaXMgcmVwbGFj
ZWQnKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBjb25zdCBQcm9taXNlQmFja3VwID0gUHJv
bWlzZTsgLy8gU2F2ZSBQcm9taXNlIGN1cnJlbnQgY29uc3RydWN0b3IuCisKKyAgICB0cnkgewor
ICAgICAgICBQcm9taXNlLnJlamVjdCA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJu
YXN0eSByZWplY3QgdGhpbmdzIik7IH07CisKKyAgICAgICAgbmV3IFJlYWRhYmxlU3RyZWFtKCk7
CisgICAgICAgIG5ldyBXcml0YWJsZVN0cmVhbSgpOworICAgIH0gZmluYWxseSB7CisgICAgICAg
IFByb21pc2UgPSBQcm9taXNlQmFja3VwOyAvLyBSZXN0b3JlIFByb21pc2UgY29uc3RydWN0b3Iu
CisgICAgfQorfSwgJ1N0cmVhbXMgY2FuIGJlIGJ1aWx0IGV2ZW4gaWYgUHJvbWlzZS5yZWplY3Qg
aXMgcmVwbGFjZWQnKTsKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264850</attachid>
            <date>2015-11-05 04:16:42 -0800</date>
            <delta_ts>2015-11-05 04:53:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150895-20151105131543.patch</filename>
            <type>text/plain</type>
            <size>21225</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YjY4NTliMTU2MGM0OTQ5NWEwNTdjMmFmZTU1NTNmYzcwNDEzN2M5Li4wMDVjY2UyMzQ0ODYyZGZk
ZmIwODVkYjJmZWI1YjQ1Mzg3ZWYwYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNS0xMS0wNSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJp
c0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gU2hpZWxkIGltcGxlbWVudGF0
aW9uIGZyb20gdXNlciBtYW5nbGluZyBQcm9taXNlLnJlamVjdCBhbmQgcmVzb2x2ZSBtZXRob2Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA4OTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBLZWVwIFBy
b21pc2UucmVzb2x2ZSBhbmQgcmVqZWN0IGFsc28gYXMgaW50ZXJuYWwgc2xvdHMgZm9yIHRoZSBQ
cm9taXNlIGNvbnN0cnVjdG9yIGdpdmVuIHRoYXQgdGhlcmUgaXMgbm8gd2F5IHRvCisgICAgICAg
IHJldHJpZXZlIHRoZSBmb3JtZXIgaW1wbGVtZW50YXRpb24gaWYgdGhlIHVzZXIgZGVjaWRlcyB0
byByZXBsYWNlIGl0LiBUaGlzIGFsbG93cyB0byBzYWZlbHkgY3JlYXRlIHZlbmRlZAorICAgICAg
ICBwcm9taXNlcyBldmVuIGlmIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGNvbnN0cnVjdG9yIG1ldGhv
ZHMuCisKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOiBDYWxsIGFkZE93bkludGVybmFsU2xvdHMgb24gdGhl
IHByb21pc2UgY29uc3RydWN0b3IuCisgICAgICAgICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1
Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6YWRkT3duSW50ZXJuYWxTbG90cyk6IEFk
ZGVkLgorCiAyMDE1LTExLTAzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtKU0NdIEFkZCBCMy10by1BaXIgbG93ZXJpbmcgZm9yIEJpdFhvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDBjNDdlMGJhYWM0OTFhZjVkMGU4YmIxYzZmYTk5ZjkzY2E3NzU0YzQuLjRkMWVm
NjIxMTBiODk5NjU1Y2JjYmFmM2NmMTY5ZWUyMjJiMDEzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNyBAQAorMjAxNS0xMS0wNSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0Bp
Z2FsaWEuY29tPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gU2hpZWxkIGltcGxlbWVudGF0aW9u
IGZyb20gdXNlciBtYW5nbGluZyBQcm9taXNlLnJlamVjdCBhbmQgcmVzb2x2ZSBtZXRob2RzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA4OTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGFs
bCBjYWxscyB0byBAUHJvbWlzZS5yZXNvbHZlIGFuZCBAUHJvbWlzZS5yZWplY3Qgd2l0aCB0aGVp
ciBpbnRlcm5hbCBzbG90IGNvdW50ZXJwYXJ0cy4gVGhpcyB3YXkgd2UKKyAgICAgICAgZW5zdXJl
IHRoYXQgaWYgdGhlIHVzZXIgcmVwbGFjZXMgdGhvc2UgY29uc3RydWN0b3IgbWV0aG9kcywgb3Vy
IGltcGxlbWVudGF0aW9uIHN0aWxsIHdvcmtzLgorCisgICAgICAgIFRlc3Q6IHN0cmVhbXMvc3Ry
ZWFtcy1wcm9taXNlcy5odG1sLgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAg
KGNhbmNlbCk6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJu
YWxzLmpzOgorICAgICAgICAocHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbVJlYWRlcik6
CisgICAgICAgIChjYW5jZWxSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChyZWFkRnJvbVJlYWRh
YmxlU3RyZWFtUmVhZGVyKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1SZWFkZXIuanM6CisgICAgICAgIChjYW5jZWwpOgorICAgICAgICAocmVhZCk6CisgICAgICAg
IChjbG9zZWQpOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanM6
CisgICAgICAgIChwcm9taXNlSW52b2tlT3JOb29wKToKKyAgICAgICAgKHByb21pc2VJbnZva2VP
ckZhbGxiYWNrT3JOb29wKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJl
YW0uanM6CisgICAgICAgIChpbml0aWFsaXplV3JpdGFibGVTdHJlYW0pOgorICAgICAgICAoYWJv
cnQpOgorICAgICAgICAoY2xvc2UpOgorICAgICAgICAod3JpdGUpOgorICAgICAgICAoY2xvc2Vk
KToKKyAgICAgICAgKHJlYWR5KToKKwogMjAxNS0xMS0wNCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2
YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gU2hpZWxk
IHN0cmVhbXMgYWdhaW5zdCB1c2VyIHJlcGxhY2luZyB0aGUgUHJvbWlzZSBjb25zdHJ1Y3Rvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGIzMGViZjNjZWVmMTM2Mzc2YWE1MzNiMTQ2MzVhYzMyNDM0M2U3OGMuLjU0NmZmYjg1NDU0
NDdmZDgwNmY3MzMyNDQxYWE5MDFiMzBjNTdjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQwNyw3ICs0MDcsOSBAQCBtXyAj
IyBsb3dlck5hbWUgIyMgUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+YwogICAgIEZPUl9FQUNIX1NJTVBMRV9CVUlMVElOX1RZUEUoQ1JF
QVRFX0NPTlNUUlVDVE9SX0ZPUl9TSU1QTEVfVFlQRSkKICAgICAKICN1bmRlZiBDUkVBVEVfQ09O
U1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFCi0gICAgCisKKyAgICBwcm9taXNlQ29uc3RydWN0b3It
PmFkZE93bkludGVybmFsU2xvdHModm0sIHRoaXMpOworCiAgICAgbV9lcnJvckNvbnN0cnVjdG9y
LnNldCh2bSwgdGhpcywgZXJyb3JDb25zdHJ1Y3Rvcik7CiAgICAgbV9wcm9taXNlQ29uc3RydWN0
b3Iuc2V0KHZtLCB0aGlzLCBwcm9taXNlQ29uc3RydWN0b3IpOwogICAgIG1faW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3Iuc2V0KHZtLCB0aGlzLCBpbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggYTliYTFjNTkyNjcwY2UxZjY1NTEyNDUyY2JjMzgzMGY3OTEwMGFk
Zi4uNGYyZmRkZDRjNDQ4OWM0OWRmZWIzNWY1Mzk0ZmUxMmZlY2NlYTE3YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNw
cApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUHJv
bWlzZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgpAQCAtODQsNiArODUsMTIgQEAg
dm9pZCBKU1Byb21pc2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU1Byb21p
c2VQcm90b3R5cGUqIHByb21pc2VQcm8KICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250
RW51bSB8IERvbnREZWxldGUpOwogfQogCit2b2lkIEpTUHJvbWlzZUNvbnN0cnVjdG9yOjphZGRP
d25JbnRlcm5hbFNsb3RzKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICBKU0NfQlVJTFRJTl9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5yZXNvbHZlUHJpdmF0ZU5hbWUoKSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVzb2x2ZUNvZGVHZW5l
cmF0b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBKU0NfQlVJTFRJ
Tl9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5yZWplY3RQcml2YXRl
TmFtZSgpLCBwcm9taXNlQ29uc3RydWN0b3JSZWplY3RDb2RlR2VuZXJhdG9yLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSk7Cit9CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFByb21pc2UoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3Ry
dWN0b3IuaAppbmRleCBkYWU1MmQzYThjZjUwYmQyZDYyOTcyZjE2YjcyNTY3YmZkMGMzNWQ3Li44
N2YwZGFhNGZhZWNkMzMxZmMxOWNkNDQyNjY1M2RmYmMxNTYzYTQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmgKQEAgLTQx
LDYgKzQxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBKU1Byb21pc2VDb25zdHJ1Y3RvciogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKiwgSlNQcm9taXNlUHJvdG90eXBlKik7CiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
IAorICAgIHZvaWQgYWRkT3duSW50ZXJuYWxTbG90cyhWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisK
ICAgICBERUNMQVJFX0lORk87CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpz
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmpzCmluZGV4
IDc4NWE1NWQxZWRjN2Y5MjcxZWJjNTM1N2I4ODRkMTdjMzU0YjE3YTQuLjY4NmIzNTY1Yzk3NjIx
YzVkMGU5N2M4ZWVmNTgwODhlY2M4Yzg5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKQEAgLTU2LDcgKzU2LDcgQEAgZnVuY3Rpb24g
aW5pdGlhbGl6ZVJlYWRhYmxlU3RyZWFtKHVuZGVybHlpbmdTb3VyY2UsIHN0cmF0ZWd5KQogCiAg
ICAgdmFyIHJlc3VsdCA9IEBpbnZva2VPck5vb3AodW5kZXJseWluZ1NvdXJjZSwgInN0YXJ0Iiwg
W3RoaXMuQGNvbnRyb2xsZXJdKTsKICAgICB2YXIgX3RoaXMgPSB0aGlzOwotICAgIEBQcm9taXNl
LnJlc29sdmUocmVzdWx0KS50aGVuKGZ1bmN0aW9uKCkgeworICAgIEBQcm9taXNlLkByZXNvbHZl
KHJlc3VsdCkudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgX3RoaXMuQHN0YXJ0ZWQgPSB0cnVl
OwogICAgICAgICBAcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChfdGhpcyk7CiAgICAgfSwgZnVu
Y3Rpb24oZXJyb3IpIHsKQEAgLTcyLDEwICs3MiwxMCBAQCBmdW5jdGlvbiBjYW5jZWwocmVhc29u
KQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0odGhpcykp
Ci0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9u
IHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJu
IEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxs
ZWQgb24gYSBSZWFkYWJsZVN0cmVhbSIpKTsKIAogICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbUxv
Y2tlZCh0aGlzKSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJv
cigiUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkIikpOworICAgICAgICByZXR1cm4gQFByb21pc2Uu
QHJlamVjdChuZXcgQFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkIikpOwogCiAg
ICAgcmV0dXJuIEBjYW5jZWxSZWFkYWJsZVN0cmVhbSh0aGlzLCByZWFzb24pOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJu
YWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50
ZXJuYWxzLmpzCmluZGV4IGYwZjczOGI5ZWU0NTVhZWRkNDcyNzU0NDY1M2U0OThmNTRmM2E0ZjMu
LjAwMGMwYTZkMmVhNTMxNTk0ZmU2MjQ5YWRlYzU5ZWJiOWZlZmI4ZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5h
bHMuanMKQEAgLTQ4LDEzICs0OCwxMyBAQCBmdW5jdGlvbiBwcml2YXRlSW5pdGlhbGl6ZVJlYWRh
YmxlU3RyZWFtUmVhZGVyKHN0cmVhbSkKICAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHN0cmVh
bUNsb3NlZCkgewogICAgICAgICB0aGlzLkBvd25lclJlYWRhYmxlU3RyZWFtID0gbnVsbDsKICAg
ICAgICAgdGhpcy5Ac3RvcmVkRXJyb3IgPSB1bmRlZmluZWQ7Ci0gICAgICAgIHRoaXMuQGNsb3Nl
ZFByb21pc2VDYXBhYmlsaXR5ID0geyBAcHJvbWlzZTogQFByb21pc2UucmVzb2x2ZSh1bmRlZmlu
ZWQpIH07CisgICAgICAgIHRoaXMuQGNsb3NlZFByb21pc2VDYXBhYmlsaXR5ID0geyBAcHJvbWlz
ZTogQFByb21pc2UuQHJlc29sdmUoKSB9OwogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9CiAg
ICAgLy8gRklYTUU6IEFTU0VSVChzdHJlYW0uQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCk7CiAg
ICAgdGhpcy5Ab3duZXJSZWFkYWJsZVN0cmVhbSA9IG51bGw7CiAgICAgdGhpcy5Ac3RvcmVkRXJy
b3IgPSBzdHJlYW0uQHN0b3JlZEVycm9yOwotICAgIHRoaXMuQGNsb3NlZFByb21pc2VDYXBhYmls
aXR5ID0geyBAcHJvbWlzZTogQFByb21pc2UucmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpIH07
CisgICAgdGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkgPSB7IEBwcm9taXNlOiBAUHJvbWlz
ZS5AcmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpIH07CiAKICAgICByZXR1cm4gdGhpczsKIH0K
QEAgLTI3NSw5ICsyNzUsOSBAQCBmdW5jdGlvbiBjYW5jZWxSZWFkYWJsZVN0cmVhbShzdHJlYW0s
IHJlYXNvbikKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0g
QHN0cmVhbUNsb3NlZCkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAg
ICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKCk7CiAgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09
IEBzdHJlYW1FcnJvcmVkKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KHN0cmVhbS5A
c3RvcmVkRXJyb3IpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChzdHJlYW0uQHN0
b3JlZEVycm9yKTsKICAgICBzdHJlYW0uQHF1ZXVlID0gQG5ld1F1ZXVlKCk7CiAgICAgQGZpbmlz
aENsb3NpbmdSZWFkYWJsZVN0cmVhbShzdHJlYW0pOwogICAgIHJldHVybiBAcHJvbWlzZUludm9r
ZU9yTm9vcChzdHJlYW0uQHVuZGVybHlpbmdTb3VyY2UsICJjYW5jZWwiLCBbcmVhc29uXSkudGhl
bihmdW5jdGlvbigpIHsgfSk7CkBAIC0zNTQsOSArMzU0LDkgQEAgZnVuY3Rpb24gcmVhZEZyb21S
ZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYg
KHJlYWRlci5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zZWQpCi0gICAgICAgIHJldHVybiBAUHJvbWlz
ZS5yZXNvbHZlKHt2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlfSk7CisgICAgICAgIHJldHVy
biBAUHJvbWlzZS5AcmVzb2x2ZSh7dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZX0pOwogICAg
IGlmIChyZWFkZXIuQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCkKLSAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLnJlamVjdChyZWFkZXIuQHN0b3JlZEVycm9yKTsKKyAgICAgICAgcmV0dXJuIEBQcm9t
aXNlLkByZWplY3QocmVhZGVyLkBzdG9yZWRFcnJvcik7CiAgICAgLy8gRklYTUU6IEFTU0VSVCgh
IXJlYWRlci5Ab3duZXJSZWFkYWJsZVN0cmVhbSk7CiAgICAgLy8gRklYTUU6IEFTU0VSVChyZWFk
ZXIuQG93bmVyUmVhZGFibGVTdHJlYW0uQHN0YXRlID09PSBAc3RyZWFtUmVhZGFibGUpOwogICAg
IHZhciBzdHJlYW0gPSByZWFkZXIuQG93bmVyUmVhZGFibGVTdHJlYW07CkBAIC0zNjYsNyArMzY2
LDcgQEAgZnVuY3Rpb24gcmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFkZXIpCiAgICAg
ICAgICAgICBAcmVxdWVzdFJlYWRhYmxlU3RyZWFtUHVsbChzdHJlYW0pOwogICAgICAgICBlbHNl
IGlmICghc3RyZWFtLkBxdWV1ZS5jb250ZW50Lmxlbmd0aCkKICAgICAgICAgICAgIEBmaW5pc2hD
bG9zaW5nUmVhZGFibGVTdHJlYW0oc3RyZWFtKTsKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJl
c29sdmUoe3ZhbHVlOiBjaHVuaywgZG9uZTogZmFsc2V9KTsKKyAgICAgICAgcmV0dXJuIEBQcm9t
aXNlLkByZXNvbHZlKHt2YWx1ZTogY2h1bmssIGRvbmU6IGZhbHNlfSk7CiAgICAgfQogICAgIHZh
ciByZWFkUHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQFByb21pc2Up
OwogICAgIHJlYWRlci5AcmVhZFJlcXVlc3RzLnB1c2gocmVhZFByb21pc2VDYXBhYmlsaXR5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVJlYWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVJlYWRlci5qcwppbmRleCBjNzVhZGIyYWEzODEwZWVkNWRhMDkyNDRmZTEyYjBhYzc4NWJiNDZk
Li45NWQzMmEzYzVhN2U2M2VlZGVhOTUyODE3MzdlOTcxMjE4NTAwMzZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpz
CkBAIC0zMCwxMyArMzAsMTMgQEAgZnVuY3Rpb24gY2FuY2VsKHJlYXNvbikKICAgICAidXNlIHN0
cmljdCI7CiAKICAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMpKQotICAgICAg
ICByZXR1cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQg
YmUgY2FsbGVkIG9uIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7CisgICAgICAgIHJldHVybiBA
UHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVk
IG9uIGEgUmVhZGFibGVTdHJlYW1SZWFkZXIiKSk7CiAKICAgICBpZiAodGhpcy5Ac3RhdGUgPT09
IEBzdHJlYW1DbG9zZWQpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZXNvbHZlKCk7CisgICAg
ICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZSgpOwogCiAgICAgaWYgKHRoaXMuQHN0YXRlID09
PSBAc3RyZWFtRXJyb3JlZCkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdCh0aGlzLkBz
dG9yZWRFcnJvcik7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KHRoaXMuQHN0b3Jl
ZEVycm9yKTsKIAogICAgIC8vIEZJWE1FOiBBU1NFUlQoQGlzUmVhZGFibGVTdHJlYW0odGhpcy5A
b3duZXJSZWFkYWJsZVN0cmVhbSkpOwogICAgIC8vIEZJWE1FOiBBU1NFUlQodGhpcy5Ab3duZXJS
ZWFkYWJsZVN0cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1SZWFkYWJsZSk7CkBAIC00OCw3ICs0OCw3
IEBAIGZ1bmN0aW9uIHJlYWQoKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzUmVh
ZGFibGVTdHJlYW1SZWFkZXIodGhpcykpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3Qo
bmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0
cmVhbVJlYWRlciIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QobmV3IEBUeXBl
RXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVhbVJlYWRl
ciIpKTsKIAogICAgIHJldHVybiBAcmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcih0aGlzKTsK
IH0KQEAgLTc0LDcgKzc0LDcgQEAgZnVuY3Rpb24gY2xvc2VkKCkKICAgICAidXNlIHN0cmljdCI7
CiAKICAgICBpZiAoIUBpc1JlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMpKQotICAgICAgICByZXR1
cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJDYWxsZWUgb2YgY2xvc2VkIGlzIG5v
dCBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJl
amVjdChuZXcgQFR5cGVFcnJvcigiQ2FsbGVlIG9mIGNsb3NlZCBpcyBub3QgYSBSZWFkYWJsZVN0
cmVhbVJlYWRlciIpKTsKIAogICAgIHJldHVybiB0aGlzLkBjbG9zZWRQcm9taXNlQ2FwYWJpbGl0
eS5AcHJvbWlzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9TdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvU3Ry
ZWFtSW50ZXJuYWxzLmpzCmluZGV4IDA0NzVjNTEwZTdmMGRkMmU5NTA4OGZiNDVjNjU3YWI4YjVh
MDZlYzIuLjA5Nzk3YmIwOTJiMGYyYmQwYjFkMDczMGVmN2QzOTAxYWI2NjEyOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVybmFscy5qcwpAQCAt
NDQsMTIgKzQ0LDEyIEBAIGZ1bmN0aW9uIHByb21pc2VJbnZva2VPck5vb3Aob2JqZWN0LCBrZXks
IGFyZ3MpCiAgICAgdHJ5IHsKICAgICAgICAgdmFyIG1ldGhvZCA9IG9iamVjdFtrZXldOwogICAg
ICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICByZXR1
cm4gQFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNv
bHZlKCk7CiAgICAgICAgIHZhciByZXN1bHQgPSBtZXRob2QuQGFwcGx5KG9iamVjdCwgYXJncyk7
Ci0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgICAgIHJldHVy
biBAUHJvbWlzZS5AcmVzb2x2ZShyZXN1bHQpOwogICAgIH0KICAgICBjYXRjaChlcnJvcikgewot
ICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLkByZWplY3QoZXJyb3IpOwogICAgIH0KIAogfQpAQCAtNjMsMTAgKzYzLDEwIEBAIGZ1
bmN0aW9uIHByb21pc2VJbnZva2VPckZhbGxiYWNrT3JOb29wKG9iamVjdCwga2V5MSwgYXJnczEs
IGtleTIsIGFyZ3MyKQogICAgICAgICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gInVuZGVmaW5lZCIp
CiAgICAgICAgICAgICByZXR1cm4gQHByb21pc2VJbnZva2VPck5vb3Aob2JqZWN0LCBrZXkyLCBh
cmdzMik7CiAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdz
MSk7Ci0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBAUHJvbWlzZS5AcmVzb2x2ZShyZXN1bHQpOwogICAgIH0KICAgICBjYXRjaChlcnJvcikg
ewotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IEBQcm9taXNlLkByZWplY3QoZXJyb3IpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCmluZGV4IDQ3NjdhOWQzODEzMTlh
NmFhZWM0OGZjZGY1NDNlN2FmNGQzMDI0ZGMuLmFkOWQxMTAyMTJlNWFkZDFjY2MyMWVlNjBjZmM1
YzJlMWViNDhkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9X
cml0YWJsZVN0cmVhbS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3Jp
dGFibGVTdHJlYW0uanMKQEAgLTQzLDcgKzQzLDcgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZVdyaXRh
YmxlU3RyZWFtKHVuZGVybHlpbmdTaW5rLCBzdHJhdGVneSkKIAogICAgIHRoaXMuQHVuZGVybHlp
bmdTaW5rID0gdW5kZXJseWluZ1Npbms7CiAgICAgdGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxp
dHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQFByb21pc2UpOwotICAgIHRoaXMuQHJlYWR5UHJv
bWlzZUNhcGFiaWxpdHkgPSB7IEBwcm9taXNlOiBAUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCkg
fTsKKyAgICB0aGlzLkByZWFkeVByb21pc2VDYXBhYmlsaXR5ID0geyBAcHJvbWlzZTogQFByb21p
c2UuQHJlc29sdmUoKSB9OwogICAgIHRoaXMuQHF1ZXVlID0gQG5ld1F1ZXVlKCk7CiAgICAgdGhp
cy5Ac3RhdGUgPSBAc3RyZWFtV3JpdGFibGU7CiAgICAgdGhpcy5Ac3RhcnRlZCA9IGZhbHNlOwpA
QCAtNTUsNyArNTUsNyBAQCBmdW5jdGlvbiBpbml0aWFsaXplV3JpdGFibGVTdHJlYW0odW5kZXJs
eWluZ1NpbmssIHN0cmF0ZWd5KQogCiAgICAgdmFyIGVycm9yID0gQGVycm9yV3JpdGFibGVTdHJl
YW0uYmluZCh0aGlzKTsKICAgICB2YXIgc3RhcnRSZXN1bHQgPSBAaW52b2tlT3JOb29wKHVuZGVy
bHlpbmdTaW5rLCAic3RhcnQiLCBbZXJyb3JdKTsKLSAgICB0aGlzLkBzdGFydGVkUHJvbWlzZSA9
IEBQcm9taXNlLnJlc29sdmUoc3RhcnRSZXN1bHQpOworICAgIHRoaXMuQHN0YXJ0ZWRQcm9taXNl
ID0gQFByb21pc2UuQHJlc29sdmUoc3RhcnRSZXN1bHQpOwogICAgIHZhciBfdGhpcyA9IHRoaXM7
CiAgICAgdGhpcy5Ac3RhcnRlZFByb21pc2UudGhlbihmdW5jdGlvbigpIHsKICAgICAgICAgX3Ro
aXMuQHN0YXJ0ZWQgPSB0cnVlOwpAQCAtNzAsMTMgKzcwLDEzIEBAIGZ1bmN0aW9uIGFib3J0KHJl
YXNvbikKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRo
aXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJUaGUg
V3JpdGFibGVTdHJlYW0uYWJvcnQgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mIFdyaXRhYmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChu
ZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmFib3J0IG1ldGhvZCBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKIAogICAgIGlmICh0aGlz
LkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NlZCkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlc29s
dmUodW5kZWZpbmVkKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKCk7CiAKICAg
ICBpZiAodGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1FcnJvcmVkKQotICAgICAgICByZXR1cm4gQFBy
b21pc2UucmVqZWN0KHRoaXMuQHN0b3JlZEVycm9yKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNl
LkByZWplY3QodGhpcy5Ac3RvcmVkRXJyb3IpOwogCiAgICAgQGVycm9yV3JpdGFibGVTdHJlYW0u
QGFwcGx5KHRoaXMsIFtyZWFzb25dKTsKIApAQCAtOTAsMTMgKzkwLDEzIEBAIGZ1bmN0aW9uIGNs
b3NlKCkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRo
aXMpKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJUaGUg
V3JpdGFibGVTdHJlYW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mIFdyaXRhYmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChu
ZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmNsb3NlIG1ldGhvZCBjYW4gb25seSBi
ZSB1c2VkIG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKIAogICAgIGlmICh0aGlz
LkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NlZCB8fCB0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3Np
bmcpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIkNhbm5v
dCBjbG9zZSBhIFdyaXRhYmxlU3RyaW5nIHRoYXQgaXMgY2xvc2VkIG9yIGNsb3NpbmciKSk7Cisg
ICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJDYW5ub3QgY2xv
c2UgYSBXcml0YWJsZVN0cmluZyB0aGF0IGlzIGNsb3NlZCBvciBjbG9zaW5nIikpOwogCiAgICAg
aWYgKHRoaXMuQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCkKLSAgICAgICAgcmV0dXJuIEBQcm9t
aXNlLnJlamVjdCh0aGlzLkBzdG9yZWRFcnJvcik7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5A
cmVqZWN0KHRoaXMuQHN0b3JlZEVycm9yKTsKIAogICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHN0
cmVhbVdhaXRpbmcpCiAgICAgICAgIHRoaXMuQHJlYWR5UHJvbWlzZUNhcGFiaWxpdHkuQHJlc29s
dmUuQGNhbGwodW5kZWZpbmVkLCB1bmRlZmluZWQpOwpAQCAtMTEzLDEzICsxMTMsMTMgQEAgZnVu
Y3Rpb24gd3JpdGUoY2h1bmspCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKCFAaXNXcml0
YWJsZVN0cmVhbSh0aGlzKSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdChuZXcgQFR5
cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmNsb3NlIG1ldGhvZCBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9t
aXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS5jbG9zZSBtZXRo
b2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CiAK
ICAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zZWQgfHwgdGhpcy5Ac3RhdGUgPT09
IEBzdHJlYW1DbG9zaW5nKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlw
ZUVycm9yKCJDYW5ub3Qgd3JpdGUgb24gYSBXcml0YWJsZVN0cmluZyB0aGF0IGlzIGNsb3NlZCBv
ciBjbG9zaW5nIikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVF
cnJvcigiQ2Fubm90IHdyaXRlIG9uIGEgV3JpdGFibGVTdHJpbmcgdGhhdCBpcyBjbG9zZWQgb3Ig
Y2xvc2luZyIpKTsKIAogICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbUVycm9yZWQpCi0g
ICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3QodGhpcy5Ac3RvcmVkRXJyb3IpOworICAgICAg
ICByZXR1cm4gQFByb21pc2UuQHJlamVjdCh0aGlzLkBzdG9yZWRFcnJvcik7CiAKICAgICAvLyBG
SVhNRQogICAgIC8vIGFzc2VydCh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbVdyaXRhYmxlIHx8IHRo
aXMuQHN0YXRlID09PSBAc3RyZWFtV2FpdGluZyk7CkBAIC0xMzAsNyArMTMwLDcgQEAgZnVuY3Rp
b24gd3JpdGUoY2h1bmspCiAgICAgICAgICAgICBjaHVua1NpemUgPSB0aGlzLkBzdHJhdGVneS5z
aXplLkBjYWxsKHVuZGVmaW5lZCwgY2h1bmspOwogICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAg
ICAgICAgIEBlcnJvcldyaXRhYmxlU3RyZWFtLkBjYWxsKHRoaXMsIGUpOwotICAgICAgICAgICAg
cmV0dXJuIEBQcm9taXNlLnJlamVjdChlKTsKKyAgICAgICAgICAgIHJldHVybiBAUHJvbWlzZS5A
cmVqZWN0KGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMzksNyArMTM5LDcgQEAgZnVuY3Rp
b24gd3JpdGUoY2h1bmspCiAgICAgICAgIEBlbnF1ZXVlVmFsdWVXaXRoU2l6ZSh0aGlzLkBxdWV1
ZSwgeyBwcm9taXNlQ2FwYWJpbGl0eTogcHJvbWlzZUNhcGFiaWxpdHksIGNodW5rOiBjaHVuayB9
LCBjaHVua1NpemUpOwogICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgQGVycm9yV3JpdGFibGVT
dHJlYW0uQGNhbGwodGhpcywgZSk7Ci0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3QoZSk7
CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KGUpOwogICAgIH0KIAogICAgIEBzeW5j
V3JpdGFibGVTdHJlYW1TdGF0ZVdpdGhRdWV1ZSh0aGlzKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBm
dW5jdGlvbiBjbG9zZWQoKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzV3JpdGFi
bGVTdHJlYW0odGhpcykpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3QobmV3IEBUeXBl
RXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS5jbG9zZWQgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQg
b24gaW5zdGFuY2VzIG9mIFdyaXRhYmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gQFByb21p
c2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmNsb3NlZCBnZXR0
ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CiAK
ICAgICByZXR1cm4gdGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7CiB9CkBA
IC0xNjMsNyArMTYzLDcgQEAgZnVuY3Rpb24gcmVhZHkoKQogICAgICJ1c2Ugc3RyaWN0IjsKIAog
ICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0odGhpcykpCi0gICAgICAgIHJldHVybiBAUHJvbWlz
ZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS5yZWFkeSBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CisgICAg
ICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJUaGUgV3JpdGFibGVT
dHJlYW0ucmVhZHkgZ2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdyaXRh
YmxlU3RyZWFtIikpOwogCiAgICAgcmV0dXJuIHRoaXMuQHJlYWR5UHJvbWlzZUNhcGFiaWxpdHku
QHByb21pc2U7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWRjZDUwMTA2MTExMTk2MzAyNWZkMmNkOWFkNWQxYjc5M2I1
YmFkYy4uZmRhMmMzZDg2ZTc0NjQwMmYyM2RjODNlYTQ3ODg4ZjIxYzcwYjZjYiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDE1LTExLTA1ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZh
cmlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBTaGllbGQgaW1wbGVtZW50
YXRpb24gZnJvbSB1c2VyIG1hbmdsaW5nIFByb21pc2UucmVqZWN0IGFuZCByZXNvbHZlIG1ldGhv
ZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDg5
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3Ry
ZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWw6IEltcHJvdmVkIHNvbWUgc3R5bGUgaXNzdWVzLiBB
ZGRlZCB0ZXN0cyBhYm91dCBjaGFuZ2luZyBQcm9taXNlLnJlc29sdmUgYW5kCisgICAgICAgIHJl
amVjdC4KKyAgICAgICAgKiBzdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMtZXhwZWN0ZWQudHh0OiBB
ZGRlZCBleHBlY3RhdGlvbnMuCisKIDIwMTUtMTEtMDQgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFy
ICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIFNoaWVsZCBz
dHJlYW1zIGFnYWluc3QgdXNlciByZXBsYWNpbmcgdGhlIFByb21pc2UgY29uc3RydWN0b3IKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGQ1ZGM0YjlkYmUxNzBlZDc4MzA3MGJjYmIyNDAzZmI2YjJiZTk2ZDAuLjIwNGFhZWEyNDhj
YmY2ZjE1NmRjOTBiOGJkNWIyYWJhZDgxNmI0MGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
cmVhbXMvc3RyZWFtcy1wcm9taXNlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3Ry
ZWFtcy9zdHJlYW1zLXByb21pc2VzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDUgQEAKIAotUEFT
UyBTdHJlYW1zIGNhbiBiZSBidWlsdCBldmVuIGlmIFByb21pc2UgY29uc3RydWN0b3IgaXMgcmVw
bGFjZWQgCitQQVNTIFN0cmVhbXMgaW1wbGVtZW50YXRpb24gaXMgbm90IGFmZmVjdGVkIGlmIFBy
b21pc2UgY29uc3RydWN0b3IgaXMgcmVwbGFjZWQgCitQQVNTIFN0cmVhbXMgaW1wbGVtZW50YXRp
b24gaXMgbm90IGFmZmVjdGVkIGlmIFByb21pc2UucmVzb2x2ZSBpcyByZXBsYWNlZCAKK1BBU1Mg
U3RyZWFtcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgYWZmZWN0ZWQgaWYgUHJvbWlzZS5yZWplY3Qg
aXMgcmVwbGFjZWQgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1w
cm9taXNlcy5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWwK
aW5kZXggNzM5NGM5YmU1MTdkMzk0ZTc4MmU0ZTM1Mjc4ZmE3ZDU2MTIyYmUwZi4uZTU1OWIxYjIx
NWFlODgxMTQ1YWUwZWYwYTQzYTliMDIwZDI0N2JhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9z
dHJlYW1zLXByb21pc2VzLmh0bWwKQEAgLTIsMTAgKzIsNDMgQEAKIDxzY3JpcHQgc3JjPScuLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMnPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Jy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyc+PC9zY3JpcHQ+CiA8c2NyaXB0PgorCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIGNvbnN0IFByb21pc2VCYWNrdXAgPSBQcm9taXNlOworCisgICAgdHJ5
IHsKKyAgICAgICAgUHJvbWlzZSA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJzdHJl
YW1zIHNob3VsZCBub3QgdXNlIHRoaXMgUHJvbWlzZSBvYmplY3QiKTsgfTsKKworICAgICAgICBu
ZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgICAgICAgbmV3IFdyaXRhYmxlU3RyZWFtKCk7CisgICAg
fSBmaW5hbGx5IHsKKyAgICAgICAgUHJvbWlzZSA9IFByb21pc2VCYWNrdXA7CisgICAgfQorfSwg
J1N0cmVhbXMgaW1wbGVtZW50YXRpb24gaXMgbm90IGFmZmVjdGVkIGlmIFByb21pc2UgY29uc3Ry
dWN0b3IgaXMgcmVwbGFjZWQnKTsKKwogdGVzdChmdW5jdGlvbigpIHsKLSAgICBQcm9taXNlID0g
ZnVuY3Rpb24oKSB7IHRocm93IG5ldyBFcnJvcigibmFzdHkgdGhpbmdzIik7IH07CisgICAgY29u
c3QgUHJvbWlzZVJlc29sdmVCYWNrdXAgPSBQcm9taXNlLnJlc29sdmU7CisKKyAgICB0cnkgewor
ICAgICAgICBQcm9taXNlLnJlc29sdmUgPSBmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgi
c3RyZWFtcyBzaG91bGQgbm90IHVzZSB0aGlzIFByb21pc2UucmVzb2x2ZSBtZXRob2QiKTsgfTsK
KworICAgICAgICBuZXcgUmVhZGFibGVTdHJlYW0oKTsKKyAgICAgICAgbmV3IFdyaXRhYmxlU3Ry
ZWFtKCk7CisgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgUHJvbWlzZS5yZXNvbHZlID0gUHJvbWlz
ZVJlc29sdmVCYWNrdXA7CisgICAgfQorfSwgJ1N0cmVhbXMgaW1wbGVtZW50YXRpb24gaXMgbm90
IGFmZmVjdGVkIGlmIFByb21pc2UucmVzb2x2ZSBpcyByZXBsYWNlZCcpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIGNvbnN0IFByb21pc2VSZWplY3RCYWNrdXAgPSBQcm9taXNlLnJlamVjdDsK
KworICAgIHRyeSB7CisgICAgICAgIFByb21pc2UucmVqZWN0ID0gZnVuY3Rpb24oKSB7IGFzc2Vy
dF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2UgdGhpcyBQcm9taXNlLnJlamVjdCBt
ZXRob2QiKTsgfTsKIAotICAgIGNvbnN0IHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7IC8vIERv
ZXMgbm90IHRocm93LgotICAgIGNvbnN0IHdzID0gbmV3IFdyaXRhYmxlU3RyZWFtKCk7IC8vIERv
ZXMgbm90IHRocm93LgotfSwgJ1N0cmVhbXMgY2FuIGJlIGJ1aWx0IGV2ZW4gaWYgUHJvbWlzZSBj
b25zdHJ1Y3RvciBpcyByZXBsYWNlZCcpOworICAgICAgICBSZWFkYWJsZVN0cmVhbS5wcm90b3R5
cGUuY2FuY2VsLmNhbGwoe30sICJyZWFzb24iKTsKKyAgICAgICAgV3JpdGFibGVTdHJlYW0ucHJv
dG90eXBlLmFib3J0LmNhbGwoe30sICJyZWFzb24iKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAg
ICBQcm9taXNlLnJlamVjdCA9IFByb21pc2VSZWplY3RCYWNrdXA7CisgICAgfQorfSwgJ1N0cmVh
bXMgaW1wbGVtZW50YXRpb24gaXMgbm90IGFmZmVjdGVkIGlmIFByb21pc2UucmVqZWN0IGlzIHJl
cGxhY2VkJyk7CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264851</attachid>
            <date>2015-11-05 04:53:04 -0800</date>
            <delta_ts>2015-11-05 06:02:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150895-20151105135205.patch</filename>
            <type>text/plain</type>
            <size>20693</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YjY4NTliMTU2MGM0OTQ5NWEwNTdjMmFmZTU1NTNmYzcwNDEzN2M5Li5hMTkwMjIyODY2YmI5ZTI5
M2I4YzdhMjFlMDVmMjQ4NTc1NzQ2MDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNS0xMS0wNSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJp
c0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gU2hpZWxkIGltcGxlbWVudGF0
aW9uIGZyb20gdXNlciBtYW5nbGluZyBQcm9taXNlLnJlamVjdCBhbmQgcmVzb2x2ZSBtZXRob2Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA4OTUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBLZWVwIFBy
b21pc2UucmVzb2x2ZSBhbmQgcmVqZWN0IGFsc28gYXMgaW50ZXJuYWwgc2xvdHMgZm9yIHRoZSBQ
cm9taXNlIGNvbnN0cnVjdG9yIGdpdmVuIHRoYXQgdGhlcmUgaXMgbm8gd2F5IHRvCisgICAgICAg
IHJldHJpZXZlIHRoZSBmb3JtZXIgaW1wbGVtZW50YXRpb24gaWYgdGhlIHVzZXIgZGVjaWRlcyB0
byByZXBsYWNlIGl0LiBUaGlzIGFsbG93cyB0byBzYWZlbHkgY3JlYXRlIHZlbmRlZAorICAgICAg
ICBwcm9taXNlcyBldmVuIGlmIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGNvbnN0cnVjdG9yIG1ldGhv
ZHMuCisKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmg6CisgICAgICAg
ICogcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJv
bWlzZUNvbnN0cnVjdG9yOjphZGRPd25JbnRlcm5hbFNsb3RzKTogQWRkZWQgdG8gaW5jbHVkZSBA
cmVqZWN0IGFuZCBAcmVzb2x2ZS4KKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3I6
OmNyZWF0ZSk6IENhbGwgYWRkT3duSW50ZXJuYWxTbG90cy4KKwogMjAxNS0xMS0wMyAgQmVuamFt
aW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBBZGQgQjMt
dG8tQWlyIGxvd2VyaW5nIGZvciBCaXRYb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYzQ3ZTBiYWFjNDkxYWY1
ZDBlOGJiMWM2ZmE5OWY5M2NhNzc1NGM0Li40ZDFlZjYyMTEwYjg5OTY1NWNiY2JhZjNjZjE2OWVl
MjIyYjAxMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTUtMTEtMDUgIFhhYmll
ciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKworICAgICAgICBbU3Ry
ZWFtcyBBUEldIFNoaWVsZCBpbXBsZW1lbnRhdGlvbiBmcm9tIHVzZXIgbWFuZ2xpbmcgUHJvbWlz
ZS5yZWplY3QgYW5kIHJlc29sdmUgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBhbGwgY2FsbHMgdG8gQFByb21pc2UucmVzb2x2
ZSBhbmQgQFByb21pc2UucmVqZWN0IHdpdGggdGhlaXIgaW50ZXJuYWwgc2xvdCBjb3VudGVycGFy
dHMuIFRoaXMgd2F5IHdlCisgICAgICAgIGVuc3VyZSB0aGF0IGlmIHRoZSB1c2VyIHJlcGxhY2Vz
IHRob3NlIGNvbnN0cnVjdG9yIG1ldGhvZHMsIG91ciBpbXBsZW1lbnRhdGlvbiBzdGlsbCB3b3Jr
cy4KKworICAgICAgICBUZXN0OiBzdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMuaHRtbC4KKworICAg
ICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qczoKKyAgICAgICAgKGluaXRp
YWxpemVSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChjYW5jZWwpOgorICAgICAgICAqIE1vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qczoKKyAgICAgICAgKHByaXZhdGVJ
bml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAoY2FuY2VsUmVhZGFibGVT
dHJlYW0pOgorICAgICAgICAocmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcik6CisgICAgICAg
ICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzOgorICAgICAgICAoY2Fu
Y2VsKToKKyAgICAgICAgKHJlYWQpOgorICAgICAgICAoY2xvc2VkKToKKyAgICAgICAgKiBNb2R1
bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzOgorICAgICAgICAocHJvbWlzZUludm9rZU9y
Tm9vcCk6CisgICAgICAgIChwcm9taXNlSW52b2tlT3JGYWxsYmFja09yTm9vcCk6CisgICAgICAg
ICogTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzOgorICAgICAgICAoaW5pdGlhbGl6
ZVdyaXRhYmxlU3RyZWFtKToKKyAgICAgICAgKGFib3J0KToKKyAgICAgICAgKGNsb3NlKToKKyAg
ICAgICAgKHdyaXRlKToKKyAgICAgICAgKGNsb3NlZCk6CisgICAgICAgIChyZWFkeSk6CisKIDIw
MTUtMTEtMDQgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbU3RyZWFtcyBBUEldIFNoaWVsZCBzdHJlYW1zIGFnYWluc3QgdXNlciByZXBs
YWNpbmcgdGhlIFByb21pc2UgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAppbmRleCBhOWJhMWM1OTI2
NzBjZTFmNjU1MTI0NTJjYmMzODMwZjc5MTAwYWRmLi4wOTcwNTRkMDE4MjBmYjM4YTNhNzI0NjZi
YWRjNmE5MTJiOTZiNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNQcm9taXNlLmgiCiAjaW5jbHVkZSAiSlNQcm9taXNlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
TG9va3VwLmgiCkBAIC02NCw2ICs2NSw3IEBAIEpTUHJvbWlzZUNvbnN0cnVjdG9yKiBKU1Byb21p
c2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsCiB7CiAg
ICAgSlNQcm9taXNlQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNQcm9taXNlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1Byb21pc2VDb25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IHByb21pc2VQcm90b3R5cGUpOworICAgIGNvbnN0cnVjdG9yLT5hZGRPd25JbnRlcm5hbFNsb3Rz
KHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKTsKICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiB9CiAKQEAgLTg0LDYgKzg2LDEyIEBAIHZvaWQgSlNQcm9taXNlQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNQcm9taXNlUHJvdG90eXBlKiBwcm9taXNlUHJvCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAordm9pZCBK
U1Byb21pc2VDb25zdHJ1Y3Rvcjo6YWRkT3duSW50ZXJuYWxTbG90cyhWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT04odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucmVzb2x2ZVByaXZhdGVOYW1lKCksIHByb21pc2VD
b25zdHJ1Y3RvclJlc29sdmVDb2RlR2VuZXJhdG9yLCBEb250RW51bSB8IERvbnREZWxldGUgfCBS
ZWFkT25seSk7CisgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkucmVqZWN0UHJpdmF0ZU5hbWUoKSwgcHJvbWlzZUNvbnN0cnVjdG9yUmVqZWN0
Q29kZUdlbmVyYXRvciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworfQorCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQcm9taXNlKEV4ZWNT
dGF0ZSogZXhlYykKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+
Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmgKaW5kZXggZGFlNTJkM2E4Y2Y1MGJkMmQ2
Mjk3MmYxNmI3MjU2N2JmZDBjMzVkNy4uZDg0OTM0NDk3ZDViNTM4M2YwNzYxMTcwZjE4MDIwZmM3
MjA3ZTY4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b21pc2VDb25zdHJ1Y3Rvci5oCkBAIC01Miw2ICs1Miw4IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6
CiAgICAgc3RhdGljIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25z
dHJ1Y3REYXRhJik7CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJik7CisKKyAgICB2b2lkIGFkZE93bkludGVybmFsU2xvdHMoVk0mLCBKU0dsb2JhbE9i
amVjdCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKaW5kZXggNzg1YTU1ZDFlZGM3ZjkyNzFl
YmM1MzU3Yjg4NGQxN2MzNTRiMTdhNC4uNjg2YjM1NjVjOTc2MjFjNWQwZTk3YzhlZWY1ODA4OGVj
YzhjODk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5qcwpAQCAtNTYsNyArNTYsNyBAQCBmdW5jdGlvbiBpbml0aWFsaXplUmVhZGFibGVT
dHJlYW0odW5kZXJseWluZ1NvdXJjZSwgc3RyYXRlZ3kpCiAKICAgICB2YXIgcmVzdWx0ID0gQGlu
dm9rZU9yTm9vcCh1bmRlcmx5aW5nU291cmNlLCAic3RhcnQiLCBbdGhpcy5AY29udHJvbGxlcl0p
OwogICAgIHZhciBfdGhpcyA9IHRoaXM7Ci0gICAgQFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRo
ZW4oZnVuY3Rpb24oKSB7CisgICAgQFByb21pc2UuQHJlc29sdmUocmVzdWx0KS50aGVuKGZ1bmN0
aW9uKCkgewogICAgICAgICBfdGhpcy5Ac3RhcnRlZCA9IHRydWU7CiAgICAgICAgIEByZXF1ZXN0
UmVhZGFibGVTdHJlYW1QdWxsKF90aGlzKTsKICAgICB9LCBmdW5jdGlvbihlcnJvcikgewpAQCAt
NzIsMTAgKzcyLDEwIEBAIGZ1bmN0aW9uIGNhbmNlbChyZWFzb24pCiAgICAgInVzZSBzdHJpY3Qi
OwogCiAgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbSh0aGlzKSkKLSAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBv
biBhIFJlYWRhYmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChu
ZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3Ry
ZWFtIikpOwogCiAgICAgaWYgKEBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHRoaXMpKQotICAgICAg
ICByZXR1cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBp
cyBsb2NrZWQiKSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVy
cm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQiKSk7CiAKICAgICByZXR1cm4gQGNhbmNlbFJl
YWRhYmxlU3RyZWFtKHRoaXMsIHJlYXNvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKaW5kZXggZjBm
NzM4YjllZTQ1NWFlZGQ0NzI3NTQ0NjUzZTQ5OGY1NGYzYTRmMy4uMDAwYzBhNmQyZWE1MzE1OTRm
ZTYyNDlhZGVjNTllYmI5ZmVmYjhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwpAQCAtNDgsMTMgKzQ4
LDEzIEBAIGZ1bmN0aW9uIHByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1SZWFkZXIoc3Ry
ZWFtKQogICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAc3RyZWFtQ2xvc2VkKSB7CiAgICAgICAg
IHRoaXMuQG93bmVyUmVhZGFibGVTdHJlYW0gPSBudWxsOwogICAgICAgICB0aGlzLkBzdG9yZWRF
cnJvciA9IHVuZGVmaW5lZDsKLSAgICAgICAgdGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkg
PSB7IEBwcm9taXNlOiBAUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCkgfTsKKyAgICAgICAgdGhp
cy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkgPSB7IEBwcm9taXNlOiBAUHJvbWlzZS5AcmVzb2x2
ZSgpIH07CiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIH0KICAgICAvLyBGSVhNRTogQVNTRVJU
KHN0cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1FcnJvcmVkKTsKICAgICB0aGlzLkBvd25lclJlYWRh
YmxlU3RyZWFtID0gbnVsbDsKICAgICB0aGlzLkBzdG9yZWRFcnJvciA9IHN0cmVhbS5Ac3RvcmVk
RXJyb3I7Ci0gICAgdGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkgPSB7IEBwcm9taXNlOiBA
UHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcikgfTsKKyAgICB0aGlzLkBjbG9zZWRQ
cm9taXNlQ2FwYWJpbGl0eSA9IHsgQHByb21pc2U6IEBQcm9taXNlLkByZWplY3Qoc3RyZWFtLkBz
dG9yZWRFcnJvcikgfTsKIAogICAgIHJldHVybiB0aGlzOwogfQpAQCAtMjc1LDkgKzI3NSw5IEBA
IGZ1bmN0aW9uIGNhbmNlbFJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgcmVhc29uKQogICAgICJ1c2Ug
c3RyaWN0IjsKIAogICAgIGlmIChzdHJlYW0uQHN0YXRlID09PSBAc3RyZWFtQ2xvc2VkKQotICAg
ICAgICByZXR1cm4gQFByb21pc2UucmVzb2x2ZSgpOworICAgICAgICByZXR1cm4gQFByb21pc2Uu
QHJlc29sdmUoKTsKICAgICBpZiAoc3RyZWFtLkBzdGF0ZSA9PT0gQHN0cmVhbUVycm9yZWQpCi0g
ICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3Qoc3RyZWFtLkBzdG9yZWRFcnJvcik7CisgICAg
ICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KHN0cmVhbS5Ac3RvcmVkRXJyb3IpOwogICAgIHN0
cmVhbS5AcXVldWUgPSBAbmV3UXVldWUoKTsKICAgICBAZmluaXNoQ2xvc2luZ1JlYWRhYmxlU3Ry
ZWFtKHN0cmVhbSk7CiAgICAgcmV0dXJuIEBwcm9taXNlSW52b2tlT3JOb29wKHN0cmVhbS5AdW5k
ZXJseWluZ1NvdXJjZSwgImNhbmNlbCIsIFtyZWFzb25dKS50aGVuKGZ1bmN0aW9uKCkgeyB9KTsK
QEAgLTM1NCw5ICszNTQsOSBAQCBmdW5jdGlvbiByZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVy
KHJlYWRlcikKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAocmVhZGVyLkBzdGF0ZSA9PT0g
QHN0cmVhbUNsb3NlZCkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlc29sdmUoe3ZhbHVlOiB1
bmRlZmluZWQsIGRvbmU6IHRydWV9KTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZl
KHt2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlfSk7CiAgICAgaWYgKHJlYWRlci5Ac3RhdGUg
PT09IEBzdHJlYW1FcnJvcmVkKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KHJlYWRl
ci5Ac3RvcmVkRXJyb3IpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChyZWFkZXIu
QHN0b3JlZEVycm9yKTsKICAgICAvLyBGSVhNRTogQVNTRVJUKCEhcmVhZGVyLkBvd25lclJlYWRh
YmxlU3RyZWFtKTsKICAgICAvLyBGSVhNRTogQVNTRVJUKHJlYWRlci5Ab3duZXJSZWFkYWJsZVN0
cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1SZWFkYWJsZSk7CiAgICAgdmFyIHN0cmVhbSA9IHJlYWRl
ci5Ab3duZXJSZWFkYWJsZVN0cmVhbTsKQEAgLTM2Niw3ICszNjYsNyBAQCBmdW5jdGlvbiByZWFk
RnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcikKICAgICAgICAgICAgIEByZXF1ZXN0UmVh
ZGFibGVTdHJlYW1QdWxsKHN0cmVhbSk7CiAgICAgICAgIGVsc2UgaWYgKCFzdHJlYW0uQHF1ZXVl
LmNvbnRlbnQubGVuZ3RoKQogICAgICAgICAgICAgQGZpbmlzaENsb3NpbmdSZWFkYWJsZVN0cmVh
bShzdHJlYW0pOwotICAgICAgICByZXR1cm4gQFByb21pc2UucmVzb2x2ZSh7dmFsdWU6IGNodW5r
LCBkb25lOiBmYWxzZX0pOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUoe3ZhbHVl
OiBjaHVuaywgZG9uZTogZmFsc2V9KTsKICAgICB9CiAgICAgdmFyIHJlYWRQcm9taXNlQ2FwYWJp
bGl0eSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShAUHJvbWlzZSk7CiAgICAgcmVhZGVyLkByZWFk
UmVxdWVzdHMucHVzaChyZWFkUHJvbWlzZUNhcGFiaWxpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmpzCmluZGV4IGM3
NWFkYjJhYTM4MTBlZWQ1ZGEwOTI0NGZlMTJiMGFjNzg1YmI0NmQuLjk1ZDMyYTNjNWE3ZTYzZWVk
ZWE5NTI4MTczN2U5NzEyMTg1MDAzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuanMKQEAgLTMwLDEzICszMCwxMyBA
QCBmdW5jdGlvbiBjYW5jZWwocmVhc29uKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICgh
QGlzUmVhZGFibGVTdHJlYW1SZWFkZXIodGhpcykpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5y
ZWplY3QobmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFk
YWJsZVN0cmVhbVJlYWRlciIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QobmV3
IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24gYSBSZWFkYWJsZVN0cmVh
bVJlYWRlciIpKTsKIAogICAgIGlmICh0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NlZCkKLSAg
ICAgICAgcmV0dXJuIEBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNl
LkByZXNvbHZlKCk7CiAKICAgICBpZiAodGhpcy5Ac3RhdGUgPT09IEBzdHJlYW1FcnJvcmVkKQot
ICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KHRoaXMuQHN0b3JlZEVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QodGhpcy5Ac3RvcmVkRXJyb3IpOwogCiAgICAgLy8g
RklYTUU6IEFTU0VSVChAaXNSZWFkYWJsZVN0cmVhbSh0aGlzLkBvd25lclJlYWRhYmxlU3RyZWFt
KSk7CiAgICAgLy8gRklYTUU6IEFTU0VSVCh0aGlzLkBvd25lclJlYWRhYmxlU3RyZWFtLkBzdGF0
ZSA9PT0gQHN0cmVhbVJlYWRhYmxlKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgZnVuY3Rpb24gcmVhZCgp
CiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKCFAaXNSZWFkYWJsZVN0cmVhbVJlYWRlcih0
aGlzKSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigiRnVu
Y3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIikpOworICAg
ICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5cGVFcnJvcigiRnVuY3Rpb24gc2hv
dWxkIGJlIGNhbGxlZCBvbiBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIikpOwogCiAgICAgcmV0dXJu
IEByZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKHRoaXMpOwogfQpAQCAtNzQsNyArNzQsNyBA
QCBmdW5jdGlvbiBjbG9zZWQoKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzUmVh
ZGFibGVTdHJlYW1SZWFkZXIodGhpcykpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3Qo
bmV3IEBUeXBlRXJyb3IoIkNhbGxlZSBvZiBjbG9zZWQgaXMgbm90IGEgUmVhZGFibGVTdHJlYW1S
ZWFkZXIiKSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9y
KCJDYWxsZWUgb2YgY2xvc2VkIGlzIG5vdCBhIFJlYWRhYmxlU3RyZWFtUmVhZGVyIikpOwogCiAg
ICAgcmV0dXJuIHRoaXMuQGNsb3NlZFByb21pc2VDYXBhYmlsaXR5LkBwcm9taXNlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVybmFscy5q
cyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMKaW5k
ZXggMDQ3NWM1MTBlN2YwZGQyZTk1MDg4ZmI0NWM2NTdhYjhiNWEwNmVjMi4uMDk3OTdiYjA5MmIw
ZjJiZDBiMWQwNzMwZWY3ZDM5MDFhYjY2MTI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC00NCwxMiArNDQsMTIgQEAgZnVu
Y3Rpb24gcHJvbWlzZUludm9rZU9yTm9vcChvYmplY3QsIGtleSwgYXJncykKICAgICB0cnkgewog
ICAgICAgICB2YXIgbWV0aG9kID0gb2JqZWN0W2tleV07CiAgICAgICAgIGlmICh0eXBlb2YgbWV0
aG9kID09PSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgIHJldHVybiBAUHJvbWlzZS5yZXNvbHZl
KCk7CisgICAgICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUoKTsKICAgICAgICAgdmFy
IHJlc3VsdCA9IG1ldGhvZC5AYXBwbHkob2JqZWN0LCBhcmdzKTsKLSAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZl
KHJlc3VsdCk7CiAgICAgfQogICAgIGNhdGNoKGVycm9yKSB7Ci0gICAgICAgIHJldHVybiBAUHJv
bWlzZS5yZWplY3QoZXJyb3IpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChlcnJv
cik7CiAgICAgfQogCiB9CkBAIC02MywxMCArNjMsMTAgQEAgZnVuY3Rpb24gcHJvbWlzZUludm9r
ZU9yRmFsbGJhY2tPck5vb3Aob2JqZWN0LCBrZXkxLCBhcmdzMSwga2V5MiwgYXJnczIpCiAgICAg
ICAgIGlmICh0eXBlb2YgbWV0aG9kID09PSAidW5kZWZpbmVkIikKICAgICAgICAgICAgIHJldHVy
biBAcHJvbWlzZUludm9rZU9yTm9vcChvYmplY3QsIGtleTIsIGFyZ3MyKTsKICAgICAgICAgY29u
c3QgcmVzdWx0ID0gbWV0aG9kLkBhcHBseShvYmplY3QsIGFyZ3MxKTsKLSAgICAgICAgcmV0dXJu
IEBQcm9taXNlLnJlc29sdmUocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNv
bHZlKHJlc3VsdCk7CiAgICAgfQogICAgIGNhdGNoKGVycm9yKSB7Ci0gICAgICAgIHJldHVybiBA
UHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChl
cnJvcik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvV3JpdGFibGVTdHJlYW0uanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
V3JpdGFibGVTdHJlYW0uanMKaW5kZXggNDc2N2E5ZDM4MTMxOWE2YWFlYzQ4ZmNkZjU0M2U3YWY0
ZDMwMjRkYy4uYWQ5ZDExMDIxMmU1YWRkMWNjYzIxZWU2MGNmYzVjMmUxZWI0OGQwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcwpAQCAt
NDMsNyArNDMsNyBAQCBmdW5jdGlvbiBpbml0aWFsaXplV3JpdGFibGVTdHJlYW0odW5kZXJseWlu
Z1NpbmssIHN0cmF0ZWd5KQogCiAgICAgdGhpcy5AdW5kZXJseWluZ1NpbmsgPSB1bmRlcmx5aW5n
U2luazsKICAgICB0aGlzLkBjbG9zZWRQcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2Fw
YWJpbGl0eShAUHJvbWlzZSk7Ci0gICAgdGhpcy5AcmVhZHlQcm9taXNlQ2FwYWJpbGl0eSA9IHsg
QHByb21pc2U6IEBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKSB9OworICAgIHRoaXMuQHJlYWR5
UHJvbWlzZUNhcGFiaWxpdHkgPSB7IEBwcm9taXNlOiBAUHJvbWlzZS5AcmVzb2x2ZSgpIH07CiAg
ICAgdGhpcy5AcXVldWUgPSBAbmV3UXVldWUoKTsKICAgICB0aGlzLkBzdGF0ZSA9IEBzdHJlYW1X
cml0YWJsZTsKICAgICB0aGlzLkBzdGFydGVkID0gZmFsc2U7CkBAIC01NSw3ICs1NSw3IEBAIGZ1
bmN0aW9uIGluaXRpYWxpemVXcml0YWJsZVN0cmVhbSh1bmRlcmx5aW5nU2luaywgc3RyYXRlZ3kp
CiAKICAgICB2YXIgZXJyb3IgPSBAZXJyb3JXcml0YWJsZVN0cmVhbS5iaW5kKHRoaXMpOwogICAg
IHZhciBzdGFydFJlc3VsdCA9IEBpbnZva2VPck5vb3AodW5kZXJseWluZ1NpbmssICJzdGFydCIs
IFtlcnJvcl0pOwotICAgIHRoaXMuQHN0YXJ0ZWRQcm9taXNlID0gQFByb21pc2UucmVzb2x2ZShz
dGFydFJlc3VsdCk7CisgICAgdGhpcy5Ac3RhcnRlZFByb21pc2UgPSBAUHJvbWlzZS5AcmVzb2x2
ZShzdGFydFJlc3VsdCk7CiAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICB0aGlzLkBzdGFydGVk
UHJvbWlzZS50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICBfdGhpcy5Ac3RhcnRlZCA9IHRydWU7
CkBAIC03MCwxMyArNzAsMTMgQEAgZnVuY3Rpb24gYWJvcnQocmVhc29uKQogICAgICJ1c2Ugc3Ry
aWN0IjsKIAogICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0odGhpcykpCi0gICAgICAgIHJldHVy
biBAUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS5hYm9y
dCBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0i
KSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJUaGUg
V3JpdGFibGVTdHJlYW0uYWJvcnQgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mIFdyaXRhYmxlU3RyZWFtIikpOwogCiAgICAgaWYgKHRoaXMuQHN0YXRlID09PSBAc3RyZWFt
Q2xvc2VkKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpOworICAg
ICAgICByZXR1cm4gQFByb21pc2UuQHJlc29sdmUoKTsKIAogICAgIGlmICh0aGlzLkBzdGF0ZSA9
PT0gQHN0cmVhbUVycm9yZWQpCi0gICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3QodGhpcy5A
c3RvcmVkRXJyb3IpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdCh0aGlzLkBzdG9y
ZWRFcnJvcik7CiAKICAgICBAZXJyb3JXcml0YWJsZVN0cmVhbS5AYXBwbHkodGhpcywgW3JlYXNv
bl0pOwogCkBAIC05MCwxMyArOTAsMTMgQEAgZnVuY3Rpb24gY2xvc2UoKQogICAgICJ1c2Ugc3Ry
aWN0IjsKIAogICAgIGlmICghQGlzV3JpdGFibGVTdHJlYW0odGhpcykpCi0gICAgICAgIHJldHVy
biBAUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS5jbG9z
ZSBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0i
KSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJUaGUg
V3JpdGFibGVTdHJlYW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2Vz
IG9mIFdyaXRhYmxlU3RyZWFtIikpOwogCiAgICAgaWYgKHRoaXMuQHN0YXRlID09PSBAc3RyZWFt
Q2xvc2VkIHx8IHRoaXMuQHN0YXRlID09PSBAc3RyZWFtQ2xvc2luZykKLSAgICAgICAgcmV0dXJu
IEBQcm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigiQ2Fubm90IGNsb3NlIGEgV3JpdGFibGVT
dHJpbmcgdGhhdCBpcyBjbG9zZWQgb3IgY2xvc2luZyIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9t
aXNlLkByZWplY3QobmV3IEBUeXBlRXJyb3IoIkNhbm5vdCBjbG9zZSBhIFdyaXRhYmxlU3RyaW5n
IHRoYXQgaXMgY2xvc2VkIG9yIGNsb3NpbmciKSk7CiAKICAgICBpZiAodGhpcy5Ac3RhdGUgPT09
IEBzdHJlYW1FcnJvcmVkKQotICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KHRoaXMuQHN0
b3JlZEVycm9yKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QodGhpcy5Ac3RvcmVk
RXJyb3IpOwogCiAgICAgaWYgKHRoaXMuQHN0YXRlID09PSBAc3RyZWFtV2FpdGluZykKICAgICAg
ICAgdGhpcy5AcmVhZHlQcm9taXNlQ2FwYWJpbGl0eS5AcmVzb2x2ZS5AY2FsbCh1bmRlZmluZWQs
IHVuZGVmaW5lZCk7CkBAIC0xMTMsMTMgKzExMywxMyBAQCBmdW5jdGlvbiB3cml0ZShjaHVuaykK
ICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRoaXMpKQot
ICAgICAgICByZXR1cm4gQFByb21pc2UucmVqZWN0KG5ldyBAVHlwZUVycm9yKCJUaGUgV3JpdGFi
bGVTdHJlYW0uY2xvc2UgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFdy
aXRhYmxlU3RyZWFtIikpOworICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVjdChuZXcgQFR5
cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLmNsb3NlIG1ldGhvZCBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKIAogICAgIGlmICh0aGlzLkBzdGF0
ZSA9PT0gQHN0cmVhbUNsb3NlZCB8fCB0aGlzLkBzdGF0ZSA9PT0gQHN0cmVhbUNsb3NpbmcpCi0g
ICAgICAgIHJldHVybiBAUHJvbWlzZS5yZWplY3QobmV3IEBUeXBlRXJyb3IoIkNhbm5vdCB3cml0
ZSBvbiBhIFdyaXRhYmxlU3RyaW5nIHRoYXQgaXMgY2xvc2VkIG9yIGNsb3NpbmciKSk7CisgICAg
ICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlwZUVycm9yKCJDYW5ub3Qgd3JpdGUg
b24gYSBXcml0YWJsZVN0cmluZyB0aGF0IGlzIGNsb3NlZCBvciBjbG9zaW5nIikpOwogCiAgICAg
aWYgKHRoaXMuQHN0YXRlID09PSBAc3RyZWFtRXJyb3JlZCkKLSAgICAgICAgcmV0dXJuIEBQcm9t
aXNlLnJlamVjdCh0aGlzLkBzdG9yZWRFcnJvcik7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5A
cmVqZWN0KHRoaXMuQHN0b3JlZEVycm9yKTsKIAogICAgIC8vIEZJWE1FCiAgICAgLy8gYXNzZXJ0
KHRoaXMuQHN0YXRlID09PSBAc3RyZWFtV3JpdGFibGUgfHwgdGhpcy5Ac3RhdGUgPT09IEBzdHJl
YW1XYWl0aW5nKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBmdW5jdGlvbiB3cml0ZShjaHVuaykKICAg
ICAgICAgICAgIGNodW5rU2l6ZSA9IHRoaXMuQHN0cmF0ZWd5LnNpemUuQGNhbGwodW5kZWZpbmVk
LCBjaHVuayk7CiAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgQGVycm9yV3JpdGFi
bGVTdHJlYW0uQGNhbGwodGhpcywgZSk7Ci0gICAgICAgICAgICByZXR1cm4gQFByb21pc2UucmVq
ZWN0KGUpOworICAgICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZWplY3QoZSk7CiAgICAgICAg
IH0KICAgICB9CiAKQEAgLTEzOSw3ICsxMzksNyBAQCBmdW5jdGlvbiB3cml0ZShjaHVuaykKICAg
ICAgICAgQGVucXVldWVWYWx1ZVdpdGhTaXplKHRoaXMuQHF1ZXVlLCB7IHByb21pc2VDYXBhYmls
aXR5OiBwcm9taXNlQ2FwYWJpbGl0eSwgY2h1bms6IGNodW5rIH0sIGNodW5rU2l6ZSk7CiAgICAg
fSBjYXRjaCAoZSkgewogICAgICAgICBAZXJyb3JXcml0YWJsZVN0cmVhbS5AY2FsbCh0aGlzLCBl
KTsKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdChlKTsKKyAgICAgICAgcmV0dXJuIEBQ
cm9taXNlLkByZWplY3QoZSk7CiAgICAgfQogCiAgICAgQHN5bmNXcml0YWJsZVN0cmVhbVN0YXRl
V2l0aFF1ZXVlKHRoaXMpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIGZ1bmN0aW9uIGNsb3NlZCgpCiAg
ICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKCFAaXNXcml0YWJsZVN0cmVhbSh0aGlzKSkKLSAg
ICAgICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdChuZXcgQFR5cGVFcnJvcigiVGhlIFdyaXRhYmxl
U3RyZWFtLmNsb3NlZCBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3Jp
dGFibGVTdHJlYW0iKSk7CisgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVqZWN0KG5ldyBAVHlw
ZUVycm9yKCJUaGUgV3JpdGFibGVTdHJlYW0uY2xvc2VkIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKIAogICAgIHJldHVybiB0aGlzLkBj
bG9zZWRQcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKIH0KQEAgLTE2Myw3ICsxNjMsNyBAQCBm
dW5jdGlvbiByZWFkeSgpCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKCFAaXNXcml0YWJs
ZVN0cmVhbSh0aGlzKSkKLSAgICAgICAgcmV0dXJuIEBQcm9taXNlLnJlamVjdChuZXcgQFR5cGVF
cnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLnJlYWR5IGdldHRlciBjYW4gb25seSBiZSB1c2VkIG9u
IGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpKTsKKyAgICAgICAgcmV0dXJuIEBQcm9taXNl
LkByZWplY3QobmV3IEBUeXBlRXJyb3IoIlRoZSBXcml0YWJsZVN0cmVhbS5yZWFkeSBnZXR0ZXIg
Y2FuIG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKSk7CiAKICAg
ICByZXR1cm4gdGhpcy5AcmVhZHlQcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKIH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA5ZGNkNTAxMDYxMTExOTYzMDI1ZmQyY2Q5YWQ1ZDFiNzkzYjViYWRjLi5mZGEyYzNkODZlNzQ2
NDAyZjIzZGM4M2VhNDc4ODhmMjFjNzBiNmNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUt
MTEtMDUgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KKwor
ICAgICAgICBbU3RyZWFtcyBBUEldIFNoaWVsZCBpbXBsZW1lbnRhdGlvbiBmcm9tIHVzZXIgbWFu
Z2xpbmcgUHJvbWlzZS5yZWplY3QgYW5kIHJlc29sdmUgbWV0aG9kcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwODk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlYW1zL3N0cmVhbXMtcHJvbWlz
ZXMuaHRtbDogSW1wcm92ZWQgc29tZSBzdHlsZSBpc3N1ZXMuIEFkZGVkIHRlc3RzIGFib3V0IGNo
YW5naW5nIFByb21pc2UucmVzb2x2ZSBhbmQKKyAgICAgICAgcmVqZWN0LgorICAgICAgICAqIHN0
cmVhbXMvc3RyZWFtcy1wcm9taXNlcy1leHBlY3RlZC50eHQ6IEFkZGVkIGV4cGVjdGF0aW9ucy4K
KwogMjAxNS0xMS0wNCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gU2hpZWxkIHN0cmVhbXMgYWdhaW5zdCB1c2Vy
IHJlcGxhY2luZyB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0
cmVhbXMvc3RyZWFtcy1wcm9taXNlcy1leHBlY3RlZC50eHQKaW5kZXggZDVkYzRiOWRiZTE3MGVk
NzgzMDcwYmNiYjI0MDNmYjZiMmJlOTZkMC4uMjA0YWFlYTI0OGNiZjZmMTU2ZGM5MGI4YmQ1YjJh
YmFkODE2YjQwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21p
c2VzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlz
ZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNSBAQAogCi1QQVNTIFN0cmVhbXMgY2FuIGJlIGJ1
aWx0IGV2ZW4gaWYgUHJvbWlzZSBjb25zdHJ1Y3RvciBpcyByZXBsYWNlZCAKK1BBU1MgU3RyZWFt
cyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgYWZmZWN0ZWQgaWYgUHJvbWlzZSBjb25zdHJ1Y3RvciBp
cyByZXBsYWNlZCAKK1BBU1MgU3RyZWFtcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgYWZmZWN0ZWQg
aWYgUHJvbWlzZS5yZXNvbHZlIGlzIHJlcGxhY2VkIAorUEFTUyBTdHJlYW1zIGltcGxlbWVudGF0
aW9uIGlzIG5vdCBhZmZlY3RlZCBpZiBQcm9taXNlLnJlamVjdCBpcyByZXBsYWNlZCAKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWwgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMuaHRtbAppbmRleCA3Mzk0YzliZTUxN2Qz
OTRlNzgyZTRlMzUyNzhmYTdkNTYxMjJiZTBmLi5lNTU5YjFiMjE1YWU4ODExNDVhZTBlZjBhNDNh
OWIwMjBkMjQ3YmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJv
bWlzZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMuaHRt
bApAQCAtMiwxMCArMiw0MyBAQAogPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyc+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzJz48L3NjcmlwdD4KIDxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY29u
c3QgUHJvbWlzZUJhY2t1cCA9IFByb21pc2U7CisKKyAgICB0cnkgeworICAgICAgICBQcm9taXNl
ID0gZnVuY3Rpb24oKSB7IGFzc2VydF91bnJlYWNoZWQoInN0cmVhbXMgc2hvdWxkIG5vdCB1c2Ug
dGhpcyBQcm9taXNlIG9iamVjdCIpOyB9OworCisgICAgICAgIG5ldyBSZWFkYWJsZVN0cmVhbSgp
OworICAgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICB9IGZpbmFsbHkgeworICAgICAg
ICBQcm9taXNlID0gUHJvbWlzZUJhY2t1cDsKKyAgICB9Cit9LCAnU3RyZWFtcyBpbXBsZW1lbnRh
dGlvbiBpcyBub3QgYWZmZWN0ZWQgaWYgUHJvbWlzZSBjb25zdHJ1Y3RvciBpcyByZXBsYWNlZCcp
OworCiB0ZXN0KGZ1bmN0aW9uKCkgewotICAgIFByb21pc2UgPSBmdW5jdGlvbigpIHsgdGhyb3cg
bmV3IEVycm9yKCJuYXN0eSB0aGluZ3MiKTsgfTsKKyAgICBjb25zdCBQcm9taXNlUmVzb2x2ZUJh
Y2t1cCA9IFByb21pc2UucmVzb2x2ZTsKKworICAgIHRyeSB7CisgICAgICAgIFByb21pc2UucmVz
b2x2ZSA9IGZ1bmN0aW9uKCkgeyBhc3NlcnRfdW5yZWFjaGVkKCJzdHJlYW1zIHNob3VsZCBub3Qg
dXNlIHRoaXMgUHJvbWlzZS5yZXNvbHZlIG1ldGhvZCIpOyB9OworCisgICAgICAgIG5ldyBSZWFk
YWJsZVN0cmVhbSgpOworICAgICAgICBuZXcgV3JpdGFibGVTdHJlYW0oKTsKKyAgICB9IGZpbmFs
bHkgeworICAgICAgICBQcm9taXNlLnJlc29sdmUgPSBQcm9taXNlUmVzb2x2ZUJhY2t1cDsKKyAg
ICB9Cit9LCAnU3RyZWFtcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgYWZmZWN0ZWQgaWYgUHJvbWlz
ZS5yZXNvbHZlIGlzIHJlcGxhY2VkJyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY29uc3Qg
UHJvbWlzZVJlamVjdEJhY2t1cCA9IFByb21pc2UucmVqZWN0OworCisgICAgdHJ5IHsKKyAgICAg
ICAgUHJvbWlzZS5yZWplY3QgPSBmdW5jdGlvbigpIHsgYXNzZXJ0X3VucmVhY2hlZCgic3RyZWFt
cyBzaG91bGQgbm90IHVzZSB0aGlzIFByb21pc2UucmVqZWN0IG1ldGhvZCIpOyB9OwogCi0gICAg
Y29uc3QgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oKTsgLy8gRG9lcyBub3QgdGhyb3cuCi0gICAg
Y29uc3Qgd3MgPSBuZXcgV3JpdGFibGVTdHJlYW0oKTsgLy8gRG9lcyBub3QgdGhyb3cuCi19LCAn
U3RyZWFtcyBjYW4gYmUgYnVpbHQgZXZlbiBpZiBQcm9taXNlIGNvbnN0cnVjdG9yIGlzIHJlcGxh
Y2VkJyk7CisgICAgICAgIFJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5jYW5jZWwuY2FsbCh7fSwg
InJlYXNvbiIpOworICAgICAgICBXcml0YWJsZVN0cmVhbS5wcm90b3R5cGUuYWJvcnQuY2FsbCh7
fSwgInJlYXNvbiIpOworICAgIH0gZmluYWxseSB7CisgICAgICAgIFByb21pc2UucmVqZWN0ID0g
UHJvbWlzZVJlamVjdEJhY2t1cDsKKyAgICB9Cit9LCAnU3RyZWFtcyBpbXBsZW1lbnRhdGlvbiBp
cyBub3QgYWZmZWN0ZWQgaWYgUHJvbWlzZS5yZWplY3QgaXMgcmVwbGFjZWQnKTsKIDwvc2NyaXB0
Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>