<?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>151501</bug_id>
          
          <creation_ts>2015-11-20 10:34:50 -0800</creation_ts>
          <short_desc>JSC Builtins should use safe array methods</short_desc>
          <delta_ts>2015-12-10 02:51:11 -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>JavaScriptCore</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1143691</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-20 10:34:50 -0800</bug_when>
    <thetext>Currently builtins are using push and shift directly, which can be modified by user scripts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143699</commentid>
    <comment_count>1</comment_count>
      <attachid>265971</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-20 10:49:26 -0800</bug_when>
    <thetext>Created attachment 265971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145234</commentid>
    <comment_count>2</comment_count>
      <attachid>266355</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-12-01 06:20:19 -0800</bug_when>
    <thetext>Created attachment 266355
Adding tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145239</commentid>
    <comment_count>3</comment_count>
      <attachid>266355</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-12-01 07:34:53 -0800</bug_when>
    <thetext>Comment on attachment 266355
Adding tests

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

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:100
&gt; -    JSC_NATIVE_INTRINSIC_FUNCTION(&quot;push&quot;, arrayProtoFuncPush, DontEnum, 1, ArrayPushIntrinsic);
&gt; +    JSC_NATIVE_INTRINSIC_FUNCTION(vm.propertyNames-&gt;builtinNames().pushPublicName(), arrayProtoFuncPush, DontEnum, 1, ArrayPushIntrinsic);
&gt; +    JSC_NATIVE_INTRINSIC_FUNCTION(vm.propertyNames-&gt;builtinNames().pushPrivateName(), arrayProtoFuncPush, DontEnum | DontDelete | ReadOnly, 1, ArrayPushIntrinsic);

This makes me think even harder that we need to find a proper solution for this, as adding internal slots with the original function seems like a workaround and I am almost sure we are forgetting to fix something.

&gt; LayoutTests/streams/streams-promises.html:160
&gt; +    const ArrayPushBackup = Array.prototype.push;
&gt; +    const ArrayShiftBackup = Array.prototype.shift;
&gt; +
&gt; +    function cleanTest() {
&gt; +        Array.prototype.push = ArrayPushBackup;
&gt; +        Array.prototype.shift = ArrayShiftBackup;
&gt; +    }

I guess at some point it would be interesting to implement a setup and tear down for the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145337</commentid>
    <comment_count>4</comment_count>
      <attachid>266355</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-12-01 13:01:53 -0800</bug_when>
    <thetext>Comment on attachment 266355
Adding tests

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

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:103
&gt; +    JSC_NATIVE_FUNCTION(vm.propertyNames-&gt;builtinNames().shiftPublicName(), arrayProtoFuncShift, DontEnum, 0);
&gt; +    JSC_NATIVE_FUNCTION(vm.propertyNames-&gt;builtinNames().shiftPrivateName(), arrayProtoFuncShift, DontEnum | DontDelete | ReadOnly, 0);

Wrong function here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145699</commentid>
    <comment_count>5</comment_count>
      <attachid>266355</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-12-02 13:14:36 -0800</bug_when>
    <thetext>Comment on attachment 266355
Adding tests

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

&gt;&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:100
&gt;&gt; +    JSC_NATIVE_INTRINSIC_FUNCTION(vm.propertyNames-&gt;builtinNames().pushPrivateName(), arrayProtoFuncPush, DontEnum | DontDelete | ReadOnly, 1, ArrayPushIntrinsic);
&gt; 
&gt; This makes me think even harder that we need to find a proper solution for this, as adding internal slots with the original function seems like a workaround and I am almost sure we are forgetting to fix something.

The latter is indeed worrying.

&gt;&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:103
&gt;&gt; +    JSC_NATIVE_FUNCTION(vm.propertyNames-&gt;builtinNames().shiftPrivateName(), arrayProtoFuncShift, DontEnum | DontDelete | ReadOnly, 0);
&gt; 
&gt; Wrong function here.

Can you be more explicit about what is wrong here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145716</commentid>
    <comment_count>6</comment_count>
      <attachid>266355</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-12-02 13:55:16 -0800</bug_when>
    <thetext>Comment on attachment 266355
Adding tests

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:103
&gt;&gt;&gt; +    JSC_NATIVE_FUNCTION(vm.propertyNames-&gt;builtinNames().shiftPrivateName(), arrayProtoFuncShift, DontEnum | DontDelete | ReadOnly, 0);
&gt;&gt; 
&gt;&gt; Wrong function here.
&gt; 
&gt; Can you be more explicit about what is wrong here?

Oops. I take it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145883</commentid>
    <comment_count>7</comment_count>
      <attachid>266516</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-12-03 00:38:01 -0800</bug_when>
    <thetext>Created attachment 266516
Improving test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1145886</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-12-03 00:41:56 -0800</bug_when>
    <thetext>
&gt; &gt; LayoutTests/streams/streams-promises.html:160
&gt; &gt; +    const ArrayPushBackup = Array.prototype.push;
&gt; &gt; +    const ArrayShiftBackup = Array.prototype.shift;
&gt; &gt; +
&gt; &gt; +    function cleanTest() {
&gt; &gt; +        Array.prototype.push = ArrayPushBackup;
&gt; &gt; +        Array.prototype.shift = ArrayShiftBackup;
&gt; &gt; +    }
&gt; 
&gt; I guess at some point it would be interesting to implement a setup and tear
&gt; down for the tests.

Right.
I improved a bit the test as modifying Array.prototype.push is making testharness.js unhappy when cleanTest is not called or not called early enough.
Current version will mark test as failing if an assertion does not pass, which is better than timing out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148119</commentid>
    <comment_count>9</comment_count>
      <attachid>266516</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-10 02:51:07 -0800</bug_when>
    <thetext>Comment on attachment 266516
Improving test

Clearing flags on attachment: 266516

Committed r193899: &lt;http://trac.webkit.org/changeset/193899&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148120</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-10 02:51:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265971</attachid>
            <date>2015-11-20 10:49:26 -0800</date>
            <delta_ts>2015-12-01 06:20:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151501-20151120194913.patch</filename>
            <type>text/plain</type>
            <size>8106</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyNjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OWNhOGEyYzA4MDNlYTQ5MTYwOTViOTAzMTQ4NjQ3ODhlNTU2YjhmLi4yMDkwOGY3ZTAzMjJlMTQw
ZDNkZDVhNWZhNTRmYjFmZmYyNjNhNjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMSBAQAogMjAxNS0xMS0yMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgogCisgICAgICAgIEpTQyBCdWlsdGlucyBzaG91bGQgdXNlIHNhZmUgYXJyYXkg
bWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxNTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaW5nIEBwdXNoIGFuZCBAc2hpZnQgdG8gQXJyYXkgcHJvdG90eXBlLgorICAgICAgICBVc2lu
ZyBAcHVzaCBpbiBUeXBlZEFycmF5IGJ1aWx0LWluLgorCisgICAgICAgICogYnVpbHRpbnMvVHlw
ZWRBcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChmaWx0ZXIpOgorICAgICAgICAqIHJ1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKwor
MjAxNS0xMS0yMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgor
CiAgICAgICAgIFtTdHJlYW1zIEFQSV0gc3RyZWFtcyBzaG91bGQgbm90IGRpcmVjdGx5IHVzZSBO
dW1iZXIgYW5kIHJlbGF0ZWQgbWV0aG9kcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNDk5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjUyMWVmN2M5ZmEwOWZh
MzkzZTNjYjZhNGNkZDczNGEzNWIxNWMyLi5mZGE1NDMxMzhiOGY4MmQ1MzhkMWZjYzk4NmI0ZDE5
NjM4ZmMyMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcgQEAKIDIwMTUtMTEtMjAgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAorICAgICAgICBKU0MgQnVp
bHRpbnMgc2hvdWxkIHVzZSBzYWZlIGFycmF5IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzaW5nIEBwdXNoIGFuZCBAc2hpZnQgaW4gaW50
ZXJuYWwgYXJyYXlzIGluIGxpZXUgb2YgcHVzaCBhbmQgc2hpZnQuCisgICAgICAgIFRoaXMgY2Fu
bm90IGJlIGRpc3J1cHRlZCBieSB1c2VyIHNjcmlwdHMgZXhjZXB0IGlmIGFycmF5cyBhcmUgYWxz
byBtYWRlIGFjY2Vzc2libGUgdG8gdXNlciBzY3JpcHRzLgorCisgICAgICAgIE5vIGNoYW5nZSBp
biBiZWhhdmlvci4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb25JbnRlcm5hbHMuanM6CisgICAgICAgIChydW5OZXh0KToKKyAgICAgICAgKGVucXVldWVP
cGVyYXRpb24pOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVy
bmFscy5qczoKKyAgICAgICAgKGVucXVldWVJblJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKHJl
YWRGcm9tUmVhZGFibGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9T
dHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAgIChkZXF1ZXVlVmFsdWUpOgorICAgICAgICAoZW5x
dWV1ZVZhbHVlV2l0aFNpemUpOgorCisyMDE1LTExLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
LmZhYmxldEBjcmYuY2Fub24uZnI+CisKICAgICAgICAgW1N0cmVhbXMgQVBJXSBzdHJlYW1zIHNo
b3VsZCBub3QgZGlyZWN0bHkgdXNlIE51bWJlciBhbmQgcmVsYXRlZCBtZXRob2RzCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE0OTkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXkucHJvdG90eXBl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXkucHJvdG90eXBl
LmpzCmluZGV4IGY4Y2QzNDkyZWQ1NDUyNmJiMTMxYjEyNDgxOGRkZDE0ZTRlMDgxYmYuLmU5YzU3
OTdhNzhiZjlkYzllMDk2ZjVmOTNlZDlkMzQ5ZTBhYmIzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5LnByb3RvdHlwZS5qcworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvVHlwZWRBcnJheS5wcm90b3R5cGUuanMKQEAgLTI1
OCw3ICsyNTgsNyBAQCBmdW5jdGlvbiBmaWx0ZXIoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICB2YXIgdmFsdWUg
PSB0aGlzW2ldOwogICAgICAgICBpZiAoY2FsbGJhY2suQGNhbGwodGhpc0FyZywgdmFsdWUsIGks
IHRoaXMpKQotICAgICAgICAgICAga2VwdC5wdXNoKHZhbHVlKTsKKyAgICAgICAgICAgIGtlcHQu
QHB1c2godmFsdWUpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIHNw
ZWNpZXMgY29uc3RydWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKaW5kZXggMmRiMjU5MjZkMTkwYWJlOTY4YzdmYTI0MTNkZmFmMTcz
Zjg0YjBhYy4uNDg5Y2Q4ZDc2YTA0ZjVjOTY0NDhlYTVkMGM1OTc2MDg2OWRjNDY2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAt
MjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFycmF5UHJvdG90
eXBlLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJCdXR0ZXJmbHlJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ2FsbC5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgpAQCAtOTYsOCArOTcsMTAgQEAgdm9pZCBBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04odm0ucHJvcGVydHlOYW1lcy0+am9pbiwgYXJyYXlQcm90b0Z1bmNKb2luLCBEb250RW51
bSwgMSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT04oInBvcCIsIGFycmF5UHJv
dG9GdW5jUG9wLCBEb250RW51bSwgMCwgQXJyYXlQb3BJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJ
VkVfSU5UUklOU0lDX0ZVTkNUSU9OKCJwdXNoIiwgYXJyYXlQcm90b0Z1bmNQdXNoLCBEb250RW51
bSwgMSwgQXJyYXlQdXNoSW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wdXNoUHJpdmF0ZU5hbWUoKSwg
YXJyYXlQcm90b0Z1bmNQdXNoLCBEb250RW51bSwgMSwgQXJyYXlQdXNoSW50cmluc2ljKTsKICAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJyZXZlcnNlIiwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlLCBE
b250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTigic2hpZnQiLCBhcnJheVByb3Rv
RnVuY1NoaWZ0LCBEb250RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zaGlmdFByaXZhdGVOYW1lKCksIGFycmF5UHJvdG9G
dW5jU2hpZnQsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAwKTsKICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnNsaWNlLCBhcnJheVByb3RvRnVuY1Ns
aWNlLCBEb250RW51bSwgMik7CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT04oInNvcnQiLCBhcnJh
eVByb3RvdHlwZVNvcnRDb2RlR2VuZXJhdG9yLCBEb250RW51bSk7CiAgICAgSlNDX05BVElWRV9G
VU5DVElPTigic3BsaWNlIiwgYXJyYXlQcm90b0Z1bmNTcGxpY2UsIERvbnRFbnVtLCAyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmlu
ZGV4IDQ5NWYyMzU4Nzg2NjVjNDMwNTc4ODFkOGQxYmQ4NDg0MjZhOTliZGEuLjAyNWVjYWJkNWEz
ZDMyN2RlMDU0ZDNhMjcxNmQzYmY2YTdiOTgyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzE1LDExICszMTUsMTMgQEAK
ICAgICBtYWNybyhwcm9taXNlRnVsZmlsbFJlYWN0aW9ucykgXAogICAgIG1hY3JvKHByb21pc2VS
ZWplY3RSZWFjdGlvbnMpIFwKICAgICBtYWNybyhwcm9taXNlUmVzdWx0KSBcCisgICAgbWFjcm8o
cHVzaCkgXAogICAgIG1hY3JvKGNhcGFiaWxpdGllcykgXAogICAgIG1hY3JvKHN0YXJEZWZhdWx0
KSBcCiAgICAgbWFjcm8oSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKSBcCiAgICAgbWFjcm8oZ2V0
KSBcCiAgICAgbWFjcm8oc2V0KSBcCisgICAgbWFjcm8oc2hpZnQpIFwKICAgICBtYWNybyhhbGxv
Y2F0ZVR5cGVkQXJyYXkpIFwKICAgICBtYWNybyhJbnQ4QXJyYXkpIFwKICAgICBtYWNybyhJbnQx
NkFycmF5KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkludGVybmFscy5qcwppbmRleCA5YzlhODc4OTQ0
M2I3ZTVkOTViMjkzNzE2MDYyNzQ4OWE0MDI2NzI5Li4xZmNhNDM2ZjAxMjJiNDZlMTY2NDYzZDM0
NjY0ZjQ5NTFhNzEwYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHMuanMKQEAgLTQy
LDEzICs0MiwxMyBAQCBmdW5jdGlvbiBlbnF1ZXVlT3BlcmF0aW9uKHBlZXJDb25uZWN0aW9uLCBv
cGVyYXRpb24pCiAgICAgdmFyIG9wZXJhdGlvbnMgPSBwZWVyQ29ubmVjdGlvbi5Ab3BlcmF0aW9u
czsKIAogICAgIGZ1bmN0aW9uIHJ1bk5leHQoKSB7Ci0gICAgICAgIG9wZXJhdGlvbnMuc2hpZnQo
KTsKKyAgICAgICAgb3BlcmF0aW9ucy5Ac2hpZnQoKTsKICAgICAgICAgaWYgKG9wZXJhdGlvbnMu
bGVuZ3RoKQogICAgICAgICAgICAgb3BlcmF0aW9uc1swXSgpOwogICAgIH07CiAKICAgICByZXR1
cm4gbmV3IEBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgb3Bl
cmF0aW9ucy5wdXNoKGZ1bmN0aW9uKCkgeworICAgICAgICBvcGVyYXRpb25zLkBwdXNoKGZ1bmN0
aW9uKCkgewogICAgICAgICAgICAgb3BlcmF0aW9uKCkudGhlbihyZXNvbHZlLCByZWplY3QpLnRo
ZW4ocnVuTmV4dCwgcnVuTmV4dCk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKaW5k
ZXggOWY5M2E1YjAwOTg1MzE1ZGE4NDdlNGViMTY2ZmMyMTc3ZjkxNDg5Mi4uYzQwNDIwNTAxMzQx
YTMwMTZmZTVlNDZkODE5YzE1MDg1ZDRjMGRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwpAQCAtMzE1
LDcgKzMxNSw3IEBAIGZ1bmN0aW9uIGVucXVldWVJblJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgY2h1
bmspCiAgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zZWQpCiAgICAgICAgIHJl
dHVybjsKICAgICBpZiAoQGlzUmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKSAmJiBzdHJlYW0u
QHJlYWRlci5AcmVhZFJlcXVlc3RzLmxlbmd0aCkgewotICAgICAgICBzdHJlYW0uQHJlYWRlci5A
cmVhZFJlcXVlc3RzLnNoaWZ0KCkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB7dmFsdWU6IGNo
dW5rLCBkb25lOiBmYWxzZX0pOworICAgICAgICBzdHJlYW0uQHJlYWRlci5AcmVhZFJlcXVlc3Rz
LkBzaGlmdCgpLkByZXNvbHZlLkBjYWxsKHVuZGVmaW5lZCwge3ZhbHVlOiBjaHVuaywgZG9uZTog
ZmFsc2V9KTsKICAgICAgICAgQHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM1Niw3ICszNTYsNyBAQCBmdW5jdGlvbiByZWFkRnJv
bVJlYWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRlcikKICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkBy
ZXNvbHZlKHt2YWx1ZTogY2h1bmssIGRvbmU6IGZhbHNlfSk7CiAgICAgfQogICAgIGNvbnN0IHJl
YWRQcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShAUHJvbWlzZSk7Ci0g
ICAgcmVhZGVyLkByZWFkUmVxdWVzdHMucHVzaChyZWFkUHJvbWlzZUNhcGFiaWxpdHkpOworICAg
IHJlYWRlci5AcmVhZFJlcXVlc3RzLkBwdXNoKHJlYWRQcm9taXNlQ2FwYWJpbGl0eSk7CiAgICAg
QHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKICAgICByZXR1cm4gcmVhZFByb21p
c2VDYXBhYmlsaXR5LkBwcm9taXNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1N0cmVhbUludGVybmFscy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMKaW5kZXggYTg3ODA3OGI1YjVmMmNjZDM5YThjNDk5
Mjk3Mjg3MjA5YzkxM2M4NC4uYzRhZmE3NDhkNjVhMjU3ZTQyZTdjOWYzOWJhNzZiNTQ4YjRkZjQw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVy
bmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJu
YWxzLmpzCkBAIC05OSw3ICs5OSw3IEBAIGZ1bmN0aW9uIGRlcXVldWVWYWx1ZShxdWV1ZSkKIHsK
ICAgICAidXNlIHN0cmljdCI7CiAKLSAgICBjb25zdCByZWNvcmQgPSBxdWV1ZS5jb250ZW50LnNo
aWZ0KCk7CisgICAgY29uc3QgcmVjb3JkID0gcXVldWUuY29udGVudC5Ac2hpZnQoKTsKICAgICBx
dWV1ZS5zaXplIC09IHJlY29yZC5zaXplOwogICAgIHJldHVybiByZWNvcmQudmFsdWU7CiB9CkBA
IC0xMTEsNyArMTExLDcgQEAgZnVuY3Rpb24gZW5xdWV1ZVZhbHVlV2l0aFNpemUocXVldWUsIHZh
bHVlLCBzaXplKQogICAgIHNpemUgPSBATnVtYmVyKHNpemUpOwogICAgIGlmIChAaXNOYU4oc2l6
ZSkgfHwgIUBpc0Zpbml0ZShzaXplKSB8fCBzaXplIDwgMCkKICAgICAgICAgdGhyb3cgbmV3IEBS
YW5nZUVycm9yKCJzaXplIGhhcyBhbiBpbmNvcnJlY3QgdmFsdWUiKTsKLSAgICBxdWV1ZS5jb250
ZW50LnB1c2goeyB2YWx1ZTogdmFsdWUsIHNpemU6IHNpemUgfSk7CisgICAgcXVldWUuY29udGVu
dC5AcHVzaCh7IHZhbHVlOiB2YWx1ZSwgc2l6ZTogc2l6ZSB9KTsKICAgICBxdWV1ZS5zaXplICs9
IHNpemU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266355</attachid>
            <date>2015-12-01 06:20:19 -0800</date>
            <delta_ts>2015-12-03 00:37:56 -0800</delta_ts>
            <desc>Adding tests</desc>
            <filename>bug-151501-20151201151956.patch</filename>
            <type>text/plain</type>
            <size>14406</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
M2I0MjQ0NTVlNWRiZDcwNmM4MTEzZGIwNDZjNDU2ZWQ3NTc3ZDBjLi5mZmI1ZDYyZjBkZDFiZGZk
M2UxOWU4NTM5MjAwZDhmZjNjMmE1MGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNS0xMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIEpTQyBCdWlsdGlucyBzaG91bGQgdXNlIHNhZmUgYXJyYXkg
bWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxNTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaW5nIEBwdXNoIGFuZCBAc2hpZnQgdG8gQXJyYXkgcHJvdG90eXBlLgorICAgICAgICBVc2lu
ZyBAcHVzaCBpbiBUeXBlZEFycmF5IGJ1aWx0LWluLgorCisgICAgICAgIENvdmVyZWQgYnkgYWRk
ZWQgdGVzdCBpbiBMYXlvdXRUZXN0cy9qcy9idWlsdGlucworCisgICAgICAgICogYnVpbHRpbnMv
VHlwZWRBcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChmaWx0ZXIpOgorICAgICAgICAqIHJ1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoK
KwogMjAxNS0xMi0wMSBBbGVrc2FuZHIgU2thY2hrb3YgICA8Z3NrYWNoa292QGdtYWlsLmNvbT4K
IAogICAgICAgICBbRVM2XSAic3VwZXIiIGFuZCAidGhpcyIgc2hvdWxkIGJlIGxleGljYWxseSBi
b3VuZCBpbnNpZGUgYW4gYXJyb3cgZnVuY3Rpb24gYW5kIHNob3VsZCBsaXZlIGluIGEgSlNMZXhp
Y2FsRW52aXJvbm1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyMmFlZTU3OWEwZTVjYjkxN2JkNmI5MGNjYTNi
MTAwMDM1YzU1NzE0Li5kMGMyZWY5OWVjMWEwZGMyOTUxNzk1NTFhMTRkYzMwMGNkYjQxYjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcgQEAKIDIwMTUtMTItMDEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAorICAgICAgICBKU0MgQnVpbHRpbnMgc2hvdWxk
IHVzZSBzYWZlIGFycmF5IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVzaW5nIEBwdXNoIGFuZCBAc2hpZnQgaW4gaW50ZXJuYWwgYXJyYXlz
IGluIGxpZXUgb2YgcHVzaCBhbmQgc2hpZnQuCisgICAgICAgIFRoaXMgY2Fubm90IGJlIGRpc3J1
cHRlZCBieSB1c2VyIHNjcmlwdHMgZXhjZXB0IGlmIGFycmF5cyBhcmUgYWxzbyBtYWRlIGFjY2Vz
c2libGUgdG8gdXNlciBzY3JpcHRzLgorCisgICAgICAgIENvdmVyZWQgYnkgYWRkZWQgdGVzdHMg
Zm9yIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzLmpzOgorICAgICAgICAocnVuTmV4dCk6
CisgICAgICAgIChlbnF1ZXVlT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAgIChlbnF1ZXVlSW5SZWFkYWJsZVN0
cmVhbSk6CisgICAgICAgIChyZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVhZGVyKToKKyAgICAgICAg
KiBNb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzOgorICAgICAgICAoZGVxdWV1ZVZh
bHVlKToKKyAgICAgICAgKGVucXVldWVWYWx1ZVdpdGhTaXplKToKKworMjAxNS0xMi0wMSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCiAgICAgICAgIFtTdHJl
YW1zIEFQSV0gcHVsbCBmdW5jdGlvbiBvZiB0ZWUgc2hvdWxkIGNhbGwgcmVhZEZyb21SZWFkYWJs
ZVN0cmVhbVJlYWRlciBkaXJlY3RseQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUxNDk3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMKaW5kZXggZjhjZDM0OTJlZDU0NTI2YmIx
MzFiMTI0ODE4ZGRkMTRlNGUwODFiZi4uZTljNTc5N2E3OGJmOWRjOWUwOTZmNWY5M2VkOWQzNDll
MGFiYjNkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVk
QXJyYXlQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5
cGVkQXJyYXlQcm90b3R5cGUuanMKQEAgLTI1OCw3ICsyNTgsNyBAQCBmdW5jdGlvbiBmaWx0ZXIo
Y2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgewogICAgICAgICB2YXIgdmFsdWUgPSB0aGlzW2ldOwogICAgICAgICBpZiAoY2FsbGJh
Y2suQGNhbGwodGhpc0FyZywgdmFsdWUsIGksIHRoaXMpKQotICAgICAgICAgICAga2VwdC5wdXNo
KHZhbHVlKTsKKyAgICAgICAgICAgIGtlcHQuQHB1c2godmFsdWUpOwogICAgIH0KIAogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhIHNwZWNpZXMgY29uc3RydWN0b3IuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggMmRiMjU5
MjZkMTkwYWJlOTY4YzdmYTI0MTNkZmFmMTczZjg0YjBhYy4uYWI3YmFiYzkxZDE4MzFhYTIyZTcy
N2RhYzFkZWI5ZDUxNmRkOTAxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBlLmgiCiAKKyNpbmNsdWRlICJCdWlsdGluTmFt
ZXMuaCIKICNpbmNsdWRlICJCdXR0ZXJmbHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ2FjaGVkQ2Fs
bC5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgpAQCAtOTUsOSArOTYsMTEgQEAgdm9pZCBBcnJh
eVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OKCJmaWxsIiwgYXJyYXlQcm90b3R5cGVG
aWxsQ29kZUdlbmVyYXRvciwgRG9udEVudW0pOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0u
cHJvcGVydHlOYW1lcy0+am9pbiwgYXJyYXlQcm90b0Z1bmNKb2luLCBEb250RW51bSwgMSk7CiAg
ICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT04oInBvcCIsIGFycmF5UHJvdG9GdW5jUG9w
LCBEb250RW51bSwgMCwgQXJyYXlQb3BJbnRyaW5zaWMpOwotICAgIEpTQ19OQVRJVkVfSU5UUklO
U0lDX0ZVTkNUSU9OKCJwdXNoIiwgYXJyYXlQcm90b0Z1bmNQdXNoLCBEb250RW51bSwgMSwgQXJy
YXlQdXNoSW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wdXNoUHVibGljTmFtZSgpLCBhcnJheVByb3Rv
RnVuY1B1c2gsIERvbnRFbnVtLCAxLCBBcnJheVB1c2hJbnRyaW5zaWMpOworICAgIEpTQ19OQVRJ
VkVfSU5UUklOU0lDX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnB1
c2hQcml2YXRlTmFtZSgpLCBhcnJheVByb3RvRnVuY1B1c2gsIERvbnRFbnVtIHwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5LCAxLCBBcnJheVB1c2hJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04oInJldmVyc2UiLCBhcnJheVByb3RvRnVuY1JldmVyc2UsIERvbnRFbnVtLCAwKTsKLSAg
ICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJzaGlmdCIsIGFycmF5UHJvdG9GdW5jU2hpZnQsIERvbnRF
bnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnNoaWZ0UHVibGljTmFtZSgpLCBhcnJheVByb3RvRnVuY1NoaWZ0LCBEb250RW51
bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5zaGlmdFByaXZhdGVOYW1lKCksIGFycmF5UHJvdG9GdW5jU2hpZnQsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZt
LnByb3BlcnR5TmFtZXMtPnNsaWNlLCBhcnJheVByb3RvRnVuY1NsaWNlLCBEb250RW51bSwgMik7
CiAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT04oInNvcnQiLCBhcnJheVByb3RvdHlwZVNvcnRDb2Rl
R2VuZXJhdG9yLCBEb250RW51bSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTigic3BsaWNlIiwg
YXJyYXlQcm90b0Z1bmNTcGxpY2UsIERvbnRFbnVtLCAyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGJkZDc2YTA5NjM5N2Qx
MmQyYmM5ZjU5MzZhMjViNjU5ODBiZmNhMzMuLjMxZGQ1OTI5YTA4NThmZGYzYWZkZjdiMzBhNjk3
ZjgxOWMxOTE4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaApAQCAtMzE1LDExICszMTUsMTMgQEAKICAgICBtYWNybyhwcm9taXNl
RnVsZmlsbFJlYWN0aW9ucykgXAogICAgIG1hY3JvKHByb21pc2VSZWplY3RSZWFjdGlvbnMpIFwK
ICAgICBtYWNybyhwcm9taXNlUmVzdWx0KSBcCisgICAgbWFjcm8ocHVzaCkgXAogICAgIG1hY3Jv
KGNhcGFiaWxpdGllcykgXAogICAgIG1hY3JvKHN0YXJEZWZhdWx0KSBcCiAgICAgbWFjcm8oSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uKSBcCiAgICAgbWFjcm8oZ2V0KSBcCiAgICAgbWFjcm8oc2V0
KSBcCisgICAgbWFjcm8oc2hpZnQpIFwKICAgICBtYWNybyhhbGxvY2F0ZVR5cGVkQXJyYXkpIFwK
ICAgICBtYWNybyhJbnQ4QXJyYXkpIFwKICAgICBtYWNybyhJbnQxNkFycmF5KSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
SW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbkludGVybmFscy5qcwppbmRleCA5YzlhODc4OTQ0M2I3ZTVkOTViMjkzNzE2MDYy
NzQ4OWE0MDI2NzI5Li4xZmNhNDM2ZjAxMjJiNDZlMTY2NDYzZDM0NjY0ZjQ5NTFhNzEwYTVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHMuanMKQEAgLTQyLDEzICs0MiwxMyBAQCBmdW5j
dGlvbiBlbnF1ZXVlT3BlcmF0aW9uKHBlZXJDb25uZWN0aW9uLCBvcGVyYXRpb24pCiAgICAgdmFy
IG9wZXJhdGlvbnMgPSBwZWVyQ29ubmVjdGlvbi5Ab3BlcmF0aW9uczsKIAogICAgIGZ1bmN0aW9u
IHJ1bk5leHQoKSB7Ci0gICAgICAgIG9wZXJhdGlvbnMuc2hpZnQoKTsKKyAgICAgICAgb3BlcmF0
aW9ucy5Ac2hpZnQoKTsKICAgICAgICAgaWYgKG9wZXJhdGlvbnMubGVuZ3RoKQogICAgICAgICAg
ICAgb3BlcmF0aW9uc1swXSgpOwogICAgIH07CiAKICAgICByZXR1cm4gbmV3IEBQcm9taXNlKGZ1
bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgb3BlcmF0aW9ucy5wdXNoKGZ1bmN0
aW9uKCkgeworICAgICAgICBvcGVyYXRpb25zLkBwdXNoKGZ1bmN0aW9uKCkgewogICAgICAgICAg
ICAgb3BlcmF0aW9uKCkudGhlbihyZXNvbHZlLCByZWplY3QpLnRoZW4ocnVuTmV4dCwgcnVuTmV4
dCk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKaW5kZXggYjg0Njg4MzQ3ZTBiZDUz
N2Q1OTliNGQzYzUyOGFhNzY2NTZjN2I2OS4uOWNhYzFkN2RmZDUwMjk5YTExMWQxY2ZiZWMzNTIz
ZjdjMTUwNzA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcwpAQCAtMzE1LDcgKzMxNSw3IEBAIGZ1bmN0
aW9uIGVucXVldWVJblJlYWRhYmxlU3RyZWFtKHN0cmVhbSwgY2h1bmspCiAgICAgaWYgKHN0cmVh
bS5Ac3RhdGUgPT09IEBzdHJlYW1DbG9zZWQpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoQGlz
UmVhZGFibGVTdHJlYW1Mb2NrZWQoc3RyZWFtKSAmJiBzdHJlYW0uQHJlYWRlci5AcmVhZFJlcXVl
c3RzLmxlbmd0aCkgewotICAgICAgICBzdHJlYW0uQHJlYWRlci5AcmVhZFJlcXVlc3RzLnNoaWZ0
KCkuQHJlc29sdmUuQGNhbGwodW5kZWZpbmVkLCB7dmFsdWU6IGNodW5rLCBkb25lOiBmYWxzZX0p
OworICAgICAgICBzdHJlYW0uQHJlYWRlci5AcmVhZFJlcXVlc3RzLkBzaGlmdCgpLkByZXNvbHZl
LkBjYWxsKHVuZGVmaW5lZCwge3ZhbHVlOiBjaHVuaywgZG9uZTogZmFsc2V9KTsKICAgICAgICAg
QHJlcXVlc3RSZWFkYWJsZVN0cmVhbVB1bGwoc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTM1Niw3ICszNTYsNyBAQCBmdW5jdGlvbiByZWFkRnJvbVJlYWRhYmxlU3RyZWFtUmVh
ZGVyKHJlYWRlcikKICAgICAgICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKHt2YWx1ZTogY2h1
bmssIGRvbmU6IGZhbHNlfSk7CiAgICAgfQogICAgIGNvbnN0IHJlYWRQcm9taXNlQ2FwYWJpbGl0
eSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eShAUHJvbWlzZSk7Ci0gICAgcmVhZGVyLkByZWFkUmVx
dWVzdHMucHVzaChyZWFkUHJvbWlzZUNhcGFiaWxpdHkpOworICAgIHJlYWRlci5AcmVhZFJlcXVl
c3RzLkBwdXNoKHJlYWRQcm9taXNlQ2FwYWJpbGl0eSk7CiAgICAgQHJlcXVlc3RSZWFkYWJsZVN0
cmVhbVB1bGwoc3RyZWFtKTsKICAgICByZXR1cm4gcmVhZFByb21pc2VDYXBhYmlsaXR5LkBwcm9t
aXNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1N0cmVh
bUludGVybmFscy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRl
cm5hbHMuanMKaW5kZXggZjYwZTRkMDJkYWUxYjI1ZjcwYzJjNzc4NDE1ZWU4NmM5MDU0N2EyZS4u
OGY1MDUwNmFmNWY5MDgzYWZlZWNmNmEwYTE5YTllZWUzYTY1NjQ4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVybmFscy5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzCkBAIC05OSw3ICs5
OSw3IEBAIGZ1bmN0aW9uIGRlcXVldWVWYWx1ZShxdWV1ZSkKIHsKICAgICAidXNlIHN0cmljdCI7
CiAKLSAgICBjb25zdCByZWNvcmQgPSBxdWV1ZS5jb250ZW50LnNoaWZ0KCk7CisgICAgY29uc3Qg
cmVjb3JkID0gcXVldWUuY29udGVudC5Ac2hpZnQoKTsKICAgICBxdWV1ZS5zaXplIC09IHJlY29y
ZC5zaXplOwogICAgIHJldHVybiByZWNvcmQudmFsdWU7CiB9CkBAIC0xMTEsNyArMTExLDcgQEAg
ZnVuY3Rpb24gZW5xdWV1ZVZhbHVlV2l0aFNpemUocXVldWUsIHZhbHVlLCBzaXplKQogICAgIHNp
emUgPSBATnVtYmVyKHNpemUpOwogICAgIGlmICghQGlzRmluaXRlKHNpemUpIHx8IHNpemUgPCAw
KQogICAgICAgICB0aHJvdyBuZXcgQFJhbmdlRXJyb3IoInNpemUgaGFzIGFuIGluY29ycmVjdCB2
YWx1ZSIpOwotICAgIHF1ZXVlLmNvbnRlbnQucHVzaCh7IHZhbHVlOiB2YWx1ZSwgc2l6ZTogc2l6
ZSB9KTsKKyAgICBxdWV1ZS5jb250ZW50LkBwdXNoKHsgdmFsdWU6IHZhbHVlLCBzaXplOiBzaXpl
IH0pOwogICAgIHF1ZXVlLnNpemUgKz0gc2l6ZTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI1NGZmOWFjOGM3YmJj
MTgzODczNzBlNjg4YmI5YmJiNDZmNjcwMmYuLjJkNjY4OWE4ZTk2ODg4OGVhNTcyY2Q4MmI3YzZi
MGI2MDI1ZGExNzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMiBAQAogMjAxNS0xMi0wMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCisgICAgICAgIEpTQyBCdWlsdGlu
cyBzaG91bGQgdXNlIHNhZmUgYXJyYXkgbWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIHNoaWVsZGluZyB0ZXN0IGZvciBUeXBlZEFy
cmF5LnByb3RvdHlwZS5maWx0ZXIgYW5kIHN0cmVhbSBlbnF1ZXVpbmcgb2YgdmFsdWVzIGFuZCBy
ZWFkIHByb21pc2VzLgorCisgICAgICAgICoganMvYnVpbHRpbnMvcmVzb3VyY2VzL3NoaWVsZGlu
Zy10eXBlZGFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKEFycmF5LnByb3RvdHlwZS5wdXNoKToK
KyAgICAgICAgKHRyeS5hcnJheS5JbnQ4QXJyYXkuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5m
aWx0ZXIpOgorICAgICAgICAqIGpzL2J1aWx0aW5zL3NoaWVsZGluZy10eXBlZGFycmF5LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvYnVpbHRpbnMvc2hpZWxkaW5nLXR5cGVkYXJy
YXkuaHRtbDogQWRkZWQuCisgICAgICAgICogc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMuaHRtbDoKKworMjAx
NS0xMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCiAg
ICAgICAgIFtTdHJlYW1zIEFQSV0gcHVsbCBmdW5jdGlvbiBvZiB0ZWUgc2hvdWxkIGNhbGwgcmVh
ZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlciBkaXJlY3RseQogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNDk3CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2J1aWx0aW5zL3Jlc291cmNlcy9zaGllbGRpbmctdHlwZWRhcnJheS5qcyBiL0xheW91
dFRlc3RzL2pzL2J1aWx0aW5zL3Jlc291cmNlcy9zaGllbGRpbmctdHlwZWRhcnJheS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45Y2M5N2E5MTg2NjRiZjEyMjRhODNhNGM5NzQ2ZjFlOTY3NWM4OGFiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYnVpbHRpbnMvcmVzb3VyY2VzL3NoaWVsZGluZy10
eXBlZGFycmF5LmpzCkBAIC0wLDAgKzEsMTggQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRvIGVuc3Vy
ZSBUeXBlZEFycmF5IGZpbHRlciBpcyBzaGllbGRlZCBmcm9tIEFycmF5LnByb3RvdHlwZS5wdXNo
IG1vZGlmaWNhdGlvbnMiKTsKKworY29uc3QgQXJyYXlQcm90b3R5cGVQdXNoQmFja3VwID0gQXJy
YXkucHJvdG90eXBlLnB1c2g7CitBcnJheS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKCkKK3sK
KyAgICB0ZXN0RmFpbGVkKCJJbnQ4QXJyYXkucHJvdG90eXBlLnB1c2ggc2hvdWxkIG5vdCBiZSBj
YWxsZWQgYnkgYnVpbHRpbiBjb2RlIik7CisgICAgcmV0dXJuIEFycmF5UHJvdG90eXBlUHVzaEJh
Y2t1cC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworfQorCit0cnkgeworICAgIGFycmF5ID0gSW50
OEFycmF5LmZyb20oIjEyMzQiKS5maWx0ZXIoZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgcmV0
dXJuIHZhbHVlID09PSAxOworICAgIH0pOworICAgIHNob3VsZEJlVHJ1ZSgiYXJyYXkubGVuZ3Ro
ID09PSAxIik7Cit9CitmaW5hbGx5IHsKKyAgICBBcnJheS5wcm90b3R5cGUucHVzaCA9IEFycmF5
UHJvdG90eXBlUHVzaEJhY2t1cDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2J1aWx0
aW5zL3NoaWVsZGluZy10eXBlZGFycmF5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2J1
aWx0aW5zL3NoaWVsZGluZy10eXBlZGFycmF5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDg2
NThkNzBjMGFiNTViMzk1ZTgwYTUyNWQ1MGU4MjRjOTE1M2NjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvYnVpbHRpbnMvc2hpZWxkaW5nLXR5cGVkYXJyYXktZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgdG8gZW5zdXJlIFR5cGVkQXJyYXkgZmlsdGVyIGlzIHNo
aWVsZGVkIGZyb20gQXJyYXkucHJvdG90eXBlLnB1c2ggbW9kaWZpY2F0aW9ucworCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBhcnJheS5sZW5ndGggPT09IDEgaXMgdHJ1ZQor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL2J1aWx0aW5zL3NoaWVsZGluZy10eXBlZGFycmF5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9qcy9idWlsdGlucy9zaGllbGRpbmctdHlwZWRhcnJheS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjkyYjJjNjc2N2NhOTBhMzg4MWRhMjNjMDFjY2I2ZjdiYjk2MmZiZTcKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9idWlsdGlucy9zaGllbGRpbmctdHlwZWRhcnJheS5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zaGllbGRpbmctdHlwZWRhcnJheS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLWV4cGVj
dGVkLnR4dAppbmRleCAzMmEyODViYjRhODBlZGM1YzJmMDU5MGM4YTI1ODY2NGNjM2Y0YTI1Li42
MDE3OWU2NmVmZGVhYTBkNDA2MjdhMDBkZmJkMDUzYmY3YTNlNzBiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy1leHBlY3RlZC50eHQKQEAgLTksNCArOSw1
IEBAIFBBU1MgU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgdGhlbiBtZXRob2QgaW4gcHJv
bWlzZSBvYmplY3QKIFBBU1MgU3RyZWFtcyBzaG91bGQgbm90IGRpcmVjdGx5IHVzZSBOdW1iZXIg
YW5kIHJlbGF0ZWQgbWV0aG9kcyAKIFBBU1MgU3RyZWFtcyBzaG91bGQgbm90IGRpcmVjdGx5IHVz
ZSBSZWFkYWJsZVN0cmVhbSBwdWJsaWMgQVBJcyAKIFBBU1MgU3RyZWFtcyBzaG91bGQgbm90IGRp
cmVjdGx5IHVzZSBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFkIHB1YmxpYyBBUEkgCitQQVNTIFN0
cmVhbXMgc2hvdWxkIG5vdCBkaXJlY3RseSB1c2UgYXJyYXkgcHVibGljIEFQSXMgCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy5odG1sIGIvTGF5b3V0
VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWwKaW5kZXggZWRkZjNiYjRlNGQ5YmY1
ZDA3NzFmZWUyNDNkZGUxNmU0YTU3MzlhZi4uZjQ2NDVhN2MxYjI4NTRjMDQ1ZmQyZWExZThlZGI0
MDRlYzkxOTI0MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21p
c2VzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWwK
QEAgLTE0OSw0ICsxNDksNDQgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICBh
c3NlcnRfdW5yZWFjaGVkKCJ0ZXN0IHNob3VsZCBub3QgdGhyb3ciKTsKICAgICB9CiB9LCAnU3Ry
ZWFtcyBzaG91bGQgbm90IGRpcmVjdGx5IHVzZSBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFkIHB1
YmxpYyBBUEknKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IEFycmF5
UHVzaEJhY2t1cCA9IEFycmF5LnByb3RvdHlwZS5wdXNoOworICAgIGNvbnN0IEFycmF5U2hpZnRC
YWNrdXAgPSBBcnJheS5wcm90b3R5cGUuc2hpZnQ7CisKKyAgICBmdW5jdGlvbiBjbGVhblRlc3Qo
KSB7CisgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoID0gQXJyYXlQdXNoQmFja3VwOworICAg
ICAgICBBcnJheS5wcm90b3R5cGUuc2hpZnQgPSBBcnJheVNoaWZ0QmFja3VwOworICAgIH0KKwor
ICAgIHRyeSB7CisgICAgICAgIGxldCBfY29udHJvbGxlcjsKKyAgICAgICAgY29uc3QgcmVhZGVy
ID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjb250
cm9sbGVyKSB7CisgICAgICAgICAgICAgICAgX2NvbnRyb2xsZXIgPSBjb250cm9sbGVyOworICAg
ICAgICAgICAgfQorICAgICAgICB9KS5nZXRSZWFkZXIoKTsKKyAgICAgICAgLy8gY2hlY2tpbmcg
d2hldGhlciBwdXNoaW5nL3NoaWZ0aW5nIHBlbmRpbmcgcmVhZCBwcm9taXNlcyBpcyBzaGllbGRl
ZC4KKyAgICAgICAgY29uc3QgcmVhZFByb21pc2UgPSByZWFkZXIucmVhZCgpLnRoZW4oZnVuY3Rp
b24ocmVzdWx0KSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZSwgImhh
bGYgYmFrZWQgcG90YXRvIik7CisgICAgICAgICAgICAvLyBjaGVja2luZyB3aGV0aGVyIHB1c2hp
bmcvc2hpZnRpbmcgZW5xdWV1ZWQgdmFsdWVzIGlzIHNoaWVsZGVkLgorICAgICAgICAgICAgX2Nv
bnRyb2xsZXIuZW5xdWV1ZSgiZnVsbHkgYmFrZWQgcG90YXRvIik7CisgICAgICAgICAgICByZXR1
cm4gcmVhZGVyLnJlYWQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LnZhbHVlLCAiZnVsbHkgYmFrZWQgcG90YXRvIik7CisgICAg
ICAgICAgICAgICAgY2xlYW5UZXN0KCk7CisgICAgICAgICAgICB9LCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJyZWFkIHByb21pc2Ugc2hvdWxkIGJlIGZ1
bGZpbGxlZCIpOworICAgICAgICAgICAgICAgIGNsZWFuVGVzdCgpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0sZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJy
ZWFkIHByb21pc2Ugc2hvdWxkIGJlIGZ1bGZpbGxlZCIpOworICAgICAgICAgICAgY2xlYW5UZXN0
KCk7CisgICAgICAgIH0pOworICAgICAgICBfY29udHJvbGxlci5lbnF1ZXVlKCJoYWxmIGJha2Vk
IHBvdGF0byIpOworICAgICAgICByZXR1cm4gcmVhZFByb21pc2U7CisgICAgfSBjYXRjaCAoZXJy
b3IpIHsKKyAgICAgICAgY2xlYW5UZXN0KCk7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQoInRl
c3Qgc2hvdWxkIG5vdCB0aHJvdyIpOworICAgIH0KK30sICdTdHJlYW1zIHNob3VsZCBub3QgZGly
ZWN0bHkgdXNlIGFycmF5IHB1YmxpYyBBUElzJyk7CiA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266516</attachid>
            <date>2015-12-03 00:38:01 -0800</date>
            <delta_ts>2015-12-10 02:51:07 -0800</delta_ts>
            <desc>Improving test</desc>
            <filename>bug-151501-20151203093736.patch</filename>
            <type>text/plain</type>
            <size>14760</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyOTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MmFlMjk3Nzc0ZGRjODkzYWVhMDM3ZTE3MWZmOGE2YTljNTc2YTQxLi5lZmIwYzViNzQ1YWJkZTJi
NmM4YWI0Y2JkNWIyNTg5ZDllMGZjYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNS0xMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIEpTQyBCdWlsdGlucyBzaG91bGQgdXNlIHNhZmUgYXJyYXkg
bWV0aG9kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxNTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkaW5nIEBwdXNoIGFuZCBAc2hpZnQgdG8gQXJyYXkgcHJvdG90eXBlLgorICAgICAgICBVc2lu
ZyBAcHVzaCBpbiBUeXBlZEFycmF5IGJ1aWx0LWluLgorCisgICAgICAgIENvdmVyZWQgYnkgYWRk
ZWQgdGVzdCBpbiBMYXlvdXRUZXN0cy9qcy9idWlsdGlucworCisgICAgICAgICogYnVpbHRpbnMv
VHlwZWRBcnJheS5wcm90b3R5cGUuanM6CisgICAgICAgIChmaWx0ZXIpOgorICAgICAgICAqIHJ1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoK
KwogMjAxNS0xMi0wMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
UG9seW1vcnBoaWMgb3BlcmFuZCB0eXBlcyBmb3IgREZHIGFuZCBGVEwgbXVsLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQwMjhmYzZmYjZiM2U2OWJhYmM5M2FlYmY1NDAyZmVmM2E5YmZjN2MuLjBjZTQwOTIyNzlm
NmZiYjlhMjY3NWM5YzBjODI5YzI5NjYzODc2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAxNS0xMi0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZy
PgorCisgICAgICAgIEpTQyBCdWlsdGlucyBzaG91bGQgdXNlIHNhZmUgYXJyYXkgbWV0aG9kcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTAxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgQHB1
c2ggYW5kIEBzaGlmdCBpbiBpbnRlcm5hbCBhcnJheXMgaW4gbGlldSBvZiBwdXNoIGFuZCBzaGlm
dC4KKyAgICAgICAgVGhpcyBjYW5ub3QgYmUgZGlzcnVwdGVkIGJ5IHVzZXIgc2NyaXB0cyBleGNl
cHQgaWYgYXJyYXlzIGFyZSBhbHNvIG1hZGUgYWNjZXNzaWJsZSB0byB1c2VyIHNjcmlwdHMuCisK
KyAgICAgICAgQ292ZXJlZCBieSBhZGRlZCB0ZXN0cyBmb3IgUmVhZGFibGVTdHJlYW0gY29uc3Ry
dWN0cy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25J
bnRlcm5hbHMuanM6CisgICAgICAgIChydW5OZXh0KToKKyAgICAgICAgKGVucXVldWVPcGVyYXRp
b24pOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5q
czoKKyAgICAgICAgKGVucXVldWVJblJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKHJlYWRGcm9t
UmVhZGFibGVTdHJlYW1SZWFkZXIpOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9TdHJlYW1J
bnRlcm5hbHMuanM6CisgICAgICAgIChkZXF1ZXVlVmFsdWUpOgorICAgICAgICAoZW5xdWV1ZVZh
bHVlV2l0aFNpemUpOgorCiAyMDE1LTEyLTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5pZnkgZm9udC12YXJpYW50LSogd2l0aCBmb250LXZh
cmlhbnQgc2hvcnRoYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvVHlwZWRBcnJheVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCmluZGV4IGY4Y2QzNDkyZWQ1NDUyNmJiMTMxYjEyNDgx
OGRkZDE0ZTRlMDgxYmYuLmU5YzU3OTdhNzhiZjlkYzllMDk2ZjVmOTNlZDlkMzQ5ZTBhYmIzZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJv
dG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5
UHJvdG90eXBlLmpzCkBAIC0yNTgsNyArMjU4LDcgQEAgZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNr
IC8qLCB0aGlzQXJnICovKQogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsK
ICAgICAgICAgdmFyIHZhbHVlID0gdGhpc1tpXTsKICAgICAgICAgaWYgKGNhbGxiYWNrLkBjYWxs
KHRoaXNBcmcsIHZhbHVlLCBpLCB0aGlzKSkKLSAgICAgICAgICAgIGtlcHQucHVzaCh2YWx1ZSk7
CisgICAgICAgICAgICBrZXB0LkBwdXNoKHZhbHVlKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgYSBzcGVjaWVzIGNvbnN0cnVjdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDJkYjI1OTI2ZDE5MGFi
ZTk2OGM3ZmEyNDEzZGZhZjE3M2Y4NGIwYWMuLmFiN2JhYmM5MWQxODMxYWEyMmU3MjdkYWMxZGVi
OWQ1MTZkZDkwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgogCisjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAj
aW5jbHVkZSAiQnV0dGVyZmx5SW5saW5lcy5oIgogI2luY2x1ZGUgIkNhY2hlZENhbGwuaCIKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKQEAgLTk1LDkgKzk2LDExIEBAIHZvaWQgQXJyYXlQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTigiZmlsbCIsIGFycmF5UHJvdG90eXBlRmlsbENvZGVH
ZW5lcmF0b3IsIERvbnRFbnVtKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPmpvaW4sIGFycmF5UHJvdG9GdW5jSm9pbiwgRG9udEVudW0sIDEpOwogICAgIEpTQ19O
QVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OKCJwb3AiLCBhcnJheVByb3RvRnVuY1BvcCwgRG9udEVu
dW0sIDAsIEFycmF5UG9wSW50cmluc2ljKTsKLSAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5D
VElPTigicHVzaCIsIGFycmF5UHJvdG9GdW5jUHVzaCwgRG9udEVudW0sIDEsIEFycmF5UHVzaElu
dHJpbnNpYyk7CisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT04odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkucHVzaFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b0Z1bmNQdXNo
LCBEb250RW51bSwgMSwgQXJyYXlQdXNoSW50cmluc2ljKTsKKyAgICBKU0NfTkFUSVZFX0lOVFJJ
TlNJQ19GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wdXNoUHJpdmF0
ZU5hbWUoKSwgYXJyYXlQcm90b0Z1bmNQdXNoLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSwgMSwgQXJyYXlQdXNoSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJy
ZXZlcnNlIiwgYXJyYXlQcm90b0Z1bmNSZXZlcnNlLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05B
VElWRV9GVU5DVElPTigic2hpZnQiLCBhcnJheVByb3RvRnVuY1NoaWZ0LCBEb250RW51bSwgMCk7
CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5zaGlmdFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b0Z1bmNTaGlmdCwgRG9udEVudW0sIDApOwor
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
c2hpZnRQcml2YXRlTmFtZSgpLCBhcnJheVByb3RvRnVuY1NoaWZ0LCBEb250RW51bSB8IERvbnRE
ZWxldGUgfCBSZWFkT25seSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5zbGljZSwgYXJyYXlQcm90b0Z1bmNTbGljZSwgRG9udEVudW0sIDIpOwogICAgIEpT
Q19CVUlMVElOX0ZVTkNUSU9OKCJzb3J0IiwgYXJyYXlQcm90b3R5cGVTb3J0Q29kZUdlbmVyYXRv
ciwgRG9udEVudW0pOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oInNwbGljZSIsIGFycmF5UHJv
dG9GdW5jU3BsaWNlLCBEb250RW51bSwgMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCA0NzNkNWE0MWNiZjcxOTM3OTY3N2Zh
ZTI0NDU5MjU1Yzc4MGIxYjVkLi5lZjE4MDFkY2YzOTA1ZDEwMzk0YTI4YzI4M2Y1OTM4YzUyNzgy
NjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKQEAgLTMxNiwxMSArMzE2LDEzIEBACiAgICAgbWFjcm8ocHJvbWlzZUZ1bGZpbGxS
ZWFjdGlvbnMpIFwKICAgICBtYWNybyhwcm9taXNlUmVqZWN0UmVhY3Rpb25zKSBcCiAgICAgbWFj
cm8ocHJvbWlzZVJlc3VsdCkgXAorICAgIG1hY3JvKHB1c2gpIFwKICAgICBtYWNybyhjYXBhYmls
aXRpZXMpIFwKICAgICBtYWNybyhzdGFyRGVmYXVsdCkgXAogICAgIG1hY3JvKEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbikgXAogICAgIG1hY3JvKGdldCkgXAogICAgIG1hY3JvKHNldCkgXAorICAg
IG1hY3JvKHNoaWZ0KSBcCiAgICAgbWFjcm8oYWxsb2NhdGVUeXBlZEFycmF5KSBcCiAgICAgbWFj
cm8oSW50OEFycmF5KSBcCiAgICAgbWFjcm8oSW50MTZBcnJheSkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkludGVybmFs
cy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b25JbnRlcm5hbHMuanMKaW5kZXggOWM5YTg3ODk0NDNiN2U1ZDk1YjI5MzcxNjA2Mjc0ODlhNDAy
NjcyOS4uMWZjYTQzNmYwMTIyYjQ2ZTE2NjQ2M2QzNDY2NGY0OTUxYTcxMGE1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbklu
dGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uSW50ZXJuYWxzLmpzCkBAIC00MiwxMyArNDIsMTMgQEAgZnVuY3Rpb24gZW5x
dWV1ZU9wZXJhdGlvbihwZWVyQ29ubmVjdGlvbiwgb3BlcmF0aW9uKQogICAgIHZhciBvcGVyYXRp
b25zID0gcGVlckNvbm5lY3Rpb24uQG9wZXJhdGlvbnM7CiAKICAgICBmdW5jdGlvbiBydW5OZXh0
KCkgewotICAgICAgICBvcGVyYXRpb25zLnNoaWZ0KCk7CisgICAgICAgIG9wZXJhdGlvbnMuQHNo
aWZ0KCk7CiAgICAgICAgIGlmIChvcGVyYXRpb25zLmxlbmd0aCkKICAgICAgICAgICAgIG9wZXJh
dGlvbnNbMF0oKTsKICAgICB9OwogCiAgICAgcmV0dXJuIG5ldyBAUHJvbWlzZShmdW5jdGlvbiAo
cmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgIG9wZXJhdGlvbnMucHVzaChmdW5jdGlvbigpIHsK
KyAgICAgICAgb3BlcmF0aW9ucy5AcHVzaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIG9wZXJh
dGlvbigpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KS50aGVuKHJ1bk5leHQsIHJ1bk5leHQpOwogICAg
ICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCmluZGV4IGI4NDY4ODM0N2UwYmQ1MzdkNTk5YjRk
M2M1MjhhYTc2NjU2YzdiNjkuLjljYWMxZDdkZmQ1MDI5OWExMTFkMWNmYmVjMzUyM2Y3YzE1MDcw
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbUludGVybmFscy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKQEAgLTMxNSw3ICszMTUsNyBAQCBmdW5jdGlvbiBlbnF1
ZXVlSW5SZWFkYWJsZVN0cmVhbShzdHJlYW0sIGNodW5rKQogICAgIGlmIChzdHJlYW0uQHN0YXRl
ID09PSBAc3RyZWFtQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKEBpc1JlYWRhYmxl
U3RyZWFtTG9ja2VkKHN0cmVhbSkgJiYgc3RyZWFtLkByZWFkZXIuQHJlYWRSZXF1ZXN0cy5sZW5n
dGgpIHsKLSAgICAgICAgc3RyZWFtLkByZWFkZXIuQHJlYWRSZXF1ZXN0cy5zaGlmdCgpLkByZXNv
bHZlLkBjYWxsKHVuZGVmaW5lZCwge3ZhbHVlOiBjaHVuaywgZG9uZTogZmFsc2V9KTsKKyAgICAg
ICAgc3RyZWFtLkByZWFkZXIuQHJlYWRSZXF1ZXN0cy5Ac2hpZnQoKS5AcmVzb2x2ZS5AY2FsbCh1
bmRlZmluZWQsIHt2YWx1ZTogY2h1bmssIGRvbmU6IGZhbHNlfSk7CiAgICAgICAgIEByZXF1ZXN0
UmVhZGFibGVTdHJlYW1QdWxsKHN0cmVhbSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0z
NTYsNyArMzU2LDcgQEAgZnVuY3Rpb24gcmVhZEZyb21SZWFkYWJsZVN0cmVhbVJlYWRlcihyZWFk
ZXIpCiAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZSh7dmFsdWU6IGNodW5rLCBkb25l
OiBmYWxzZX0pOwogICAgIH0KICAgICBjb25zdCByZWFkUHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3
UHJvbWlzZUNhcGFiaWxpdHkoQFByb21pc2UpOwotICAgIHJlYWRlci5AcmVhZFJlcXVlc3RzLnB1
c2gocmVhZFByb21pc2VDYXBhYmlsaXR5KTsKKyAgICByZWFkZXIuQHJlYWRSZXF1ZXN0cy5AcHVz
aChyZWFkUHJvbWlzZUNhcGFiaWxpdHkpOwogICAgIEByZXF1ZXN0UmVhZGFibGVTdHJlYW1QdWxs
KHN0cmVhbSk7CiAgICAgcmV0dXJuIHJlYWRQcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5h
bHMuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpz
CmluZGV4IGY2MGU0ZDAyZGFlMWIyNWY3MGMyYzc3ODQxNWVlODZjOTA1NDdhMmUuLjhmNTA1MDZh
ZjVmOTA4M2FmZWVjZjZhMGExOWE5ZWVlM2E2NTY0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVybmFscy5qcwpAQCAtOTksNyArOTksNyBAQCBm
dW5jdGlvbiBkZXF1ZXVlVmFsdWUocXVldWUpCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0gICAg
Y29uc3QgcmVjb3JkID0gcXVldWUuY29udGVudC5zaGlmdCgpOworICAgIGNvbnN0IHJlY29yZCA9
IHF1ZXVlLmNvbnRlbnQuQHNoaWZ0KCk7CiAgICAgcXVldWUuc2l6ZSAtPSByZWNvcmQuc2l6ZTsK
ICAgICByZXR1cm4gcmVjb3JkLnZhbHVlOwogfQpAQCAtMTExLDcgKzExMSw3IEBAIGZ1bmN0aW9u
IGVucXVldWVWYWx1ZVdpdGhTaXplKHF1ZXVlLCB2YWx1ZSwgc2l6ZSkKICAgICBzaXplID0gQE51
bWJlcihzaXplKTsKICAgICBpZiAoIUBpc0Zpbml0ZShzaXplKSB8fCBzaXplIDwgMCkKICAgICAg
ICAgdGhyb3cgbmV3IEBSYW5nZUVycm9yKCJzaXplIGhhcyBhbiBpbmNvcnJlY3QgdmFsdWUiKTsK
LSAgICBxdWV1ZS5jb250ZW50LnB1c2goeyB2YWx1ZTogdmFsdWUsIHNpemU6IHNpemUgfSk7Cisg
ICAgcXVldWUuY29udGVudC5AcHVzaCh7IHZhbHVlOiB2YWx1ZSwgc2l6ZTogc2l6ZSB9KTsKICAg
ICBxdWV1ZS5zaXplICs9IHNpemU7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NTViOGVhZjg5NDE5MDAzZTIzNGEw
ZWVhNmEzNWUxMTg4NmQwMDM3Li40ZmQ3NzkyODkzZTRjOWRlOTk5NWFiZGY3OGFkMDM5YTMxMzJj
YTA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTUtMTItMDEgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBKU0MgQnVpbHRpbnMgc2hvdWxk
IHVzZSBzYWZlIGFycmF5IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MTUwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGluZyBzaGllbGRpbmcgdGVzdCBmb3IgVHlwZWRBcnJheS5wcm90
b3R5cGUuZmlsdGVyIGFuZCBzdHJlYW0gZW5xdWV1aW5nIG9mIHZhbHVlcyBhbmQgcmVhZCBwcm9t
aXNlcy4KKworICAgICAgICAqIGpzL2J1aWx0aW5zL3Jlc291cmNlcy9zaGllbGRpbmctdHlwZWRh
cnJheS5qczogQWRkZWQuCisgICAgICAgIChBcnJheS5wcm90b3R5cGUucHVzaCk6CisgICAgICAg
ICh0cnkuYXJyYXkuSW50OEFycmF5LmZyb20uc3RyaW5nX2FwcGVhcmVkX2hlcmUuZmlsdGVyKToK
KyAgICAgICAgKiBqcy9idWlsdGlucy9zaGllbGRpbmctdHlwZWRhcnJheS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL2J1aWx0aW5zL3NoaWVsZGluZy10eXBlZGFycmF5Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHN0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWw6CisKIDIwMTUtMTItMDIg
IE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFBvbHltb3JwaGljIG9w
ZXJhbmQgdHlwZXMgZm9yIERGRyBhbmQgRlRMIG11bC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2pzL2J1aWx0aW5zL3Jlc291cmNlcy9zaGllbGRpbmctdHlwZWRhcnJheS5qcyBiL0xheW91dFRl
c3RzL2pzL2J1aWx0aW5zL3Jlc291cmNlcy9zaGllbGRpbmctdHlwZWRhcnJheS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45Y2M5N2E5MTg2NjRiZjEyMjRhODNhNGM5NzQ2ZjFlOTY3NWM4OGFiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvYnVpbHRpbnMvcmVzb3VyY2VzL3NoaWVsZGluZy10eXBl
ZGFycmF5LmpzCkBAIC0wLDAgKzEsMTggQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IHRvIGVuc3VyZSBU
eXBlZEFycmF5IGZpbHRlciBpcyBzaGllbGRlZCBmcm9tIEFycmF5LnByb3RvdHlwZS5wdXNoIG1v
ZGlmaWNhdGlvbnMiKTsKKworY29uc3QgQXJyYXlQcm90b3R5cGVQdXNoQmFja3VwID0gQXJyYXku
cHJvdG90eXBlLnB1c2g7CitBcnJheS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICB0ZXN0RmFpbGVkKCJJbnQ4QXJyYXkucHJvdG90eXBlLnB1c2ggc2hvdWxkIG5vdCBiZSBjYWxs
ZWQgYnkgYnVpbHRpbiBjb2RlIik7CisgICAgcmV0dXJuIEFycmF5UHJvdG90eXBlUHVzaEJhY2t1
cC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworfQorCit0cnkgeworICAgIGFycmF5ID0gSW50OEFy
cmF5LmZyb20oIjEyMzQiKS5maWx0ZXIoZnVuY3Rpb24odmFsdWUpIHsKKyAgICAgICAgcmV0dXJu
IHZhbHVlID09PSAxOworICAgIH0pOworICAgIHNob3VsZEJlVHJ1ZSgiYXJyYXkubGVuZ3RoID09
PSAxIik7Cit9CitmaW5hbGx5IHsKKyAgICBBcnJheS5wcm90b3R5cGUucHVzaCA9IEFycmF5UHJv
dG90eXBlUHVzaEJhY2t1cDsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2J1aWx0aW5z
L3NoaWVsZGluZy10eXBlZGFycmF5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2J1aWx0
aW5zL3NoaWVsZGluZy10eXBlZGFycmF5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDg2NThk
NzBjMGFiNTViMzk1ZTgwYTUyNWQ1MGU4MjRjOTE1M2NjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvanMvYnVpbHRpbnMvc2hpZWxkaW5nLXR5cGVkYXJyYXktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTAgQEAKK1Rlc3QgdG8gZW5zdXJlIFR5cGVkQXJyYXkgZmlsdGVyIGlzIHNoaWVs
ZGVkIGZyb20gQXJyYXkucHJvdG90eXBlLnB1c2ggbW9kaWZpY2F0aW9ucworCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBhcnJheS5sZW5ndGggPT09IDEgaXMgdHJ1ZQorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2J1aWx0aW5zL3NoaWVsZGluZy10eXBlZGFycmF5Lmh0bWwgYi9M
YXlvdXRUZXN0cy9qcy9idWlsdGlucy9zaGllbGRpbmctdHlwZWRhcnJheS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkyYjJjNjc2N2NhOTBhMzg4MWRhMjNjMDFjY2I2ZjdiYjk2MmZiZTcKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9qcy9idWlsdGlucy9zaGllbGRpbmctdHlwZWRhcnJheS5odG1s
CkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9zaGllbGRpbmctdHlwZWRhcnJheS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLWV4cGVjdGVk
LnR4dAppbmRleCAzMmEyODViYjRhODBlZGM1YzJmMDU5MGM4YTI1ODY2NGNjM2Y0YTI1Li42MDE3
OWU2NmVmZGVhYTBkNDA2MjdhMDBkZmJkMDUzYmY3YTNlNzBiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3N0cmVhbXMtcHJvbWlzZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy1leHBlY3RlZC50eHQKQEAgLTksNCArOSw1IEBA
IFBBU1MgU3RyZWFtcyBhbmQgcHJvbWlzZXM6IHJlcGxhY2UgdGhlbiBtZXRob2QgaW4gcHJvbWlz
ZSBvYmplY3QKIFBBU1MgU3RyZWFtcyBzaG91bGQgbm90IGRpcmVjdGx5IHVzZSBOdW1iZXIgYW5k
IHJlbGF0ZWQgbWV0aG9kcyAKIFBBU1MgU3RyZWFtcyBzaG91bGQgbm90IGRpcmVjdGx5IHVzZSBS
ZWFkYWJsZVN0cmVhbSBwdWJsaWMgQVBJcyAKIFBBU1MgU3RyZWFtcyBzaG91bGQgbm90IGRpcmVj
dGx5IHVzZSBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFkIHB1YmxpYyBBUEkgCitQQVNTIFN0cmVh
bXMgc2hvdWxkIG5vdCBkaXJlY3RseSB1c2UgYXJyYXkgcHVibGljIEFQSXMgCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0cmVhbXMvc3RyZWFtcy1wcm9taXNlcy5odG1sIGIvTGF5b3V0VGVz
dHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWwKaW5kZXggZWRkZjNiYjRlNGQ5YmY1ZDA3
NzFmZWUyNDNkZGUxNmU0YTU3MzlhZi4uMzNlMGZkMWFlNWFkNWU4NzI2ZjFkNmI1NTcyMTdjODk3
MzRkOWExYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2Vz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9zdHJlYW1zLXByb21pc2VzLmh0bWwKQEAg
LTE0OSw0ICsxNDksNTggQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICBhc3Nl
cnRfdW5yZWFjaGVkKCJ0ZXN0IHNob3VsZCBub3QgdGhyb3ciKTsKICAgICB9CiB9LCAnU3RyZWFt
cyBzaG91bGQgbm90IGRpcmVjdGx5IHVzZSBSZWFkYWJsZVN0cmVhbVJlYWRlciByZWFkIHB1Ymxp
YyBBUEknKTsKKworcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNvbnN0IEFycmF5UHVz
aEJhY2t1cCA9IEFycmF5LnByb3RvdHlwZS5wdXNoOworICAgIGNvbnN0IEFycmF5U2hpZnRCYWNr
dXAgPSBBcnJheS5wcm90b3R5cGUuc2hpZnQ7CisKKyAgICAvLyBVc2Ugb2YgdGVzdGluZyB2YXJp
YWJsZSB0byB0cnkgbm90IG1lc3NpbmcgdXAgdGVzdGhhcm5lc3MuanMgY29kZS4KKyAgICAvLyBG
SVhNRTogdGhpcyBhcHByb2FjaCBpcyBmYXIgZnJvbSBwZXJmZWN0OiBwdXNoIGlzIHVzZWQgaW4g
Y2FzZSBhbiBhc3NlcnQgZmFpbHMuCisgICAgLy8gQnV0IGNsZWFuVGVzdCB3aWxsIG5vdCBiZSBj
YWxsZWQgYW5kIHdlIG1heSBlbmQtdXAgbWFzayB0aGUgcmVhbCBhc3NlcnRpb24gZmFpbHVyZSBi
eSBiZWxvdyBhc3NlcnRfdW5yZWFjaGVkIG1lc3NhZ2VzLgorICAgIC8vIFdlIG1pZ2h0IHdhbnQg
dG8gZWl0aGVyIGltcHJvdmUgdGVzdGhhcm5lc3MuanMgb3IgIG1vdmUgdGhlc2UgdGVzdHMgb3V0
IG9mIHRlc3RoYXJuZXNzLmpzLgorICAgIGxldCB0ZXN0aW5nID0gdHJ1ZTsKKyAgICBBcnJheS5w
cm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAodGVzdGluZykgeworICAg
ICAgICAgICAgdGVzdGluZyA9IGZhbHNlOworICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgi
QXJyYXkucHJvdG90eXBlLnB1c2ggY2FsbGVkIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IEFycmF5UHVzaEJhY2t1cC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgIH0KKworICAgIEFy
cmF5LnByb3RvdHlwZS5zaGlmdCA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAodGVzdGluZykg
eworICAgICAgICAgICAgdGVzdGluZyA9IGZhbHNlOworICAgICAgICAgICAgYXNzZXJ0X3VucmVh
Y2hlZCgiQXJyYXkucHJvdG90eXBlLnNoaWZ0IGNhbGxlZCIpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBBcnJheVNoaWZ0QmFja3VwLmNhbGwodGhpcywgYXJndW1lbnRzKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjbGVhblRlc3QoKSB7CisgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNo
ID0gQXJyYXlQdXNoQmFja3VwOworICAgICAgICBBcnJheS5wcm90b3R5cGUuc2hpZnQgPSBBcnJh
eVNoaWZ0QmFja3VwOworICAgIH0KKyAgICB0cnkgeworICAgICAgICBsZXQgX2NvbnRyb2xsZXI7
CisgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgICAg
ICBzdGFydDogZnVuY3Rpb24oY29udHJvbGxlcikgeworICAgICAgICAgICAgICAgIF9jb250cm9s
bGVyID0gY29udHJvbGxlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkuZ2V0UmVhZGVyKCk7
CisgICAgICAgIC8vIGNoZWNraW5nIHdoZXRoZXIgcHVzaGluZy9zaGlmdGluZyBwZW5kaW5nIHJl
YWQgcHJvbWlzZXMgaXMgc2hpZWxkZWQuCisgICAgICAgIGNvbnN0IHJlYWRQcm9taXNlID0gcmVh
ZGVyLnJlYWQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhyZXN1bHQudmFsdWUsICJoYWxmIGJha2VkIHBvdGF0byIpOworICAgICAgICAgICAgLy8g
Y2hlY2tpbmcgd2hldGhlciBwdXNoaW5nL3NoaWZ0aW5nIGVucXVldWVkIHZhbHVlcyBpcyBzaGll
bGRlZC4KKyAgICAgICAgICAgIF9jb250cm9sbGVyLmVucXVldWUoImZ1bGx5IGJha2VkIHBvdGF0
byIpOworICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkKCkudGhlbihmdW5jdGlvbihyZXN1
bHQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC52YWx1ZSwgImZ1bGx5
IGJha2VkIHBvdGF0byIpOworICAgICAgICAgICAgICAgIGNsZWFuVGVzdCgpOworICAgICAgICAg
ICAgfSwgY2xlYW5UZXN0KTsKKyAgICAgICAgfSwgY2xlYW5UZXN0KTsKKyAgICAgICAgX2NvbnRy
b2xsZXIuZW5xdWV1ZSgiaGFsZiBiYWtlZCBwb3RhdG8iKTsKKyAgICAgICAgcmV0dXJuIHJlYWRQ
cm9taXNlOworICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgIGNsZWFuVGVzdCgpOworICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOworICAgIH0KK30sICdTdHJlYW1zIHNo
b3VsZCBub3QgZGlyZWN0bHkgdXNlIGFycmF5IHB1YmxpYyBBUElzJyk7CiA8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>