<?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>177026</bug_id>
          
          <creation_ts>2017-09-15 15:58:55 -0700</creation_ts>
          <short_desc>Allow WTF::map to use any class that is iterable and has a size getter</short_desc>
          <delta_ts>2017-09-27 12:27:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</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>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1349554</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-15 15:58:55 -0700</bug_when>
    <thetext>WTF::map could be for instance used to go from HashMap to Vector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349589</commentid>
    <comment_count>1</comment_count>
      <attachid>320974</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-15 17:21:43 -0700</bug_when>
    <thetext>Created attachment 320974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349591</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-15 17:24:33 -0700</bug_when>
    <thetext>Attachment 320974 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:744:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:745:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:746:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:754:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:755:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:756:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:764:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:765:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:766:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
Total errors found: 9 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349603</commentid>
    <comment_count>3</comment_count>
      <attachid>320974</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-15 18:12:21 -0700</bug_when>
    <thetext>Comment on attachment 320974
Patch

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

&gt; Source/WebCore/loader/appcache/ApplicationCacheHost.cpp:334
&gt; +    return WTF::map(cache-&gt;resources(), [] (auto&amp; urlAndResource) -&gt; ApplicationCacheHost::ResourceInfo {

Will remove ApplicationCacheHost:: here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349670</commentid>
    <comment_count>4</comment_count>
      <attachid>320974</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-16 08:43:19 -0700</bug_when>
    <thetext>Comment on attachment 320974
Patch

If the result type is always Vector, then we should probably name this something other than &quot;map&quot;. Perhaps &quot;mapToVector&quot;, which is less elegant, but still.

I think we should consider basing this on std::begin, std::end, and std::size rather than on x.begin(), x.end(), and x.size(). However, std::size is C++17, so maybe we can’t rely on that.

http://en.cppreference.com/w/cpp/iterator/begin
http://en.cppreference.com/w/cpp/iterator/end
http://en.cppreference.com/w/cpp/iterator/size</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349807</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-17 17:40:53 -0700</bug_when>
    <thetext>&gt; If the result type is always Vector, then we should probably name this
&gt; something other than &quot;map&quot;. Perhaps &quot;mapToVector&quot;, which is less elegant,
&gt; but still.

toVector might be shorter.
Maybe this is just me, but map seems a big vague to me.

There are various ways we could add further support of HashMap-&gt;HashMap, Vector-&gt;HashMap.

I am not sure how much we would gain for these compared to usual for loops.
For Vector, the gain is clear as we remove use of reserveInitialCapacity/uncheckedAppend.

&gt; I think we should consider basing this on std::begin, std::end, and
&gt; std::size rather than on x.begin(), x.end(), and x.size(). However,
&gt; std::size is C++17, so maybe we can’t rely on that.

I&apos;ll switch to begin/end.
For std::size, we might need to wait for mid 2008 for all compilers to support it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349904</commentid>
    <comment_count>6</comment_count>
      <attachid>321094</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-18 08:43:57 -0700</bug_when>
    <thetext>Created attachment 321094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349909</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-18 08:46:38 -0700</bug_when>
    <thetext>Attachment 321094 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:744:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:745:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:746:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:754:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:755:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:756:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:764:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:765:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:766:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
Total errors found: 9 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350022</commentid>
    <comment_count>8</comment_count>
      <attachid>321094</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-18 11:52:13 -0700</bug_when>
    <thetext>Comment on attachment 321094
Patch

Clearing flags on attachment: 321094

Committed r222170: &lt;http://trac.webkit.org/changeset/222170&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350023</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-18 11:52:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350075</commentid>
    <comment_count>10</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-09-18 13:55:01 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #8)
&gt; Comment on attachment 321094 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 321094
&gt; 
&gt; Committed r222170: &lt;http://trac.webkit.org/changeset/222170&gt;

The API test added with this change is failing on the bots:

FAIL WTF_Vector.MapFromHashMap

/Volumes/Data/slave/sierra-release/build/Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:768
Value of: map.contains(&quot;k1&quot;)
  Actual: false
Expected: true


/Volumes/Data/slave/sierra-release/build/Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:769
Value of: map.contains(&quot;k2&quot;)
  Actual: false
Expected: true


/Volumes/Data/slave/sierra-release/build/Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:770
Value of: map.contains(&quot;k3&quot;)
  Actual: false
Expected: true

https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK2%20(Tests)/builds/4365</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350083</commentid>
    <comment_count>11</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-09-18 14:05:03 -0700</bug_when>
    <thetext>Reverted r222170 for reason:

The API test added with this change is failing.

Committed r222180: &lt;http://trac.webkit.org/changeset/222180&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350571</commentid>
    <comment_count>12</comment_count>
      <attachid>321263</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-19 16:27:29 -0700</bug_when>
    <thetext>Created attachment 321263
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350574</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-19 16:29:40 -0700</bug_when>
    <thetext>Attachment 321263 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:744:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:745:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:746:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:754:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:755:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:756:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:764:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:765:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
ERROR: Tools/TestWebKitAPI/Tests/WTF/Vector.cpp:766:  Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)  [readability/check] [2]
Total errors found: 9 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350593</commentid>
    <comment_count>14</comment_count>
      <attachid>321263</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-19 17:57:44 -0700</bug_when>
    <thetext>Comment on attachment 321263
Patch for landing

Clearing flags on attachment: 321263

Committed r222238: &lt;http://trac.webkit.org/changeset/222238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1350594</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-19 17:57:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353391</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:27:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693300&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320974</attachid>
            <date>2017-09-15 17:21:43 -0700</date>
            <delta_ts>2017-09-18 08:43:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177026-20170915172142.patch</filename>
            <type>text/plain</type>
            <size>10322</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU0OTJjOGI5NDVmYjMwODkyMWJjNDYz
ODMyOWQ1YjcyNGM4YTYxODYuLmM1ZWJkNWM5ZWU1YWIzYWYxZmJjNGFjZWRkZDQ2MjAzZmZjYWY3
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDktMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdURjo6bWFwIHRvIHVzZSBhbnkgY2xhc3Mg
dGhhdCBpcyBpdGVyYWJsZSBhbmQgaGFzIGEgc2l6ZSBnZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzAyNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbXB1dGluZyB0aGUgSXRlbSB0eXBlIGdp
dmVuIHRvIHRoZSBsYW1iZGEgdXNpbmcgdGhlIGl0ZXJhdG9yIGluc3RlYWQgb2YgVmFsdWVUeXBl
IHdoaWNoIGlzIHNwZWNpZmljIHRvIFZlY3Rvci4KKyAgICAgICAgQWRkaW5nIHRoZSBwb3NzaWJp
bGl0eSB0byBwYXNzIGEgbm9uIGNvbnN0IGNvbnRhaW5lciByZWZlcmVuY2UgYW5kIGEgbGFtYmRh
IHRha2luZyBub24gY29uc3QgcmVmZXJlbmNlcyBhcyB3ZWxsLiAKKworICAgICAgICAqIHd0Zi9W
ZWN0b3IuaDoKKyAgICAgICAgKFdURjo6TWFwRnVuY3Rpb25JbnNwZWN0b3I6OmFjY2VwdHNSZWZl
cmVuY2UpOgorICAgICAgICAoV1RGOjpNYXBwZXI6Om1hcCk6CisgICAgICAgIChXVEY6Om1hcCk6
CisKIDIwMTctMDktMTQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2Ugc2hvdWxkIGhhdmUgYSB3YXkgb2YgcHJldmVudGluZyBhIGNhbGxlciBmcm9tIG1ha2lu
ZyBhIHRhaWwgY2FsbCBhbmQgd2Ugc2hvdWxkIHVzZSBpdCBmb3IgUHJveHlPYmplY3QgaW5zdGVh
ZCBvZiB1c2luZyBidWlsZCBmbGFncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFhODZiNjQyYmUxNGM4YTJmNmJk
ZWVhODA1OTZjYjM1MGI4MDkzOGEuLjg1MWEyODI4M2NiMDM2MTZiNjQyNmQ2NjhjOWQxNTY1ZDRi
ODRhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wOS0xNSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgV1RGOjptYXAgdG8gdXNl
IGFueSBjbGFzcyB0aGF0IGlzIGl0ZXJhYmxlIGFuZCBoYXMgYSBzaXplIGdldHRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3MDI2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGJl
aGF2aW9yLgorICAgICAgICBVc2luZyBXVEY6Om1hcCB0byBnbyBmcm9tIG1hcHMgdG8gdmVjdG9y
cy4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6cmVzb3VyY2VMaXN0KToK
KyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5k
b3c6OmRpc3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50cyk6CisKIDIwMTctMDktMTUgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcmFnZSBBY2Nlc3Mg
QVBJOiBEZW55IGFjY2VzcyB0byBuZXN0ZWQgaWZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCA5OGQyMzc0Zjk5
YjRmYjNlYmUyOWZiZmI0MzBhM2FmNjkyYjkxMWVkLi44OTM0MGRmZmU0YjA1NDdmMjVmZDk4YTM2
NTQ1ZDQ2NDYzMWZmOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtMTU2MCwzNCArMTU2MCw0NyBAQCBzaXplX3Qg
cmVtb3ZlUmVwZWF0ZWRFbGVtZW50cyhWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlciwgbWluQ2FwYQogICAgIHJldHVybiByZW1vdmVSZXBlYXRlZEVsZW1lbnRzKHZlY3Rv
ciwgW10gKFQmIGEsIFQmIGIpIHsgcmV0dXJuIGEgPT0gYjsgfSk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFRyYW5zZm9ybWVyLCB0eXBlbmFtZSBTb3VyY2VUeXBlPiBzdHJ1Y3QgTWFwcGVyIHsK
K3RlbXBsYXRlPHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0eXBlbmFtZSBTb3VyY2VUeXBlPgorc3Ry
dWN0IE1hcEZ1bmN0aW9uSW5zcGVjdG9yIHsKICAgICB1c2luZyBSZWFsU291cmNlVHlwZSA9IHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxTb3VyY2VUeXBlPjo6dHlwZTsKLSAgICB1c2lu
ZyBTb3VyY2VJdGVtVHlwZSA9IHR5cGVuYW1lIFJlYWxTb3VyY2VUeXBlOjpWYWx1ZVR5cGU7Ci0g
ICAgdXNpbmcgRGVzdGluYXRpb25JdGVtVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPFRy
YW5zZm9ybWVyKFNvdXJjZUl0ZW1UeXBlJiYpPjo6dHlwZTsKKyAgICB1c2luZyBJdGVyYXRvclR5
cGUgPSBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8UmVhbFNvdXJjZVR5cGU+KCkuYmVnaW4oKSk7Cisg
ICAgdXNpbmcgU291cmNlSXRlbVR5cGUgPSB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxJ
dGVyYXRvclR5cGU+Ojp2YWx1ZV90eXBlOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgTWFwRnVu
Y3Rpb24sIHR5cGVuYW1lIFNvdXJjZVR5cGUsIHR5cGVuYW1lIEVuYWJsZSA9IHZvaWQ+CitzdHJ1
Y3QgTWFwcGVyIHsKKyAgICB1c2luZyBTb3VyY2VJdGVtVHlwZSA9IHR5cGVuYW1lIE1hcEZ1bmN0
aW9uSW5zcGVjdG9yPE1hcEZ1bmN0aW9uLCBTb3VyY2VUeXBlPjo6U291cmNlSXRlbVR5cGU7Cisg
ICAgdXNpbmcgRGVzdGluYXRpb25JdGVtVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPE1h
cEZ1bmN0aW9uKFNvdXJjZUl0ZW1UeXBlJik+Ojp0eXBlOwogCi0gICAgc3RhdGljIFZlY3RvcjxE
ZXN0aW5hdGlvbkl0ZW1UeXBlPiBtYXAoY29uc3QgUmVhbFNvdXJjZVR5cGUmIHNvdXJjZSwgY29u
c3QgVHJhbnNmb3JtZXImIHRyYW5zZm9ybWVyKQorICAgIHN0YXRpYyBWZWN0b3I8RGVzdGluYXRp
b25JdGVtVHlwZT4gbWFwKFNvdXJjZVR5cGUgc291cmNlLCBjb25zdCBNYXBGdW5jdGlvbiYgbWFw
RnVuY3Rpb24pCiAgICAgewogICAgICAgICBWZWN0b3I8RGVzdGluYXRpb25JdGVtVHlwZT4gcmVz
dWx0OwogICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzb3VyY2Uuc2l6ZSgp
KTsKICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogc291cmNlKQotICAgICAgICAgICAgcmVzdWx0
LnVuY2hlY2tlZEFwcGVuZCh0cmFuc2Zvcm1lcihpdGVtKSk7CisgICAgICAgICAgICByZXN1bHQu
dW5jaGVja2VkQXBwZW5kKG1hcEZ1bmN0aW9uKGl0ZW0pKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBNYXBGdW5jdGlvbiwgdHlwZW5hbWUg
U291cmNlVHlwZT4KK3N0cnVjdCBNYXBwZXI8TWFwRnVuY3Rpb24sIFNvdXJjZVR5cGUsIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcnZhbHVlX3JlZmVyZW5jZTxTb3VyY2VUeXBlJiY+
Ojp2YWx1ZT46OnR5cGU+IHsKKyAgICB1c2luZyBTb3VyY2VJdGVtVHlwZSA9IHR5cGVuYW1lIE1h
cEZ1bmN0aW9uSW5zcGVjdG9yPE1hcEZ1bmN0aW9uLCBTb3VyY2VUeXBlPjo6U291cmNlSXRlbVR5
cGU7CisgICAgdXNpbmcgRGVzdGluYXRpb25JdGVtVHlwZSA9IHR5cGVuYW1lIHN0ZDo6cmVzdWx0
X29mPE1hcEZ1bmN0aW9uKFNvdXJjZUl0ZW1UeXBlJiYpPjo6dHlwZTsKIAotICAgIHN0YXRpYyBW
ZWN0b3I8RGVzdGluYXRpb25JdGVtVHlwZT4gbWFwKFJlYWxTb3VyY2VUeXBlJiYgc291cmNlLCBj
b25zdCBUcmFuc2Zvcm1lciYgdHJhbnNmb3JtZXIpCisgICAgc3RhdGljIFZlY3RvcjxEZXN0aW5h
dGlvbkl0ZW1UeXBlPiBtYXAoU291cmNlVHlwZSBzb3VyY2UsIGNvbnN0IE1hcEZ1bmN0aW9uJiBt
YXBGdW5jdGlvbikKICAgICB7CiAgICAgICAgIFZlY3RvcjxEZXN0aW5hdGlvbkl0ZW1UeXBlPiBy
ZXN1bHQ7CiAgICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvdXJjZS5zaXpl
KCkpOwogICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBzb3VyY2UpCi0gICAgICAgICAgICByZXN1
bHQudW5jaGVja2VkQXBwZW5kKHRyYW5zZm9ybWVyKHN0ZDo6Zm9yd2FyZDxTb3VyY2VJdGVtVHlw
ZT4oaXRlbSkpKTsKKyAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQobWFwRnVuY3Rp
b24oV1RGTW92ZShpdGVtKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIH07CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFRyYW5zZm9ybWVyLCB0eXBlbmFtZSBWZWN0b3JUeXBlPgotVmVj
dG9yPHR5cGVuYW1lIE1hcHBlcjxUcmFuc2Zvcm1lciwgVmVjdG9yVHlwZT46OkRlc3RpbmF0aW9u
SXRlbVR5cGU+IG1hcChWZWN0b3JUeXBlJiYgc291cmNlLCBUcmFuc2Zvcm1lciYmIHRyYW5zZm9y
bWVyKQordGVtcGxhdGU8dHlwZW5hbWUgTWFwRnVuY3Rpb24sIHR5cGVuYW1lIFNvdXJjZVR5cGU+
CitWZWN0b3I8dHlwZW5hbWUgTWFwcGVyPE1hcEZ1bmN0aW9uLCBTb3VyY2VUeXBlPjo6RGVzdGlu
YXRpb25JdGVtVHlwZT4gbWFwKFNvdXJjZVR5cGUmJiBzb3VyY2UsIE1hcEZ1bmN0aW9uJiYgbWFw
RnVuY3Rpb24pCiB7Ci0gICAgcmV0dXJuIE1hcHBlcjxUcmFuc2Zvcm1lciwgVmVjdG9yVHlwZT46
Om1hcChzdGQ6OmZvcndhcmQ8VmVjdG9yVHlwZT4oc291cmNlKSwgc3RkOjpmb3J3YXJkPFRyYW5z
Zm9ybWVyPih0cmFuc2Zvcm1lcikpOworICAgIHJldHVybiBNYXBwZXI8TWFwRnVuY3Rpb24sIFNv
dXJjZVR5cGU+OjptYXAoc3RkOjpmb3J3YXJkPFNvdXJjZVR5cGU+KHNvdXJjZSksIHN0ZDo6Zm9y
d2FyZDxNYXBGdW5jdGlvbj4obWFwRnVuY3Rpb24pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcAppbmRleCBkMDhjM2YxZjE2NWRkNGIxMGFkNzdkMjUzODdiMjc4OTgwYmM0
ZmRhLi5kMmIwNGZmZDAyY2Q1ZjJiNDRmNmM1ZTE2NDkyODEyZmM1ZmE5NzJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKQEAgLTMyNywxNSArMzI3LDExIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnN0
b3BEZWZlcnJpbmdFdmVudHMoKQogCiBWZWN0b3I8QXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291
cmNlSW5mbz4gQXBwbGljYXRpb25DYWNoZUhvc3Q6OnJlc291cmNlTGlzdCgpCiB7Ci0gICAgVmVj
dG9yPFJlc291cmNlSW5mbz4gcmVzdWx0OwotCiAgICAgYXV0byogY2FjaGUgPSBhcHBsaWNhdGlv
bkNhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSB8fCAhY2FjaGUtPmlzQ29tcGxldGUoKSkKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNh
Y2hlLT5yZXNvdXJjZXMoKS5zaXplKCkpOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgZm9y
IChhdXRvJiB1cmxBbmRSZXNvdXJjZSA6IGNhY2hlLT5yZXNvdXJjZXMoKSkgeworICAgIHJldHVy
biBXVEY6Om1hcChjYWNoZS0+cmVzb3VyY2VzKCksIFtdIChhdXRvJiB1cmxBbmRSZXNvdXJjZSkg
LT4gQXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbyB7CiAgICAgICAgIEFTU0VSVCh1
cmxBbmRSZXNvdXJjZS52YWx1ZSk7CiAgICAgICAgIGF1dG8mIHJlc291cmNlID0gKnVybEFuZFJl
c291cmNlLnZhbHVlOwogCkBAIC0zNDYsMTAgKzM0Miw4IEBAIFZlY3RvcjxBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6UmVzb3VyY2VJbmZvPiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6cmVzb3VyY2VMaXN0
KCkKICAgICAgICAgYm9vbCBpc0ZvcmVpZ24gPSB0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291
cmNlOjpGb3JlaWduOwogICAgICAgICBib29sIGlzRmFsbGJhY2sgPSB0eXBlICYgQXBwbGljYXRp
b25DYWNoZVJlc291cmNlOjpGYWxsYmFjazsKIAotICAgICAgICByZXN1bHQudW5jaGVja2VkQXBw
ZW5kKHsgcmVzb3VyY2UudXJsKCksIGlzTWFzdGVyLCBpc01hbmlmZXN0LCBpc0ZhbGxiYWNrLCBp
c0ZvcmVpZ24sIGlzRXhwbGljaXQsIHJlc291cmNlLmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKSB9
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4geyByZXNvdXJj
ZS51cmwoKSwgaXNNYXN0ZXIsIGlzTWFuaWZlc3QsIGlzRmFsbGJhY2ssIGlzRm9yZWlnbiwgaXNF
eHBsaWNpdCwgcmVzb3VyY2UuZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpIH07CisgICAgfSk7CiB9
CiAKIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8gQXBwbGljYXRpb25DYWNoZUhvc3Q6
OmFwcGxpY2F0aW9uQ2FjaGVJbmZvKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBj
YjE2Mzk4NmM4MzZiNTVkMDhlNWQzODhhZGE4OTliMDMxYTkzZTNiLi41ODM1M2ZkZmRiYzc0MGU2
MGEyYTA5YzQ2NTM3NzA3YzZhNDg0MzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBA
IC0yOTcsMTAgKzI5Nyw5IEBAIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaEFsbFBlbmRpbmdVbmxv
YWRFdmVudHMoKQogICAgIGlmIChhbHJlYWR5RGlzcGF0Y2hlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgVmVjdG9yPFJlZjxET01XaW5kb3c+PiB3aW5kb3dzOwotICAgIHdpbmRvd3MucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzZXQuc2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIGtleVZhbHVlIDog
c2V0KQotICAgICAgICB3aW5kb3dzLnVuY2hlY2tlZEFwcGVuZCgqa2V5VmFsdWUua2V5KTsKKyAg
ICBhdXRvIHdpbmRvd3MgPSBXVEY6Om1hcChzZXQsIFtdIChhdXRvJiBrZXlWYWx1ZSkgeworICAg
ICAgICByZXR1cm4gUmVmPERPTVdpbmRvdz4oKihrZXlWYWx1ZS5rZXkpKTsKKyAgICB9KTsKIAog
ICAgIGZvciAoYXV0byYgd2luZG93IDogd2luZG93cykgewogICAgICAgICBpZiAoIXNldC5jb250
YWlucyh3aW5kb3cucHRyKCkpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDg3MjA4YzZiZWRlNmUwNWU5MzM2NTFmZjQ0ODAwMDEyMzVjOTBjNjQu
LjZmOTY0MjNjNTdkM2VkZGViNDA4NmE4ZWY0YTY3MWI0YmQ4N2U0MWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
Ny0wOS0xNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
b3cgV1RGOjptYXAgdG8gdXNlIGFueSBjbGFzcyB0aGF0IGlzIGl0ZXJhYmxlIGFuZCBoYXMgYSBz
aXplIGdldHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc3MDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisKIDIwMTctMDktMTUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgUHJvdmlkZSBtZWNoYW5pc20gdG8gaW1tZWRpYXRlbHkgZW5k
IHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3Iu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAppbmRleCAyNzIw
MGRiMzFmMDJjY2QyM2E4NDkyZWIyYzg3ZjkyYjVlZjE2ODEwLi5iYzM1MjViM2FmZWI3YjRkMGEx
OTI3ZjEyODlmZTliN2YyNDVjYjgyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9WZWN0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Zl
Y3Rvci5jcHAKQEAgLTI2LDggKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNs
dWRlICJNb3ZlT25seS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtNzI2LDQgKzcyOCw1MSBAQCBURVNUKFdURl9W
ZWN0b3IsIE1hcExhbWJkYU1vdmUpCiAgICAgRVhQRUNUX0VRKDVVLCBtYXBwZWRbMl0udmFsdWUo
KSk7CiB9CiAKK1RFU1QoV1RGX1ZlY3RvciwgTWFwRnJvbUhhc2hNYXApCit7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gbWFwOworICAgIG1hcC5zZXQoU3RyaW5nIHsgImsxIiB9LCBTdHJp
bmcgeyAidjEiIH0pOworICAgIG1hcC5zZXQoU3RyaW5nIHsgImsyIiB9LCBTdHJpbmcgeyAidjIi
IH0pOworICAgIG1hcC5zZXQoU3RyaW5nIHsgImszIiB9LCBTdHJpbmcgeyAidjMiIH0pOworCisg
ICAgYXV0byBtYXBwZWQgPSBXVEY6Om1hcChtYXAsIFsmXSAoS2V5VmFsdWVQYWlyPFN0cmluZywg
U3RyaW5nPiYgcGFpcikgLT4gU3RyaW5nIHsKKyAgICAgICAgcmV0dXJuIHBhaXIudmFsdWU7Cisg
ICAgfSk7CisgICAgc3RkOjpzb3J0KG1hcHBlZC5iZWdpbigpLCBtYXBwZWQuZW5kKCksIFdURjo6
Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKTsKKworICAgIEVYUEVDVF9FUSgzVSwgbWFwcGVkLnNp
emUoKSk7CisgICAgRVhQRUNUX1RSVUUobWFwcGVkWzBdID09ICJ2MSIpOworICAgIEVYUEVDVF9U
UlVFKG1hcHBlZFsxXSA9PSAidjIiKTsKKyAgICBFWFBFQ1RfVFJVRShtYXBwZWRbMl0gPT0gInYz
Iik7CisKKyAgICBtYXBwZWQgPSBXVEY6Om1hcChtYXAsIFsmXSAoY29uc3QgYXV0byYgcGFpcikg
LT4gU3RyaW5nIHsKKyAgICAgICAgcmV0dXJuIHBhaXIua2V5OworICAgIH0pOworICAgIHN0ZDo6
c29ydChtYXBwZWQuYmVnaW4oKSwgbWFwcGVkLmVuZCgpLCBXVEY6OmNvZGVQb2ludENvbXBhcmVM
ZXNzVGhhbik7CisKKyAgICBFWFBFQ1RfRVEoM1UsIG1hcHBlZC5zaXplKCkpOworICAgIEVYUEVD
VF9UUlVFKG1hcHBlZFswXSA9PSAiazEiKTsKKyAgICBFWFBFQ1RfVFJVRShtYXBwZWRbMV0gPT0g
ImsyIik7CisgICAgRVhQRUNUX1RSVUUobWFwcGVkWzJdID09ICJrMyIpOworCisgICAgbWFwcGVk
ID0gV1RGOjptYXAoV1RGTW92ZShtYXApLCBbJl0gKEtleVZhbHVlUGFpcjxTdHJpbmcsIFN0cmlu
Zz4mJiBwYWlyKSAtPiBTdHJpbmcgeworICAgICAgICByZXR1cm4gV1RGTW92ZShwYWlyLnZhbHVl
KTsKKyAgICB9KTsKKyAgICBzdGQ6OnNvcnQobWFwcGVkLmJlZ2luKCksIG1hcHBlZC5lbmQoKSwg
V1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOworCisgICAgRVhQRUNUX0VRKDNVLCBtYXBw
ZWQuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShtYXBwZWRbMF0gPT0gInYxIik7CisgICAgRVhQ
RUNUX1RSVUUobWFwcGVkWzFdID09ICJ2MiIpOworICAgIEVYUEVDVF9UUlVFKG1hcHBlZFsyXSA9
PSAidjMiKTsKKworICAgIEVYUEVDVF9UUlVFKG1hcC5jb250YWlucygiazEiKSk7CisgICAgRVhQ
RUNUX1RSVUUobWFwLmNvbnRhaW5zKCJrMiIpKTsKKyAgICBFWFBFQ1RfVFJVRShtYXAuY29udGFp
bnMoImszIikpOworCisgICAgRVhQRUNUX1RSVUUobWFwLmdldCgiazEiKS5pc051bGwoKSk7Cisg
ICAgRVhQRUNUX1RSVUUobWFwLmdldCgiazIiKS5pc051bGwoKSk7CisgICAgRVhQRUNUX1RSVUUo
bWFwLmdldCgiazMiKS5pc051bGwoKSk7CisKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321094</attachid>
            <date>2017-09-18 08:43:57 -0700</date>
            <delta_ts>2017-09-19 16:27:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177026-20170918084357.patch</filename>
            <type>text/plain</type>
            <size>10405</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmZjBkOTg1M2RiMWUxZGIzNzEyMDFj
NzQ3NmVhYzAyM2ExZTY0MTAuLmUyZjQ2ZGRiOWY0MjhjMWMyYjgxM2NiYzA3YmY4YjRjNmNjZjE4
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDktMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdURjo6bWFwIHRvIHVzZSBhbnkgY2xhc3Mg
dGhhdCBpcyBpdGVyYWJsZSBhbmQgaGFzIGEgc2l6ZSBnZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzAyNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIENvbXB1dGluZyB0aGUgSXRlbSB0eXBlIGdpdmVu
IHRvIHRoZSBsYW1iZGEgdXNpbmcgdGhlIGl0ZXJhdG9yIGluc3RlYWQgb2YgVmFsdWVUeXBlIHdo
aWNoIGlzIHNwZWNpZmljIHRvIFZlY3Rvci4KKyAgICAgICAgQWRkaW5nIHRoZSBwb3NzaWJpbGl0
eSB0byBwYXNzIGEgbm9uIGNvbnN0IGNvbnRhaW5lciByZWZlcmVuY2UgYW5kIGEgbGFtYmRhIHRh
a2luZyBub24gY29uc3QgcmVmZXJlbmNlcyBhcyB3ZWxsLiAKKworICAgICAgICAqIHd0Zi9WZWN0
b3IuaDoKKyAgICAgICAgKFdURjo6TWFwRnVuY3Rpb25JbnNwZWN0b3I6OmFjY2VwdHNSZWZlcmVu
Y2UpOgorICAgICAgICAoV1RGOjpNYXBwZXI6Om1hcCk6CisgICAgICAgIChXVEY6Om1hcCk6CisK
IDIwMTctMDktMTUgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFdURjogdXNlIEZvcndhcmQuaCB3aGVuIGFwcHJvcHJpYXRlIGluc3RlYWQgb2YgVmVjdG9yLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkOGEyM2IwZDVlNjA0OTRjMDgwMzUxNTViYzZhZTIxMTEzNDE4ZDRhLi5l
OGQyZDY3ZTdlMTc5MzhiOWJlMTMyNjU5YjA0ODMxNTA4MjEzZmQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTctMDktMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIEFsbG93IFdURjo6bWFwIHRvIHVzZSBhbnkgY2xhc3MgdGhhdCBpcyBpdGVy
YWJsZSBhbmQgaGFzIGEgc2l6ZSBnZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NzAyNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlvci4KKyAgICAgICAgVXNpbmcgV1RG
OjptYXAgdG8gZ28gZnJvbSBtYXBzIHRvIHZlY3RvcnMuCisKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUhvc3Q6OnJlc291cmNlTGlzdCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNwYXRjaEFsbFBlbmRpbmdVbmxv
YWRFdmVudHMpOgorCiAyMDE3LTA5LTE3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbSGFyZmJ1enpdIFRlc3QgZmFzdC90ZXh0L2NvbXBsZXgt
dGV4dC1zZWxlY3Rpb24uaHRtbCBpcyBmYWlsaW5nIHNpbmNlIHIyMjIwOTAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXgg
MmFlYmU3MThlY2E1ZTVlMGMyYmFhOTM2NDU4OGI3OWM0MmE4YjIxYS4uZWZhZGNmMmEwNDgyNGIz
NDMzOThlMTYzYjliNzY0MWQ5NGQ3YWZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVj
dG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKQEAgLTE1NjIsMzQgKzE1NjIsNDkg
QEAgc2l6ZV90IHJlbW92ZVJlcGVhdGVkRWxlbWVudHMoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXIsIG1pbkNhcGEKICAgICByZXR1cm4gcmVtb3ZlUmVwZWF0ZWRFbGVt
ZW50cyh2ZWN0b3IsIFtdIChUJiBhLCBUJiBiKSB7IHJldHVybiBhID09IGI7IH0pOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2Zvcm1lciwgdHlwZW5hbWUgU291cmNlVHlwZT4gc3RydWN0
IE1hcHBlciB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBNYXBGdW5jdGlvbiwgdHlwZW5hbWUgU291cmNl
VHlwZT4KK3N0cnVjdCBNYXBGdW5jdGlvbkluc3BlY3RvciB7CiAgICAgdXNpbmcgUmVhbFNvdXJj
ZVR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8U291cmNlVHlwZT46OnR5cGU7
Ci0gICAgdXNpbmcgU291cmNlSXRlbVR5cGUgPSB0eXBlbmFtZSBSZWFsU291cmNlVHlwZTo6VmFs
dWVUeXBlOwotICAgIHVzaW5nIERlc3RpbmF0aW9uSXRlbVR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJl
c3VsdF9vZjxUcmFuc2Zvcm1lcihTb3VyY2VJdGVtVHlwZSYmKT46OnR5cGU7CisgICAgdXNpbmcg
SXRlcmF0b3JUeXBlID0gZGVjbHR5cGUoc3RkOjpiZWdpbihzdGQ6OmRlY2x2YWw8UmVhbFNvdXJj
ZVR5cGU+KCkpKTsKKyAgICB1c2luZyBTb3VyY2VJdGVtVHlwZSA9IHR5cGVuYW1lIHN0ZDo6aXRl
cmF0b3JfdHJhaXRzPEl0ZXJhdG9yVHlwZT46OnZhbHVlX3R5cGU7Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBNYXBGdW5jdGlvbiwgdHlwZW5hbWUgU291cmNlVHlwZSwgdHlwZW5hbWUgRW5hYmxl
ID0gdm9pZD4KK3N0cnVjdCBNYXBwZXIgeworICAgIHVzaW5nIFNvdXJjZUl0ZW1UeXBlID0gdHlw
ZW5hbWUgTWFwRnVuY3Rpb25JbnNwZWN0b3I8TWFwRnVuY3Rpb24sIFNvdXJjZVR5cGU+OjpTb3Vy
Y2VJdGVtVHlwZTsKKyAgICB1c2luZyBEZXN0aW5hdGlvbkl0ZW1UeXBlID0gdHlwZW5hbWUgc3Rk
OjpyZXN1bHRfb2Y8TWFwRnVuY3Rpb24oU291cmNlSXRlbVR5cGUmKT46OnR5cGU7CiAKLSAgICBz
dGF0aWMgVmVjdG9yPERlc3RpbmF0aW9uSXRlbVR5cGU+IG1hcChjb25zdCBSZWFsU291cmNlVHlw
ZSYgc291cmNlLCBjb25zdCBUcmFuc2Zvcm1lciYgdHJhbnNmb3JtZXIpCisgICAgc3RhdGljIFZl
Y3RvcjxEZXN0aW5hdGlvbkl0ZW1UeXBlPiBtYXAoU291cmNlVHlwZSBzb3VyY2UsIGNvbnN0IE1h
cEZ1bmN0aW9uJiBtYXBGdW5jdGlvbikKICAgICB7CiAgICAgICAgIFZlY3RvcjxEZXN0aW5hdGlv
bkl0ZW1UeXBlPiByZXN1bHQ7CisgICAgICAgIC8vIEZJWE1FOiBVc2Ugc3RkOjpzaXplIHdoZW4g
YXZhaWxhYmxlIG9uIGFsbCBjb21waWxlcnMuCiAgICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHNvdXJjZS5zaXplKCkpOwogICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBzb3Vy
Y2UpCi0gICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKHRyYW5zZm9ybWVyKGl0ZW0p
KTsKKyAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQobWFwRnVuY3Rpb24oaXRlbSkp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1l
IE1hcEZ1bmN0aW9uLCB0eXBlbmFtZSBTb3VyY2VUeXBlPgorc3RydWN0IE1hcHBlcjxNYXBGdW5j
dGlvbiwgU291cmNlVHlwZSwgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19ydmFsdWVf
cmVmZXJlbmNlPFNvdXJjZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4geworICAgIHVzaW5nIFNvdXJj
ZUl0ZW1UeXBlID0gdHlwZW5hbWUgTWFwRnVuY3Rpb25JbnNwZWN0b3I8TWFwRnVuY3Rpb24sIFNv
dXJjZVR5cGU+OjpTb3VyY2VJdGVtVHlwZTsKKyAgICB1c2luZyBEZXN0aW5hdGlvbkl0ZW1UeXBl
ID0gdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8TWFwRnVuY3Rpb24oU291cmNlSXRlbVR5cGUmJik+
Ojp0eXBlOwogCi0gICAgc3RhdGljIFZlY3RvcjxEZXN0aW5hdGlvbkl0ZW1UeXBlPiBtYXAoUmVh
bFNvdXJjZVR5cGUmJiBzb3VyY2UsIGNvbnN0IFRyYW5zZm9ybWVyJiB0cmFuc2Zvcm1lcikKKyAg
ICBzdGF0aWMgVmVjdG9yPERlc3RpbmF0aW9uSXRlbVR5cGU+IG1hcChTb3VyY2VUeXBlIHNvdXJj
ZSwgY29uc3QgTWFwRnVuY3Rpb24mIG1hcEZ1bmN0aW9uKQogICAgIHsKICAgICAgICAgVmVjdG9y
PERlc3RpbmF0aW9uSXRlbVR5cGU+IHJlc3VsdDsKKyAgICAgICAgLy8gRklYTUU6IFVzZSBzdGQ6
OnNpemUgd2hlbiBhdmFpbGFibGUgb24gYWxsIGNvbXBpbGVycy4KICAgICAgICAgcmVzdWx0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoc291cmNlLnNpemUoKSk7CiAgICAgICAgIGZvciAoYXV0byYg
aXRlbSA6IHNvdXJjZSkKLSAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQodHJhbnNm
b3JtZXIoc3RkOjpmb3J3YXJkPFNvdXJjZUl0ZW1UeXBlPihpdGVtKSkpOworICAgICAgICAgICAg
cmVzdWx0LnVuY2hlY2tlZEFwcGVuZChtYXBGdW5jdGlvbihXVEZNb3ZlKGl0ZW0pKSk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNm
b3JtZXIsIHR5cGVuYW1lIFZlY3RvclR5cGU+Ci1WZWN0b3I8dHlwZW5hbWUgTWFwcGVyPFRyYW5z
Zm9ybWVyLCBWZWN0b3JUeXBlPjo6RGVzdGluYXRpb25JdGVtVHlwZT4gbWFwKFZlY3RvclR5cGUm
JiBzb3VyY2UsIFRyYW5zZm9ybWVyJiYgdHJhbnNmb3JtZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBN
YXBGdW5jdGlvbiwgdHlwZW5hbWUgU291cmNlVHlwZT4KK1ZlY3Rvcjx0eXBlbmFtZSBNYXBwZXI8
TWFwRnVuY3Rpb24sIFNvdXJjZVR5cGU+OjpEZXN0aW5hdGlvbkl0ZW1UeXBlPiBtYXAoU291cmNl
VHlwZSYmIHNvdXJjZSwgTWFwRnVuY3Rpb24mJiBtYXBGdW5jdGlvbikKIHsKLSAgICByZXR1cm4g
TWFwcGVyPFRyYW5zZm9ybWVyLCBWZWN0b3JUeXBlPjo6bWFwKHN0ZDo6Zm9yd2FyZDxWZWN0b3JU
eXBlPihzb3VyY2UpLCBzdGQ6OmZvcndhcmQ8VHJhbnNmb3JtZXI+KHRyYW5zZm9ybWVyKSk7Cisg
ICAgcmV0dXJuIE1hcHBlcjxNYXBGdW5jdGlvbiwgU291cmNlVHlwZT46Om1hcChzdGQ6OmZvcndh
cmQ8U291cmNlVHlwZT4oc291cmNlKSwgc3RkOjpmb3J3YXJkPE1hcEZ1bmN0aW9uPihtYXBGdW5j
dGlvbikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IGQwOGMz
ZjFmMTY1ZGQ0YjEwYWQ3N2QyNTM4N2IyNzg5ODBiYzRmZGEuLmQyYjA0ZmZkMDJjZDVmMmI0NGY2
YzVlMTY0OTI4MTJmYzVmYTk3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMzI3LDE1ICszMjcsMTEg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cygpCiAKIFZl
Y3RvcjxBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvPiBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6cmVzb3VyY2VMaXN0KCkKIHsKLSAgICBWZWN0b3I8UmVzb3VyY2VJbmZvPiByZXN1bHQ7
Ci0KICAgICBhdXRvKiBjYWNoZSA9IGFwcGxpY2F0aW9uQ2FjaGUoKTsKICAgICBpZiAoIWNhY2hl
IHx8ICFjYWNoZS0+aXNDb21wbGV0ZSgpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAg
cmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FjaGUtPnJlc291cmNlcygpLnNpemUoKSk7
CisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBmb3IgKGF1dG8mIHVybEFuZFJlc291cmNlIDog
Y2FjaGUtPnJlc291cmNlcygpKSB7CisgICAgcmV0dXJuIFdURjo6bWFwKGNhY2hlLT5yZXNvdXJj
ZXMoKSwgW10gKGF1dG8mIHVybEFuZFJlc291cmNlKSAtPiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
UmVzb3VyY2VJbmZvIHsKICAgICAgICAgQVNTRVJUKHVybEFuZFJlc291cmNlLnZhbHVlKTsKICAg
ICAgICAgYXV0byYgcmVzb3VyY2UgPSAqdXJsQW5kUmVzb3VyY2UudmFsdWU7CiAKQEAgLTM0Niwx
MCArMzQyLDggQEAgVmVjdG9yPEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8+IEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpyZXNvdXJjZUxpc3QoKQogICAgICAgICBib29sIGlzRm9yZWln
biA9IHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZvcmVpZ247CiAgICAgICAgIGJv
b2wgaXNGYWxsYmFjayA9IHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNr
OwogCi0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoeyByZXNvdXJjZS51cmwoKSwgaXNN
YXN0ZXIsIGlzTWFuaWZlc3QsIGlzRmFsbGJhY2ssIGlzRm9yZWlnbiwgaXNFeHBsaWNpdCwgcmVz
b3VyY2UuZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpIH0pOwotICAgIH0KLQotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICAgIHJldHVybiB7IHJlc291cmNlLnVybCgpLCBpc01hc3RlciwgaXNNYW5p
ZmVzdCwgaXNGYWxsYmFjaywgaXNGb3JlaWduLCBpc0V4cGxpY2l0LCByZXNvdXJjZS5lc3RpbWF0
ZWRTaXplSW5TdG9yYWdlKCkgfTsKKyAgICB9KTsKIH0KIAogQXBwbGljYXRpb25DYWNoZUhvc3Q6
OkNhY2hlSW5mbyBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6YXBwbGljYXRpb25DYWNoZUluZm8oKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGNiMTYzOTg2YzgzNmI1NWQwOGU1ZDM4OGFk
YTg5OWIwMzFhOTNlM2IuLjU4MzUzZmRmZGJjNzQwZTYwYTJhMDljNDY1Mzc3MDdjNmE0ODQzMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTI5NywxMCArMjk3LDkgQEAgdm9pZCBE
T01XaW5kb3c6OmRpc3BhdGNoQWxsUGVuZGluZ1VubG9hZEV2ZW50cygpCiAgICAgaWYgKGFscmVh
ZHlEaXNwYXRjaGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8UmVmPERPTVdpbmRv
dz4+IHdpbmRvd3M7Ci0gICAgd2luZG93cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNldC5zaXpl
KCkpOwotICAgIGZvciAoYXV0byYga2V5VmFsdWUgOiBzZXQpCi0gICAgICAgIHdpbmRvd3MudW5j
aGVja2VkQXBwZW5kKCprZXlWYWx1ZS5rZXkpOworICAgIGF1dG8gd2luZG93cyA9IFdURjo6bWFw
KHNldCwgW10gKGF1dG8mIGtleVZhbHVlKSB7CisgICAgICAgIHJldHVybiBSZWY8RE9NV2luZG93
PigqKGtleVZhbHVlLmtleSkpOworICAgIH0pOwogCiAgICAgZm9yIChhdXRvJiB3aW5kb3cgOiB3
aW5kb3dzKSB7CiAgICAgICAgIGlmICghc2V0LmNvbnRhaW5zKHdpbmRvdy5wdHIoKSkpCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTJjYWRjNDc2
ZjYxMDhhNDE3NGFlMDFiZjAwZGQ0MzIzZGFjNDZhOC4uZjE5MzQ2ZWMwYTNlZjE5NTQzMDMzZDRh
YjRlY2RiOWQ0OTVkOGZhNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA5LTE4ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBXVEY6Om1hcCB0byB1c2UgYW55IGNs
YXNzIHRoYXQgaXMgaXRlcmFibGUgYW5kIGhhcyBhIHNpemUgZ2V0dGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzcwMjYKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1ZlY3Rvci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0wOS0x
NyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFdT
TCBuZWVkcyBmbG9hdCBhbmQgZG91YmxlIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9WZWN0b3IuY3BwCmluZGV4IDI3MjAwZGIzMWYwMmNjZDIzYTg0OTJlYjJjODdmOTJiNWVm
MTY4MTAuLmJjMzUyNWIzYWZlYjdiNGQwYTE5MjdmMTI4OWZlOWI3ZjI0NWNiODIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcApAQCAtMjYsOCArMjYsMTAgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIk1vdmVPbmx5LmgiCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC03
MjYsNCArNzI4LDUxIEBAIFRFU1QoV1RGX1ZlY3RvciwgTWFwTGFtYmRhTW92ZSkKICAgICBFWFBF
Q1RfRVEoNVUsIG1hcHBlZFsyXS52YWx1ZSgpKTsKIH0KIAorVEVTVChXVEZfVmVjdG9yLCBNYXBG
cm9tSGFzaE1hcCkKK3sKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtYXA7CisgICAgbWFw
LnNldChTdHJpbmcgeyAiazEiIH0sIFN0cmluZyB7ICJ2MSIgfSk7CisgICAgbWFwLnNldChTdHJp
bmcgeyAiazIiIH0sIFN0cmluZyB7ICJ2MiIgfSk7CisgICAgbWFwLnNldChTdHJpbmcgeyAiazMi
IH0sIFN0cmluZyB7ICJ2MyIgfSk7CisKKyAgICBhdXRvIG1hcHBlZCA9IFdURjo6bWFwKG1hcCwg
WyZdIChLZXlWYWx1ZVBhaXI8U3RyaW5nLCBTdHJpbmc+JiBwYWlyKSAtPiBTdHJpbmcgeworICAg
ICAgICByZXR1cm4gcGFpci52YWx1ZTsKKyAgICB9KTsKKyAgICBzdGQ6OnNvcnQobWFwcGVkLmJl
Z2luKCksIG1hcHBlZC5lbmQoKSwgV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOworCisg
ICAgRVhQRUNUX0VRKDNVLCBtYXBwZWQuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShtYXBwZWRb
MF0gPT0gInYxIik7CisgICAgRVhQRUNUX1RSVUUobWFwcGVkWzFdID09ICJ2MiIpOworICAgIEVY
UEVDVF9UUlVFKG1hcHBlZFsyXSA9PSAidjMiKTsKKworICAgIG1hcHBlZCA9IFdURjo6bWFwKG1h
cCwgWyZdIChjb25zdCBhdXRvJiBwYWlyKSAtPiBTdHJpbmcgeworICAgICAgICByZXR1cm4gcGFp
ci5rZXk7CisgICAgfSk7CisgICAgc3RkOjpzb3J0KG1hcHBlZC5iZWdpbigpLCBtYXBwZWQuZW5k
KCksIFdURjo6Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKTsKKworICAgIEVYUEVDVF9FUSgzVSwg
bWFwcGVkLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUobWFwcGVkWzBdID09ICJrMSIpOworICAg
IEVYUEVDVF9UUlVFKG1hcHBlZFsxXSA9PSAiazIiKTsKKyAgICBFWFBFQ1RfVFJVRShtYXBwZWRb
Ml0gPT0gImszIik7CisKKyAgICBtYXBwZWQgPSBXVEY6Om1hcChXVEZNb3ZlKG1hcCksIFsmXSAo
S2V5VmFsdWVQYWlyPFN0cmluZywgU3RyaW5nPiYmIHBhaXIpIC0+IFN0cmluZyB7CisgICAgICAg
IHJldHVybiBXVEZNb3ZlKHBhaXIudmFsdWUpOworICAgIH0pOworICAgIHN0ZDo6c29ydChtYXBw
ZWQuYmVnaW4oKSwgbWFwcGVkLmVuZCgpLCBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbik7
CisKKyAgICBFWFBFQ1RfRVEoM1UsIG1hcHBlZC5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKG1h
cHBlZFswXSA9PSAidjEiKTsKKyAgICBFWFBFQ1RfVFJVRShtYXBwZWRbMV0gPT0gInYyIik7Cisg
ICAgRVhQRUNUX1RSVUUobWFwcGVkWzJdID09ICJ2MyIpOworCisgICAgRVhQRUNUX1RSVUUobWFw
LmNvbnRhaW5zKCJrMSIpKTsKKyAgICBFWFBFQ1RfVFJVRShtYXAuY29udGFpbnMoImsyIikpOwor
ICAgIEVYUEVDVF9UUlVFKG1hcC5jb250YWlucygiazMiKSk7CisKKyAgICBFWFBFQ1RfVFJVRSht
YXAuZ2V0KCJrMSIpLmlzTnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShtYXAuZ2V0KCJrMiIpLmlz
TnVsbCgpKTsKKyAgICBFWFBFQ1RfVFJVRShtYXAuZ2V0KCJrMyIpLmlzTnVsbCgpKTsKKworfQor
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321263</attachid>
            <date>2017-09-19 16:27:29 -0700</date>
            <delta_ts>2017-09-19 17:57:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-177026-20170919162728.patch</filename>
            <type>text/plain</type>
            <size>10455</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDkzYmUzYTQwOTFmMDcxMjA5NTgxYzFm
NmRiOGNmOTdiZDM4MDc0YjAuLmJlMGU4NzE2NmViMjE5MWFmMGQyNjdlOGZlNGQzODhjMGUxZmIy
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDktMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IFdURjo6bWFwIHRvIHVzZSBhbnkgY2xhc3Mg
dGhhdCBpcyBpdGVyYWJsZSBhbmQgaGFzIGEgc2l6ZSBnZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzAyNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIENvbXB1dGluZyB0aGUgSXRlbSB0eXBlIGdpdmVu
IHRvIHRoZSBsYW1iZGEgdXNpbmcgdGhlIGl0ZXJhdG9yIGluc3RlYWQgb2YgVmFsdWVUeXBlIHdo
aWNoIGlzIHNwZWNpZmljIHRvIFZlY3Rvci4KKyAgICAgICAgQWRkaW5nIHRoZSBwb3NzaWJpbGl0
eSB0byBwYXNzIGEgbm9uIGNvbnN0IGNvbnRhaW5lciByZWZlcmVuY2UgYW5kIGEgbGFtYmRhIHRh
a2luZyBub24gY29uc3QgcmVmZXJlbmNlcyBhcyB3ZWxsLiAKKworICAgICAgICAqIHd0Zi9WZWN0
b3IuaDoKKyAgICAgICAgKFdURjo6TWFwRnVuY3Rpb25JbnNwZWN0b3I6OmFjY2VwdHNSZWZlcmVu
Y2UpOgorICAgICAgICAoV1RGOjpNYXBwZXI6Om1hcCk6CisgICAgICAgIChXVEY6Om1hcCk6CisK
IDIwMTctMDktMTggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtD
b2NvYV0gVXBzdHJlYW0gc2FuZGJveC1yZWxhdGVkIFdlYktpdFN5c3RlbUludGVyZmFjZSBmdW5j
dGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA1NzdjYzcwYmM0ODZiZTFkN2Q1YmQ0MDA2M2FhNTk1OTU4ZjQw
YWE1Li45MzNhNDUyMzkxZTNmYjMyODk2ODg5NTQ2OTVmYTMwODA0MWFmMDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDktMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIEFsbG93IFdURjo6bWFwIHRvIHVzZSBhbnkgY2xhc3MgdGhhdCBp
cyBpdGVyYWJsZSBhbmQgaGFzIGEgc2l6ZSBnZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzAyNgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBiZWhhdmlvci4KKyAgICAgICAgVXNp
bmcgV1RGOjptYXAgdG8gZ28gZnJvbSBtYXBzIHRvIHZlY3RvcnMuCisKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZUhvc3Q6OnJlc291cmNlTGlzdCk6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNwYXRjaEFsbFBlbmRp
bmdVbmxvYWRFdmVudHMpOgorCiAyMDE3LTA5LTE5ICBOYWVsIE91ZWRyYW9nbyAgPG5hZWwub3Vl
ZHJhb2dvQGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbR1RLXSBUaGUgYmluZGluZyBjb2RlIG9m
IE1lZGlhIFNvdXJjZSBFeHRlbnNpb24gb2YgQXVkaW9UcmFjaywgVmlkZW9UcmFjayBhbmQgVGV4
dFRyYWNrIGlzIG5vdCBnZW5lcmF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rv
ci5oIGIvU291cmNlL1dURi93dGYvVmVjdG9yLmgKaW5kZXggMmFlYmU3MThlY2E1ZTVlMGMyYmFh
OTM2NDU4OGI3OWM0MmE4YjIxYS4uNDg3NTA1MTkxYmQ5M2VjODI5YjZjNzM0MmMyOGNhMjgzOWEy
ODhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmVjdG9yLmgKQEAgLTE1NjIsMzQgKzE1NjIsNDkgQEAgc2l6ZV90IHJlbW92ZVJlcGVh
dGVkRWxlbWVudHMoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXIsIG1p
bkNhcGEKICAgICByZXR1cm4gcmVtb3ZlUmVwZWF0ZWRFbGVtZW50cyh2ZWN0b3IsIFtdIChUJiBh
LCBUJiBiKSB7IHJldHVybiBhID09IGI7IH0pOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmFu
c2Zvcm1lciwgdHlwZW5hbWUgU291cmNlVHlwZT4gc3RydWN0IE1hcHBlciB7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBNYXBGdW5jdGlvbiwgdHlwZW5hbWUgU291cmNlVHlwZT4KK3N0cnVjdCBNYXBGdW5j
dGlvbkluc3BlY3RvciB7CiAgICAgdXNpbmcgUmVhbFNvdXJjZVR5cGUgPSB0eXBlbmFtZSBzdGQ6
OnJlbW92ZV9yZWZlcmVuY2U8U291cmNlVHlwZT46OnR5cGU7Ci0gICAgdXNpbmcgU291cmNlSXRl
bVR5cGUgPSB0eXBlbmFtZSBSZWFsU291cmNlVHlwZTo6VmFsdWVUeXBlOwotICAgIHVzaW5nIERl
c3RpbmF0aW9uSXRlbVR5cGUgPSB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxUcmFuc2Zvcm1lcihT
b3VyY2VJdGVtVHlwZSYmKT46OnR5cGU7CisgICAgdXNpbmcgSXRlcmF0b3JUeXBlID0gZGVjbHR5
cGUoc3RkOjpiZWdpbihzdGQ6OmRlY2x2YWw8UmVhbFNvdXJjZVR5cGU+KCkpKTsKKyAgICB1c2lu
ZyBTb3VyY2VJdGVtVHlwZSA9IHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9y
VHlwZT46OnZhbHVlX3R5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBNYXBGdW5jdGlvbiwg
dHlwZW5hbWUgU291cmNlVHlwZSwgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4KK3N0cnVjdCBNYXBw
ZXIgeworICAgIHVzaW5nIFNvdXJjZUl0ZW1UeXBlID0gdHlwZW5hbWUgTWFwRnVuY3Rpb25JbnNw
ZWN0b3I8TWFwRnVuY3Rpb24sIFNvdXJjZVR5cGU+OjpTb3VyY2VJdGVtVHlwZTsKKyAgICB1c2lu
ZyBEZXN0aW5hdGlvbkl0ZW1UeXBlID0gdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8TWFwRnVuY3Rp
b24oU291cmNlSXRlbVR5cGUmKT46OnR5cGU7CiAKLSAgICBzdGF0aWMgVmVjdG9yPERlc3RpbmF0
aW9uSXRlbVR5cGU+IG1hcChjb25zdCBSZWFsU291cmNlVHlwZSYgc291cmNlLCBjb25zdCBUcmFu
c2Zvcm1lciYgdHJhbnNmb3JtZXIpCisgICAgc3RhdGljIFZlY3RvcjxEZXN0aW5hdGlvbkl0ZW1U
eXBlPiBtYXAoU291cmNlVHlwZSBzb3VyY2UsIGNvbnN0IE1hcEZ1bmN0aW9uJiBtYXBGdW5jdGlv
bikKICAgICB7CiAgICAgICAgIFZlY3RvcjxEZXN0aW5hdGlvbkl0ZW1UeXBlPiByZXN1bHQ7Cisg
ICAgICAgIC8vIEZJWE1FOiBVc2Ugc3RkOjpzaXplIHdoZW4gYXZhaWxhYmxlIG9uIGFsbCBjb21w
aWxlcnMuCiAgICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvdXJjZS5zaXpl
KCkpOwogICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBzb3VyY2UpCi0gICAgICAgICAgICByZXN1
bHQudW5jaGVja2VkQXBwZW5kKHRyYW5zZm9ybWVyKGl0ZW0pKTsKKyAgICAgICAgICAgIHJlc3Vs
dC51bmNoZWNrZWRBcHBlbmQobWFwRnVuY3Rpb24oaXRlbSkpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0eXBlbmFt
ZSBTb3VyY2VUeXBlPgorc3RydWN0IE1hcHBlcjxNYXBGdW5jdGlvbiwgU291cmNlVHlwZSwgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPFNvdXJjZVR5cGUm
Jj46OnZhbHVlPjo6dHlwZT4geworICAgIHVzaW5nIFNvdXJjZUl0ZW1UeXBlID0gdHlwZW5hbWUg
TWFwRnVuY3Rpb25JbnNwZWN0b3I8TWFwRnVuY3Rpb24sIFNvdXJjZVR5cGU+OjpTb3VyY2VJdGVt
VHlwZTsKKyAgICB1c2luZyBEZXN0aW5hdGlvbkl0ZW1UeXBlID0gdHlwZW5hbWUgc3RkOjpyZXN1
bHRfb2Y8TWFwRnVuY3Rpb24oU291cmNlSXRlbVR5cGUmJik+Ojp0eXBlOwogCi0gICAgc3RhdGlj
IFZlY3RvcjxEZXN0aW5hdGlvbkl0ZW1UeXBlPiBtYXAoUmVhbFNvdXJjZVR5cGUmJiBzb3VyY2Us
IGNvbnN0IFRyYW5zZm9ybWVyJiB0cmFuc2Zvcm1lcikKKyAgICBzdGF0aWMgVmVjdG9yPERlc3Rp
bmF0aW9uSXRlbVR5cGU+IG1hcChTb3VyY2VUeXBlJiYgc291cmNlLCBjb25zdCBNYXBGdW5jdGlv
biYgbWFwRnVuY3Rpb24pCiAgICAgewogICAgICAgICBWZWN0b3I8RGVzdGluYXRpb25JdGVtVHlw
ZT4gcmVzdWx0OworICAgICAgICAvLyBGSVhNRTogVXNlIHN0ZDo6c2l6ZSB3aGVuIGF2YWlsYWJs
ZSBvbiBhbGwgY29tcGlsZXJzLgogICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShzb3VyY2Uuc2l6ZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogc291cmNlKQotICAg
ICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZCh0cmFuc2Zvcm1lcihzdGQ6OmZvcndhcmQ8
U291cmNlSXRlbVR5cGU+KGl0ZW0pKSk7CisgICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBw
ZW5kKG1hcEZ1bmN0aW9uKFdURk1vdmUoaXRlbSkpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2Zvcm1lciwgdHlwZW5hbWUgVmVj
dG9yVHlwZT4KLVZlY3Rvcjx0eXBlbmFtZSBNYXBwZXI8VHJhbnNmb3JtZXIsIFZlY3RvclR5cGU+
OjpEZXN0aW5hdGlvbkl0ZW1UeXBlPiBtYXAoVmVjdG9yVHlwZSYmIHNvdXJjZSwgVHJhbnNmb3Jt
ZXImJiB0cmFuc2Zvcm1lcikKK3RlbXBsYXRlPHR5cGVuYW1lIE1hcEZ1bmN0aW9uLCB0eXBlbmFt
ZSBTb3VyY2VUeXBlPgorVmVjdG9yPHR5cGVuYW1lIE1hcHBlcjxNYXBGdW5jdGlvbiwgU291cmNl
VHlwZT46OkRlc3RpbmF0aW9uSXRlbVR5cGU+IG1hcChTb3VyY2VUeXBlJiYgc291cmNlLCBNYXBG
dW5jdGlvbiYmIG1hcEZ1bmN0aW9uKQogewotICAgIHJldHVybiBNYXBwZXI8VHJhbnNmb3JtZXIs
IFZlY3RvclR5cGU+OjptYXAoc3RkOjpmb3J3YXJkPFZlY3RvclR5cGU+KHNvdXJjZSksIHN0ZDo6
Zm9yd2FyZDxUcmFuc2Zvcm1lcj4odHJhbnNmb3JtZXIpKTsKKyAgICByZXR1cm4gTWFwcGVyPE1h
cEZ1bmN0aW9uLCBTb3VyY2VUeXBlPjo6bWFwKHN0ZDo6Zm9yd2FyZDxTb3VyY2VUeXBlPihzb3Vy
Y2UpLCBzdGQ6OmZvcndhcmQ8TWFwRnVuY3Rpb24+KG1hcEZ1bmN0aW9uKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggZDA4YzNmMWYxNjVkZDRiMTBhZDc3ZDI1
Mzg3YjI3ODk4MGJjNGZkYS4uZDJiMDRmZmQwMmNkNWYyYjQ0ZjZjNWUxNjQ5MjgxMmZjNWZhOTcy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCkBAIC0zMjcsMTUgKzMyNywxMSBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKCkKIAogVmVjdG9yPEFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpSZXNvdXJjZUluZm8+IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpyZXNvdXJjZUxpc3Qo
KQogewotICAgIFZlY3RvcjxSZXNvdXJjZUluZm8+IHJlc3VsdDsKLQogICAgIGF1dG8qIGNhY2hl
ID0gYXBwbGljYXRpb25DYWNoZSgpOwogICAgIGlmICghY2FjaGUgfHwgIWNhY2hlLT5pc0NvbXBs
ZXRlKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICByZXN1bHQucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShjYWNoZS0+cmVzb3VyY2VzKCkuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIGZvciAoYXV0byYgdXJsQW5kUmVzb3VyY2UgOiBjYWNoZS0+cmVzb3VyY2VzKCkp
IHsKKyAgICByZXR1cm4gV1RGOjptYXAoY2FjaGUtPnJlc291cmNlcygpLCBbXSAoYXV0byYgdXJs
QW5kUmVzb3VyY2UpIC0+IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpSZXNvdXJjZUluZm8gewogICAg
ICAgICBBU1NFUlQodXJsQW5kUmVzb3VyY2UudmFsdWUpOwogICAgICAgICBhdXRvJiByZXNvdXJj
ZSA9ICp1cmxBbmRSZXNvdXJjZS52YWx1ZTsKIApAQCAtMzQ2LDEwICszNDIsOCBAQCBWZWN0b3I8
QXBwbGljYXRpb25DYWNoZUhvc3Q6OlJlc291cmNlSW5mbz4gQXBwbGljYXRpb25DYWNoZUhvc3Q6
OnJlc291cmNlTGlzdCgpCiAgICAgICAgIGJvb2wgaXNGb3JlaWduID0gdHlwZSAmIEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6Rm9yZWlnbjsKICAgICAgICAgYm9vbCBpc0ZhbGxiYWNrID0gdHlw
ZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6RmFsbGJhY2s7CiAKLSAgICAgICAgcmVzdWx0
LnVuY2hlY2tlZEFwcGVuZCh7IHJlc291cmNlLnVybCgpLCBpc01hc3RlciwgaXNNYW5pZmVzdCwg
aXNGYWxsYmFjaywgaXNGb3JlaWduLCBpc0V4cGxpY2l0LCByZXNvdXJjZS5lc3RpbWF0ZWRTaXpl
SW5TdG9yYWdlKCkgfSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0
dXJuIHsgcmVzb3VyY2UudXJsKCksIGlzTWFzdGVyLCBpc01hbmlmZXN0LCBpc0ZhbGxiYWNrLCBp
c0ZvcmVpZ24sIGlzRXhwbGljaXQsIHJlc291cmNlLmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKSB9
OworICAgIH0pOwogfQogCiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVJbmZvIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjphcHBsaWNhdGlvbkNhY2hlSW5mbygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAKaW5kZXggY2IxNjM5ODZjODM2YjU1ZDA4ZTVkMzg4YWRhODk5YjAzMWE5M2UzYi4uNTgz
NTNmZGZkYmM3NDBlNjBhMmEwOWM0NjUzNzcwN2M2YTQ4NDMzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtMjk3LDEwICsyOTcsOSBAQCB2b2lkIERPTVdpbmRvdzo6ZGlzcGF0Y2hB
bGxQZW5kaW5nVW5sb2FkRXZlbnRzKCkKICAgICBpZiAoYWxyZWFkeURpc3BhdGNoZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxSZWY8RE9NV2luZG93Pj4gd2luZG93czsKLSAgICB3
aW5kb3dzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2V0LnNpemUoKSk7Ci0gICAgZm9yIChhdXRv
JiBrZXlWYWx1ZSA6IHNldCkKLSAgICAgICAgd2luZG93cy51bmNoZWNrZWRBcHBlbmQoKmtleVZh
bHVlLmtleSk7CisgICAgYXV0byB3aW5kb3dzID0gV1RGOjptYXAoc2V0LCBbXSAoYXV0byYga2V5
VmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIFJlZjxET01XaW5kb3c+KCooa2V5VmFsdWUua2V5KSk7
CisgICAgfSk7CiAKICAgICBmb3IgKGF1dG8mIHdpbmRvdyA6IHdpbmRvd3MpIHsKICAgICAgICAg
aWYgKCFzZXQuY29udGFpbnMod2luZG93LnB0cigpKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZTBkMjc0OTk5NzU5NTdjM2E3MjFlZGI2NDll
ZThiYTU1NjY0MWY4Li44Y2IxZDQ5MmZmZDQ5NmU1NTExYjg3MTIxMWYyMzExYzUzY2YxNTkzIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTctMDktMTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgor
CisgICAgICAgIEFsbG93IFdURjo6bWFwIHRvIHVzZSBhbnkgY2xhc3MgdGhhdCBpcyBpdGVyYWJs
ZSBhbmQgaGFzIGEgc2l6ZSBnZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NzAyNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTA5LTE4ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ2Fubm90IHB1dCB0eXBlZGVmcyBvZiB0ZW1wbGF0
ZWQgc3RydWN0cyBpbnNpZGUgc3RydWN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Zl
Y3Rvci5jcHAKaW5kZXggMjcyMDBkYjMxZjAyY2NkMjNhODQ5MmViMmM4N2Y5MmI1ZWYxNjgxMC4u
YmMzNTI1YjNhZmViN2I0ZDBhMTkyN2YxMjg5ZmU5YjdmMjQ1Y2I4MiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCkBAIC0yNiw4ICsyNiwxMCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiTW92ZU9ubHkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKQEAgLTcyNiw0ICs3
MjgsNTEgQEAgVEVTVChXVEZfVmVjdG9yLCBNYXBMYW1iZGFNb3ZlKQogICAgIEVYUEVDVF9FUSg1
VSwgbWFwcGVkWzJdLnZhbHVlKCkpOwogfQogCitURVNUKFdURl9WZWN0b3IsIE1hcEZyb21IYXNo
TWFwKQoreworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1hcDsKKyAgICBtYXAuc2V0KFN0
cmluZyB7ICJrMSIgfSwgU3RyaW5nIHsgInYxIiB9KTsKKyAgICBtYXAuc2V0KFN0cmluZyB7ICJr
MiIgfSwgU3RyaW5nIHsgInYyIiB9KTsKKyAgICBtYXAuc2V0KFN0cmluZyB7ICJrMyIgfSwgU3Ry
aW5nIHsgInYzIiB9KTsKKworICAgIGF1dG8gbWFwcGVkID0gV1RGOjptYXAobWFwLCBbJl0gKEtl
eVZhbHVlUGFpcjxTdHJpbmcsIFN0cmluZz4mIHBhaXIpIC0+IFN0cmluZyB7CisgICAgICAgIHJl
dHVybiBwYWlyLnZhbHVlOworICAgIH0pOworICAgIHN0ZDo6c29ydChtYXBwZWQuYmVnaW4oKSwg
bWFwcGVkLmVuZCgpLCBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbik7CisKKyAgICBFWFBF
Q1RfRVEoM1UsIG1hcHBlZC5zaXplKCkpOworICAgIEVYUEVDVF9UUlVFKG1hcHBlZFswXSA9PSAi
djEiKTsKKyAgICBFWFBFQ1RfVFJVRShtYXBwZWRbMV0gPT0gInYyIik7CisgICAgRVhQRUNUX1RS
VUUobWFwcGVkWzJdID09ICJ2MyIpOworCisgICAgbWFwcGVkID0gV1RGOjptYXAobWFwLCBbJl0g
KGNvbnN0IGF1dG8mIHBhaXIpIC0+IFN0cmluZyB7CisgICAgICAgIHJldHVybiBwYWlyLmtleTsK
KyAgICB9KTsKKyAgICBzdGQ6OnNvcnQobWFwcGVkLmJlZ2luKCksIG1hcHBlZC5lbmQoKSwgV1RG
Ojpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOworCisgICAgRVhQRUNUX0VRKDNVLCBtYXBwZWQu
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfVFJVRShtYXBwZWRbMF0gPT0gImsxIik7CisgICAgRVhQRUNU
X1RSVUUobWFwcGVkWzFdID09ICJrMiIpOworICAgIEVYUEVDVF9UUlVFKG1hcHBlZFsyXSA9PSAi
azMiKTsKKworICAgIG1hcHBlZCA9IFdURjo6bWFwKFdURk1vdmUobWFwKSwgWyZdIChLZXlWYWx1
ZVBhaXI8U3RyaW5nLCBTdHJpbmc+JiYgcGFpcikgLT4gU3RyaW5nIHsKKyAgICAgICAgcmV0dXJu
IFdURk1vdmUocGFpci52YWx1ZSk7CisgICAgfSk7CisgICAgc3RkOjpzb3J0KG1hcHBlZC5iZWdp
bigpLCBtYXBwZWQuZW5kKCksIFdURjo6Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKTsKKworICAg
IEVYUEVDVF9FUSgzVSwgbWFwcGVkLnNpemUoKSk7CisgICAgRVhQRUNUX1RSVUUobWFwcGVkWzBd
ID09ICJ2MSIpOworICAgIEVYUEVDVF9UUlVFKG1hcHBlZFsxXSA9PSAidjIiKTsKKyAgICBFWFBF
Q1RfVFJVRShtYXBwZWRbMl0gPT0gInYzIik7CisKKyAgICBFWFBFQ1RfVFJVRShtYXAuY29udGFp
bnMoImsxIikpOworICAgIEVYUEVDVF9UUlVFKG1hcC5jb250YWlucygiazIiKSk7CisgICAgRVhQ
RUNUX1RSVUUobWFwLmNvbnRhaW5zKCJrMyIpKTsKKworICAgIEVYUEVDVF9UUlVFKG1hcC5nZXQo
ImsxIikuaXNOdWxsKCkpOworICAgIEVYUEVDVF9UUlVFKG1hcC5nZXQoImsyIikuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9UUlVFKG1hcC5nZXQoImszIikuaXNOdWxsKCkpOworCit9CisKIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>